<?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>47016</bug_id>
          
          <creation_ts>2010-10-01 13:59:05 -0700</creation_ts>
          <short_desc>[chromium] GPU compositor cannot handle large layers</short_desc>
          <delta_ts>2010-10-14 00:18:53 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288459</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-01 13:59:05 -0700</bug_when>
    <thetext>This corresponds to http://code.google.com/p/chromium/issues/detail?id=48019.

From the original bug: &quot;There&apos;s a limit to the maxium texture size that GPUs can handle and therefore there&apos;s currently a hard limit to how large layers can be (it&apos;s set to 4Kx4K).  A proper solution would be to implement tiled layers to be more friendly with vram usage.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288468</commentid>
    <comment_count>1</comment_count>
      <attachid>69516</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-01 14:07:16 -0700</bug_when>
    <thetext>Created attachment 69516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288531</commentid>
    <comment_count>2</comment_count>
      <attachid>69516</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-01 15:46:50 -0700</bug_when>
    <thetext>Comment on attachment 69516
Patch

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

Looks good, other than the couple of comments.

&gt; WebCore/ChangeLog:9
&gt; +        large are not drawn, as before.

nit but for clarity you might want to make the distinction between layers that are transformed in 3D and those that appear flat on the page (instead of 2D and 3D layers).

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:183
&gt; +          m_skipsDraw = true;

4 space indent

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:190
&gt; +        const IntSize layerPos(position().x() - m_bounds.width() / 2,

position() is not necessarily the center point of the layer as other matrices get layered on on it.  The center of the layer is always the translation component of the drawTransform()

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:200
&gt; +        m_largeLayerDrawRect = drawRect;

It took me a bit of time to decipher the transformation logic here. Adding some inline comments describing what each rect and pos really is and in which space, would really help a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288559</commentid>
    <comment_count>3</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-01 16:19:13 -0700</bug_when>
    <thetext>I also wonder whether we can split some of this code into its own function so that we can use it for large images which end up in an ImageLayerChromium (a derived class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288573</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-01 16:32:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I also wonder whether we can split some of this code into its own function so that we can use it for large images which end up in an ImageLayerChromium (a derived class).

That&apos;s reasonable.  I will just go ahead and update ImageLayerChromium with this same change while I&apos;m at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289968</commentid>
    <comment_count>5</comment_count>
      <attachid>69865</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-05 16:42:48 -0700</bug_when>
    <thetext>Created attachment 69865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289969</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-05 16:46:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=69865) [details]
&gt; Patch

Addressed the above feedback.  Abstracted the transform logic into its own function.  Updated ImageLayerChromium to just use the ContentLayerChromium logic for creating partial textures. Added a test with a large (500x20000) image to test this.

Additionally, after some thought, given that large layers will need to reallocate pixels every time the content rect changes during scrolling, the canvas and pixel data is cached and reused if it is the same size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289970</commentid>
    <comment_count>7</comment_count>
      <attachid>69865</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 16:47:16 -0700</bug_when>
    <thetext>Comment on attachment 69865
Patch

For a .dumpAsText() or .layerTreeAsText() test there should be no expected .png, just the layer output (as a .txt).  Do you need to specify both .dumpAsText() and .layerTreeAsText()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289972</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 16:48:22 -0700</bug_when>
    <thetext>Whoops, I totally misinterpreted the purpose of the image. My bad!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289974</commentid>
    <comment_count>9</comment_count>
      <attachid>69865</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 16:48:39 -0700</bug_when>
    <thetext>Comment on attachment 69865
Patch

Resetting enne&apos;s flags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289977</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-05 16:54:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 69865 [details])
&gt; Resetting enne&apos;s flags

Per an in-person conversation with jamesr, I am going to look into seeing if there&apos;s some way to create an image layer without checking in a PNG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290434</commentid>
    <comment_count>11</comment_count>
      <attachid>69957</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-06 10:48:36 -0700</bug_when>
    <thetext>Created attachment 69957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290439</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-06 10:52:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=69957) [details]
&gt; Patch

Image file removed.  The image src is now programmatically generated from a canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291055</commentid>
    <comment_count>13</comment_count>
      <attachid>70097</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 09:33:06 -0700</bug_when>
    <thetext>Created attachment 70097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291058</commentid>
    <comment_count>14</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 09:37:17 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=70097) [details]
&gt; Patch

This last patch is just a tiny addition of a sanity check for the case where clipping against the content rect still yields a texture that is too large.

I&apos;d like to land this patch today if possible, given that I&apos;m out on vacation Friday through Monday.  If it&apos;s at all possible, could I get a review today?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291205</commentid>
    <comment_count>15</comment_count>
      <attachid>70097</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-07 12:57:03 -0700</bug_when>
    <thetext>Comment on attachment 70097
Patch

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

Looks good overall.  Some comments are inline. Also, while I like the improvement done with caching the update bitmaps so that they can be reused I feel that that change should go on a separate CL as it&apos;s orthogonal to the large layer stuff.

&gt; LayoutTests/compositing/tiling/huge-layer-img.html:22
&gt; +            var context = canvas.getContext(&apos;2d&apos;);

Might be better to try to achieve the same effect with absolutely positioned &lt;div&gt; elements with a background color style property. I&apos;m worried that &lt;canvas&gt; adds an unnecessary unknown to the test.

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:204
&gt;      IntRect dirtyRect(m_dirtyRect);

Since m_dirtyRect isn&apos;t used by the large layers, setting the dirtyRect to m_dirtyRect should be done for small layers only for clarity.

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:353
&gt; +                         m_largeLayerDrawRect.width() / 2);

Since largeLayers only kick in if their draw transform is identity or translation, we can completely throw out the drawTransform and do:
TransformationMatrix transform;
transform.translate3d(m_largeLayerDrawRect.center().x(), m_largeLayerDrawRect.center().y())

&gt; WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:81
&gt; +        // image to a canvas, as the pixel contents can&apos;t be uploaded directly.

canvas -&gt; bitmap  (it&apos;s only a &quot;canvas&quot; in the skia case)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291218</commentid>
    <comment_count>16</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 13:15:20 -0700</bug_when>
    <thetext>Thanks for the quick review.

(In reply to comment #15)
&gt; (From update of attachment 70097 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70097&amp;action=review
&gt; 
&gt; Looks good overall.  Some comments are inline. Also, while I like the improvement done with caching the update bitmaps so that they can be reused I feel that that change should go on a separate CL as it&apos;s orthogonal to the large layer stuff.

That&apos;s reasonable.  No need for this patch to be overly complex.  I&apos;ll cherry-pick that change out into another patch and file a bug once this has landed.
 
&gt; &gt; LayoutTests/compositing/tiling/huge-layer-img.html:22
&gt; &gt; +            var context = canvas.getContext(&apos;2d&apos;);
&gt; 
&gt; Might be better to try to achieve the same effect with absolutely positioned &lt;div&gt; elements with a background color style property. I&apos;m worried that &lt;canvas&gt; adds an unnecessary unknown to the test.

This is a test for ImageLayerChromium.  The huge-layer.html page already does exactly what you specify.

I changed this test to use canvas to satisfy jamesr&apos;s request above that I not commit a large binary image.  I could use a data URL, but that seemed less flexible for somebody else modifying the test in the future.  Is that preferable to canvas?

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:204
&gt; &gt;      IntRect dirtyRect(m_dirtyRect);
&gt; 
&gt; Since m_dirtyRect isn&apos;t used by the large layers, setting the dirtyRect to m_dirtyRect should be done for small layers only for clarity.

I&apos;ll clean this up.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:353
&gt; &gt; +                         m_largeLayerDrawRect.width() / 2);
&gt; 
&gt; Since largeLayers only kick in if their draw transform is identity or translation, we can completely throw out the drawTransform and do:
&gt; TransformationMatrix transform;
&gt; transform.translate3d(m_largeLayerDrawRect.center().x(), m_largeLayerDrawRect.center().y())

Ah, that&apos;s a much more elegant way to express that.

&gt; &gt; WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:81
&gt; &gt; +        // image to a canvas, as the pixel contents can&apos;t be uploaded directly.
&gt; 
&gt; canvas -&gt; bitmap  (it&apos;s only a &quot;canvas&quot; in the skia case)

Quite right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291232</commentid>
    <comment_count>17</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 13:51:25 -0700</bug_when>
    <thetext>(In reply to comment #16)

&gt; &gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:353
&gt; &gt; &gt; +                         m_largeLayerDrawRect.width() / 2);
&gt; &gt; 
&gt; &gt; Since largeLayers only kick in if their draw transform is identity or translation, we can completely throw out the drawTransform and do:
&gt; &gt; TransformationMatrix transform;
&gt; &gt; transform.translate3d(m_largeLayerDrawRect.center().x(), m_largeLayerDrawRect.center().y())
&gt; 
&gt; Ah, that&apos;s a much more elegant way to express that.

Actually, what about the original z-component? Are we not still using depth buffers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291328</commentid>
    <comment_count>18</comment_count>
      <attachid>70173</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 16:54:20 -0700</bug_when>
    <thetext>Created attachment 70173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291330</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 16:56:02 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=70173) [details]
&gt; Patch

Removed the caching of update bitmaps.

After an in-person discussion with Vangelis, I left the re-use of the drawTransform (as the z-component of the translation may not be non-zero) and the use of canvas (as using a data URL would likely be larger on disk than using a PNG in the first place).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291442</commentid>
    <comment_count>20</comment_count>
      <attachid>70201</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 21:57:22 -0700</bug_when>
    <thetext>Created attachment 70201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291443</commentid>
    <comment_count>21</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-07 21:57:45 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=70201) [details]
&gt; Patch

Rebaseling against ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291956</commentid>
    <comment_count>22</comment_count>
      <attachid>70201</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-08 16:44:16 -0700</bug_when>
    <thetext>Comment on attachment 70201
Patch

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

Needs a touch more cleanup.

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:130
&gt; +    , m_allocatedTextureSize(0, 0)
&gt; +    , m_skipsDraw(false)
&gt; +    , m_largeLayerDrawRect(0, 0, 0, 0)
&gt; +    , m_largeLayerDirtyRect(0, 0, 0, 0)

The default constructor should do the right thing for all of these except for m_skipsDraw.  No need to list them out.

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:149
&gt; +bool ContentLayerChromium::largeLayer() const

This function name isn&apos;t very clear - it actually looks more like a getter for some large layer member variable.  Maybe something like requiresClippedUpdateRect() or something?

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:155
&gt; +void ContentLayerChromium::calculateLargeLayerViewRect(IntRect* dirtyRect,
&gt; +                                                       IntRect* drawRect) const

nit: don&apos;t line wrap this

WebKit typically uses reference parameters for out params

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:164
&gt; +    // 1) The minimal texture space rectangle to be uploaded, returned in
&gt; +    // dirtyRect.
&gt; +    // 2) The content rect-relative rectangle to draw this texture in, returned
&gt; +    // in drawRect.

nit: this is over-wrapped. There&apos;s not a firm column limit in WebKit but this would be more readable if (1) and (2) were each only on one line.

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:175
&gt; +    const IntSize layerPos(transform.m41() - m_bounds.width() / 2,
&gt; +                           transform.m42() - m_bounds.height() / 2);
&gt; +    // Transform the contentRect into the space of the layer.
&gt; +    IntRect contentRectInLayerSpace(IntPoint(0, 0) - layerPos,
&gt; +                                    contentRect.size());

I don&apos;t fully grok the math here, but it seems like the negation in contentRectInLayerSpace&apos;s initialization could be done in the layerPos calculation and that layerPos is really an IntPoint and not an IntSize.  Or in other words something like:

const IntPoint layerPos(m_bounds.width() - transform.m41() / 2, m_bounds.height() - transform.m42() / 2);
IntRect contentRectInLayerSpace(layerPos, contentRect.size());

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:375
&gt; +        transform.setM41(m_largeLayerDrawRect.center().x());
&gt; +        transform.setM42(m_largeLayerDrawRect.center().y());

is this just doing a translate?  If so please use the appropriate translate() function on TransformationMatrix to be clearer

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.h:95
&gt; +    bool largeLayer() const;
&gt; +    void calculateLargeLayerViewRect(IntRect* dirtyRect,
&gt; +                                     IntRect* drawRect) const;
&gt;  
&gt;      unsigned m_contentsTexture;
&gt;      IntSize m_allocatedTextureSize;
&gt;      bool m_skipsDraw;
&gt; -
&gt; +    IntRect m_largeLayerDrawRect;
&gt; +    IntRect m_largeLayerDirtyRect;

It looks like the newly added functions/members should all be private: except for largeLayer()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292314</commentid>
    <comment_count>23</comment_count>
      <attachid>70407</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-10 09:56:44 -0700</bug_when>
    <thetext>Created attachment 70407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292316</commentid>
    <comment_count>24</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-10 10:03:03 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 70201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70201&amp;action=review
&gt; 
&gt; Needs a touch more cleanup.

Thanks for the review.  I appreciate all the nits, as I&apos;m still learning WebKit style.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:130
&gt; &gt; +    , m_allocatedTextureSize(0, 0)
&gt; &gt; +    , m_skipsDraw(false)
&gt; &gt; +    , m_largeLayerDrawRect(0, 0, 0, 0)
&gt; &gt; +    , m_largeLayerDirtyRect(0, 0, 0, 0)
&gt; 
&gt; The default constructor should do the right thing for all of these except for m_skipsDraw.  No need to list them out.

The default constructor is &quot;IntRect() {}&quot; so far as I can tell, so I&apos;ve left these initializations.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:149
&gt; &gt; +bool ContentLayerChromium::largeLayer() const
&gt; 
&gt; This function name isn&apos;t very clear - it actually looks more like a getter for some large layer member variable.  Maybe something like requiresClippedUpdateRect() or something?

Good suggestion.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:155
&gt; &gt; +void ContentLayerChromium::calculateLargeLayerViewRect(IntRect* dirtyRect,
&gt; &gt; +                                                       IntRect* drawRect) const
&gt; 
&gt; nit: don&apos;t line wrap this
&gt; 
&gt; WebKit typically uses reference parameters for out params

Done.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:164
&gt; &gt; +    // 1) The minimal texture space rectangle to be uploaded, returned in
&gt; &gt; +    // dirtyRect.
&gt; &gt; +    // 2) The content rect-relative rectangle to draw this texture in, returned
&gt; &gt; +    // in drawRect.
&gt; 
&gt; nit: this is over-wrapped. There&apos;s not a firm column limit in WebKit but this would be more readable if (1) and (2) were each only on one line.

Done.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:175
&gt; &gt; +    const IntSize layerPos(transform.m41() - m_bounds.width() / 2,
&gt; &gt; +                           transform.m42() - m_bounds.height() / 2);
&gt; &gt; +    // Transform the contentRect into the space of the layer.
&gt; &gt; +    IntRect contentRectInLayerSpace(IntPoint(0, 0) - layerPos,
&gt; &gt; +                                    contentRect.size());
&gt; 
&gt; I don&apos;t fully grok the math here, but it seems like the negation in contentRectInLayerSpace&apos;s initialization could be done in the layerPos calculation and that layerPos is really an IntPoint and not an IntSize.

It&apos;s really more of a relative position than an absolute one, which is why I used IntSize originally.  I&apos;ve changed it as you suggested.

&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:375
&gt; &gt; +        transform.setM41(m_largeLayerDrawRect.center().x());
&gt; &gt; +        transform.setM42(m_largeLayerDrawRect.center().y());
&gt; 
&gt; is this just doing a translate?  If so please use the appropriate translate() function on TransformationMatrix to be clearer

It&apos;s a translate, but preserving the z-coordinate.  I&apos;ve modified this to call translate3d now.
 
&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.h:95
&gt; &gt; +    bool largeLayer() const;
&gt; &gt; +    void calculateLargeLayerViewRect(IntRect* dirtyRect,
&gt; &gt; +                                     IntRect* drawRect) const;
&gt; &gt;  
&gt; &gt;      unsigned m_contentsTexture;
&gt; &gt;      IntSize m_allocatedTextureSize;
&gt; &gt;      bool m_skipsDraw;
&gt; &gt; -
&gt; &gt; +    IntRect m_largeLayerDrawRect;
&gt; &gt; +    IntRect m_largeLayerDirtyRect;
&gt; 
&gt; It looks like the newly added functions/members should all be private: except for largeLayer()

Good catch.  I had originally intended to use them in ImageLayerChromium, but I found a simpler solution that didn&apos;t require that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292620</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-11 13:02:02 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:130
&gt; &gt; &gt; +    , m_allocatedTextureSize(0, 0)
&gt; &gt; &gt; +    , m_skipsDraw(false)
&gt; &gt; &gt; +    , m_largeLayerDrawRect(0, 0, 0, 0)
&gt; &gt; &gt; +    , m_largeLayerDirtyRect(0, 0, 0, 0)
&gt; &gt; 
&gt; &gt; The default constructor should do the right thing for all of these except for m_skipsDraw.  No need to list them out.
&gt; 
&gt; The default constructor is &quot;IntRect() {}&quot; so far as I can tell, so I&apos;ve left these initializations.

True, but IntRect has two members of type IntPoint and IntSize, both of which have default constructors that zero-initialize.  It&apos;s one of the nice properties of the WebCore geometric primitives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292622</commentid>
    <comment_count>26</comment_count>
      <attachid>70407</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-11 13:08:20 -0700</bug_when>
    <thetext>Comment on attachment 70407
Patch

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

R=me

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:130
&gt; +    , m_allocatedTextureSize(0, 0)
&gt; +    , m_skipsDraw(false)
&gt; +    , m_largeLayerDrawRect(0, 0, 0, 0)
&gt; +    , m_largeLayerDirtyRect(0, 0, 0, 0)

nit: IntSize and IntRect zero-initialize by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292962</commentid>
    <comment_count>27</comment_count>
      <attachid>70535</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-12 09:19:56 -0700</bug_when>
    <thetext>Created attachment 70535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292963</commentid>
    <comment_count>28</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-12 09:26:21 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 70407 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70407&amp;action=review
&gt; 
&gt; R=me
&gt; 
&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:130
&gt; &gt; +    , m_allocatedTextureSize(0, 0)
&gt; &gt; +    , m_skipsDraw(false)
&gt; &gt; +    , m_largeLayerDrawRect(0, 0, 0, 0)
&gt; &gt; +    , m_largeLayerDirtyRect(0, 0, 0, 0)
&gt; 
&gt; nit: IntSize and IntRect zero-initialize by default.

Oh, you&apos;re quite right.

Since I&apos;m not a committer yet, I uploaded another patch with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292972</commentid>
    <comment_count>29</comment_count>
      <attachid>70535</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-12 09:45:04 -0700</bug_when>
    <thetext>Comment on attachment 70535
Patch

Rejecting patch 70535 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--quiet&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
k
All tests successful.
Files=14, Tests=304,  1 wallclock secs ( 0.72 cusr +  0.17 csys =  0.89 CPU)
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Projects/CommitQueue/LayoutTests
Testing 21536 test cases.
compositing/tiling/huge-layer-img.html -&gt; failed

Exiting early after 1 failures. 984 tests run.
38.60s total testing time

983 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/4370024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293736</commentid>
    <comment_count>30</comment_count>
      <attachid>70669</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-13 15:04:30 -0700</bug_when>
    <thetext>Created attachment 70669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293737</commentid>
    <comment_count>31</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-13 15:08:31 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=70669) [details]
&gt; Patch

As it turns out, the compositing directory isn&apos;t run at all on chromium and I missed that fact while grepping through test expectations.  So, no need for platform-specific expectations at this point.  The new -expected.txt file is from mac and it passes there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293775</commentid>
    <comment_count>32</comment_count>
      <attachid>70669</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-13 15:49:18 -0700</bug_when>
    <thetext>Comment on attachment 70669
Patch

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

Still looks good, just need some expectations tweaks.

&gt; LayoutTests/compositing/tiling/huge-layer-img-expected.txt:1
&gt; +The yellow box should be large enough to scroll off the bottom. There should be a red box on the first page and a blue box near the bottom of the yellow box. This tests that we can support very large composited image layers.

If this is a mac-specific expectation and other platforms produce a different result, then it really should go into platform/mac

If we have the chromium results why not check them in as well?  We&apos;re working on enabling those on the bots and will have to check in expectations at some point one way or the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293833</commentid>
    <comment_count>33</comment_count>
      <attachid>70688</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-13 17:16:37 -0700</bug_when>
    <thetext>Created attachment 70688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293838</commentid>
    <comment_count>34</comment_count>
      <attachid>70688</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-13 17:19:31 -0700</bug_when>
    <thetext>Comment on attachment 70688
Patch

Cool. Could you file a bug about the layer sizes/offsets being slightly different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293843</commentid>
    <comment_count>35</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-13 17:27:51 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 70688 [details])
&gt; Cool. Could you file a bug about the layer sizes/offsets being slightly different?

https://bugs.webkit.org/show_bug.cgi?id=47638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293995</commentid>
    <comment_count>36</comment_count>
      <attachid>70688</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-14 00:18:46 -0700</bug_when>
    <thetext>Comment on attachment 70688
Patch

Clearing flags on attachment: 70688

Committed r69747: &lt;http://trac.webkit.org/changeset/69747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293996</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-14 00:18:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69516</attachid>
            <date>2010-10-01 14:07:16 -0700</date>
            <delta_ts>2010-10-05 16:42:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101001140714.patch</filename>
            <type>text/plain</type>
            <size>10446</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGU0ZjY2YmFjZjA1MDc4NjNiYjY2MmVlOGQ5YTQyNjFiZTA5NzljYS4uMWM4MDhhYmE0OGQzM2Fl
ZjYzZWU1NDUxNWNjZmE0NGUxZDI1ZTFmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0xMC0wMSAgQWRy
aWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNob3J0LXRlcm0gc29sdXRpb24gZm9yIGxh
cmdlIGxheWVycy4gIDJEIGxheWVycyB0aGF0IGFyZSB0b28KKyAgICAgICAgbGFyZ2UgdG8gYmUg
Y29udGFpbmVkIGluIGEgc2luZ2xlIHRleHR1cmUganVzdCB1cGxvYWQgdGhlIHBvcnRpb24gb2YK
KyAgICAgICAgdGhlIGxheWVyIHRoYXQgaXMgd2l0aGluIHRoZSBjb250ZW50IHJlY3QuICBBIGxv
bmdlci10ZXJtIHNvbHV0aW9uCisgICAgICAgIGlzIHN0aWxsIHRpbGluZyB3aXRoIHByb3BlciBt
ZW1vcnkgbWFuYWdlbWVudC4gIDNEIGxheWVycyB0aGF0IGFyZSB0b28KKyAgICAgICAgbGFyZ2Ug
YXJlIG5vdCBkcmF3biwgYXMgYmVmb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcwMTYKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy90aWxp
bmcKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6bGFyZ2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06
OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyb290TGF5ZXJDb250ZW50UmVjdCk6CisKIDIwMTAtMDktMzAgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFt
ZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhkZGE0ZDZjNWVlZjg3MzJh
ZmQ3ZTdlNGUyMWI3MmI4MWQxOTZjMjQuLmM5ZWE5ZDdjZjczNjJhYjllMjgzZTA3ZjhmYWExMzI4
MWM0MGE0Y2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjEsNiArMTIxLDEwIEBAIFBh
c3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVh
dGUoR3JhcGhpY3NMYXllckNocm9tCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21p
dW0ob3duZXIpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZSgwKQorICAgICwgbV9hbGxvY2F0ZWRU
ZXh0dXJlU2l6ZSgwLCAwKQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCisgICAgLCBtX2xhcmdl
TGF5ZXJEcmF3UmVjdCgwLCAwLCAwLCAwKQorICAgICwgbV9sYXJnZUxheWVyRGlydHlSZWN0KDAs
IDAsIDAsIDApCiB7CiB9CiAKQEAgLTE0OSw2ICsxNTMsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgfQogfQogCitib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpsYXJnZUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWxheWVyUmVuZGVy
ZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcyk7Cit9CisKIHZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIHsKICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJh
Y2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGllbnQo
KSk7CkBAIC0xNTksMjkgKzE2OCw1NiBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRh
dGVDb250ZW50cygpCiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKIAotICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4K
LSAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlmICghbGF5ZXJSZW5kZXJlcigpLT5jaGVj
a1RleHR1cmVTaXplKG1fYm91bmRzKSkgewotICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2b2lkKiBwaXhlbHMgPSAwOwogICAgIEludFJl
Y3QgZGlydHlSZWN0KG1fZGlydHlSZWN0KTsKKyAgICBJbnRSZWN0IHVwZGF0ZVJlY3Q7CiAgICAg
SW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplOwogICAgIEludFNpemUgYml0bWFwU2l6ZTsKIAot
ICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBtX2JvdW5kczsKLSAgICBJbnRSZWN0IGJvdW5kc1Jl
Y3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsKLQotICAgIC8vIElmIHRoZSB0ZXh0dXJlIG5l
ZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2UgbXVzdCByZWRyYXcgdGhlIGVudGlyZQotICAg
IC8vIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KLSAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZSAh
PSBtX2FsbG9jYXRlZFRleHR1cmVTaXplKQotICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNSZWN0
OwotICAgIGVsc2UgewotICAgICAgICAvLyBDbGlwIHRoZSBkaXJ0eVJlY3QgdG8gdGhlIHNpemUg
b2YgdGhlIGxheWVyIHRvIGF2b2lkIGRyYXdpbmcgb3V0c2lkZQotICAgICAgICAvLyB0aGUgYm91
bmRzIG9mIHRoZSBiYWNraW5nIHRleHR1cmUuCi0gICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3Qo
Ym91bmRzUmVjdCk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBs
YXllcnMgYXJlIGltcGxlbWVudGVkLgorICAgIGlmIChsYXJnZUxheWVyKCkpIHsKKyAgICAgICAg
Ly8gQSBsYXllciB3aXRoIDNEIHRyYW5zZm9ybXMgY291bGQgcmVxdWlyZSBhbiBhcmJpdHJhcmls
eSBsYXJnZSBudW1iZXIKKyAgICAgICAgLy8gb2YgdGV4ZWxzIHRvIGJlIHJlcGFpbnRlZCwgc28g
aWdub3JlIHRoZXNlIGxheWVycyB1bnRpbCB0aWxpbmcgaXMKKyAgICAgICAgLy8gaW1wbGVtZW50
ZWQuCisgICAgICAgIGlmICghZHJhd1RyYW5zZm9ybSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9u
KCkpIHsKKyAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CisgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgZW50aXJlIGxheWVyIGFnYWluc3QgdGhl
IHZpc2libGUgcmVnaW9uIGluIHRoZSBjb250ZW50IHJlY3QKKyAgICAgICAgLy8gYW5kIHVzZSB0
aGF0IGFzIHRoZSBkcmF3YWJsZSB0ZXh0dXJlLCBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgbGF5ZXIu
CisgICAgICAgIGNvbnN0IEludFJlY3QgY29udGVudFJlY3QgPSBsYXllclJlbmRlcmVyKCktPnJv
b3RMYXllckNvbnRlbnRSZWN0KCk7CisgICAgICAgIGNvbnN0IEludFNpemUgbGF5ZXJQb3MocG9z
aXRpb24oKS54KCkgLSBtX2JvdW5kcy53aWR0aCgpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3NpdGlvbigpLnkoKSAtIG1fYm91bmRzLmhlaWdodCgpIC8gMik7CisgICAg
ICAgIGRpcnR5UmVjdCA9IEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsKKyAgICAg
ICAgSW50UmVjdCBjb250ZW50UmVjdEluTGF5ZXJTcGFjZShjb250ZW50UmVjdC5sb2NhdGlvbigp
IC0gbGF5ZXJQb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGVudFJlY3Quc2l6ZSgpKTsKKyAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChjb250ZW50UmVj
dEluTGF5ZXJTcGFjZSk7CisKKyAgICAgICAgY29uc3QgSW50UG9pbnQgZHJhd1BvcyhkaXJ0eVJl
Y3QubG9jYXRpb24oKSArIGxheWVyUG9zIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgSW50UmVjdCBkcmF3UmVjdChkcmF3
UG9zLCBkaXJ0eVJlY3Quc2l6ZSgpKTsKKyAgICAgICAgbV9sYXJnZUxheWVyRHJhd1JlY3QgPSBk
cmF3UmVjdDsKKworICAgICAgICBpZiAobV9sYXJnZUxheWVyRGlydHlSZWN0ID09IGRpcnR5UmVj
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2xhcmdlTGF5ZXJEaXJ0eVJlY3Qg
PSBkaXJ0eVJlY3Q7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBkaXJ0eVJlY3Quc2l6
ZSgpOworICAgICAgICB1cGRhdGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgZGlydHlS
ZWN0LnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSW50UmVjdCBib3VuZHNSZWN0KElu
dFBvaW50KDAsIDApLCBtX2JvdW5kcyk7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBt
X2JvdW5kczsKKyAgICAgICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUgcmVhbGxvY2F0
ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCisgICAgICAgIC8vIGNvbnRlbnRzIG9m
IHRoZSBsYXllci4KKyAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUgIT0gbV9hbGxvY2F0
ZWRUZXh0dXJlU2l6ZSkKKyAgICAgICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1JlY3Q7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xpcCB0aGUgZGlydHlSZWN0IHRvIHRoZSBzaXpl
IG9mIHRoZSBsYXllciB0byBhdm9pZCBkcmF3aW5nCisgICAgICAgICAgICAvLyBvdXRzaWRlIHRo
ZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZS4KKyAgICAgICAgICAgIGRpcnR5UmVjdC5p
bnRlcnNlY3QoYm91bmRzUmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlUmVjdCA9IGRp
cnR5UmVjdDsKICAgICB9CiAKICNpZiBQTEFURk9STShTS0lBKQpAQCAtMjQ2LDcgKzI4Miw3IEBA
IHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAgICAgICAgdGV4
dHVyZUlkID0gbGF5ZXJSZW5kZXJlcigpLT5jcmVhdGVMYXllclRleHR1cmUoKTsKIAogICAgIGlm
IChwaXhlbHMpCi0gICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0KHBpeGVscywgYml0bWFwU2l6ZSwg
cmVxdWlyZWRUZXh0dXJlU2l6ZSwgIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyAgICAgICAgdXBk
YXRlVGV4dHVyZVJlY3QocGl4ZWxzLCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCB1
cGRhdGVSZWN0LCB0ZXh0dXJlSWQpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVUZXh0dXJlUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUs
IGNvbnN0IEludFNpemUmIHJlcXVpcmVkVGV4dHVyZVNpemUsIGNvbnN0IEludFJlY3QmIHVwZGF0
ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCkKQEAgLTI3Miw3ICszMDgsOSBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IElu
dFNpemUmIGJpdG1hcAogICAgIH0KIAogICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXpl
KCkpOwotICAgIG1fY29udGVudHNEaXJ0eSA9IGZhbHNlOworICAgIC8vIExhcmdlIGxheWVycyBh
bHdheXMgc3RheSBkaXJ0eSwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gdXBkYXRlIHdoZW4gdGhlCisg
ICAgLy8gY29udGVudCByZWN0IGNoYW5nZXMuCisgICAgbV9jb250ZW50c0RpcnR5ID0gbGFyZ2VM
YXllcigpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KCkKQEAgLTI4OCw5
ICszMjYsMjUgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBtX2NvbnRlbnRzVGV4dHVyZSkpOwogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2
LT5jb250ZW50U2hhZGVyUHJvZ3JhbSgpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTFpKHN2LT5zaGFkZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGRyYXdUZXh0dXJl
ZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdU
cmFuc2Zvcm0oKSwKLSAgICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5k
cygpLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAgICAgICAgICAgICAgICAgc3YtPnNo
YWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworCisgICAg
aWYgKGxhcmdlTGF5ZXIoKSkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm0gPSBkcmF3VHJhbnNmb3JtKCk7CisgICAgICAgIEFTU0VSVCh0cmFuc2Zvcm0uaXNJZGVudGl0
eU9yVHJhbnNsYXRpb24oKSk7CisgICAgICAgIHRyYW5zZm9ybS5zZXRNNDEobV9sYXJnZUxheWVy
RHJhd1JlY3QueCgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3
UmVjdC53aWR0aCgpIC8gMik7CisgICAgICAgIHRyYW5zZm9ybS5zZXRNNDIobV9sYXJnZUxheWVy
RHJhd1JlY3QueSgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3
UmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwg
bGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNmb3JtLCBtX2xhcmdlTGF5ZXJEcmF3UmVjdC53aWR0aCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbGFyZ2VMYXllckRyYXdSZWN0LmhlaWdodCgpLCBkcmF3T3BhY2l0
eSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigp
LCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkcmF3
VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0oKSwgbV9ib3VuZHMud2lk
dGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd09w
YWNpdHkoKSwgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgfQogfQogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKaW5kZXggNDEyYmEwNmM2NGJmNThlMjRhNjRhMDQyMjAyYTVlZDM0ZWQ5NDJmNi4u
NzAzOTAwZjc1MzUzMjFjMWFiMGRlZjQ3MGMzYjZiMDFjOGE5NzM0MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaApAQCAtODEsMTEgKzgxLDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCk7CiAK
ICAgICB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKKyAgICBib29sIGxhcmdlTGF5ZXIoKSBjb25z
dDsKIAogICAgIHVuc2lnbmVkIG1fY29udGVudHNUZXh0dXJlOwogICAgIEludFNpemUgbV9hbGxv
Y2F0ZWRUZXh0dXJlU2l6ZTsKICAgICBib29sIG1fc2tpcHNEcmF3OwotCisgICAgSW50UmVjdCBt
X2xhcmdlTGF5ZXJEcmF3UmVjdDsKKyAgICBJbnRSZWN0IG1fbGFyZ2VMYXllckRpcnR5UmVjdDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBjNDAzMWU1NWI0M2JmNjU3NmU0
YWMwN2M5YzBmZmY1NjE5ZjZlN2JkLi44YmY2NjFhZDIwNDcyOTExYjQ5N2FmZjJmMTQ3Mzc1OWI4
Yjc1MTMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zMDIsOCArMzAyLDkgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QsIGNvbnN0IEludFJlY3QKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJs
ZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6
T05FX01JTlVTX1NSQ19BTFBIQSkpOwogCi0gICAgLy8gU2V0IHRoZSByb290VmlzaWJsZVJlY3Qg
LS0tIHVzZWQgYnkgc3Vic2VxdWVudCBkcmF3TGF5ZXJzIGNhbGxzCisgICAgLy8gU2V0IHRoZSBy
b290IHZpc2libGUvY29udGVudCByZWN0cyAtLS0gdXNlZCBieSBzdWJzZXF1ZW50IGRyYXdMYXll
cnMgY2FsbHMuCiAgICAgbV9yb290VmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKKyAgICBtX3Jv
b3RDb250ZW50UmVjdCA9IGNvbnRlbnRSZWN0OwogCiAgICAgLy8gVHJhdmVyc2UgdGhlIGxheWVy
IHRyZWUgYW5kIHVwZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3Jtcy4KICAgICBmbG9hdCBvcGFjaXR5
ID0gMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGI3MTQ1ODRmNWU1NzE5YWM0ZTg5Njg5NjU1
MmQ0MjA4NDc3NDQ1NmUuLjk1MzM4ZGVkY2U3MGNiMGE4NjY3OTc5ODMwMDc5YWUzMjNhMjY3N2Mg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2l6ZU9uc2NyZWVuQ29udGVudChjb25zdCBJbnRTaXplJik7CiAKICAgICBJbnRTaXpl
IHJvb3RMYXllclRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3Jvb3RMYXll
clRleHR1cmVXaWR0aCwgbV9yb290TGF5ZXJUZXh0dXJlSGVpZ2h0KTsgfQorICAgIEludFJlY3Qg
cm9vdExheWVyQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDb250ZW50UmVjdDsg
fQogICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRS
ZWN0JiByZWN0KTsKIAogcHJpdmF0ZToKQEAgLTE2MCw2ICsxNjEsNyBAQCBwcml2YXRlOgogICAg
IEludFNpemUgbV9yb290TGF5ZXJDYW52YXNTaXplOwogCiAgICAgSW50UmVjdCBtX3Jvb3RWaXNp
YmxlUmVjdDsKKyAgICBJbnRSZWN0IG1fcm9vdENvbnRlbnRSZWN0OwogCiAgICAgaW50IG1fbWF4
VGV4dHVyZVNpemU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69865</attachid>
            <date>2010-10-05 16:42:48 -0700</date>
            <delta_ts>2010-10-06 10:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101005164247.patch</filename>
            <type>text/plain</type>
            <size>23583</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMWJhZjRmNjIwZTM3ODAzNmYwMzcxMTUyN2JhYzg1Y2M1NmVlNjljLi45NzY1YjA4
