<?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>88908</bug_id>
          
          <creation_ts>2012-06-12 13:45:30 -0700</creation_ts>
          <short_desc>[chromium] webkit-backface-visibility doesn&apos;t work with &lt;video&gt;</short_desc>
          <delta_ts>2012-06-21 03:17:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89645</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Christopher Cameron">ccameron</reporter>
          <assigned_to name="Christopher Cameron">ccameron</assigned_to>
          <cc>abarth</cc>
    
    <cc>ccameron</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647253</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-12 13:45:30 -0700</bug_when>
    <thetext>From http://code.google.com/p/chromium/issues/detail?id=131040

Run the attached backface.html and click on video to spin it around.  The video and div should be invisible, but the video is visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647405</commentid>
    <comment_count>1</comment_count>
      <attachid>147178</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-12 15:25:03 -0700</bug_when>
    <thetext>Created attachment 147178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647409</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 15:27:58 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647410</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 15:28:21 -0700</bug_when>
    <thetext>Attachment 147178 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/ChangeLog:12:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647412</commentid>
    <comment_count>4</comment_count>
      <attachid>147178</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-12 15:29:15 -0700</bug_when>
    <thetext>Comment on attachment 147178
Patch

I&apos;ll take the first look to save reviewers&apos; time, removing the r=? flag for now. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647457</commentid>
    <comment_count>5</comment_count>
      <attachid>147178</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-12 16:25:42 -0700</bug_when>
    <thetext>Comment on attachment 147178
Patch


In addition to comments below, let&apos;s add a layout test that reproduces the problem and gets fixed by this patch.  You can probably do this by assimilating the test case that we were given originally, and making it in the style of a webkit layout test.

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

&gt; Source/Platform/ChangeLog:15
&gt; +        * chromium/public/WebContentLayer.h:
&gt; +        (WebContentLayer):
&gt; +        * chromium/public/WebLayer.h:
&gt; +        (WebLayer):

I wonder if its possible to take different approach that keeps this fix contained to graphicsLayerChromium?  I&apos;m not sure it would work, but we should try the following:
  - find a solution that doesn&apos;t require setIsContentsLayer
  - don&apos;t remove setIsDoubleSided from WebContentsLayer
  - instead, add the complexity to GraphicsLayerChromium::setBackfaceVisibility().

&gt; Source/Platform/chromium/public/WebContentLayer.h:-58
&gt; -    WEBKIT_EXPORT void setDoubleSided(bool);

I&apos;m guessing we shouldn&apos;t remove this.  Did you remove it thinking that this corresponded to GraphicsLayerChromium::m_contentsLayer?   looking at the code, its actually backwards - GraphicsLayerChromium:m_layer is actually a WebContentsLayer, and GraphicsLayerChromium::m_contentsLayer is actually a WebLayer.  (!!!!)   I&apos;m not sure if the naming should change or not, we should ask jamesr about that.   All the more reason to keep the fix within GraphicsLayerChromium if that works.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:822
&gt; +        m_contentsLayer.setDoubleSided(m_layer.doubleSided());

In addition to placing it here, I think adding this logic to GraphicsLayerChromium::setBackfaceVisibility might be the solution we&apos;re looking for.   Note however, I don&apos;t think its as simple as setting it to m_layer.doubleSided().  You can see if it passes all layout tests, and if it doesnt, we&apos;ll probably have to visit the W3C spec to understand how to set m_contentsLayer.setDoubleSided(...) correctly.

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:346
&gt; +    bool m_isContentsLayer;

isContentsLayer might be a bit vague by itself.  Hopefully we won&apos;t even need this flag, if GraphicsLayerChromium can do the correct W3C logic on its own to decide how to set doubleSided.  but if we need this, perhaps we should rename it to &quot;m_isContentsLayerOfGraphicsLayer&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647525</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-12 17:30:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 147178 [details])
&gt; 
&gt; In addition to comments below, let&apos;s add a layout test that reproduces the problem and gets fixed by this patch.  You can probably do this by assimilating the test case that we were given originally, and making it in the style of a webkit layout test.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147178&amp;action=review
&gt; 
&gt; &gt; Source/Platform/ChangeLog:15
&gt; &gt; +        * chromium/public/WebContentLayer.h:
&gt; &gt; +        (WebContentLayer):
&gt; &gt; +        * chromium/public/WebLayer.h:
&gt; &gt; +        (WebLayer):
&gt; 
&gt; I wonder if its possible to take different approach that keeps this fix contained to graphicsLayerChromium?  I&apos;m not sure it would work, but we should try the following:
&gt;   - find a solution that doesn&apos;t require setIsContentsLayer
&gt;   - don&apos;t remove setIsDoubleSided from WebContentsLayer
&gt;   - instead, add the complexity to GraphicsLayerChromium::setBackfaceVisibility().

I like this idea a lot.

While you&apos;re doing that, could you construct test cases for other content layer types (canvas 2d, webgl, etc) and see if they suffer from the same issue?

&gt; 
&gt; &gt; Source/Platform/chromium/public/WebContentLayer.h:-58
&gt; &gt; -    WEBKIT_EXPORT void setDoubleSided(bool);
&gt; 
&gt; I&apos;m guessing we shouldn&apos;t remove this.  Did you remove it thinking that this corresponded to GraphicsLayerChromium::m_contentsLayer?   looking at the code, its actually backwards - GraphicsLayerChromium:m_layer is actually a WebContentsLayer, and GraphicsLayerChromium::m_contentsLayer is actually a WebLayer.  (!!!!)   I&apos;m not sure if the naming should change or not, we should ask jamesr about that.   All the more reason to keep the fix within GraphicsLayerChromium if that works.

Terminology inversion here.  In GraphicsLayer terms, m_layer = the layer representing the GraphicsLayerClient&apos;s painted stuff.  m_contentsLayer = the special stuff inside the layer (video, webgl, whatever).

In the WebLayer or LayerChromium hierarchy, we use a different terminology.  *ContentLayer* means a layer type that draws via a paintContents() call.  WebLayer/LayerChromium are the base class representing any time of layer.  Thus, GraphicsLayer::m_layer is a *ContentLayer* layer because it renders with a paint() call.  GraphicLayer::m_contentLayer is just of the base class type since we don&apos;t know which concrete type it is (WebGL, video, whatever).

I agree it sucks but I&apos;m not completely sure what to do about it.  We could rename GraphicsLayerChromium&apos;s members, but we want them to be somewhat consistent with the cross-platform GraphicsLayer interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647571</commentid>
    <comment_count>7</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-12 18:33:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)

&gt; &gt; let&apos;s add a layout test that reproduces the problem and gets fixed by this patch.
&gt; 
&gt; While you&apos;re doing that, could you construct test cases for other content layer types (canvas 2d, webgl, etc) and see if they suffer from the same issue?

Working on that now.  Btw, this does indeed reproduce with WebGL (and I assume it will reproduce with canvas2D)

&gt; &gt; I wonder if its possible to take different approach that keeps this fix contained to graphicsLayerChromium?
&gt; 
&gt; I like this idea a lot.

I&apos;ll try to find an alternative plumbing arrangement.

&gt; &gt; &gt; Source/Platform/chromium/public/WebContentLayer.h:-58
&gt; &gt; &gt; -    WEBKIT_EXPORT void setDoubleSided(bool);
&gt; &gt; 
&gt; &gt; I&apos;m guessing we shouldn&apos;t remove this.
&gt; 
&gt; Terminology inversion here.
&gt; 
&gt; In the WebLayer or LayerChromium hierarchy, we use a different terminology.  *ContentLayer* means a layer type that draws via a paintContents() call.  

I&apos;ll need to understand these structures and their target forms a bit better.  In its current form, WebContentLayer is hard to distinguish from WebLayer.  I&apos;ll discuss more offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647577</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-12 18:41:47 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; 
&gt; &gt; &gt; let&apos;s add a layout test that reproduces the problem and gets fixed by this patch.
&gt; &gt; 
&gt; &gt; While you&apos;re doing that, could you construct test cases for other content layer types (canvas 2d, webgl, etc) and see if they suffer from the same issue?
&gt; 
&gt; Working on that now.  Btw, this does indeed reproduce with WebGL (and I assume it will reproduce with canvas2D)

Sounds quite likely - that implies doing a general fix for GraphicsLayerChromium::m_contentsLayer is likely to be what we want.

&gt; &gt; &gt; &gt; Source/Platform/chromium/public/WebContentLayer.h:-58
&gt; &gt; &gt; &gt; -    WEBKIT_EXPORT void setDoubleSided(bool);
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m guessing we shouldn&apos;t remove this.
&gt; &gt; 
&gt; &gt; Terminology inversion here.
&gt; &gt; 
&gt; &gt; In the WebLayer or LayerChromium hierarchy, we use a different terminology.  *ContentLayer* means a layer type that draws via a paintContents() call.  
&gt; 
&gt; I&apos;ll need to understand these structures and their target forms a bit better.  In its current form, WebContentLayer is hard to distinguish from WebLayer.  I&apos;ll discuss more offline.

That&apos;s putting it mildly :).  Feel free to grab me and try to brainstorm an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648355</commentid>
    <comment_count>9</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-13 12:23:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Feel free to grab me and try to brainstorm an improvement.

Thanks!

Fyi, it looks like canvas 2d isn&apos;t impacted by this bug.  WebGL is impacted by the bug, and the patch I attached doesn&apos;t fix the issue for WebGL.  Also, the patch doesn&apos;t seem to work on video unless preserve-3d is set for the element as well.

I&apos;ll sort out these issues and then interrogate you about mechanisms for reorganizing the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648374</commentid>
    <comment_count>10</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-13 12:44:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Feel free to grab me and try to brainstorm an improvement.
&gt; 
&gt; Thanks!
&gt; 
&gt; Fyi, it looks like canvas 2d isn&apos;t impacted by this bug.  WebGL is impacted by the bug, and the patch I attached doesn&apos;t fix the issue for WebGL.  Also, the patch doesn&apos;t seem to work on video unless preserve-3d is set for the element as well.
&gt; 
&gt; I&apos;ll sort out these issues and then interrogate you about mechanisms for reorganizing the fix.

Some possibilities:
  - canvas 2d might not actually use a separate m_layer and m_contentsLayer ?
  - by fluke, maybe the test cases you set up are not triggering accelerated compositing?  (I think its forced on these days, though, so probably this isn&apos;t it) you can double check by using --show-fps-counter or setting that option in about:flags.   the fps counter only shows up when chromium triggers accelerated compositing mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648376</commentid>
    <comment_count>11</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-13 12:45:39 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Some possibilities:
&gt;   - canvas 2d might not actually use a separate m_layer and m_contentsLayer ?
&gt;   - by fluke, maybe the test cases you set up are not triggering accelerated compositing?  (I think its forced on these days, though, so probably this isn&apos;t it) you can double check by using --show-fps-counter or setting that option in about:flags.   the fps counter only shows up when chromium triggers accelerated compositing mode

There&apos;s a min size for a canvas to be accelerated right? Might be that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648480</commentid>
    <comment_count>12</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-13 14:44:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Some possibilities:
&gt; &gt;   - canvas 2d might not actually use a separate m_layer and m_contentsLayer ?
&gt; &gt;   - by fluke, maybe the test cases you set up are not triggering accelerated compositing?
&gt; 
&gt; There&apos;s a min size for a canvas to be accelerated right? Might be that as well.

Indeed in my particular example the canvas 2d doesn&apos;t create a separate m_contentsLayer (even with compositing forced).

It so-happened that with the WebGL example I created, the snapshot of the backface-visibility that the contents layer did happened before the parent was initialized to the value specified in the HTML.  In principle though, any dynamic change of the backface-visibility would have doomed the patch.

A patch which has the contents layer reach into its parent layer to determine its visibility produces the correct results and is robust to dynamic changes.  I&apos;ll upload once I&apos;ve cleaned it up (then we can torch it for structural reasons).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648637</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-13 18:01:24 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; Some possibilities:
&gt; &gt; &gt;   - canvas 2d might not actually use a separate m_layer and m_contentsLayer ?
&gt; &gt; &gt;   - by fluke, maybe the test cases you set up are not triggering accelerated compositing?
&gt; &gt; 
&gt; &gt; There&apos;s a min size for a canvas to be accelerated right? Might be that as well.
&gt; 
&gt; Indeed in my particular example the canvas 2d doesn&apos;t create a separate m_contentsLayer (even with compositing forced).

Accelerated 2d canvas is blacklisted in chrome on linux (poor driver quality), so that might explain it if you&apos;re testing on linux.  Check about:gpu to see what you are getting (and if you are brave, try --ignore-gpu-blacklist)
&gt; 
&gt; It so-happened that with the WebGL example I created, the snapshot of the backface-visibility that the contents layer did happened before the parent was initialized to the value specified in the HTML.  In principle though, any dynamic change of the backface-visibility would have doomed the patch.
&gt; 
&gt; A patch which has the contents layer reach into its parent layer to determine its visibility produces the correct results and is robust to dynamic changes.  I&apos;ll upload once I&apos;ve cleaned it up (then we can torch it for structural reasons).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648655</commentid>
    <comment_count>14</comment_count>
      <attachid>147459</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-13 18:29:13 -0700</bug_when>
    <thetext>Created attachment 147459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648658</commentid>
    <comment_count>15</comment_count>
      <attachid>147459</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-13 18:32:20 -0700</bug_when>
    <thetext>Comment on attachment 147459
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:178
&gt; +    void setIsContentsLayer(bool isContentsLayer) { m_isContentsLayer = isContentsLayer; }
&gt; +    bool isContentsLayer() const { return m_isContentsLayer; }

At first glance I&apos;m not a big fan of adding these to LayerChromium and beyond - it is a quirk of GraphicsLayerChromium that the doubleSided property applies to both a layer and its immediate child in some cases, GraphicsLayerChromium should take care of just setting the bits (like doubleSided) on the appropriate LayerChromiums.  The compositor itself doesn&apos;t need to know about the concept of &quot;contents layer&quot; - it&apos;s way too confusing given the other naming collisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648673</commentid>
    <comment_count>16</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-13 18:51:44 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 147459 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147459&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:178
&gt; &gt; +    void setIsContentsLayer(bool isContentsLayer) { m_isContentsLayer = isContentsLayer; }
&gt; &gt; +    bool isContentsLayer() const { return m_isContentsLayer; }
&gt; 
&gt; At first glance I&apos;m not a big fan of adding these to LayerChromium and beyond - it is a quirk of GraphicsLayerChromium that the doubleSided property applies to both a layer and its immediate child in some cases, GraphicsLayerChromium should take care of just setting the bits (like doubleSided) on the appropriate LayerChromiums.  The compositor itself doesn&apos;t need to know about the concept of &quot;contents layer&quot; 

The concern I have with that approach is that in order to get the correct results we must mark the parent as having preserve-3d as well (because the culling is done with respect to the transformation, which is applied to the parent).  This seems to break correctness because other children may be counting on preserve-3d not being set.

&gt; it&apos;s way too confusing given the other naming collisions.

Another alternative would be to have a name the variable/method to express it does, &quot;I will use my parent&apos;s backface culling properties&quot; (m_useParentCullingLogic) instead of expressing when it is used &quot;I&apos;m a contents layer&quot; (m_isContentsLayer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649564</commentid>
    <comment_count>17</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-14 15:46:48 -0700</bug_when>
    <thetext>I&apos;ve gone ahead and add a uploaded a patch which adds a useParentBackfaceVisibility flag to WebCore::LayerChromium, WebKit::WebLayer, and WebCore::CCLayerImpl.

Capturing some offline discussion with Shawn and James:

This may not be the right long-term direction.  Ideally the WebKit::WebLayer compositor interface should be able to express this &quot;use my parent&apos;s backface visibility calculation&quot; concept with adding this new interface.  

We need to do two things for this.  The first thing is that we need to propagate the backface-visibility property from the parent layer to the content layer (we can do this already).  The second thing that we need to do is to specify that the parent layer should have preserve-3d... BUT, only for the contents layer -- if there are any other child layers, they should not have preserve-3d set.  

And this is where things break down with the current API.  To implement this feature against the WebKit::WebLayer compositor API, we would need to change its idea of preserve-3d to be a property that a child specifies regarding its relationship to its parent, rather than being a property that a parent specifies regarding its relationship to all of its children.  This is a substantial change in terms of diff surface area, so we&apos;re punting on it for the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649565</commentid>
    <comment_count>18</comment_count>
      <attachid>147668</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-14 15:47:17 -0700</bug_when>
    <thetext>Created attachment 147668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649570</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-14 15:51:27 -0700</bug_when>
    <thetext>The next piece of the puzzle is tests - we require that all fixes have regression tests.  In this instance, I think there are a few tests that we could/should write:

1.) Write one or more unit tests that this property has the proper behavior in our backface testing code.  See Source/WebKit/chromium/tests/CCLayerTreeHostCommonTest.cpp&apos;s current backface tests to see how these work.

2.) Write some layout tests to verify that the CSS properties have the desired effect on rendering through the entire stack.  See LayoutTests/compositing/backface-visibility/ for an example of how these work.  I&apos;d like to see at least one test for &lt;video&gt;, WebGL, canvas, and composited images to make sure we&apos;re doing the right thing for all of these cases and to make sure that our behavior is consistent with other ports (like Safari).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649572</commentid>
    <comment_count>20</comment_count>
      <attachid>147668</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-14 15:55:21 -0700</bug_when>
    <thetext>Comment on attachment 147668
Patch

Few comments in addition to the testing todo =)


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

&gt; Source/Platform/chromium/public/WebLayer.h:112
&gt; +    // Set whether this layer is a content layer (e.g, canvas, plugin, WebGL, or video)

probably should update this comment

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:250
&gt; +        layer = layer-&gt;parent();

I feel uncomfortable doing this, what if someone blindly adds another condition for skpping the layer below this poitn in code?   Perhaps its better to make the two cases more explicit without changing any state (i.e. which layer is being considered) within this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649601</commentid>
    <comment_count>21</comment_count>
      <attachid>147675</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-14 16:15:13 -0700</bug_when>
    <thetext>Created attachment 147675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649604</commentid>
    <comment_count>22</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-14 16:16:54 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 147668 [details])
&gt; Few comments in addition to the testing todo =)
&gt; 
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147668&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebLayer.h:112
&gt; &gt; +    // Set whether this layer is a content layer (e.g, canvas, plugin, WebGL, or video)
&gt; 
&gt; probably should update this comment
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:250
&gt; &gt; +        layer = layer-&gt;parent();
&gt; 
&gt; I feel uncomfortable doing this, what if someone blindly adds another condition for skpping the layer below this poitn in code?   Perhaps its better to make the two cases more explicit without changing any state (i.e. which layer is being considered) within this function.