ZTQzOGZlOWI3MjZmZDI3NjE5NTdmMzM3YjVhYjhjZWRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvYmlnaW1hZ2UucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3Np
dGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA1ICBUb255IENoYW5nICA8
dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcgY2hyb21p
dW0gbGludXggYmFzZWxpbmVzIGFmdGVyIGxhbmRpbmcgcjY5MTI2CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvYmlnaW1hZ2UucG5nIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvdGlsaW5nL2JpZ2ltYWdlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTEzZWNjZjEyNThiOWE4
OWY1M2Y5YmE4MjgxNWViZmE4NWFiYmRjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NDUwMwp6
Y21lSFBVMSVMZTZyTUJAUDF9Uz5EcClsVFFxVHVjTD80dktob3EjbTVlLUBePldsYXkrTHpYdigp
Zl9sNypWYncKekQxdDlxd1RQZkxRbXI1alk5YW5UaD4oSlVwaFNAJUVmKHA2d0RkYEl2VX5UUV5V
ZEJuQ2ZVMXQ9ak1LZXZlVFd9CnpuY1pgfl5QVFVeWnRufkNqX3Y0TGY2YVBoT3hOaG5rekt+TFRg
Kj4+fEI3fD8lO0FUNjU3PE43X151dD4lPD1pXwp6ezxRei1kfilaKjxIbF8wVUhhUSpVTyNmUkc1
dXpBV08oPH16eD8mbm10Q2YoWFohSFRlSFJXTm9xMXF0cnYyOVkKenBQQnNiYCFsN0V4eU43Wkd+
ZWBAe2cpM2R3RG5CYldeIztBTDY8IWg0WEtRbHRFIUJ+aVJeX2k4WWVuPEByUXx2CnpYWkdFKEA5
dH1WZjJ3alRzcjRGa2NVLW8lT1Rla3Q8cDd3S0t3dWUwe19UfTVGQnU7YGlvNjsxcGpAX3NrMi1y
aQp6RmVDUiZecVNKM1M/ciNnWlNPeUNvNT9YZzF6cS0zR144P0d1QnRLYEMkYm05WHE8QDRSX3Nx
Qm14MWBka1NjdjEKekxZYGorJHA7cWxJajF4fVpDUUlOTCE/MFJZbG57eGZoakdJMHQ9SEBnJj4k
a21Rcj5WcnB6eWtFYmQrQkR8O3YkCnpUU1BjRVZIVmtjZG1FQng1O19yJFU+RWYmaS1KT1YpbXM4
aCZBd3I8NCl1ciZ8R3JkOGlzK3JQKWI8cVZvT0Ipbwp6NTBIUmNvbkEte0UhPDtKcmgmU31FXmlS
enIpanQ+dzskczQ/X2wkS2dHZ1UoNVJnflB1VlVpVGZ5cW1mWmEkRlcKend5c0puQW9IMDtXYyRR
JjlAcipgNjNFQHdlZT5Jfno3NigkdS1XK2MkKzM1UDR0fWB4KHl7cWQkSHFUOHc9aVJ5CnokdVQq
VjlIVVkzNU9vU2g8MyNoUGFKMEhBWVR7Xl4kWCpEZWFVJUM3YVV3MlRjSTVKbmVEaDtKK204bX5a
dm1EZAp6O0Y+VDxnTzkmYDZrJFFjKUNnazZoWSVjcSNCdj9scldnYEJ3e1hNem9eYFJ5amx+Y2lw
aDAleXZRZElnNVJlPXIKenlkVnxZUXZsXzxMMkIhelBPVExQJksyantycGQycyZBMFExcmhQI0hA
azBHNjg4Ykk3cF49d3NXSitDJCZWbXZoCnohTVIqO2RoLU9PdUVKfkdSMmFjbzdqWExQMn0pZ3NT
RXgxb2J8V3xvMEhAIWBsKTRKOUF7fUQrdWUjalNNWDQpMAp6aF59cUdaMjIoJnJMTiNyTnIkKjhU
YDMxTiRYIzV2dkg/Vj90TUlDJUwpMjdWd3BrRkR2QHwlc19QKnJ4bnViVkwKemEzenZPJlcwYmlF
WlApYVNMTG47enFvUjkofHJyenJMJlkpMHZZOXxCTmg1XzZHa2lSPTkkLTZ6JHhzNDFBPXN5Cnpn
I3o0VUtgMDR3U3Ile3RnJj8+ak5SKSZ+KnAkNXJ1ZFBnQkElZkV7VmttblJVWF5yK255U20/TGFH
VFY/cClpVAp6Kj5afnNOP25DbGtxKXQtUjkmdEU4c3NpNkUzWmY+YnBAfFZJPmIlc05+SkNyJTdG
NkpYcWJxRVReR1dwKUt6I2IKekRBQUVRZypoYFkwSHY8TkUxNlI7NkBIJGUpS3ojNS0oQWY+KmNz
bVBXKVdJTUdMYytuVVMkWTNzfE9pQ0VaVCY1CnpsP1owaDI4RVJpV2s3aXI9RkFXaSNUUldLSmFA
fUd7MSFtQFVQMzJAZmU7YXN4PUZiSTJKTk09Zk1XcXk9Mn5TNAp6bWxxb1pQWERyJHl8dVd8WiNV
UHU9eXgoXzxzMCgrMiVFQjNhLVJoJkIyYzxnNGo/IVMwSEBjOyNtaXApTDxiMzUKel9MYVRoTyEw
KzdDSCVGViVGaEtVPUAyek42aWhWJW4tTERDRGkpMF9oez4jT015QXdOclVWQk5vREIhM0tScj9F
CnozU047TntDM05iPW9rfXFpM3Yod2c7JiVFRWUqfkZ6MihoNzdlcTNWVDs2My1oSCVxX3pqfF48
PDN0KDI+MGclYgp6Q2x2RTQ1ekx9Wj99Umw3b2M/ODV2Pzt1YjIpNk89d185I3B2V0F2QFYmSlYh
JCtyTHJLX299fW42MyU0SlVJKEUKeiFFUzhZVENoZTN3NnNQSjt6eHhqZGxnO0BQVDNTdDBVVzR+
cVU9Pzg0Y31jXl42T2c1Nk9fRlF1T2J+TmQmQj9FCnpnSGwpVXMtIzJRbCY7aXsmMDM9e3d8cjgk
Q35CZkBSSmI9eE87R0E4cE0+d09SMEtoQSorJjZQc1lpPk9GdUt7Rgp6bVFxKUY1ZDJQKmZNZnZN
MVE4Ukl5Mj5YJk8zaERVJkcoaSEzdGJTJlladThWQ2JGUSFDTXQrPm1BSWxObENyWEIKeilXcCMr
UTVMI2ooSSUhdTJMJE9aKXsyIUUqRFRyO1VYZE0ka190K0tCeTFMSzNhPHF2eD5fO3V7REdrQDEk
XyVwCno+bFBBWUIqIT9lQmA/TFkwcW1xZ3pzaEt3RDdSJVBkekRZWmNiNyM0Kys7eTAzMzZHPVVW
JWFvVG9OUW9hJTBYNgp6UGZPWFdAWT4yMDc5dSRQWU1aaUc7WjtlOHNId1ZLY0NkaGwoSkJEcXJm
Xy02MG5MWSFBZkp7fVMwTkRLN05vbn0KejIqVGlNdChjKEg2fSp4OzwoK1cmRityKVRARVc0S1RJ
KCV1aE5NQ3kyYWFTRSplTWspODZANjlRKTAqITZCJHF2Cno8Z3pUPDYhVWBMZ0xEXz14Y1pNdWhv
PDlqTysxKCFWPWAqdHBlOU5MQnwjRTRpI0NaKUJee34rRjI9TipqWS0oQAp6PEJ3dnxKVmlgMU9X
aGteYH1ZeEpIalJ2cTREVXtHbF5tLTtrMVFIRWkpTFUwJTNjTTB2U2BzUG54KGVqeTkkTloKelZ2
PTRLY2lBfERuXmJXWkhCdFZrTX5qKmA4WVhKT15oRFYhOXo/JHJCfF5hJih0MigmKGFmP3A7Z0lB
UUJUdForCnpYU3FQO2xzOXNAZnp4a2ZOP2lyfndWaHU+V0tLVWd7Vl9xUXRNSGxeVmdJPGQ/fSN6
YTQpeSVlfElmK0VKcChWNwp6Wm84YFYpajxEd1F5TWdqLUJZdmVROFBLbHI9Wks4IXFJWTdtQy1u
bnk+UEw2dUsoPW02UiY+T2JeNm0yOWgwIWAKek5AcjQmPDFMajJSaE1ubl9XeykwVHZpLWRVbjk/
TCs7ZGFnK31SMnVHc0FBeFVpKjBOdmd6TFU/ITBTa15DIW1zCk84UW5mTWEodnNQKUJnZHJDbXxz
SwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGI3ZGU0MjY0YWFhYjU4MTViYTQzNGZiZWEzMzY0ZTIyOThmMTk2MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVu
b3VnaCB0byBzY3JvbGwgb2ZmIHRoZSBib3R0b20uIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3gg
b24gdGhlIGZpcnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5
ZWxsb3cgYm94LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQgdmVyeSBsYXJnZSBjb21w
b3NpdGVkIGltYWdlIGxheWVycy4KKworCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4w
MCAyMDExOS4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJv
dW5kcyA3ODUuMDAgMjAxMTkuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhp
Y3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDcyLjAwKQorICAgICAgICAgIChib3Vu
ZHMgNTAwLjAwIDIwMDAwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcu
aHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ5ZjhmNDE5ZGU1MzY2ZmY3NTQzYzk4ZDFkNTA4YWY1MTNkNGJmNTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXll
ci1pbWcuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8
aGVhZD4KKyAgICA8dGl0bGU+VGVzdCBvZiB2ZXJ5IGxhcmdlIGltYWdlIGxheWVyPC90aXRsZT4K
KworICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgI2NvbnRh
aW5lciB7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOworICAgIH0KKyAg
ICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RPbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICB3aW5kb3cuc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVB
c1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0ZXN0T25Mb2FkLCBm
YWxzZSk7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgICA8cD4KKyAg
ICAgICAgVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBzY3JvbGwgb2Zm
IHRoZSBib3R0b20uCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZp
cnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3gKKyAgICAgICAgbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5
ZWxsb3cgYm94LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQKKyAgICAgICAgdmVyeSBs
YXJnZSBjb21wb3NpdGVkIGltYWdlIGxheWVycy4KKyAgICAgIDwvcD4KKyAgICAgICAgPGltZyBp
ZD0iY29udGFpbmVyIiBzcmM9ImJpZ2ltYWdlLnBuZyI+CisgICAgICAgIDxwcmUgaWQ9ImxheWVy
cyI+TGF5ZXIgdHJlZSBhcHBlYXJzIGhlcmUgaW4gRFJULjwvcHJlPgorICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5kZXggOWJhZGExNWU3NjM2M2My
MzBlNWE3ZDRlMGMyNzdiZjdjZDg0NWNiNi4uYTY0ODRmYzAwYTg3ODAyZTE1YmVlYWYyOWQ3MGFi
YTdiODIwZWQ0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZApAQCAtNzgsNiAr
NzgsNyBAQCBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1yZXNpemUuaHRtbAogY29tcG9z
aXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0aC1sYXllci1jaGlsZHJlbi1yZXNpemUuaHRtbAog
Y29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0aC1sYXllci1jaGlsZHJlbi5odG1sCiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci5odG1sCitjb21wb3NpdGluZy90aWxpbmcvaHVn
ZS1sYXllci1pbWcuaHRtbAogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tcG9zdGVyLmh0bWwKIAog
IyBVbmNhdGVnb3JpemVkIGVkaXRpbmcgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMTliNDI0NmQ4NDZmYTg2OWY0OTcw
Y2JmMzEwMjAzYTdjNjg2Yi4uNmFhNzFmMTJhZGU2MDRkNDhmYzliNjlmZTQ0M2VmOTY3YzA2ODU4
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAxMC0xMC0wNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIHNob3J0LXRlcm0gc29sdXRpb24gZm9yIGxhcmdlIGxheWVycy4gIExheWVycyB0aGF0
IGFyZSB0b28KKyAgICAgICAgbGFyZ2UgdG8gYmUgY29udGFpbmVkIGluIGEgc2luZ2xlIHRleHR1
cmUganVzdCB1cGxvYWQgdGhlIHBvcnRpb24gb2YKKyAgICAgICAgdGhlIGxheWVyIHRoYXQgaXMg
d2l0aGluIHRoZSBjb250ZW50IHJlY3QuICBBIGxvbmdlci10ZXJtIHNvbHV0aW9uCisgICAgICAg
IGlzIHN0aWxsIHRpbGluZyB3aXRoIHByb3BlciBtZW1vcnkgbWFuYWdlbWVudC4gIExheWVycyB0
aGF0IGhhdmUgZnVsbAorICAgICAgICAzRCB0cmFuc2Zvcm1zIChtb3JlIHRoYW4ganVzdCB0cmFu
c2xhdGlvbnMpIGFyZSBzdGlsbCBub3QgZHJhd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzAxNgorCisgICAgICAgIFRlc3Q6IGNvbXBvc2l0aW5n
L3RpbGluZworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06
OkNvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNo
cm9taXVtOjpsYXJnZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtOjpjYWxjdWxhdGVMYXJnZUxheWVyVmlld1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJvb3RMYXllckNvbnRlbnRSZWN0
KToKKwogMjAxMC0xMC0wNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOGRkYTRkNmM1ZWVm
ODczMmFmZDdlN2U0ZTIxYjcyYjgxZDE5NmMyNC4uMjYyNDk0ZjVkOTQ2YzI0NmVkNWU0ZjRkOWUy
NjI2Mzg5ZTgwNmJlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEyMSw2ICsxMjEsMTAg
QEAgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb20KIENvbnRlbnRMYXllckNocm9taXVtOjpDb250ZW50
TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5ZXJD
aHJvbWl1bShvd25lcikKICAgICAsIG1fY29udGVudHNUZXh0dXJlKDApCisgICAgLCBtX2FsbG9j
YXRlZFRleHR1cmVTaXplKDAsIDApCisgICAgLCBtX3NraXBzRHJhdyhmYWxzZSkKKyAgICAsIG1f
bGFyZ2VMYXllckRyYXdSZWN0KDAsIDAsIDAsIDApCisgICAgLCBtX2xhcmdlTGF5ZXJEaXJ0eVJl
Y3QoMCwgMCwgMCwgMCkKIHsKIH0KIApAQCAtMTQ5LDYgKzE1Myw0MyBAQCB2b2lkIENvbnRlbnRM
YXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICB9CiB9CiAKK2Jvb2wgQ29udGVu
dExheWVyQ2hyb21pdW06OmxhcmdlTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiAhbGF5ZXJS
ZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKG1fYm91bmRzKTsKK30KKwordm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6Y2FsY3VsYXRlTGFyZ2VMYXllclZpZXdSZWN0KEludFJlY3QqIGRpcnR5
UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRSZWN0KiBkcmF3UmVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGlydHlSZWN0KTsK
KyAgICBBU1NFUlQoZHJhd1JlY3QpOworCisgICAgLy8gRm9yIHRoZSBnaXZlbiBsYXllciBzaXpl
IGFuZCBjb250ZW50IHJlY3QsIGNhbGN1bGF0ZToKKyAgICAvLyAxKSBUaGUgbWluaW1hbCB0ZXh0
dXJlIHNwYWNlIHJlY3RhbmdsZSB0byBiZSB1cGxvYWRlZCwgcmV0dXJuZWQgaW4KKyAgICAvLyBk
aXJ0eVJlY3QuCisgICAgLy8gMikgVGhlIGNvbnRlbnQgcmVjdC1yZWxhdGl2ZSByZWN0YW5nbGUg
dG8gZHJhdyB0aGlzIHRleHR1cmUgaW4sIHJldHVybmVkCisgICAgLy8gaW4gZHJhd1JlY3QuCisK
KyAgICBjb25zdCBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gbGF5ZXJSZW5kZXJlcigpLT5yb290TGF5
ZXJDb250ZW50UmVjdCgpOworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0gPSBkcmF3VHJhbnNmb3JtKCk7CisgICAgLy8gVGhlIGxheWVyJ3MgZHJhdyB0cmFuc2Zvcm0g
cG9pbnRzIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLCByZWxhdGl2ZSB0bworICAgIC8vIHRo
ZSBjb250ZW50IHJlY3QuICBsYXllclBvcyBpcyB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgdG9wIGxl
ZnQgb2YgdGhlCisgICAgLy8gY29udGVudCByZWN0IHRvIHRoZSB0b3AgbGVmdCBvZiB0aGUgbGF5
ZXIuCisgICAgY29uc3QgSW50U2l6ZSBsYXllclBvcyh0cmFuc2Zvcm0ubTQxKCkgLSBtX2JvdW5k
cy53aWR0aCgpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tNDIo
KSAtIG1fYm91bmRzLmhlaWdodCgpIC8gMik7CisgICAgLy8gVHJhbnNmb3JtIHRoZSBjb250ZW50
UmVjdCBpbnRvIHRoZSBzcGFjZSBvZiB0aGUgbGF5ZXIuCisgICAgSW50UmVjdCBjb250ZW50UmVj
dEluTGF5ZXJTcGFjZShJbnRQb2ludCgwLCAwKSAtIGxheWVyUG9zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3Quc2l6ZSgpKTsKKworICAgIC8vIENsaXAg
dGhlIGVudGlyZSBsYXllciBhZ2FpbnN0IHRoZSB2aXNpYmxlIHJlZ2lvbiBpbiB0aGUgY29udGVu
dCByZWN0CisgICAgLy8gYW5kIHVzZSB0aGF0IGFzIHRoZSBkcmF3YWJsZSB0ZXh0dXJlLCBpbnN0
ZWFkIG9mIHRoZSBlbnRpcmUgbGF5ZXIuCisgICAgKmRpcnR5UmVjdCA9IEludFJlY3QoSW50UG9p
bnQoMCwgMCksIG1fYm91bmRzKTsKKyAgICBkaXJ0eVJlY3QtPmludGVyc2VjdChjb250ZW50UmVj
dEluTGF5ZXJTcGFjZSk7CisKKyAgICAvLyBUaGUgZHJhdyBwb3NpdGlvbiBpcyByZWxhdGl2ZSB0
byB0aGUgY29udGVudCByZWN0LgorICAgICpkcmF3UmVjdCA9IEludFJlY3QoZGlydHlSZWN0LT5s
b2NhdGlvbigpICsgbGF5ZXJQb3MsIGRpcnR5UmVjdC0+c2l6ZSgpKTsKK30KKwogdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogewogICAgIFJlbmRlckxheWVyQmFj
a2luZyogYmFja2luZyA9IHN0YXRpY19jYXN0PFJlbmRlckxheWVyQmFja2luZyo+KG1fb3duZXIt
PmNsaWVudCgpKTsKQEAgLTE1OSw1MiArMjAwLDYzIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbnRlbnRzKCkKIAogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwogCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxl
bWVudGVkLgotICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7Ci0gICAgaWYgKCFsYXllclJlbmRlcmVy
KCktPmNoZWNrVGV4dHVyZVNpemUobV9ib3VuZHMpKSB7Ci0gICAgICAgIG1fc2tpcHNEcmF3ID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIHZvaWQqIHBpeGVscyA9IDA7CiAg
ICAgSW50UmVjdCBkaXJ0eVJlY3QobV9kaXJ0eVJlY3QpOworICAgIEludFJlY3QgdXBkYXRlUmVj
dDsKICAgICBJbnRTaXplIHJlcXVpcmVkVGV4dHVyZVNpemU7CiAgICAgSW50U2l6ZSBiaXRtYXBT
aXplOwogCi0gICAgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IG1fYm91bmRzOwotICAgIEludFJlY3Qg
Ym91bmRzUmVjdChJbnRQb2ludCgwLCAwKSwgbV9ib3VuZHMpOwotCi0gICAgLy8gSWYgdGhlIHRl
eHR1cmUgbmVlZHMgdG8gYmUgcmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50
aXJlCi0gICAgLy8gY29udGVudHMgb2YgdGhlIGxheWVyLgotICAgIGlmIChyZXF1aXJlZFRleHR1
cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNpemUpCi0gICAgICAgIGRpcnR5UmVjdCA9IGJv
dW5kc1JlY3Q7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0
aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgdG8gYXZvaWQgZHJhd2luZyBvdXRzaWRlCi0gICAgICAgIC8v
IHRoZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZS4KLSAgICAgICAgZGlydHlSZWN0Lmlu
dGVyc2VjdChib3VuZHNSZWN0KTsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShTS0lBKQotICAgIGNv
bnN0IFNrQml0bWFwKiBza2lhQml0bWFwID0gMDsKLSAgICBPd25QdHI8c2tpYTo6UGxhdGZvcm1D
YW52YXM+IGNhbnZhczsKLSAgICBPd25QdHI8UGxhdGZvcm1Db250ZXh0U2tpYT4gc2tpYUNvbnRl
eHQ7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OworICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRl
ZC4KKyAgICBpZiAobGFyZ2VMYXllcigpKSB7CisgICAgICAgIC8vIEEgbGF5ZXIgd2l0aCAzRCB0
cmFuc2Zvcm1zIGNvdWxkIHJlcXVpcmUgYW4gYXJiaXRyYXJpbHkgbGFyZ2UgbnVtYmVyCisgICAg
ICAgIC8vIG9mIHRleGVscyB0byBiZSByZXBhaW50ZWQsIHNvIGlnbm9yZSB0aGVzZSBsYXllcnMg
dW50aWwgdGlsaW5nIGlzCisgICAgICAgIC8vIGltcGxlbWVudGVkLgorICAgICAgICBpZiAoIWRy
YXdUcmFuc2Zvcm0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CisgICAgICAgICAgICBt
X3NraXBzRHJhdyA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IGNhbnZhcy5zZXQobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKGRpcnR5UmVjdC53aWR0aCgpLCBk
aXJ0eVJlY3QuaGVpZ2h0KCksIGZhbHNlKSk7Ci0gICAgc2tpYUNvbnRleHQuc2V0KG5ldyBQbGF0
Zm9ybUNvbnRleHRTa2lhKGNhbnZhcy5nZXQoKSkpOworICAgICAgICBjYWxjdWxhdGVMYXJnZUxh
eWVyVmlld1JlY3QoJmRpcnR5UmVjdCwgJm1fbGFyZ2VMYXllckRyYXdSZWN0KTsKKyAgICAgICAg
aWYgKG1fbGFyZ2VMYXllckRpcnR5UmVjdCA9PSBkaXJ0eVJlY3QpCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBnZXQgdGV4dCB0byBzaG93IHVwIGNvcnJl
Y3RseS4KLSAgICAvLyBGSVhNRTogRG9lcyB0aGlzIHRha2UgdXMgZG93biBhIHZlcnkgc2xvdyB0
ZXh0IHJlbmRlcmluZyBwYXRoPwotICAgIHNraWFDb250ZXh0LT5zZXREcmF3aW5nVG9JbWFnZUJ1
ZmZlcih0cnVlKTsKKyAgICAgICAgbV9sYXJnZUxheWVyRGlydHlSZWN0ID0gZGlydHlSZWN0Owor
ICAgICAgICByZXF1aXJlZFRleHR1cmVTaXplID0gZGlydHlSZWN0LnNpemUoKTsKKyAgICAgICAg
dXBkYXRlUmVjdCA9IEludFJlY3QoSW50UG9pbnQoMCwgMCksIGRpcnR5UmVjdC5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgwLCAwKSwg
bV9ib3VuZHMpOworICAgICAgICByZXF1aXJlZFRleHR1cmVTaXplID0gbV9ib3VuZHM7CisgICAg
ICAgIC8vIElmIHRoZSB0ZXh0dXJlIG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2UgbXVz
dCByZWRyYXcgdGhlIGVudGlyZQorICAgICAgICAvLyBjb250ZW50cyBvZiB0aGUgbGF5ZXIuCisg
ICAgICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNpemUp
CisgICAgICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNSZWN0OworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIg
dG8gYXZvaWQgZHJhd2luZworICAgICAgICAgICAgLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRo
ZSBiYWNraW5nIHRleHR1cmUuCisgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGJvdW5k
c1JlY3QpOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZVJlY3QgPSBkaXJ0eVJlY3Q7CisgICAg
fQogCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250ZXh0KHJlaW50ZXJw
cmV0X2Nhc3Q8UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqPihza2lhQ29udGV4dC5nZXQoKSkpKTsK
KyNpZiBQTEFURk9STShTS0lBKQorICAgIGNvbnN0IFNrQml0bWFwKiBvbGRCaXRtYXAgPSBtX3Nr
aWFDYW52YXMuZ2V0KCkgPyAmbV9za2lhQ2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFw
KGZhbHNlKSA6IDA7CisgICAgaWYgKCFvbGRCaXRtYXAgfHwgb2xkQml0bWFwLT53aWR0aCgpICE9
IGRpcnR5UmVjdC53aWR0aCgpIHx8IG9sZEJpdG1hcC0+aGVpZ2h0KCkgIT0gZGlydHlSZWN0Lmhl
aWdodCgpKSB7CisgICAgICAgIG1fc2tpYUNhbnZhcy5zZXQobmV3IHNraWE6OlBsYXRmb3JtQ2Fu
dmFzKGRpcnR5UmVjdC53aWR0aCgpLCBkaXJ0eVJlY3QuaGVpZ2h0KCksIGZhbHNlKSk7CisgICAg
ICAgIG1fc2tpYUNvbnRleHQuc2V0KG5ldyBQbGF0Zm9ybUNvbnRleHRTa2lhKG1fc2tpYUNhbnZh
cy5nZXQoKSkpOworICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBnZXQgdGV4dCB0byBzaG93
IHVwIGNvcnJlY3RseS4KKyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyB0YWtlIHVzIGRvd24g
YSB2ZXJ5IHNsb3cgdGV4dCByZW5kZXJpbmcgcGF0aD8KKyAgICAgICAgbV9za2lhQ29udGV4dC0+
c2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIodHJ1ZSk7CisgICAgICAgIG1fc2tpYUdyYXBoaWNzQ29u
dGV4dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dChyZWludGVycHJldF9jYXN0PFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0Kj4obV9za2lhQ29udGV4dC5nZXQoKSkpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX3NraWFDYW52YXMtPnJlc2V0TWF0cml4KCk7CisgICAgfQogCiAgICAgLy8gQnJpbmcg
dGhlIGNhbnZhcyBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFpbnQgcmVjdC4K
LSAgICBjYW52YXMtPnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRpcnR5UmVjdC54
KCkpLCBzdGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRpcnR5UmVjdC55KCkpKTsKKyAgICBtX3NraWFD
YW52YXMtPnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRpcnR5UmVjdC54KCkpLCBz
dGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRpcnR5UmVjdC55KCkpKTsKIAotICAgIG1fb3duZXItPnBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpncmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7Ci0g
ICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9IGNhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0Jp
dG1hcChmYWxzZSk7Ci0gICAgc2tpYUJpdG1hcCA9ICZiaXRtYXA7CisgICAgbV9vd25lci0+cGFp
bnRHcmFwaGljc0xheWVyQ29udGVudHMoKm1fc2tpYUdyYXBoaWNzQ29udGV4dCwgZGlydHlSZWN0
KTsKKyAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gbV9za2lhQ2FudmFzLT5nZXREZXZpY2Uo
KS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKKyAgICBjb25zdCBTa0JpdG1hcCogc2tpYUJpdG1hcCA9
ICZiaXRtYXA7CiAgICAgQVNTRVJUKHNraWFCaXRtYXApOwogCiAgICAgU2tBdXRvTG9ja1BpeGVs
cyBsb2NrKCpza2lhQml0bWFwKTsKQEAgLTIxNSwxMiArMjY3LDExIEBAIHZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAgICAgICAgYml0bWFwU2l6ZSA9IEludFNp
emUoc2tpYUJpdG1hcC0+d2lkdGgoKSwgc2tpYUJpdG1hcC0+aGVpZ2h0KCkpOwogICAgIH0KICNl
bGlmIFBMQVRGT1JNKENHKQotICAgIFZlY3Rvcjx1aW50OF90PiB0ZW1wVmVjdG9yOwogICAgIGlu
dCByb3dCeXRlcyA9IDQgKiBkaXJ0eVJlY3Qud2lkdGgoKTsKLSAgICB0ZW1wVmVjdG9yLnJlc2l6
ZShyb3dCeXRlcyAqIGRpcnR5UmVjdC5oZWlnaHQoKSk7Ci0gICAgbWVtc2V0KHRlbXBWZWN0b3Iu
ZGF0YSgpLCAwLCB0ZW1wVmVjdG9yLnNpemUoKSk7CisgICAgbV9jZ1RlbXBQaXhlbFZlY3Rvci5y
ZXNpemUocm93Qnl0ZXMgKiBkaXJ0eVJlY3QuaGVpZ2h0KCkpOworICAgIG1lbXNldChtX2NnVGVt
cFBpeGVsVmVjdG9yLmRhdGEoKSwgMCwgbV9jZ1RlbXBQaXhlbFZlY3Rvci5zaXplKCkpOwogICAg
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRl
eHRDRyhBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGUodGVtcFZlY3Rvci5kYXRhKCksCisg
ICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dENHKEFkb3B0Q0YsIENHQml0bWFwQ29u
dGV4dENyZWF0ZShtX2NnVGVtcFBpeGVsVmVjdG9yLmRhdGEoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5
UmVjdC53aWR0aCgpLCBkaXJ0eVJlY3QuaGVpZ2h0KCksIDgsIHJvd0J5dGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29sb3JTcGFjZS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkpOwpAQCAtMjM1LDcgKzI4Niw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OnVwZGF0ZUNvbnRlbnRzKCkKIAogICAgIG1fb3duZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRl
bnRzKGdyYXBoaWNzQ29udGV4dCwgZGlydHlSZWN0KTsKIAotICAgIHBpeGVscyA9IHRlbXBWZWN0
b3IuZGF0YSgpOworICAgIHBpeGVscyA9IG1fY2dUZW1wUGl4ZWxWZWN0b3IuZGF0YSgpOwogICAg
IGJpdG1hcFNpemUgPSBkaXJ0eVJlY3Quc2l6ZSgpOwogI2Vsc2UKICNlcnJvciAiTmVlZCB0byBp
bXBsZW1lbnQgZm9yIHlvdXIgcGxhdGZvcm0uIgpAQCAtMjQ2LDcgKzI5Nyw3IEBAIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAgICAgICAgdGV4dHVyZUlkID0g
bGF5ZXJSZW5kZXJlcigpLT5jcmVhdGVMYXllclRleHR1cmUoKTsKIAogICAgIGlmIChwaXhlbHMp
Ci0gICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0KHBpeGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRU
ZXh0dXJlU2l6ZSwgIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyAgICAgICAgdXBkYXRlVGV4dHVy
ZVJlY3QocGl4ZWxzLCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCB1cGRhdGVSZWN0
LCB0ZXh0dXJlSWQpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVUZXh0
dXJlUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsIGNvbnN0IElu
dFNpemUmIHJlcXVpcmVkVGV4dHVyZVNpemUsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVu
c2lnbmVkIHRleHR1cmVJZCkKQEAgLTI3Miw3ICszMjMsOSBAQCB2b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjp1cGRhdGVUZXh0dXJlUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFNpemUmIGJp
dG1hcAogICAgIH0KIAogICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkpOwotICAg
IG1fY29udGVudHNEaXJ0eSA9IGZhbHNlOworICAgIC8vIExhcmdlIGxheWVycyBhbHdheXMgc3Rh
eSBkaXJ0eSwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gdXBkYXRlIHdoZW4gdGhlCisgICAgLy8gY29u
dGVudCByZWN0IGNoYW5nZXMuCisgICAgbV9jb250ZW50c0RpcnR5ID0gbGFyZ2VMYXllcigpOwog
fQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KCkKQEAgLTI4OCw5ICszNDEsMjUg
QEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbnRl
bnRzVGV4dHVyZSkpOwogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5jb250ZW50
U2hhZGVyUHJvZ3JhbSgpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHN2
LT5zaGFkZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQoY29u
dGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0o
KSwKLSAgICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdo
dCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlck1hdHJp
eExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworCisgICAgaWYgKGxhcmdl
TGF5ZXIoKSkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBkcmF3
VHJhbnNmb3JtKCk7CisgICAgICAgIEFTU0VSVCh0cmFuc2Zvcm0uaXNJZGVudGl0eU9yVHJhbnNs
YXRpb24oKSk7CisgICAgICAgIHRyYW5zZm9ybS5zZXRNNDEobV9sYXJnZUxheWVyRHJhd1JlY3Qu
eCgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3UmVjdC53aWR0
aCgpIC8gMik7CisgICAgICAgIHRyYW5zZm9ybS5zZXRNNDIobV9sYXJnZUxheWVyRHJhd1JlY3Qu
eSgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3UmVjdC5oZWln
aHQoKSAvIDIpOworCisgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5k
ZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
bnNmb3JtLCBtX2xhcmdlTGF5ZXJEcmF3UmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbGFyZ2VMYXllckRyYXdSZWN0LmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLCBzdi0+c2hh
ZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkcmF3VGV4dHVyZWRR
dWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0oKSwgbV9ib3VuZHMud2lkdGgoKSwgbV9i
b3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd09wYWNpdHkoKSwg
c3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3Yt
PnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgfQogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgK
aW5kZXggNDEyYmEwNmM2NGJmNThlMjRhNjRhMDQyMjAyYTVlZDM0ZWQ5NDJmNi4uYjg3MjExYjdm
ZmEyNjBkM2NjY2I4OTA5YjAzOTA3NjVkNTQ4YTI5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAt
ODEsMTEgKzgxLDI0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCk7CiAKICAgICB2b2lk
IGNsZWFudXBSZXNvdXJjZXMoKTsKKyAgICBib29sIGxhcmdlTGF5ZXIoKSBjb25zdDsKKyAgICB2
b2lkIGNhbGN1bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdChJbnRSZWN0KiBkaXJ0eVJlY3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogZHJhd1JlY3QpIGNvbnN0
OwogCiAgICAgdW5zaWduZWQgbV9jb250ZW50c1RleHR1cmU7CiAgICAgSW50U2l6ZSBtX2FsbG9j
YXRlZFRleHR1cmVTaXplOwogICAgIGJvb2wgbV9za2lwc0RyYXc7Ci0KKyAgICBJbnRSZWN0IG1f
bGFyZ2VMYXllckRyYXdSZWN0OworICAgIEludFJlY3QgbV9sYXJnZUxheWVyRGlydHlSZWN0Owor
Citwcml2YXRlOgorI2lmIFBMQVRGT1JNKFNLSUEpCisgICAgT3duUHRyPHNraWE6OlBsYXRmb3Jt
Q2FudmFzPiBtX3NraWFDYW52YXM7CisgICAgT3duUHRyPFBsYXRmb3JtQ29udGV4dFNraWE+IG1f
c2tpYUNvbnRleHQ7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9za2lhR3JhcGhpY3ND
b250ZXh0OworI2VsaWYgUExBVEZPUk0oQ0cpCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fY2dUZW1w
UGl4ZWxWZWN0b3I7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCBjOTdi
ZTgyZjIxMzJlNWRkMmNkZDNhZmQyMWM1YzQ3NDMwMGZlMDcxLi40ZWU1OGYxMTNjYTZjNWZhYTc0
MDdkZWQxNDJkMjU3NmNkZjI3YWRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC03NSw2ICs3NSwx
NCBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogewogICAgIEFT
U0VSVChsYXllclJlbmRlcmVyKCkpOwogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qg
d2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgorICAgIGlmIChsYXJnZUxheWVyKCkp
IHsKKyAgICAgICAgLy8gVXNlIHRoZSBiYXNlIHZlcnNpb24gb2YgdXBkYXRlQ29udGVudHMgd2hp
Y2ggZHJhd3MgYSBzdWJzZXQgb2YgdGhlCisgICAgICAgIC8vIGltYWdlIHRvIGEgY2FudmFzLCBh
cyB0aGUgcGl4ZWwgY29udGVudHMgY2FuJ3QgYmUgdXBsb2FkZWQgZGlyZWN0bHkuCisgICAgICAg
IENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgdm9pZCogcGl4ZWxzID0gMDsKICAgICBJbnRTaXplIHJlcXVpcmVkVGV4
dHVyZVNpemU7CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplOwpAQCAtMTM2LDEyICsxNDQsNiBAQCB2
b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogI2Vsc2UKICNlcnJvciAi
TmVlZCB0byBpbXBsZW1lbnQgZm9yIHlvdXIgcGxhdGZvcm0uIgogI2VuZGlmCi0gICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgot
ICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7Ci0gICAgaWYgKCFsYXllclJlbmRlcmVyKCktPmNoZWNr
VGV4dHVyZVNpemUocmVxdWlyZWRUZXh0dXJlU2l6ZSkpIHsKLSAgICAgICAgbV9za2lwc0RyYXcg
PSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgdW5zaWduZWQgdGV4dHVyZUlk
ID0gbV9jb250ZW50c1RleHR1cmU7CiAgICAgaWYgKCF0ZXh0dXJlSWQpCkBAIC0xNTIsNyArMTU0
LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAgICBkaXJ0
eVJlY3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIGJpdG1hcFNpemUpKTsKIAog
ICAgIGlmIChwaXhlbHMpCi0gICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0KHBpeGVscywgYml0bWFw
U2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyAgICAg
ICAgdXBkYXRlVGV4dHVyZVJlY3QocGl4ZWxzLCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1cmVT
aXplLCBkaXJ0eVJlY3QsIHRleHR1cmVJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAppbmRleCBjNDAzMWU1NWI0M2JmNjU3NmU0YWMwN2M5YzBmZmY1NjE5ZjZlN2JkLi44YmY2NjFh
ZDIwNDcyOTExYjQ5N2FmZjJmMTQ3Mzc1OWI4Yjc1MTMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCkBAIC0zMDIsOCArMzAyLDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdM
YXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QKICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsK
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQz
RDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOwogCi0gICAg
Ly8gU2V0IHRoZSByb290VmlzaWJsZVJlY3QgLS0tIHVzZWQgYnkgc3Vic2VxdWVudCBkcmF3TGF5
ZXJzIGNhbGxzCisgICAgLy8gU2V0IHRoZSByb290IHZpc2libGUvY29udGVudCByZWN0cyAtLS0g
dXNlZCBieSBzdWJzZXF1ZW50IGRyYXdMYXllcnMgY2FsbHMuCiAgICAgbV9yb290VmlzaWJsZVJl
Y3QgPSB2aXNpYmxlUmVjdDsKKyAgICBtX3Jvb3RDb250ZW50UmVjdCA9IGNvbnRlbnRSZWN0Owog
CiAgICAgLy8gVHJhdmVyc2UgdGhlIGxheWVyIHRyZWUgYW5kIHVwZGF0ZSB0aGUgbGF5ZXIgdHJh
bnNmb3Jtcy4KICAgICBmbG9hdCBvcGFjaXR5ID0gMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4
IGI3MTQ1ODRmNWU1NzE5YWM0ZTg5Njg5NjU1MmQ0MjA4NDc3NDQ1NmUuLjk1MzM4ZGVkY2U3MGNi
MGE4NjY3OTc5ODMwMDc5YWUzMjNhMjY3N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTA5
LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2l6ZU9uc2NyZWVuQ29udGVudChjb25z
dCBJbnRTaXplJik7CiAKICAgICBJbnRTaXplIHJvb3RMYXllclRleHR1cmVTaXplKCkgY29uc3Qg
eyByZXR1cm4gSW50U2l6ZShtX3Jvb3RMYXllclRleHR1cmVXaWR0aCwgbV9yb290TGF5ZXJUZXh0
dXJlSGVpZ2h0KTsgfQorICAgIEludFJlY3Qgcm9vdExheWVyQ29udGVudFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3RDb250ZW50UmVjdDsgfQogICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhl
bHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIAogcHJpdmF0ZToKQEAgLTE2
MCw2ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9yb290TGF5ZXJDYW52YXNTaXpl
OwogCiAgICAgSW50UmVjdCBtX3Jvb3RWaXNpYmxlUmVjdDsKKyAgICBJbnRSZWN0IG1fcm9vdENv
bnRlbnRSZWN0OwogCiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69957</attachid>
            <date>2010-10-06 10:48:36 -0700</date>
            <delta_ts>2010-10-07 09:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101006104835.patch</filename>
            <type>text/plain</type>
            <size>21241</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMWJhZjRmNjIwZTM3ODAzNmYwMzcxMTUyN2JhYzg1Y2M1NmVlNjljLi44MzEyMTc4
YWRiYTM1MTA5MDk2NTc5MWJmMWY2YzlmNTg1NGVlOTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA1ICBUb255IENo
YW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcg
Y2hyb21pdW0gbGludXggYmFzZWxpbmVzIGFmdGVyIGxhbmRpbmcgcjY5MTI2CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjdkZTQyNjRhYWFiNTgxNWJhNDM0ZmJlYTMzNjRlMjI5OGYx
OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1
Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGUgeWVsbG93IGJv
eCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4gVGhlcmUg
c2hvdWxkIGJlIGEgcmVkIGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveCBuZWFy
IHRoZSBib3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBjYW4gc3Vw
cG9ydCB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgorCisKKyhHcmFwaGljc0xh
eWVyCisgIChib3VuZHMgNzg1LjAwIDIwMTE5LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAyMDExOS4wMCkKKyAgICAgIChjaGlsZHJl
biAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgNzIu
MDApCisgICAgICAgICAgKGJvdW5kcyA1MDAuMDAgMjAwMDAuMDApCisgICAgICAgICkKKyAgICAg
ICkKKyAgICApCisgICkKKykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Rp
bGluZy9odWdlLWxheWVyLWltZy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5n
L2h1Z2UtbGF5ZXItaW1nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiYTkwMjY4OTI1N2JlODI0OGNiNGU0
MzdiYzcwOTkzNDM3YWE5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UZXN0IG9mIHZlcnkgbGFyZ2Ug
aW1hZ2UgbGF5ZXI8L3RpdGxlPgorCisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KKyAgICAjY29udGFpbmVyIHsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5z
bGF0ZVooMCk7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
KyAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IDUwMDsKKyAgICAgICAgICAgIGNhbnZhcy5oZWln
aHQgPSAyMDAwMDsKKyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
JzJkJyk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJ5ZWxsb3ciOworICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoNTAsIDUwLCAyMDAsIDIwMCk7CisgICAgICAgICAgICBjb250ZXh0LmZp
bGxTdHlsZSA9ICJibHVlIjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoNTAsIGNhbnZh
cy5oZWlnaHQgLSAyNTAsIDIwMCwgMjAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb250YWluZXIiKS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7CisKKyAgICAgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxheW91dFRlc3RDb250cm9s
bGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IHRlc3RPbkxvYWQsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4K
KyAgICAgIDxwPgorICAgICAgICBUaGUgeWVsbG93IGJveCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdo
IHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4KKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgcmVk
IGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveAorICAgICAgICBuZWFyIHRoZSBi
b3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBjYW4gc3VwcG9ydAor
ICAgICAgICB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgorICAgICAgPC9wPgor
ICAgICAgICA8aW1nIGlkPSJjb250YWluZXIiPgorICAgICAgICA8cHJlIGlkPSJsYXllcnMiPkxh
eWVyIHRyZWUgYXBwZWFycyBoZXJlIGluIERSVC48L3ByZT4KKyAgPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCmluZGV4IDliYWRhMTVlNzYzNjNjMjMwZTVh
N2Q0ZTBjMjc3YmY3Y2Q4NDVjYjYuLmE2NDg0ZmMwMGE4NzgwMmUxNWJlZWFmMjlkNzBhYmE3Yjgy
MGVkNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKQEAgLTc4LDYgKzc4LDcg
QEAgY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItcmVzaXplLmh0bWwKIGNvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwKIGNvbXBv
c2l0aW5nL3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4uaHRtbAogY29tcG9z
aXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIuaHRtbAorY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5
ZXItaW1nLmh0bWwKIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sCiAKICMgVW5j
YXRlZ29yaXplZCBlZGl0aW5nIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkZjE5YjQyNDZkODQ2ZmE4NjlmNDk3MGNiZjMx
MDIwM2E3YzY4NmIuLjZhYTcxZjEyYWRlNjA0ZDQ4ZmM5YjY5ZmU0NDNlZjk2N2MwNjg1ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBzaG9ydC10ZXJtIHNvbHV0aW9uIGZvciBsYXJnZSBsYXllcnMuICBMYXllcnMgdGhhdCBhcmUg
dG9vCisgICAgICAgIGxhcmdlIHRvIGJlIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSB0ZXh0dXJlIGp1
c3QgdXBsb2FkIHRoZSBwb3J0aW9uIG9mCisgICAgICAgIHRoZSBsYXllciB0aGF0IGlzIHdpdGhp
biB0aGUgY29udGVudCByZWN0LiAgQSBsb25nZXItdGVybSBzb2x1dGlvbgorICAgICAgICBpcyBz
dGlsbCB0aWxpbmcgd2l0aCBwcm9wZXIgbWVtb3J5IG1hbmFnZW1lbnQuICBMYXllcnMgdGhhdCBo
YXZlIGZ1bGwKKyAgICAgICAgM0QgdHJhbnNmb3JtcyAobW9yZSB0aGFuIGp1c3QgdHJhbnNsYXRp
b25zKSBhcmUgc3RpbGwgbm90IGRyYXduLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcwMTYKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy90aWxp
bmcKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6bGFyZ2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y2FsY3VsYXRlTGFyZ2VMYXllclZpZXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyb290TGF5ZXJDb250ZW50UmVjdCk6CisK
IDIwMTAtMTAtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhkZGE0ZDZjNWVlZjg3MzJh
ZmQ3ZTdlNGUyMWI3MmI4MWQxOTZjMjQuLjI2MjQ5NGY1ZDk0NmMyNDZlZDVlNGY0ZDllMjYyNjM4
OWU4MDZiZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjEsNiArMTIxLDEwIEBAIFBh
c3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVh
dGUoR3JhcGhpY3NMYXllckNocm9tCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21p
dW0ob3duZXIpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZSgwKQorICAgICwgbV9hbGxvY2F0ZWRU
ZXh0dXJlU2l6ZSgwLCAwKQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCisgICAgLCBtX2xhcmdl
TGF5ZXJEcmF3UmVjdCgwLCAwLCAwLCAwKQorICAgICwgbV9sYXJnZUxheWVyRGlydHlSZWN0KDAs
IDAsIDAsIDApCiB7CiB9CiAKQEAgLTE0OSw2ICsxNTMsNDMgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgfQogfQogCitib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpsYXJnZUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWxheWVyUmVuZGVy
ZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcyk7Cit9CisKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OmNhbGN1bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdChJbnRSZWN0KiBkaXJ0eVJlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50UmVjdCogZHJhd1JlY3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRpcnR5UmVjdCk7CisgICAg
QVNTRVJUKGRyYXdSZWN0KTsKKworICAgIC8vIEZvciB0aGUgZ2l2ZW4gbGF5ZXIgc2l6ZSBhbmQg
Y29udGVudCByZWN0LCBjYWxjdWxhdGU6CisgICAgLy8gMSkgVGhlIG1pbmltYWwgdGV4dHVyZSBz
cGFjZSByZWN0YW5nbGUgdG8gYmUgdXBsb2FkZWQsIHJldHVybmVkIGluCisgICAgLy8gZGlydHlS
ZWN0LgorICAgIC8vIDIpIFRoZSBjb250ZW50IHJlY3QtcmVsYXRpdmUgcmVjdGFuZ2xlIHRvIGRy
YXcgdGhpcyB0ZXh0dXJlIGluLCByZXR1cm5lZAorICAgIC8vIGluIGRyYXdSZWN0LgorCisgICAg
Y29uc3QgSW50UmVjdCBjb250ZW50UmVjdCA9IGxheWVyUmVuZGVyZXIoKS0+cm9vdExheWVyQ29u
dGVudFJlY3QoKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtID0g
ZHJhd1RyYW5zZm9ybSgpOworICAgIC8vIFRoZSBsYXllcidzIGRyYXcgdHJhbnNmb3JtIHBvaW50
cyB0byB0aGUgY2VudGVyIG9mIHRoZSBsYXllciwgcmVsYXRpdmUgdG8KKyAgICAvLyB0aGUgY29u
dGVudCByZWN0LiAgbGF5ZXJQb3MgaXMgdGhlIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBsZWZ0IG9m
IHRoZQorICAgIC8vIGNvbnRlbnQgcmVjdCB0byB0aGUgdG9wIGxlZnQgb2YgdGhlIGxheWVyLgor
ICAgIGNvbnN0IEludFNpemUgbGF5ZXJQb3ModHJhbnNmb3JtLm00MSgpIC0gbV9ib3VuZHMud2lk
dGgoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0ubTQyKCkgLSBt
X2JvdW5kcy5oZWlnaHQoKSAvIDIpOworICAgIC8vIFRyYW5zZm9ybSB0aGUgY29udGVudFJlY3Qg
aW50byB0aGUgc3BhY2Ugb2YgdGhlIGxheWVyLgorICAgIEludFJlY3QgY29udGVudFJlY3RJbkxh
eWVyU3BhY2UoSW50UG9pbnQoMCwgMCkgLSBsYXllclBvcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LnNpemUoKSk7CisKKyAgICAvLyBDbGlwIHRoZSBl
bnRpcmUgbGF5ZXIgYWdhaW5zdCB0aGUgdmlzaWJsZSByZWdpb24gaW4gdGhlIGNvbnRlbnQgcmVj
dAorICAgIC8vIGFuZCB1c2UgdGhhdCBhcyB0aGUgZHJhd2FibGUgdGV4dHVyZSwgaW5zdGVhZCBv
ZiB0aGUgZW50aXJlIGxheWVyLgorICAgICpkaXJ0eVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAs
IDApLCBtX2JvdW5kcyk7CisgICAgZGlydHlSZWN0LT5pbnRlcnNlY3QoY29udGVudFJlY3RJbkxh
eWVyU3BhY2UpOworCisgICAgLy8gVGhlIGRyYXcgcG9zaXRpb24gaXMgcmVsYXRpdmUgdG8gdGhl
IGNvbnRlbnQgcmVjdC4KKyAgICAqZHJhd1JlY3QgPSBJbnRSZWN0KGRpcnR5UmVjdC0+bG9jYXRp
b24oKSArIGxheWVyUG9zLCBkaXJ0eVJlY3QtPnNpemUoKSk7Cit9CisKIHZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIHsKICAgICBSZW5kZXJMYXllckJhY2tpbmcq
IGJhY2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGll
bnQoKSk7CkBAIC0xNTksNTIgKzIwMCw2MyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cygpCiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKIAotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRl
ZC4KLSAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlmICghbGF5ZXJSZW5kZXJlcigpLT5j
aGVja1RleHR1cmVTaXplKG1fYm91bmRzKSkgewotICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2b2lkKiBwaXhlbHMgPSAwOwogICAgIElu
dFJlY3QgZGlydHlSZWN0KG1fZGlydHlSZWN0KTsKKyAgICBJbnRSZWN0IHVwZGF0ZVJlY3Q7CiAg
ICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplOwogICAgIEludFNpemUgYml0bWFwU2l6ZTsK
IAotICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBtX2JvdW5kczsKLSAgICBJbnRSZWN0IGJvdW5k
c1JlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsKLQotICAgIC8vIElmIHRoZSB0ZXh0dXJl
IG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2UgbXVzdCByZWRyYXcgdGhlIGVudGlyZQot
ICAgIC8vIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KLSAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6
ZSAhPSBtX2FsbG9jYXRlZFRleHR1cmVTaXplKQotICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNS
ZWN0OwotICAgIGVsc2UgewotICAgICAgICAvLyBDbGlwIHRoZSBkaXJ0eVJlY3QgdG8gdGhlIHNp
emUgb2YgdGhlIGxheWVyIHRvIGF2b2lkIGRyYXdpbmcgb3V0c2lkZQotICAgICAgICAvLyB0aGUg
Ym91bmRzIG9mIHRoZSBiYWNraW5nIHRleHR1cmUuCi0gICAgICAgIGRpcnR5UmVjdC5pbnRlcnNl
Y3QoYm91bmRzUmVjdCk7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oU0tJQSkKLSAgICBjb25zdCBT
a0JpdG1hcCogc2tpYUJpdG1hcCA9IDA7Ci0gICAgT3duUHRyPHNraWE6OlBsYXRmb3JtQ2FudmFz
PiBjYW52YXM7Ci0gICAgT3duUHRyPFBsYXRmb3JtQ29udGV4dFNraWE+IHNraWFDb250ZXh0Owot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dDsKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisg
ICAgaWYgKGxhcmdlTGF5ZXIoKSkgeworICAgICAgICAvLyBBIGxheWVyIHdpdGggM0QgdHJhbnNm
b3JtcyBjb3VsZCByZXF1aXJlIGFuIGFyYml0cmFyaWx5IGxhcmdlIG51bWJlcgorICAgICAgICAv
LyBvZiB0ZXhlbHMgdG8gYmUgcmVwYWludGVkLCBzbyBpZ25vcmUgdGhlc2UgbGF5ZXJzIHVudGls
IHRpbGluZyBpcworICAgICAgICAvLyBpbXBsZW1lbnRlZC4KKyAgICAgICAgaWYgKCFkcmF3VHJh
bnNmb3JtKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgeworICAgICAgICAgICAgbV9za2lw
c0RyYXcgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBjYW52
YXMuc2V0KG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhkaXJ0eVJlY3Qud2lkdGgoKSwgZGlydHlS
ZWN0LmhlaWdodCgpLCBmYWxzZSkpOwotICAgIHNraWFDb250ZXh0LnNldChuZXcgUGxhdGZvcm1D
b250ZXh0U2tpYShjYW52YXMuZ2V0KCkpKTsKKyAgICAgICAgY2FsY3VsYXRlTGFyZ2VMYXllclZp
ZXdSZWN0KCZkaXJ0eVJlY3QsICZtX2xhcmdlTGF5ZXJEcmF3UmVjdCk7CisgICAgICAgIGlmICht
X2xhcmdlTGF5ZXJEaXJ0eVJlY3QgPT0gZGlydHlSZWN0KQorICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gZ2V0IHRleHQgdG8gc2hvdyB1cCBjb3JyZWN0bHku
Ci0gICAgLy8gRklYTUU6IERvZXMgdGhpcyB0YWtlIHVzIGRvd24gYSB2ZXJ5IHNsb3cgdGV4dCBy
ZW5kZXJpbmcgcGF0aD8KLSAgICBza2lhQ29udGV4dC0+c2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIo
dHJ1ZSk7CisgICAgICAgIG1fbGFyZ2VMYXllckRpcnR5UmVjdCA9IGRpcnR5UmVjdDsKKyAgICAg
ICAgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGRpcnR5UmVjdC5zaXplKCk7CisgICAgICAgIHVwZGF0
ZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBkaXJ0eVJlY3Quc2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBJbnRSZWN0IGJvdW5kc1JlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91
bmRzKTsKKyAgICAgICAgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IG1fYm91bmRzOworICAgICAgICAv
LyBJZiB0aGUgdGV4dHVyZSBuZWVkcyB0byBiZSByZWFsbG9jYXRlZCB0aGVuIHdlIG11c3QgcmVk
cmF3IHRoZSBlbnRpcmUKKyAgICAgICAgLy8gY29udGVudHMgb2YgdGhlIGxheWVyLgorICAgICAg
ICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZSAhPSBtX2FsbG9jYXRlZFRleHR1cmVTaXplKQorICAg
ICAgICAgICAgZGlydHlSZWN0ID0gYm91bmRzUmVjdDsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAvLyBDbGlwIHRoZSBkaXJ0eVJlY3QgdG8gdGhlIHNpemUgb2YgdGhlIGxheWVyIHRvIGF2
b2lkIGRyYXdpbmcKKyAgICAgICAgICAgIC8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgYmFj
a2luZyB0ZXh0dXJlLgorICAgICAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChib3VuZHNSZWN0
KTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVSZWN0ID0gZGlydHlSZWN0OworICAgIH0KIAot
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dChyZWludGVycHJldF9j
YXN0PFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kj4oc2tpYUNvbnRleHQuZ2V0KCkpKSk7CisjaWYg
UExBVEZPUk0oU0tJQSkKKyAgICBjb25zdCBTa0JpdG1hcCogb2xkQml0bWFwID0gbV9za2lhQ2Fu
dmFzLmdldCgpID8gJm1fc2tpYUNhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxz
ZSkgOiAwOworICAgIGlmICghb2xkQml0bWFwIHx8IG9sZEJpdG1hcC0+d2lkdGgoKSAhPSBkaXJ0
eVJlY3Qud2lkdGgoKSB8fCBvbGRCaXRtYXAtPmhlaWdodCgpICE9IGRpcnR5UmVjdC5oZWlnaHQo
KSkgeworICAgICAgICBtX3NraWFDYW52YXMuc2V0KG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhk
aXJ0eVJlY3Qud2lkdGgoKSwgZGlydHlSZWN0LmhlaWdodCgpLCBmYWxzZSkpOworICAgICAgICBt
X3NraWFDb250ZXh0LnNldChuZXcgUGxhdGZvcm1Db250ZXh0U2tpYShtX3NraWFDYW52YXMuZ2V0
KCkpKTsKKyAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gZ2V0IHRleHQgdG8gc2hvdyB1cCBj
b3JyZWN0bHkuCisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgdGFrZSB1cyBkb3duIGEgdmVy
eSBzbG93IHRleHQgcmVuZGVyaW5nIHBhdGg/CisgICAgICAgIG1fc2tpYUNvbnRleHQtPnNldERy
YXdpbmdUb0ltYWdlQnVmZmVyKHRydWUpOworICAgICAgICBtX3NraWFHcmFwaGljc0NvbnRleHQu
c2V0KG5ldyBHcmFwaGljc0NvbnRleHQocmVpbnRlcnByZXRfY2FzdDxQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dCo+KG1fc2tpYUNvbnRleHQuZ2V0KCkpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9za2lhQ2FudmFzLT5yZXNldE1hdHJpeCgpOworICAgIH0KIAogICAgIC8vIEJyaW5nIHRoZSBj
YW52YXMgaW50byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhaW50IHJlY3QuCi0gICAg
Y2FudmFzLT50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8U2tTY2FsYXI+KC1kaXJ0eVJlY3QueCgpKSwg
c3RhdGljX2Nhc3Q8U2tTY2FsYXI+KC1kaXJ0eVJlY3QueSgpKSk7CisgICAgbV9za2lhQ2FudmFz
LT50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8U2tTY2FsYXI+KC1kaXJ0eVJlY3QueCgpKSwgc3RhdGlj
X2Nhc3Q8U2tTY2FsYXI+KC1kaXJ0eVJlY3QueSgpKSk7CiAKLSAgICBtX293bmVyLT5wYWludEdy
YXBoaWNzTGF5ZXJDb250ZW50cygqZ3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJlY3QpOwotICAgIGNv
bnN0IFNrQml0bWFwJiBiaXRtYXAgPSBjYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAo
ZmFsc2UpOwotICAgIHNraWFCaXRtYXAgPSAmYml0bWFwOworICAgIG1fb3duZXItPnBhaW50R3Jh
cGhpY3NMYXllckNvbnRlbnRzKCptX3NraWFHcmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7Cisg
ICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9IG1fc2tpYUNhbnZhcy0+Z2V0RGV2aWNlKCktPmFj
Y2Vzc0JpdG1hcChmYWxzZSk7CisgICAgY29uc3QgU2tCaXRtYXAqIHNraWFCaXRtYXAgPSAmYml0
bWFwOwogICAgIEFTU0VSVChza2lhQml0bWFwKTsKIAogICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9j
aygqc2tpYUJpdG1hcCk7CkBAIC0yMTUsMTIgKzI2NywxMSBAQCB2b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAgICAgICAgIGJpdG1hcFNpemUgPSBJbnRTaXplKHNr
aWFCaXRtYXAtPndpZHRoKCksIHNraWFCaXRtYXAtPmhlaWdodCgpKTsKICAgICB9CiAjZWxpZiBQ
TEFURk9STShDRykKLSAgICBWZWN0b3I8dWludDhfdD4gdGVtcFZlY3RvcjsKICAgICBpbnQgcm93
Qnl0ZXMgPSA0ICogZGlydHlSZWN0LndpZHRoKCk7Ci0gICAgdGVtcFZlY3Rvci5yZXNpemUocm93
Qnl0ZXMgKiBkaXJ0eVJlY3QuaGVpZ2h0KCkpOwotICAgIG1lbXNldCh0ZW1wVmVjdG9yLmRhdGEo
KSwgMCwgdGVtcFZlY3Rvci5zaXplKCkpOworICAgIG1fY2dUZW1wUGl4ZWxWZWN0b3IucmVzaXpl
KHJvd0J5dGVzICogZGlydHlSZWN0LmhlaWdodCgpKTsKKyAgICBtZW1zZXQobV9jZ1RlbXBQaXhl
bFZlY3Rvci5kYXRhKCksIDAsIG1fY2dUZW1wUGl4ZWxWZWN0b3Iuc2l6ZSgpKTsKICAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNy
ZWF0ZURldmljZVJHQigpKTsKLSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0Q0co
QWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHRlbXBWZWN0b3IuZGF0YSgpLAorICAgIFJl
dGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHRDRyhBZG9wdENGLCBDR0JpdG1hcENvbnRleHRD
cmVhdGUobV9jZ1RlbXBQaXhlbFZlY3Rvci5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eVJlY3Qu
d2lkdGgoKSwgZGlydHlSZWN0LmhlaWdodCgpLCA4LCByb3dCeXRlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bG9yU3BhY2UuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExh
c3QpKTsKQEAgLTIzNSw3ICsyODYsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRh
dGVDb250ZW50cygpCiAKICAgICBtX293bmVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhn
cmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7CiAKLSAgICBwaXhlbHMgPSB0ZW1wVmVjdG9yLmRh
dGEoKTsKKyAgICBwaXhlbHMgPSBtX2NnVGVtcFBpeGVsVmVjdG9yLmRhdGEoKTsKICAgICBiaXRt
YXBTaXplID0gZGlydHlSZWN0LnNpemUoKTsKICNlbHNlCiAjZXJyb3IgIk5lZWQgdG8gaW1wbGVt
ZW50IGZvciB5b3VyIHBsYXRmb3JtLiIKQEAgLTI0Niw3ICsyOTcsNyBAQCB2b2lkIENvbnRlbnRM
YXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAgICAgICAgIHRleHR1cmVJZCA9IGxheWVy
UmVuZGVyZXIoKS0+Y3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAKICAgICBpZiAocGl4ZWxzKQotICAg
ICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJlcXVpcmVkVGV4dHVy
ZVNpemUsICBkaXJ0eVJlY3QsIHRleHR1cmVJZCk7CisgICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0
KHBpeGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgdXBkYXRlUmVjdCwgdGV4
dHVyZUlkKTsKIH0KIAogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZVJl
Y3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBjb25zdCBJbnRTaXpl
JiByZXF1aXJlZFRleHR1cmVTaXplLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25l
ZCB0ZXh0dXJlSWQpCkBAIC0yNzIsNyArMzIzLDkgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6dXBkYXRlVGV4dHVyZVJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRTaXplJiBiaXRtYXAK
ICAgICB9CiAKICAgICBtX2RpcnR5UmVjdC5zZXRTaXplKEZsb2F0U2l6ZSgpKTsKLSAgICBtX2Nv
bnRlbnRzRGlydHkgPSBmYWxzZTsKKyAgICAvLyBMYXJnZSBsYXllcnMgYWx3YXlzIHN0YXkgZGly
dHksIGJlY2F1c2UgdGhleSBuZWVkIHRvIHVwZGF0ZSB3aGVuIHRoZQorICAgIC8vIGNvbnRlbnQg
cmVjdCBjaGFuZ2VzLgorICAgIG1fY29udGVudHNEaXJ0eSA9IGxhcmdlTGF5ZXIoKTsKIH0KIAog
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCkBAIC0yODgsOSArMzQxLDI1IEBAIHZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXcoKQogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb250ZW50c1Rl
eHR1cmUpKTsKICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihzdi0+Y29udGVudFNoYWRl
clByb2dyYW0oKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+c2hh
ZGVyU2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQs
IGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCksCi0g
ICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSwg
ZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhMb2Nh
dGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKworICAgIGlmIChsYXJnZUxheWVy
KCkpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gZHJhd1RyYW5z
Zm9ybSgpOworICAgICAgICBBU1NFUlQodHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9u
KCkpOworICAgICAgICB0cmFuc2Zvcm0uc2V0TTQxKG1fbGFyZ2VMYXllckRyYXdSZWN0LngoKSAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXJnZUxheWVyRHJhd1JlY3Qud2lkdGgoKSAv
IDIpOworICAgICAgICB0cmFuc2Zvcm0uc2V0TTQyKG1fbGFyZ2VMYXllckRyYXdSZWN0LnkoKSAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXJnZUxheWVyRHJhd1JlY3QuaGVpZ2h0KCkg
LyAyKTsKKworICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIo
KS0+cHJvamVjdGlvbk1hdHJpeCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bSwgbV9sYXJnZUxheWVyRHJhd1JlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2xhcmdlTGF5ZXJEcmF3UmVjdC5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnNoYWRlckFs
cGhhTG9jYXRpb24oKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHJhd1RleHR1cmVkUXVhZChj
b250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBkcmF3VHJhbnNmb3JtKCksIG1fYm91bmRzLndpZHRoKCksIG1fYm91bmRz
LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdPcGFjaXR5KCksIHN2LT5z
aGFkZXJNYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFk
ZXJBbHBoYUxvY2F0aW9uKCkpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDQxMmJhMDZjNjRiZjU4ZTI0YTY0YTA0MjIwMmE1ZWQzNGVkOTQyZjYuLmI4NzIxMWI3ZmZhMjYw
ZDNjY2NiODkwOWIwMzkwNzY1ZDU0OGEyOTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTgxLDEx
ICs4MSwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwogCiAgICAgdm9pZCBjbGVh
bnVwUmVzb3VyY2VzKCk7CisgICAgYm9vbCBsYXJnZUxheWVyKCkgY29uc3Q7CisgICAgdm9pZCBj
YWxjdWxhdGVMYXJnZUxheWVyVmlld1JlY3QoSW50UmVjdCogZGlydHlSZWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3QqIGRyYXdSZWN0KSBjb25zdDsKIAog
ICAgIHVuc2lnbmVkIG1fY29udGVudHNUZXh0dXJlOwogICAgIEludFNpemUgbV9hbGxvY2F0ZWRU
ZXh0dXJlU2l6ZTsKICAgICBib29sIG1fc2tpcHNEcmF3OwotCisgICAgSW50UmVjdCBtX2xhcmdl
TGF5ZXJEcmF3UmVjdDsKKyAgICBJbnRSZWN0IG1fbGFyZ2VMYXllckRpcnR5UmVjdDsKKworcHJp
dmF0ZToKKyNpZiBQTEFURk9STShTS0lBKQorICAgIE93blB0cjxza2lhOjpQbGF0Zm9ybUNhbnZh
cz4gbV9za2lhQ2FudmFzOworICAgIE93blB0cjxQbGF0Zm9ybUNvbnRleHRTa2lhPiBtX3NraWFD
b250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IG1fc2tpYUdyYXBoaWNzQ29udGV4
dDsKKyNlbGlmIFBMQVRGT1JNKENHKQorICAgIFZlY3Rvcjx1aW50OF90PiBtX2NnVGVtcFBpeGVs
VmVjdG9yOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYzk3YmU4MmYy
MTMyZTVkZDJjZGQzYWZkMjFjNWM0NzQzMDBmZTA3MS4uNGVlNThmMTEzY2E2YzVmYWE3NDA3ZGVk
MTQyZDI1NzZjZGYyN2FkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNzUsNiArNzUsMTQgQEAg
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIHsKICAgICBBU1NFUlQo
bGF5ZXJSZW5kZXJlcigpKTsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4g
dGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KKyAgICBpZiAobGFyZ2VMYXllcigpKSB7Cisg
ICAgICAgIC8vIFVzZSB0aGUgYmFzZSB2ZXJzaW9uIG9mIHVwZGF0ZUNvbnRlbnRzIHdoaWNoIGRy
YXdzIGEgc3Vic2V0IG9mIHRoZQorICAgICAgICAvLyBpbWFnZSB0byBhIGNhbnZhcywgYXMgdGhl
IHBpeGVsIGNvbnRlbnRzIGNhbid0IGJlIHVwbG9hZGVkIGRpcmVjdGx5LgorICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIHZvaWQqIHBpeGVscyA9IDA7CiAgICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVT
aXplOwogICAgIEludFNpemUgYml0bWFwU2l6ZTsKQEAgLTEzNiwxMiArMTQ0LDYgQEAgdm9pZCBJ
bWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICNlbHNlCiAjZXJyb3IgIk5lZWQg
dG8gaW1wbGVtZW50IGZvciB5b3VyIHBsYXRmb3JtLiIKICNlbmRpZgotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KLSAgICBt
X3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlmICghbGF5ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1
cmVTaXplKHJlcXVpcmVkVGV4dHVyZVNpemUpKSB7Ci0gICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1
ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1f
Y29udGVudHNUZXh0dXJlOwogICAgIGlmICghdGV4dHVyZUlkKQpAQCAtMTUyLDcgKzE1NCw3IEBA
IHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAgICAgZGlydHlSZWN0
LmludGVyc2VjdChJbnRSZWN0KEludFBvaW50KDAsIDApLCBiaXRtYXBTaXplKSk7CiAKICAgICBp
ZiAocGl4ZWxzKQotICAgICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUs
IHJlcXVpcmVkVGV4dHVyZVNpemUsICBkaXJ0eVJlY3QsIHRleHR1cmVJZCk7CisgICAgICAgIHVw
ZGF0ZVRleHR1cmVSZWN0KHBpeGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwg
ZGlydHlSZWN0LCB0ZXh0dXJlSWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5k
ZXggYzQwMzFlNTViNDNiZjY1NzZlNGFjMDdjOWMwZmZmNTYxOWY2ZTdiZC4uOGJmNjYxYWQyMDQ3
MjkxMWI0OTdhZmYyZjE0NzM3NTliOGI3NTEzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApA
QCAtMzAyLDggKzMwMiw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJz
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9O
RSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKIAotICAgIC8vIFNl
dCB0aGUgcm9vdFZpc2libGVSZWN0IC0tLSB1c2VkIGJ5IHN1YnNlcXVlbnQgZHJhd0xheWVycyBj
YWxscworICAgIC8vIFNldCB0aGUgcm9vdCB2aXNpYmxlL2NvbnRlbnQgcmVjdHMgLS0tIHVzZWQg
Ynkgc3Vic2VxdWVudCBkcmF3TGF5ZXJzIGNhbGxzLgogICAgIG1fcm9vdFZpc2libGVSZWN0ID0g
dmlzaWJsZVJlY3Q7CisgICAgbV9yb290Q29udGVudFJlY3QgPSBjb250ZW50UmVjdDsKIAogICAg
IC8vIFRyYXZlcnNlIHRoZSBsYXllciB0cmVlIGFuZCB1cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9y
bXMuCiAgICAgZmxvYXQgb3BhY2l0eSA9IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBiNzE0
NTg0ZjVlNTcxOWFjNGU4OTY4OTY1NTJkNDIwODQ3NzQ0NTZlLi45NTMzOGRlZGNlNzBjYjBhODY2
Nzk3OTgzMDA3OWFlMzIzYTI2NzdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwOSw2ICsx
MDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNpemVPbnNjcmVlbkNvbnRlbnQoY29uc3QgSW50
U2l6ZSYpOwogCiAgICAgSW50U2l6ZSByb290TGF5ZXJUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIEludFNpemUobV9yb290TGF5ZXJUZXh0dXJlV2lkdGgsIG1fcm9vdExheWVyVGV4dHVyZUhl
aWdodCk7IH0KKyAgICBJbnRSZWN0IHJvb3RMYXllckNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yb290Q29udGVudFJlY3Q7IH0KICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZv
aWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCk7CiAKIHByaXZhdGU6CkBAIC0xNjAsNiAr
MTYxLDcgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fcm9vdExheWVyQ2FudmFzU2l6ZTsKIAog
ICAgIEludFJlY3QgbV9yb290VmlzaWJsZVJlY3Q7CisgICAgSW50UmVjdCBtX3Jvb3RDb250ZW50
UmVjdDsKIAogICAgIGludCBtX21heFRleHR1cmVTaXplOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70097</attachid>
            <date>2010-10-07 09:33:06 -0700</date>
            <delta_ts>2010-10-07 16:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101007093305.patch</filename>
            <type>text/plain</type>
            <size>21386</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMWJhZjRmNjIwZTM3ODAzNmYwMzcxMTUyN2JhYzg1Y2M1NmVlNjljLi44MzEyMTc4