Good point, that&apos;s pretty sloppy.  I&apos;ve uploaded a new patch with an explicit variable for the layer being tested for backface culling -- does this seem better?
+    LayerType* backfaceTestLayer = layer;
+    if (layer-&gt;useParentBackfaceVisibility()) {
+        ASSERT(layer-&gt;parent());
+        backfaceTestLayer = layer-&gt;parent();
+    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649621</commentid>
    <comment_count>23</comment_count>
      <attachid>147675</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-14 16:27:51 -0700</bug_when>
    <thetext>Comment on attachment 147675
Patch

Yeah, much better, thanks!

I think its probably appropriate to remove the review? flag for now, and we can ask reviewers to look at it when the patch includes a good battery of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653043</commentid>
    <comment_count>24</comment_count>
      <attachid>148471</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-19 17:40:14 -0700</bug_when>
    <thetext>Created attachment 148471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653066</commentid>
    <comment_count>25</comment_count>
      <attachid>148471</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-19 18:05:07 -0700</bug_when>
    <thetext>Comment on attachment 148471
Patch

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

(You can&apos;t set R+ yourself.  The webkit-review bot will come by and complain.)

The image test looks good to me.  Are there tests for video/canvas/webgl too?  I realize that Chromium&apos;s implementation sends all these down the same setupContents path, but the tests will be run by other ports and they might behave differently.

If you haven&apos;t yet, I&apos;ll run this patch through Safari and see if this test should be marked as failing for them, since I know there&apos;s some lingering backface visibility bugs that Shawn filed earlier.

&gt; Source/Platform/chromium/public/WebLayer.h:112
&gt; +    // Set whether this layer is a content layer (e.g, canvas, plugin, WebGL, or video)

nit: I think this comment is talking too much about the implementation details of GraphicsLayerChromium and its backface visibility behavior.  There are other consumers of WebLayer (e.g. ash), so maybe it&apos;d be better to not have a comment at all; I think the function is well-named enough to describe exactly what it does.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:252
&gt; +    if (layer-&gt;useParentBackfaceVisibility()) {
&gt; +        ASSERT(layer-&gt;parent());
&gt; +        backfaceTestLayer = layer-&gt;parent();
&gt; +    }

This is kind of an edge case, but what happens if a child and its parent both useParentBackfaceVisibility()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653070</commentid>
    <comment_count>26</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-19 18:21:21 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 148471 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148471&amp;action=review
&gt; 
&gt; The image test looks good to me.  Are there tests for video/canvas/webgl too?  I realize that Chromium&apos;s implementation sends all these down the same setupContents path, but the tests will be run by other ports and they might behave differently.

I have WebGL and canvas tests which I can add.  I&apos;m still working on video tests.  It was suggested that I just add the one test -- I&apos;ll discuss which to add in a bit.

&gt; If you haven&apos;t yet, I&apos;ll run this patch through Safari and see if this test should be marked as failing for them, since I know there&apos;s some lingering backface visibility bugs that Shawn filed earlier.

Thanks!  No, haven&apos;t done that yet.

&gt; &gt; Source/Platform/chromium/public/WebLayer.h:112
&gt; &gt; +    // Set whether this layer is a content layer (e.g, canvas, plugin, WebGL, or video)
&gt; 
&gt; nit: I think this comment is talking too much about the implementation details of GraphicsLayerChromium and its backface visibility behavior.  There are other consumers of WebLayer (e.g. ash), so maybe it&apos;d be better to not have a comment at all; I think the function is well-named enough to describe exactly what it does.

Oops, that comment stuck around from an earlier naming of the variable.  I&apos;ll update it to say something more relevant.

That said, I&apos;d like to draw attention in the comment that this is an idiosyncratic API call which exists to support a particular application issue.  If ash wants to do something that uses this functionality, we should change the preserve-3d property to be per-child (since the per-parent issue mirrors the somewhat-restricted behavior allowed by the WebKit APIs).

&gt; This is kind of an edge case, but what happens if a child and its parent both useParentBackfaceVisibility()?

I don&apos;t think that WebKit will generate such a situation (since I don&apos;t think a m_contents layer can have an m_contents layer itself).  I&apos;ll add an assertion to this effect.  It is an argument in favor of implementing the per-child solution (in which case this property vanishes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653165</commentid>
    <comment_count>27</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-19 21:18:03 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (From update of attachment 148471 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148471&amp;action=review
&gt; &gt; 
&gt; &gt; The image test looks good to me.  Are there tests for video/canvas/webgl too?  I realize that Chromium&apos;s implementation sends all these down the same setupContents path, but the tests will be run by other ports and they might behave differently.
&gt; 
&gt; I have WebGL and canvas tests which I can add.  I&apos;m still working on video tests.  It was suggested that I just add the one test -- I&apos;ll discuss which to add in a bit.

If you have other tests you&apos;d have and can add, that&apos;d be great.  If you just have the image test, I guess that seems fine to commit too.  Video tests have been flaky in the past, so an image test would probably be more reliable.

&gt; &gt; If you haven&apos;t yet, I&apos;ll run this patch through Safari and see if this test should be marked as failing for them, since I know there&apos;s some lingering backface visibility bugs that Shawn filed earlier.
&gt; 
&gt; Thanks!  No, haven&apos;t done that yet.

Looks like it runs just fine.
 
&gt; &gt; &gt; Source/Platform/chromium/public/WebLayer.h:112
&gt; &gt; &gt; +    // Set whether this layer is a content layer (e.g, canvas, plugin, WebGL, or video)
&gt; &gt; 
&gt; &gt; nit: I think this comment is talking too much about the implementation details of GraphicsLayerChromium and its backface visibility behavior.  There are other consumers of WebLayer (e.g. ash), so maybe it&apos;d be better to not have a comment at all; I think the function is well-named enough to describe exactly what it does.
&gt; 
&gt; Oops, that comment stuck around from an earlier naming of the variable.  I&apos;ll update it to say something more relevant.
&gt; 
&gt; That said, I&apos;d like to draw attention in the comment that this is an idiosyncratic API call which exists to support a particular application issue.  If ash wants to do something that uses this functionality, we should change the preserve-3d property to be per-child (since the per-parent issue mirrors the somewhat-restricted behavior allowed by the WebKit APIs).

Yeah, I totally agree.  Maybe there&apos;s some better interface at the WebLayer level that allows for WebKit&apos;s behavior but is somewhat more sane.

You&apos;re welcome to leave a comment; I guess for me it&apos;s less about whether something is a content layer or not and more about trying to satisfy WebKit&apos;s backfacing needs regardless of layer structure.

&gt; &gt; This is kind of an edge case, but what happens if a child and its parent both useParentBackfaceVisibility()?
&gt; 
&gt; I don&apos;t think that WebKit will generate such a situation (since I don&apos;t think a m_contents layer can have an m_contents layer itself).  I&apos;ll add an assertion to this effect.  It is an argument in favor of implementing the per-child solution (in which case this property vanishes).

Yeah, I don&apos;t think WebKit will generate it right now either, but I just wanted to be robust to the possibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653170</commentid>
    <comment_count>28</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-19 21:27:36 -0700</bug_when>
    <thetext>I think it&apos;s OK to not handle cases like this so long as we fail loudly and not silently - comment is good, ASSERT() is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653226</commentid>
    <comment_count>29</comment_count>
      <attachid>148511</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-19 23:01:55 -0700</bug_when>
    <thetext>Created attachment 148511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653571</commentid>
    <comment_count>30</comment_count>
      <attachid>148511</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-20 09:57:23 -0700</bug_when>
    <thetext>Comment on attachment 148511
Patch

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

I have a few comment nits, and then this is good to go.

&gt; Source/Platform/chromium/public/WebLayer.h:118
&gt; +    WEBKIT_EXPORT void setUseParentBackfaceVisibility(bool);

Can you also mention the limitations of this function that if this is true, this layer must have a parent and that parent can&apos;t have this flag set?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:246
&gt; +    // If this is a contents layer, then we should evaluate double-sidedness based

Hrm.  Contents layer means a bit of a different thing in CCLayerTreeHostCommon than it does in GraphicsLayerChromium.  I could imagine somebody thinking this meant an instance of ContentLayerChromium and not GraphicsLayerChromium::m_contentsLayer.  I think the property speaks for itself and this comment only makes it confusing.  Can you remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653679</commentid>
    <comment_count>31</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-20 11:20:08 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 148511 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148511&amp;action=review
&gt; 
&gt; I have a few comment nits, and then this is good to go.
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebLayer.h:118
&gt; &gt; +    WEBKIT_EXPORT void setUseParentBackfaceVisibility(bool);
&gt; 
&gt; Can you also mention the limitations of this function that if this is true, this layer must have a parent and that parent can&apos;t have this flag set?

Added.

&gt; I think the property speaks for itself and this comment only makes it confusing.  Can you remove it?

Yes, this only made sense when the the property was called isContentsLayer, and the action needed description.  Torched.

I went ahead and added the WebGL test as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653687</commentid>
    <comment_count>32</comment_count>
      <attachid>148611</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-06-20 11:27:34 -0700</bug_when>
    <thetext>Created attachment 148611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653693</commentid>
    <comment_count>33</comment_count>
      <attachid>148611</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-20 11:31:00 -0700</bug_when>
    <thetext>Comment on attachment 148611
Patch

Thanks! R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653754</commentid>
    <comment_count>34</comment_count>
      <attachid>148611</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 12:17:59 -0700</bug_when>
    <thetext>Comment on attachment 148611
Patch

Clearing flags on attachment: 148611

Committed r120847: &lt;http://trac.webkit.org/changeset/120847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653755</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 12:18:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147178</attachid>
            <date>2012-06-12 15:25:03 -0700</date>
            <delta_ts>2012-06-13 18:29:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120612152456.patch</filename>
            <type>text/plain</type>
            <size>13355</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1Mjg3MjBjZTc1ODhh
NjI5NjE1NzUyZTJkZWJiM2Y2YzM1YmQ3ZjU2Li5iMDRiZWNhYzQ4NTQxZGI1MWRjNzU2YzYyZGRi
NWJlMWRiNjIzMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNi0xMiAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIE1ha2UgY29udGVudHMgbGF5ZXJzIGluaGVyaXQgdGhlIGRvdWJsZVNpZGVk
LW5lc3Mgb2YgdGhlaXIgcGFyZW50CisgICAgICAgIGxheWVyLiAgQWRkIGlzQ29udGVudHNMYXll
ciB0byBpZGVudGlmeSBjb250ZW50cyBsYXllcnMgd2hlbiBjb21wdXRpbmcKKyAgICAgICAgYmFj
a2ZhY2UgY3VsbGluZy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvbnRlbnRMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6Cisg
ICAgICAgIChXZWJMYXllcik6CisKIDIwMTItMDYtMDUgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UgdG8gUGxhdGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhZGFmMGUxZjRkY2ZiMTQy
OWY5NzkyOTdlMWI4ZGIyMWE0NTM4OTIuLjhhYzc2MGJmN2M4YzE3NTRlNDViYjgxZDU1Y2EzMTQx
ZmE1MjZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0wNi0xMiAgQ2hyaXN0
b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAorCisg
ICAgICAgIE1ha2UgY29udGVudHMgbGF5ZXJzIGluaGVyaXQgdGhlIGRvdWJsZVNpZGVkLW5lc3Mg
b2YgdGhlaXIgcGFyZW50CisgICAgICAgIGxheWVyLiAgQWRkIGlzQ29udGVudHNMYXllciB0byBp
ZGVudGlmeSBjb250ZW50cyBsYXllcnMgd2hlbiBjb21wdXRpbmcKKyAgICAgICAgYmFja2ZhY2Ug
Y3VsbGluZy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnNldElzQ29udGVudHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
Ojppc0NvbnRlbnRzTGF5ZXIpOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6OnNldElzQ29udGVudHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6aXNDb250ZW50c0xheWVyKToKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJJc0luRXhpc3RpbmczRFJlbmRlcmluZ0NvbnRleHQp
OgorCiAyMDEyLTA2LTA2ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYnVnQGdtYWlsLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBoZWxwL3NldHRpbmdzIHNjcmVlbiBkb2VzIG5v
dCBvdmVybGF5IGNvbnNvbGUgaW4gc3BsaXQgc2NyZWVuIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggYzZmOTYwMzI1ZWU0NThkNjA4YjE0YmNkZWE4N2Y4MGJmMmUwNWIxNi4uYTY0
MzhiMDg1YmY3MmJlMTUzY2ViMjc2YzNkMzBkNTE0N2UyMjM0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMiAgQ2hyaXN0b3BoZXIgQ2FtZXJv
biAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1i
YWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVvCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAorCisgICAgICAgIE1ha2Ug
Y29udGVudHMgbGF5ZXJzIGluaGVyaXQgdGhlIGRvdWJsZVNpZGVkLW5lc3Mgb2YgdGhlaXIgcGFy
ZW50CisgICAgICAgIGxheWVyLiAgQWRkIGlzQ29udGVudHNMYXllciB0byBpZGVudGlmeSBjb250
ZW50cyBsYXllcnMgd2hlbiBjb21wdXRpbmcKKyAgICAgICAgYmFja2ZhY2UgY3VsbGluZy4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJD
b250ZW50TGF5ZXIuY3BwOgorICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyOjpzZXREb3VibGVTaWRlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllcjo6ZG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllcjo6c2V0SXNDb250ZW50c0xheWVyKToKKwogMjAxMi0wNi0wNiAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1bSBERVBTIGZy
b20gcjE0MDcwMCB0byByMTQwNzExLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29udGVudExheWVyLmgKaW5kZXggYTg2YTU4ZTFjNDExYmQ3ZjI2Y2IzYzY0NjY1
YmE1MTYzNjNlMGY1MS4uM2I2Mzk0MDhjMDhkNmQ0YjFmOTcyZGRiYTBhYTBhMDA5OTQyY2MyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5
ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXll
ci5oCkBAIC01MywxMCArNTMsNiBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIFdl
YkNvbnRlbnRMYXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQu
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CiAKLSAgICAvLyBTZXQgdG8g
dHJ1ZSBpZiB0aGUgYmFja3NpZGUgb2YgdGhpcyBsYXllcidzIGNvbnRlbnRzIHNob3VsZCBiZSB2
aXNpYmxlIHdoZW4gY29tcG9zaXRlZC4KLSAgICAvLyBEZWZhdWx0cyB0byBmYWxzZS4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCk7Ci0KICAgICAvLyBTZXQgdG8g
YXBwbHkgYSBzY2FsZSBmYWN0b3IgdXNlZCB3aGVuIHBhaW50aW5nIGFuZCBkcmF3aW5nIHRoaXMg
bGF5ZXIncyBjb250ZW50LiBEZWZhdWx0cyB0byAxLjAuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgKaW5kZXggMzc1Y2FjNTEyZDI3MDA1ZThhMmNlYmI4MWFiNmJmMjU5MmRm
MzUyOC4uNzI5Yzg5OGMzMDFiOWYxZTk5MGJjYzdjZDZhMGNkNGE4NDdiNjM2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtNzcsNiArNzcsOSBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCk7CiAg
ICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdDsKIAorICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXREb3VibGVTaWRlZChib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgZG91YmxlU2lkZWQoKSBjb25zdDsKKwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCb3Vu
ZHMoY29uc3QgV2ViU2l6ZSYpOwogICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSBib3VuZHMoKSBj
b25zdDsKIApAQCAtMTA4LDYgKzExMSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFBy
ZXNlcnZlczNEKGJvb2wpOworCisgICAgLy8gU2V0IHdoZXRoZXIgdGhpcyBsYXllciBpcyBhIGNv
bnRlbnQgbGF5ZXIgKGUuZywgY2FudmFzLCBwbHVnaW4sIFdlYkdMLCBvciB2aWRlbykKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNDb250ZW50c0xheWVyKGJvb2wpOworCiAgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAKICAgICAvLyBDbGVh
ciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBhIG5ld2x5IGluc3RhbnRpYXRlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTg0MzMzNjA5NTFiMmJm
Y2VhN2NiMTFiYmU5MDAxZWE5ODVmNGUwMS4uYmI1NzA2OGNkMGFkZGNhYzg2MDI1ZmExOThmZTdh
MjI5ZTI1MGJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04
MTAsNiArODEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNM
YXllcihMYXllckNocm9taXVtKiBjb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAgICBtX2NvbnRlbnRzTGF5
ZXIuc2V0SXNDb250ZW50c0xheWVyKGZhbHNlKTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLnJl
bW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CiAgICAg
fQpAQCAtODE4LDYgKzgxOSw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENv
bnRlbnRzTGF5ZXIoTGF5ZXJDaHJvbWl1bSogY29udGVudHNMYXllcikKICAgICAgICAgbV9jb250
ZW50c0xheWVyID0gV2ViTGF5ZXIoY29udGVudHNMYXllcik7CiAKICAgICAgICAgbV9jb250ZW50
c0xheWVyLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBtX2NvbnRl
bnRzTGF5ZXIuc2V0RG91YmxlU2lkZWQobV9sYXllci5kb3VibGVTaWRlZCgpKTsKKyAgICAgICAg
bV9jb250ZW50c0xheWVyLnNldElzQ29udGVudHNMYXllcih0cnVlKTsKIAogICAgICAgICAvLyBJ
dCBpcyBuZWNlc3NhcnkgdG8gY2FsbCBzZXREcmF3c0NvbnRlbnQgYXMgc29vbiBhcyB3ZSByZWNl
aXZlIHRoZSBuZXcgY29udGVudHNMYXllciwgZm9yCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0bmVz
cyBvZiBlYXJseSBleGl0IGNvbmRpdGlvbnMgaW4gc2V0RHJhd3NDb250ZW50KCkgYW5kIHNldENv
bnRlbnRzVmlzaWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBmNjFmZDM1ZDUzMDAx
NDFmMmIyZmYyNmI4NzY0YjhmNjJlMDNlMjNkLi41NzEwYjk3Y2ZkMWI2YTE3MDI5ZTc0N2M3NzAy
MDBmNzE2MTQ5M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNzksNiArNzksNyBAQCBM
YXllckNocm9taXVtOjpMYXllckNocm9taXVtKCkKICAgICAsIG1fdXNlc0xheWVyQ2xpcHBpbmco
ZmFsc2UpCiAgICAgLCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3By
ZXNlcnZlczNEKGZhbHNlKQorICAgICwgbV9pc0NvbnRlbnRzTGF5ZXIoZmFsc2UpCiAgICAgLCBt
X2Fsd2F5c1Jlc2VydmVUZXh0dXJlcyhmYWxzZSkKICAgICAsIG1fZHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyhmYWxzZSkKICAgICAsIG1fZm9yY2VSZW5kZXJTdXJmYWNlKGZhbHNlKQpA
QCAtNTA3LDYgKzUwOCw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGxheWVyLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7
CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRQcmVz
ZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKKyAgICBsYXllci0+c2V0SXNDb250ZW50c0xheWVyKG1f
aXNDb250ZW50c0xheWVyKTsKICAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQ
b3NpdGlvbik7CiAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fc3VibGF5ZXJUcmFu
c2Zvcm0pOwogICAgIGlmICghdHJhbnNmb3JtSXNBbmltYXRpbmcoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAppbmRleCA1ZDUyZjhiYzlmZWVkMTI0MTA2OGQxMTEyZGNjOGQ5ZTQzNzQ2MWVmLi45OTA5OWY5
Mjk3NzY0ZDg0Y2I5MjIxNjllZjcxZmVkOWUzNTIxMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBA
IC0xNjcsNiArMTY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCBw
cmVzZXJ2ZTNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZTNEOyB9CiAgICAgYm9vbCBwcmVz
ZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7IH0KIAorICAgIHZvaWQgc2V0
SXNDb250ZW50c0xheWVyKGJvb2wgaXNDb250ZW50c0xheWVyKSB7IG1faXNDb250ZW50c0xheWVy
ID0gaXNDb250ZW50c0xheWVyOyB9CisgICAgYm9vbCBpc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29udGVudHNMYXllcjsgfQorCiAgICAgdm9pZCBzZXRVc2VzTGF5ZXJDbGlw
cGluZyhib29sIHVzZXNMYXllckNsaXBwaW5nKSB7IG1fdXNlc0xheWVyQ2xpcHBpbmcgPSB1c2Vz
TGF5ZXJDbGlwcGluZzsgfQogICAgIGJvb2wgdXNlc0xheWVyQ2xpcHBpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNMYXllckNsaXBwaW5nOyB9CiAKQEAgLTM0MCw2ICszNDMsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3Np
dGVkQ29udGVudDsKICAgICBib29sIG1fcHJlc2VydmVzM0Q7CisgICAgYm9vbCBtX2lzQ29udGVu
dHNMYXllcjsKICAgICBib29sIG1fYWx3YXlzUmVzZXJ2ZVRleHR1cmVzOwogICAgIGJvb2wgbV9k
cmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOwogICAgIGJvb2wgbV9mb3JjZVJlbmRlclN1
cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNzJjMGVhMmI3OWNlNzJiYTZhZTBm
YzYyZWMxNzc2YjY5MmFjNWFmYy4uNzNmZDM2MjBhZjY3YzUyYmQ1YzU0OTZmZjdhNTZlNmFlYWJj
NTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNTgsNiArNTgsNyBAQCBDQ0xheWVy
SW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCiAgICAgLCBt
X29wYWNpdHkoMS4wKQogICAgICwgbV9wcmVzZXJ2ZXMzRChmYWxzZSkKKyAgICAsIG1faXNDb250
ZW50c0xheWVyKGZhbHNlKQogICAgICwgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KGZhbHNlKQogICAgICwgbV91c2VzTGF5ZXJDbGlwcGluZyhmYWxzZSkKICAgICAsIG1faXNOb25D
b21wb3NpdGVkQ29udGVudChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGZkNGZhY2Fh
NDBjYmExNWRmNjI5YTFiMjRkYTMyYzJmYTViMzc0NGQuLjdkMzU3M2Y4NjEzZmQ1MDQ5NGU3MDk3
ZGM4NDJlNzZmMmE5YzdkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTM1LDYgKzEzNSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwogICAgIGJvb2wgcHJl
c2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNl
dElzQ29udGVudHNMYXllcihib29sIGlzQ29udGVudHNMYXllcikgeyBtX2lzQ29udGVudHNMYXll
ciA9IGlzQ29udGVudHNMYXllcjsgfQorICAgIGJvb2wgaXNDb250ZW50c0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnRlbnRzTGF5ZXI7IH0KKwogICAgIHZvaWQgc2V0VXNlc0xheWVyQ2xp
cHBpbmcoYm9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXllckNsaXBwaW5nID0gdXNl
c0xheWVyQ2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBwaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zMTQsNiArMzE3LDcgQEAgcHJpdmF0
ZToKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOwogICAg
IGJvb2wgbV9wcmVzZXJ2ZXMzRDsKKyAgICBib29sIG1faXNDb250ZW50c0xheWVyOwogICAgIGJv
b2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOwogICAgIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRyYW5zZm9ybTsKICAgICBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5jcHAKaW5kZXggOWNkMDMxNjBlMmIwYmM1YTdiNjUyZTgwYjlmMmJhZGJk
MDFiYzNjZi4uNTc3MjRmMmRhMGU1M2FmZWE2YjE0YjUxNTExNWFkY2U1MWZiN2ZhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0xMDcsOSArMTA3LDE3
IEBAIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVN1cmZhY2VTY2lzc29yUmVjdChMYXllclR5cGUq
IGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIHJvCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+
CiBzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJJc0luRXhpc3RpbmczRFJlbmRlcmluZ0NvbnRleHQo
TGF5ZXJUeXBlKiBsYXllcikKIHsKKyAgICAvLyBJZiB0aGlzIGlzIGFuIGltcGxpY2l0bHktY3Jl
YXRlZCBjb250ZW50cyBsYXllciB0aGVuIGl0IHdpbGwgaW5oZXJpdCB0aGUgc3BhY2Ugb2YKKyAg
ICAvLyBpdHMgcGFyZW50IGxheWVyLgorICAgIGlmIChsYXllci0+aXNDb250ZW50c0xheWVyKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgLy8gQWNjb3JkaW5nIHRvIGN1cnJlbnQgVzND
IHNwZWMgb24gQ1NTIHRyYW5zZm9ybXMsIGEgbGF5ZXIgaXMgcGFydCBvZiBhbiBlc3RhYmxpc2hl
ZAogICAgIC8vIDNkIHJlbmRlcmluZyBjb250ZXh0IGlmIGl0cyBwYXJlbnQgaGFzIHRyYW5zZm9y
bS1zdHlsZSBvZiBwcmVzZXJ2ZXMtM2QuCi0gICAgcmV0dXJuIGxheWVyLT5wYXJlbnQoKSAmJiBs
YXllci0+cGFyZW50KCktPnByZXNlcnZlczNEKCk7CisgICAgaWYgKGxheWVyLT5wYXJlbnQoKSAm
JiBsYXllci0+cGFyZW50KCktPnByZXNlcnZlczNEKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcAppbmRleCAy
YzA0MWMyY2IwOWE0MTQ2MDNmZmRlZGZmOTVjMGI4ZmY0ZDFjNTA0Li5kZmI5OGI0MGUwOWYwZjE1
NzU3YjAzNzRiOGUzMjk5ZDI0NTYyYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbnRlbnRMYXllci5jcHAKQEAgLTQzLDExICs0Myw2IEBAIHZvaWQgV2ViQ29udGVu
dExheWVyOjpjbGVhckNsaWVudCgpCiAgICAgdW53cmFwPENvbnRlbnRMYXllckNocm9taXVtPigp
LT5jbGVhckRlbGVnYXRlKCk7CiB9CiAKLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXREb3VibGVT
aWRlZChib29sIGRvdWJsZVNpZGVkKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RG91YmxlU2lkZWQo
ZG91YmxlU2lkZWQpOwotfQotCiB2b2lkIFdlYkNvbnRlbnRMYXllcjo6c2V0Q29udGVudHNTY2Fs
ZShmbG9hdCBzY2FsZSkKIHsKICAgICBtX3ByaXZhdGUtPnNldENvbnRlbnRzU2NhbGUoc2NhbGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IDZiMTAyOTgxNDRm
MjY2MThhZDI2NTAyMDNiNWQyMzZmOGMwNTZjY2IuLjVlNTMyZjJiNzQ2ZWEzYjQ2Mjg5ZWIwYTBj
ZGVmNmQ2ZWNmNWQ5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAK
QEAgLTE2NCw2ICsxNjQsMTYgQEAgZmxvYXQgV2ViTGF5ZXI6OmFuY2hvclBvaW50WigpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YW5jaG9yUG9pbnRaKCk7CiB9CiAKK3ZvaWQgV2ViTGF5
ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCit7CisgICAgbV9wcml2YXRlLT5z
ZXREb3VibGVTaWRlZChkb3VibGVTaWRlZCk7Cit9CisKK2Jvb2wgV2ViTGF5ZXI6OmRvdWJsZVNp
ZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5kb3VibGVTaWRlZCgpOworfQor
CiB2b2lkIFdlYkxheWVyOjpzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKIHsKICAgICBt
X3ByaXZhdGUtPnNldEJvdW5kcyhzaXplKTsKQEAgLTI3MCw2ICsyODAsMTEgQEAgdm9pZCBXZWJM
YXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQogICAgIG1fcHJpdmF0ZS0+c2V0
UHJlc2VydmVzM0QocHJlc2VydmUzRCk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXI6OnNldElzQ29udGVu
dHNMYXllcihib29sIGlzQ29udGVudHNMYXllcikKK3sKKyAgICBtX3ByaXZhdGUtPnNldElzQ29u
dGVudHNMYXllcihpc0NvbnRlbnRzTGF5ZXIpOworfQorCiB2b2lkIFdlYkxheWVyOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3IpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147459</attachid>
            <date>2012-06-13 18:29:13 -0700</date>
            <delta_ts>2012-06-14 15:47:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120613182905.patch</filename>
            <type>text/plain</type>
            <size>12246</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi5mYTBjNzhmNjBmMjllOWRiYzMyOWRkMWY0YTUy
MTdjYzBkY2YwODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0xMyAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBhcmUgY29udGVudHMgbGF5ZXJzIHZpYSBpc0NvbnRlbnRzTGF5ZXIgYW5kIHNldElzQ29udGVu
dHNMYXllcgorICAgICAgICBmdW5jdGlvbnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwgV2Vi
S2l0OjpXZWJMYXllciwgYW5kCisgICAgICAgIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmg6CisgICAgICAgICAgICAoV2ViTGF5ZXIpOgorICAgICAgICAgICAgICAg
IEFkZCBhbiBhY2Nlc3NvciB0byBzcGVjaWZ5IHRoYXQgYSBsYXllciBpcyBhIGNvbnRlbnRzIGxh
eWVyLgorCiAyMDEyLTA2LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBQb3J0IERyYXdpbmdCdWZmZXJDaHJvbWl1bSBmcm9tIFRl
eHR1cmVMYXllckNocm9taXVtIG92ZXIgdG8gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyN2M2ZjNiYTIzY2M3ZDdlNTkzZjBmNmQzZDYzMTE2YmIzMmViOTU5Li5hMGQwM2Qw
YmMxZDc5YmEwMWNjZWYxNTJlOTBkZTQxYjJjMTE0M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDUgQEAKKzIwMTItMDYtMTMgIENocmlzdG9waGVyIENhbWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSB3ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSBk
b2Vzbid0IHdvcmsgd2l0aCB2aWRlbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg5MDgKKworICAgICAgICBXaGVuIGRldGVybWluaW5nIGEgY29udGVu
dHMgbGF5ZXIncyBiYWNrZmFjZSBjdWxsaW5nLCB1c2UgdGhlIHBhcmVudAorICAgICAgICBsYXll
cidzIHRyYW5zZm9ybSBhbmQgYmFja2ZhY2UtdmlzaWJpbGl0eSBwcm9wZXJ0aWVzLiBUcmFjayB3
aGljaAorICAgICAgICBsYXllcnMgYXJlIGNvbnRlbnRzIGxheWVycyB2aWEgaXNDb250ZW50c0xh
eWVyIGFuZCBzZXRJc0NvbnRlbnRzTGF5ZXIKKyAgICAgICAgZnVuY3Rpb25zIGluIFdlYkNvcmU6
OkxheWVyQ2hyb21pdW0sIFdlYktpdDo6V2ViTGF5ZXIsIGFuZAorICAgICAgICBXZWJDb3JlOjpD
Q0xheWVySW1wbC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVu
dHNMYXllcik6CisgICAgICAgICAgICBXaGVuIGEgY29udGVudHMgbGF5ZXIgaXMgYWRkZWQsIHRh
ZyBpdCBhcyBhIGNvbnRlbnRzIGxheWVyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAgICAgICAgICAgICBJbml0aWFs
aXplIG5ldyBtX2lzQ29udGVudHNMYXllciBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICAgICAg
ICAgUHJvcGFnYXRlIG1faXNDb250ZW50c0xheWVyIHRvIENDTGF5ZXJJbXBsLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgICAg
IChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRJc0NvbnRlbnRzTGF5ZXIpOgorICAgICAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmlzQ29udGVudHNMYXllcik6CisgICAgICAgICAg
ICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICAgICAgICAgQWRkIG1faXNDb250ZW50c0xheWVy
IG1lbWJlciB2YXJpYWJsZSBhbmQgbW9kaWZ5IGFuZCBxdWVyeQorICAgICAgICAgICAgICAgIGFj
Y2Vzc29ycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHA6CisgICAgICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJbXBs
KToKKyAgICAgICAgICAgICAgICBJbml0aWFsaXplIG5ldyBtX2lzQ29udGVudHNMYXllciBtZW1i
ZXIgdmFyaWFibGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0SXNDb250
ZW50c0xheWVyKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6aXNDb250ZW50
c0xheWVyKToKKyAgICAgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICAgICAgICAgQWRk
IG1faXNDb250ZW50c0xheWVyIG1lbWJlciB2YXJpYWJsZSBhbmQgbW9kaWZ5IGFuZCBxdWVyeQor
ICAgICAgICAgICAgICAgIGFjY2Vzc29ycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAgICAgKFdlYkNv
cmU6OmxheWVyU2hvdWxkQmVTa2lwcGVkKToKKyAgICAgICAgICAgICAgICBXaGVuIGV4YW1pbmlu
ZyBhIGNvbnRlbnRzIGxheWVyLCB1c2UgdGhlIGNvbnRlbnRzIGxheWVyJ3MKKyAgICAgICAgICAg
ICAgICBwYXJlbnQgbGF5ZXIgdG8gZGV0ZXJtaW5lIGJhY2tmYWNlIGN1bGxpbmcuCisKIDIwMTIt
MDYtMTIgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBEb24ndCBjcmFzaCBpbiBDQ0xheWVySXRlcmF0b3IgaWYgdGhlIHJvb3QgbGF5
ZXIgZG9lc24ndCBoYXZlIGEgcmVuZGVyIHN1cmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggY2U4ZmNmMTQ5ODVjYjMwN2I5MDllODEwMTVmNDU1YjhjMTJlMzk0NS4uNTcyOGQ4ZmRh
NWFiMzNjM2JmMTc5MTZjODFjMTc4OTk2OTJlYjEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0xMyAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNj
YW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1iYWNrZmFj
ZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAorCisgICAgICAgIFdoZW4gZGV0ZXJt
aW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNlIGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50
CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBiYWNrZmFjZS12aXNpYmlsaXR5IHByb3Bl
cnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVycyBhcmUgY29udGVudHMgbGF5ZXJzIHZp
YSBpc0NvbnRlbnRzTGF5ZXIgYW5kIHNldElzQ29udGVudHNMYXllcgorICAgICAgICBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwgV2ViS2l0OjpXZWJMYXllciwgYW5kCisgICAg
ICAgIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAgICAgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyOjpzZXRJc0NvbnRlbnRzTGF5ZXIpOgorICAgICAgICAgICAgICAgIEFkZCBh
biBhY2Nlc3NvciB0byBzcGVjaWZ5IHRoYXQgYSBsYXllciBpcyBhIGNvbnRlbnRzIGxheWVyLgor
CiAyMDEyLTA2LTEyICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBGaXggaW5jb3JyZWN0IExheWVyQ2hyb21pdW0gc2Nyb2xsIHBvc2l0aW9u
IGZvciBSVEwgb3ZlcmZsb3cgcGFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaAppbmRleCA4ZmMzZDJkMDM2NDc4Nzk1NGZmOTYyMzhjOTEyNWZkOTUwODg0NTg4
Li45MWVkMGI2MTJmZWJjNTAwN2M1MjVjMjA1Y2NhZDIwNDhiOGFlYWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC0xMDgsNiArMTA4LDEwIEBAIHB1
YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisKKyAgICAvLyBTZXQg
d2hldGhlciB0aGlzIGxheWVyIGlzIGEgY29udGVudCBsYXllciAoZS5nLCBjYW52YXMsIHBsdWdp
biwgV2ViR0wsIG9yIHZpZGVvKQorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0NvbnRlbnRz
TGF5ZXIoYm9vbCk7CisKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFdlYkNvbG9yKTsKIAogICAgIC8vIENsZWFyIHRoZSBmaWx0ZXJzIGluIHVzZSBieSBwYXNzaW5n
IGluIGEgbmV3bHkgaW5zdGFudGlhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcAppbmRleCBiMzUzOTg0ZDRkZGExYzhiMmMyMjJkNzRmODBjNjgzM2M4ODJlNjIzLi4yMDE1
MDU2MTI4Y2FkNGUyYTg0Mzc0Mzg2MDE2OTVkZTc4MWEzZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTgzMiw2ICs4MzIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKExheWVyQ2hyb21pdW0qIGNvbnRlbnRzTGF5
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgp
KSB7CisgICAgICAgIG1fY29udGVudHNMYXllci5zZXRJc0NvbnRlbnRzTGF5ZXIoZmFsc2UpOwog
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXIucmVzZXQoKTsKICAgICB9CkBAIC04NDAsNiArODQxLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNMYXllcihMYXllckNocm9taXVtKiBjb250
ZW50c0xheWVyKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBXZWJMYXllcihjb250ZW50c0xh
eWVyKTsKIAogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dCgwLCAwKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci5zZXRJc0NvbnRlbnRzTGF5ZXIodHJ1
ZSk7CiAKICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNhbGwgc2V0RHJhd3NDb250ZW50
IGFzIHNvb24gYXMgd2UgcmVjZWl2ZSB0aGUgbmV3IGNvbnRlbnRzTGF5ZXIsIGZvcgogICAgICAg
ICAvLyB0aGUgY29ycmVjdG5lc3Mgb2YgZWFybHkgZXhpdCBjb25kaXRpb25zIGluIHNldERyYXdz
Q29udGVudCgpIGFuZCBzZXRDb250ZW50c1Zpc2libGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggYmM4MmZlYjBkZjQzZjdiNDg1ZjAyMTk3NmIyMjc2MWNkNjFkMTgyNS4uNzM5M2Y4MDBi
MDE2NGQ0MmFlOThlZWQ3NmQ4ZTczY2U2YWQ3YjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTgyLDYgKzgyLDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBt
X3VzZXNMYXllckNsaXBwaW5nKGZhbHNlKQogICAgICwgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50
KGZhbHNlKQogICAgICwgbV9wcmVzZXJ2ZXMzRChmYWxzZSkKKyAgICAsIG1faXNDb250ZW50c0xh
eWVyKGZhbHNlKQogICAgICwgbV9hbHdheXNSZXNlcnZlVGV4dHVyZXMoZmFsc2UpCiAgICAgLCBt
X2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZmFsc2UpCiAgICAgLCBtX2ZvcmNlUmVu
ZGVyU3VyZmFjZShmYWxzZSkKQEAgLTUxMiw2ICs1MTMsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRJc0Nv
bnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMobV9pc0NvbnRhaW5lckZvckZpeGVkUG9zaXRp
b25MYXllcnMpOwogICAgIGxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXJWaXNpYmxlUmVj
dChtX2ZpeGVkVG9Db250YWluZXJMYXllclZpc2libGVSZWN0KTsKICAgICBsYXllci0+c2V0UHJl
c2VydmVzM0QocHJlc2VydmVzM0QoKSk7CisgICAgbGF5ZXItPnNldElzQ29udGVudHNMYXllciht
X2lzQ29udGVudHNMYXllcik7CiAgICAgbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xs
UG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX3N1YmxheWVyVHJh
bnNmb3JtKTsKICAgICBpZiAoIXRyYW5zZm9ybUlzQW5pbWF0aW5nKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKaW5kZXggZTMzYzJmZGE4OGE3ODRmNTUzMzYxYWJjM2Y4ZTE1YmU5ODc1YzBhNS4uYWZlMmZi
MmZiMDlkM2VhNTQzY2Y4NTJiZTdmY2YxNjVlNmEyNDM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApA
QCAtMTc0LDYgKzE3NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wg
cHJlc2VydmUzRCkgeyBtX3ByZXNlcnZlczNEID0gcHJlc2VydmUzRDsgfQogICAgIGJvb2wgcHJl
c2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNl
dElzQ29udGVudHNMYXllcihib29sIGlzQ29udGVudHNMYXllcikgeyBtX2lzQ29udGVudHNMYXll
ciA9IGlzQ29udGVudHNMYXllcjsgfQorICAgIGJvb2wgaXNDb250ZW50c0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnRlbnRzTGF5ZXI7IH0KKwogICAgIHZvaWQgc2V0VXNlc0xheWVyQ2xp
cHBpbmcoYm9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXllckNsaXBwaW5nID0gdXNl
c0xheWVyQ2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBwaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zNDksNiArMzUyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fdXNlc0xheWVyQ2xpcHBpbmc7CiAgICAgYm9vbCBtX2lzTm9uQ29tcG9z
aXRlZENvbnRlbnQ7CiAgICAgYm9vbCBtX3ByZXNlcnZlczNEOworICAgIGJvb2wgbV9pc0NvbnRl
bnRzTGF5ZXI7CiAgICAgYm9vbCBtX2Fsd2F5c1Jlc2VydmVUZXh0dXJlczsKICAgICBib29sIG1f
ZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlczsKICAgICBib29sIG1fZm9yY2VSZW5kZXJT
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IGMxNTVhNDgwYjE2NzRhNTJlYTgy
ZGZkNjdjMGRhMjViOGUyMzBhOTcuLmZhM2NiNWM2OTQ4MjRjNTUxMWNiOTcxYWI5ODY4MzBiNGM2
NmFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgQ0NMYXll
ckltcGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAsIG1fb3BhcXVlKGZhbHNlKQogICAgICwg
bV9vcGFjaXR5KDEuMCkKICAgICAsIG1fcHJlc2VydmVzM0QoZmFsc2UpCisgICAgLCBtX2lzQ29u
dGVudHNMYXllcihmYWxzZSkKICAgICAsIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxl
cyhmYWxzZSkKICAgICAsIG1fdXNlc0xheWVyQ2xpcHBpbmcoZmFsc2UpCiAgICAgLCBtX2lzTm9u
Q29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA3MTg5OTYz
YTA0M2ZmMmFlNjg3YzhjNzAxNDZiYjU3M2JiMGY5ZjgzLi5hNzAxZDcyNGIxOTcyYjA1MzMzOTI5
YTQ2MGY3ZjZiZTk3MjE4MGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTE0MCw2ICsxNDAs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKICAgICBib29sIHBy
ZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZXMzRDsgfQogCisgICAgdm9pZCBz
ZXRJc0NvbnRlbnRzTGF5ZXIoYm9vbCBpc0NvbnRlbnRzTGF5ZXIpIHsgbV9pc0NvbnRlbnRzTGF5
ZXIgPSBpc0NvbnRlbnRzTGF5ZXI7IH0KKyAgICBib29sIGlzQ29udGVudHNMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb250ZW50c0xheWVyOyB9CisKICAgICB2b2lkIHNldFVzZXNMYXllckNs
aXBwaW5nKGJvb2wgdXNlc0xheWVyQ2xpcHBpbmcpIHsgbV91c2VzTGF5ZXJDbGlwcGluZyA9IHVz
ZXNMYXllckNsaXBwaW5nOyB9CiAgICAgYm9vbCB1c2VzTGF5ZXJDbGlwcGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0xheWVyQ2xpcHBpbmc7IH0KIApAQCAtMzIwLDYgKzMyMyw3IEBAIHByaXZh
dGU6CiAgICAgZmxvYXQgbV9vcGFjaXR5OwogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAg
ICBib29sIG1fcHJlc2VydmVzM0Q7CisgICAgYm9vbCBtX2lzQ29udGVudHNMYXllcjsKICAgICBi
b29sIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlczsKICAgICBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCmluZGV4IDdkZmMyMTZjMjg4Zjk1NjAyNjFkZWQwZGFkMjM4N2Nl
ZTAyODAwMTMuLjI3NjhjNjYyNTlhYjA0NjFjOWY1ZWQxNTk4YjRkMDViODYyNWNiMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtMjQzLDYgKzI0Mywx
MyBAQCBzdGF0aWMgYm9vbCBsYXllclNob3VsZEJlU2tpcHBlZChMYXllclR5cGUqIGxheWVyKQog
ICAgIGlmICghbGF5ZXItPmRyYXdzQ29udGVudCgpIHx8IGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRlbnRz
IGxheWVyLCB0aGVuIHdlIHNob3VsZCBldmFsdWF0ZSBkb3VibGUtc2lkZWRuZXNzIGJhc2VkCisg
ICAgLy8gb24gaXRzIHBhcmVudCdzIHByb3BlcnRpZXMuCisgICAgaWYgKGxheWVyLT5pc0NvbnRl
bnRzTGF5ZXIoKSkgeworICAgICAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgpKTsKKyAgICAgICAg
bGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CisgICAgfQorCiAgICAgLy8gVGhlIGxheWVyIHNob3Vs
ZCBub3QgYmUgZHJhd24gaWYgKDEpIGl0IGlzIG5vdCBkb3VibGUtc2lkZWQgYW5kICgyKSB0aGUg
YmFjayBvZiB0aGUgbGF5ZXIgaXMga25vd24gdG8gYmUgZmFjaW5nIHRoZSBzY3JlZW4uCiAgICAg
aWYgKCFsYXllci0+ZG91YmxlU2lkZWQoKSAmJiB0cmFuc2Zvcm1Ub1NjcmVlbklzS25vd24obGF5
ZXIpICYmIGlzTGF5ZXJCYWNrRmFjZVZpc2libGUobGF5ZXIpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRleCA2YjEwMjk4MTQ0
ZjI2NjE4YWQyNjUwMjAzYjVkMjM2ZjhjMDU2Y2NiLi40MjMwYWQyMTY0NDExOGFkNzdiYTZmZmRh
OTQwNjQ0MWQ2MzY3ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3Bw
CkBAIC0yNzAsNiArMjcwLDExIEBAIHZvaWQgV2ViTGF5ZXI6OnNldFByZXNlcnZlczNEKGJvb2wg
cHJlc2VydmUzRCkKICAgICBtX3ByaXZhdGUtPnNldFByZXNlcnZlczNEKHByZXNlcnZlM0QpOwog
fQogCit2b2lkIFdlYkxheWVyOjpzZXRJc0NvbnRlbnRzTGF5ZXIoYm9vbCBpc0NvbnRlbnRzTGF5
ZXIpCit7CisgICAgbV9wcml2YXRlLT5zZXRJc0NvbnRlbnRzTGF5ZXIoaXNDb250ZW50c0xheWVy
KTsKK30KKwogdm9pZCBXZWJMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9y
KQogewogICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147668</attachid>
            <date>2012-06-14 15:47:17 -0700</date>
            <delta_ts>2012-06-14 16:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120614154709.patch</filename>
            <type>text/plain</type>
            <size>12959</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi4xODgzZjljM2M1ZTMxMWU1OTQzOWQxMjYyYmU5
MGY3OTVlODQ4Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMyAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAg
ICAgICAoV2ViTGF5ZXIpOgorICAgICAgICAgICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVj
aWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAg
IGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3IuCisKIDIwMTItMDYtMTEgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFBvcnQgRHJhd2lu
Z0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVyQ2hyb21pdW0gb3ZlciB0byBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3YzZmM2JhMjNjYzdkN2U1OTNmMGY2ZDNk
NjMxMTZiYjMyZWI5NTkuLmQwNjc5MmI2NTg0NDE4ZjRmOTVmY2U5Njk2OTdjZmI4MjkyNTBhM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wNi0xMyAgQ2hyaXN0b3BoZXIgQ2Ft
ZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHdlYmtp
dC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAorCisgICAgICAgIFdo
ZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNlIGN1bGxpbmcsIHVzZSB0
aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBiYWNrZmFjZS12aXNpYmls
aXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVycyBuZWVkIHRoaXMgc3Bl
Y2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkKKyAgICAgICAg
YW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlvbnMgaW4gV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwgYW5kIFdlYkNvcmU6OkND
TGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50
c0xheWVyKToKKyAgICAgICAgICAgIFdoZW4gYSBjb250ZW50cyBsYXllciBpcyBhZGRlZCwgdGFn
IGl0IGFzIGluaGVyaXRpbmcgaXRzIGJhY2tmYWNlCisgICAgICAgICAgICBjdWxsaW5nIGZyb20g
aXRzIHBhcmVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNo
cm9taXVtKToKKyAgICAgICAgICAgICAgICBJbml0aWFsaXplIG5ldyBtX3VzZVBhcmVudEJhY2tm
YWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICAgICAgICAgUHJvcGFnYXRl
IG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IHRvIENDTGF5ZXJJbXBsLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgICAg
IChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkp
OgorICAgICAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICAgICAg
ICAgQWRkIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IG1lbWJlciB2YXJpYWJsZSBhbmQg
bW9kaWZ5CisgICAgICAgICAgICAgICAgYW5kIHF1ZXJ5IGFjY2Vzc29ycy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKToKKyAgICAgICAgICAgICAgICBJ
bml0aWFsaXplIG5ldyBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFi
bGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0VXNlUGFyZW50QmFja2Zh
Y2VWaXNpYmlsaXR5KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6dXNlUGFy
ZW50QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAg
ICAgICAgICAgICAgQWRkIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IG1lbWJlciB2YXJp
YWJsZSBhbmQgbW9kaWZ5CisgICAgICAgICAgICAgICAgYW5kIHF1ZXJ5IGFjY2Vzc29ycy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21t
b24uY3BwOgorICAgICAgICAgICAgKFdlYkNvcmU6OmxheWVyU2hvdWxkQmVTa2lwcGVkKToKKyAg
ICAgICAgICAgICAgICBXaGVuIGV4YW1pbmluZyBhIGxheWVyLCBpZiB0aGUgbGF5ZXIgaGFzIAor
ICAgICAgICAgICAgICAgIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBzZXQgdGhlbiB1c2Ug
dGhlIGxheWVyJ3MgcGFyZW50CisgICAgICAgICAgICAgICAgbGF5ZXIgdG8gZGV0ZXJtaW5lIGJh
Y2tmYWNlIGN1bGxpbmcuCisKIDIwMTItMDYtMTIgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBEb24ndCBjcmFzaCBpbiBDQ0xheWVy
SXRlcmF0b3IgaWYgdGhlIHJvb3QgbGF5ZXIgZG9lc24ndCBoYXZlIGEgcmVuZGVyIHN1cmZhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2U4ZmNmMTQ5ODVjYjMwN2I5MDllODEwMTVm
NDU1YjhjMTJlMzk0NS4uOGE4MDRlNDNmZjJhYjMzMjFmNzY2MTZiNTFhMzEwYTRlNGE2NmVkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMyAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAgICAgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAg
ICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVjaWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNl
IGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAgIGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3Iu
CisKIDIwMTItMDYtMTIgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIEZpeCBpbmNvcnJlY3QgTGF5ZXJDaHJvbWl1bSBzY3JvbGwgcG9zaXRp
b24gZm9yIFJUTCBvdmVyZmxvdyBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oCmluZGV4IDhmYzNkMmQwMzY0Nzg3OTU0ZmY5NjIzOGM5MTI1ZmQ5NTA4ODQ1
ODguLmE5ODUyNjgwNDJiMzA2YWU4NTY1MDUxZGM3ZWQ0NzgxNTIxNGM4ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTEwOCw2ICsxMDgsMTAgQEAg
cHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKIAog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKworICAgIC8vIFNl
dCB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgYSBjb250ZW50IGxheWVyIChlLmcsIGNhbnZhcywgcGx1
Z2luLCBXZWJHTCwgb3IgdmlkZW8pCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKKwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGZpbHRlcnMgaW4g
dXNlIGJ5IHBhc3NpbmcgaW4gYSBuZXdseSBpbnN0YW50aWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGIzNTM5ODRkNGRkYTFjOGIyYzIyMmQ3NGY4MGM2ODMz
Yzg4MmU2MjMuLmE3ZjAxNGQ2ZTczYjhjYTVjZjk3YWU3MzljOWVkYzhjM2QzYmY1YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtODMyLDYgKzgzMiw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoTGF5ZXJDaHJvbWl1
bSogY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLnNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgICAgIG1fY29udGVudHNMYXllci5yZW1vdmVG
cm9tUGFyZW50KCk7CiAgICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOwogICAgIH0KQEAg
LTg0MCw2ICs4NDEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50
c0xheWVyKExheWVyQ2hyb21pdW0qIGNvbnRlbnRzTGF5ZXIpCiAgICAgICAgIG1fY29udGVudHNM
YXllciA9IFdlYkxheWVyKGNvbnRlbnRzTGF5ZXIpOwogCiAgICAgICAgIG1fY29udGVudHNMYXll
ci5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbV9jb250ZW50c0xh
eWVyLnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh0cnVlKTsKIAogICAgICAgICAvLyBJ
dCBpcyBuZWNlc3NhcnkgdG8gY2FsbCBzZXREcmF3c0NvbnRlbnQgYXMgc29vbiBhcyB3ZSByZWNl
aXZlIHRoZSBuZXcgY29udGVudHNMYXllciwgZm9yCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0bmVz
cyBvZiBlYXJseSBleGl0IGNvbmRpdGlvbnMgaW4gc2V0RHJhd3NDb250ZW50KCkgYW5kIHNldENv
bnRlbnRzVmlzaWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBiYzgyZmViMGRmNDNm
N2I0ODVmMDIxOTc2YjIyNzYxY2Q2MWQxODI1Li5kYjlhMTBkYzliMTdiYTEzMjMzNTE1MGM1MTYx
YmJiZjgzZTgzYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtODIsNiArODIsNyBAQCBM
YXllckNocm9taXVtOjpMYXllckNocm9taXVtKCkKICAgICAsIG1fdXNlc0xheWVyQ2xpcHBpbmco
ZmFsc2UpCiAgICAgLCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3By
ZXNlcnZlczNEKGZhbHNlKQorICAgICwgbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoZmFs
c2UpCiAgICAgLCBtX2Fsd2F5c1Jlc2VydmVUZXh0dXJlcyhmYWxzZSkKICAgICAsIG1fZHJhd0No
ZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhmYWxzZSkKICAgICAsIG1fZm9yY2VSZW5kZXJTdXJm
YWNlKGZhbHNlKQpAQCAtNTEyLDYgKzUxMyw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhtX2lzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVy
cyk7CiAgICAgbGF5ZXItPnNldEZpeGVkVG9Db250YWluZXJMYXllclZpc2libGVSZWN0KG1fZml4
ZWRUb0NvbnRhaW5lckxheWVyVmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMz
RChwcmVzZXJ2ZXMzRCgpKTsKKyAgICBsYXllci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5KG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KTsKICAgICBsYXllci0+c2V0U2Nyb2xs
UG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7CiAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNm
b3JtKG1fc3VibGF5ZXJUcmFuc2Zvcm0pOwogICAgIGlmICghdHJhbnNmb3JtSXNBbmltYXRpbmco
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBlMzNjMmZkYTg4YTc4NGY1NTMzNjFhYmMzZjhlMTVi
ZTk4NzVjMGE1Li45MjU4ZTEwYzJjNmYwYTBiNTJkMzQ5YjM4NjlhZjAxZjdiNmUzNjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCkBAIC0xNzQsNiArMTc0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZTNE
OyB9CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7
IH0KIAorICAgIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFy
ZW50QmFja2ZhY2VWaXNpYmlsaXR5KSB7IG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5ID0g
dXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5OyB9CisgICAgYm9vbCB1c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eTsgfQorCiAgICAgdm9pZCBzZXRVc2VzTGF5ZXJDbGlwcGluZyhib29sIHVzZXNMYXllckNsaXBw
aW5nKSB7IG1fdXNlc0xheWVyQ2xpcHBpbmcgPSB1c2VzTGF5ZXJDbGlwcGluZzsgfQogICAgIGJv
b2wgdXNlc0xheWVyQ2xpcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3VzZXNMYXllckNsaXBwaW5n
OyB9CiAKQEAgLTM0OSw2ICszNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzTGF5ZXJD
bGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBib29sIG1f
cHJlc2VydmVzM0Q7CisgICAgYm9vbCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsKICAg
ICBib29sIG1fYWx3YXlzUmVzZXJ2ZVRleHR1cmVzOwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzOwogICAgIGJvb2wgbV9mb3JjZVJlbmRlclN1cmZhY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKaW5kZXggYzE1NWE0ODBiMTY3NGE1MmVhODJkZmQ2N2MwZGEyNWI4
ZTIzMGE5Ny4uZjdjNjIzNWIzODk3ZmY0NjcyYjRkNWY3MmE1YzI1NzkxNGNmNmIxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNTgsNiArNTgsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXll
ckltcGwoaW50IGlkKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4w
KQogICAgICwgbV9wcmVzZXJ2ZXMzRChmYWxzZSkKKyAgICAsIG1fdXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5KGZhbHNlKQogICAgICwgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KGZhbHNlKQogICAgICwgbV91c2VzTGF5ZXJDbGlwcGluZyhmYWxzZSkKICAgICAsIG1faXNOb25D
b21wb3NpdGVkQ29udGVudChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDcxODk5NjNh
MDQzZmYyYWU2ODdjOGM3MDE0NmJiNTczYmIwZjlmODMuLjY2NWQ5NDhhNDM5MTE4MTYxOTc2MWQ5
MDhkMzQ5YjhmNDkwMGZhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTQwLDYgKzE0MCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwogICAgIGJvb2wgcHJl
c2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNl
dFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSkgeyBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSA9IHVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eTsgfQorICAgIGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KCkgY29u
c3QgeyByZXR1cm4gbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHk7IH0KKwogICAgIHZvaWQg
c2V0VXNlc0xheWVyQ2xpcHBpbmcoYm9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXll
ckNsaXBwaW5nID0gdXNlc0xheWVyQ2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBw
aW5nKCkgY29uc3QgeyByZXR1cm4gbV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zMjAsNiAr
MzIzLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmxvYXRQb2ludCBt
X3Bvc2l0aW9uOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXMzRDsKKyAgICBib29sIG1fdXNlUGFyZW50
QmFja2ZhY2VWaXNpYmlsaXR5OwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzOwogICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRy
YW5zZm9ybTsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3Jt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggN2RmYzIx
NmMyODhmOTU2MDI2MWRlZDBkYWQyMzg3Y2VlMDI4MDAxMy4uMjg2NDc0N2ZiMjc2ZGI1NzJkZTI1
MjNjNWI5MWRkNmQ5NzA0NzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwCkBAIC0yNDMsNiArMjQzLDEzIEBAIHN0YXRpYyBib29sIGxheWVyU2hvdWxkQmVT
a2lwcGVkKExheWVyVHlwZSogbGF5ZXIpCiAgICAgaWYgKCFsYXllci0+ZHJhd3NDb250ZW50KCkg
fHwgbGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAg
ICAvLyBJZiB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIsIHRoZW4gd2Ugc2hvdWxkIGV2YWx1YXRl
IGRvdWJsZS1zaWRlZG5lc3MgYmFzZWQKKyAgICAvLyBvbiBpdHMgcGFyZW50J3MgcHJvcGVydGll
cy4KKyAgICBpZiAobGF5ZXItPnVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSgpKSB7CisgICAg
ICAgIEFTU0VSVChsYXllci0+cGFyZW50KCkpOworICAgICAgICBsYXllciA9IGxheWVyLT5wYXJl
bnQoKTsKKyAgICB9CisKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIG5vdCBiZSBkcmF3biBpZiAo
MSkgaXQgaXMgbm90IGRvdWJsZS1zaWRlZCBhbmQgKDIpIHRoZSBiYWNrIG9mIHRoZSBsYXllciBp
cyBrbm93biB0byBiZSBmYWNpbmcgdGhlIHNjcmVlbi4KICAgICBpZiAoIWxheWVyLT5kb3VibGVT
aWRlZCgpICYmIHRyYW5zZm9ybVRvU2NyZWVuSXNLbm93bihsYXllcikgJiYgaXNMYXllckJhY2tG
YWNlVmlzaWJsZShsYXllcikpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IDZiMTAyOTgxNDRmMjY2MThhZDI2NTAyMDNiNWQy
MzZmOGMwNTZjY2IuLjNiMmM2MmU2ZDdhNDZkZDA0YTc0NmE1MWEwMTUxMmZmNzdhOWJhZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI3MCw2ICsyNzAsMTEg
QEAgdm9pZCBXZWJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQogICAgIG1f
cHJpdmF0ZS0+c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXI6
OnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eSh1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOworfQorCiB2b2lkIFdlYkxheWVyOjpzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoY29sb3IpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147675</attachid>
            <date>2012-06-14 16:15:13 -0700</date>
            <delta_ts>2012-06-19 17:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120614161505.patch</filename>
            <type>text/plain</type>
            <size>13171</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi4xODgzZjljM2M1ZTMxMWU1OTQzOWQxMjYyYmU5
MGY3OTVlODQ4Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMyAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAg
ICAgICAoV2ViTGF5ZXIpOgorICAgICAgICAgICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVj
aWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAg
IGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3IuCisKIDIwMTItMDYtMTEgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFBvcnQgRHJhd2lu
Z0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVyQ2hyb21pdW0gb3ZlciB0byBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3YzZmM2JhMjNjYzdkN2U1OTNmMGY2ZDNk
NjMxMTZiYjMyZWI5NTkuLmQwNjc5MmI2NTg0NDE4ZjRmOTVmY2U5Njk2OTdjZmI4MjkyNTBhM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wNi0xMyAgQ2hyaXN0b3BoZXIgQ2Ft
ZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHdlYmtp
dC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAorCisgICAgICAgIFdo
ZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNlIGN1bGxpbmcsIHVzZSB0
aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBiYWNrZmFjZS12aXNpYmls
aXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVycyBuZWVkIHRoaXMgc3Bl
Y2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkKKyAgICAgICAg
YW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlvbnMgaW4gV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwgYW5kIFdlYkNvcmU6OkND
TGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50
c0xheWVyKToKKyAgICAgICAgICAgIFdoZW4gYSBjb250ZW50cyBsYXllciBpcyBhZGRlZCwgdGFn
IGl0IGFzIGluaGVyaXRpbmcgaXRzIGJhY2tmYWNlCisgICAgICAgICAgICBjdWxsaW5nIGZyb20g
aXRzIHBhcmVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNo
cm9taXVtKToKKyAgICAgICAgICAgICAgICBJbml0aWFsaXplIG5ldyBtX3VzZVBhcmVudEJhY2tm
YWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICAgICAgICAgUHJvcGFnYXRl
IG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IHRvIENDTGF5ZXJJbXBsLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgICAg
IChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkp
OgorICAgICAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICAgICAg
ICAgQWRkIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IG1lbWJlciB2YXJpYWJsZSBhbmQg
bW9kaWZ5CisgICAgICAgICAgICAgICAgYW5kIHF1ZXJ5IGFjY2Vzc29ycy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKToKKyAgICAgICAgICAgICAgICBJ
bml0aWFsaXplIG5ldyBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFi
bGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0VXNlUGFyZW50QmFja2Zh
Y2VWaXNpYmlsaXR5KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6dXNlUGFy
ZW50QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAg
ICAgICAgICAgICAgQWRkIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IG1lbWJlciB2YXJp
YWJsZSBhbmQgbW9kaWZ5CisgICAgICAgICAgICAgICAgYW5kIHF1ZXJ5IGFjY2Vzc29ycy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21t
b24uY3BwOgorICAgICAgICAgICAgKFdlYkNvcmU6OmxheWVyU2hvdWxkQmVTa2lwcGVkKToKKyAg
ICAgICAgICAgICAgICBXaGVuIGV4YW1pbmluZyBhIGxheWVyLCBpZiB0aGUgbGF5ZXIgaGFzIAor
ICAgICAgICAgICAgICAgIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBzZXQgdGhlbiB1c2Ug
dGhlIGxheWVyJ3MgcGFyZW50CisgICAgICAgICAgICAgICAgbGF5ZXIgdG8gZGV0ZXJtaW5lIGJh
Y2tmYWNlIGN1bGxpbmcuCisKIDIwMTItMDYtMTIgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBEb24ndCBjcmFzaCBpbiBDQ0xheWVy
SXRlcmF0b3IgaWYgdGhlIHJvb3QgbGF5ZXIgZG9lc24ndCBoYXZlIGEgcmVuZGVyIHN1cmZhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2U4ZmNmMTQ5ODVjYjMwN2I5MDllODEwMTVm
NDU1YjhjMTJlMzk0NS4uOGE4MDRlNDNmZjJhYjMzMjFmNzY2MTZiNTFhMzEwYTRlNGE2NmVkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMyAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAgICAgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAg
ICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVjaWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNl
IGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAgIGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3Iu
CisKIDIwMTItMDYtMTIgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIEZpeCBpbmNvcnJlY3QgTGF5ZXJDaHJvbWl1bSBzY3JvbGwgcG9zaXRp
b24gZm9yIFJUTCBvdmVyZmxvdyBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oCmluZGV4IDhmYzNkMmQwMzY0Nzg3OTU0ZmY5NjIzOGM5MTI1ZmQ5NTA4ODQ1
ODguLmE5ODUyNjgwNDJiMzA2YWU4NTY1MDUxZGM3ZWQ0NzgxNTIxNGM4ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTEwOCw2ICsxMDgsMTAgQEAg
cHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKIAog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKworICAgIC8vIFNl
dCB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgYSBjb250ZW50IGxheWVyIChlLmcsIGNhbnZhcywgcGx1
Z2luLCBXZWJHTCwgb3IgdmlkZW8pCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKKwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGZpbHRlcnMgaW4g
dXNlIGJ5IHBhc3NpbmcgaW4gYSBuZXdseSBpbnN0YW50aWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGIzNTM5ODRkNGRkYTFjOGIyYzIyMmQ3NGY4MGM2ODMz
Yzg4MmU2MjMuLmE3ZjAxNGQ2ZTczYjhjYTVjZjk3YWU3MzljOWVkYzhjM2QzYmY1YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtODMyLDYgKzgzMiw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoTGF5ZXJDaHJvbWl1
bSogY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLnNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgICAgIG1fY29udGVudHNMYXllci5yZW1vdmVG
cm9tUGFyZW50KCk7CiAgICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOwogICAgIH0KQEAg
LTg0MCw2ICs4NDEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50
c0xheWVyKExheWVyQ2hyb21pdW0qIGNvbnRlbnRzTGF5ZXIpCiAgICAgICAgIG1fY29udGVudHNM
YXllciA9IFdlYkxheWVyKGNvbnRlbnRzTGF5ZXIpOwogCiAgICAgICAgIG1fY29udGVudHNMYXll
ci5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbV9jb250ZW50c0xh
eWVyLnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh0cnVlKTsKIAogICAgICAgICAvLyBJ
dCBpcyBuZWNlc3NhcnkgdG8gY2FsbCBzZXREcmF3c0NvbnRlbnQgYXMgc29vbiBhcyB3ZSByZWNl
aXZlIHRoZSBuZXcgY29udGVudHNMYXllciwgZm9yCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0bmVz
cyBvZiBlYXJseSBleGl0IGNvbmRpdGlvbnMgaW4gc2V0RHJhd3NDb250ZW50KCkgYW5kIHNldENv
bnRlbnRzVmlzaWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBiYzgyZmViMGRmNDNm
N2I0ODVmMDIxOTc2YjIyNzYxY2Q2MWQxODI1Li5kYjlhMTBkYzliMTdiYTEzMjMzNTE1MGM1MTYx
YmJiZjgzZTgzYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtODIsNiArODIsNyBAQCBM
YXllckNocm9taXVtOjpMYXllckNocm9taXVtKCkKICAgICAsIG1fdXNlc0xheWVyQ2xpcHBpbmco
ZmFsc2UpCiAgICAgLCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3By
ZXNlcnZlczNEKGZhbHNlKQorICAgICwgbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoZmFs
c2UpCiAgICAgLCBtX2Fsd2F5c1Jlc2VydmVUZXh0dXJlcyhmYWxzZSkKICAgICAsIG1fZHJhd0No
ZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhmYWxzZSkKICAgICAsIG1fZm9yY2VSZW5kZXJTdXJm
YWNlKGZhbHNlKQpAQCAtNTEyLDYgKzUxMyw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhtX2lzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVy
cyk7CiAgICAgbGF5ZXItPnNldEZpeGVkVG9Db250YWluZXJMYXllclZpc2libGVSZWN0KG1fZml4
ZWRUb0NvbnRhaW5lckxheWVyVmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMz
RChwcmVzZXJ2ZXMzRCgpKTsKKyAgICBsYXllci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5KG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KTsKICAgICBsYXllci0+c2V0U2Nyb2xs
UG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7CiAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNm
b3JtKG1fc3VibGF5ZXJUcmFuc2Zvcm0pOwogICAgIGlmICghdHJhbnNmb3JtSXNBbmltYXRpbmco
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBlMzNjMmZkYTg4YTc4NGY1NTMzNjFhYmMzZjhlMTVi
ZTk4NzVjMGE1Li45MjU4ZTEwYzJjNmYwYTBiNTJkMzQ5YjM4NjlhZjAxZjdiNmUzNjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCkBAIC0xNzQsNiArMTc0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZTNE
OyB9CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7
IH0KIAorICAgIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFy
ZW50QmFja2ZhY2VWaXNpYmlsaXR5KSB7IG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5ID0g
dXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5OyB9CisgICAgYm9vbCB1c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eTsgfQorCiAgICAgdm9pZCBzZXRVc2VzTGF5ZXJDbGlwcGluZyhib29sIHVzZXNMYXllckNsaXBw
aW5nKSB7IG1fdXNlc0xheWVyQ2xpcHBpbmcgPSB1c2VzTGF5ZXJDbGlwcGluZzsgfQogICAgIGJv
b2wgdXNlc0xheWVyQ2xpcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3VzZXNMYXllckNsaXBwaW5n
OyB9CiAKQEAgLTM0OSw2ICszNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzTGF5ZXJD
bGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBib29sIG1f
cHJlc2VydmVzM0Q7CisgICAgYm9vbCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsKICAg
ICBib29sIG1fYWx3YXlzUmVzZXJ2ZVRleHR1cmVzOwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzOwogICAgIGJvb2wgbV9mb3JjZVJlbmRlclN1cmZhY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKaW5kZXggYzE1NWE0ODBiMTY3NGE1MmVhODJkZmQ2N2MwZGEyNWI4
ZTIzMGE5Ny4uZjdjNjIzNWIzODk3ZmY0NjcyYjRkNWY3MmE1YzI1NzkxNGNmNmIxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNTgsNiArNTgsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXll
ckltcGwoaW50IGlkKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4w
KQogICAgICwgbV9wcmVzZXJ2ZXMzRChmYWxzZSkKKyAgICAsIG1fdXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5KGZhbHNlKQogICAgICwgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KGZhbHNlKQogICAgICwgbV91c2VzTGF5ZXJDbGlwcGluZyhmYWxzZSkKICAgICAsIG1faXNOb25D
b21wb3NpdGVkQ29udGVudChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDcxODk5NjNh
MDQzZmYyYWU2ODdjOGM3MDE0NmJiNTczYmIwZjlmODMuLjY2NWQ5NDhhNDM5MTE4MTYxOTc2MWQ5
MDhkMzQ5YjhmNDkwMGZhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTQwLDYgKzE0MCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwogICAgIGJvb2wgcHJl
c2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNl
dFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSkgeyBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSA9IHVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eTsgfQorICAgIGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KCkgY29u
c3QgeyByZXR1cm4gbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHk7IH0KKwogICAgIHZvaWQg
c2V0VXNlc0xheWVyQ2xpcHBpbmcoYm9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXll
ckNsaXBwaW5nID0gdXNlc0xheWVyQ2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBw
aW5nKCkgY29uc3QgeyByZXR1cm4gbV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zMjAsNiAr
MzIzLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmxvYXRQb2ludCBt
X3Bvc2l0aW9uOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXMzRDsKKyAgICBib29sIG1fdXNlUGFyZW50
QmFja2ZhY2VWaXNpYmlsaXR5OwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzOwogICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRy
YW5zZm9ybTsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3Jt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggN2RmYzIx
NmMyODhmOTU2MDI2MWRlZDBkYWQyMzg3Y2VlMDI4MDAxMy4uMTE2MTY5NGY0OWVkZDM4NTJhMDI5
MDExNDZlYTI0YzE1Mzc4NTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwCkBAIC0yNDMsOCArMjQzLDE2IEBAIHN0YXRpYyBib29sIGxheWVyU2hvdWxkQmVT
a2lwcGVkKExheWVyVHlwZSogbGF5ZXIpCiAgICAgaWYgKCFsYXllci0+ZHJhd3NDb250ZW50KCkg
fHwgbGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAg
ICAvLyBJZiB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIsIHRoZW4gd2Ugc2hvdWxkIGV2YWx1YXRl
IGRvdWJsZS1zaWRlZG5lc3MgYmFzZWQKKyAgICAvLyBvbiBpdHMgcGFyZW50J3MgcHJvcGVydGll
cy4KKyAgICBMYXllclR5cGUqIGJhY2tmYWNlVGVzdExheWVyID0gbGF5ZXI7CisgICAgaWYgKGxh
eWVyLT51c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoKSkgeworICAgICAgICBBU1NFUlQobGF5
ZXItPnBhcmVudCgpKTsKKyAgICAgICAgYmFja2ZhY2VUZXN0TGF5ZXIgPSBsYXllci0+cGFyZW50
KCk7CisgICAgfQorCiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBub3QgYmUgZHJhd24gaWYgKDEp
IGl0IGlzIG5vdCBkb3VibGUtc2lkZWQgYW5kICgyKSB0aGUgYmFjayBvZiB0aGUgbGF5ZXIgaXMg
a25vd24gdG8gYmUgZmFjaW5nIHRoZSBzY3JlZW4uCi0gICAgaWYgKCFsYXllci0+ZG91YmxlU2lk
ZWQoKSAmJiB0cmFuc2Zvcm1Ub1NjcmVlbklzS25vd24obGF5ZXIpICYmIGlzTGF5ZXJCYWNrRmFj
ZVZpc2libGUobGF5ZXIpKQorICAgIGlmICghYmFja2ZhY2VUZXN0TGF5ZXItPmRvdWJsZVNpZGVk
KCkgJiYgdHJhbnNmb3JtVG9TY3JlZW5Jc0tub3duKGJhY2tmYWNlVGVzdExheWVyKSAmJiBpc0xh
eWVyQmFja0ZhY2VWaXNpYmxlKGJhY2tmYWNlVGVzdExheWVyKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
ci5jcHAKaW5kZXggNmIxMDI5ODE0NGYyNjYxOGFkMjY1MDIwM2I1ZDIzNmY4YzA1NmNjYi4uM2Iy
YzYyZTZkN2E0NmRkMDRhNzQ2YTUxYTAxNTEyZmY3N2E5YmFkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyLmNwcApAQCAtMjcwLDYgKzI3MCwxMSBAQCB2b2lkIFdlYkxheWVy
OjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCiAgICAgbV9wcml2YXRlLT5zZXRQcmVz
ZXJ2ZXMzRChwcmVzZXJ2ZTNEKTsKIH0KIAordm9pZCBXZWJMYXllcjo6c2V0VXNlUGFyZW50QmFj
a2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KQoreworICAg
IG1fcHJpdmF0ZS0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJhY2tm
YWNlVmlzaWJpbGl0eSk7Cit9CisKIHZvaWQgV2ViTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihX
ZWJDb2xvciBjb2xvcikKIHsKICAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRDb2xvcihjb2xv
cik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148471</attachid>
            <date>2012-06-19 17:40:14 -0700</date>
            <delta_ts>2012-06-19 23:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120619174014.patch</filename>
            <type>text/plain</type>
            <size>19236</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlN2NlOWY1NGU5OGQ0
NDljZmQzODhiOWZmZWQzZDc0NTljOGEyMTUzLi42MjFiYmNkMDdlNDc5NzZiNDJjNmU1MjI1MWI5
YWJhNzQ0NDQ2ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xOSAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAg
ICAgICAoV2ViTGF5ZXIpOgorICAgICAgICAgICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVj
aWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAg
IGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3IuCisKIDIwMTItMDYtMTQgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVzZSBXZWJJbWFn
ZUxheWVyIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBmb3IgaW1hZ2UgbGF5ZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggY2FkM2Q0NWJmZWU1OTRhYTBhMjg3NmIwYTFkZjg4NDZhZTc2OTU2My4uYTEzNjA4MTE1
YzNlY2EyNzQ4ZWRkYjdhNjlkY2ZmNjNiODhmM2IwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDEyLTA2LTE5ICBDaHJpc3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkgZG9l
c24ndCB3b3JrIHdpdGggdmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4OTA4CisKKyAgICAgICAgV2hlbiBkZXRlcm1pbmluZyBhIGNvbnRlbnRz
IGxheWVyJ3MgYmFja2ZhY2UgY3VsbGluZywgdXNlIHRoZSBwYXJlbnQKKyAgICAgICAgbGF5ZXIn
cyB0cmFuc2Zvcm0gYW5kIGJhY2tmYWNlLXZpc2liaWxpdHkgcHJvcGVydGllcy4gVHJhY2sgd2hp
Y2gKKyAgICAgICAgbGF5ZXJzIG5lZWQgdGhpcyBzcGVjaWFsIHRyZWF0bWVudCB3aXRoIHVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICBhbmQgc2V0VXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5IGZ1bmN0aW9ucyBpbiBXZWJDb3JlOjpMYXllckNocm9taXVtLAorICAgICAgICBX
ZWJLaXQ6OldlYkxheWVyLCBhbmQgV2ViQ29yZTo6Q0NMYXllckltcGwuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvYmFj
a2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNM
YXllcik6CisgICAgICAgICAgICBXaGVuIGEgY29udGVudHMgbGF5ZXIgaXMgYWRkZWQsIHRhZyBp
dCBhcyBpbmhlcml0aW5nIGl0cyBiYWNrZmFjZQorICAgICAgICAgICAgY3VsbGluZyBmcm9tIGl0
cyBwYXJlbnQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSBuZXcgbV91c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAgICAgICAgIFByb3BhZ2F0ZSBt
X3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSB0byBDQ0xheWVySW1wbC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KToK
KyAgICAgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1c2VQYXJlbnRCYWNrZmFjZVZp
c2liaWxpdHkpOgorICAgICAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAgICAgICAg
IEFkZCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFibGUgYW5kIG1v
ZGlmeQorICAgICAgICAgICAgICAgIGFuZCBxdWVyeSBhY2Nlc3NvcnMuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6CisgICAgICAgICAgICAgICAgSW5p
dGlhbGl6ZSBuZXcgbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkgbWVtYmVyIHZhcmlhYmxl
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6
CisgICAgICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAg
ICAgICAgICAgIEFkZCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFi
bGUgYW5kIG1vZGlmeQorICAgICAgICAgICAgICAgIGFuZCBxdWVyeSBhY2Nlc3NvcnMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmNwcDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpsYXllclNob3VsZEJlU2tpcHBlZCk6CisgICAg
ICAgICAgICAgICAgV2hlbiBleGFtaW5pbmcgYSBsYXllciwgaWYgdGhlIGxheWVyIGhhcyAKKyAg
ICAgICAgICAgICAgICB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkgc2V0IHRoZW4gdXNlIHRo
ZSBsYXllcidzIHBhcmVudAorICAgICAgICAgICAgICAgIGxheWVyIHRvIGRldGVybWluZSBiYWNr
ZmFjZSBjdWxsaW5nLgorCiAyMDEyLTA2LTE4ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtFRkxdIEZvbnRjb25maWcgY2FuJ3QgYmUgbGlua2VkIHByb3Blcmx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk5OTJlMjhlNzEzODkwOWUxMjUwZTBiMjYw
NjBmZDI1MGFjYzg0NDUuLjdlYWRhY2RlMjE2NmEyNmZhYzlhZWViZGNkZjZkN2EyZmU1Nzk3YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMTkg
IENocmlzdG9waGVyIENhbWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSB3ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSBkb2Vzbid0IHdvcmsgd2l0aCB2
aWRlbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5
MDgKKworICAgICAgICBXaGVuIGRldGVybWluaW5nIGEgY29udGVudHMgbGF5ZXIncyBiYWNrZmFj
ZSBjdWxsaW5nLCB1c2UgdGhlIHBhcmVudAorICAgICAgICBsYXllcidzIHRyYW5zZm9ybSBhbmQg
YmFja2ZhY2UtdmlzaWJpbGl0eSBwcm9wZXJ0aWVzLiBUcmFjayB3aGljaAorICAgICAgICBsYXll
cnMgbmVlZCB0aGlzIHNwZWNpYWwgdHJlYXRtZW50IHdpdGggdXNlUGFyZW50QmFja2ZhY2VWaXNp
YmlsaXR5CisgICAgICAgIGFuZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkgZnVuY3Rp
b25zIGluIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0sCisgICAgICAgIFdlYktpdDo6V2ViTGF5ZXIs
IGFuZCBXZWJDb3JlOjpDQ0xheWVySW1wbC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAgICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllcjo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAg
ICAgICAgICBBZGQgYW4gYWNjZXNzb3IgdG8gc3BlY2lmeSB0aGF0IGEgbGF5ZXIgc2hvdWxkIHVz
ZSBpdHMgcGFyZW50J3MKKyAgICAgICAgICAgICAgICBiYWNrZmFjZSBjdWxsaW5nIGJlaGF2aW9y
LgorCiAyMDEyLTA2LTE4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBHZXN0dXJlUGluY2hCZWdpbiBhbmQgZnJpZW5kcyBhcmUgZ2VzdHVyZSBl
dmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCA4
ZmMzZDJkMDM2NDc4Nzk1NGZmOTYyMzhjOTEyNWZkOTUwODg0NTg4Li5hOTg1MjY4MDQyYjMwNmFl
ODU2NTA1MWRjN2VkNDc4MTUyMTRjOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oCkBAIC0xMDgsNiArMTA4LDEwIEBAIHB1YmxpYzoKICAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAKICAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisKKyAgICAvLyBTZXQgd2hldGhlciB0aGlzIGxheWVy
IGlzIGEgY29udGVudCBsYXllciAoZS5nLCBjYW52YXMsIHBsdWdpbiwgV2ViR0wsIG9yIHZpZGVv
KQorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHko
Ym9vbCk7CisKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
bG9yKTsKIAogICAgIC8vIENsZWFyIHRoZSBmaWx0ZXJzIGluIHVzZSBieSBwYXNzaW5nIGluIGEg
bmV3bHkgaW5zdGFudGlhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApp
bmRleCA1ODQxYjQ3Y2FhMDk0ZjAyYTI2OTdmM2E3MTVkNDA1Yzk3ODQ2NDcxLi4wMTNlNzM0Zjkx
Y2ZlMzA0OWQ2ODg2YjE5OTBhNzVhZDRiMTVkZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTgzOCw2ICs4MzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0dXBDb250ZW50c0xheWVyKExheWVyQ2hyb21pdW0qIGNvbnRlbnRzTGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7Cisg
ICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoZmFs
c2UpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKICAgICB9CkBAIC04NDYsNiArODQ3LDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNMYXllcihMYXllckNocm9taXVt
KiBjb250ZW50c0xheWVyKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBXZWJMYXllcihjb250
ZW50c0xheWVyKTsKIAogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5jaG9yUG9pbnQoRmxv
YXRQb2ludCgwLCAwKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRCYWNr
ZmFjZVZpc2liaWxpdHkodHJ1ZSk7CiAKICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNh
bGwgc2V0RHJhd3NDb250ZW50IGFzIHNvb24gYXMgd2UgcmVjZWl2ZSB0aGUgbmV3IGNvbnRlbnRz
TGF5ZXIsIGZvcgogICAgICAgICAvLyB0aGUgY29ycmVjdG5lc3Mgb2YgZWFybHkgZXhpdCBjb25k
aXRpb25zIGluIHNldERyYXdzQ29udGVudCgpIGFuZCBzZXRDb250ZW50c1Zpc2libGUoKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMWQxYmIxNDEzNDMwOGM2YjgxNmU3OTIxM2FmMDlmOTI5
OTc2YjUxMi4uZjVjMThmOGI0NDkwNWFhZjYzNmQxODZmNGJkNjZmZTNjYTk4MDA5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTgzLDYgKzgzLDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJD
aHJvbWl1bSgpCiAgICAgLCBtX3VzZXNMYXllckNsaXBwaW5nKGZhbHNlKQogICAgICwgbV9pc05v
bkNvbXBvc2l0ZWRDb250ZW50KGZhbHNlKQogICAgICwgbV9wcmVzZXJ2ZXMzRChmYWxzZSkKKyAg
ICAsIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKQogICAgICwgbV9hbHdheXNS
ZXNlcnZlVGV4dHVyZXMoZmFsc2UpCiAgICAgLCBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5n
VGlsZXMoZmFsc2UpCiAgICAgLCBtX2ZvcmNlUmVuZGVyU3VyZmFjZShmYWxzZSkKQEAgLTU2MCw2
ICs1NjEsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllcklt
cGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXll
cnMobV9pc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMpOwogICAgIGxheWVyLT5zZXRG
aXhlZFRvQ29udGFpbmVyTGF5ZXIobV9maXhlZFRvQ29udGFpbmVyTGF5ZXIpOwogICAgIGxheWVy
LT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKKyAgICBsYXllci0+c2V0VXNlUGFyZW50
QmFja2ZhY2VWaXNpYmlsaXR5KG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KTsKICAgICBs
YXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7CiAgICAgbGF5ZXItPnNl
dE1heFNjcm9sbFBvc2l0aW9uKG1fbWF4U2Nyb2xsUG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRT
dWJsYXllclRyYW5zZm9ybShtX3N1YmxheWVyVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApp
bmRleCA0YTVmMWFlNzNhMDNiMjlhZTM5MWNlNGNjMDJiNjMwYjJhOTkyNjM1Li44YjAxOGJiNTg2
MDEzMGI0ZTI5Y2E1NTI3YzBkMDRmZjc2NGE4YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0x
ODksNiArMTg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCBwcmVz
ZXJ2ZTNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZTNEOyB9CiAgICAgYm9vbCBwcmVzZXJ2
ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7IH0KIAorICAgIHZvaWQgc2V0VXNl
UGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5
KSB7IG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5ID0gdXNlUGFyZW50QmFja2ZhY2VWaXNp
YmlsaXR5OyB9CisgICAgYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoKSBjb25zdCB7
IHJldHVybiBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsgfQorCiAgICAgdm9pZCBzZXRV
c2VzTGF5ZXJDbGlwcGluZyhib29sIHVzZXNMYXllckNsaXBwaW5nKSB7IG1fdXNlc0xheWVyQ2xp
cHBpbmcgPSB1c2VzTGF5ZXJDbGlwcGluZzsgfQogICAgIGJvb2wgdXNlc0xheWVyQ2xpcHBpbmco
KSBjb25zdCB7IHJldHVybiBtX3VzZXNMYXllckNsaXBwaW5nOyB9CiAKQEAgLTM2Niw2ICszNjks
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsKICAgICBib29sIG1f
aXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBib29sIG1fcHJlc2VydmVzM0Q7CisgICAgYm9v
bCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsKICAgICBib29sIG1fYWx3YXlzUmVzZXJ2
ZVRleHR1cmVzOwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOwog
ICAgIGJvb2wgbV9mb3JjZVJlbmRlclN1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5k
ZXggMDdmMDIyZDljYzVkNzFiNzQyNGRmNzRkMjQwZmE5ZmU2MzA1YjZkMC4uZjI4MDk1NzNjNmI2
ZDhhZGIxZGQ4ZTcxZTYwMjU3NDVhMjI0ZTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApA
QCAtNjAsNiArNjAsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwg
bV9vcGFxdWUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwgbV9wcmVzZXJ2ZXMz
RChmYWxzZSkKKyAgICAsIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKQogICAg
ICwgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGZhbHNlKQogICAgICwgbV91c2Vz
TGF5ZXJDbGlwcGluZyhmYWxzZSkKICAgICAsIG1faXNOb25Db21wb3NpdGVkQ29udGVudChmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDI0YWJhM2E5MzQxMmY2MjlhMzYyMzUxNWVjZDE0
NmU3MTlhNTM4YTUuLjgyYjQzYmU4YWEwNDQxZTI4NGY5MmU5Nzk1YWUyNDBjNjIwYmM1ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTQxLDYgKzE0MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByZXNlcnZlczNEKGJvb2wpOwogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJl
dHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkgeyBtX3VzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eSA9IHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsgfQorICAgIGJv
b2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91c2VQYXJl
bnRCYWNrZmFjZVZpc2liaWxpdHk7IH0KKwogICAgIHZvaWQgc2V0VXNlc0xheWVyQ2xpcHBpbmco
Ym9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXllckNsaXBwaW5nID0gdXNlc0xheWVy
Q2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBwaW5nKCkgY29uc3QgeyByZXR1cm4g
bV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zMzEsNiArMzM0LDcgQEAgcHJpdmF0ZToKICAg
ICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOwogICAgIGJvb2wg
bV9wcmVzZXJ2ZXMzRDsKKyAgICBib29sIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5Owog
ICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOwogICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRyYW5zZm9ybTsKICAgICBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggMjJiMGUwNDM0NGE5OWRkYzNmZjA2MTc3NDU3
Y2IzMjQ1ZDAyMmE3Zi4uNjVkYzlhZWNkNTczZDliZDI4NWNjNTVkZTc2ZTZjNTBiYzYxMzJjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0yNDMsOCAr
MjQzLDE2IEBAIHN0YXRpYyBib29sIGxheWVyU2hvdWxkQmVTa2lwcGVkKExheWVyVHlwZSogbGF5
ZXIpCiAgICAgaWYgKCFsYXllci0+ZHJhd3NDb250ZW50KCkgfHwgbGF5ZXItPmJvdW5kcygpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICAvLyBJZiB0aGlzIGlzIGEgY29u
dGVudHMgbGF5ZXIsIHRoZW4gd2Ugc2hvdWxkIGV2YWx1YXRlIGRvdWJsZS1zaWRlZG5lc3MgYmFz
ZWQKKyAgICAvLyBvbiBpdHMgcGFyZW50J3MgcHJvcGVydGllcy4KKyAgICBMYXllclR5cGUqIGJh
Y2tmYWNlVGVzdExheWVyID0gbGF5ZXI7CisgICAgaWYgKGxheWVyLT51c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkoKSkgeworICAgICAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgpKTsKKyAgICAg
ICAgYmFja2ZhY2VUZXN0TGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CisgICAgfQorCiAgICAgLy8g
VGhlIGxheWVyIHNob3VsZCBub3QgYmUgZHJhd24gaWYgKDEpIGl0IGlzIG5vdCBkb3VibGUtc2lk
ZWQgYW5kICgyKSB0aGUgYmFjayBvZiB0aGUgbGF5ZXIgaXMga25vd24gdG8gYmUgZmFjaW5nIHRo
ZSBzY3JlZW4uCi0gICAgaWYgKCFsYXllci0+ZG91YmxlU2lkZWQoKSAmJiB0cmFuc2Zvcm1Ub1Nj
cmVlbklzS25vd24obGF5ZXIpICYmIGlzTGF5ZXJCYWNrRmFjZVZpc2libGUobGF5ZXIpKQorICAg
IGlmICghYmFja2ZhY2VUZXN0TGF5ZXItPmRvdWJsZVNpZGVkKCkgJiYgdHJhbnNmb3JtVG9TY3Jl
ZW5Jc0tub3duKGJhY2tmYWNlVGVzdExheWVyKSAmJiBpc0xheWVyQmFja0ZhY2VWaXNpYmxlKGJh
Y2tmYWNlVGVzdExheWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKaW5kZXggNmIxMDI5ODE0
NGYyNjYxOGFkMjY1MDIwM2I1ZDIzNmY4YzA1NmNjYi4uM2IyYzYyZTZkN2E0NmRkMDRhNzQ2YTUx
YTAxNTEyZmY3N2E5YmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNw
cApAQCAtMjcwLDYgKzI3MCwxMSBAQCB2b2lkIFdlYkxheWVyOjpzZXRQcmVzZXJ2ZXMzRChib29s
IHByZXNlcnZlM0QpCiAgICAgbV9wcml2YXRlLT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZTNEKTsK
IH0KIAordm9pZCBXZWJMYXllcjo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wg
dXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KQoreworICAgIG1fcHJpdmF0ZS0+c2V0VXNlUGFy
ZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSk7Cit9CisK
IHZvaWQgV2ViTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvciBjb2xvcikKIHsKICAg
ICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJmZGJiMDkz
ODE0NDA4MzVjMmYwZjY0MjlmMDE5Nzc0MGE3OThiYy4uYWVjYzA0MTUwYTllNDk2ZDI0ZTg2NmM3
MDY2YzFkNzBlYTY1MjRlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA2LTE5ICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkgZG9lc24ndCB3b3JrIHdpdGggdmlkZW8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4OTA4CisK
KyAgICAgICAgV2hlbiBkZXRlcm1pbmluZyBhIGNvbnRlbnRzIGxheWVyJ3MgYmFja2ZhY2UgY3Vs
bGluZywgdXNlIHRoZSBwYXJlbnQKKyAgICAgICAgbGF5ZXIncyB0cmFuc2Zvcm0gYW5kIGJhY2tm
YWNlLXZpc2liaWxpdHkgcHJvcGVydGllcy4gVHJhY2sgd2hpY2gKKyAgICAgICAgbGF5ZXJzIG5l
ZWQgdGhpcyBzcGVjaWFsIHRyZWF0bWVudCB3aXRoIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eQorICAgICAgICBhbmQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IGZ1bmN0aW9ucyBp
biBXZWJDb3JlOjpMYXllckNocm9taXVtLAorICAgICAgICBXZWJLaXQ6OldlYkxheWVyLCBhbmQg
V2ViQ29yZTo6Q0NMYXllckltcGwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNl
LXZpc2liaWxpdHktaW1hZ2UtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3Np
dGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5
L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTggIFph
biBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEdUSyBnYXJkZW5pbmcsIHVwZGF0aW5nIGJhc2VsaW5lcyBhZnRlciByb2xsb3V0cyBpbiByMTIw
NjI3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJp
bGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFn
ZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFhNDM0NjA1NzFjYWY4MjJmMjdlODNlOWI1NTY1
N2JjZDJkOGZmYwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjk3Nwp6Y21lQVNATj8ob2xIeWB1
VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG1+WnAKejZMVH1t
Rzs7JUVPQjNVP3ZeM0tjKF5OeDRRIUAoLUdte2hwcWVNfTQrbGRTZSt7VF9SanYqQ3Utcmd8R3lY
XyQwCno1UDEzbD1hdG84KSY/eSpFN0BWJjk2ZiNLUklqaFE0KCUheD01WEExcU0+ZlJUSDE3JD90
YVUmbWhsVj5GWlI1dgp6V25eZXJFRXZKU1ZBI21ZQVJ2c052R002YztwQ29JOHsqfm51TVR7RWQj
allfejZaUDNvdExQdEBjKSQ7ZkJmSSMKei0lcjt7ZWZ7XkAtQmhjX2tzLTxxemlHdFNOVko7aFo4
bVJlY0lRPmZncShebUA1dkVpX14mT2shX1k5fTAyNHo4CnpDKyEpIShROzxUWmhXJVhYWmNeNnA/
YyMlYHEpWWJrNn5JZF90fjg0YC19X14wJitHbUZlRVc/R2JwSG03XmVAYgp6QUNyKjJeSH0wcVkz
O0VhcG9DRG1GTHJleCEtNHJYNSpRaGR1IXUxQF98VHFfYk1yVG9QMShOS0BCNWUtSzhUfmIKejVi
bzRiMjZEc144eWFQXmlyPnw7R2MtNjQ+KHFeei1iWTEtYWJZJFp4dWNPd3c/QEtmVmpDMlI/U31m
e0hUdnEkClRxcyU3Kit1UkpFdTZ7MS1vRCFNPCY3P0E1CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5
L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjIwMDI1MGM3ODVlYjU3ODQxOWI5ZmFkN2I1YTE2NDNj
OGMxZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2Zh
Y2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDcgQEAKKworCisKKworCisKK1RoaXMgdGVzdCBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBp
eGVsIHRlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZp
c2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjU2MzUyMTdiNDgzNmJmNjJjNmU3MTE1NjdiYTc2MjgwNTk4NTQxNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2li
aWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgIC50ZXN0LWRpdgorICB7
CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIGJhY2tncm91bmQtY29sb3I6IGdyYXk7CisgIH0KKyAgLnRlc3QtaW1nCisg
IHsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7CisgICAgLXdlYmtpdC1iYWNr
ZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CisgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAvKiBG
dW5jdGlvbiB0byBkcmF3IGEgNTB4NTAgd2hpdGUgb3BhcXVlIHNxdWFyZSB3aXRoIHRoZSB1cHBl
ci1sZWZ0IHF1YWRyYW50CisgICAgIHJlZCB3aXRoIGEgc3BlY2lmaWVkIHN0eWxlICovCisgIGZ1
bmN0aW9uIGFkZFRlc3RJbWcoc3R5bGUpIHsKKyAgICB2YXIgaW1nRGF0YSA9ICJkYXRhOmltYWdl
L3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21B
QUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFB
N0RBY2R2cUdRQUFBQ0RTVVJCVkZoSDdkS3hEY0FnREFWUnpBaXBLYlAvUXBUVW1jSE1jSklWdWJq
VUp3UXZQNzcxanFMdk9idm9wREdyRHFvOXgyc1JUN1hVSWdLa2RWdHFFUUhTdWkyMWlBQnAzWlph
UklDMGJrc3RJa0RhcHR1S3pDVFArS2x0cXVXMXlQOVhTeTBpUUZxM3BSWVJJSzNiVW9zSWtOWnRx
VVVFU091MjFDSUNwRzI2clF0M3h3WmRXU1lhOVFBQUFBQkpSVTVFcmtKZ2dnPT0iOworICAgIGRv
Y3VtZW50LndyaXRlKCI8aW1nIHN0eWxlPVwiIiArIHN0eWxlICsgIlwiIHNyYz1cIiIgKyBpbWdE
YXRhICsgIlwiIHdpZHRoPTUwcHggaGVpZ2h0PTUwcHggY2xhc3M9XCJ0ZXN0LWltZ1wiLz4iKTsK
KyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHRhYmxlPjx0cj4KKworPCEtLSBU
aGlzIHRlc3QgZHJhd3MgYSBpbWcgd2hpY2ggaXMgZmFjaW5nIHRoZSBzY3JlZW4uIC0tPgorCis8
dGQ+CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2Ij4KKyAgICA8c2NyaXB0PmFkZFRlc3RJbWcoIiIp
PC9zY3JpcHQ+CisgIDwvZGl2PgorPC90ZD4KKworPCEtLSBUaGlzIHRlc3QgZHJhd3MgYSBzaW5n
bGUtc2lkZWQgaW1nIGZhY2luZyBhd2F5IGZyb20gdGhlIHNjcmVlbi4gIFRoaXMKKyAgICAgc2hv
dWxkIG5vdCBhcHBlYXIuIC0tPgorCis8dGQ+CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2Ij4KKyAg
ICA8c2NyaXB0PmFkZFRlc3RJbWcoIi13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7
Iik8L3NjcmlwdD4KKyAgPC9kaXY+Cis8L3RkPgorCis8IS0tIFRoaXMgdGVzdCByb3RhdGVzIHRo
ZSBkaXYgYXdheSBmcm9tIHRoZSBzY3JlZW4sIGJ1dCBrZWVwcyB0aGUgCisgICAgIHNpbmdsZS1z
aWRlZCBpbWcgZmFjaW5nIHRvd2FyZHMgaXRzIGRpdi4gIFRoaXMgc2hvdWxkIGFwcGVhci4gLS0+
CisKKzx0ZD4KKyAgPGRpdiBjbGFzcz0idGVzdC1kaXYiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9y
bTogcm90YXRlWSgxODBkZWcpIj4KKyAgICA8c2NyaXB0PmFkZFRlc3RJbWcoIiIpPC9zY3JpcHQ+
CisgIDwvZGl2PgorPC90ZD4KKworPC90cj48dHI+CisKKzwhLS0gVGhpcyB0ZXN0IGRyYXdzIGEg
aW1nIGluc2lkZSBhIGRpdiB3aGljaCBpcyBkb3VibGUtc2lkZWQgYW5kIGRvZXMgbm90IAorICAg
ICBmYWNlIHRoZSBzY3JlZW4uICBUaGlzIHNob3VsZCBub3QgYXBwZWFyIGJlY2F1c2UgcHJlc2Vy
dmUtM2QgaXMgc2V0IGZvcgorICAgICB0aGUgcGFyZW50IGRpdi4gLS0+CisKKzx0ZD4KKyAgPGRp
diBjbGFzcz0idGVzdC1kaXYiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBk
ZWcpOyAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7Ij4KKyAgICA8c2NyaXB0
PmFkZFRlc3RJbWcoIiIpPC9zY3JpcHQ+CisgIDwvZGl2PgorPC90ZD4KKworPCEtLSBUaGlzIHRl
c3QgZHJhd3MgYSBpbWcgaW5zaWRlIGEgZGl2IHdoaWNoIGlzIHNpbmdsZS1zaWRlZCBhbmQgZG9l
cyBub3QKKyAgICAgZmFjZSB0aGUgc2NyZWVuLiAgVGhpcyBzaG91bGQgYXBwZWFyIGJlY2F1c2Ug
cHJlc2VydmUtM2QgaXMgc2V0IGZvciB0aGUKKyAgICAgcGFyZW50IGRpdi4gLS0+CisKKzx0ZD4K
KyAgPGRpdiBjbGFzcz0idGVzdC1kaXYiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTogcm90YXRl
WSgxODBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7IC13ZWJraXQt
YmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyI+CisgICAgPHNjcmlwdD5hZGRUZXN0SW1nKCIt
d2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOyIpPC9zY3JpcHQ+CisgIDwvZGl2Pgor
PC90ZD4KKworPCEtLSBUaGlzIHRlc3QgZHJhd3MgYSBpbWcgaW5zaWRlIGEgZGl2IHdoaWNoIGlz
IHNpbmdsZS1zaWRlZCBhbmQgZG9lcyBub3QKKyAgICAgZmFjZSB0aGUgc2NyZWVuLiAgVGhpcyBz
aG91bGQgbm90IGFwcGVhciBiZWNhdXNlIHByZXNlcnZlLTNkIGlzIG5vdCBzZXQKKyAgICAgZm9y
IHRoZSBwYXJlbnQgZGl2LiAgLS0+CisKKzx0ZD4KKyAgPGRpdiBjbGFzcz0idGVzdC1kaXYiIHN0
eWxlPSItd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOyAtd2Via2l0LWJhY2tmYWNl
LXZpc2liaWxpdHk6IGhpZGRlbjsiPgorICAgIDxzY3JpcHQ+YWRkVGVzdEltZygiLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsiKTwvc2NyaXB0PgorICA8L2Rpdj4KKzwvdGQ+CisK
KzwvdHI+PC90YWJsZT4KKworCis8c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgIC8qIEluc3RydWN0IHRoZSB0ZXN0IHJ1bm5lciB0aGF0IHRoaXMgaXMgYSBwaXhlbCB0
ZXN0ICovCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICBkb2N1bWVu
dC53cml0ZSgiPHNwYW4gc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyB0b3A6LTUwMDBweCc+VGhp
cyB0ZXN0IGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdDwvc3Bhbj4iKTsKKyAgfQorPC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148511</attachid>
            <date>2012-06-19 23:01:55 -0700</date>
            <delta_ts>2012-06-20 11:27:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120619230155.patch</filename>
            <type>text/plain</type>
            <size>19579</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlN2NlOWY1NGU5OGQ0
NDljZmQzODhiOWZmZWQzZDc0NTljOGEyMTUzLi42MjFiYmNkMDdlNDc5NzZiNDJjNmU1MjI1MWI5
YWJhNzQ0NDQ2ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xOSAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAg
ICAgICAoV2ViTGF5ZXIpOgorICAgICAgICAgICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVj
aWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAg
IGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3IuCisKIDIwMTItMDYtMTQgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVzZSBXZWJJbWFn
ZUxheWVyIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBmb3IgaW1hZ2UgbGF5ZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggY2FkM2Q0NWJmZWU1OTRhYTBhMjg3NmIwYTFkZjg4NDZhZTc2OTU2My4uYTEzNjA4MTE1
YzNlY2EyNzQ4ZWRkYjdhNjlkY2ZmNjNiODhmM2IwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDEyLTA2LTE5ICBDaHJpc3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkgZG9l
c24ndCB3b3JrIHdpdGggdmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4OTA4CisKKyAgICAgICAgV2hlbiBkZXRlcm1pbmluZyBhIGNvbnRlbnRz
IGxheWVyJ3MgYmFja2ZhY2UgY3VsbGluZywgdXNlIHRoZSBwYXJlbnQKKyAgICAgICAgbGF5ZXIn
cyB0cmFuc2Zvcm0gYW5kIGJhY2tmYWNlLXZpc2liaWxpdHkgcHJvcGVydGllcy4gVHJhY2sgd2hp
Y2gKKyAgICAgICAgbGF5ZXJzIG5lZWQgdGhpcyBzcGVjaWFsIHRyZWF0bWVudCB3aXRoIHVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICBhbmQgc2V0VXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5IGZ1bmN0aW9ucyBpbiBXZWJDb3JlOjpMYXllckNocm9taXVtLAorICAgICAgICBX
ZWJLaXQ6OldlYkxheWVyLCBhbmQgV2ViQ29yZTo6Q0NMYXllckltcGwuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvYmFj
a2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNM
YXllcik6CisgICAgICAgICAgICBXaGVuIGEgY29udGVudHMgbGF5ZXIgaXMgYWRkZWQsIHRhZyBp
dCBhcyBpbmhlcml0aW5nIGl0cyBiYWNrZmFjZQorICAgICAgICAgICAgY3VsbGluZyBmcm9tIGl0
cyBwYXJlbnQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSBuZXcgbV91c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAgICAgICAgIFByb3BhZ2F0ZSBt
X3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSB0byBDQ0xheWVySW1wbC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KToK
KyAgICAgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1c2VQYXJlbnRCYWNrZmFjZVZp
c2liaWxpdHkpOgorICAgICAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAgICAgICAg
IEFkZCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFibGUgYW5kIG1v
ZGlmeQorICAgICAgICAgICAgICAgIGFuZCBxdWVyeSBhY2Nlc3NvcnMuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6CisgICAgICAgICAgICAgICAgSW5p
dGlhbGl6ZSBuZXcgbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkgbWVtYmVyIHZhcmlhYmxl
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6
CisgICAgICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAg
ICAgICAgICAgIEFkZCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFi
bGUgYW5kIG1vZGlmeQorICAgICAgICAgICAgICAgIGFuZCBxdWVyeSBhY2Nlc3NvcnMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmNwcDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpsYXllclNob3VsZEJlU2tpcHBlZCk6CisgICAg
ICAgICAgICAgICAgV2hlbiBleGFtaW5pbmcgYSBsYXllciwgaWYgdGhlIGxheWVyIGhhcyAKKyAg
ICAgICAgICAgICAgICB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkgc2V0IHRoZW4gdXNlIHRo
ZSBsYXllcidzIHBhcmVudAorICAgICAgICAgICAgICAgIGxheWVyIHRvIGRldGVybWluZSBiYWNr
ZmFjZSBjdWxsaW5nLgorCiAyMDEyLTA2LTE4ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtFRkxdIEZvbnRjb25maWcgY2FuJ3QgYmUgbGlua2VkIHByb3Blcmx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk5OTJlMjhlNzEzODkwOWUxMjUwZTBiMjYw
NjBmZDI1MGFjYzg0NDUuLjdlYWRhY2RlMjE2NmEyNmZhYzlhZWViZGNkZjZkN2EyZmU1Nzk3YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMTkg
IENocmlzdG9waGVyIENhbWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSB3ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSBkb2Vzbid0IHdvcmsgd2l0aCB2
aWRlbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5
MDgKKworICAgICAgICBXaGVuIGRldGVybWluaW5nIGEgY29udGVudHMgbGF5ZXIncyBiYWNrZmFj
ZSBjdWxsaW5nLCB1c2UgdGhlIHBhcmVudAorICAgICAgICBsYXllcidzIHRyYW5zZm9ybSBhbmQg
YmFja2ZhY2UtdmlzaWJpbGl0eSBwcm9wZXJ0aWVzLiBUcmFjayB3aGljaAorICAgICAgICBsYXll
cnMgbmVlZCB0aGlzIHNwZWNpYWwgdHJlYXRtZW50IHdpdGggdXNlUGFyZW50QmFja2ZhY2VWaXNp
YmlsaXR5CisgICAgICAgIGFuZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkgZnVuY3Rp
b25zIGluIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0sCisgICAgICAgIFdlYktpdDo6V2ViTGF5ZXIs
IGFuZCBXZWJDb3JlOjpDQ0xheWVySW1wbC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAgICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllcjo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAg
ICAgICAgICBBZGQgYW4gYWNjZXNzb3IgdG8gc3BlY2lmeSB0aGF0IGEgbGF5ZXIgc2hvdWxkIHVz
ZSBpdHMgcGFyZW50J3MKKyAgICAgICAgICAgICAgICBiYWNrZmFjZSBjdWxsaW5nIGJlaGF2aW9y
LgorCiAyMDEyLTA2LTE4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBHZXN0dXJlUGluY2hCZWdpbiBhbmQgZnJpZW5kcyBhcmUgZ2VzdHVyZSBl
dmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCA4
ZmMzZDJkMDM2NDc4Nzk1NGZmOTYyMzhjOTEyNWZkOTUwODg0NTg4Li4wZWU5ZWJhMGJjN2ExOGNm
ZThhNTdhMDQzZWVkNDgzMWU5ZDI3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oCkBAIC0xMDgsNiArMTA4LDE1IEBAIHB1YmxpYzoKICAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAKICAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisKKyAgICAvLyBNYXJrIHRoYXQgdGhpcyBsYXllciBz
aG91bGQgdXNlIGl0cyBwYXJlbnQncyB0cmFuc2Zvcm0gYW5kIGRvdWJsZS1zaWRlZAorICAgIC8v
IHByb3BlcnRpZXMgaW4gZGV0ZXJtaW5pbmcgdGhpcyBsYXllcidzIGJhY2tmYWNlIHZpc2liaWxp
dHkgaW5zdGVhZCBvZgorICAgIC8vIHVzaW5nIGl0cyBvd24gcHJvcGVydGllcy4KKyAgICAvLyBO
b3RlOiBUaGlzIEFQSSBpcyB0byB3b3JrIGFyb3VuZCBpc3N1ZXMgd2l0aCB2aXNpYmlsaXR5IHRo
ZSBoYW5kbGluZyBvZgorICAgIC8vIFdlYktpdCBsYXllcnMgdGhhdCBoYXZlIGEgY29udGVudHMg
bGF5ZXIgKGNhbnZhcywgcGx1Z2luLCBXZWJHTCwgdmlkZW8sCisgICAgLy8gZXRjKS4KKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOwor
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAK
ICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBhIG5ld2x5IGlu
c3RhbnRpYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNTg0
MWI0N2NhYTA5NGYwMmEyNjk3ZjNhNzE1ZDQwNWM5Nzg0NjQ3MS4uMDEzZTczNGY5MWNmZTMwNDlk
Njg4NmIxOTkwYTc1YWQ0YjE1ZGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwCkBAIC04MzgsNiArODM4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dHVwQ29udGVudHNMYXllcihMYXllckNocm9taXVtKiBjb250ZW50c0xheWVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKTsKICAg
ICAgICAgbV9jb250ZW50c0xheWVyLnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgbV9jb250
ZW50c0xheWVyLnJlc2V0KCk7CiAgICAgfQpAQCAtODQ2LDYgKzg0Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoTGF5ZXJDaHJvbWl1bSogY29udGVu
dHNMYXllcikKICAgICAgICAgbV9jb250ZW50c0xheWVyID0gV2ViTGF5ZXIoY29udGVudHNMYXll
cik7CiAKICAgICAgICAgbV9jb250ZW50c0xheWVyLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
MCwgMCkpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNp
YmlsaXR5KHRydWUpOwogCiAgICAgICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjYWxsIHNldERy
YXdzQ29udGVudCBhcyBzb29uIGFzIHdlIHJlY2VpdmUgdGhlIG5ldyBjb250ZW50c0xheWVyLCBm
b3IKICAgICAgICAgLy8gdGhlIGNvcnJlY3RuZXNzIG9mIGVhcmx5IGV4aXQgY29uZGl0aW9ucyBp
biBzZXREcmF3c0NvbnRlbnQoKSBhbmQgc2V0Q29udGVudHNWaXNpYmxlKCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDFkMWJiMTQxMzQzMDhjNmI4MTZlNzkyMTNhZjA5ZjkyOTk3NmI1MTIu
LmY1YzE4ZjhiNDQ5MDVhYWY2MzZkMTg2ZjRiZDY2ZmUzY2E5ODAwOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCkBAIC04Myw2ICs4Myw3IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0o
KQogICAgICwgbV91c2VzTGF5ZXJDbGlwcGluZyhmYWxzZSkKICAgICAsIG1faXNOb25Db21wb3Np
dGVkQ29udGVudChmYWxzZSkKICAgICAsIG1fcHJlc2VydmVzM0QoZmFsc2UpCisgICAgLCBtX3Vz
ZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAsIG1fYWx3YXlzUmVzZXJ2ZVRl
eHR1cmVzKGZhbHNlKQogICAgICwgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGZh
bHNlKQogICAgICwgbV9mb3JjZVJlbmRlclN1cmZhY2UoZmFsc2UpCkBAIC01NjAsNiArNTYxLDcg
QEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXll
cikKICAgICBsYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKG1faXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKTsKICAgICBsYXllci0+c2V0Rml4ZWRUb0Nv
bnRhaW5lckxheWVyKG1fZml4ZWRUb0NvbnRhaW5lckxheWVyKTsKICAgICBsYXllci0+c2V0UHJl
c2VydmVzM0QocHJlc2VydmVzM0QoKSk7CisgICAgbGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eShtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSk7CiAgICAgbGF5ZXItPnNl
dFNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRNYXhTY3Jv
bGxQb3NpdGlvbihtX21heFNjcm9sbFBvc2l0aW9uKTsKICAgICBsYXllci0+c2V0U3VibGF5ZXJU
cmFuc2Zvcm0obV9zdWJsYXllclRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNGE1
ZjFhZTczYTAzYjI5YWUzOTFjZTRjYzAyYjYzMGIyYTk5MjYzNS4uOGIwMThiYjU4NjAxMzBiNGUy
OWNhNTUyN2MwZDA0ZmY3NjRhOGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTg5LDYgKzE4
OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmUzRCkg
eyBtX3ByZXNlcnZlczNEID0gcHJlc2VydmUzRDsgfQogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBj
b25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkgeyBtX3Vz
ZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSA9IHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsg
fQorICAgIGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4g
bV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHk7IH0KKwogICAgIHZvaWQgc2V0VXNlc0xheWVy
Q2xpcHBpbmcoYm9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXllckNsaXBwaW5nID0g
dXNlc0xheWVyQ2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBwaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zNjYsNiArMzY5LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fdXNlc0xheWVyQ2xpcHBpbmc7CiAgICAgYm9vbCBtX2lzTm9uQ29t
cG9zaXRlZENvbnRlbnQ7CiAgICAgYm9vbCBtX3ByZXNlcnZlczNEOworICAgIGJvb2wgbV91c2VQ
YXJlbnRCYWNrZmFjZVZpc2liaWxpdHk7CiAgICAgYm9vbCBtX2Fsd2F5c1Jlc2VydmVUZXh0dXJl
czsKICAgICBib29sIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlczsKICAgICBib29s
IG1fZm9yY2VSZW5kZXJTdXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDA3ZjAy
MmQ5Y2M1ZDcxYjc0MjRkZjc0ZDI0MGZhOWZlNjMwNWI2ZDAuLmYyODA5NTczYzZiNmQ4YWRiMWRk
OGU3MWU2MDI1NzQ1YTIyNGU3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTYwLDYg
KzYwLDcgQEAgQ0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAsIG1fb3BhcXVl
KGZhbHNlKQogICAgICwgbV9vcGFjaXR5KDEuMCkKICAgICAsIG1fcHJlc2VydmVzM0QoZmFsc2Up
CisgICAgLCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAsIG1fZHJh
d0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhmYWxzZSkKICAgICAsIG1fdXNlc0xheWVyQ2xp
cHBpbmcoZmFsc2UpCiAgICAgLCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaAppbmRleCAyNGFiYTNhOTM0MTJmNjI5YTM2MjM1MTVlY2QxNDZlNzE5YTUz
OGE1Li44MmI0M2JlOGFhMDQ0MWUyODRmOTJlOTc5NWFlMjQwYzYyMGJjNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKQEAgLTE0MSw2ICsxNDEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVz
ZXJ2ZXMzRChib29sKTsKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gbV9w
cmVzZXJ2ZXMzRDsgfQogCisgICAgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHko
Ym9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpIHsgbV91c2VQYXJlbnRCYWNrZmFjZVZp
c2liaWxpdHkgPSB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHk7IH0KKyAgICBib29sIHVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlUGFyZW50QmFja2Zh
Y2VWaXNpYmlsaXR5OyB9CisKICAgICB2b2lkIHNldFVzZXNMYXllckNsaXBwaW5nKGJvb2wgdXNl
c0xheWVyQ2xpcHBpbmcpIHsgbV91c2VzTGF5ZXJDbGlwcGluZyA9IHVzZXNMYXllckNsaXBwaW5n
OyB9CiAgICAgYm9vbCB1c2VzTGF5ZXJDbGlwcGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0xh
eWVyQ2xpcHBpbmc7IH0KIApAQCAtMzMxLDYgKzMzNCw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQg
bV9vcGFjaXR5OwogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBib29sIG1fcHJlc2Vy
dmVzM0Q7CisgICAgYm9vbCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsKICAgICBib29s
IG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlczsKICAgICBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CiAgICAgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RDb21tb24uY3BwCmluZGV4IDIyYjBlMDQzNDRhOTlkZGMzZmYwNjE3NzQ1N2NiMzI0NWQw
MjJhN2YuLjFmZmZiNmYwN2Q4N2Q3ZTQyZTI4ZDA0MWMyYTEwNDZjYmI0MDc4YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtMjQzLDggKzI0MywxNyBA
QCBzdGF0aWMgYm9vbCBsYXllclNob3VsZEJlU2tpcHBlZChMYXllclR5cGUqIGxheWVyKQogICAg
IGlmICghbGF5ZXItPmRyYXdzQ29udGVudCgpIHx8IGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRlbnRzIGxh
eWVyLCB0aGVuIHdlIHNob3VsZCBldmFsdWF0ZSBkb3VibGUtc2lkZWRuZXNzIGJhc2VkCisgICAg
Ly8gb24gaXRzIHBhcmVudCdzIHByb3BlcnRpZXMuCisgICAgTGF5ZXJUeXBlKiBiYWNrZmFjZVRl
c3RMYXllciA9IGxheWVyOworICAgIGlmIChsYXllci0+dXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5KCkpIHsKKyAgICAgICAgQVNTRVJUKGxheWVyLT5wYXJlbnQoKSk7CisgICAgICAgIEFTU0VS
VCghbGF5ZXItPnBhcmVudCgpLT51c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoKSk7CisgICAg
ICAgIGJhY2tmYWNlVGVzdExheWVyID0gbGF5ZXItPnBhcmVudCgpOworICAgIH0KKwogICAgIC8v
IFRoZSBsYXllciBzaG91bGQgbm90IGJlIGRyYXduIGlmICgxKSBpdCBpcyBub3QgZG91YmxlLXNp
ZGVkIGFuZCAoMikgdGhlIGJhY2sgb2YgdGhlIGxheWVyIGlzIGtub3duIHRvIGJlIGZhY2luZyB0
aGUgc2NyZWVuLgotICAgIGlmICghbGF5ZXItPmRvdWJsZVNpZGVkKCkgJiYgdHJhbnNmb3JtVG9T
Y3JlZW5Jc0tub3duKGxheWVyKSAmJiBpc0xheWVyQmFja0ZhY2VWaXNpYmxlKGxheWVyKSkKKyAg
ICBpZiAoIWJhY2tmYWNlVGVzdExheWVyLT5kb3VibGVTaWRlZCgpICYmIHRyYW5zZm9ybVRvU2Ny
ZWVuSXNLbm93bihiYWNrZmFjZVRlc3RMYXllcikgJiYgaXNMYXllckJhY2tGYWNlVmlzaWJsZShi
YWNrZmFjZVRlc3RMYXllcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IDZiMTAyOTgx
NDRmMjY2MThhZDI2NTAyMDNiNWQyMzZmOGMwNTZjY2IuLjNiMmM2MmU2ZDdhNDZkZDA0YTc0NmE1
MWEwMTUxMmZmNzdhOWJhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5j
cHAKQEAgLTI3MCw2ICsyNzAsMTEgQEAgdm9pZCBXZWJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9v
bCBwcmVzZXJ2ZTNEKQogICAgIG1fcHJpdmF0ZS0+c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7
CiB9CiAKK3ZvaWQgV2ViTGF5ZXI6OnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29s
IHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOworfQor
CiB2b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCiB7CiAg
ICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFiZmRiYjA5
MzgxNDQwODM1YzJmMGY2NDI5ZjAxOTc3NDBhNzk4YmMuLmFlY2MwNDE1MGE5ZTQ5NmQyNGU4NjZj
NzA2NmMxZDcwZWE2NTI0ZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0xOSAgQ2hy
aXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAor
CisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNlIGN1
bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBiYWNr
ZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVycyBu
ZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxp
dHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlvbnMg
aW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwgYW5k
IFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFj
ZS12aXNpYmlsaXR5LWltYWdlLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0
eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTE4ICBa
YW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBHVEsgZ2FyZGVuaW5nLCB1cGRhdGluZyBiYXNlbGluZXMgYWZ0ZXIgcm9sbG91dHMgaW4gcjEy
MDYyNy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2li
aWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1h
Z2UtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhYTQzNDYwNTcxY2FmODIyZjI3ZTgzZTliNTU2
NTdiY2QyZDhmZmMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI5NzcKemNtZUFTQE4/KG9sSHlg
dVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RtflpwCno2TFR9
bUc7OyVFT0IzVT92XjNLYyheTng0USFAKC1HbXtocHFlTX00K2xkU2Ure1RfUmp2KkN1LXJnfEd5
WF8kMAp6NVAxM2w9YXRvOCkmP3kqRTdAViY5NmYjS1JJamhRNCglIXg9NVhBMXFNPmZSVEgxNyQ/
dGFVJm1obFY+RlpSNXYKelduXmVyRUV2SlNWQSNtWUFSdnNOdkdNNmM7cENvSTh7Kn5udU1Ue0Vk
I2pZX3o2WlAzb3RMUHRAYykkO2ZCZkkjCnotJXI7e2Vme15ALUJoY19rcy08cXppR3RTTlZKO2ha
OG1SZWNJUT5mZ3EoXm1ANXZFaV9eJk9rIV9ZOX0wMjR6OAp6QyshKSEoUTs8VFpoVyVYWFpjXjZw
P2MjJWBxKVliazZ+SWRfdH44NGAtfV9eMCYrR21GZUVXP0dicEhtN15lQGIKekFDcioyXkh9MHFZ
MztFYXBvQ0RtRkxyZXghLTRyWDUqUWhkdSF1MUBffFRxX2JNclRvUDEoTktAQjVlLUs4VH5iCno1
Ym80YjI2RHNeOHlhUF5pcj58O0djLTY0PihxXnotYlkxLWFiWSRaeHVjT3d3P0BLZlZqQzJSP1N9
ZntIVHZxJApUcXMlNyordVJKRXU2ezEtb0QhTTwmNz9BNQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0
eS9iYWNrZmFjZS12aXNpYmlsaXR5LWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIyMDAyNTBjNzg1ZWI1Nzg0MTliOWZhZDdiNWExNjQz
YzhjMWYyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tm
YWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw3IEBACisKKworCisKKworCitUaGlzIHRlc3QgaXMgb25seSB1c2VmdWwgYXMgYSBw
aXhlbCB0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12
aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI1NjM1MjE3YjQ4MzZiZjYyYzZlNzExNTY3YmE3NjI4MDU5ODU0MTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNp
YmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UuaHRtbApAQCAtMCwwICsxLDEwMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAudGVzdC1kaXYKKyAg
eworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHRleHQtYWxpZ246
IGNlbnRlcjsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5OworICB9CisgIC50ZXN0LWltZwor
ICB7CisgICAgd2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworICAgIC13ZWJraXQtYmFj
a2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgLyog
RnVuY3Rpb24gdG8gZHJhdyBhIDUweDUwIHdoaXRlIG9wYXF1ZSBzcXVhcmUgd2l0aCB0aGUgdXBw
ZXItbGVmdCBxdWFkcmFudAorICAgICByZWQgd2l0aCBhIHNwZWNpZmllZCBzdHlsZSAqLworICBm
dW5jdGlvbiBhZGRUZXN0SW1nKHN0eWxlKSB7CisgICAgdmFyIGltZ0RhdGEgPSAiZGF0YTppbWFn
ZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9t
QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFB
QTdEQWNkdnFHUUFBQUNEU1VSQlZGaEg3ZEt4RGNBZ0RBVlJ6QWlwS2JQL1FwVFVtY0hNY0pJVnVi
alVKd1F2UDc3MWpxTHZPYnZvcERHckRxbzl4MnNSVDdYVUlnS2tkVnRxRVFIU3VpMjFpQUJwM1pa
YVJJQzBia3N0SWtEYXB0dUt6Q1RQK0tsdHF1VzF5UDlYU3kwaVFGcTNwUllSSUszYlVvc0lrTlp0
cVVVRVNPdTIxQ0lDcEcyNnJRdDN4d1pkV1NZYTlRQUFBQUJKUlU1RXJrSmdnZz09IjsKKyAgICBk
b2N1bWVudC53cml0ZSgiPGltZyBzdHlsZT1cIiIgKyBzdHlsZSArICJcIiBzcmM9XCIiICsgaW1n
RGF0YSArICJcIiB3aWR0aD01MHB4IGhlaWdodD01MHB4IGNsYXNzPVwidGVzdC1pbWdcIi8+Iik7
CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJsZT48dHI+CisKKzwhLS0g
VGhpcyB0ZXN0IGRyYXdzIGEgaW1nIHdoaWNoIGlzIGZhY2luZyB0aGUgc2NyZWVuLiAtLT4KKwor
PHRkPgorICA8ZGl2IGNsYXNzPSJ0ZXN0LWRpdiI+CisgICAgPHNjcmlwdD5hZGRUZXN0SW1nKCIi
KTwvc2NyaXB0PgorICA8L2Rpdj4KKzwvdGQ+CisKKzwhLS0gVGhpcyB0ZXN0IGRyYXdzIGEgc2lu
Z2xlLXNpZGVkIGltZyBmYWNpbmcgYXdheSBmcm9tIHRoZSBzY3JlZW4uICBUaGlzCisgICAgIHNo
b3VsZCBub3QgYXBwZWFyLiAtLT4KKworPHRkPgorICA8ZGl2IGNsYXNzPSJ0ZXN0LWRpdiI+Cisg
ICAgPHNjcmlwdD5hZGRUZXN0SW1nKCItd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcp
OyIpPC9zY3JpcHQ+CisgIDwvZGl2PgorPC90ZD4KKworPCEtLSBUaGlzIHRlc3Qgcm90YXRlcyB0
aGUgZGl2IGF3YXkgZnJvbSB0aGUgc2NyZWVuLCBidXQga2VlcHMgdGhlIAorICAgICBzaW5nbGUt
c2lkZWQgaW1nIGZhY2luZyB0b3dhcmRzIGl0cyBkaXYuICBUaGlzIHNob3VsZCBhcHBlYXIuIC0t
PgorCis8dGQ+CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zv
cm06IHJvdGF0ZVkoMTgwZGVnKSI+CisgICAgPHNjcmlwdD5hZGRUZXN0SW1nKCIiKTwvc2NyaXB0
PgorICA8L2Rpdj4KKzwvdGQ+CisKKzwvdHI+PHRyPgorCis8IS0tIFRoaXMgdGVzdCBkcmF3cyBh
IGltZyBpbnNpZGUgYSBkaXYgd2hpY2ggaXMgZG91YmxlLXNpZGVkIGFuZCBkb2VzIG5vdCAKKyAg
ICAgZmFjZSB0aGUgc2NyZWVuLiAgVGhpcyBzaG91bGQgbm90IGFwcGVhciBiZWNhdXNlIHByZXNl
cnZlLTNkIGlzIHNldCBmb3IKKyAgICAgdGhlIHBhcmVudCBkaXYuIC0tPgorCis8dGQ+CisgIDxk
aXYgY2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgw
ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOyI+CisgICAgPHNjcmlw
dD5hZGRUZXN0SW1nKCIiKTwvc2NyaXB0PgorICA8L2Rpdj4KKzwvdGQ+CisKKzwhLS0gVGhpcyB0
ZXN0IGRyYXdzIGEgaW1nIGluc2lkZSBhIGRpdiB3aGljaCBpcyBzaW5nbGUtc2lkZWQgYW5kIGRv
ZXMgbm90CisgICAgIGZhY2UgdGhlIHNjcmVlbi4gIFRoaXMgc2hvdWxkIGFwcGVhciBiZWNhdXNl
IHByZXNlcnZlLTNkIGlzIHNldCBmb3IgdGhlCisgICAgIHBhcmVudCBkaXYuIC0tPgorCis8dGQ+
CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZVkoMTgwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOyAtd2Via2l0
LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsiPgorICAgIDxzY3JpcHQ+YWRkVGVzdEltZygi
LXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsiKTwvc2NyaXB0PgorICA8L2Rpdj4K
KzwvdGQ+CisKKzwhLS0gVGhpcyB0ZXN0IGRyYXdzIGEgaW1nIGluc2lkZSBhIGRpdiB3aGljaCBp
cyBzaW5nbGUtc2lkZWQgYW5kIGRvZXMgbm90CisgICAgIGZhY2UgdGhlIHNjcmVlbi4gIFRoaXMg
c2hvdWxkIG5vdCBhcHBlYXIgYmVjYXVzZSBwcmVzZXJ2ZS0zZCBpcyBub3Qgc2V0CisgICAgIGZv
ciB0aGUgcGFyZW50IGRpdi4gIC0tPgorCis8dGQ+CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2IiBz
dHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsgLXdlYmtpdC1iYWNrZmFj
ZS12aXNpYmlsaXR5OiBoaWRkZW47Ij4KKyAgICA8c2NyaXB0PmFkZFRlc3RJbWcoIi13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7Iik8L3NjcmlwdD4KKyAgPC9kaXY+Cis8L3RkPgor
Cis8L3RyPjwvdGFibGU+CisKKworPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAvKiBJbnN0cnVjdCB0aGUgdGVzdCBydW5uZXIgdGhhdCB0aGlzIGlzIGEgcGl4ZWwg
dGVzdCAqLworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgZG9jdW1l
bnQud3JpdGUoIjxzcGFuIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi01MDAwcHgnPlRo
aXMgdGVzdCBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3Q8L3NwYW4+Iik7CisgIH0KKzwv
c2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148611</attachid>
            <date>2012-06-20 11:27:34 -0700</date>
            <delta_ts>2012-06-20 12:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88908-20120620112734.patch</filename>
            <type>text/plain</type>
            <size>25432</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlN2NlOWY1NGU5OGQ0
NDljZmQzODhiOWZmZWQzZDc0NTljOGEyMTUzLi4wZjQ3OTRhZjUxOGI0ODQzY2NmM2MyYTJiYTMy
MTljZDM1MTRmMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0yMCAg
Q2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZp
ZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkw
OAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBjb250ZW50cyBsYXllcidzIGJhY2tmYWNl
IGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAgIGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBi
YWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRyYWNrIHdoaWNoCisgICAgICAgIGxheWVy
cyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlv
bnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAgICAgICAgV2ViS2l0OjpXZWJMYXllciwg
YW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAg
ICAgICAoV2ViTGF5ZXIpOgorICAgICAgICAgICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVj
aWZ5IHRoYXQgYSBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAg
IGJhY2tmYWNlIGN1bGxpbmcgYmVoYXZpb3IuCisKIDIwMTItMDYtMTQgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVzZSBXZWJJbWFn
ZUxheWVyIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBmb3IgaW1hZ2UgbGF5ZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggY2FkM2Q0NWJmZWU1OTRhYTBhMjg3NmIwYTFkZjg4NDZhZTc2OTU2My4uMzNkYmVhYjAy
OWI5MzRlMTdlMGExZjhlYjk2NjM0YzU2YTU0NDQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5
IEBACisyMDEyLTA2LTIwICBDaHJpc3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkgZG9l
c24ndCB3b3JrIHdpdGggdmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4OTA4CisKKyAgICAgICAgV2hlbiBkZXRlcm1pbmluZyBhIGNvbnRlbnRz
IGxheWVyJ3MgYmFja2ZhY2UgY3VsbGluZywgdXNlIHRoZSBwYXJlbnQKKyAgICAgICAgbGF5ZXIn
cyB0cmFuc2Zvcm0gYW5kIGJhY2tmYWNlLXZpc2liaWxpdHkgcHJvcGVydGllcy4gVHJhY2sgd2hp
Y2gKKyAgICAgICAgbGF5ZXJzIG5lZWQgdGhpcyBzcGVjaWFsIHRyZWF0bWVudCB3aXRoIHVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICBhbmQgc2V0VXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5IGZ1bmN0aW9ucyBpbiBXZWJDb3JlOjpMYXllckNocm9taXVtLAorICAgICAgICBX
ZWJLaXQ6OldlYkxheWVyLCBhbmQgV2ViQ29yZTo6Q0NMYXllckltcGwuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNvbXBvc2l0aW5nL2Jh
Y2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS5odG1sCisgICAgICAg
ICAgICAgICBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxp
dHktd2ViZ2wuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKToKKyAgICAgICAgICAgIFdoZW4gYSBjb250ZW50
cyBsYXllciBpcyBhZGRlZCwgdGFnIGl0IGFzIGluaGVyaXRpbmcgaXRzIGJhY2tmYWNlCisgICAg
ICAgICAgICBjdWxsaW5nIGZyb20gaXRzIHBhcmVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAgICAgICAgICAgICBJbml0aWFsaXpl
IG5ldyBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSBtZW1iZXIgdmFyaWFibGUuCisgICAg
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgICAgICAgICAgUHJvcGFnYXRlIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5IHRvIEND
TGF5ZXJJbXBsLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRVc2VQYXJl
bnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgICAgICAoTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICAgICAgICAgQWRkIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5
IG1lbWJlciB2YXJpYWJsZSBhbmQgbW9kaWZ5CisgICAgICAgICAgICAgICAgYW5kIHF1ZXJ5IGFj
Y2Vzc29ycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHA6CisgICAgICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJbXBs
KToKKyAgICAgICAgICAgICAgICBJbml0aWFsaXplIG5ldyBtX3VzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eSBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1w
bDo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6dXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgICAg
IChDQ0xheWVySW1wbCk6CisgICAgICAgICAgICAgICAgQWRkIG1fdXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5IG1lbWJlciB2YXJpYWJsZSBhbmQgbW9kaWZ5CisgICAgICAgICAgICAgICAgYW5k
IHF1ZXJ5IGFjY2Vzc29ycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAgICAgKFdlYkNvcmU6OmxheWVy
U2hvdWxkQmVTa2lwcGVkKToKKyAgICAgICAgICAgICAgICBXaGVuIGV4YW1pbmluZyBhIGxheWVy
LCBpZiB0aGUgbGF5ZXIgaGFzIAorICAgICAgICAgICAgICAgIHVzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eSBzZXQgdGhlbiB1c2UgdGhlIGxheWVyJ3MgcGFyZW50CisgICAgICAgICAgICAgICAg
bGF5ZXIgdG8gZGV0ZXJtaW5lIGJhY2tmYWNlIGN1bGxpbmcuCisKIDIwMTItMDYtMTggIEpvb25l
IEh1ciAgPGpvb25lLmh1ckBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRm9udGNvbmZpZyBj
YW4ndCBiZSBsaW5rZWQgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTk5
MmUyOGU3MTM4OTA5ZTEyNTBlMGIyNjA2MGZkMjUwYWNjODQ0NS4uMGVjMzAyZWZlZTRmZjM4YjQx
OWJlMWU5YzQ3MzBiZmEyY2YxMDM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMi0wNi0yMCAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmls
aXR5IGRvZXNuJ3Qgd29yayB3aXRoIHZpZGVvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODkwOAorCisgICAgICAgIFdoZW4gZGV0ZXJtaW5pbmcgYSBj
b250ZW50cyBsYXllcidzIGJhY2tmYWNlIGN1bGxpbmcsIHVzZSB0aGUgcGFyZW50CisgICAgICAg
IGxheWVyJ3MgdHJhbnNmb3JtIGFuZCBiYWNrZmFjZS12aXNpYmlsaXR5IHByb3BlcnRpZXMuIFRy
YWNrIHdoaWNoCisgICAgICAgIGxheWVycyBuZWVkIHRoaXMgc3BlY2lhbCB0cmVhdG1lbnQgd2l0
aCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkKKyAgICAgICAgYW5kIHNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eSBmdW5jdGlvbnMgaW4gV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSwKKyAg
ICAgICAgV2ViS2l0OjpXZWJMYXllciwgYW5kIFdlYkNvcmU6OkNDTGF5ZXJJbXBsLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVy
LmNwcDoKKyAgICAgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRVc2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkpOgorICAgICAgICAgICAgICAgIEFkZCBhbiBhY2Nlc3NvciB0byBzcGVjaWZ5
IHRoYXQgYSBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncworICAgICAgICAgICAgICAgIGJh
Y2tmYWNlIGN1bGxpbmcgYmVoYXZpb3IuCisKIDIwMTItMDYtMTggIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEdlc3R1cmVQaW5jaEJlZ2luIGFu
ZCBmcmllbmRzIGFyZSBnZXN0dXJlIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oCmluZGV4IDhmYzNkMmQwMzY0Nzg3OTU0ZmY5NjIzOGM5MTI1ZmQ5NTA4
ODQ1ODguLmNhNTI5ZjdmY2RhNzc5ZGY1MTQ1MDljMTRkM2Q4YmQzYjEzNjZjNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTEwOCw2ICsxMDgsMTYg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsK
IAogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKworICAgIC8v
IE1hcmsgdGhhdCB0aGlzIGxheWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBh
bmQgZG91YmxlLXNpZGVkCisgICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxh
eWVyJ3MgYmFja2ZhY2UgdmlzaWJpbGl0eSBpbnN0ZWFkIG9mCisgICAgLy8gdXNpbmcgaXRzIG93
biBwcm9wZXJ0aWVzLiBJZiB0aGlzIHByb3BlcnR5IGlzIHNldCwgdGhpcyBsYXllciBtdXN0Cisg
ICAgLy8gaGF2ZSBhIHBhcmVudCwgYW5kIHRoZSBwYXJlbnQgbWF5IG5vdCBoYXZlIHRoaXMgcHJv
cGVydHkgc2V0LgorICAgIC8vIE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3Vl
cyB3aXRoIHZpc2liaWxpdHkgdGhlIGhhbmRsaW5nIG9mCisgICAgLy8gV2ViS2l0IGxheWVycyB0
aGF0IGhhdmUgYSBjb250ZW50cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywK
KyAgICAvLyBldGMpLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkoYm9vbCk7CisKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKFdlYkNvbG9yKTsKIAogICAgIC8vIENsZWFyIHRoZSBmaWx0ZXJzIGluIHVzZSBieSBw
YXNzaW5nIGluIGEgbmV3bHkgaW5zdGFudGlhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcAppbmRleCA1ODQxYjQ3Y2FhMDk0ZjAyYTI2OTdmM2E3MTVkNDA1Yzk3ODQ2NDcx
Li4wMTNlNzM0ZjkxY2ZlMzA0OWQ2ODg2YjE5OTBhNzVhZDRiMTVkZGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTgzOCw2ICs4MzgsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKExheWVyQ2hyb21pdW0qIGNvbnRl
bnRzTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jb250ZW50c0xheWVyLmlz
TnVsbCgpKSB7CisgICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRCYWNrZmFjZVZp
c2liaWxpdHkoZmFsc2UpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVtb3ZlRnJvbVBhcmVu
dCgpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKICAgICB9CkBAIC04NDYsNiAr
ODQ3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNMYXllcihM
YXllckNocm9taXVtKiBjb250ZW50c0xheWVyKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBX
ZWJMYXllcihjb250ZW50c0xheWVyKTsKIAogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci5zZXRV
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CiAKICAgICAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNhbGwgc2V0RHJhd3NDb250ZW50IGFzIHNvb24gYXMgd2UgcmVjZWl2ZSB0aGUg
bmV3IGNvbnRlbnRzTGF5ZXIsIGZvcgogICAgICAgICAvLyB0aGUgY29ycmVjdG5lc3Mgb2YgZWFy
bHkgZXhpdCBjb25kaXRpb25zIGluIHNldERyYXdzQ29udGVudCgpIGFuZCBzZXRDb250ZW50c1Zp
c2libGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMWQxYmIxNDEzNDMwOGM2YjgxNmU3
OTIxM2FmMDlmOTI5OTc2YjUxMi4uZjVjMThmOGI0NDkwNWFhZjYzNmQxODZmNGJkNjZmZTNjYTk4
MDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTgzLDYgKzgzLDcgQEAgTGF5ZXJDaHJv
bWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3VzZXNMYXllckNsaXBwaW5nKGZhbHNlKQog
ICAgICwgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50KGZhbHNlKQogICAgICwgbV9wcmVzZXJ2ZXMz
RChmYWxzZSkKKyAgICAsIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKQogICAg
ICwgbV9hbHdheXNSZXNlcnZlVGV4dHVyZXMoZmFsc2UpCiAgICAgLCBtX2RyYXdDaGVja2VyYm9h
cmRGb3JNaXNzaW5nVGlsZXMoZmFsc2UpCiAgICAgLCBtX2ZvcmNlUmVuZGVyU3VyZmFjZShmYWxz
ZSkKQEAgLTU2MCw2ICs1NjEsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRJc0NvbnRhaW5lckZvckZpeGVk
UG9zaXRpb25MYXllcnMobV9pc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMpOwogICAg
IGxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIobV9maXhlZFRvQ29udGFpbmVyTGF5ZXIp
OwogICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKKyAgICBsYXllci0+
c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5KTsKICAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7CiAg
ICAgbGF5ZXItPnNldE1heFNjcm9sbFBvc2l0aW9uKG1fbWF4U2Nyb2xsUG9zaXRpb24pOwogICAg
IGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX3N1YmxheWVyVHJhbnNmb3JtKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAppbmRleCA0YTVmMWFlNzNhMDNiMjlhZTM5MWNlNGNjMDJiNjMwYjJhOTkyNjM1
Li44YjAxOGJiNTg2MDEzMGI0ZTI5Y2E1NTI3YzBkMDRmZjc2NGE4YWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCkBAIC0xODksNiArMTg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlc2VydmVz
M0QoYm9vbCBwcmVzZXJ2ZTNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZTNEOyB9CiAgICAg
Ym9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7IH0KIAorICAg
IHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFyZW50QmFja2Zh
Y2VWaXNpYmlsaXR5KSB7IG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5ID0gdXNlUGFyZW50
QmFja2ZhY2VWaXNpYmlsaXR5OyB9CisgICAgYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxp
dHkoKSBjb25zdCB7IHJldHVybiBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsgfQorCiAg
ICAgdm9pZCBzZXRVc2VzTGF5ZXJDbGlwcGluZyhib29sIHVzZXNMYXllckNsaXBwaW5nKSB7IG1f
dXNlc0xheWVyQ2xpcHBpbmcgPSB1c2VzTGF5ZXJDbGlwcGluZzsgfQogICAgIGJvb2wgdXNlc0xh
eWVyQ2xpcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3VzZXNMYXllckNsaXBwaW5nOyB9CiAKQEAg
LTM2Niw2ICszNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsK
ICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBib29sIG1fcHJlc2VydmVz
M0Q7CisgICAgYm9vbCBtX3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eTsKICAgICBib29sIG1f
YWx3YXlzUmVzZXJ2ZVRleHR1cmVzOwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlz
c2luZ1RpbGVzOwogICAgIGJvb2wgbV9mb3JjZVJlbmRlclN1cmZhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKaW5kZXggMDdmMDIyZDljYzVkNzFiNzQyNGRmNzRkMjQwZmE5ZmU2MzA1YjZkMC4u
ZjI4MDk1NzNjNmI2ZDhhZGIxZGQ4ZTcxZTYwMjU3NDVhMjI0ZTcyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcApAQCAtNjAsNiArNjAsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50
IGlkKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwg
bV9wcmVzZXJ2ZXMzRChmYWxzZSkKKyAgICAsIG1fdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5
KGZhbHNlKQogICAgICwgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGZhbHNlKQog
ICAgICwgbV91c2VzTGF5ZXJDbGlwcGluZyhmYWxzZSkKICAgICAsIG1faXNOb25Db21wb3NpdGVk
Q29udGVudChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDI0YWJhM2E5MzQxMmY2Mjlh
MzYyMzUxNWVjZDE0NmU3MTlhNTM4YTUuLjgyYjQzYmU4YWEwNDQxZTI4NGY5MmU5Nzk1YWUyNDBj
NjIwYmM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTQxLDYgKzE0MSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwogICAgIGJvb2wgcHJlc2VydmVzM0Qo
KSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKKyAgICB2b2lkIHNldFVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkgeyBt
X3VzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSA9IHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eTsgfQorICAgIGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1
cm4gbV91c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHk7IH0KKwogICAgIHZvaWQgc2V0VXNlc0xh
eWVyQ2xpcHBpbmcoYm9vbCB1c2VzTGF5ZXJDbGlwcGluZykgeyBtX3VzZXNMYXllckNsaXBwaW5n
ID0gdXNlc0xheWVyQ2xpcHBpbmc7IH0KICAgICBib29sIHVzZXNMYXllckNsaXBwaW5nKCkgY29u
c3QgeyByZXR1cm4gbV91c2VzTGF5ZXJDbGlwcGluZzsgfQogCkBAIC0zMzEsNiArMzM0LDcgQEAg
cHJpdmF0ZToKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9u
OwogICAgIGJvb2wgbV9wcmVzZXJ2ZXMzRDsKKyAgICBib29sIG1fdXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5OwogICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOwog
ICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRyYW5zZm9ybTsK
ICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggMjJiMGUwNDM0NGE5OWRk
YzNmZjA2MTc3NDU3Y2IzMjQ1ZDAyMmE3Zi4uYWRhYWZkMjAwYTZmNGI4MDY2ZTJiYTY4MzZkY2I1
YThmM2MzY2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
CkBAIC0yNDMsOCArMjQzLDE1IEBAIHN0YXRpYyBib29sIGxheWVyU2hvdWxkQmVTa2lwcGVkKExh
eWVyVHlwZSogbGF5ZXIpCiAgICAgaWYgKCFsYXllci0+ZHJhd3NDb250ZW50KCkgfHwgbGF5ZXIt
PmJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBMYXllclR5
cGUqIGJhY2tmYWNlVGVzdExheWVyID0gbGF5ZXI7CisgICAgaWYgKGxheWVyLT51c2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkoKSkgeworICAgICAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgpKTsK
KyAgICAgICAgQVNTRVJUKCFsYXllci0+cGFyZW50KCktPnVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSgpKTsKKyAgICAgICAgYmFja2ZhY2VUZXN0TGF5ZXIgPSBsYXllci0+cGFyZW50KCk7Cisg
ICAgfQorCiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBub3QgYmUgZHJhd24gaWYgKDEpIGl0IGlz
IG5vdCBkb3VibGUtc2lkZWQgYW5kICgyKSB0aGUgYmFjayBvZiB0aGUgbGF5ZXIgaXMga25vd24g
dG8gYmUgZmFjaW5nIHRoZSBzY3JlZW4uCi0gICAgaWYgKCFsYXllci0+ZG91YmxlU2lkZWQoKSAm
JiB0cmFuc2Zvcm1Ub1NjcmVlbklzS25vd24obGF5ZXIpICYmIGlzTGF5ZXJCYWNrRmFjZVZpc2li
bGUobGF5ZXIpKQorICAgIGlmICghYmFja2ZhY2VUZXN0TGF5ZXItPmRvdWJsZVNpZGVkKCkgJiYg
dHJhbnNmb3JtVG9TY3JlZW5Jc0tub3duKGJhY2tmYWNlVGVzdExheWVyKSAmJiBpc0xheWVyQmFj
a0ZhY2VWaXNpYmxlKGJhY2tmYWNlVGVzdExheWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAK
aW5kZXggNmIxMDI5ODE0NGYyNjYxOGFkMjY1MDIwM2I1ZDIzNmY4YzA1NmNjYi4uM2IyYzYyZTZk
N2E0NmRkMDRhNzQ2YTUxYTAxNTEyZmY3N2E5YmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyLmNwcApAQCAtMjcwLDYgKzI3MCwxMSBAQCB2b2lkIFdlYkxheWVyOjpzZXRQ
cmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCiAgICAgbV9wcml2YXRlLT5zZXRQcmVzZXJ2ZXMz
RChwcmVzZXJ2ZTNEKTsKIH0KIAordm9pZCBXZWJMYXllcjo6c2V0VXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5KGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KQoreworICAgIG1fcHJp
dmF0ZS0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eSk7Cit9CisKIHZvaWQgV2ViTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihXZWJDb2xv
ciBjb2xvcikKIHsKICAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYWJmZGJiMDkzODE0NDA4MzVjMmYwZjY0MjlmMDE5Nzc0MGE3OThiYy4uY2FjMjFhMGIz
MjZiMmMyZDc3Y2IyYjU5NDJiODZlZDdhYjExZDA2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTA2LTIwICBDaHJpc3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkgZG9lc24ndCB3
b3JrIHdpdGggdmlkZW8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4OTA4CisKKyAgICAgICAgV2hlbiBkZXRlcm1pbmluZyBhIGNvbnRlbnRzIGxheWVy
J3MgYmFja2ZhY2UgY3VsbGluZywgdXNlIHRoZSBwYXJlbnQKKyAgICAgICAgbGF5ZXIncyB0cmFu
c2Zvcm0gYW5kIGJhY2tmYWNlLXZpc2liaWxpdHkgcHJvcGVydGllcy4gVHJhY2sgd2hpY2gKKyAg
ICAgICAgbGF5ZXJzIG5lZWQgdGhpcyBzcGVjaWFsIHRyZWF0bWVudCB3aXRoIHVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eQorICAgICAgICBhbmQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5IGZ1bmN0aW9ucyBpbiBXZWJDb3JlOjpMYXllckNocm9taXVtLAorICAgICAgICBXZWJLaXQ6
OldlYkxheWVyLCBhbmQgV2ViQ29yZTo6Q0NMYXllckltcGwuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNp
YmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxp
dHktaW1hZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9iYWNr
ZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmls
aXR5LXdlYmdsLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvYmFj
a2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LXdlYmdsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFj
ZS12aXNpYmlsaXR5LXdlYmdsLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTE4ICBaYW4gRG9iZXJz
ZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2Fy
ZGVuaW5nLCB1cGRhdGluZyBiYXNlbGluZXMgYWZ0ZXIgcm9sbG91dHMgaW4gcjEyMDYyNy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFj
a2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UtZXhwZWN0
ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhYTQzNDYwNTcxY2FmODIyZjI3ZTgzZTliNTU2NTdiY2QyZDhm
ZmMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI5NzcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RtflpwCno2TFR9bUc7OyVFT0Iz
VT92XjNLYyheTng0USFAKC1HbXtocHFlTX00K2xkU2Ure1RfUmp2KkN1LXJnfEd5WF8kMAp6NVAx
M2w9YXRvOCkmP3kqRTdAViY5NmYjS1JJamhRNCglIXg9NVhBMXFNPmZSVEgxNyQ/dGFVJm1obFY+
RlpSNXYKelduXmVyRUV2SlNWQSNtWUFSdnNOdkdNNmM7cENvSTh7Kn5udU1Ue0VkI2pZX3o2WlAz
b3RMUHRAYykkO2ZCZkkjCnotJXI7e2Vme15ALUJoY19rcy08cXppR3RTTlZKO2haOG1SZWNJUT5m
Z3EoXm1ANXZFaV9eJk9rIV9ZOX0wMjR6OAp6QyshKSEoUTs8VFpoVyVYWFpjXjZwP2MjJWBxKVli
azZ+SWRfdH44NGAtfV9eMCYrR21GZUVXP0dicEhtN15lQGIKekFDcioyXkh9MHFZMztFYXBvQ0Rt
RkxyZXghLTRyWDUqUWhkdSF1MUBffFRxX2JNclRvUDEoTktAQjVlLUs4VH5iCno1Ym80YjI2RHNe
OHlhUF5pcj58O0djLTY0PihxXnotYlkxLWFiWSRaeHVjT3d3P0BLZlZqQzJSP1N9ZntIVHZxJApU
cXMlNyordVJKRXU2ezEtb0QhTTwmNz9BNQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFj
ZS12aXNpYmlsaXR5LWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTIyMDAyNTBjNzg1ZWI1Nzg0MTliOWZhZDdiNWExNjQzYzhjMWYyNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2li
aWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACisKKworCisKKworCitUaGlzIHRlc3QgaXMgb25seSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5
L2JhY2tmYWNlLXZpc2liaWxpdHktaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbWFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI1NjM1MjE3YjQ4MzZiZjYyYzZlNzExNTY3YmE3NjI4MDU5ODU0MTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2Jh
Y2tmYWNlLXZpc2liaWxpdHktaW1hZ2UuaHRtbApAQCAtMCwwICsxLDEwMiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAudGVzdC1kaXYKKyAgeworICAgIHdp
ZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5OworICB9CisgIC50ZXN0LWltZworICB7CisgICAg
d2lkdGg6IDUwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworICAgIC13ZWJraXQtYmFja2ZhY2Utdmlz
aWJpbGl0eTogaGlkZGVuOworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgLyogRnVuY3Rpb24g
dG8gZHJhdyBhIDUweDUwIHdoaXRlIG9wYXF1ZSBzcXVhcmUgd2l0aCB0aGUgdXBwZXItbGVmdCBx
dWFkcmFudAorICAgICByZWQgd2l0aCBhIHNwZWNpZmllZCBzdHlsZSAqLworICBmdW5jdGlvbiBh
ZGRUZXN0SW1nKHN0eWxlKSB7CisgICAgdmFyIGltZ0RhdGEgPSAiZGF0YTppbWFnZS9wbmc7YmFz
ZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNS
MElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFH
UUFBQUNEU1VSQlZGaEg3ZEt4RGNBZ0RBVlJ6QWlwS2JQL1FwVFVtY0hNY0pJVnVialVKd1F2UDc3
MWpxTHZPYnZvcERHckRxbzl4MnNSVDdYVUlnS2tkVnRxRVFIU3VpMjFpQUJwM1paYVJJQzBia3N0
SWtEYXB0dUt6Q1RQK0tsdHF1VzF5UDlYU3kwaVFGcTNwUllSSUszYlVvc0lrTlp0cVVVRVNPdTIx
Q0lDcEcyNnJRdDN4d1pkV1NZYTlRQUFBQUJKUlU1RXJrSmdnZz09IjsKKyAgICBkb2N1bWVudC53
cml0ZSgiPGltZyBzdHlsZT1cIiIgKyBzdHlsZSArICJcIiBzcmM9XCIiICsgaW1nRGF0YSArICJc
IiB3aWR0aD01MHB4IGhlaWdodD01MHB4IGNsYXNzPVwidGVzdC1pbWdcIi8+Iik7CisgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJsZT48dHI+CisKKzwhLS0gVGhpcyB0ZXN0
IGRyYXdzIGEgaW1nIHdoaWNoIGlzIGZhY2luZyB0aGUgc2NyZWVuLiAtLT4KKworPHRkPgorICA8
ZGl2IGNsYXNzPSJ0ZXN0LWRpdiI+CisgICAgPHNjcmlwdD5hZGRUZXN0SW1nKCIiKTwvc2NyaXB0
PgorICA8L2Rpdj4KKzwvdGQ+CisKKzwhLS0gVGhpcyB0ZXN0IGRyYXdzIGEgc2luZ2xlLXNpZGVk
IGltZyBmYWNpbmcgYXdheSBmcm9tIHRoZSBzY3JlZW4uICBUaGlzCisgICAgIHNob3VsZCBub3Qg
YXBwZWFyLiAtLT4KKworPHRkPgorICA8ZGl2IGNsYXNzPSJ0ZXN0LWRpdiI+CisgICAgPHNjcmlw
dD5hZGRUZXN0SW1nKCItd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOyIpPC9zY3Jp
cHQ+CisgIDwvZGl2PgorPC90ZD4KKworPCEtLSBUaGlzIHRlc3Qgcm90YXRlcyB0aGUgZGl2IGF3
YXkgZnJvbSB0aGUgc2NyZWVuLCBidXQga2VlcHMgdGhlIAorICAgICBzaW5nbGUtc2lkZWQgaW1n
IGZhY2luZyB0b3dhcmRzIGl0cyBkaXYuICBUaGlzIHNob3VsZCBhcHBlYXIuIC0tPgorCis8dGQ+
CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZVkoMTgwZGVnKSI+CisgICAgPHNjcmlwdD5hZGRUZXN0SW1nKCIiKTwvc2NyaXB0PgorICA8L2Rp
dj4KKzwvdGQ+CisKKzwvdHI+PHRyPgorCis8IS0tIFRoaXMgdGVzdCBkcmF3cyBhIGltZyBpbnNp
ZGUgYSBkaXYgd2hpY2ggaXMgZG91YmxlLXNpZGVkIGFuZCBkb2VzIG5vdCAKKyAgICAgZmFjZSB0
aGUgc2NyZWVuLiAgVGhpcyBzaG91bGQgbm90IGFwcGVhciBiZWNhdXNlIHByZXNlcnZlLTNkIGlz
IHNldCBmb3IKKyAgICAgdGhlIHBhcmVudCBkaXYuIC0tPgorCis8dGQ+CisgIDxkaXYgY2xhc3M9
InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsgLXdl
YmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOyI+CisgICAgPHNjcmlwdD5hZGRUZXN0
SW1nKCIiKTwvc2NyaXB0PgorICA8L2Rpdj4KKzwvdGQ+CisKKzwhLS0gVGhpcyB0ZXN0IGRyYXdz
IGEgaW1nIGluc2lkZSBhIGRpdiB3aGljaCBpcyBzaW5nbGUtc2lkZWQgYW5kIGRvZXMgbm90Cisg
ICAgIGZhY2UgdGhlIHNjcmVlbi4gIFRoaXMgc2hvdWxkIGFwcGVhciBiZWNhdXNlIHByZXNlcnZl
LTNkIGlzIHNldCBmb3IgdGhlCisgICAgIHBhcmVudCBkaXYuIC0tPgorCis8dGQ+CisgIDxkaXYg
Y2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVn
KTsgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOyAtd2Via2l0LWJhY2tmYWNl
LXZpc2liaWxpdHk6IGhpZGRlbjsiPgorICAgIDxzY3JpcHQ+YWRkVGVzdEltZygiLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsiKTwvc2NyaXB0PgorICA8L2Rpdj4KKzwvdGQ+CisK
KzwhLS0gVGhpcyB0ZXN0IGRyYXdzIGEgaW1nIGluc2lkZSBhIGRpdiB3aGljaCBpcyBzaW5nbGUt
c2lkZWQgYW5kIGRvZXMgbm90CisgICAgIGZhY2UgdGhlIHNjcmVlbi4gIFRoaXMgc2hvdWxkIG5v
dCBhcHBlYXIgYmVjYXVzZSBwcmVzZXJ2ZS0zZCBpcyBub3Qgc2V0CisgICAgIGZvciB0aGUgcGFy
ZW50IGRpdi4gIC0tPgorCis8dGQ+CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmls
aXR5OiBoaWRkZW47Ij4KKyAgICA8c2NyaXB0PmFkZFRlc3RJbWcoIi13ZWJraXQtdHJhbnNmb3Jt
OiByb3RhdGVZKDE4MGRlZyk7Iik8L3NjcmlwdD4KKyAgPC9kaXY+Cis8L3RkPgorCis8L3RyPjwv
dGFibGU+CisKKworPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAv
KiBJbnN0cnVjdCB0aGUgdGVzdCBydW5uZXIgdGhhdCB0aGlzIGlzIGEgcGl4ZWwgdGVzdCAqLwor
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgZG9jdW1lbnQud3JpdGUo
IjxzcGFuIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi01MDAwcHgnPlRoaXMgdGVzdCBp
cyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3Q8L3NwYW4+Iik7CisgIH0KKzwvc2NyaXB0Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9i
YWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktd2ViZ2wtZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12
aXNpYmlsaXR5LXdlYmdsLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjhmNGYyZTc5ZmZlMDhl
M2RkODM4NDRmZGUxMWUxYmJjY2E1NDgzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyOTUzCnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19
P29UIXU4Vwp6V1hyVXFNQU5oK3F2VnZkR34+aUhXMjBuS09Dd2BUR2pqdUQhPXlIYz8jflBpK3xy
JmRqdipDdS1yaFF4KSRBYlIKemFNQURNez9kSWx5SSQpcFMheTEyIyZYOUFyK0xqZ2NHd3RRaTtg
enhENnZ+XyRHfnZsRXs2XzchO0F3PTM+fT5LCno4OF5PdD45YjcjeTVYX0tzPSRSR0xWb1k3fElj
Xi1fUz9OTF9VXnM8byRiSz5xLUl0STBwU1ArMkUjXzBHZDJiQAp6WFAxaTRJa313cyExQH5yajB7
SXUjMjZmV1h3UyY4eysjJDM9Pk1Bdj9fUiZ5dz5eQFY+NDdhaD9XY25tUUxRKUAKel80PGBEMUgr
dnpVZ1FBSXNqZk9jPVd8UShveH1VeXVhfmVzUiZuJSh7aXBZfjM+OFAleEVVMUdIWlUrR0cwfm9K
CnpgenJmYG9tWUZNP3JKYlI1Un1IQmMhXjJpTTYxYVNtdjR9ZCg0SE5fJWZ1a0pgNUB0fUwkdHtS
dkxNfmY+RF93bQp6WUJ+ZU00cERqcj9fZGpyUVRHaHY2aDBjY3FtZkhnXk1+JGI/YFg9VFYjPSYj
RVNNV3BeRnVRNzk8WGlBO09YazsKSnZkJEA/Mj5eYT9KJl56YQoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJp
bGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LXdlYmdsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS13ZWJn
bC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA3NTQ5MjllNGY2MWRlZDg1YTYwZjU4MTU3NDJj
OTgyZDhkZDIyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Jh
Y2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS13ZWJnbC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorVGhpcyB0ZXN0IGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9i
YWNrZmFjZS12aXNpYmlsaXR5LXdlYmdsLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9i
YWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktd2ViZ2wuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMjhhMjdiYTUxYjhmOWJjZTlkOTAxMmQ5OGMyODNhZjZiNmZkNmVmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNr
ZmFjZS12aXNpYmlsaXR5LXdlYmdsLmh0bWwKQEAgLTAsMCArMSwxMjcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgLnRlc3QtZGl2CisgIHsKKyAgICB3aWR0
aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKKyAgfQorICAudGVzdC1jYW52YXMKKyAgeworICAg
IHdpZHRoOiA1MHB4OworICAgIGhlaWdodDogNTBweDsKKyAgICAtd2Via2l0LWJhY2tmYWNlLXZp
c2liaWxpdHk6IGhpZGRlbjsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgIC8qIEZ1bmN0aW9u
IHRvIGRyYXcgYSA1MHg1MCBibGFjayBvcGFxdWUgc3F1YXJlIHdpdGggdGhlIGxvd2VyLWxlZnQg
cXVhZHJhbnQKKyAgICAgcmVkIHVzaW5nIFdlYkdMICovCisgIGZ1bmN0aW9uIGRyYXdSZWRRdWFk
R0woZWxlbWVudElkKSB7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1lbnRJZCk7CisgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoImV4cGVyaW1lbnRh
bC13ZWJnbCIpOworICAgIGlmICghZ2wpIHsKKyAgICAgIHRocm93ICJVbmFibGUgdG8gZmV0Y2gg
V2ViR0wgcmVuZGVyaW5nIGNvbnRleHQgZm9yIENhbnZhcyI7CisgICAgfQorICAgIGdsLnZpZXdw
b3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgZ2wuY2xlYXJDb2xv
cigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
OworICAgIGdsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpOworICAgIGdsLnNjaXNzb3IoMCwgMCwg
Y2FudmFzLndpZHRoLzIsIGNhbnZhcy5oZWlnaHQvMik7CisgICAgZ2wuY2xlYXJDb2xvcigxLjAs
IDAuMCwgMC4wLCAxLjApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICB9
CisKKyAgLyogRnVuY3Rpb24gdG8gYWRkIGEgY2FudmFzIHdpdGggdGhlIHNwZWNpZmllZCBzdHls
ZSB3aXRoIGEgc3BlY2lmaWVkIHN0eWxlICovCisgIGZ1bmN0aW9uIGFkZFRlc3RDYW52YXMoaWQs
IHN0eWxlKSB7CisgICAgZG9jdW1lbnQud3JpdGUoIjxjYW52YXMgaWQ9XCIiICsgaWQgKyAiXCIg
d2lkdGg9NTBweCBoZWlnaHQ9NTBweCBjbGFzcz1cInRlc3QtY2FudmFzXCIgc3R5bGU9XCIiICsg
c3R5bGUgKyAiXCI+PC9jYW52YXM+Iik7CisgICAgZG9jdW1lbnQud3JpdGUoIjxzY3JpcHQ+ZHJh
d1JlZFF1YWRHTChcIiIgKyBpZCArICJcIik7PFwvc2NyaXB0PiIpOworICB9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorCis8IS0tIEVuYWJsZSBXZWJHTCBpbiB0aGUgdGVzdGluZyBmcmFt
ZXdvcmsgKHdpdGhvdXQgdGhpcyB3ZSB3aWxsIGZhaWwgdG8KKyAgICAgY3JlYXRlIGEgR0wgY29u
dGV4dCkgLS0+CisKKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdl
YkdMRW5hYmxlZCIsICIxIik7CisgIH0KKzwvc2NyaXB0PgorCis8dGFibGU+PHRyPgorCis8IS0t
IFRoaXMgdGVzdCBkcmF3cyBhIGNhbnZhcyB3aGljaCBpcyBmYWNpbmcgdGhlIHNjcmVlbi4gLS0+
CisKKzx0ZD4KKyAgPGRpdiBjbGFzcz0idGVzdC1kaXYiPgorICAgIDxzY3JpcHQ+YWRkVGVzdENh
bnZhcygidGVzdDAiLCAiIik7PC9zY3JpcHQ+CisgIDwvZGl2PgorPC90ZD4KKworPCEtLSBUaGlz
IHRlc3QgZHJhd3MgYSBzaW5nbGUtc2lkZWQgY2FudmFzIGZhY2luZyBhd2F5IGZyb20gdGhlIHNj
cmVlbi4gIFRoaXMKKyAgICAgc2hvdWxkIG5vdCBhcHBlYXIuIC0tPgorCis8dGQ+CisgIDxkaXYg
Y2xhc3M9InRlc3QtZGl2Ij4KKyAgICA8c2NyaXB0PmFkZFRlc3RDYW52YXMoInRlc3QxIiwgIi13
ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7Iik7PC9zY3JpcHQ+CisgIDwvZGl2Pgor
PC90ZD4KKworPCEtLSBUaGlzIHRlc3Qgcm90YXRlcyB0aGUgZGl2IGF3YXkgZnJvbSB0aGUgc2Ny
ZWVuLCBidXQga2VlcHMgdGhlIAorICAgICBzaW5nbGUtc2lkZWQgY2FudmFzIGZhY2luZyB0b3dh
cmRzIGl0cyBkaXYuICBUaGlzIHNob3VsZCBhcHBlYXIuIC0tPgorCis8dGQ+CisgIDxkaXYgY2xh
c3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKSI+
CisgICAgPHNjcmlwdD5hZGRUZXN0Q2FudmFzKCJ0ZXN0MiIsICIiKTs8L3NjcmlwdD4KKyAgPC9k
aXY+Cis8L3RkPgorCis8L3RyPjx0cj4KKworPCEtLSBUaGlzIHRlc3QgZHJhd3MgYSBjYW52YXMg
aW5zaWRlIGEgZGl2IHdoaWNoIGlzIGRvdWJsZS1zaWRlZCBhbmQgZG9lcyBub3QgCisgICAgIGZh
Y2UgdGhlIHNjcmVlbi4gIFRoaXMgc2hvdWxkIG5vdCBhcHBlYXIgYmVjYXVzZSBwcmVzZXJ2ZS0z
ZCBpcyBzZXQgZm9yCisgICAgIHRoZSBwYXJlbnQgZGl2LiAtLT4KKworPHRkPgorICA8ZGl2IGNs
YXNzPSJ0ZXN0LWRpdiIgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7
IC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsiPgorICAgIDxzY3JpcHQ+YWRk
VGVzdENhbnZhcygidGVzdDMiLCAiIik7PC9zY3JpcHQ+CisgIDwvZGl2PgorPC90ZD4KKworPCEt
LSBUaGlzIHRlc3QgZHJhd3MgYSBjYW52YXMgaW5zaWRlIGEgZGl2IHdoaWNoIGlzIHNpbmdsZS1z
aWRlZCBhbmQgZG9lcyBub3QKKyAgICAgZmFjZSB0aGUgc2NyZWVuLiAgVGhpcyBzaG91bGQgYXBw
ZWFyIGJlY2F1c2UgcHJlc2VydmUtM2QgaXMgc2V0IGZvciB0aGUKKyAgICAgcGFyZW50IGRpdi4g
LS0+CisKKzx0ZD4KKyAgPGRpdiBjbGFzcz0idGVzdC1kaXYiIHN0eWxlPSItd2Via2l0LXRyYW5z
Zm9ybTogcm90YXRlWSgxODBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUt
M2Q7IC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyI+CisgICAgPHNjcmlwdD5h
ZGRUZXN0Q2FudmFzKCJ0ZXN0NCIsICItd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcp
OyIpOzwvc2NyaXB0PgorICA8L2Rpdj4KKzwvdGQ+CisKKzwhLS0gVGhpcyB0ZXN0IGRyYXdzIGEg
Y2FudmFzIGluc2lkZSBhIGRpdiB3aGljaCBpcyBzaW5nbGUtc2lkZWQgYW5kIGRvZXMgbm90Cisg
ICAgIGZhY2UgdGhlIHNjcmVlbi4gIFRoaXMgc2hvdWxkIG5vdCBhcHBlYXIgYmVjYXVzZSBwcmVz
ZXJ2ZS0zZCBpcyBub3Qgc2V0CisgICAgIGZvciB0aGUgcGFyZW50IGRpdi4gIC0tPgorCis8dGQ+
CisgIDxkaXYgY2xhc3M9InRlc3QtZGl2IiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZVkoMTgwZGVnKTsgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47Ij4KKyAgICA8
c2NyaXB0PmFkZFRlc3RDYW52YXMoInRlc3Q1IiwgIi13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZ
KDE4MGRlZyk7Iik8L3NjcmlwdD4KKyAgPC9kaXY+Cis8L3RkPgorCis8L3RyPjwvdGFibGU+CisK
KworPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAvKiBJbnN0cnVj
dCB0aGUgdGVzdCBydW5uZXIgdGhhdCB0aGlzIGlzIGEgcGl4ZWwgdGVzdCAqLworICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgZG9jdW1lbnQud3JpdGUoIjxzcGFuIHN0
eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi01MDAwcHgnPlRoaXMgdGVzdCBpcyBvbmx5IHVz
ZWZ1bCBhcyBhIHBpeGVsIHRlc3Q8L3NwYW4+Iik7CisgIH0KKzwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>