YWRiYTM1MTA5MDk2NTc5MWJmMWY2YzlmNTg1NGVlOTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA1ICBUb255IENo
YW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcg
Y2hyb21pdW0gbGludXggYmFzZWxpbmVzIGFmdGVyIGxhbmRpbmcgcjY5MTI2CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjdkZTQyNjRhYWFiNTgxNWJhNDM0ZmJlYTMzNjRlMjI5OGYx
OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1
Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGUgeWVsbG93IGJv
eCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4gVGhlcmUg
c2hvdWxkIGJlIGEgcmVkIGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveCBuZWFy
IHRoZSBib3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBjYW4gc3Vw
cG9ydCB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgorCisKKyhHcmFwaGljc0xh
eWVyCisgIChib3VuZHMgNzg1LjAwIDIwMTE5LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAyMDExOS4wMCkKKyAgICAgIChjaGlsZHJl
biAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgNzIu
MDApCisgICAgICAgICAgKGJvdW5kcyA1MDAuMDAgMjAwMDAuMDApCisgICAgICAgICkKKyAgICAg
ICkKKyAgICApCisgICkKKykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Rp
bGluZy9odWdlLWxheWVyLWltZy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5n
L2h1Z2UtbGF5ZXItaW1nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiYTkwMjY4OTI1N2JlODI0OGNiNGU0
MzdiYzcwOTkzNDM3YWE5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UZXN0IG9mIHZlcnkgbGFyZ2Ug
aW1hZ2UgbGF5ZXI8L3RpdGxlPgorCisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KKyAgICAjY29udGFpbmVyIHsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5z
bGF0ZVooMCk7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
KyAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IDUwMDsKKyAgICAgICAgICAgIGNhbnZhcy5oZWln
aHQgPSAyMDAwMDsKKyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
JzJkJyk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJ5ZWxsb3ciOworICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoNTAsIDUwLCAyMDAsIDIwMCk7CisgICAgICAgICAgICBjb250ZXh0LmZp
bGxTdHlsZSA9ICJibHVlIjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoNTAsIGNhbnZh
cy5oZWlnaHQgLSAyNTAsIDIwMCwgMjAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb250YWluZXIiKS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7CisKKyAgICAgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxheW91dFRlc3RDb250cm9s
bGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IHRlc3RPbkxvYWQsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4K
KyAgICAgIDxwPgorICAgICAgICBUaGUgeWVsbG93IGJveCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdo
IHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4KKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgcmVk
IGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveAorICAgICAgICBuZWFyIHRoZSBi
b3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBjYW4gc3VwcG9ydAor
ICAgICAgICB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgorICAgICAgPC9wPgor
ICAgICAgICA8aW1nIGlkPSJjb250YWluZXIiPgorICAgICAgICA8cHJlIGlkPSJsYXllcnMiPkxh
eWVyIHRyZWUgYXBwZWFycyBoZXJlIGluIERSVC48L3ByZT4KKyAgPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCmluZGV4IDliYWRhMTVlNzYzNjNjMjMwZTVh
N2Q0ZTBjMjc3YmY3Y2Q4NDVjYjYuLmE2NDg0ZmMwMGE4NzgwMmUxNWJlZWFmMjlkNzBhYmE3Yjgy
MGVkNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKQEAgLTc4LDYgKzc4LDcg
QEAgY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItcmVzaXplLmh0bWwKIGNvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwKIGNvbXBv
c2l0aW5nL3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4uaHRtbAogY29tcG9z
aXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIuaHRtbAorY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5
ZXItaW1nLmh0bWwKIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sCiAKICMgVW5j
YXRlZ29yaXplZCBlZGl0aW5nIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkZjE5YjQyNDZkODQ2ZmE4NjlmNDk3MGNiZjMx
MDIwM2E3YzY4NmIuLjZhYTcxZjEyYWRlNjA0ZDQ4ZmM5YjY5ZmU0NDNlZjk2N2MwNjg1ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBzaG9ydC10ZXJtIHNvbHV0aW9uIGZvciBsYXJnZSBsYXllcnMuICBMYXllcnMgdGhhdCBhcmUg
dG9vCisgICAgICAgIGxhcmdlIHRvIGJlIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSB0ZXh0dXJlIGp1
c3QgdXBsb2FkIHRoZSBwb3J0aW9uIG9mCisgICAgICAgIHRoZSBsYXllciB0aGF0IGlzIHdpdGhp
biB0aGUgY29udGVudCByZWN0LiAgQSBsb25nZXItdGVybSBzb2x1dGlvbgorICAgICAgICBpcyBz
dGlsbCB0aWxpbmcgd2l0aCBwcm9wZXIgbWVtb3J5IG1hbmFnZW1lbnQuICBMYXllcnMgdGhhdCBo
YXZlIGZ1bGwKKyAgICAgICAgM0QgdHJhbnNmb3JtcyAobW9yZSB0aGFuIGp1c3QgdHJhbnNsYXRp
b25zKSBhcmUgc3RpbGwgbm90IGRyYXduLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcwMTYKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy90aWxp
bmcKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6bGFyZ2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y2FsY3VsYXRlTGFyZ2VMYXllclZpZXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyb290TGF5ZXJDb250ZW50UmVjdCk6CisK
IDIwMTAtMTAtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhkZGE0ZDZjNWVlZjg3MzJh
ZmQ3ZTdlNGUyMWI3MmI4MWQxOTZjMjQuLmQxNTUxMGM0MmM5MGVkN2Q3MDdjZDYwYTNhMDVkNmI0
ODgwYjZhMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjEsNiArMTIxLDEwIEBAIFBh
c3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVh
dGUoR3JhcGhpY3NMYXllckNocm9tCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21p
dW0ob3duZXIpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZSgwKQorICAgICwgbV9hbGxvY2F0ZWRU
ZXh0dXJlU2l6ZSgwLCAwKQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCisgICAgLCBtX2xhcmdl
TGF5ZXJEcmF3UmVjdCgwLCAwLCAwLCAwKQorICAgICwgbV9sYXJnZUxheWVyRGlydHlSZWN0KDAs
IDAsIDAsIDApCiB7CiB9CiAKQEAgLTE0OSw2ICsxNTMsNDMgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgfQogfQogCitib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpsYXJnZUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWxheWVyUmVuZGVy
ZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcyk7Cit9CisKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OmNhbGN1bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdChJbnRSZWN0KiBkaXJ0eVJlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50UmVjdCogZHJhd1JlY3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRpcnR5UmVjdCk7CisgICAg
QVNTRVJUKGRyYXdSZWN0KTsKKworICAgIC8vIEZvciB0aGUgZ2l2ZW4gbGF5ZXIgc2l6ZSBhbmQg
Y29udGVudCByZWN0LCBjYWxjdWxhdGU6CisgICAgLy8gMSkgVGhlIG1pbmltYWwgdGV4dHVyZSBz
cGFjZSByZWN0YW5nbGUgdG8gYmUgdXBsb2FkZWQsIHJldHVybmVkIGluCisgICAgLy8gZGlydHlS
ZWN0LgorICAgIC8vIDIpIFRoZSBjb250ZW50IHJlY3QtcmVsYXRpdmUgcmVjdGFuZ2xlIHRvIGRy
YXcgdGhpcyB0ZXh0dXJlIGluLCByZXR1cm5lZAorICAgIC8vIGluIGRyYXdSZWN0LgorCisgICAg
Y29uc3QgSW50UmVjdCBjb250ZW50UmVjdCA9IGxheWVyUmVuZGVyZXIoKS0+cm9vdExheWVyQ29u
dGVudFJlY3QoKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtID0g
ZHJhd1RyYW5zZm9ybSgpOworICAgIC8vIFRoZSBsYXllcidzIGRyYXcgdHJhbnNmb3JtIHBvaW50
cyB0byB0aGUgY2VudGVyIG9mIHRoZSBsYXllciwgcmVsYXRpdmUgdG8KKyAgICAvLyB0aGUgY29u
dGVudCByZWN0LiAgbGF5ZXJQb3MgaXMgdGhlIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBsZWZ0IG9m
IHRoZQorICAgIC8vIGNvbnRlbnQgcmVjdCB0byB0aGUgdG9wIGxlZnQgb2YgdGhlIGxheWVyLgor
ICAgIGNvbnN0IEludFNpemUgbGF5ZXJQb3ModHJhbnNmb3JtLm00MSgpIC0gbV9ib3VuZHMud2lk
dGgoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0ubTQyKCkgLSBt
X2JvdW5kcy5oZWlnaHQoKSAvIDIpOworICAgIC8vIFRyYW5zZm9ybSB0aGUgY29udGVudFJlY3Qg
aW50byB0aGUgc3BhY2Ugb2YgdGhlIGxheWVyLgorICAgIEludFJlY3QgY29udGVudFJlY3RJbkxh
eWVyU3BhY2UoSW50UG9pbnQoMCwgMCkgLSBsYXllclBvcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LnNpemUoKSk7CisKKyAgICAvLyBDbGlwIHRoZSBl
bnRpcmUgbGF5ZXIgYWdhaW5zdCB0aGUgdmlzaWJsZSByZWdpb24gaW4gdGhlIGNvbnRlbnQgcmVj
dAorICAgIC8vIGFuZCB1c2UgdGhhdCBhcyB0aGUgZHJhd2FibGUgdGV4dHVyZSwgaW5zdGVhZCBv
ZiB0aGUgZW50aXJlIGxheWVyLgorICAgICpkaXJ0eVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAs
IDApLCBtX2JvdW5kcyk7CisgICAgZGlydHlSZWN0LT5pbnRlcnNlY3QoY29udGVudFJlY3RJbkxh
eWVyU3BhY2UpOworCisgICAgLy8gVGhlIGRyYXcgcG9zaXRpb24gaXMgcmVsYXRpdmUgdG8gdGhl
IGNvbnRlbnQgcmVjdC4KKyAgICAqZHJhd1JlY3QgPSBJbnRSZWN0KGRpcnR5UmVjdC0+bG9jYXRp
b24oKSArIGxheWVyUG9zLCBkaXJ0eVJlY3QtPnNpemUoKSk7Cit9CisKIHZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIHsKICAgICBSZW5kZXJMYXllckJhY2tpbmcq
IGJhY2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGll
bnQoKSk7CkBAIC0xNTksNTIgKzIwMCw2NyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cygpCiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKIAotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRl
ZC4KLSAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlmICghbGF5ZXJSZW5kZXJlcigpLT5j
aGVja1RleHR1cmVTaXplKG1fYm91bmRzKSkgewotICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2b2lkKiBwaXhlbHMgPSAwOwogICAgIElu
dFJlY3QgZGlydHlSZWN0KG1fZGlydHlSZWN0KTsKKyAgICBJbnRSZWN0IHVwZGF0ZVJlY3Q7CiAg
ICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplOwogICAgIEludFNpemUgYml0bWFwU2l6ZTsK
IAotICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBtX2JvdW5kczsKLSAgICBJbnRSZWN0IGJvdW5k
c1JlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsKLQotICAgIC8vIElmIHRoZSB0ZXh0dXJl
IG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2UgbXVzdCByZWRyYXcgdGhlIGVudGlyZQot
ICAgIC8vIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KLSAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6
ZSAhPSBtX2FsbG9jYXRlZFRleHR1cmVTaXplKQotICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNS
ZWN0OwotICAgIGVsc2UgewotICAgICAgICAvLyBDbGlwIHRoZSBkaXJ0eVJlY3QgdG8gdGhlIHNp
emUgb2YgdGhlIGxheWVyIHRvIGF2b2lkIGRyYXdpbmcgb3V0c2lkZQotICAgICAgICAvLyB0aGUg
Ym91bmRzIG9mIHRoZSBiYWNraW5nIHRleHR1cmUuCi0gICAgICAgIGRpcnR5UmVjdC5pbnRlcnNl
Y3QoYm91bmRzUmVjdCk7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oU0tJQSkKLSAgICBjb25zdCBT
a0JpdG1hcCogc2tpYUJpdG1hcCA9IDA7Ci0gICAgT3duUHRyPHNraWE6OlBsYXRmb3JtQ2FudmFz
PiBjYW52YXM7Ci0gICAgT3duUHRyPFBsYXRmb3JtQ29udGV4dFNraWE+IHNraWFDb250ZXh0Owot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dDsKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisg
ICAgaWYgKGxhcmdlTGF5ZXIoKSkgeworICAgICAgICAvLyBBIGxheWVyIHdpdGggM0QgdHJhbnNm
b3JtcyBjb3VsZCByZXF1aXJlIGFuIGFyYml0cmFyaWx5IGxhcmdlIG51bWJlcgorICAgICAgICAv
LyBvZiB0ZXhlbHMgdG8gYmUgcmVwYWludGVkLCBzbyBpZ25vcmUgdGhlc2UgbGF5ZXJzIHVudGls
IHRpbGluZyBpcworICAgICAgICAvLyBpbXBsZW1lbnRlZC4KKyAgICAgICAgaWYgKCFkcmF3VHJh
bnNmb3JtKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgeworICAgICAgICAgICAgbV9za2lw
c0RyYXcgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBjYW52
YXMuc2V0KG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhkaXJ0eVJlY3Qud2lkdGgoKSwgZGlydHlS
ZWN0LmhlaWdodCgpLCBmYWxzZSkpOwotICAgIHNraWFDb250ZXh0LnNldChuZXcgUGxhdGZvcm1D
b250ZXh0U2tpYShjYW52YXMuZ2V0KCkpKTsKKyAgICAgICAgY2FsY3VsYXRlTGFyZ2VMYXllclZp
ZXdSZWN0KCZkaXJ0eVJlY3QsICZtX2xhcmdlTGF5ZXJEcmF3UmVjdCk7CisgICAgICAgIGlmICgh
bGF5ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKG1fbGFyZ2VMYXllckRyYXdSZWN0LnNp
emUoKSkpIHsKKyAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9sYXJnZUxheWVyRGlydHlSZWN0ID09IGRp
cnR5UmVjdCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRv
IGdldCB0ZXh0IHRvIHNob3cgdXAgY29ycmVjdGx5LgotICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMg
dGFrZSB1cyBkb3duIGEgdmVyeSBzbG93IHRleHQgcmVuZGVyaW5nIHBhdGg/Ci0gICAgc2tpYUNv
bnRleHQtPnNldERyYXdpbmdUb0ltYWdlQnVmZmVyKHRydWUpOworICAgICAgICBtX2xhcmdlTGF5
ZXJEaXJ0eVJlY3QgPSBkaXJ0eVJlY3Q7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBk
aXJ0eVJlY3Quc2l6ZSgpOworICAgICAgICB1cGRhdGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgw
LCAwKSwgZGlydHlSZWN0LnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSW50UmVjdCBi
b3VuZHNSZWN0KEludFBvaW50KDAsIDApLCBtX2JvdW5kcyk7CisgICAgICAgIHJlcXVpcmVkVGV4
dHVyZVNpemUgPSBtX2JvdW5kczsKKyAgICAgICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMgdG8g
YmUgcmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCisgICAgICAgIC8v
IGNvbnRlbnRzIG9mIHRoZSBsYXllci4KKyAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUg
IT0gbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSkKKyAgICAgICAgICAgIGRpcnR5UmVjdCA9IGJvdW5k
c1JlY3Q7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xpcCB0aGUgZGlydHlSZWN0
IHRvIHRoZSBzaXplIG9mIHRoZSBsYXllciB0byBhdm9pZCBkcmF3aW5nCisgICAgICAgICAgICAv
LyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZS4KKyAgICAgICAgICAg
IGRpcnR5UmVjdC5pbnRlcnNlY3QoYm91bmRzUmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgdXBk
YXRlUmVjdCA9IGRpcnR5UmVjdDsKKyAgICB9CiAKLSAgICBncmFwaGljc0NvbnRleHQuc2V0KG5l
dyBHcmFwaGljc0NvbnRleHQocmVpbnRlcnByZXRfY2FzdDxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dCo+KHNraWFDb250ZXh0LmdldCgpKSkpOworI2lmIFBMQVRGT1JNKFNLSUEpCisgICAgY29uc3Qg
U2tCaXRtYXAqIG9sZEJpdG1hcCA9IG1fc2tpYUNhbnZhcy5nZXQoKSA/ICZtX3NraWFDYW52YXMt
PmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAoZmFsc2UpIDogMDsKKyAgICBpZiAoIW9sZEJpdG1h
cCB8fCBvbGRCaXRtYXAtPndpZHRoKCkgIT0gZGlydHlSZWN0LndpZHRoKCkgfHwgb2xkQml0bWFw
LT5oZWlnaHQoKSAhPSBkaXJ0eVJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgbV9za2lhQ2FudmFz
LnNldChuZXcgc2tpYTo6UGxhdGZvcm1DYW52YXMoZGlydHlSZWN0LndpZHRoKCksIGRpcnR5UmVj
dC5oZWlnaHQoKSwgZmFsc2UpKTsKKyAgICAgICAgbV9za2lhQ29udGV4dC5zZXQobmV3IFBsYXRm
b3JtQ29udGV4dFNraWEobV9za2lhQ2FudmFzLmdldCgpKSk7CisgICAgICAgIC8vIFRoaXMgaXMg
bmVlZGVkIHRvIGdldCB0ZXh0IHRvIHNob3cgdXAgY29ycmVjdGx5LgorICAgICAgICAvLyBGSVhN
RTogRG9lcyB0aGlzIHRha2UgdXMgZG93biBhIHZlcnkgc2xvdyB0ZXh0IHJlbmRlcmluZyBwYXRo
PworICAgICAgICBtX3NraWFDb250ZXh0LT5zZXREcmF3aW5nVG9JbWFnZUJ1ZmZlcih0cnVlKTsK
KyAgICAgICAgbV9za2lhR3JhcGhpY3NDb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250ZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqPihtX3NraWFDb250ZXh0Lmdl
dCgpKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fc2tpYUNhbnZhcy0+cmVzZXRNYXRyaXgo
KTsKKyAgICB9CiAKICAgICAvLyBCcmluZyB0aGUgY2FudmFzIGludG8gdGhlIGNvb3JkaW5hdGUg
c3lzdGVtIG9mIHRoZSBwYWludCByZWN0LgotICAgIGNhbnZhcy0+dHJhbnNsYXRlKHN0YXRpY19j
YXN0PFNrU2NhbGFyPigtZGlydHlSZWN0LngoKSksIHN0YXRpY19jYXN0PFNrU2NhbGFyPigtZGly
dHlSZWN0LnkoKSkpOworICAgIG1fc2tpYUNhbnZhcy0+dHJhbnNsYXRlKHN0YXRpY19jYXN0PFNr
U2NhbGFyPigtZGlydHlSZWN0LngoKSksIHN0YXRpY19jYXN0PFNrU2NhbGFyPigtZGlydHlSZWN0
LnkoKSkpOwogCi0gICAgbV9vd25lci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmdyYXBo
aWNzQ29udGV4dCwgZGlydHlSZWN0KTsKLSAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gY2Fu
dmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKLSAgICBza2lhQml0bWFwID0g
JmJpdG1hcDsKKyAgICBtX293bmVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqbV9za2lh
R3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJlY3QpOworICAgIGNvbnN0IFNrQml0bWFwJiBiaXRtYXAg
PSBtX3NraWFDYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAoZmFsc2UpOworICAgIGNv
bnN0IFNrQml0bWFwKiBza2lhQml0bWFwID0gJmJpdG1hcDsKICAgICBBU1NFUlQoc2tpYUJpdG1h
cCk7CiAKICAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2soKnNraWFCaXRtYXApOwpAQCAtMjE1LDEy
ICsyNzEsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQog
ICAgICAgICBiaXRtYXBTaXplID0gSW50U2l6ZShza2lhQml0bWFwLT53aWR0aCgpLCBza2lhQml0
bWFwLT5oZWlnaHQoKSk7CiAgICAgfQogI2VsaWYgUExBVEZPUk0oQ0cpCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHRlbXBWZWN0b3I7CiAgICAgaW50IHJvd0J5dGVzID0gNCAqIGRpcnR5UmVjdC53aWR0
aCgpOwotICAgIHRlbXBWZWN0b3IucmVzaXplKHJvd0J5dGVzICogZGlydHlSZWN0LmhlaWdodCgp
KTsKLSAgICBtZW1zZXQodGVtcFZlY3Rvci5kYXRhKCksIDAsIHRlbXBWZWN0b3Iuc2l6ZSgpKTsK
KyAgICBtX2NnVGVtcFBpeGVsVmVjdG9yLnJlc2l6ZShyb3dCeXRlcyAqIGRpcnR5UmVjdC5oZWln
aHQoKSk7CisgICAgbWVtc2V0KG1fY2dUZW1wUGl4ZWxWZWN0b3IuZGF0YSgpLCAwLCBtX2NnVGVt
cFBpeGVsVmVjdG9yLnNpemUoKSk7CiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29s
b3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dENHKEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENy
ZWF0ZSh0ZW1wVmVjdG9yLmRhdGEoKSwKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250
ZXh0Q0coQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG1fY2dUZW1wUGl4ZWxWZWN0b3Iu
ZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlydHlSZWN0LndpZHRoKCksIGRpcnR5UmVjdC5oZWlnaHQo
KSwgOCwgcm93Qnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNwYWNlLmdldCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CkBAIC0yMzUsNyArMjkwLDcgQEAg
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogCiAgICAgbV9vd25l
ci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJlY3Qp
OwogCi0gICAgcGl4ZWxzID0gdGVtcFZlY3Rvci5kYXRhKCk7CisgICAgcGl4ZWxzID0gbV9jZ1Rl
bXBQaXhlbFZlY3Rvci5kYXRhKCk7CiAgICAgYml0bWFwU2l6ZSA9IGRpcnR5UmVjdC5zaXplKCk7
CiAjZWxzZQogI2Vycm9yICJOZWVkIHRvIGltcGxlbWVudCBmb3IgeW91ciBwbGF0Zm9ybS4iCkBA
IC0yNDYsNyArMzAxLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVu
dHMoKQogICAgICAgICB0ZXh0dXJlSWQgPSBsYXllclJlbmRlcmVyKCktPmNyZWF0ZUxheWVyVGV4
dHVyZSgpOwogCiAgICAgaWYgKHBpeGVscykKLSAgICAgICAgdXBkYXRlVGV4dHVyZVJlY3QocGl4
ZWxzLCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCAgZGlydHlSZWN0LCB0ZXh0dXJl
SWQpOworICAgICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJlcXVp
cmVkVGV4dHVyZVNpemUsIHVwZGF0ZVJlY3QsIHRleHR1cmVJZCk7CiB9CiAKIHZvaWQgQ29udGVu
dExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50
U2l6ZSYgYml0bWFwU2l6ZSwgY29uc3QgSW50U2l6ZSYgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgY29u
c3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKQpAQCAtMjcyLDcgKzMy
Nyw5IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KHZvaWQq
IHBpeGVscywgY29uc3QgSW50U2l6ZSYgYml0bWFwCiAgICAgfQogCiAgICAgbV9kaXJ0eVJlY3Qu
c2V0U2l6ZShGbG9hdFNpemUoKSk7Ci0gICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAg
Ly8gTGFyZ2UgbGF5ZXJzIGFsd2F5cyBzdGF5IGRpcnR5LCBiZWNhdXNlIHRoZXkgbmVlZCB0byB1
cGRhdGUgd2hlbiB0aGUKKyAgICAvLyBjb250ZW50IHJlY3QgY2hhbmdlcy4KKyAgICBtX2NvbnRl
bnRzRGlydHkgPSBsYXJnZUxheWVyKCk7CiB9CiAKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmRyYXcoKQpAQCAtMjg4LDkgKzM0NSwyNSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpk
cmF3KCkKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29udGVudHNUZXh0dXJlKSk7CiAgICAgbGF5ZXJSZW5kZXJl
cigpLT51c2VTaGFkZXIoc3YtPmNvbnRlbnRTaGFkZXJQcm9ncmFtKCkpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAwKSk7
Ci0gICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rp
b25NYXRyaXgoKSwgZHJhd1RyYW5zZm9ybSgpLAotICAgICAgICAgICAgICAgICAgICAgYm91bmRz
KCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAgICAg
ICAgICAgICAgICBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnNoYWRlckFscGhhTG9j
YXRpb24oKSk7CisKKyAgICBpZiAobGFyZ2VMYXllcigpKSB7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm0oKTsKKyAgICAgICAgQVNTRVJUKHRy
YW5zZm9ybS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNl
dE00MShtX2xhcmdlTGF5ZXJEcmF3UmVjdC54KCkgKworICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGFyZ2VMYXllckRyYXdSZWN0LndpZHRoKCkgLyAyKTsKKyAgICAgICAgdHJhbnNmb3JtLnNl
dE00MihtX2xhcmdlTGF5ZXJEcmF3UmVjdC55KCkgKworICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGFyZ2VMYXllckRyYXdSZWN0LmhlaWdodCgpIC8gMik7CisKKyAgICAgICAgZHJhd1RleHR1
cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0sIG1fbGFyZ2VMYXllckRyYXdSZWN0Lndp
ZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXJnZUxheWVyRHJhd1JlY3QuaGVp
Z2h0KCksIGRyYXdPcGFjaXR5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRl
ck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5w
cm9qZWN0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1RyYW5zZm9y
bSgpLCBtX2JvdW5kcy53aWR0aCgpLCBtX2JvdW5kcy5oZWlnaHQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICB9
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCA0MTJiYTA2YzY0YmY1OGUyNGE2NGEwNDIy
MDJhNWVkMzRlZDk0MmY2Li5iODcyMTFiN2ZmYTI2MGQzY2NjYjg5MDliMDM5MDc2NWQ1NDhhMjkx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC04MSwxMSArODEsMjQgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWdu
ZWQgdGV4dHVyZUlkKTsKIAogICAgIHZvaWQgY2xlYW51cFJlc291cmNlcygpOworICAgIGJvb2wg
bGFyZ2VMYXllcigpIGNvbnN0OworICAgIHZvaWQgY2FsY3VsYXRlTGFyZ2VMYXllclZpZXdSZWN0
KEludFJlY3QqIGRpcnR5UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRSZWN0KiBkcmF3UmVjdCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX2NvbnRlbnRzVGV4
dHVyZTsKICAgICBJbnRTaXplIG1fYWxsb2NhdGVkVGV4dHVyZVNpemU7CiAgICAgYm9vbCBtX3Nr
aXBzRHJhdzsKLQorICAgIEludFJlY3QgbV9sYXJnZUxheWVyRHJhd1JlY3Q7CisgICAgSW50UmVj
dCBtX2xhcmdlTGF5ZXJEaXJ0eVJlY3Q7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oU0tJQSkK
KyAgICBPd25QdHI8c2tpYTo6UGxhdGZvcm1DYW52YXM+IG1fc2tpYUNhbnZhczsKKyAgICBPd25Q
dHI8UGxhdGZvcm1Db250ZXh0U2tpYT4gbV9za2lhQ29udGV4dDsKKyAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBtX3NraWFHcmFwaGljc0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShDRykKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9jZ1RlbXBQaXhlbFZlY3RvcjsKKyNlbmRpZgogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IGM5N2JlODJmMjEzMmU1ZGQyY2RkM2FmZDIxYzVjNDc0MzAw
ZmUwNzEuLjRlZTU4ZjExM2NhNmM1ZmFhNzQwN2RlZDE0MmQyNTc2Y2RmMjdhZGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTc1LDYgKzc1LDE0IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cygpCiB7CiAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7CiAKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50
ZWQuCisgICAgaWYgKGxhcmdlTGF5ZXIoKSkgeworICAgICAgICAvLyBVc2UgdGhlIGJhc2UgdmVy
c2lvbiBvZiB1cGRhdGVDb250ZW50cyB3aGljaCBkcmF3cyBhIHN1YnNldCBvZiB0aGUKKyAgICAg
ICAgLy8gaW1hZ2UgdG8gYSBjYW52YXMsIGFzIHRoZSBwaXhlbCBjb250ZW50cyBjYW4ndCBiZSB1
cGxvYWRlZCBkaXJlY3RseS4KKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB2b2lkKiBwaXhlbHMgPSAw
OwogICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIGJpdG1hcFNp
emU7CkBAIC0xMzYsMTIgKzE0NCw2IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVD
b250ZW50cygpCiAjZWxzZQogI2Vycm9yICJOZWVkIHRvIGltcGxlbWVudCBmb3IgeW91ciBwbGF0
Zm9ybS4iCiAjZW5kaWYKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVk
IGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCi0gICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKLSAgICBp
ZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShyZXF1aXJlZFRleHR1cmVTaXpl
KSkgewotICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBtX2NvbnRlbnRzVGV4dHVyZTsKICAgICBpZiAo
IXRleHR1cmVJZCkKQEAgLTE1Miw3ICsxNTQsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29udGVudHMoKQogICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoSW50UmVjdChJbnRQb2lu
dCgwLCAwKSwgYml0bWFwU2l6ZSkpOwogCiAgICAgaWYgKHBpeGVscykKLSAgICAgICAgdXBkYXRl
VGV4dHVyZVJlY3QocGl4ZWxzLCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCAgZGly
dHlSZWN0LCB0ZXh0dXJlSWQpOworICAgICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJp
dG1hcFNpemUsIHJlcXVpcmVkVGV4dHVyZVNpemUsIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGM0MDMxZTU1YjQzYmY2NTc2ZTRhYzA3
YzljMGZmZjU2MTlmNmU3YmQuLjhiZjY2MWFkMjA0NzI5MTFiNDk3YWZmMmYxNDczNzU5YjhiNzUx
MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTMwMiw4ICszMDIsOSBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgY29uc3QgSW50UmVjdAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVf
TUlOVVNfU1JDX0FMUEhBKSk7CiAKLSAgICAvLyBTZXQgdGhlIHJvb3RWaXNpYmxlUmVjdCAtLS0g
dXNlZCBieSBzdWJzZXF1ZW50IGRyYXdMYXllcnMgY2FsbHMKKyAgICAvLyBTZXQgdGhlIHJvb3Qg
dmlzaWJsZS9jb250ZW50IHJlY3RzIC0tLSB1c2VkIGJ5IHN1YnNlcXVlbnQgZHJhd0xheWVycyBj
YWxscy4KICAgICBtX3Jvb3RWaXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OworICAgIG1fcm9vdENv
bnRlbnRSZWN0ID0gY29udGVudFJlY3Q7CiAKICAgICAvLyBUcmF2ZXJzZSB0aGUgbGF5ZXIgdHJl
ZSBhbmQgdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm1zLgogICAgIGZsb2F0IG9wYWNpdHkgPSAx
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYjcxNDU4NGY1ZTU3MTlhYzRlODk2ODk2NTUyZDQy
MDg0Nzc0NDU2ZS4uOTUzMzhkZWRjZTcwY2IwYTg2Njc5Nzk4MzAwNzlhZTMyM2EyNjc3YyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVzaXplT25zY3JlZW5Db250ZW50KGNvbnN0IEludFNpemUmKTsKIAogICAgIEludFNpemUgcm9v
dExheWVyVGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcm9vdExheWVyVGV4
dHVyZVdpZHRoLCBtX3Jvb3RMYXllclRleHR1cmVIZWlnaHQpOyB9CisgICAgSW50UmVjdCByb290
TGF5ZXJDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENvbnRlbnRSZWN0OyB9CiAg
ICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3Qm
IHJlY3QpOwogCiBwcml2YXRlOgpAQCAtMTYwLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgSW50
U2l6ZSBtX3Jvb3RMYXllckNhbnZhc1NpemU7CiAKICAgICBJbnRSZWN0IG1fcm9vdFZpc2libGVS
ZWN0OworICAgIEludFJlY3QgbV9yb290Q29udGVudFJlY3Q7CiAKICAgICBpbnQgbV9tYXhUZXh0
dXJlU2l6ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70173</attachid>
            <date>2010-10-07 16:54:20 -0700</date>
            <delta_ts>2010-10-07 21:57:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101007165419.patch</filename>
            <type>text/plain</type>
            <size>17600</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMWJhZjRmNjIwZTM3ODAzNmYwMzcxMTUyN2JhYzg1Y2M1NmVlNjljLi44MzEyMTc4
YWRiYTM1MTA5MDk2NTc5MWJmMWY2YzlmNTg1NGVlOTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA1ICBUb255IENo
YW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcg
Y2hyb21pdW0gbGludXggYmFzZWxpbmVzIGFmdGVyIGxhbmRpbmcgcjY5MTI2CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjdkZTQyNjRhYWFiNTgxNWJhNDM0ZmJlYTMzNjRlMjI5OGYx
OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1
Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGUgeWVsbG93IGJv
eCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4gVGhlcmUg
c2hvdWxkIGJlIGEgcmVkIGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveCBuZWFy
IHRoZSBib3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBjYW4gc3Vw
cG9ydCB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgorCisKKyhHcmFwaGljc0xh
eWVyCisgIChib3VuZHMgNzg1LjAwIDIwMTE5LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAyMDExOS4wMCkKKyAgICAgIChjaGlsZHJl
biAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgNzIu
MDApCisgICAgICAgICAgKGJvdW5kcyA1MDAuMDAgMjAwMDAuMDApCisgICAgICAgICkKKyAgICAg
ICkKKyAgICApCisgICkKKykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Rp
bGluZy9odWdlLWxheWVyLWltZy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5n
L2h1Z2UtbGF5ZXItaW1nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiYTkwMjY4OTI1N2JlODI0OGNiNGU0
MzdiYzcwOTkzNDM3YWE5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UZXN0IG9mIHZlcnkgbGFyZ2Ug
aW1hZ2UgbGF5ZXI8L3RpdGxlPgorCisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KKyAgICAjY29udGFpbmVyIHsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5z
bGF0ZVooMCk7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
KyAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IDUwMDsKKyAgICAgICAgICAgIGNhbnZhcy5oZWln
aHQgPSAyMDAwMDsKKyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
JzJkJyk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJ5ZWxsb3ciOworICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoNTAsIDUwLCAyMDAsIDIwMCk7CisgICAgICAgICAgICBjb250ZXh0LmZp
bGxTdHlsZSA9ICJibHVlIjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoNTAsIGNhbnZh
cy5oZWlnaHQgLSAyNTAsIDIwMCwgMjAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb250YWluZXIiKS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7CisKKyAgICAgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxheW91dFRlc3RDb250cm9s
bGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IHRlc3RPbkxvYWQsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4K
KyAgICAgIDxwPgorICAgICAgICBUaGUgeWVsbG93IGJveCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdo
IHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4KKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgcmVk
IGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveAorICAgICAgICBuZWFyIHRoZSBi
b3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBjYW4gc3VwcG9ydAor
ICAgICAgICB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgorICAgICAgPC9wPgor
ICAgICAgICA8aW1nIGlkPSJjb250YWluZXIiPgorICAgICAgICA8cHJlIGlkPSJsYXllcnMiPkxh
eWVyIHRyZWUgYXBwZWFycyBoZXJlIGluIERSVC48L3ByZT4KKyAgPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCmluZGV4IDliYWRhMTVlNzYzNjNjMjMwZTVh
N2Q0ZTBjMjc3YmY3Y2Q4NDVjYjYuLmE2NDg0ZmMwMGE4NzgwMmUxNWJlZWFmMjlkNzBhYmE3Yjgy
MGVkNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKQEAgLTc4LDYgKzc4LDcg
QEAgY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItcmVzaXplLmh0bWwKIGNvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwKIGNvbXBv
c2l0aW5nL3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4uaHRtbAogY29tcG9z
aXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIuaHRtbAorY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5
ZXItaW1nLmh0bWwKIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sCiAKICMgVW5j
YXRlZ29yaXplZCBlZGl0aW5nIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkZjE5YjQyNDZkODQ2ZmE4NjlmNDk3MGNiZjMx
MDIwM2E3YzY4NmIuLjZhYTcxZjEyYWRlNjA0ZDQ4ZmM5YjY5ZmU0NDNlZjk2N2MwNjg1ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBzaG9ydC10ZXJtIHNvbHV0aW9uIGZvciBsYXJnZSBsYXllcnMuICBMYXllcnMgdGhhdCBhcmUg
dG9vCisgICAgICAgIGxhcmdlIHRvIGJlIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSB0ZXh0dXJlIGp1
c3QgdXBsb2FkIHRoZSBwb3J0aW9uIG9mCisgICAgICAgIHRoZSBsYXllciB0aGF0IGlzIHdpdGhp
biB0aGUgY29udGVudCByZWN0LiAgQSBsb25nZXItdGVybSBzb2x1dGlvbgorICAgICAgICBpcyBz
dGlsbCB0aWxpbmcgd2l0aCBwcm9wZXIgbWVtb3J5IG1hbmFnZW1lbnQuICBMYXllcnMgdGhhdCBo
YXZlIGZ1bGwKKyAgICAgICAgM0QgdHJhbnNmb3JtcyAobW9yZSB0aGFuIGp1c3QgdHJhbnNsYXRp
b25zKSBhcmUgc3RpbGwgbm90IGRyYXduLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcwMTYKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy90aWxp
bmcKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6bGFyZ2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y2FsY3VsYXRlTGFyZ2VMYXllclZpZXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyb290TGF5ZXJDb250ZW50UmVjdCk6CisK
IDIwMTAtMTAtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhkZGE0ZDZjNWVlZjg3MzJh
ZmQ3ZTdlNGUyMWI3MmI4MWQxOTZjMjQuLjQwZTZkYTExMTBjZWMzYzdhMjZiOTc4MWVhMTkzNDk3
MDhlYTJmZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjEsNiArMTIxLDEwIEBAIFBh
c3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVh
dGUoR3JhcGhpY3NMYXllckNocm9tCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21p
dW0ob3duZXIpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZSgwKQorICAgICwgbV9hbGxvY2F0ZWRU
ZXh0dXJlU2l6ZSgwLCAwKQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCisgICAgLCBtX2xhcmdl
TGF5ZXJEcmF3UmVjdCgwLCAwLCAwLCAwKQorICAgICwgbV9sYXJnZUxheWVyRGlydHlSZWN0KDAs
IDAsIDAsIDApCiB7CiB9CiAKQEAgLTE0OSw2ICsxNTMsNDMgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgfQogfQogCitib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpsYXJnZUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWxheWVyUmVuZGVy
ZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcyk7Cit9CisKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OmNhbGN1bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdChJbnRSZWN0KiBkaXJ0eVJlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50UmVjdCogZHJhd1JlY3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRpcnR5UmVjdCk7CisgICAg
QVNTRVJUKGRyYXdSZWN0KTsKKworICAgIC8vIEZvciB0aGUgZ2l2ZW4gbGF5ZXIgc2l6ZSBhbmQg
Y29udGVudCByZWN0LCBjYWxjdWxhdGU6CisgICAgLy8gMSkgVGhlIG1pbmltYWwgdGV4dHVyZSBz
cGFjZSByZWN0YW5nbGUgdG8gYmUgdXBsb2FkZWQsIHJldHVybmVkIGluCisgICAgLy8gZGlydHlS
ZWN0LgorICAgIC8vIDIpIFRoZSBjb250ZW50IHJlY3QtcmVsYXRpdmUgcmVjdGFuZ2xlIHRvIGRy
YXcgdGhpcyB0ZXh0dXJlIGluLCByZXR1cm5lZAorICAgIC8vIGluIGRyYXdSZWN0LgorCisgICAg
Y29uc3QgSW50UmVjdCBjb250ZW50UmVjdCA9IGxheWVyUmVuZGVyZXIoKS0+cm9vdExheWVyQ29u
dGVudFJlY3QoKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtID0g
ZHJhd1RyYW5zZm9ybSgpOworICAgIC8vIFRoZSBsYXllcidzIGRyYXcgdHJhbnNmb3JtIHBvaW50
cyB0byB0aGUgY2VudGVyIG9mIHRoZSBsYXllciwgcmVsYXRpdmUgdG8KKyAgICAvLyB0aGUgY29u
dGVudCByZWN0LiAgbGF5ZXJQb3MgaXMgdGhlIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBsZWZ0IG9m
IHRoZQorICAgIC8vIGNvbnRlbnQgcmVjdCB0byB0aGUgdG9wIGxlZnQgb2YgdGhlIGxheWVyLgor
ICAgIGNvbnN0IEludFNpemUgbGF5ZXJQb3ModHJhbnNmb3JtLm00MSgpIC0gbV9ib3VuZHMud2lk
dGgoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0ubTQyKCkgLSBt
X2JvdW5kcy5oZWlnaHQoKSAvIDIpOworICAgIC8vIFRyYW5zZm9ybSB0aGUgY29udGVudFJlY3Qg
aW50byB0aGUgc3BhY2Ugb2YgdGhlIGxheWVyLgorICAgIEludFJlY3QgY29udGVudFJlY3RJbkxh
eWVyU3BhY2UoSW50UG9pbnQoMCwgMCkgLSBsYXllclBvcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LnNpemUoKSk7CisKKyAgICAvLyBDbGlwIHRoZSBl
bnRpcmUgbGF5ZXIgYWdhaW5zdCB0aGUgdmlzaWJsZSByZWdpb24gaW4gdGhlIGNvbnRlbnQgcmVj
dAorICAgIC8vIGFuZCB1c2UgdGhhdCBhcyB0aGUgZHJhd2FibGUgdGV4dHVyZSwgaW5zdGVhZCBv
ZiB0aGUgZW50aXJlIGxheWVyLgorICAgICpkaXJ0eVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAs
IDApLCBtX2JvdW5kcyk7CisgICAgZGlydHlSZWN0LT5pbnRlcnNlY3QoY29udGVudFJlY3RJbkxh
eWVyU3BhY2UpOworCisgICAgLy8gVGhlIGRyYXcgcG9zaXRpb24gaXMgcmVsYXRpdmUgdG8gdGhl
IGNvbnRlbnQgcmVjdC4KKyAgICAqZHJhd1JlY3QgPSBJbnRSZWN0KGRpcnR5UmVjdC0+bG9jYXRp
b24oKSArIGxheWVyUG9zLCBkaXJ0eVJlY3QtPnNpemUoKSk7Cit9CisKIHZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIHsKICAgICBSZW5kZXJMYXllckJhY2tpbmcq
IGJhY2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGll
bnQoKSk7CkBAIC0xNTksMjkgKzIwMCw0NyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cygpCiAKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKIAotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRl
ZC4KLSAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlmICghbGF5ZXJSZW5kZXJlcigpLT5j
aGVja1RleHR1cmVTaXplKG1fYm91bmRzKSkgewotICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2b2lkKiBwaXhlbHMgPSAwOwotICAgIElu
dFJlY3QgZGlydHlSZWN0KG1fZGlydHlSZWN0KTsKKyAgICBJbnRSZWN0IGRpcnR5UmVjdDsKKyAg
ICBJbnRSZWN0IHVwZGF0ZVJlY3Q7CiAgICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplOwog
ICAgIEludFNpemUgYml0bWFwU2l6ZTsKIAotICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBtX2Jv
dW5kczsKLSAgICBJbnRSZWN0IGJvdW5kc1JlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsK
LQotICAgIC8vIElmIHRoZSB0ZXh0dXJlIG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2Ug
bXVzdCByZWRyYXcgdGhlIGVudGlyZQotICAgIC8vIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KLSAg
ICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZSAhPSBtX2FsbG9jYXRlZFRleHR1cmVTaXplKQotICAg
ICAgICBkaXJ0eVJlY3QgPSBib3VuZHNSZWN0OwotICAgIGVsc2UgewotICAgICAgICAvLyBDbGlw
IHRoZSBkaXJ0eVJlY3QgdG8gdGhlIHNpemUgb2YgdGhlIGxheWVyIHRvIGF2b2lkIGRyYXdpbmcg
b3V0c2lkZQotICAgICAgICAvLyB0aGUgYm91bmRzIG9mIHRoZSBiYWNraW5nIHRleHR1cmUuCi0g
ICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoYm91bmRzUmVjdCk7CisgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgorICAgIGlm
IChsYXJnZUxheWVyKCkpIHsKKyAgICAgICAgLy8gQSBsYXllciB3aXRoIDNEIHRyYW5zZm9ybXMg
Y291bGQgcmVxdWlyZSBhbiBhcmJpdHJhcmlseSBsYXJnZSBudW1iZXIKKyAgICAgICAgLy8gb2Yg
dGV4ZWxzIHRvIGJlIHJlcGFpbnRlZCwgc28gaWdub3JlIHRoZXNlIGxheWVycyB1bnRpbCB0aWxp
bmcgaXMKKyAgICAgICAgLy8gaW1wbGVtZW50ZWQuCisgICAgICAgIGlmICghZHJhd1RyYW5zZm9y
bSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKKyAgICAgICAgICAgIG1fc2tpcHNEcmF3
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGN1
bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdCgmZGlydHlSZWN0LCAmbV9sYXJnZUxheWVyRHJhd1JlY3Qp
OworICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2xhcmdl
TGF5ZXJEcmF3UmVjdC5zaXplKCkpKSB7CisgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fbGFyZ2VMYXll
ckRpcnR5UmVjdCA9PSBkaXJ0eVJlY3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bV9sYXJnZUxheWVyRGlydHlSZWN0ID0gZGlydHlSZWN0OworICAgICAgICByZXF1aXJlZFRleHR1
cmVTaXplID0gZGlydHlSZWN0LnNpemUoKTsKKyAgICAgICAgdXBkYXRlUmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoMCwgMCksIGRpcnR5UmVjdC5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGRpcnR5UmVjdCA9IEludFJlY3QobV9kaXJ0eVJlY3QpOworICAgICAgICBJbnRSZWN0IGJvdW5k
c1JlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsKKyAgICAgICAgcmVxdWlyZWRUZXh0dXJl
U2l6ZSA9IG1fYm91bmRzOworICAgICAgICAvLyBJZiB0aGUgdGV4dHVyZSBuZWVkcyB0byBiZSBy
ZWFsbG9jYXRlZCB0aGVuIHdlIG11c3QgcmVkcmF3IHRoZSBlbnRpcmUKKyAgICAgICAgLy8gY29u
dGVudHMgb2YgdGhlIGxheWVyLgorICAgICAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZSAhPSBt
X2FsbG9jYXRlZFRleHR1cmVTaXplKQorICAgICAgICAgICAgZGlydHlSZWN0ID0gYm91bmRzUmVj
dDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBDbGlwIHRoZSBkaXJ0eVJlY3QgdG8g
dGhlIHNpemUgb2YgdGhlIGxheWVyIHRvIGF2b2lkIGRyYXdpbmcKKyAgICAgICAgICAgIC8vIG91
dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgYmFja2luZyB0ZXh0dXJlLgorICAgICAgICAgICAgZGly
dHlSZWN0LmludGVyc2VjdChib3VuZHNSZWN0KTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVS
ZWN0ID0gZGlydHlSZWN0OwogICAgIH0KIAogI2lmIFBMQVRGT1JNKFNLSUEpCkBAIC0yNDYsNyAr
MzA1LDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogICAg
ICAgICB0ZXh0dXJlSWQgPSBsYXllclJlbmRlcmVyKCktPmNyZWF0ZUxheWVyVGV4dHVyZSgpOwog
CiAgICAgaWYgKHBpeGVscykKLSAgICAgICAgdXBkYXRlVGV4dHVyZVJlY3QocGl4ZWxzLCBiaXRt
YXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCAgZGlydHlSZWN0LCB0ZXh0dXJlSWQpOworICAg
ICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJlcXVpcmVkVGV4dHVy
ZVNpemUsIHVwZGF0ZVJlY3QsIHRleHR1cmVJZCk7CiB9CiAKIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50U2l6ZSYgYml0
bWFwU2l6ZSwgY29uc3QgSW50U2l6ZSYgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgY29uc3QgSW50UmVj
dCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKQpAQCAtMjcyLDcgKzMzMSw5IEBAIHZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KHZvaWQqIHBpeGVscywg
Y29uc3QgSW50U2l6ZSYgYml0bWFwCiAgICAgfQogCiAgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShG
bG9hdFNpemUoKSk7Ci0gICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAgLy8gTGFyZ2Ug
bGF5ZXJzIGFsd2F5cyBzdGF5IGRpcnR5LCBiZWNhdXNlIHRoZXkgbmVlZCB0byB1cGRhdGUgd2hl
biB0aGUKKyAgICAvLyBjb250ZW50IHJlY3QgY2hhbmdlcy4KKyAgICBtX2NvbnRlbnRzRGlydHkg
PSBsYXJnZUxheWVyKCk7CiB9CiAKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXcoKQpA
QCAtMjg4LDkgKzM0OSwyMiBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KCkKICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fY29udGVudHNUZXh0dXJlKSk7CiAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VT
aGFkZXIoc3YtPmNvbnRlbnRTaGFkZXJQcm9ncmFtKCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT51bmlmb3JtMWkoc3YtPnNoYWRlclNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgZHJh
d1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgo
KSwgZHJhd1RyYW5zZm9ybSgpLAotICAgICAgICAgICAgICAgICAgICAgYm91bmRzKCkud2lkdGgo
KSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCi0gICAgICAgICAgICAgICAgICAg
ICBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7
CisKKyAgICBpZiAobGFyZ2VMYXllcigpKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm0oKTsKKyAgICAgICAgQVNTRVJUKHRyYW5zZm9ybS5p
c0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNldE00MShtX2xh
cmdlTGF5ZXJEcmF3UmVjdC5jZW50ZXIoKS54KCkpOworICAgICAgICB0cmFuc2Zvcm0uc2V0TTQy
KG1fbGFyZ2VMYXllckRyYXdSZWN0LmNlbnRlcigpLnkoKSk7CisgICAgICAgIGRyYXdUZXh0dXJl
ZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLCBtX2xhcmdlTGF5ZXJEcmF3UmVjdC53aWR0
aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFyZ2VMYXllckRyYXdSZWN0LmhlaWdo
dCgpLCBkcmF3T3BhY2l0eSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJN
YXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJv
amVjdGlvbk1hdHJpeCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0o
KSwgbV9ib3VuZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd09wYWNpdHkoKSwgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgfQog
fQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggNDEyYmEwNmM2NGJmNThlMjRhNjRhMDQyMjAy
YTVlZDM0ZWQ5NDJmNi4uYjQ4MmZiMDUyMTUxOTQ3NWQyYmJhZWE5M2ZlNjMwMGEyYTVkYzlkMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uaApAQCAtODEsMTEgKzgxLDE1IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCk7CiAKICAgICB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKKyAgICBib29sIGxh
cmdlTGF5ZXIoKSBjb25zdDsKKyAgICB2b2lkIGNhbGN1bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdChJ
bnRSZWN0KiBkaXJ0eVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW50UmVjdCogZHJhd1JlY3QpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV9jb250ZW50c1RleHR1
cmU7CiAgICAgSW50U2l6ZSBtX2FsbG9jYXRlZFRleHR1cmVTaXplOwogICAgIGJvb2wgbV9za2lw
c0RyYXc7Ci0KKyAgICBJbnRSZWN0IG1fbGFyZ2VMYXllckRyYXdSZWN0OworICAgIEludFJlY3Qg
bV9sYXJnZUxheWVyRGlydHlSZWN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGM5
N2JlODJmMjEzMmU1ZGQyY2RkM2FmZDIxYzVjNDc0MzAwZmUwNzEuLjllYzVlOGEzZDFhZWYxNzc4
NTdhYmEwMjFmZTdiZjlhMTE4NDQ0ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc1LDYgKzc1
LDE0IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiB7CiAgICAg
QVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVz
dCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisgICAgaWYgKGxhcmdlTGF5ZXIo
KSkgeworICAgICAgICAvLyBVc2UgdGhlIGJhc2UgdmVyc2lvbiBvZiB1cGRhdGVDb250ZW50cyB3
aGljaCBkcmF3cyBhIHN1YnNldCBvZiB0aGUKKyAgICAgICAgLy8gaW1hZ2UgdG8gYSBiaXRtYXAs
IGFzIHRoZSBwaXhlbCBjb250ZW50cyBjYW4ndCBiZSB1cGxvYWRlZCBkaXJlY3RseS4KKyAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICB2b2lkKiBwaXhlbHMgPSAwOwogICAgIEludFNpemUgcmVxdWlyZWRU
ZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemU7CkBAIC0xMzYsMTIgKzE0NCw2IEBA
IHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAjZWxzZQogI2Vycm9y
ICJOZWVkIHRvIGltcGxlbWVudCBmb3IgeW91ciBwbGF0Zm9ybS4iCiAjZW5kaWYKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQu
Ci0gICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKLSAgICBpZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hl
Y2tUZXh0dXJlU2l6ZShyZXF1aXJlZFRleHR1cmVTaXplKSkgewotICAgICAgICBtX3NraXBzRHJh
dyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJl
SWQgPSBtX2NvbnRlbnRzVGV4dHVyZTsKICAgICBpZiAoIXRleHR1cmVJZCkKQEAgLTE1Miw3ICsx
NTQsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogICAgIGRp
cnR5UmVjdC5pbnRlcnNlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgYml0bWFwU2l6ZSkpOwog
CiAgICAgaWYgKHBpeGVscykKLSAgICAgICAgdXBkYXRlVGV4dHVyZVJlY3QocGl4ZWxzLCBiaXRt
YXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCAgZGlydHlSZWN0LCB0ZXh0dXJlSWQpOworICAg
ICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJlcXVpcmVkVGV4dHVy
ZVNpemUsIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IGM0MDMxZTU1YjQzYmY2NTc2ZTRhYzA3YzljMGZmZjU2MTlmNmU3YmQuLjhiZjY2
MWFkMjA0NzI5MTFiNDk3YWZmMmYxNDczNzU5YjhiNzUxMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTMwMiw4ICszMDIsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdAogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4
dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiAKLSAg
ICAvLyBTZXQgdGhlIHJvb3RWaXNpYmxlUmVjdCAtLS0gdXNlZCBieSBzdWJzZXF1ZW50IGRyYXdM
YXllcnMgY2FsbHMKKyAgICAvLyBTZXQgdGhlIHJvb3QgdmlzaWJsZS9jb250ZW50IHJlY3RzIC0t
LSB1c2VkIGJ5IHN1YnNlcXVlbnQgZHJhd0xheWVycyBjYWxscy4KICAgICBtX3Jvb3RWaXNpYmxl
UmVjdCA9IHZpc2libGVSZWN0OworICAgIG1fcm9vdENvbnRlbnRSZWN0ID0gY29udGVudFJlY3Q7
CiAKICAgICAvLyBUcmF2ZXJzZSB0aGUgbGF5ZXIgdHJlZSBhbmQgdXBkYXRlIHRoZSBsYXllciB0
cmFuc2Zvcm1zLgogICAgIGZsb2F0IG9wYWNpdHkgPSAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggYjcxNDU4NGY1ZTU3MTlhYzRlODk2ODk2NTUyZDQyMDg0Nzc0NDU2ZS4uOTUzMzhkZWRjZTcw
Y2IwYTg2Njc5Nzk4MzAwNzlhZTMyM2EyNjc3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0x
MDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzaXplT25zY3JlZW5Db250ZW50KGNv
bnN0IEludFNpemUmKTsKIAogICAgIEludFNpemUgcm9vdExheWVyVGV4dHVyZVNpemUoKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKG1fcm9vdExheWVyVGV4dHVyZVdpZHRoLCBtX3Jvb3RMYXllclRl
eHR1cmVIZWlnaHQpOyB9CisgICAgSW50UmVjdCByb290TGF5ZXJDb250ZW50UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdENvbnRlbnRSZWN0OyB9CiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBp
eGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpOwogCiBwcml2YXRlOgpAQCAt
MTYwLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3Jvb3RMYXllckNhbnZhc1Np
emU7CiAKICAgICBJbnRSZWN0IG1fcm9vdFZpc2libGVSZWN0OworICAgIEludFJlY3QgbV9yb290
Q29udGVudFJlY3Q7CiAKICAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70201</attachid>
            <date>2010-10-07 21:57:22 -0700</date>
            <delta_ts>2010-10-10 09:56:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101007215721.patch</filename>
            <type>text/plain</type>
            <size>17242</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMjQyZjNkZGVhODdkMjE4NDg3ZjRlZmVlMWQ0YTYyNTVmNDgxNWM1Li4yZDcyNmJj
Y2NiMjYwNGVmMzNlYzgwZWQwNTNlNmMwMGU4Yjg1NjgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMDUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA3ICBBbGJlcnQg
Si4gV29uZyAgPGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hy
b21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGls
aW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI3ZGU0MjY0
YWFhYjU4MTViYTQzNGZiZWEzMzY0ZTIyOThmMTk2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNyBAQAorVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBz
Y3JvbGwgb2ZmIHRoZSBib3R0b20uIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZp
cnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94
LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQgdmVyeSBsYXJnZSBjb21wb3NpdGVkIGlt
YWdlIGxheWVycy4KKworCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAyMDExOS4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUu
MDAgMjAxMTkuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDcyLjAwKQorICAgICAgICAgIChib3VuZHMgNTAwLjAw
IDIwMDAwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAyYmE5MDI2ODkyNTdiZTgyNDhjYjRlNDM3YmM3MDk5MzQzN2FhOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRt
bApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8dGl0bGU+VGVzdCBvZiB2ZXJ5IGxhcmdlIGltYWdlIGxheWVyPC90aXRsZT4KKworICAgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgI2NvbnRhaW5lciB7Cisg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOworICAgIH0KKyAgICA8L3N0eWxl
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RPbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgICAgICBjYW52YXMud2lkdGggPSA1
MDA7CisgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMjAwMDA7CisgICAgICAgICAgICB2YXIg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgICAgICAgICAgY29udGV4dC5m
aWxsU3R5bGUgPSAieWVsbG93IjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gInJlZCI7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwLCA1MCwgMjAwLCAy
MDApOworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAiYmx1ZSI7CisgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KDUwLCBjYW52YXMuaGVpZ2h0IC0gMjUwLCAyMDAsIDIwMCk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikuc3JjID0gY2Fu
dmFzLnRvRGF0YVVSTCgpOworCisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0ZXN0T25Mb2FkLCBmYWxzZSk7CisgICAgPC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgICA8cD4KKyAgICAgICAgVGhlIHllbGxv
dyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBzY3JvbGwgb2ZmIHRoZSBib3R0b20uCisg
ICAgICAgIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZpcnN0IHBhZ2UgYW5kIGEg
Ymx1ZSBib3gKKyAgICAgICAgbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94LiBUaGlz
IHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQKKyAgICAgICAgdmVyeSBsYXJnZSBjb21wb3NpdGVk
IGltYWdlIGxheWVycy4KKyAgICAgIDwvcD4KKyAgICAgICAgPGltZyBpZD0iY29udGFpbmVyIj4K
KyAgICAgICAgPHByZSBpZD0ibGF5ZXJzIj5MYXllciB0cmVlIGFwcGVhcnMgaGVyZSBpbiBEUlQu
PC9wcmU+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBl
ZAppbmRleCA4MThiYzliOGM1ZTY5ZjM1YjJiMzYzYjgxOTExMDFjYzczODJlYWM3Li5hYTUyZDY4
YzkzZDM0MjA2ZWRiNmU1ZTM5MWQ5YTM0NGM1NmUyNWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9Ta2lwcGVkCkBAIC03OCw2ICs3OCw3IEBAIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxh
eWVyLXJlc2l6ZS5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVy
LWNoaWxkcmVuLXJlc2l6ZS5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRo
LWxheWVyLWNoaWxkcmVuLmh0bWwKIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwK
K2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCiBjb21wb3NpdGluZy92aWRl
by92aWRlby1wb3N0ZXIuaHRtbAogCiAjIFVuY2F0ZWdvcml6ZWQgZWRpdGluZyBmYWlsdXJlcwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWM3YmRmYWRlNzBlMDdhZWViZGI5OGM1Y2ZjYWIwNDJjZDIzZDQ4Li5mNTNiZTIxODMyZDliNzll
ZjgyODYyNDUyYzNkYmMxNzUzM2MyMjMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTEwLTA1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2hvcnQtdGVybSBzb2x1dGlvbiBmb3IgbGFy
Z2UgbGF5ZXJzLiAgTGF5ZXJzIHRoYXQgYXJlIHRvbworICAgICAgICBsYXJnZSB0byBiZSBjb250
YWluZWQgaW4gYSBzaW5nbGUgdGV4dHVyZSBqdXN0IHVwbG9hZCB0aGUgcG9ydGlvbiBvZgorICAg
ICAgICB0aGUgbGF5ZXIgdGhhdCBpcyB3aXRoaW4gdGhlIGNvbnRlbnQgcmVjdC4gIEEgbG9uZ2Vy
LXRlcm0gc29sdXRpb24KKyAgICAgICAgaXMgc3RpbGwgdGlsaW5nIHdpdGggcHJvcGVyIG1lbW9y
eSBtYW5hZ2VtZW50LiAgTGF5ZXJzIHRoYXQgaGF2ZSBmdWxsCisgICAgICAgIDNEIHRyYW5zZm9y
bXMgKG1vcmUgdGhhbiBqdXN0IHRyYW5zbGF0aW9ucykgYXJlIHN0aWxsIG5vdCBkcmF3bi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAg
ICAgICAgVGVzdDogY29tcG9zaXRpbmcvdGlsaW5nCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmxhcmdlTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNhbGN1bGF0ZUxhcmdlTGF5ZXJWaWV3UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRl
bnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cm9vdExheWVyQ29udGVudFJlY3QpOgorCiAyMDEwLTEwLTA1ICBEaWVnbyBHb256YWxleiAg
PGRpZWdvaGNnQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjBhMmQ3MGIyMGUwODk2NDJkNjgzZDQyNzgz
MGNmY2ZhZDBlMDU5NS4uYjkwMDcyZWMyZmQzY2Q5NDQ5Mzk3ODUxMTljMWQ4ZjQ0NDU5ZGNmZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEyNCw2ICsxMjQsMTAgQEAgUGFzc1JlZlB0cjxD
b250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGlj
c0xheWVyQ2hyb20KIENvbnRlbnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJDaHJvbWl1bShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikK
ICAgICAsIG1fY29udGVudHNUZXh0dXJlKDApCisgICAgLCBtX2FsbG9jYXRlZFRleHR1cmVTaXpl
KDAsIDApCisgICAgLCBtX3NraXBzRHJhdyhmYWxzZSkKKyAgICAsIG1fbGFyZ2VMYXllckRyYXdS
ZWN0KDAsIDAsIDAsIDApCisgICAgLCBtX2xhcmdlTGF5ZXJEaXJ0eVJlY3QoMCwgMCwgMCwgMCkK
IHsKIH0KIApAQCAtMTQyLDYgKzE0Niw0MyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKCkKICAgICB9CiB9CiAKK2Jvb2wgQ29udGVudExheWVyQ2hyb21pdW06
OmxhcmdlTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiAhbGF5ZXJSZW5kZXJlcigpLT5jaGVj
a1RleHR1cmVTaXplKG1fYm91bmRzKTsKK30KKwordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y2FsY3VsYXRlTGFyZ2VMYXllclZpZXdSZWN0KEludFJlY3QqIGRpcnR5UmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KiBk
cmF3UmVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGlydHlSZWN0KTsKKyAgICBBU1NFUlQoZHJh
d1JlY3QpOworCisgICAgLy8gRm9yIHRoZSBnaXZlbiBsYXllciBzaXplIGFuZCBjb250ZW50IHJl
Y3QsIGNhbGN1bGF0ZToKKyAgICAvLyAxKSBUaGUgbWluaW1hbCB0ZXh0dXJlIHNwYWNlIHJlY3Rh
bmdsZSB0byBiZSB1cGxvYWRlZCwgcmV0dXJuZWQgaW4KKyAgICAvLyBkaXJ0eVJlY3QuCisgICAg
Ly8gMikgVGhlIGNvbnRlbnQgcmVjdC1yZWxhdGl2ZSByZWN0YW5nbGUgdG8gZHJhdyB0aGlzIHRl
eHR1cmUgaW4sIHJldHVybmVkCisgICAgLy8gaW4gZHJhd1JlY3QuCisKKyAgICBjb25zdCBJbnRS
ZWN0IGNvbnRlbnRSZWN0ID0gbGF5ZXJSZW5kZXJlcigpLT5yb290TGF5ZXJDb250ZW50UmVjdCgp
OworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0gPSBkcmF3VHJhbnNm
b3JtKCk7CisgICAgLy8gVGhlIGxheWVyJ3MgZHJhdyB0cmFuc2Zvcm0gcG9pbnRzIHRvIHRoZSBj
ZW50ZXIgb2YgdGhlIGxheWVyLCByZWxhdGl2ZSB0bworICAgIC8vIHRoZSBjb250ZW50IHJlY3Qu
ICBsYXllclBvcyBpcyB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgdG9wIGxlZnQgb2YgdGhlCisgICAg
Ly8gY29udGVudCByZWN0IHRvIHRoZSB0b3AgbGVmdCBvZiB0aGUgbGF5ZXIuCisgICAgY29uc3Qg
SW50U2l6ZSBsYXllclBvcyh0cmFuc2Zvcm0ubTQxKCkgLSBtX2JvdW5kcy53aWR0aCgpIC8gMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tNDIoKSAtIG1fYm91bmRzLmhl
aWdodCgpIC8gMik7CisgICAgLy8gVHJhbnNmb3JtIHRoZSBjb250ZW50UmVjdCBpbnRvIHRoZSBz
cGFjZSBvZiB0aGUgbGF5ZXIuCisgICAgSW50UmVjdCBjb250ZW50UmVjdEluTGF5ZXJTcGFjZShJ
bnRQb2ludCgwLCAwKSAtIGxheWVyUG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGVudFJlY3Quc2l6ZSgpKTsKKworICAgIC8vIENsaXAgdGhlIGVudGlyZSBsYXll
ciBhZ2FpbnN0IHRoZSB2aXNpYmxlIHJlZ2lvbiBpbiB0aGUgY29udGVudCByZWN0CisgICAgLy8g
YW5kIHVzZSB0aGF0IGFzIHRoZSBkcmF3YWJsZSB0ZXh0dXJlLCBpbnN0ZWFkIG9mIHRoZSBlbnRp
cmUgbGF5ZXIuCisgICAgKmRpcnR5UmVjdCA9IEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91
bmRzKTsKKyAgICBkaXJ0eVJlY3QtPmludGVyc2VjdChjb250ZW50UmVjdEluTGF5ZXJTcGFjZSk7
CisKKyAgICAvLyBUaGUgZHJhdyBwb3NpdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgY29udGVudCBy
ZWN0LgorICAgICpkcmF3UmVjdCA9IEludFJlY3QoZGlydHlSZWN0LT5sb2NhdGlvbigpICsgbGF5
ZXJQb3MsIGRpcnR5UmVjdC0+c2l6ZSgpKTsKK30KKwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29udGVudHMoKQogewogICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9
IHN0YXRpY19jYXN0PFJlbmRlckxheWVyQmFja2luZyo+KG1fb3duZXItPmNsaWVudCgpKTsKQEAg
LTE1MiwyOSArMTkzLDQ3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRl
bnRzKCkKIAogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwogCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgotICAgIG1f
c2tpcHNEcmF3ID0gZmFsc2U7Ci0gICAgaWYgKCFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVy
ZVNpemUobV9ib3VuZHMpKSB7Ci0gICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIHZvaWQqIHBpeGVscyA9IDA7Ci0gICAgSW50UmVjdCBkaXJ0
eVJlY3QobV9kaXJ0eVJlY3QpOworICAgIEludFJlY3QgZGlydHlSZWN0OworICAgIEludFJlY3Qg
dXBkYXRlUmVjdDsKICAgICBJbnRTaXplIHJlcXVpcmVkVGV4dHVyZVNpemU7CiAgICAgSW50U2l6
ZSBiaXRtYXBTaXplOwogCi0gICAgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IG1fYm91bmRzOwotICAg
IEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgwLCAwKSwgbV9ib3VuZHMpOwotCi0gICAgLy8g
SWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUgcmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJh
dyB0aGUgZW50aXJlCi0gICAgLy8gY29udGVudHMgb2YgdGhlIGxheWVyLgotICAgIGlmIChyZXF1
aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNpemUpCi0gICAgICAgIGRpcnR5
UmVjdCA9IGJvdW5kc1JlY3Q7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENsaXAgdGhlIGRpcnR5
UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgdG8gYXZvaWQgZHJhd2luZyBvdXRzaWRlCi0g
ICAgICAgIC8vIHRoZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZS4KLSAgICAgICAgZGly
dHlSZWN0LmludGVyc2VjdChib3VuZHNSZWN0KTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
dGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisgICAgaWYgKGxhcmdlTGF5
ZXIoKSkgeworICAgICAgICAvLyBBIGxheWVyIHdpdGggM0QgdHJhbnNmb3JtcyBjb3VsZCByZXF1
aXJlIGFuIGFyYml0cmFyaWx5IGxhcmdlIG51bWJlcgorICAgICAgICAvLyBvZiB0ZXhlbHMgdG8g
YmUgcmVwYWludGVkLCBzbyBpZ25vcmUgdGhlc2UgbGF5ZXJzIHVudGlsIHRpbGluZyBpcworICAg
ICAgICAvLyBpbXBsZW1lbnRlZC4KKyAgICAgICAgaWYgKCFkcmF3VHJhbnNmb3JtKCkuaXNJZGVu
dGl0eU9yVHJhbnNsYXRpb24oKSkgeworICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsY3VsYXRlTGFyZ2VM
YXllclZpZXdSZWN0KCZkaXJ0eVJlY3QsICZtX2xhcmdlTGF5ZXJEcmF3UmVjdCk7CisgICAgICAg
IGlmICghbGF5ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKG1fbGFyZ2VMYXllckRyYXdS
ZWN0LnNpemUoKSkpIHsKKyAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9sYXJnZUxheWVyRGlydHlSZWN0
ID09IGRpcnR5UmVjdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2xhcmdlTGF5
ZXJEaXJ0eVJlY3QgPSBkaXJ0eVJlY3Q7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBk
aXJ0eVJlY3Quc2l6ZSgpOworICAgICAgICB1cGRhdGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgw
LCAwKSwgZGlydHlSZWN0LnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGlydHlSZWN0
ID0gSW50UmVjdChtX2RpcnR5UmVjdCk7CisgICAgICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQ
b2ludCgwLCAwKSwgbV9ib3VuZHMpOworICAgICAgICByZXF1aXJlZFRleHR1cmVTaXplID0gbV9i
b3VuZHM7CisgICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVk
IHRoZW4gd2UgbXVzdCByZWRyYXcgdGhlIGVudGlyZQorICAgICAgICAvLyBjb250ZW50cyBvZiB0
aGUgbGF5ZXIuCisgICAgICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVk
VGV4dHVyZVNpemUpCisgICAgICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNSZWN0OworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBv
ZiB0aGUgbGF5ZXIgdG8gYXZvaWQgZHJhd2luZworICAgICAgICAgICAgLy8gb3V0c2lkZSB0aGUg
Ym91bmRzIG9mIHRoZSBiYWNraW5nIHRleHR1cmUuCisgICAgICAgICAgICBkaXJ0eVJlY3QuaW50
ZXJzZWN0KGJvdW5kc1JlY3QpOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZVJlY3QgPSBkaXJ0
eVJlY3Q7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oU0tJQSkKQEAgLTIzOSw3ICsyOTgsNyBAQCB2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAgICAgICAgIHRleHR1
cmVJZCA9IGxheWVyUmVuZGVyZXIoKS0+Y3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAKICAgICBpZiAo
cGl4ZWxzKQotICAgICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJl
cXVpcmVkVGV4dHVyZVNpemUsICBkaXJ0eVJlY3QsIHRleHR1cmVJZCk7CisgICAgICAgIHVwZGF0
ZVRleHR1cmVSZWN0KHBpeGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgdXBk
YXRlUmVjdCwgdGV4dHVyZUlkKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzUG93ZXJPZlR3
byhpbnQgeCkKQEAgLTI5MCw3ICszNDksOSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVUZXh0dXJlUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFNpemUmIGJpdG1hcAogICAg
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Z2VuZXJhdGVNaXBtYXAoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQpKTsKIAogICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkp
OwotICAgIG1fY29udGVudHNEaXJ0eSA9IGZhbHNlOworICAgIC8vIExhcmdlIGxheWVycyBhbHdh
eXMgc3RheSBkaXJ0eSwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gdXBkYXRlIHdoZW4gdGhlCisgICAg
Ly8gY29udGVudCByZWN0IGNoYW5nZXMuCisgICAgbV9jb250ZW50c0RpcnR5ID0gbGFyZ2VMYXll
cigpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KCkKQEAgLTMwNiw5ICsz
NjcsMjIgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X2NvbnRlbnRzVGV4dHVyZSkpOwogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5j
b250ZW50U2hhZGVyUHJvZ3JhbSgpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9y
bTFpKHN2LT5zaGFkZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGRyYXdUZXh0dXJlZFF1
YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFu
c2Zvcm0oKSwKLSAgICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygp
LmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRl
ck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworCisgICAgaWYg
KGxhcmdlTGF5ZXIoKSkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0g
PSBkcmF3VHJhbnNmb3JtKCk7CisgICAgICAgIEFTU0VSVCh0cmFuc2Zvcm0uaXNJZGVudGl0eU9y
VHJhbnNsYXRpb24oKSk7CisgICAgICAgIHRyYW5zZm9ybS5zZXRNNDEobV9sYXJnZUxheWVyRHJh
d1JlY3QuY2VudGVyKCkueCgpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNldE00MihtX2xhcmdlTGF5
ZXJEcmF3UmVjdC5jZW50ZXIoKS55KCkpOworICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRl
eHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zZm9ybSwgbV9sYXJnZUxheWVyRHJhd1JlY3Qud2lkdGgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3UmVjdC5oZWlnaHQoKSwgZHJhd09w
YWNpdHkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyTWF0cml4TG9jYXRp
b24oKSwgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
ZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRy
aXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3VHJhbnNmb3JtKCksIG1fYm91bmRz
LndpZHRoKCksIG1fYm91bmRzLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRy
YXdPcGFjaXR5KCksIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAgIH0KIH0KIAogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGQzMjVkZmI0NjM5NTBjNGI1Mzk2MzQ1MTFlNjQ1Y2E0YjFkZTQ0
YzAuLjI5NjcxZTEyNWNiNDY0M2MxOTMxZTM1MmZmZDIyYjY2OWU1NDQ4YTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKQEAgLTg0LDExICs4NCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IE1pcG1hcFVzZSBnZW5lcmF0ZU1pcG1hcCA9IG5vTWlwbWFwKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhbnVwUmVzb3VyY2VzKCk7CisgICAgYm9vbCBsYXJnZUxheWVyKCkgY29uc3Q7CisgICAg
dm9pZCBjYWxjdWxhdGVMYXJnZUxheWVyVmlld1JlY3QoSW50UmVjdCogZGlydHlSZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3QqIGRyYXdSZWN0KSBjb25z
dDsKIAogICAgIHVuc2lnbmVkIG1fY29udGVudHNUZXh0dXJlOwogICAgIEludFNpemUgbV9hbGxv
Y2F0ZWRUZXh0dXJlU2l6ZTsKICAgICBib29sIG1fc2tpcHNEcmF3OwotCisgICAgSW50UmVjdCBt
X2xhcmdlTGF5ZXJEcmF3UmVjdDsKKyAgICBJbnRSZWN0IG1fbGFyZ2VMYXllckRpcnR5UmVjdDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA0MmJjMWZmM2VkZmM2MzQ2NzA1MzE2NmU0
ZTFiYTNhZDBmNTk1ZTc3Li4wMWM5MTY1MjQyY2ViMTAxZTY3NTJjN2RmYzJkMDdmZTkwMTljYTU5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC03NSw2ICs3NSwxNCBAQCB2b2lkIEltYWdlTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogewogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkp
OwogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJl
IGltcGxlbWVudGVkLgorICAgIGlmIChsYXJnZUxheWVyKCkpIHsKKyAgICAgICAgLy8gVXNlIHRo
ZSBiYXNlIHZlcnNpb24gb2YgdXBkYXRlQ29udGVudHMgd2hpY2ggZHJhd3MgYSBzdWJzZXQgb2Yg
dGhlCisgICAgICAgIC8vIGltYWdlIHRvIGEgYml0bWFwLCBhcyB0aGUgcGl4ZWwgY29udGVudHMg
Y2FuJ3QgYmUgdXBsb2FkZWQgZGlyZWN0bHkuCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVt
Ojp1cGRhdGVDb250ZW50cygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdm9pZCog
cGl4ZWxzID0gMDsKICAgICBJbnRTaXplIHJlcXVpcmVkVGV4dHVyZVNpemU7CiAgICAgSW50U2l6
ZSBiaXRtYXBTaXplOwpAQCAtMTM2LDEyICsxNDQsNiBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29udGVudHMoKQogI2Vsc2UKICNlcnJvciAiTmVlZCB0byBpbXBsZW1lbnQgZm9y
IHlvdXIgcGxhdGZvcm0uIgogI2VuZGlmCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qg
d2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgotICAgIG1fc2tpcHNEcmF3ID0gZmFs
c2U7Ci0gICAgaWYgKCFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVyZVNpemUocmVxdWlyZWRU
ZXh0dXJlU2l6ZSkpIHsKLSAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgdW5zaWduZWQgdGV4dHVyZUlkID0gbV9jb250ZW50c1RleHR1cmU7
CiAgICAgaWYgKCF0ZXh0dXJlSWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNDExYjQy
MDgwZmZlZjZjNDM5YTZmZmE4ZTM5ZjUzYjVkY2ZlNWZmMy4uZDFkYzljMGU2NDYwM2VjNTE5NTc3
MTdmM2NkOTRlOTdiZjE1ODZjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzA3LDgg
KzMwNyw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IElu
dFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0CiAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhp
Y3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKIAotICAgIC8vIFNldCB0aGUgcm9v
dFZpc2libGVSZWN0IC0tLSB1c2VkIGJ5IHN1YnNlcXVlbnQgZHJhd0xheWVycyBjYWxscworICAg
IC8vIFNldCB0aGUgcm9vdCB2aXNpYmxlL2NvbnRlbnQgcmVjdHMgLS0tIHVzZWQgYnkgc3Vic2Vx
dWVudCBkcmF3TGF5ZXJzIGNhbGxzLgogICAgIG1fcm9vdFZpc2libGVSZWN0ID0gdmlzaWJsZVJl
Y3Q7CisgICAgbV9yb290Q29udGVudFJlY3QgPSBjb250ZW50UmVjdDsKIAogICAgIC8vIFRyYXZl
cnNlIHRoZSBsYXllciB0cmVlIGFuZCB1cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9ybXMuCiAgICAg
ZmxvYXQgb3BhY2l0eSA9IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBiNzE0NTg0ZjVlNTcx
OWFjNGU4OTY4OTY1NTJkNDIwODQ3NzQ0NTZlLi45NTMzOGRlZGNlNzBjYjBhODY2Nzk3OTgzMDA3
OWFlMzIzYTI2NzdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNpemVPbnNjcmVlbkNvbnRlbnQoY29uc3QgSW50U2l6ZSYpOwog
CiAgICAgSW50U2l6ZSByb290TGF5ZXJUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNp
emUobV9yb290TGF5ZXJUZXh0dXJlV2lkdGgsIG1fcm9vdExheWVyVGV4dHVyZUhlaWdodCk7IH0K
KyAgICBJbnRSZWN0IHJvb3RMYXllckNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yb290
Q29udGVudFJlY3Q7IH0KICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVs
cywgY29uc3QgSW50UmVjdCYgcmVjdCk7CiAKIHByaXZhdGU6CkBAIC0xNjAsNiArMTYxLDcgQEAg
cHJpdmF0ZToKICAgICBJbnRTaXplIG1fcm9vdExheWVyQ2FudmFzU2l6ZTsKIAogICAgIEludFJl
Y3QgbV9yb290VmlzaWJsZVJlY3Q7CisgICAgSW50UmVjdCBtX3Jvb3RDb250ZW50UmVjdDsKIAog
ICAgIGludCBtX21heFRleHR1cmVTaXplOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70407</attachid>
            <date>2010-10-10 09:56:44 -0700</date>
            <delta_ts>2010-10-12 09:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101010095643.patch</filename>
            <type>text/plain</type>
            <size>17091</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMjQyZjNkZGVhODdkMjE4NDg3ZjRlZmVlMWQ0YTYyNTVmNDgxNWM1Li5iN2I4MmZi
Njc5OGUyZjU4NTYxOTNiNDUyMzliNTQ3Mzc2NTc1ZTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTAgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA3ICBBbGJlcnQg
Si4gV29uZyAgPGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hy
b21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGls
aW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI3ZGU0MjY0
YWFhYjU4MTViYTQzNGZiZWEzMzY0ZTIyOThmMTk2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNyBAQAorVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBz
Y3JvbGwgb2ZmIHRoZSBib3R0b20uIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZp
cnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94
LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQgdmVyeSBsYXJnZSBjb21wb3NpdGVkIGlt
YWdlIGxheWVycy4KKworCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAyMDExOS4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUu
MDAgMjAxMTkuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDcyLjAwKQorICAgICAgICAgIChib3VuZHMgNTAwLjAw
IDIwMDAwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAyYmE5MDI2ODkyNTdiZTgyNDhjYjRlNDM3YmM3MDk5MzQzN2FhOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRt
bApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8dGl0bGU+VGVzdCBvZiB2ZXJ5IGxhcmdlIGltYWdlIGxheWVyPC90aXRsZT4KKworICAgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgI2NvbnRhaW5lciB7Cisg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOworICAgIH0KKyAgICA8L3N0eWxl
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RPbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgICAgICBjYW52YXMud2lkdGggPSA1
MDA7CisgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMjAwMDA7CisgICAgICAgICAgICB2YXIg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgICAgICAgICAgY29udGV4dC5m
aWxsU3R5bGUgPSAieWVsbG93IjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gInJlZCI7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwLCA1MCwgMjAwLCAy
MDApOworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAiYmx1ZSI7CisgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KDUwLCBjYW52YXMuaGVpZ2h0IC0gMjUwLCAyMDAsIDIwMCk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikuc3JjID0gY2Fu
dmFzLnRvRGF0YVVSTCgpOworCisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0ZXN0T25Mb2FkLCBmYWxzZSk7CisgICAgPC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgICA8cD4KKyAgICAgICAgVGhlIHllbGxv
dyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBzY3JvbGwgb2ZmIHRoZSBib3R0b20uCisg
ICAgICAgIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZpcnN0IHBhZ2UgYW5kIGEg
Ymx1ZSBib3gKKyAgICAgICAgbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94LiBUaGlz
IHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQKKyAgICAgICAgdmVyeSBsYXJnZSBjb21wb3NpdGVk
IGltYWdlIGxheWVycy4KKyAgICAgIDwvcD4KKyAgICAgICAgPGltZyBpZD0iY29udGFpbmVyIj4K
KyAgICAgICAgPHByZSBpZD0ibGF5ZXJzIj5MYXllciB0cmVlIGFwcGVhcnMgaGVyZSBpbiBEUlQu
PC9wcmU+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBl
ZAppbmRleCA4MThiYzliOGM1ZTY5ZjM1YjJiMzYzYjgxOTExMDFjYzczODJlYWM3Li5hYTUyZDY4
YzkzZDM0MjA2ZWRiNmU1ZTM5MWQ5YTM0NGM1NmUyNWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9Ta2lwcGVkCkBAIC03OCw2ICs3OCw3IEBAIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxh
eWVyLXJlc2l6ZS5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVy
LWNoaWxkcmVuLXJlc2l6ZS5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRo
LWxheWVyLWNoaWxkcmVuLmh0bWwKIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwK
K2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCiBjb21wb3NpdGluZy92aWRl
by92aWRlby1wb3N0ZXIuaHRtbAogCiAjIFVuY2F0ZWdvcml6ZWQgZWRpdGluZyBmYWlsdXJlcwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWM3YmRmYWRlNzBlMDdhZWViZGI5OGM1Y2ZjYWIwNDJjZDIzZDQ4Li5mNTZiZDY1YmUwMjVhMDRk
YWQ0NTc3Y2U0OWQ2ZDMyMjAzOTY2Y2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTEwLTEwICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2hvcnQtdGVybSBzb2x1dGlvbiBmb3IgbGFy
Z2UgbGF5ZXJzLiAgTGF5ZXJzIHRoYXQgYXJlIHRvbworICAgICAgICBsYXJnZSB0byBiZSBjb250
YWluZWQgaW4gYSBzaW5nbGUgdGV4dHVyZSBqdXN0IHVwbG9hZCB0aGUgcG9ydGlvbiBvZgorICAg
ICAgICB0aGUgbGF5ZXIgdGhhdCBpcyB3aXRoaW4gdGhlIGNvbnRlbnQgcmVjdC4gIEEgbG9uZ2Vy
LXRlcm0gc29sdXRpb24KKyAgICAgICAgaXMgc3RpbGwgdGlsaW5nIHdpdGggcHJvcGVyIG1lbW9y
eSBtYW5hZ2VtZW50LiAgTGF5ZXJzIHRoYXQgaGF2ZSBmdWxsCisgICAgICAgIDNEIHRyYW5zZm9y
bXMgKG1vcmUgdGhhbiBqdXN0IHRyYW5zbGF0aW9ucykgYXJlIHN0aWxsIG5vdCBkcmF3bi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAg
ICAgICAgVGVzdDogY29tcG9zaXRpbmcvdGlsaW5nCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNhbGN1bGF0ZUNsaXBw
ZWRVcGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21p
dW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyb290TGF5ZXJDb250ZW50UmVjdCk6CisKIDIwMTAtMTAtMDUgIERp
ZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCAyMGEyZDcwYjIwZTA4
OTY0MmQ2ODNkNDI3ODMwY2ZjZmFkMGUwNTk1Li40ZDQ2OGRkYjEyOThhNjJmMGRlOWMzNjllMTI3
ODU0NDQzMWVmNDY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtMTI0LDYgKzEyNCwxMCBA
QCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbQogQ29udGVudExheWVyQ2hyb21pdW06OkNvbnRlbnRM
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBMYXllckNo
cm9taXVtKG93bmVyKQogICAgICwgbV9jb250ZW50c1RleHR1cmUoMCkKKyAgICAsIG1fYWxsb2Nh
dGVkVGV4dHVyZVNpemUoMCwgMCkKKyAgICAsIG1fc2tpcHNEcmF3KGZhbHNlKQorICAgICwgbV9s
YXJnZUxheWVyRHJhd1JlY3QoMCwgMCwgMCwgMCkKKyAgICAsIG1fbGFyZ2VMYXllckRpcnR5UmVj
dCgwLCAwLCAwLCAwKQogewogfQogCkBAIC0xNDIsNiArMTQ2LDM2IEBAIHZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgIH0KIH0KIAorYm9vbCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cmVxdWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVyZVNpemUobV9ib3VuZHMpOworfQor
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjYWxjdWxhdGVDbGlwcGVkVXBkYXRlUmVjdChJ
bnRSZWN0JiBkaXJ0eVJlY3QsIEludFJlY3QmIGRyYXdSZWN0KSBjb25zdAoreworICAgIC8vIEZv
ciB0aGUgZ2l2ZW4gbGF5ZXIgc2l6ZSBhbmQgY29udGVudCByZWN0LCBjYWxjdWxhdGU6CisgICAg
Ly8gMSkgVGhlIG1pbmltYWwgdGV4dHVyZSBzcGFjZSByZWN0YW5nbGUgdG8gYmUgdXBsb2FkZWQs
IHJldHVybmVkIGluIGRpcnR5UmVjdC4KKyAgICAvLyAyKSBUaGUgY29udGVudCByZWN0LXJlbGF0
aXZlIHJlY3RhbmdsZSB0byBkcmF3IHRoaXMgdGV4dHVyZSBpbiwgcmV0dXJuZWQgaW4gZHJhd1Jl
Y3QuCisKKyAgICBjb25zdCBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gbGF5ZXJSZW5kZXJlcigpLT5y
b290TGF5ZXJDb250ZW50UmVjdCgpOworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtKCk7CisgICAgLy8gVGhlIGxheWVyJ3MgZHJhdyB0cmFu
c2Zvcm0gcG9pbnRzIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLCByZWxhdGl2ZSB0bworICAg
IC8vIHRoZSBjb250ZW50IHJlY3QuICBsYXllclBvcyBpcyB0aGUgZGlzdGFuY2UgZnJvbSB0aGUg
dG9wIGxlZnQgb2YgdGhlCisgICAgLy8gbGF5ZXIgdG8gdGhlIHRvcCBsZWZ0IG9mIHRoZSBjb250
ZW50IHJlY3QuCisgICAgY29uc3QgSW50UG9pbnQgbGF5ZXJQb3MobV9ib3VuZHMud2lkdGgoKSAv
IDIgLSB0cmFuc2Zvcm0ubTQxKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ib3Vu
ZHMuaGVpZ2h0KCkgLyAyIC0gdHJhbnNmb3JtLm00MigpKTsKKyAgICAvLyBUcmFuc2Zvcm0gdGhl
IGNvbnRlbnRSZWN0IGludG8gdGhlIHNwYWNlIG9mIHRoZSBsYXllci4KKyAgICBJbnRSZWN0IGNv
bnRlbnRSZWN0SW5MYXllclNwYWNlKGxheWVyUG9zLCBjb250ZW50UmVjdC5zaXplKCkpOworCisg
ICAgLy8gQ2xpcCB0aGUgZW50aXJlIGxheWVyIGFnYWluc3QgdGhlIHZpc2libGUgcmVnaW9uIGlu
IHRoZSBjb250ZW50IHJlY3QKKyAgICAvLyBhbmQgdXNlIHRoYXQgYXMgdGhlIGRyYXdhYmxlIHRl
eHR1cmUsIGluc3RlYWQgb2YgdGhlIGVudGlyZSBsYXllci4KKyAgICBkaXJ0eVJlY3QgPSBJbnRS
ZWN0KEludFBvaW50KDAsIDApLCBtX2JvdW5kcyk7CisgICAgZGlydHlSZWN0LmludGVyc2VjdChj
b250ZW50UmVjdEluTGF5ZXJTcGFjZSk7CisKKyAgICAvLyBUaGUgZHJhdyBwb3NpdGlvbiBpcyBy
ZWxhdGl2ZSB0byB0aGUgY29udGVudCByZWN0LgorICAgIGRyYXdSZWN0ID0gSW50UmVjdCh0b1Bv
aW50KGRpcnR5UmVjdC5sb2NhdGlvbigpIC0gbGF5ZXJQb3MpLCBkaXJ0eVJlY3Quc2l6ZSgpKTsK
K30KKwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogewogICAg
IFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHN0YXRpY19jYXN0PFJlbmRlckxheWVyQmFj
a2luZyo+KG1fb3duZXItPmNsaWVudCgpKTsKQEAgLTE1MiwyOSArMTg2LDQ3IEBAIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIAogICAgIEFTU0VSVChsYXllclJl
bmRlcmVyKCkpOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBs
YXllcnMgYXJlIGltcGxlbWVudGVkLgotICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7Ci0gICAgaWYg
KCFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVyZVNpemUobV9ib3VuZHMpKSB7Ci0gICAgICAg
IG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIHZvaWQq
IHBpeGVscyA9IDA7Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QobV9kaXJ0eVJlY3QpOworICAgIElu
dFJlY3QgZGlydHlSZWN0OworICAgIEludFJlY3QgdXBkYXRlUmVjdDsKICAgICBJbnRTaXplIHJl
cXVpcmVkVGV4dHVyZVNpemU7CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplOwogCi0gICAgcmVxdWly
ZWRUZXh0dXJlU2l6ZSA9IG1fYm91bmRzOwotICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2lu
dCgwLCAwKSwgbV9ib3VuZHMpOwotCi0gICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUg
cmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCi0gICAgLy8gY29udGVu
dHMgb2YgdGhlIGxheWVyLgotICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2Nh
dGVkVGV4dHVyZVNpemUpCi0gICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1JlY3Q7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5
ZXIgdG8gYXZvaWQgZHJhd2luZyBvdXRzaWRlCi0gICAgICAgIC8vIHRoZSBib3VuZHMgb2YgdGhl
IGJhY2tpbmcgdGV4dHVyZS4KLSAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChib3VuZHNSZWN0
KTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUg
aW1wbGVtZW50ZWQuCisgICAgaWYgKHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKSkgeworICAg
ICAgICAvLyBBIGxheWVyIHdpdGggM0QgdHJhbnNmb3JtcyBjb3VsZCByZXF1aXJlIGFuIGFyYml0
cmFyaWx5IGxhcmdlIG51bWJlcgorICAgICAgICAvLyBvZiB0ZXhlbHMgdG8gYmUgcmVwYWludGVk
LCBzbyBpZ25vcmUgdGhlc2UgbGF5ZXJzIHVudGlsIHRpbGluZyBpcworICAgICAgICAvLyBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgaWYgKCFkcmF3VHJhbnNmb3JtKCkuaXNJZGVudGl0eU9yVHJhbnNs
YXRpb24oKSkgeworICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsY3VsYXRlQ2xpcHBlZFVwZGF0ZVJlY3Qo
ZGlydHlSZWN0LCBtX2xhcmdlTGF5ZXJEcmF3UmVjdCk7CisgICAgICAgIGlmICghbGF5ZXJSZW5k
ZXJlcigpLT5jaGVja1RleHR1cmVTaXplKG1fbGFyZ2VMYXllckRyYXdSZWN0LnNpemUoKSkpIHsK
KyAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAobV9sYXJnZUxheWVyRGlydHlSZWN0ID09IGRpcnR5UmVjdCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2xhcmdlTGF5ZXJEaXJ0eVJlY3QgPSBk
aXJ0eVJlY3Q7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBkaXJ0eVJlY3Quc2l6ZSgp
OworICAgICAgICB1cGRhdGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgZGlydHlSZWN0
LnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGlydHlSZWN0ID0gSW50UmVjdChtX2Rp
cnR5UmVjdCk7CisgICAgICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgwLCAwKSwgbV9i
b3VuZHMpOworICAgICAgICByZXF1aXJlZFRleHR1cmVTaXplID0gbV9ib3VuZHM7CisgICAgICAg
IC8vIElmIHRoZSB0ZXh0dXJlIG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2UgbXVzdCBy
ZWRyYXcgdGhlIGVudGlyZQorICAgICAgICAvLyBjb250ZW50cyBvZiB0aGUgbGF5ZXIuCisgICAg
ICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNpemUpCisg
ICAgICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNSZWN0OworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgdG8g
YXZvaWQgZHJhd2luZworICAgICAgICAgICAgLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBi
YWNraW5nIHRleHR1cmUuCisgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGJvdW5kc1Jl
Y3QpOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZVJlY3QgPSBkaXJ0eVJlY3Q7CiAgICAgfQog
CiAjaWYgUExBVEZPUk0oU0tJQSkKQEAgLTIzOSw3ICsyOTEsNyBAQCB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAgICAgICAgIHRleHR1cmVJZCA9IGxheWVyUmVu
ZGVyZXIoKS0+Y3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAKICAgICBpZiAocGl4ZWxzKQotICAgICAg
ICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJlcXVpcmVkVGV4dHVyZVNp
emUsICBkaXJ0eVJlY3QsIHRleHR1cmVJZCk7CisgICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0KHBp
eGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgdXBkYXRlUmVjdCwgdGV4dHVy
ZUlkKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzUG93ZXJPZlR3byhpbnQgeCkKQEAgLTI5
MCw3ICszNDIsOCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVj
dCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFNpemUmIGJpdG1hcAogICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+Z2VuZXJhdGVNaXBtYXAoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQp
KTsKIAogICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkpOwotICAgIG1fY29udGVu
dHNEaXJ0eSA9IGZhbHNlOworICAgIC8vIExhcmdlIGxheWVycyBhbHdheXMgc3RheSBkaXJ0eSwg
YmVjYXVzZSB0aGV5IG5lZWQgdG8gdXBkYXRlIHdoZW4gdGhlIGNvbnRlbnQgcmVjdCBjaGFuZ2Vz
LgorICAgIG1fY29udGVudHNEaXJ0eSA9IHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKTsKIH0K
IAogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCkBAIC0zMDYsOSArMzU5LDIxIEBA
IHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXcoKQogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb250ZW50
c1RleHR1cmUpKTsKICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihzdi0+Y29udGVudFNo
YWRlclByb2dyYW0oKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShzdi0+
c2hhZGVyU2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRl
eHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNmb3JtKCks
Ci0gICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQo
KSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJNYXRyaXhM
b2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKworICAgIGlmIChyZXF1aXJl
c0NsaXBwZWRVcGRhdGVSZWN0KCkpIHsKKyAgICAgICAgZmxvYXQgbTQzID0gZHJhd1RyYW5zZm9y
bSgpLm00MygpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAg
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChtX2xhcmdlTGF5ZXJEcmF3UmVjdC5jZW50ZXIoKS54
KCksIG1fbGFyZ2VMYXllckRyYXdSZWN0LmNlbnRlcigpLnkoKSwgbTQzKTsKKyAgICAgICAgZHJh
d1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0sIG1fbGFyZ2VMYXllckRyYXdS
ZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXJnZUxheWVyRHJhd1Jl
Y3QuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3Yt
PnNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJl
cigpLT5wcm9qZWN0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1Ry
YW5zZm9ybSgpLCBtX2JvdW5kcy53aWR0aCgpLCBtX2JvdW5kcy5oZWlnaHQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24o
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsK
KyAgICB9CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBkMzI1ZGZiNDYzOTUwYzRiNTM5
NjM0NTExZTY0NWNhNGIxZGU0NGMwLi4yMzljNDc5YzI3ZjZjYzUyNmI0YTliMjc5OTY3N2U2MjYy
NmZhNTE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC04NCwxMSArODQsMTYgQEAgcHJvdGVjdGVk
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwg
dW5zaWduZWQgdGV4dHVyZUlkLCBNaXBtYXBVc2UgZ2VuZXJhdGVNaXBtYXAgPSBub01pcG1hcCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOworICAgIGJvb2wgcmVxdWly
ZXNDbGlwcGVkVXBkYXRlUmVjdCgpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV9jb250ZW50c1Rl
eHR1cmU7CiAgICAgSW50U2l6ZSBtX2FsbG9jYXRlZFRleHR1cmVTaXplOwogICAgIGJvb2wgbV9z
a2lwc0RyYXc7CiAKK3ByaXZhdGU6CisgICAgdm9pZCBjYWxjdWxhdGVDbGlwcGVkVXBkYXRlUmVj
dChJbnRSZWN0JiBkaXJ0eVJlY3QsIEludFJlY3QmIGRyYXdSZWN0KSBjb25zdDsKKyAgICBJbnRS
ZWN0IG1fbGFyZ2VMYXllckRyYXdSZWN0OworICAgIEludFJlY3QgbV9sYXJnZUxheWVyRGlydHlS
ZWN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQyYmMxZmYzZWRmYzYzNDY3MDUz
MTY2ZTRlMWJhM2FkMGY1OTVlNzcuLjlhNWZkZDg3MzU2YWIwMWMzZjYyOTRhNTk3ZTcxNDQwMmQz
NGQ2YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc1LDYgKzc1LDE0IEBAIHZvaWQgSW1hZ2VM
YXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiB7CiAgICAgQVNTRVJUKGxheWVyUmVuZGVy
ZXIoKSk7CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVy
cyBhcmUgaW1wbGVtZW50ZWQuCisgICAgaWYgKHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKSkg
eworICAgICAgICAvLyBVc2UgdGhlIGJhc2UgdmVyc2lvbiBvZiB1cGRhdGVDb250ZW50cyB3aGlj
aCBkcmF3cyBhIHN1YnNldCBvZiB0aGUKKyAgICAgICAgLy8gaW1hZ2UgdG8gYSBiaXRtYXAsIGFz
IHRoZSBwaXhlbCBjb250ZW50cyBjYW4ndCBiZSB1cGxvYWRlZCBkaXJlY3RseS4KKyAgICAgICAg
Q29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICB2b2lkKiBwaXhlbHMgPSAwOwogICAgIEludFNpemUgcmVxdWlyZWRUZXh0
dXJlU2l6ZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemU7CkBAIC0xMzYsMTIgKzE0NCw2IEBAIHZv
aWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAjZWxzZQogI2Vycm9yICJO
ZWVkIHRvIGltcGxlbWVudCBmb3IgeW91ciBwbGF0Zm9ybS4iCiAjZW5kaWYKLSAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCi0g
ICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKLSAgICBpZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tU
ZXh0dXJlU2l6ZShyZXF1aXJlZFRleHR1cmVTaXplKSkgewotICAgICAgICBtX3NraXBzRHJhdyA9
IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQg
PSBtX2NvbnRlbnRzVGV4dHVyZTsKICAgICBpZiAoIXRleHR1cmVJZCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCA0MTFiNDIwODBmZmVmNmM0MzlhNmZmYThlMzlmNTNiNWRjZmU1ZmYzLi5k
MWRjOWMwZTY0NjAzZWM1MTk1NzcxN2YzY2Q5NGU5N2JmMTU4NmM4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC0zMDcsOCArMzA3LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QKICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxF
TkQpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGljc0Nv
bnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOwog
Ci0gICAgLy8gU2V0IHRoZSByb290VmlzaWJsZVJlY3QgLS0tIHVzZWQgYnkgc3Vic2VxdWVudCBk
cmF3TGF5ZXJzIGNhbGxzCisgICAgLy8gU2V0IHRoZSByb290IHZpc2libGUvY29udGVudCByZWN0
cyAtLS0gdXNlZCBieSBzdWJzZXF1ZW50IGRyYXdMYXllcnMgY2FsbHMuCiAgICAgbV9yb290Vmlz
aWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKKyAgICBtX3Jvb3RDb250ZW50UmVjdCA9IGNvbnRlbnRS
ZWN0OwogCiAgICAgLy8gVHJhdmVyc2UgdGhlIGxheWVyIHRyZWUgYW5kIHVwZGF0ZSB0aGUgbGF5
ZXIgdHJhbnNmb3Jtcy4KICAgICBmbG9hdCBvcGFjaXR5ID0gMTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CmluZGV4IGI3MTQ1ODRmNWU1NzE5YWM0ZTg5Njg5NjU1MmQ0MjA4NDc3NDQ1NmUuLjk1MzM4ZGVk
Y2U3MGNiMGE4NjY3OTc5ODMwMDc5YWUzMjNhMjY3N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApA
QCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2l6ZU9uc2NyZWVuQ29udGVu
dChjb25zdCBJbnRTaXplJik7CiAKICAgICBJbnRTaXplIHJvb3RMYXllclRleHR1cmVTaXplKCkg
Y29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3Jvb3RMYXllclRleHR1cmVXaWR0aCwgbV9yb290TGF5
ZXJUZXh0dXJlSGVpZ2h0KTsgfQorICAgIEludFJlY3Qgcm9vdExheWVyQ29udGVudFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RDb250ZW50UmVjdDsgfQogICAgIHZvaWQgZ2V0RnJhbWVidWZm
ZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIAogcHJpdmF0ZToK
QEAgLTE2MCw2ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9yb290TGF5ZXJDYW52
YXNTaXplOwogCiAgICAgSW50UmVjdCBtX3Jvb3RWaXNpYmxlUmVjdDsKKyAgICBJbnRSZWN0IG1f
cm9vdENvbnRlbnRSZWN0OwogCiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70535</attachid>
            <date>2010-10-12 09:19:56 -0700</date>
            <delta_ts>2010-10-13 15:04:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101012091955.patch</filename>
            <type>text/plain</type>
            <size>16973</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMjQyZjNkZGVhODdkMjE4NDg3ZjRlZmVlMWQ0YTYyNTVmNDgxNWM1Li5iN2I4MmZi
Njc5OGUyZjU4NTYxOTNiNDUyMzliNTQ3Mzc2NTc1ZTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTAgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA3ICBBbGJlcnQg
Si4gV29uZyAgPGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hy
b21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGls
aW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI3ZGU0MjY0
YWFhYjU4MTViYTQzNGZiZWEzMzY0ZTIyOThmMTk2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNyBAQAorVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBz
Y3JvbGwgb2ZmIHRoZSBib3R0b20uIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZp
cnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94
LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQgdmVyeSBsYXJnZSBjb21wb3NpdGVkIGlt
YWdlIGxheWVycy4KKworCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAyMDExOS4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUu
MDAgMjAxMTkuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDcyLjAwKQorICAgICAgICAgIChib3VuZHMgNTAwLjAw
IDIwMDAwLjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAyYmE5MDI2ODkyNTdiZTgyNDhjYjRlNDM3YmM3MDk5MzQzN2FhOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRt
bApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8dGl0bGU+VGVzdCBvZiB2ZXJ5IGxhcmdlIGltYWdlIGxheWVyPC90aXRsZT4KKworICAgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgI2NvbnRhaW5lciB7Cisg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOworICAgIH0KKyAgICA8L3N0eWxl
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RPbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgICAgICBjYW52YXMud2lkdGggPSA1
MDA7CisgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMjAwMDA7CisgICAgICAgICAgICB2YXIg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgICAgICAgICAgY29udGV4dC5m
aWxsU3R5bGUgPSAieWVsbG93IjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gInJlZCI7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwLCA1MCwgMjAwLCAy
MDApOworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAiYmx1ZSI7CisgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KDUwLCBjYW52YXMuaGVpZ2h0IC0gMjUwLCAyMDAsIDIwMCk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikuc3JjID0gY2Fu
dmFzLnRvRGF0YVVSTCgpOworCisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0ZXN0T25Mb2FkLCBmYWxzZSk7CisgICAgPC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgICA8cD4KKyAgICAgICAgVGhlIHllbGxv
dyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBzY3JvbGwgb2ZmIHRoZSBib3R0b20uCisg
ICAgICAgIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZpcnN0IHBhZ2UgYW5kIGEg
Ymx1ZSBib3gKKyAgICAgICAgbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94LiBUaGlz
IHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQKKyAgICAgICAgdmVyeSBsYXJnZSBjb21wb3NpdGVk
IGltYWdlIGxheWVycy4KKyAgICAgIDwvcD4KKyAgICAgICAgPGltZyBpZD0iY29udGFpbmVyIj4K
KyAgICAgICAgPHByZSBpZD0ibGF5ZXJzIj5MYXllciB0cmVlIGFwcGVhcnMgaGVyZSBpbiBEUlQu
PC9wcmU+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBl
ZAppbmRleCA4MThiYzliOGM1ZTY5ZjM1YjJiMzYzYjgxOTExMDFjYzczODJlYWM3Li5hYTUyZDY4
YzkzZDM0MjA2ZWRiNmU1ZTM5MWQ5YTM0NGM1NmUyNWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9Ta2lwcGVkCkBAIC03OCw2ICs3OCw3IEBAIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxh
eWVyLXJlc2l6ZS5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVy
LWNoaWxkcmVuLXJlc2l6ZS5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRo
LWxheWVyLWNoaWxkcmVuLmh0bWwKIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwK
K2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sCiBjb21wb3NpdGluZy92aWRl
by92aWRlby1wb3N0ZXIuaHRtbAogCiAjIFVuY2F0ZWdvcml6ZWQgZWRpdGluZyBmYWlsdXJlcwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWM3YmRmYWRlNzBlMDdhZWViZGI5OGM1Y2ZjYWIwNDJjZDIzZDQ4Li5mNTZiZDY1YmUwMjVhMDRk
YWQ0NTc3Y2U0OWQ2ZDMyMjAzOTY2Y2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTEwLTEwICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2hvcnQtdGVybSBzb2x1dGlvbiBmb3IgbGFy
Z2UgbGF5ZXJzLiAgTGF5ZXJzIHRoYXQgYXJlIHRvbworICAgICAgICBsYXJnZSB0byBiZSBjb250
YWluZWQgaW4gYSBzaW5nbGUgdGV4dHVyZSBqdXN0IHVwbG9hZCB0aGUgcG9ydGlvbiBvZgorICAg
ICAgICB0aGUgbGF5ZXIgdGhhdCBpcyB3aXRoaW4gdGhlIGNvbnRlbnQgcmVjdC4gIEEgbG9uZ2Vy
LXRlcm0gc29sdXRpb24KKyAgICAgICAgaXMgc3RpbGwgdGlsaW5nIHdpdGggcHJvcGVyIG1lbW9y
eSBtYW5hZ2VtZW50LiAgTGF5ZXJzIHRoYXQgaGF2ZSBmdWxsCisgICAgICAgIDNEIHRyYW5zZm9y
bXMgKG1vcmUgdGhhbiBqdXN0IHRyYW5zbGF0aW9ucykgYXJlIHN0aWxsIG5vdCBkcmF3bi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAg
ICAgICAgVGVzdDogY29tcG9zaXRpbmcvdGlsaW5nCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNhbGN1bGF0ZUNsaXBw
ZWRVcGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21p
dW06OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyb290TGF5ZXJDb250ZW50UmVjdCk6CisKIDIwMTAtMTAtMDUgIERp
ZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCAyMGEyZDcwYjIwZTA4
OTY0MmQ2ODNkNDI3ODMwY2ZjZmFkMGUwNTk1Li4yNGQ5ZDMwOGFmYjVlMGY3ZGQyY2Q3M2ZhNmVl
N2M4OTRkNGUwMmQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtMTI0LDYgKzEyNCw3IEBA
IFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpj
cmVhdGUoR3JhcGhpY3NMYXllckNocm9tCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hy
b21pdW0ob3duZXIpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZSgwKQorICAgICwgbV9za2lwc0Ry
YXcoZmFsc2UpCiB7CiB9CiAKQEAgLTE0Miw2ICsxNDMsMzYgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgfQogfQogCitib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpyZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcyk7Cit9CisKK3Zv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OmNhbGN1bGF0ZUNsaXBwZWRVcGRhdGVSZWN0KEludFJl
Y3QmIGRpcnR5UmVjdCwgSW50UmVjdCYgZHJhd1JlY3QpIGNvbnN0Cit7CisgICAgLy8gRm9yIHRo
ZSBnaXZlbiBsYXllciBzaXplIGFuZCBjb250ZW50IHJlY3QsIGNhbGN1bGF0ZToKKyAgICAvLyAx
KSBUaGUgbWluaW1hbCB0ZXh0dXJlIHNwYWNlIHJlY3RhbmdsZSB0byBiZSB1cGxvYWRlZCwgcmV0
dXJuZWQgaW4gZGlydHlSZWN0LgorICAgIC8vIDIpIFRoZSBjb250ZW50IHJlY3QtcmVsYXRpdmUg
cmVjdGFuZ2xlIHRvIGRyYXcgdGhpcyB0ZXh0dXJlIGluLCByZXR1cm5lZCBpbiBkcmF3UmVjdC4K
KworICAgIGNvbnN0IEludFJlY3QgY29udGVudFJlY3QgPSBsYXllclJlbmRlcmVyKCktPnJvb3RM
YXllckNvbnRlbnRSZWN0KCk7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSA9IGRyYXdUcmFuc2Zvcm0oKTsKKyAgICAvLyBUaGUgbGF5ZXIncyBkcmF3IHRyYW5zZm9y
bSBwb2ludHMgdG8gdGhlIGNlbnRlciBvZiB0aGUgbGF5ZXIsIHJlbGF0aXZlIHRvCisgICAgLy8g
dGhlIGNvbnRlbnQgcmVjdC4gIGxheWVyUG9zIGlzIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0b3Ag
bGVmdCBvZiB0aGUKKyAgICAvLyBsYXllciB0byB0aGUgdG9wIGxlZnQgb2YgdGhlIGNvbnRlbnQg
cmVjdC4KKyAgICBjb25zdCBJbnRQb2ludCBsYXllclBvcyhtX2JvdW5kcy53aWR0aCgpIC8gMiAt
IHRyYW5zZm9ybS5tNDEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2JvdW5kcy5o
ZWlnaHQoKSAvIDIgLSB0cmFuc2Zvcm0ubTQyKCkpOworICAgIC8vIFRyYW5zZm9ybSB0aGUgY29u
dGVudFJlY3QgaW50byB0aGUgc3BhY2Ugb2YgdGhlIGxheWVyLgorICAgIEludFJlY3QgY29udGVu
dFJlY3RJbkxheWVyU3BhY2UobGF5ZXJQb3MsIGNvbnRlbnRSZWN0LnNpemUoKSk7CisKKyAgICAv
LyBDbGlwIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW5zdCB0aGUgdmlzaWJsZSByZWdpb24gaW4gdGhl
IGNvbnRlbnQgcmVjdAorICAgIC8vIGFuZCB1c2UgdGhhdCBhcyB0aGUgZHJhd2FibGUgdGV4dHVy
ZSwgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGxheWVyLgorICAgIGRpcnR5UmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsKKyAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGNvbnRl
bnRSZWN0SW5MYXllclNwYWNlKTsKKworICAgIC8vIFRoZSBkcmF3IHBvc2l0aW9uIGlzIHJlbGF0
aXZlIHRvIHRoZSBjb250ZW50IHJlY3QuCisgICAgZHJhd1JlY3QgPSBJbnRSZWN0KHRvUG9pbnQo
ZGlydHlSZWN0LmxvY2F0aW9uKCkgLSBsYXllclBvcyksIGRpcnR5UmVjdC5zaXplKCkpOworfQor
CiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiB7CiAgICAgUmVu
ZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gc3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJCYWNraW5n
Kj4obV9vd25lci0+Y2xpZW50KCkpOwpAQCAtMTUyLDI5ICsxODMsNDcgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQogCiAgICAgQVNTRVJUKGxheWVyUmVuZGVy
ZXIoKSk7CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVy
cyBhcmUgaW1wbGVtZW50ZWQuCi0gICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKLSAgICBpZiAoIWxh
eWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcykpIHsKLSAgICAgICAgbV9z
a2lwc0RyYXcgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgdm9pZCogcGl4
ZWxzID0gMDsKLSAgICBJbnRSZWN0IGRpcnR5UmVjdChtX2RpcnR5UmVjdCk7CisgICAgSW50UmVj
dCBkaXJ0eVJlY3Q7CisgICAgSW50UmVjdCB1cGRhdGVSZWN0OwogICAgIEludFNpemUgcmVxdWly
ZWRUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemU7CiAKLSAgICByZXF1aXJlZFRl
eHR1cmVTaXplID0gbV9ib3VuZHM7Ci0gICAgSW50UmVjdCBib3VuZHNSZWN0KEludFBvaW50KDAs
IDApLCBtX2JvdW5kcyk7Ci0KLSAgICAvLyBJZiB0aGUgdGV4dHVyZSBuZWVkcyB0byBiZSByZWFs
bG9jYXRlZCB0aGVuIHdlIG11c3QgcmVkcmF3IHRoZSBlbnRpcmUKLSAgICAvLyBjb250ZW50cyBv
ZiB0aGUgbGF5ZXIuCi0gICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUgIT0gbV9hbGxvY2F0ZWRU
ZXh0dXJlU2l6ZSkKLSAgICAgICAgZGlydHlSZWN0ID0gYm91bmRzUmVjdDsKLSAgICBlbHNlIHsK
LSAgICAgICAgLy8gQ2xpcCB0aGUgZGlydHlSZWN0IHRvIHRoZSBzaXplIG9mIHRoZSBsYXllciB0
byBhdm9pZCBkcmF3aW5nIG91dHNpZGUKLSAgICAgICAgLy8gdGhlIGJvdW5kcyBvZiB0aGUgYmFj
a2luZyB0ZXh0dXJlLgotICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGJvdW5kc1JlY3QpOwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBs
ZW1lbnRlZC4KKyAgICBpZiAocmVxdWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpKSB7CisgICAgICAg
IC8vIEEgbGF5ZXIgd2l0aCAzRCB0cmFuc2Zvcm1zIGNvdWxkIHJlcXVpcmUgYW4gYXJiaXRyYXJp
bHkgbGFyZ2UgbnVtYmVyCisgICAgICAgIC8vIG9mIHRleGVscyB0byBiZSByZXBhaW50ZWQsIHNv
IGlnbm9yZSB0aGVzZSBsYXllcnMgdW50aWwgdGlsaW5nIGlzCisgICAgICAgIC8vIGltcGxlbWVu
dGVkLgorICAgICAgICBpZiAoIWRyYXdUcmFuc2Zvcm0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlv
bigpKSB7CisgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxjdWxhdGVDbGlwcGVkVXBkYXRlUmVjdChkaXJ0
eVJlY3QsIG1fbGFyZ2VMYXllckRyYXdSZWN0KTsKKyAgICAgICAgaWYgKCFsYXllclJlbmRlcmVy
KCktPmNoZWNrVGV4dHVyZVNpemUobV9sYXJnZUxheWVyRHJhd1JlY3Quc2l6ZSgpKSkgeworICAg
ICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmIChtX2xhcmdlTGF5ZXJEaXJ0eVJlY3QgPT0gZGlydHlSZWN0KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbGFyZ2VMYXllckRpcnR5UmVjdCA9IGRpcnR5
UmVjdDsKKyAgICAgICAgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGRpcnR5UmVjdC5zaXplKCk7Cisg
ICAgICAgIHVwZGF0ZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBkaXJ0eVJlY3Quc2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkaXJ0eVJlY3QgPSBJbnRSZWN0KG1fZGlydHlS
ZWN0KTsKKyAgICAgICAgSW50UmVjdCBib3VuZHNSZWN0KEludFBvaW50KDAsIDApLCBtX2JvdW5k
cyk7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBtX2JvdW5kczsKKyAgICAgICAgLy8g
SWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUgcmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJh
dyB0aGUgZW50aXJlCisgICAgICAgIC8vIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KKyAgICAgICAg
aWYgKHJlcXVpcmVkVGV4dHVyZVNpemUgIT0gbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSkKKyAgICAg
ICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1JlY3Q7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgLy8gQ2xpcCB0aGUgZGlydHlSZWN0IHRvIHRoZSBzaXplIG9mIHRoZSBsYXllciB0byBhdm9p
ZCBkcmF3aW5nCisgICAgICAgICAgICAvLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGJhY2tp
bmcgdGV4dHVyZS4KKyAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoYm91bmRzUmVjdCk7
CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlUmVjdCA9IGRpcnR5UmVjdDsKICAgICB9CiAKICNp
ZiBQTEFURk9STShTS0lBKQpAQCAtMjM5LDcgKzI4OCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAgICAgICAgdGV4dHVyZUlkID0gbGF5ZXJSZW5kZXJl
cigpLT5jcmVhdGVMYXllclRleHR1cmUoKTsKIAogICAgIGlmIChwaXhlbHMpCi0gICAgICAgIHVw
ZGF0ZVRleHR1cmVSZWN0KHBpeGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwg
IGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyAgICAgICAgdXBkYXRlVGV4dHVyZVJlY3QocGl4ZWxz
LCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1cmVTaXplLCB1cGRhdGVSZWN0LCB0ZXh0dXJlSWQp
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3dlck9mVHdvKGludCB4KQpAQCAtMjkwLDcg
KzMzOSw4IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KHZv
aWQqIHBpeGVscywgY29uc3QgSW50U2l6ZSYgYml0bWFwCiAgICAgICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5nZW5lcmF0ZU1pcG1hcChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkpOwog
CiAgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShGbG9hdFNpemUoKSk7Ci0gICAgbV9jb250ZW50c0Rp
cnR5ID0gZmFsc2U7CisgICAgLy8gTGFyZ2UgbGF5ZXJzIGFsd2F5cyBzdGF5IGRpcnR5LCBiZWNh
dXNlIHRoZXkgbmVlZCB0byB1cGRhdGUgd2hlbiB0aGUgY29udGVudCByZWN0IGNoYW5nZXMuCisg
ICAgbV9jb250ZW50c0RpcnR5ID0gcmVxdWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpOwogfQogCiB2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KCkKQEAgLTMwNiw5ICszNTYsMjEgQEAgdm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbnRlbnRzVGV4
dHVyZSkpOwogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5jb250ZW50U2hhZGVy
UHJvZ3JhbSgpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHN2LT5zaGFk
ZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwg
bGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKLSAg
ICAgICAgICAgICAgICAgICAgIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBk
cmF3T3BhY2l0eSgpLAotICAgICAgICAgICAgICAgICAgICAgc3YtPnNoYWRlck1hdHJpeExvY2F0
aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworCisgICAgaWYgKHJlcXVpcmVzQ2xp
cHBlZFVwZGF0ZVJlY3QoKSkgeworICAgICAgICBmbG9hdCBtNDMgPSBkcmF3VHJhbnNmb3JtKCku
bTQzKCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZTNkKG1fbGFyZ2VMYXllckRyYXdSZWN0LmNlbnRlcigpLngoKSwg
bV9sYXJnZUxheWVyRHJhd1JlY3QuY2VudGVyKCkueSgpLCBtNDMpOworICAgICAgICBkcmF3VGV4
dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSwgbV9sYXJnZUxheWVyRHJhd1JlY3Qu
d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3UmVjdC5o
ZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hh
ZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnNoYWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCkt
PnByb2plY3Rpb25NYXRyaXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3VHJhbnNm
b3JtKCksIG1fYm91bmRzLndpZHRoKCksIG1fYm91bmRzLmhlaWdodCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyYXdPcGFjaXR5KCksIHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAg
IH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQzMjVkZmI0NjM5NTBjNGI1Mzk2MzQ1
MTFlNjQ1Y2E0YjFkZTQ0YzAuLjIzOWM0NzljMjdmNmNjNTI2YjRhOWIyNzk5Njc3ZTYyNjI2ZmE1
MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTg0LDExICs4NCwxNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNp
Z25lZCB0ZXh0dXJlSWQsIE1pcG1hcFVzZSBnZW5lcmF0ZU1pcG1hcCA9IG5vTWlwbWFwKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CisgICAgYm9vbCByZXF1aXJlc0Ns
aXBwZWRVcGRhdGVSZWN0KCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX2NvbnRlbnRzVGV4dHVy
ZTsKICAgICBJbnRTaXplIG1fYWxsb2NhdGVkVGV4dHVyZVNpemU7CiAgICAgYm9vbCBtX3NraXBz
RHJhdzsKIAorcHJpdmF0ZToKKyAgICB2b2lkIGNhbGN1bGF0ZUNsaXBwZWRVcGRhdGVSZWN0KElu
dFJlY3QmIGRpcnR5UmVjdCwgSW50UmVjdCYgZHJhd1JlY3QpIGNvbnN0OworICAgIEludFJlY3Qg
bV9sYXJnZUxheWVyRHJhd1JlY3Q7CisgICAgSW50UmVjdCBtX2xhcmdlTGF5ZXJEaXJ0eVJlY3Q7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDJiYzFmZjNlZGZjNjM0NjcwNTMxNjZl
NGUxYmEzYWQwZjU5NWU3Ny4uOWE1ZmRkODczNTZhYjAxYzNmNjI5NGE1OTdlNzE0NDAyZDM0ZDZh
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNzUsNiArNzUsMTQgQEAgdm9pZCBJbWFnZUxheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIHsKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigp
KTsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFy
ZSBpbXBsZW1lbnRlZC4KKyAgICBpZiAocmVxdWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpKSB7Cisg
ICAgICAgIC8vIFVzZSB0aGUgYmFzZSB2ZXJzaW9uIG9mIHVwZGF0ZUNvbnRlbnRzIHdoaWNoIGRy
YXdzIGEgc3Vic2V0IG9mIHRoZQorICAgICAgICAvLyBpbWFnZSB0byBhIGJpdG1hcCwgYXMgdGhl
IHBpeGVsIGNvbnRlbnRzIGNhbid0IGJlIHVwbG9hZGVkIGRpcmVjdGx5LgorICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIHZvaWQqIHBpeGVscyA9IDA7CiAgICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVT
aXplOwogICAgIEludFNpemUgYml0bWFwU2l6ZTsKQEAgLTEzNiwxMiArMTQ0LDYgQEAgdm9pZCBJ
bWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICNlbHNlCiAjZXJyb3IgIk5lZWQg
dG8gaW1wbGVtZW50IGZvciB5b3VyIHBsYXRmb3JtLiIKICNlbmRpZgotICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KLSAgICBt
X3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlmICghbGF5ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1
cmVTaXplKHJlcXVpcmVkVGV4dHVyZVNpemUpKSB7Ci0gICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1
ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1f
Y29udGVudHNUZXh0dXJlOwogICAgIGlmICghdGV4dHVyZUlkKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IDQxMWI0MjA4MGZmZWY2YzQzOWE2ZmZhOGUzOWY1M2I1ZGNmZTVmZjMuLmQxZGM5
YzBlNjQ2MDNlYzUxOTU3NzE3ZjNjZDk0ZTk3YmYxNTg2YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTMwNyw4ICszMDcsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdAogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4
dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiAKLSAg
ICAvLyBTZXQgdGhlIHJvb3RWaXNpYmxlUmVjdCAtLS0gdXNlZCBieSBzdWJzZXF1ZW50IGRyYXdM
YXllcnMgY2FsbHMKKyAgICAvLyBTZXQgdGhlIHJvb3QgdmlzaWJsZS9jb250ZW50IHJlY3RzIC0t
LSB1c2VkIGJ5IHN1YnNlcXVlbnQgZHJhd0xheWVycyBjYWxscy4KICAgICBtX3Jvb3RWaXNpYmxl
UmVjdCA9IHZpc2libGVSZWN0OworICAgIG1fcm9vdENvbnRlbnRSZWN0ID0gY29udGVudFJlY3Q7
CiAKICAgICAvLyBUcmF2ZXJzZSB0aGUgbGF5ZXIgdHJlZSBhbmQgdXBkYXRlIHRoZSBsYXllciB0
cmFuc2Zvcm1zLgogICAgIGZsb2F0IG9wYWNpdHkgPSAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggYjcxNDU4NGY1ZTU3MTlhYzRlODk2ODk2NTUyZDQyMDg0Nzc0NDU2ZS4uOTUzMzhkZWRjZTcw
Y2IwYTg2Njc5Nzk4MzAwNzlhZTMyM2EyNjc3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0x
MDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzaXplT25zY3JlZW5Db250ZW50KGNv
bnN0IEludFNpemUmKTsKIAogICAgIEludFNpemUgcm9vdExheWVyVGV4dHVyZVNpemUoKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKG1fcm9vdExheWVyVGV4dHVyZVdpZHRoLCBtX3Jvb3RMYXllclRl
eHR1cmVIZWlnaHQpOyB9CisgICAgSW50UmVjdCByb290TGF5ZXJDb250ZW50UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdENvbnRlbnRSZWN0OyB9CiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBp
eGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpOwogCiBwcml2YXRlOgpAQCAt
MTYwLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3Jvb3RMYXllckNhbnZhc1Np
emU7CiAKICAgICBJbnRSZWN0IG1fcm9vdFZpc2libGVSZWN0OworICAgIEludFJlY3QgbV9yb290
Q29udGVudFJlY3Q7CiAKICAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70669</attachid>
            <date>2010-10-13 15:04:30 -0700</date>
            <delta_ts>2010-10-13 17:16:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101013150428.patch</filename>
            <type>text/plain</type>
            <size>17117</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMjQyZjNkZGVhODdkMjE4NDg3ZjRlZmVlMWQ0YTYyNTVmNDgxNWM1Li5iN2I4MmZi
Njc5OGUyZjU4NTYxOTNiNDUyMzliNTQ3Mzc2NTc1ZTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTAgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorCiAyMDEwLTEwLTA3ICBBbGJlcnQg
Si4gV29uZyAgPGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hy
b21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGls
aW5nL2h1Z2UtbGF5ZXItaW1nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIxNzc2MjJj
YjE0MmY1NWY2M2I4ODNkMTdkOTM5OWQ1OGEyYmY0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMCBAQAorVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBz
Y3JvbGwgb2ZmIHRoZSBib3R0b20uIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhlIGZp
cnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cgYm94
LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQgdmVyeSBsYXJnZSBjb21wb3NpdGVkIGlt
YWdlIGxheWVycy4KKworCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAyMDExMy4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUu
MDAgMjAxMTMuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDY4LjAwKQorICAgICAgICAgIChib3VuZHMgNTAwLjAw
IDIwMDAwLjAwKQorICAgICAgICAgICh1c2luZ1RpbGVkTGF5ZXIgMSkKKyAgICAgICAgICAoZHJh
d3NDb250ZW50IDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YWMzODM5NDZlMjg1NWRmYTRkODBhNjlkMWUwMWU2M2Q0ZWVjMjExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1n
Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+
CisgICAgPHRpdGxlPlRlc3Qgb2YgdmVyeSBsYXJnZSBpbWFnZSBsYXllcjwvdGl0bGU+CisKKyAg
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICNjb250YWluZXIg
eworICAgICAgd2lkdGg6IDUwMHB4OworICAgICAgaGVpZ2h0OiAyMDAwMHB4OworICAgICAgLXdl
YmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0T25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250YWluZXIiKQorICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaW1nLndp
ZHRoOworICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGltZy5oZWlnaHQ7CisgICAgICAgICAg
ICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgICAgICAgICAgY29u
dGV4dC5maWxsU3R5bGUgPSAieWVsbG93IjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
MCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFN0eWxlID0gInJlZCI7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwLCA1MCwg
MjAwLCAyMDApOworICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAiYmx1ZSI7CisgICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDUwLCBjYW52YXMuaGVpZ2h0IC0gMjUwLCAyMDAsIDIw
MCk7CisgICAgICAgICAgICBpbWcuc3JjID0gY2FudmFzLnRvRGF0YVVSTCgpOworCisgICAgICAg
ICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSBsYXlvdXRUZXN0Q29udHJv
bGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCB0ZXN0T25Mb2FkLCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+
CisgICAgICA8cD4KKyAgICAgICAgVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3Vn
aCB0byBzY3JvbGwgb2ZmIHRoZSBib3R0b20uCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBhIHJl
ZCBib3ggb24gdGhlIGZpcnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3gKKyAgICAgICAgbmVhciB0aGUg
Ym90dG9tIG9mIHRoZSB5ZWxsb3cgYm94LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQK
KyAgICAgICAgdmVyeSBsYXJnZSBjb21wb3NpdGVkIGltYWdlIGxheWVycy4KKyAgICAgIDwvcD4K
KyAgICAgICAgPGltZyBpZD0iY29udGFpbmVyIj4KKyAgICAgICAgPHByZSBpZD0ibGF5ZXJzIj5M
YXllciB0cmVlIGFwcGVhcnMgaGVyZSBpbiBEUlQuPC9wcmU+CisgIDwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAppbmRleCA4MThiYzliOGM1ZTY5ZjM1YjJi
MzYzYjgxOTExMDFjYzczODJlYWM3Li5hYTUyZDY4YzkzZDM0MjA2ZWRiNmU1ZTM5MWQ5YTM0NGM1
NmUyNWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCkBAIC03OCw2ICs3OCw3
IEBAIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLXJlc2l6ZS5odG1sCiBjb21wb3NpdGlu
Zy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVyLWNoaWxkcmVuLXJlc2l6ZS5odG1sCiBjb21w
b3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVyLWNoaWxkcmVuLmh0bWwKIGNvbXBv
c2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwKK2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxh
eWVyLWltZy5odG1sCiBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbAogCiAjIFVu
Y2F0ZWdvcml6ZWQgZWRpdGluZyBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NWM3YmRmYWRlNzBlMDdhZWViZGI5OGM1Y2Zj
YWIwNDJjZDIzZDQ4Li5mNTZiZDY1YmUwMjVhMDRkYWQ0NTc3Y2U0OWQ2ZDMyMjAzOTY2Y2ZhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDEwLTEwLTEwICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgc2hvcnQtdGVybSBzb2x1dGlvbiBmb3IgbGFyZ2UgbGF5ZXJzLiAgTGF5ZXJzIHRoYXQgYXJl
IHRvbworICAgICAgICBsYXJnZSB0byBiZSBjb250YWluZWQgaW4gYSBzaW5nbGUgdGV4dHVyZSBq
dXN0IHVwbG9hZCB0aGUgcG9ydGlvbiBvZgorICAgICAgICB0aGUgbGF5ZXIgdGhhdCBpcyB3aXRo
aW4gdGhlIGNvbnRlbnQgcmVjdC4gIEEgbG9uZ2VyLXRlcm0gc29sdXRpb24KKyAgICAgICAgaXMg
c3RpbGwgdGlsaW5nIHdpdGggcHJvcGVyIG1lbW9yeSBtYW5hZ2VtZW50LiAgTGF5ZXJzIHRoYXQg
aGF2ZSBmdWxsCisgICAgICAgIDNEIHRyYW5zZm9ybXMgKG1vcmUgdGhhbiBqdXN0IHRyYW5zbGF0
aW9ucykgYXJlIHN0aWxsIG5vdCBkcmF3bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvdGls
aW5nCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29u
dGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21p
dW06OnJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OmNhbGN1bGF0ZUNsaXBwZWRVcGRhdGVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyb290TGF5ZXJD
b250ZW50UmVjdCk6CisKIDIwMTAtMTAtMDUgIERpZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcAppbmRleCAyMGEyZDcwYjIwZTA4OTY0MmQ2ODNkNDI3ODMwY2ZjZmFkMGUwNTk1
Li4yNGQ5ZDMwOGFmYjVlMGY3ZGQyY2Q3M2ZhNmVlN2M4OTRkNGUwMmQ4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcApAQCAtMTI0LDYgKzEyNCw3IEBAIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hy
b21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9tCiBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBtX2NvbnRl
bnRzVGV4dHVyZSgwKQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCiB7CiB9CiAKQEAgLTE0Miw2
ICsxNDMsMzYgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygp
CiAgICAgfQogfQogCitib29sIENvbnRlbnRMYXllckNocm9taXVtOjpyZXF1aXJlc0NsaXBwZWRV
cGRhdGVSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tU
ZXh0dXJlU2l6ZShtX2JvdW5kcyk7Cit9CisKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNh
bGN1bGF0ZUNsaXBwZWRVcGRhdGVSZWN0KEludFJlY3QmIGRpcnR5UmVjdCwgSW50UmVjdCYgZHJh
d1JlY3QpIGNvbnN0Cit7CisgICAgLy8gRm9yIHRoZSBnaXZlbiBsYXllciBzaXplIGFuZCBjb250
ZW50IHJlY3QsIGNhbGN1bGF0ZToKKyAgICAvLyAxKSBUaGUgbWluaW1hbCB0ZXh0dXJlIHNwYWNl
IHJlY3RhbmdsZSB0byBiZSB1cGxvYWRlZCwgcmV0dXJuZWQgaW4gZGlydHlSZWN0LgorICAgIC8v
IDIpIFRoZSBjb250ZW50IHJlY3QtcmVsYXRpdmUgcmVjdGFuZ2xlIHRvIGRyYXcgdGhpcyB0ZXh0
dXJlIGluLCByZXR1cm5lZCBpbiBkcmF3UmVjdC4KKworICAgIGNvbnN0IEludFJlY3QgY29udGVu
dFJlY3QgPSBsYXllclJlbmRlcmVyKCktPnJvb3RMYXllckNvbnRlbnRSZWN0KCk7CisgICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm0oKTsKKyAg
ICAvLyBUaGUgbGF5ZXIncyBkcmF3IHRyYW5zZm9ybSBwb2ludHMgdG8gdGhlIGNlbnRlciBvZiB0
aGUgbGF5ZXIsIHJlbGF0aXZlIHRvCisgICAgLy8gdGhlIGNvbnRlbnQgcmVjdC4gIGxheWVyUG9z
IGlzIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0b3AgbGVmdCBvZiB0aGUKKyAgICAvLyBsYXllciB0
byB0aGUgdG9wIGxlZnQgb2YgdGhlIGNvbnRlbnQgcmVjdC4KKyAgICBjb25zdCBJbnRQb2ludCBs
YXllclBvcyhtX2JvdW5kcy53aWR0aCgpIC8gMiAtIHRyYW5zZm9ybS5tNDEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2JvdW5kcy5oZWlnaHQoKSAvIDIgLSB0cmFuc2Zvcm0ubTQy
KCkpOworICAgIC8vIFRyYW5zZm9ybSB0aGUgY29udGVudFJlY3QgaW50byB0aGUgc3BhY2Ugb2Yg
dGhlIGxheWVyLgorICAgIEludFJlY3QgY29udGVudFJlY3RJbkxheWVyU3BhY2UobGF5ZXJQb3Ms
IGNvbnRlbnRSZWN0LnNpemUoKSk7CisKKyAgICAvLyBDbGlwIHRoZSBlbnRpcmUgbGF5ZXIgYWdh
aW5zdCB0aGUgdmlzaWJsZSByZWdpb24gaW4gdGhlIGNvbnRlbnQgcmVjdAorICAgIC8vIGFuZCB1
c2UgdGhhdCBhcyB0aGUgZHJhd2FibGUgdGV4dHVyZSwgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGxh
eWVyLgorICAgIGRpcnR5UmVjdCA9IEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsK
KyAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGNvbnRlbnRSZWN0SW5MYXllclNwYWNlKTsKKworICAg
IC8vIFRoZSBkcmF3IHBvc2l0aW9uIGlzIHJlbGF0aXZlIHRvIHRoZSBjb250ZW50IHJlY3QuCisg
ICAgZHJhd1JlY3QgPSBJbnRSZWN0KHRvUG9pbnQoZGlydHlSZWN0LmxvY2F0aW9uKCkgLSBsYXll
clBvcyksIGRpcnR5UmVjdC5zaXplKCkpOworfQorCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVt
Ojp1cGRhdGVDb250ZW50cygpCiB7CiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0g
c3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJCYWNraW5nKj4obV9vd25lci0+Y2xpZW50KCkpOwpAQCAt
MTUyLDI5ICsxODMsNDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVu
dHMoKQogCiAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7CiAKLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCi0gICAgbV9z
a2lwc0RyYXcgPSBmYWxzZTsKLSAgICBpZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJl
U2l6ZShtX2JvdW5kcykpIHsKLSAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCiAgICAgdm9pZCogcGl4ZWxzID0gMDsKLSAgICBJbnRSZWN0IGRpcnR5
UmVjdChtX2RpcnR5UmVjdCk7CisgICAgSW50UmVjdCBkaXJ0eVJlY3Q7CisgICAgSW50UmVjdCB1
cGRhdGVSZWN0OwogICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXpl
IGJpdG1hcFNpemU7CiAKLSAgICByZXF1aXJlZFRleHR1cmVTaXplID0gbV9ib3VuZHM7Ci0gICAg
SW50UmVjdCBib3VuZHNSZWN0KEludFBvaW50KDAsIDApLCBtX2JvdW5kcyk7Ci0KLSAgICAvLyBJ
ZiB0aGUgdGV4dHVyZSBuZWVkcyB0byBiZSByZWFsbG9jYXRlZCB0aGVuIHdlIG11c3QgcmVkcmF3
IHRoZSBlbnRpcmUKLSAgICAvLyBjb250ZW50cyBvZiB0aGUgbGF5ZXIuCi0gICAgaWYgKHJlcXVp
cmVkVGV4dHVyZVNpemUgIT0gbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSkKLSAgICAgICAgZGlydHlS
ZWN0ID0gYm91bmRzUmVjdDsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gQ2xpcCB0aGUgZGlydHlS
ZWN0IHRvIHRoZSBzaXplIG9mIHRoZSBsYXllciB0byBhdm9pZCBkcmF3aW5nIG91dHNpZGUKLSAg
ICAgICAgLy8gdGhlIGJvdW5kcyBvZiB0aGUgYmFja2luZyB0ZXh0dXJlLgotICAgICAgICBkaXJ0
eVJlY3QuaW50ZXJzZWN0KGJvdW5kc1JlY3QpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0
ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KKyAgICBpZiAocmVxdWlyZXND
bGlwcGVkVXBkYXRlUmVjdCgpKSB7CisgICAgICAgIC8vIEEgbGF5ZXIgd2l0aCAzRCB0cmFuc2Zv
cm1zIGNvdWxkIHJlcXVpcmUgYW4gYXJiaXRyYXJpbHkgbGFyZ2UgbnVtYmVyCisgICAgICAgIC8v
IG9mIHRleGVscyB0byBiZSByZXBhaW50ZWQsIHNvIGlnbm9yZSB0aGVzZSBsYXllcnMgdW50aWwg
dGlsaW5nIGlzCisgICAgICAgIC8vIGltcGxlbWVudGVkLgorICAgICAgICBpZiAoIWRyYXdUcmFu
c2Zvcm0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CisgICAgICAgICAgICBtX3NraXBz
RHJhdyA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
YWxjdWxhdGVDbGlwcGVkVXBkYXRlUmVjdChkaXJ0eVJlY3QsIG1fbGFyZ2VMYXllckRyYXdSZWN0
KTsKKyAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVyZVNpemUobV9sYXJn
ZUxheWVyRHJhd1JlY3Quc2l6ZSgpKSkgeworICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2xhcmdlTGF5
ZXJEaXJ0eVJlY3QgPT0gZGlydHlSZWN0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1fbGFyZ2VMYXllckRpcnR5UmVjdCA9IGRpcnR5UmVjdDsKKyAgICAgICAgcmVxdWlyZWRUZXh0
dXJlU2l6ZSA9IGRpcnR5UmVjdC5zaXplKCk7CisgICAgICAgIHVwZGF0ZVJlY3QgPSBJbnRSZWN0
KEludFBvaW50KDAsIDApLCBkaXJ0eVJlY3Quc2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBkaXJ0eVJlY3QgPSBJbnRSZWN0KG1fZGlydHlSZWN0KTsKKyAgICAgICAgSW50UmVjdCBib3Vu
ZHNSZWN0KEludFBvaW50KDAsIDApLCBtX2JvdW5kcyk7CisgICAgICAgIHJlcXVpcmVkVGV4dHVy
ZVNpemUgPSBtX2JvdW5kczsKKyAgICAgICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUg
cmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCisgICAgICAgIC8vIGNv
bnRlbnRzIG9mIHRoZSBsYXllci4KKyAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUgIT0g
bV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSkKKyAgICAgICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1Jl
Y3Q7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xpcCB0aGUgZGlydHlSZWN0IHRv
IHRoZSBzaXplIG9mIHRoZSBsYXllciB0byBhdm9pZCBkcmF3aW5nCisgICAgICAgICAgICAvLyBv
dXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZS4KKyAgICAgICAgICAgIGRp
cnR5UmVjdC5pbnRlcnNlY3QoYm91bmRzUmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRl
UmVjdCA9IGRpcnR5UmVjdDsKICAgICB9CiAKICNpZiBQTEFURk9STShTS0lBKQpAQCAtMjM5LDcg
KzI4OCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKICAg
ICAgICAgdGV4dHVyZUlkID0gbGF5ZXJSZW5kZXJlcigpLT5jcmVhdGVMYXllclRleHR1cmUoKTsK
IAogICAgIGlmIChwaXhlbHMpCi0gICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0KHBpeGVscywgYml0
bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyAg
ICAgICAgdXBkYXRlVGV4dHVyZVJlY3QocGl4ZWxzLCBiaXRtYXBTaXplLCByZXF1aXJlZFRleHR1
cmVTaXplLCB1cGRhdGVSZWN0LCB0ZXh0dXJlSWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNQb3dlck9mVHdvKGludCB4KQpAQCAtMjkwLDcgKzMzOSw4IEBAIHZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50U2l6ZSYg
Yml0bWFwCiAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZW5lcmF0ZU1pcG1hcChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkpOwogCiAgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShG
bG9hdFNpemUoKSk7Ci0gICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAgLy8gTGFyZ2Ug
bGF5ZXJzIGFsd2F5cyBzdGF5IGRpcnR5LCBiZWNhdXNlIHRoZXkgbmVlZCB0byB1cGRhdGUgd2hl
biB0aGUgY29udGVudCByZWN0IGNoYW5nZXMuCisgICAgbV9jb250ZW50c0RpcnR5ID0gcmVxdWly
ZXNDbGlwcGVkVXBkYXRlUmVjdCgpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpk
cmF3KCkKQEAgLTMwNiw5ICszNTYsMjEgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJh
dygpCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2NvbnRlbnRzVGV4dHVyZSkpOwogICAgIGxheWVyUmVuZGVyZXIo
KS0+dXNlU2hhZGVyKHN2LT5jb250ZW50U2hhZGVyUHJvZ3JhbSgpKTsKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dW5pZm9ybTFpKHN2LT5zaGFkZXJTYW1wbGVyTG9jYXRpb24oKSwgMCkpOwot
ICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9u
TWF0cml4KCksIGRyYXdUcmFuc2Zvcm0oKSwKLSAgICAgICAgICAgICAgICAgICAgIGJvdW5kcygp
LndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLAotICAgICAgICAgICAg
ICAgICAgICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0
aW9uKCkpOworCisgICAgaWYgKHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKSkgeworICAgICAg
ICBmbG9hdCBtNDMgPSBkcmF3VHJhbnNmb3JtKCkubTQzKCk7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKG1fbGFy
Z2VMYXllckRyYXdSZWN0LmNlbnRlcigpLngoKSwgbV9sYXJnZUxheWVyRHJhd1JlY3QuY2VudGVy
KCkueSgpLCBtNDMpOworICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVu
ZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybSwgbV9sYXJnZUxheWVyRHJhd1JlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2xhcmdlTGF5ZXJEcmF3UmVjdC5oZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnNo
YWRlckFscGhhTG9jYXRpb24oKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHJhd1RleHR1cmVk
UXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBkcmF3VHJhbnNmb3JtKCksIG1fYm91bmRzLndpZHRoKCksIG1f
Ym91bmRzLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdPcGFjaXR5KCks
IHN2LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN2
LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
CmluZGV4IGQzMjVkZmI0NjM5NTBjNGI1Mzk2MzQ1MTFlNjQ1Y2E0YjFkZTQ0YzAuLjIzOWM0Nzlj
MjdmNmNjNTI2YjRhOWIyNzk5Njc3ZTYyNjI2ZmE1MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAg
LTg0LDExICs4NCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIE1pcG1hcFVzZSBn
ZW5lcmF0ZU1pcG1hcCA9IG5vTWlwbWFwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVz
b3VyY2VzKCk7CisgICAgYm9vbCByZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCkgY29uc3Q7CiAK
ICAgICB1bnNpZ25lZCBtX2NvbnRlbnRzVGV4dHVyZTsKICAgICBJbnRTaXplIG1fYWxsb2NhdGVk
VGV4dHVyZVNpemU7CiAgICAgYm9vbCBtX3NraXBzRHJhdzsKIAorcHJpdmF0ZToKKyAgICB2b2lk
IGNhbGN1bGF0ZUNsaXBwZWRVcGRhdGVSZWN0KEludFJlY3QmIGRpcnR5UmVjdCwgSW50UmVjdCYg
ZHJhd1JlY3QpIGNvbnN0OworICAgIEludFJlY3QgbV9sYXJnZUxheWVyRHJhd1JlY3Q7CisgICAg
SW50UmVjdCBtX2xhcmdlTGF5ZXJEaXJ0eVJlY3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNDJiYzFmZjNlZGZjNjM0NjcwNTMxNjZlNGUxYmEzYWQwZjU5NWU3Ny4uOWE1ZmRkODcz
NTZhYjAxYzNmNjI5NGE1OTdlNzE0NDAyZDM0ZDZhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAt
NzUsNiArNzUsMTQgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkK
IHsKICAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpKTsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KKyAgICBpZiAocmVx
dWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpKSB7CisgICAgICAgIC8vIFVzZSB0aGUgYmFzZSB2ZXJz
aW9uIG9mIHVwZGF0ZUNvbnRlbnRzIHdoaWNoIGRyYXdzIGEgc3Vic2V0IG9mIHRoZQorICAgICAg
ICAvLyBpbWFnZSB0byBhIGJpdG1hcCwgYXMgdGhlIHBpeGVsIGNvbnRlbnRzIGNhbid0IGJlIHVw
bG9hZGVkIGRpcmVjdGx5LgorICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29u
dGVudHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHZvaWQqIHBpeGVscyA9IDA7
CiAgICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplOwogICAgIEludFNpemUgYml0bWFwU2l6
ZTsKQEAgLTEzNiwxMiArMTQ0LDYgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzKCkKICNlbHNlCiAjZXJyb3IgIk5lZWQgdG8gaW1wbGVtZW50IGZvciB5b3VyIHBsYXRm
b3JtLiIKICNlbmRpZgotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQg
bGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KLSAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotICAgIGlm
ICghbGF5ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKHJlcXVpcmVkVGV4dHVyZVNpemUp
KSB7Ci0gICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
IAogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1fY29udGVudHNUZXh0dXJlOwogICAgIGlmICgh
dGV4dHVyZUlkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDQxMWI0MjA4MGZmZWY2YzQz
OWE2ZmZhOGUzOWY1M2I1ZGNmZTVmZjMuLmQxZGM5YzBlNjQ2MDNlYzUxOTU3NzE3ZjNjZDk0ZTk3
YmYxNTg2YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTMwNyw4ICszMDcsOSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiB2aXNp
YmxlUmVjdCwgY29uc3QgSW50UmVjdAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5h
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNE
OjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiAKLSAgICAvLyBTZXQgdGhlIHJvb3RWaXNpYmxlUmVj
dCAtLS0gdXNlZCBieSBzdWJzZXF1ZW50IGRyYXdMYXllcnMgY2FsbHMKKyAgICAvLyBTZXQgdGhl
IHJvb3QgdmlzaWJsZS9jb250ZW50IHJlY3RzIC0tLSB1c2VkIGJ5IHN1YnNlcXVlbnQgZHJhd0xh
eWVycyBjYWxscy4KICAgICBtX3Jvb3RWaXNpYmxlUmVjdCA9IHZpc2libGVSZWN0OworICAgIG1f
cm9vdENvbnRlbnRSZWN0ID0gY29udGVudFJlY3Q7CiAKICAgICAvLyBUcmF2ZXJzZSB0aGUgbGF5
ZXIgdHJlZSBhbmQgdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm1zLgogICAgIGZsb2F0IG9wYWNp
dHkgPSAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYjcxNDU4NGY1ZTU3MTlhYzRlODk2ODk2
NTUyZDQyMDg0Nzc0NDU2ZS4uOTUzMzhkZWRjZTcwY2IwYTg2Njc5Nzk4MzAwNzlhZTMyM2EyNjc3
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzaXplT25zY3JlZW5Db250ZW50KGNvbnN0IEludFNpemUmKTsKIAogICAgIEludFNp
emUgcm9vdExheWVyVGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcm9vdExh
eWVyVGV4dHVyZVdpZHRoLCBtX3Jvb3RMYXllclRleHR1cmVIZWlnaHQpOyB9CisgICAgSW50UmVj
dCByb290TGF5ZXJDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENvbnRlbnRSZWN0
OyB9CiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IElu
dFJlY3QmIHJlY3QpOwogCiBwcml2YXRlOgpAQCAtMTYwLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAg
ICAgSW50U2l6ZSBtX3Jvb3RMYXllckNhbnZhc1NpemU7CiAKICAgICBJbnRSZWN0IG1fcm9vdFZp
c2libGVSZWN0OworICAgIEludFJlY3QgbV9yb290Q29udGVudFJlY3Q7CiAKICAgICBpbnQgbV9t
YXhUZXh0dXJlU2l6ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70688</attachid>
            <date>2010-10-13 17:16:37 -0700</date>
            <delta_ts>2010-10-14 00:18:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47016-20101013171636.patch</filename>
            <type>text/plain</type>
            <size>18180</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMjQyZjNkZGVhODdkMjE4NDg3ZjRlZmVlMWQ0YTYyNTVmNDgxNWM1Li42MDgwY2Vm
OWZlMGM2NGY0OTkwODE2YjJjZTZjNTIwZmQyYjYwNGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMTAgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB2
ZXJ5IGxhcmdlIGltYWdlIGxheWVycy4gIFNraXAgdGhpcyB0ZXN0IGZvciBtYWMtd2syCisgICAg
ICAgIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiBsYXllclRyZWVBc1RleHQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDE2CisKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0tZ3B1L2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTAtMDcgIEFsYmVydCBKLiBXb25nICA8YWp3
b25nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBDaHJvbWl1bSBidWlsZCBm
aXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXll
ci1pbWcuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWlt
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlhYzM4Mzk0NmUyODU1ZGZhNGQ4MGE2OWQxZTAxZTYzZDRlZWMy
MTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVn
ZS1sYXllci1pbWcuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICA8aGVhZD4KKyAgICA8dGl0bGU+VGVzdCBvZiB2ZXJ5IGxhcmdlIGltYWdlIGxheWVyPC90
aXRsZT4KKworICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAg
I2NvbnRhaW5lciB7CisgICAgICB3aWR0aDogNTAwcHg7CisgICAgICBoZWlnaHQ6IDIwMDAwcHg7
CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOworICAgIH0KKyAgICA8L3N0
eWxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RPbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgICAgICB2YXIgaW1nID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpCisgICAgICAgICAgICBjYW52YXMud2lk
dGggPSBpbWcud2lkdGg7CisgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nLmhlaWdodDsK
KyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisgICAg
ICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJ5ZWxsb3ciOworICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgICAgICAg
ICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoNTAsIDUwLCAyMDAsIDIwMCk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJi
bHVlIjsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoNTAsIGNhbnZhcy5oZWlnaHQgLSAy
NTAsIDIwMCwgMjAwKTsKKyAgICAgICAgICAgIGltZy5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7
CisKKyAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxheW91
dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIHRlc3RPbkxvYWQsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFk
PgorICA8Ym9keT4KKyAgICAgIDxwPgorICAgICAgICBUaGUgeWVsbG93IGJveCBzaG91bGQgYmUg
bGFyZ2UgZW5vdWdoIHRvIHNjcm9sbCBvZmYgdGhlIGJvdHRvbS4KKyAgICAgICAgVGhlcmUgc2hv
dWxkIGJlIGEgcmVkIGJveCBvbiB0aGUgZmlyc3QgcGFnZSBhbmQgYSBibHVlIGJveAorICAgICAg
ICBuZWFyIHRoZSBib3R0b20gb2YgdGhlIHllbGxvdyBib3guIFRoaXMgdGVzdHMgdGhhdCB3ZSBj
YW4gc3VwcG9ydAorICAgICAgICB2ZXJ5IGxhcmdlIGNvbXBvc2l0ZWQgaW1hZ2UgbGF5ZXJzLgor
ICAgICAgPC9wPgorICAgICAgICA8aW1nIGlkPSJjb250YWluZXIiPgorICAgICAgICA8cHJlIGlk
PSJsYXllcnMiPkxheWVyIHRyZWUgYXBwZWFycyBoZXJlIGluIERSVC48L3ByZT4KKyAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1
L2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIt
aW1nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTllNDU2ODUwMjVjNzkzNjNmZjA4ODEzMWRl
YzM0ZjM2ZDk4NmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tZ3B1L2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOSBAQAorVGhlIHllbGxvdyBib3ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0
byBzY3JvbGwgb2ZmIHRoZSBib3R0b20uIFRoZXJlIHNob3VsZCBiZSBhIHJlZCBib3ggb24gdGhl
IGZpcnN0IHBhZ2UgYW5kIGEgYmx1ZSBib3ggbmVhciB0aGUgYm90dG9tIG9mIHRoZSB5ZWxsb3cg
Ym94LiBUaGlzIHRlc3RzIHRoYXQgd2UgY2FuIHN1cHBvcnQgdmVyeSBsYXJnZSBjb21wb3NpdGVk
IGltYWdlIGxheWVycy4KKworCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAyMDEx
OS4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3
ODUuMDAgMjAxMTkuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDcyLjAwKQorICAgICAgICAgIChib3VuZHMgNTAw
LjAwIDIwMDAwLjAwKQorICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgKQorICAg
ICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKaW5k
ZXggODE4YmM5YjhjNWU2OWYzNWIyYjM2M2I4MTkxMTAxY2M3MzgyZWFjNy4uYWE1MmQ2OGM5M2Qz
NDIwNmVkYjZlNWUzOTFkOWEzNDRjNTZlMjVkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
U2tpcHBlZApAQCAtNzgsNiArNzgsNyBAQCBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1y
ZXNpemUuaHRtbAogY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0aC1sYXllci1jaGls
ZHJlbi1yZXNpemUuaHRtbAogY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0aC1sYXll
ci1jaGlsZHJlbi5odG1sCiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci5odG1sCitjb21w
b3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWcuaHRtbAogY29tcG9zaXRpbmcvdmlkZW8vdmlk
ZW8tcG9zdGVyLmh0bWwKIAogIyBVbmNhdGVnb3JpemVkIGVkaXRpbmcgZmFpbHVyZXMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1s
YXllci1pbWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIxNzc2
MjJjYjE0MmY1NWY2M2I4ODNkMTdkOTM5OWQ1OGEyYmY0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1pbWct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1RoZSB5ZWxsb3cgYm94IHNob3VsZCBiZSBs
YXJnZSBlbm91Z2ggdG8gc2Nyb2xsIG9mZiB0aGUgYm90dG9tLiBUaGVyZSBzaG91bGQgYmUgYSBy
ZWQgYm94IG9uIHRoZSBmaXJzdCBwYWdlIGFuZCBhIGJsdWUgYm94IG5lYXIgdGhlIGJvdHRvbSBv
ZiB0aGUgeWVsbG93IGJveC4gVGhpcyB0ZXN0cyB0aGF0IHdlIGNhbiBzdXBwb3J0IHZlcnkgbGFy
Z2UgY29tcG9zaXRlZCBpbWFnZSBsYXllcnMuCisKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5k
cyA3ODUuMDAgMjAxMTMuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgIChib3VuZHMgNzg1LjAwIDIwMTEzLjAwKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCA2OC4wMCkKKyAgICAgICAg
ICAoYm91bmRzIDUwMC4wMCAyMDAwMC4wMCkKKyAgICAgICAgICAodXNpbmdUaWxlZExheWVyIDEp
CisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICApCisgICAgICApCisgICAgKQor
ICApCispCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggODVjN2JkZmFkZTcwZTA3YWVlYmRiOThjNWNmY2FiMDQyY2QyM2Q0OC4uZjU2YmQ2
NWJlMDI1YTA0ZGFkNDU3N2NlNDlkNmQzMjIwMzk2NmNmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0x
MC0xMCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNob3J0LXRlcm0gc29sdXRp
b24gZm9yIGxhcmdlIGxheWVycy4gIExheWVycyB0aGF0IGFyZSB0b28KKyAgICAgICAgbGFyZ2Ug
dG8gYmUgY29udGFpbmVkIGluIGEgc2luZ2xlIHRleHR1cmUganVzdCB1cGxvYWQgdGhlIHBvcnRp
b24gb2YKKyAgICAgICAgdGhlIGxheWVyIHRoYXQgaXMgd2l0aGluIHRoZSBjb250ZW50IHJlY3Qu
ICBBIGxvbmdlci10ZXJtIHNvbHV0aW9uCisgICAgICAgIGlzIHN0aWxsIHRpbGluZyB3aXRoIHBy
b3BlciBtZW1vcnkgbWFuYWdlbWVudC4gIExheWVycyB0aGF0IGhhdmUgZnVsbAorICAgICAgICAz
RCB0cmFuc2Zvcm1zIChtb3JlIHRoYW4ganVzdCB0cmFuc2xhdGlvbnMpIGFyZSBzdGlsbCBub3Qg
ZHJhd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NzAxNgorCisgICAgICAgIFRlc3Q6IGNvbXBvc2l0aW5nL3RpbGluZworCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OkNvbnRlbnRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpyZXF1aXJlc0NsaXBwZWRV
cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjYWxj
dWxhdGVDbGlwcGVkVXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVy
Q2hyb21pdW06OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cm9vdExheWVyQ29udGVudFJlY3QpOgorCiAyMDEw
LTEwLTA1ICBEaWVnbyBHb256YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjBh
MmQ3MGIyMGUwODk2NDJkNjgzZDQyNzgzMGNmY2ZhZDBlMDU5NS4uMjRkOWQzMDhhZmI1ZTBmN2Rk
MmNkNzNmYTZlZTdjODk0ZDRlMDJkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEyNCw2
ICsxMjQsNyBAQCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbQogQ29udGVudExheWVyQ2hyb21pdW06
OkNvbnRlbnRMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiAgICAg
OiBMYXllckNocm9taXVtKG93bmVyKQogICAgICwgbV9jb250ZW50c1RleHR1cmUoMCkKKyAgICAs
IG1fc2tpcHNEcmF3KGZhbHNlKQogewogfQogCkBAIC0xNDIsNiArMTQzLDM2IEBAIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgIH0KIH0KIAorYm9vbCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6cmVxdWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVyZVNpemUobV9ib3VuZHMp
OworfQorCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjYWxjdWxhdGVDbGlwcGVkVXBkYXRl
UmVjdChJbnRSZWN0JiBkaXJ0eVJlY3QsIEludFJlY3QmIGRyYXdSZWN0KSBjb25zdAoreworICAg
IC8vIEZvciB0aGUgZ2l2ZW4gbGF5ZXIgc2l6ZSBhbmQgY29udGVudCByZWN0LCBjYWxjdWxhdGU6
CisgICAgLy8gMSkgVGhlIG1pbmltYWwgdGV4dHVyZSBzcGFjZSByZWN0YW5nbGUgdG8gYmUgdXBs
b2FkZWQsIHJldHVybmVkIGluIGRpcnR5UmVjdC4KKyAgICAvLyAyKSBUaGUgY29udGVudCByZWN0
LXJlbGF0aXZlIHJlY3RhbmdsZSB0byBkcmF3IHRoaXMgdGV4dHVyZSBpbiwgcmV0dXJuZWQgaW4g
ZHJhd1JlY3QuCisKKyAgICBjb25zdCBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gbGF5ZXJSZW5kZXJl
cigpLT5yb290TGF5ZXJDb250ZW50UmVjdCgpOworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtKCk7CisgICAgLy8gVGhlIGxheWVyJ3MgZHJh
dyB0cmFuc2Zvcm0gcG9pbnRzIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLCByZWxhdGl2ZSB0
bworICAgIC8vIHRoZSBjb250ZW50IHJlY3QuICBsYXllclBvcyBpcyB0aGUgZGlzdGFuY2UgZnJv
bSB0aGUgdG9wIGxlZnQgb2YgdGhlCisgICAgLy8gbGF5ZXIgdG8gdGhlIHRvcCBsZWZ0IG9mIHRo
ZSBjb250ZW50IHJlY3QuCisgICAgY29uc3QgSW50UG9pbnQgbGF5ZXJQb3MobV9ib3VuZHMud2lk
dGgoKSAvIDIgLSB0cmFuc2Zvcm0ubTQxKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ib3VuZHMuaGVpZ2h0KCkgLyAyIC0gdHJhbnNmb3JtLm00MigpKTsKKyAgICAvLyBUcmFuc2Zv
cm0gdGhlIGNvbnRlbnRSZWN0IGludG8gdGhlIHNwYWNlIG9mIHRoZSBsYXllci4KKyAgICBJbnRS
ZWN0IGNvbnRlbnRSZWN0SW5MYXllclNwYWNlKGxheWVyUG9zLCBjb250ZW50UmVjdC5zaXplKCkp
OworCisgICAgLy8gQ2xpcCB0aGUgZW50aXJlIGxheWVyIGFnYWluc3QgdGhlIHZpc2libGUgcmVn
aW9uIGluIHRoZSBjb250ZW50IHJlY3QKKyAgICAvLyBhbmQgdXNlIHRoYXQgYXMgdGhlIGRyYXdh
YmxlIHRleHR1cmUsIGluc3RlYWQgb2YgdGhlIGVudGlyZSBsYXllci4KKyAgICBkaXJ0eVJlY3Qg
PSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBtX2JvdW5kcyk7CisgICAgZGlydHlSZWN0LmludGVy
c2VjdChjb250ZW50UmVjdEluTGF5ZXJTcGFjZSk7CisKKyAgICAvLyBUaGUgZHJhdyBwb3NpdGlv
biBpcyByZWxhdGl2ZSB0byB0aGUgY29udGVudCByZWN0LgorICAgIGRyYXdSZWN0ID0gSW50UmVj
dCh0b1BvaW50KGRpcnR5UmVjdC5sb2NhdGlvbigpIC0gbGF5ZXJQb3MpLCBkaXJ0eVJlY3Quc2l6
ZSgpKTsKK30KKwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHMoKQog
ewogICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHN0YXRpY19jYXN0PFJlbmRlckxh
eWVyQmFja2luZyo+KG1fb3duZXItPmNsaWVudCgpKTsKQEAgLTE1MiwyOSArMTgzLDQ3IEBAIHZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCkKIAogICAgIEFTU0VSVChs
YXllclJlbmRlcmVyKCkpOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0
aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgotICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7Ci0g
ICAgaWYgKCFsYXllclJlbmRlcmVyKCktPmNoZWNrVGV4dHVyZVNpemUobV9ib3VuZHMpKSB7Ci0g
ICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IHZvaWQqIHBpeGVscyA9IDA7Ci0gICAgSW50UmVjdCBkaXJ0eVJlY3QobV9kaXJ0eVJlY3QpOwor
ICAgIEludFJlY3QgZGlydHlSZWN0OworICAgIEludFJlY3QgdXBkYXRlUmVjdDsKICAgICBJbnRT
aXplIHJlcXVpcmVkVGV4dHVyZVNpemU7CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplOwogCi0gICAg
cmVxdWlyZWRUZXh0dXJlU2l6ZSA9IG1fYm91bmRzOwotICAgIEludFJlY3QgYm91bmRzUmVjdChJ
bnRQb2ludCgwLCAwKSwgbV9ib3VuZHMpOwotCi0gICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMg
dG8gYmUgcmVhbGxvY2F0ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCi0gICAgLy8g
Y29udGVudHMgb2YgdGhlIGxheWVyLgotICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1f
YWxsb2NhdGVkVGV4dHVyZVNpemUpCi0gICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1JlY3Q7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0
aGUgbGF5ZXIgdG8gYXZvaWQgZHJhd2luZyBvdXRzaWRlCi0gICAgICAgIC8vIHRoZSBib3VuZHMg
b2YgdGhlIGJhY2tpbmcgdGV4dHVyZS4KLSAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChib3Vu
ZHNSZWN0KTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVy
cyBhcmUgaW1wbGVtZW50ZWQuCisgICAgaWYgKHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKSkg
eworICAgICAgICAvLyBBIGxheWVyIHdpdGggM0QgdHJhbnNmb3JtcyBjb3VsZCByZXF1aXJlIGFu
IGFyYml0cmFyaWx5IGxhcmdlIG51bWJlcgorICAgICAgICAvLyBvZiB0ZXhlbHMgdG8gYmUgcmVw
YWludGVkLCBzbyBpZ25vcmUgdGhlc2UgbGF5ZXJzIHVudGlsIHRpbGluZyBpcworICAgICAgICAv
LyBpbXBsZW1lbnRlZC4KKyAgICAgICAgaWYgKCFkcmF3VHJhbnNmb3JtKCkuaXNJZGVudGl0eU9y
VHJhbnNsYXRpb24oKSkgeworICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsY3VsYXRlQ2xpcHBlZFVwZGF0
ZVJlY3QoZGlydHlSZWN0LCBtX2xhcmdlTGF5ZXJEcmF3UmVjdCk7CisgICAgICAgIGlmICghbGF5
ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKG1fbGFyZ2VMYXllckRyYXdSZWN0LnNpemUo
KSkpIHsKKyAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9sYXJnZUxheWVyRGlydHlSZWN0ID09IGRpcnR5
UmVjdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2xhcmdlTGF5ZXJEaXJ0eVJl
Y3QgPSBkaXJ0eVJlY3Q7CisgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBkaXJ0eVJlY3Qu
c2l6ZSgpOworICAgICAgICB1cGRhdGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgZGly
dHlSZWN0LnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGlydHlSZWN0ID0gSW50UmVj
dChtX2RpcnR5UmVjdCk7CisgICAgICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgwLCAw
KSwgbV9ib3VuZHMpOworICAgICAgICByZXF1aXJlZFRleHR1cmVTaXplID0gbV9ib3VuZHM7Cisg
ICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkIHRoZW4gd2Ug
bXVzdCByZWRyYXcgdGhlIGVudGlyZQorICAgICAgICAvLyBjb250ZW50cyBvZiB0aGUgbGF5ZXIu
CisgICAgICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNp
emUpCisgICAgICAgICAgICBkaXJ0eVJlY3QgPSBib3VuZHNSZWN0OworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5
ZXIgdG8gYXZvaWQgZHJhd2luZworICAgICAgICAgICAgLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9m
IHRoZSBiYWNraW5nIHRleHR1cmUuCisgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGJv
dW5kc1JlY3QpOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZVJlY3QgPSBkaXJ0eVJlY3Q7CiAg
ICAgfQogCiAjaWYgUExBVEZPUk0oU0tJQSkKQEAgLTIzOSw3ICsyODgsNyBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAgICAgICAgIHRleHR1cmVJZCA9IGxh
eWVyUmVuZGVyZXIoKS0+Y3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAKICAgICBpZiAocGl4ZWxzKQot
ICAgICAgICB1cGRhdGVUZXh0dXJlUmVjdChwaXhlbHMsIGJpdG1hcFNpemUsIHJlcXVpcmVkVGV4
dHVyZVNpemUsICBkaXJ0eVJlY3QsIHRleHR1cmVJZCk7CisgICAgICAgIHVwZGF0ZVRleHR1cmVS
ZWN0KHBpeGVscywgYml0bWFwU2l6ZSwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgdXBkYXRlUmVjdCwg
dGV4dHVyZUlkKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzUG93ZXJPZlR3byhpbnQgeCkK
QEAgLTI5MCw3ICszMzksOCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVUZXh0
dXJlUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFNpemUmIGJpdG1hcAogICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+Z2VuZXJhdGVNaXBtYXAoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQpKTsKIAogICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkpOwotICAgIG1f
Y29udGVudHNEaXJ0eSA9IGZhbHNlOworICAgIC8vIExhcmdlIGxheWVycyBhbHdheXMgc3RheSBk
aXJ0eSwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gdXBkYXRlIHdoZW4gdGhlIGNvbnRlbnQgcmVjdCBj
aGFuZ2VzLgorICAgIG1fY29udGVudHNEaXJ0eSA9IHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3Qo
KTsKIH0KIAogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCkBAIC0zMDYsOSArMzU2
LDIxIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXcoKQogICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9j
b250ZW50c1RleHR1cmUpKTsKICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihzdi0+Y29u
dGVudFNoYWRlclByb2dyYW0oKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0x
aShzdi0+c2hhZGVyU2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFk
KGNvbnRleHQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlvbk1hdHJpeCgpLCBkcmF3VHJhbnNm
b3JtKCksCi0gICAgICAgICAgICAgICAgICAgICBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5o
ZWlnaHQoKSwgZHJhd09wYWNpdHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN2LT5zaGFkZXJN
YXRyaXhMb2NhdGlvbigpLCBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpKTsKKworICAgIGlmIChy
ZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCkpIHsKKyAgICAgICAgZmxvYXQgbTQzID0gZHJhd1Ry
YW5zZm9ybSgpLm00MygpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07
CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChtX2xhcmdlTGF5ZXJEcmF3UmVjdC5jZW50
ZXIoKS54KCksIG1fbGFyZ2VMYXllckRyYXdSZWN0LmNlbnRlcigpLnkoKSwgbTQzKTsKKyAgICAg
ICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25N
YXRyaXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0sIG1fbGFyZ2VMYXll
ckRyYXdSZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXJnZUxheWVy
RHJhd1JlY3QuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJS
ZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd1RyYW5zZm9ybSgpLCBtX2JvdW5kcy53aWR0aCgpLCBtX2JvdW5kcy5oZWlnaHQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBkcmF3T3BhY2l0eSgpLCBzdi0+c2hhZGVyTWF0cml4TG9j
YXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdi0+c2hhZGVyQWxwaGFMb2NhdGlv
bigpKTsKKyAgICB9CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBkMzI1ZGZiNDYzOTUw
YzRiNTM5NjM0NTExZTY0NWNhNGIxZGU0NGMwLi4yMzljNDc5YzI3ZjZjYzUyNmI0YTliMjc5OTY3
N2U2MjYyNmZhNTE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC04NCwxMSArODQsMTYgQEAgcHJv
dGVjdGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgdXBkYXRl
UmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBNaXBtYXBVc2UgZ2VuZXJhdGVNaXBtYXAgPSBub01p
cG1hcCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOworICAgIGJvb2wg
cmVxdWlyZXNDbGlwcGVkVXBkYXRlUmVjdCgpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV9jb250
ZW50c1RleHR1cmU7CiAgICAgSW50U2l6ZSBtX2FsbG9jYXRlZFRleHR1cmVTaXplOwogICAgIGJv
b2wgbV9za2lwc0RyYXc7CiAKK3ByaXZhdGU6CisgICAgdm9pZCBjYWxjdWxhdGVDbGlwcGVkVXBk
YXRlUmVjdChJbnRSZWN0JiBkaXJ0eVJlY3QsIEludFJlY3QmIGRyYXdSZWN0KSBjb25zdDsKKyAg
ICBJbnRSZWN0IG1fbGFyZ2VMYXllckRyYXdSZWN0OworICAgIEludFJlY3QgbV9sYXJnZUxheWVy
RGlydHlSZWN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQyYmMxZmYzZWRmYzYz
NDY3MDUzMTY2ZTRlMWJhM2FkMGY1OTVlNzcuLjlhNWZkZDg3MzU2YWIwMWMzZjYyOTRhNTk3ZTcx
NDQwMmQzNGQ2YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc1LDYgKzc1LDE0IEBAIHZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiB7CiAgICAgQVNTRVJUKGxheWVy
UmVuZGVyZXIoKSk7CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVk
IGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisgICAgaWYgKHJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJl
Y3QoKSkgeworICAgICAgICAvLyBVc2UgdGhlIGJhc2UgdmVyc2lvbiBvZiB1cGRhdGVDb250ZW50
cyB3aGljaCBkcmF3cyBhIHN1YnNldCBvZiB0aGUKKyAgICAgICAgLy8gaW1hZ2UgdG8gYSBiaXRt
YXAsIGFzIHRoZSBwaXhlbCBjb250ZW50cyBjYW4ndCBiZSB1cGxvYWRlZCBkaXJlY3RseS4KKyAg
ICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICB2b2lkKiBwaXhlbHMgPSAwOwogICAgIEludFNpemUgcmVxdWly
ZWRUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIGJpdG1hcFNpemU7CkBAIC0xMzYsMTIgKzE0NCw2
IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cygpCiAjZWxzZQogI2Vy
cm9yICJOZWVkIHRvIGltcGxlbWVudCBmb3IgeW91ciBwbGF0Zm9ybS4iCiAjZW5kaWYKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50
ZWQuCi0gICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKLSAgICBpZiAoIWxheWVyUmVuZGVyZXIoKS0+
Y2hlY2tUZXh0dXJlU2l6ZShyZXF1aXJlZFRleHR1cmVTaXplKSkgewotICAgICAgICBtX3NraXBz
RHJhdyA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB1bnNpZ25lZCB0ZXh0
dXJlSWQgPSBtX2NvbnRlbnRzVGV4dHVyZTsKICAgICBpZiAoIXRleHR1cmVJZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcAppbmRleCA0MTFiNDIwODBmZmVmNmM0MzlhNmZmYThlMzlmNTNiNWRjZmU1
ZmYzLi5kMWRjOWMwZTY0NjAzZWM1MTk1NzcxN2YzY2Q5NGU5N2JmMTU4NmM4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC0zMDcsOCArMzA3LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJl
Y3QKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQz
RDo6QkxFTkQpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFw
aGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBI
QSkpOwogCi0gICAgLy8gU2V0IHRoZSByb290VmlzaWJsZVJlY3QgLS0tIHVzZWQgYnkgc3Vic2Vx
dWVudCBkcmF3TGF5ZXJzIGNhbGxzCisgICAgLy8gU2V0IHRoZSByb290IHZpc2libGUvY29udGVu
dCByZWN0cyAtLS0gdXNlZCBieSBzdWJzZXF1ZW50IGRyYXdMYXllcnMgY2FsbHMuCiAgICAgbV9y
b290VmlzaWJsZVJlY3QgPSB2aXNpYmxlUmVjdDsKKyAgICBtX3Jvb3RDb250ZW50UmVjdCA9IGNv
bnRlbnRSZWN0OwogCiAgICAgLy8gVHJhdmVyc2UgdGhlIGxheWVyIHRyZWUgYW5kIHVwZGF0ZSB0
aGUgbGF5ZXIgdHJhbnNmb3Jtcy4KICAgICBmbG9hdCBvcGFjaXR5ID0gMTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCmluZGV4IGI3MTQ1ODRmNWU1NzE5YWM0ZTg5Njg5NjU1MmQ0MjA4NDc3NDQ1NmUuLjk1
MzM4ZGVkY2U3MGNiMGE4NjY3OTc5ODMwMDc5YWUzMjNhMjY3N2MgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2l6ZU9uc2NyZWVu
Q29udGVudChjb25zdCBJbnRTaXplJik7CiAKICAgICBJbnRTaXplIHJvb3RMYXllclRleHR1cmVT
aXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3Jvb3RMYXllclRleHR1cmVXaWR0aCwgbV9y
b290TGF5ZXJUZXh0dXJlSGVpZ2h0KTsgfQorICAgIEludFJlY3Qgcm9vdExheWVyQ29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDb250ZW50UmVjdDsgfQogICAgIHZvaWQgZ2V0RnJh
bWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIAogcHJp
dmF0ZToKQEAgLTE2MCw2ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9yb290TGF5
ZXJDYW52YXNTaXplOwogCiAgICAgSW50UmVjdCBtX3Jvb3RWaXNpYmxlUmVjdDsKKyAgICBJbnRS
ZWN0IG1fcm9vdENvbnRlbnRSZWN0OwogCiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>