<?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>108118</bug_id>
          
          <creation_ts>2013-01-28 14:50:59 -0800</creation_ts>
          <short_desc>RenderLayer hasVisibleContent() has inconsistent semantics causing disappearing composited layers</short_desc>
          <delta_ts>2013-02-06 11:37:01 -0800</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>818139</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-28 14:50:59 -0800</bug_when>
    <thetext>Attached test case reproduces on both Safari webkit nightly and chromium.

Simon - can you please let me know which of the following semantics we actually want?   I think we want semantics defined by (b).


Problem statement:
(a) In some places in code, RenderLayer::hasVisibleContent() is assumed to only consider the visibility status of RenderObjects that contribute to that specific RenderLayer.
(b) In other places in code, RenderLayer::hasVisibleContent() is assumed to also consider the visibility status of all RenderObjects in all non-composited descendant RenderLayers.

For example:
  RenderLayer::setHasVisibleContent()  -- does not bubble up the hasVisibleContent=true to ancestor layers.
  RenderLayer::updateDescendantDependentFlags() -- the manual tree walk which recomputes m_hasVisibleContent skips any part of the subtree that is a new RenderLayer.
  On the other hand, RenderLayerBacking::hasVisibleNonCompositingDescendantLayers() -- assumes that hasVisibleContent() is true if a (non-composited) RenderLayer descendant has visible content.

Which semantics do we prefer?   That determines the solution we should implement.

Assuming we want semantics defined in (b), I think the correct fix is to modify RenderLayer::setHasVisibleContent() so that it bubbles up hasVisibleContent=true to all ancestor RenderLayers until it reaches a composited RenderLayer.   I&apos;ve already checked locally that it would fix the attached test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818143</commentid>
    <comment_count>1</comment_count>
      <attachid>185072</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-28 14:53:22 -0800</bug_when>
    <thetext>Created attachment 185072
Reduced test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818181</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-28 15:22:04 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Attached test case reproduces on both Safari webkit nightly and chromium.
&gt; 
&gt; Simon - can you please let me know which of the following semantics we actually want?   I think we want semantics defined by (b).
&gt; 
&gt; 
&gt; Problem statement:
&gt; (a) In some places in code, RenderLayer::hasVisibleContent() is assumed to only consider the visibility status of RenderObjects that contribute to that specific RenderLayer.

It&apos;s really just about the visibility property, and &apos;visible content&apos; applies to just this layer, not descendants.

&gt; (b) In other places in code, RenderLayer::hasVisibleContent() is assumed to also consider the visibility status of all RenderObjects in all non-composited descendant RenderLayers.

I think this code is wrong.

&gt; For example:
&gt;   RenderLayer::setHasVisibleContent()  -- does not bubble up the hasVisibleContent=true to ancestor layers.

I think that&apos;s OK; hasVisibleDescendant is about child layers. This function does dirty the &apos;has visible descendant&apos; bit on ancestors.

&gt;   RenderLayer::updateDescendantDependentFlags() -- the manual tree walk which recomputes m_hasVisibleContent skips any part of the subtree that is a new RenderLayer.

What do you mean by &quot;a new RenderLayer&quot;?

&gt;   On the other hand, RenderLayerBacking::hasVisibleNonCompositingDescendantLayers() -- assumes that hasVisibleContent() is true if a (non-composited) RenderLayer descendant has visible content.

I think this is wrong; it should look at the visibleDescendant bit also, but probably can&apos;t because that doesn&apos;t take compositing into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819399</commentid>
    <comment_count>3</comment_count>
      <attachid>185321</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-29 15:30:41 -0800</bug_when>
    <thetext>Created attachment 185321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819400</commentid>
    <comment_count>4</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-29 15:33:37 -0800</bug_when>
    <thetext>
&gt; &gt;   RenderLayer::updateDescendantDependentFlags() -- the manual tree walk which recomputes m_hasVisibleContent skips any part of the subtree that is a new RenderLayer.
&gt; 
&gt; What do you mean by &quot;a new RenderLayer&quot;?
&gt; 

I just meant that the tree walk only looks at RenderObjects that contribute to the RenderLayer in question, and skips parts of the subtree that are enclosed by a different RenderLayer.

Based on the discussion, this code looks correct as it is;  the patch I just uploaded fixes the RenderLayerBacking helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819413</commentid>
    <comment_count>5</comment_count>
      <attachid>185321</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-29 15:45:56 -0800</bug_when>
    <thetext>Comment on attachment 185321
Patch

I&apos;m not sure I like the &quot;check children then do the recursive deep check&quot; approach; I think just doing the recursive check up front would be OK. It&apos;s pretty rare to have visibility:hidden with a visible descendant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819481</commentid>
    <comment_count>6</comment_count>
      <attachid>185341</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-29 16:40:01 -0800</bug_when>
    <thetext>Created attachment 185341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819484</commentid>
    <comment_count>7</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-29 16:41:19 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 185321 [details])
&gt; I&apos;m not sure I like the &quot;check children then do the recursive deep check&quot; approach; I think just doing the recursive check up front would be OK. It&apos;s pretty rare to have visibility:hidden with a visible descendant.

Second patch puts the recursive check up front.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819493</commentid>
    <comment_count>8</comment_count>
      <attachid>185341</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-29 16:47:21 -0800</bug_when>
    <thetext>Comment on attachment 185341
Patch

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

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1433
&gt; -    // FIXME: We shouldn&apos;t be called with a stale z-order lists. See bug 85512.
&gt; -    m_owningLayer-&gt;updateLayerListsIfNeeded();
&gt; -
&gt; -#if !ASSERT_DISABLED
&gt; -    LayerListMutationDetector mutationChecker(m_owningLayer);
&gt; -#endif
&gt; -
&gt; -    if (Vector&lt;RenderLayer*&gt;* normalFlowList = m_owningLayer-&gt;normalFlowList()) {
&gt; +    // Common case: Check the layer lists for any children that have visible content.
&gt; +    if (Vector&lt;RenderLayer*&gt;* normalFlowList = parent-&gt;normalFlowList()) {

I think you should early return based on !hasVisibleDescendant() and remove the hasVisibleDescendant() checks elsewhere. You&apos;re missing the hasVisibleDescendant() on the starting layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819699</commentid>
    <comment_count>9</comment_count>
      <attachid>185381</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-29 19:16:46 -0800</bug_when>
    <thetext>Created attachment 185381
moved the parent-&gt;hasVisibleDescendant() check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822017</commentid>
    <comment_count>10</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-31 15:17:05 -0800</bug_when>
    <thetext>Hi Simon,  could you please take a look at the most recent patch?   Thanks in advance!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822024</commentid>
    <comment_count>11</comment_count>
      <attachid>185381</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-31 15:20:04 -0800</bug_when>
    <thetext>Comment on attachment 185381
moved the parent-&gt;hasVisibleDescendant() check

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

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1433
&gt; +    if (!parent-&gt;hasVisibleDescendant())
&gt; +        return false;

I misread the previous patch and may have mislead you here. Is hasVisibleDescendant() only valid on stacking containers? If so, the previous patch was better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822086</commentid>
    <comment_count>12</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-01-31 16:15:57 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 185381 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185381&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1433
&gt; &gt; +    if (!parent-&gt;hasVisibleDescendant())
&gt; &gt; +        return false;
&gt; 
&gt; I misread the previous patch and may have mislead you here. Is hasVisibleDescendant() only valid on stacking containers? If so, the previous patch was better.

As far as I can tell, the latest patch is still correct:

- RenderLayer::m_hasVisibleDescendant is computed by walking through all children recursively, regardless of which flow list, I think it will have a correct value even for non-stacking-context layers.   

- I did wonder why it was originally only for stacking contexts, and did some archaeology. https://bugs.webkit.org/show_bug.cgi?id=38829 --  probably it was just reasonable that way, while writing that patch, and now the improvement is more apparent to us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825862</commentid>
    <comment_count>13</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-02-05 15:09:22 -0800</bug_when>
    <thetext>Any update on review?   Quick summary - I do feel the new placement in code is correct.  I&apos;m happy to change it back, if you would rather use the previous patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825892</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-05 15:43:24 -0800</bug_when>
    <thetext>Let&apos;s go back to the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825965</commentid>
    <comment_count>15</comment_count>
      <attachid>186732</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2013-02-05 17:38:15 -0800</bug_when>
    <thetext>Created attachment 186732
Moved early exit back to original location</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826600</commentid>
    <comment_count>16</comment_count>
      <attachid>186732</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 11:36:57 -0800</bug_when>
    <thetext>Comment on attachment 186732
Moved early exit back to original location

Clearing flags on attachment: 186732

Committed r142012: &lt;http://trac.webkit.org/changeset/142012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826601</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 11:37:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>185072</attachid>
            <date>2013-01-28 14:53:22 -0800</date>
            <delta_ts>2013-01-28 14:53:22 -0800</delta_ts>
            <desc>Reduced test case</desc>
            <filename>hasVisibleContentBug-reduced-test-case.html</filename>
            <type>text/html</type>
            <size>1555</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJzY3JlZW4iPgogICAgLmhpZGRlbiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwog
ICAgfQoKICAgIC52aXNpYmxlIHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgfQoK
ICAgIC5ib3ggewogICAgICAgIHdpZHRoOiAzMDBweDsKICAgICAgICBoZWlnaHQ6IDMwMHB4Owog
ICAgfQoKICAgIC5jb21wb3NpdGVkIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRleigwKTsKICAgIH0KCiAgICAudG9wTGVmdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRl
OwogICAgICAgIHRvcDogMHB4OwogICAgICAgIGxlZnQ6IDBweDsKICAgIH0KCiAgICAuc3RhY2tp
bmdDb250ZXh0IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgei1pbmRleDog
NTsKICAgIH0KCiAgICAucmVkIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICB9
CgogICAgLmdyZWVuIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgIH0KICA8
L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8IS0tIAogIFRoZSBSZW5kZXJMYXllcidzIGhhc1Zpc2li
bGVDb250ZW50KCkgZmxhZyBoYWQgaW5jb25zaXN0ZW50IHNlbWFudGljcy4gU29tZQogIHBsYWNl
cyBpbiBjb2RlIGFzc3VtZWQgdGhpcyByZWZlcnMgb25seSB0byB2aXNpYmlsaXR5IG9mIFJlbmRl
ck9iamVjdHMgdGhhdAogIGNvbnRyaWJ1dGUgdG8gdGhpcyBSZW5kZXJMYXllciAoaS5lLiBza2lw
cGluZyBSZW5kZXJPYmplY3RzIGNvbnRhaW5lZCBieQogIGRlc2NlbmRhbnQgUmVuZGVyTGF5ZXJz
KS4gT3RoZXIgcGxhY2VzIGluIGNvZGUgYXNzdW1lZCB0aGlzIHJlZmVycyB0byBhbGwKICBub24t
Y29tcG9zaXRlZCBjb250ZW50IGluIHRoZSBzdWJ0cmVlLCAoaS5lLiBpbmNsdWRpbmcgbm9uLWNv
bXBvc2l0ZWQKICBkZXNjZW5kYW50IFJlbmRlckxheWVyKS4KCiAgQXMgYSByZXN1bHQsIGNvbXBv
c2l0ZWQgbGF5ZXJzIHNvbWV0aW1lcyBkaWQgbm90IHNlZSB0aGF0IHRoZXkgYWN0dWFsbHkgaGF2
ZQogIHZpc2libGUgY29udGVudCBpbiBhIGRlc2NlbmRhbnQgUmVuZGVyTGF5ZXIuIFRoaXMgdGVz
dCByZWNyZWF0ZXMgdGhhdAogIHNjZW5hcmlvIGJ5IHVzaW5nIHZpc2liaWxpdHk6aGlkZGVuIHN0
YWNraW5nIGNvbnRleHRzIHRvIGNyZWF0ZSBSZW5kZXJMYXllcnMuCi0tPgoKICA8ZGl2PgoKICAg
IDxkaXYgY2xhc3M9InRvcExlZnQgcmVkIGJveCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNz
PSJjb21wb3NpdGVkIHRvcExlZnQgaGlkZGVuIGJveCI+CiAgICAgIDxkaXYgY2xhc3M9ImhpZGRl
biBzdGFja2luZ0NvbnRleHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbiBzdGFja2luZ0Nv
bnRleHQiPgogICAgICAgICAgPGRpdiBjbGFzcz0idmlzaWJsZSBncmVlbiBib3giPgogICAgICAg
ICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2Cgo8
L2JvZHk+Cgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185321</attachid>
            <date>2013-01-29 15:30:41 -0800</date>
            <delta_ts>2013-01-29 16:39:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108118-20130129152727.patch</filename>
            <type>text/plain</type>
            <size>10903</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3N2EzNTY1YTc5Mzc1
YjViNTY2MGZjZjQ2MTdjZTM4ZGE4NjExNC4uYzA2ZTRiNmQ0NzY5YWIzMzY3ZDViMjBmNDM4Y2Jk
NWE2NjBiZGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTI5ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoZWNrIGFsbCBu
b24tY29tcG9zaXRlZCBkZXNjZW5kYW50cyBpbiBSZW5kZXJMYXllckJhY2tpbmc6Omhhc1Zpc2li
bGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRMYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5v
bkNvbXBvc2l0aW5nRGVzY2VuZGFudExheWVycyB3YXMKKyAgICAgICAgb25seSBjaGVja2luZyB3
aGV0aGVyIGRpcmVjdCBjaGlsZHJlbiBoYWQgdmlzaWJsZSBjb250ZW50LiBBcyBhCisgICAgICAg
IHJlc3VsdCwgY29tcG9zaXRlZCBsYXllcnMgaGFkIHdyb25nIHZpc2liaWxpdHkgc3RhdHVzIGlm
IG9ubHkgYQorICAgICAgICBkZWVwZXIgZGVzY2VuZGFudCBSZW5kZXJMYXllciB3YXMgdmlzaWJs
ZS4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24t
ZGlzdGFudC1kZXNjZW5kYW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5n
RGVzY2VuZGFudCk6IGNvcGllZCB0aGUgb3JpZ2luYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24g
aW50byB0aGlzIGZ1bmN0aW9uOyB0aGVuIGFkZGVkIHRoZSBSZW5kZXJMYXllcgorICAgICAgICBy
ZWN1cnNpb24gYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBv
c2l0aW5nRGVzY2VuZGFudExheWVycyk6CisgICAgICAgIFRoaXMgaXMgbm93IGp1c3QgYSB3cmFw
cGVyIHRvIHRoZSBwcml2YXRlIHN0YXRpYyByZWN1cnNpdmUKKyAgICAgICAgZnVuY3Rpb24uCisK
IDIwMTMtMDEtMjkgIE1pbiBRaW4gIDxxaW5taW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZp
eCBhIHByb2JsZW0gdGhhdCBkZWZlcnJlZCBpbWFnZSBkZWNvZGluZyBpcyBlbmFibGVkIGZvciBt
dWx0aWZyYW1lIGltYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCBlZmE2MDFiMzc5ZjllNzNmNjMxYWNhMjBlYmQ3ZWRjNmIyNDg4
OWNlLi4yMjQ2ZDkwNDhiMDhmMmI5MWVhMTMzMTFiZTQ1MWQ3NGVlYzhlMzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTQyNywx
NyArMTQyNywxMCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJD
b21wb3NpdGluZ0xheWVyKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gQ29uc2Vy
dmF0aXZlIHRlc3QgZm9yIGhhdmluZyBubyByZW5kZXJlZCBjaGlsZHJlbi4KLWJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjpoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50TGF5ZXJzKCkg
Y29uc3QKK3N0YXRpYyBib29sIGhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoUmVu
ZGVyTGF5ZXIqIHBhcmVudCkKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxl
ZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4KLSAgICBtX293bmlu
Z0xheWVyLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKLQotI2lmICFBU1NFUlRfRElTQUJM
RUQKLSAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihtX293bmlu
Z0xheWVyKTsKLSNlbmRpZgotCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxG
bG93TGlzdCA9IG1fb3duaW5nTGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICAvLyBDb21t
b24gY2FzZTogQ2hlY2sgdGhlIGxheWVyIGxpc3RzIGZvciBhbnkgY2hpbGRyZW4gdGhhdCBoYXZl
IHZpc2libGUgY29udGVudC4KKyAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZs
b3dMaXN0ID0gcGFyZW50LT5ub3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVy
ID0gbm9ybWFsRmxvd0xpc3QtPmF0KGkpOwpAQCAtMTQ0NiwxMiArMTQzOSwxMiBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudExheWVy
cygpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9vd25pbmdMYXllci0+aXNT
dGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmICghbV9vd25pbmdMYXllci0+aGFzVmlz
aWJsZURlc2NlbmRhbnQoKSkKKyAgICBpZiAocGFyZW50LT5pc1N0YWNraW5nQ29udGFpbmVyKCkp
IHsKKyAgICAgICAgaWYgKCFwYXJlbnQtPmhhc1Zpc2libGVEZXNjZW5kYW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gVXNlIHRoZSBtX2hhc0NvbXBvc2l0aW5n
RGVzY2VuZGFudCBiaXQgdG8gb3B0aW1pemU/Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbmVnWk9yZGVyTGlzdCA9IG1fb3duaW5nTGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgewor
ICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBwYXJlbnQt
Pm5lZ1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9y
ZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbmVn
Wk9yZGVyTGlzdC0+YXQoaSk7CkBAIC0xNDYwLDcgKzE0NTMsNyBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudExheWVycygpIGNvbnN0
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxh
eWVyKj4qIHBvc1pPcmRlckxpc3QgPSBtX293bmluZ0xheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsK
KyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gcGFyZW50
LT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pP
cmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlz
dFNpemU7ICsraSkgewogICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IHBv
c1pPcmRlckxpc3QtPmF0KGkpOwpAQCAtMTQ3MCw5ICsxNDYzLDU5IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjpoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50TGF5ZXJzKCkgY29u
c3QKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFVuY29tbW9uIGNhc2U6IElmIHdlIGRvIG5v
dCBrbm93IHRoZSBhbnN3ZXIgYWZ0ZXIgY2hlY2tpbmcgY2hpbGRyZW4ncworICAgIC8vIHZpc2li
bGUgY29udGVudCwgdGhlbiB3ZSBoYXZlIHRvIGNoZWNrIGZvciBub24tY29tcG9zaXRlZCB2aXNp
YmxlCisgICAgLy8gY29udGVudCByZWN1cnNpdmVseS4gVGhlIHJlY3Vyc2lvbiBzaG91bGQgb25s
eSBoYXBwZW4gaWYgdGhlIGNoaWxkIGlzCisgICAgLy8gKGEpIG5vdCBjb21wb3NpdGVkIGFuZCAo
YikgaGFzIGEgdmlzaWJsZSBkZXNjZW5kYW50LgorICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIq
Piogbm9ybWFsRmxvd0xpc3QgPSBwYXJlbnQtPm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICAgICAg
c2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBSZW5kZXJMYXll
ciogY3VyTGF5ZXIgPSBub3JtYWxGbG93TGlzdC0+YXQoaSk7CisgICAgICAgICAgICBpZiAoIWN1
ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBjdXJMYXllci0+aGFzVmlzaWJsZURlc2NlbmRhbnQo
KSAmJiBoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50KGN1ckxheWVyKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwYXJl
bnQtPmlzU3RhY2tpbmdDb250YWluZXIoKSkgeworICAgICAgICBpZiAoIXBhcmVudC0+aGFzVmlz
aWJsZURlc2NlbmRhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyBVc2UgdGhlIG1faGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50IGJpdCB0byBvcHRpbWl6ZT8KKyAg
ICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gcGFyZW50LT5u
ZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRl
ckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNp
emU7ICsraSkgeworICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5lZ1pP
cmRlckxpc3QtPmF0KGkpOworICAgICAgICAgICAgICAgIGlmICghY3VyTGF5ZXItPmlzQ29tcG9z
aXRlZCgpICYmIGN1ckxheWVyLT5oYXNWaXNpYmxlRGVzY2VuZGFudCgpICYmIGhhc1Zpc2libGVO
b25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoY3VyTGF5ZXIpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IHBhcmVudC0+cG9zWk9yZGVyTGlzdCgp
KSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBjdXJM
YXllci0+aGFzVmlzaWJsZURlc2NlbmRhbnQoKSAmJiBoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdE
ZXNjZW5kYW50KGN1ckxheWVyKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
Ky8vIENvbnNlcnZhdGl2ZSB0ZXN0IGZvciBoYXZpbmcgbm8gcmVuZGVyZWQgY2hpbGRyZW4uCiti
b29sIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFu
dExheWVycygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsZWQg
d2l0aCBhIHN0YWxlIHotb3JkZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCisgICAgbV9vd25pbmdM
YXllci0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobV9vd25pbmdM
YXllcik7CisjZW5kaWYKKworICAgIHJldHVybiBoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNj
ZW5kYW50KG1fb3duaW5nTGF5ZXIpOworfQorCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6Y29u
dGFpbnNQYWludGVkQ29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzU2ltcGxlQ29udGFpbmVy
Q29tcG9zaXRpbmdMYXllcigpIHx8IHBhaW50c0ludG9XaW5kb3coKSB8fCBwYWludHNJbnRvQ29t
cG9zaXRlZEFuY2VzdG9yKCkgfHwgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kcyB8fCBtX293
bmluZ0xheWVyLT5pc1JlZmxlY3Rpb24oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZDZiOWUwMjc5N2E3ZTc1NDg2ZjA2
ZjRjY2RmZWU5ZTRlZTI2ZmY5Li42ODkwNDU1MzhkMjM4NGRjMWMwNzQ1MDVmNjI4YTFjYmE0NmY1
MTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMjkgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hlY2sgYWxsIG5vbi1jb21wb3NpdGVk
IGRlc2NlbmRhbnRzIGluIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0
aW5nRGVzY2VuZGFudExheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4MTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFu
dC1kZXNjZW5kYW50LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
dmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1vbi1k
aXN0YW50LWRlc2NlbmRhbnQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMjkgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJhY2sgdGVzdCBleHBlY3RhdGlv
bnMgdGhhdCBnb3QgZXJyb25lb3VzbHkgcmVtb3ZlZCBpbiByMTQwOTgxLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQt
ZGVzY2VuZGFudC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmls
aXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50LWV4cGVjdGVkLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYmZkNzBkOGIwNzRmYmI0M2NlNzEzZjJkMTNjMzFhMWMyNTc2MzcxCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAzMzAzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFC
JVFsWWJwUnpua0I5Z0NDTTQ3JD1TdUZ4ZU9fJAp6cnBlfX03UkpWPUNhSDxac1lXUmxoOEFYSz1F
ZXJlMklnc3JOeSo7ZlVSRGVZSmU4ZzxqdipDdS1yaFhPK2hELU0KemE/cylOZ2BGPng3SSkwI2RZ
Nzh7RzwkRWgqYTYwOGgzZ218bHplfjMkaVElKm88bzN2S3wkR3BmdVcmPzBWclVeCnojS09SRVZw
TVE2S3Q+YjhYaHMrPDhBZiFlYypmTHRiMllGJl9gcStjemApPygqMSo4UEFqIXpZej52YmkhTjQj
PApwYTh6KEtLdD5iOFhocys8OEFlTSpKMDREKzwlYVNMMUFzKiRnUXUmWCVRfmxvQ0lHVFpzSUxH
MwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24t
ZGlzdGFudC1kZXNjZW5kYW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTI0MzM4NTIzMGY2
YTAxZjQ1OWM0MTlhM2ZkNzYwNWFhYzM0N2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFu
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisg
IFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzMDAgW2Jn
Y29sb3I9I0ZGMDAwMF0KK2xheWVyIGF0ICgwLDApIHNpemUgMzAweDMwMAorICBSZW5kZXJCbG9j
ayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCitsYXllciBhdCAoMCww
KSBzaXplIDMwMHgzMDAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHpJOiA1IHtESVZ9IGF0
ICgwLDApIHNpemUgMzAweDMwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUg
MzAweDMwMCBbYmdjb2xvcj0jMDA4MDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC5odG1sIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQt
ZGVzY2VuZGFudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjM2Y2ZjQ2MjFjZTdkN2E5MmVkZjIwOGViZTA1
OWZlZWQ4MjQ2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92
aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAsMCAr
MSw3MiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmhpZGRlbiB7CisgICAgICAgIHZpc2li
aWxpdHk6IGhpZGRlbjsKKyAgICB9CisKKyAgICAudmlzaWJsZSB7CisgICAgICAgIHZpc2liaWxp
dHk6IHZpc2libGU7CisgICAgfQorCisgICAgLmJveCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisKKyAgICAuY29tcG9zaXRlZCB7CisgICAg
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGV6KDApOworICAgIH0KKworICAgIC50b3BM
ZWZ0IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAg
ICAgICAgbGVmdDogMHB4OworICAgIH0KKworICAgIC5zdGFja2luZ0NvbnRleHQgeworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHotaW5kZXg6IDU7CisgICAgfQorCisgICAg
LnJlZCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICAuZ3Jl
ZW4geworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisgIDwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPCEtLQorICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDgxMTgKKworICAgIFRoZSBib29sZWFuIGNoZWNrIFJlbmRlckxheWVy
QmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudCgpCisgICAgd2FzIGFj
dHVhbGx5IG5vdCBjaGVja2luZyBmb3IgdmlzaWJsZSBjb250ZW50IGJleW9uZCBjaGlsZHJlbiBs
YXllcnMuIEFzIGEKKyAgICByZXN1bHQsIGNvbXBvc2l0ZWQgbGF5ZXJzIHNvbWV0aW1lcyBkaWQg
bm90IHNlZSB0aGF0IHRoZXkgYWN0dWFsbHkgaGF2ZQorICAgIHZpc2libGUgY29udGVudCBpbiBh
IGRlc2NlbmRhbnQgUmVuZGVyTGF5ZXIuIFRoaXMgdGVzdCByZWNyZWF0ZXMgdGhhdAorICAgIHNj
ZW5hcmlvIGJ5IHVzaW5nIHZpc2liaWxpdHk6aGlkZGVuIHN0YWNraW5nIGNvbnRleHRzIHRvIGNy
ZWF0ZSBhIGRlZXBlcgorICAgIGhpZXJhcmNoeSBvZiBSZW5kZXJMYXllcnMgd2l0aGluIG9uIGNv
bXBvc2l0ZWQgbGF5ZXIuCisKKyAgICBUaGUgZ3JlZW4gYm94IHNob3VsZCBiZSB2aXNpYmxlLCBo
aWRpbmcgdGhlIHJlZCBib3guCisgIC0tPgorICA8ZGl2PgorCisgICAgPGRpdiBjbGFzcz0idG9w
TGVmdCByZWQgYm94Ij4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQg
dG9wTGVmdCBoaWRkZW4gYm94Ij4KKyAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbiBzdGFja2luZ0Nv
bnRleHQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4gc3RhY2tpbmdDb250ZXh0Ij4KKyAg
ICAgICAgICA8ZGl2IGNsYXNzPSJ2aXNpYmxlIGdyZWVuIGJveCI+CisgICAgICAgICAgPC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185341</attachid>
            <date>2013-01-29 16:40:01 -0800</date>
            <delta_ts>2013-01-29 19:16:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108118-20130129163647.patch</filename>
            <type>text/plain</type>
            <size>9819</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3N2EzNTY1YTc5Mzc1
YjViNTY2MGZjZjQ2MTdjZTM4ZGE4NjExNC4uNTdhMWZmNWFiZjUxNzY0ZDU4MmNjNzgwN2Q5ZmYw
NTU3MGRlYTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTI5ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlckxheWVy
IGhhc1Zpc2libGVDb250ZW50KCkgaGFzIGluY29uc2lzdGVudCBzZW1hbnRpY3MgY2F1c2luZyBk
aXNhcHBlYXJpbmcgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNv
bXBvc2l0aW5nRGVzY2VuZGFudExheWVycyB3YXMKKyAgICAgICAgb25seSBjaGVja2luZyB3aGV0
aGVyIGRpcmVjdCBjaGlsZHJlbiBoYWQgdmlzaWJsZSBjb250ZW50LiBBcyBhCisgICAgICAgIHJl
c3VsdCwgY29tcG9zaXRlZCBsYXllcnMgaGFkIHdyb25nIHZpc2liaWxpdHkgc3RhdHVzIGlmIG9u
bHkgYQorICAgICAgICBkZWVwZXIgZGVzY2VuZGFudCBSZW5kZXJMYXllciB3YXMgdmlzaWJsZS4K
KworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlz
dGFudC1kZXNjZW5kYW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVz
Y2VuZGFudCk6IGNvcGllZCB0aGUgb3JpZ2luYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaW50
byB0aGlzIGZ1bmN0aW9uOyB0aGVuIGFkZGVkIHRoZSBSZW5kZXJMYXllcgorICAgICAgICByZWN1
cnNpb24gYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFu
dExheWVycyk6CisgICAgICAgIFRoaXMgaXMgbm93IGp1c3QgYSB3cmFwcGVyIHRvIHRoZSBwcml2
YXRlIHN0YXRpYyByZWN1cnNpdmUKKyAgICAgICAgZnVuY3Rpb24uCisKIDIwMTMtMDEtMjkgIE1p
biBRaW4gIDxxaW5taW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBhIHByb2JsZW0gdGhh
dCBkZWZlcnJlZCBpbWFnZSBkZWNvZGluZyBpcyBlbmFibGVkIGZvciBtdWx0aWZyYW1lIGltYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApp
bmRleCBlZmE2MDFiMzc5ZjllNzNmNjMxYWNhMjBlYmQ3ZWRjNmIyNDg4OWNlLi45NjQyOWJkNGU0
NWNhMWI5Yjc3YmYyZTNmMDI3ZTliZGVjY2FiZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTQyNyw0NCArMTQyNyw0MCBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVy
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gQ29uc2VydmF0aXZlIHRlc3QgZm9y
IGhhdmluZyBubyByZW5kZXJlZCBjaGlsZHJlbi4KLWJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpo
YXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50TGF5ZXJzKCkgY29uc3QKK3N0YXRpYyBi
b29sIGhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoUmVuZGVyTGF5ZXIqIHBhcmVu
dCkKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUg
ei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4KLSAgICBtX293bmluZ0xheWVyLT51cGRhdGVM
YXllckxpc3RzSWZOZWVkZWQoKTsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBMYXllckxp
c3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihtX293bmluZ0xheWVyKTsKLSNlbmRp
ZgotCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IG1fb3du
aW5nTGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICAvLyBDb21tb24gY2FzZTogQ2hlY2sg
dGhlIGxheWVyIGxpc3RzIGZvciBhbnkgY2hpbGRyZW4gdGhhdCBoYXZlIHZpc2libGUgY29udGVu
dC4KKyAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gcGFyZW50
LT5ub3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZs
b3dMaXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkgewogICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbm9ybWFsRmxvd0xp
c3QtPmF0KGkpOwotICAgICAgICAgICAgaWYgKCFjdXJMYXllci0+aXNDb21wb3NpdGVkKCkgJiYg
Y3VyTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkpCisgICAgICAgICAgICBpZiAoIWN1ckxheWVy
LT5pc0NvbXBvc2l0ZWQoKQorICAgICAgICAgICAgICAgICYmIChjdXJMYXllci0+aGFzVmlzaWJs
ZUNvbnRlbnQoKSB8fCAoY3VyTGF5ZXItPmhhc1Zpc2libGVEZXNjZW5kYW50KCkgJiYgaGFzVmlz
aWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudChjdXJMYXllcikpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX293bmluZ0xheWVy
LT5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKCFtX293bmluZ0xheWVyLT5o
YXNWaXNpYmxlRGVzY2VuZGFudCgpKQorICAgIGlmIChwYXJlbnQtPmlzU3RhY2tpbmdDb250YWlu
ZXIoKSkgeworICAgICAgICBpZiAoIXBhcmVudC0+aGFzVmlzaWJsZURlc2NlbmRhbnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBVc2UgdGhlIG1faGFzQ29tcG9z
aXRpbmdEZXNjZW5kYW50IGJpdCB0byBvcHRpbWl6ZT8KLSAgICAgICAgaWYgKFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbV9vd25pbmdMYXllci0+bmVnWk9yZGVyTGlzdCgp
KSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHBh
cmVudC0+bmVnWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBu
ZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIg
PSBuZWdaT3JkZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWN1ckxheWVyLT5p
c0NvbXBvc2l0ZWQoKSAmJiBjdXJMYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICAgICAg
ICAgICAgICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKQorICAgICAgICAgICAgICAgICAg
ICAmJiAoY3VyTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkgfHwgKGN1ckxheWVyLT5oYXNWaXNp
YmxlRGVzY2VuZGFudCgpICYmIGhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoY3Vy
TGF5ZXIpKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3Jk
ZXJMaXN0ID0gbV9vd25pbmdMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IHBhcmVudC0+cG9zWk9yZGVyTGlz
dCgpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXpl
KCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5h
dChpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBj
dXJMYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWN1ckxh
eWVyLT5pc0NvbXBvc2l0ZWQoKQorICAgICAgICAgICAgICAgICAgICAmJiAoY3VyTGF5ZXItPmhh
c1Zpc2libGVDb250ZW50KCkgfHwgKGN1ckxheWVyLT5oYXNWaXNpYmxlRGVzY2VuZGFudCgpICYm
IGhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoY3VyTGF5ZXIpKSkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
NDczLDYgKzE0NjksMTkgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6Omhhc1Zpc2libGVOb25D
b21wb3NpdGluZ0Rlc2NlbmRhbnRMYXllcnMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorLy8gQ29uc2VydmF0aXZlIHRlc3QgZm9yIGhhdmluZyBubyByZW5kZXJlZCBjaGlsZHJlbi4K
K2Jvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5k
YW50TGF5ZXJzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxl
ZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4KKyAgICBtX293bmlu
Z0xheWVyLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKKworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihtX293bmlu
Z0xheWVyKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rl
c2NlbmRhbnQobV9vd25pbmdMYXllcik7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpj
b250YWluc1BhaW50ZWRDb250ZW50KCkgY29uc3QKIHsKICAgICBpZiAoaXNTaW1wbGVDb250YWlu
ZXJDb21wb3NpdGluZ0xheWVyKCkgfHwgcGFpbnRzSW50b1dpbmRvdygpIHx8IHBhaW50c0ludG9D
b21wb3NpdGVkQW5jZXN0b3IoKSB8fCBtX2FydGlmaWNpYWxseUluZmxhdGVkQm91bmRzIHx8IG1f
b3duaW5nTGF5ZXItPmlzUmVmbGVjdGlvbigpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNkNmI5ZTAyNzk3YTdlNzU0ODZm
MDZmNGNjZGZlZTllNGVlMjZmZjkuLjg0YzI4NzY5OGQyZmNmNTMzZWJiZWU4OGMyYTU2YjgwOTdm
MjEyN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMS0yOSAgU2hhd24gU2luZ2ggIDxz
aGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5kZXJMYXllciBoYXNWaXNpYmxl
Q29udGVudCgpIGhhcyBpbmNvbnNpc3RlbnQgc2VtYW50aWNzIGNhdXNpbmcgZGlzYXBwZWFyaW5n
IGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDgxMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1vbi1kaXN0YW50
LWRlc2NlbmRhbnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy92
aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRp
c3RhbnQtZGVzY2VuZGFudC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0yOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYmFjayB0ZXN0IGV4cGVjdGF0aW9u
cyB0aGF0IGdvdCBlcnJvbmVvdXNseSByZW1vdmVkIGluIHIxNDA5ODEuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1k
ZXNjZW5kYW50LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxp
dHkvdmlzaWJpbGl0eS1vbi1kaXN0YW50LWRlc2NlbmRhbnQtZXhwZWN0ZWQucG5nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJiZmQ3MGQ4YjA3NGZiYjQzY2U3MTNmMmQxM2MzMWExYzI1NzYzNzEKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDMzMDMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIl
UWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlT18kCnpycGV9fTdSSlY9Q2FIPFpzWVdSbGg4QVhLPUVl
cmUySWdzck55KjtmVVJEZVlKZThnPGp2KkN1LXJoWE8raEQtTQp6YT9zKU5nYEY+eDdJKTAjZFk3
OHtHPCRFaCphNjA4aDNnbXxsemV+MyRpUSUqbzxvM3ZLfCRHcGZ1VyY/MFZyVV4KeiNLT1JFVnBN
UTZLdD5iOFhocys8OEFmIWVjKmZMdGIyWUYmX2BxK2N6YCk/KCoxKjhQQWohell6PnZiaSFONCM8
CnBhOHooS0t0PmI4WGhzKzw4QWVNKkowNEQrPCVhU0wxQXMqJGdRdSZYJVF+bG9DSUdUWnNJTEcz
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1vbi1k
aXN0YW50LWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMjQzMzg1MjMwZjZh
MDFmNDU5YzQxOWEzZmQ3NjA1YWFjMzQ3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDgKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwwKSBzaXplIDc4NHgwCitsYXllciBhdCAoMCwwKSBzaXplIDMwMHgzMDAKKyAg
UmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgMzAweDMwMCBbYmdj
b2xvcj0jRkYwMDAwXQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgIFJlbmRlckJsb2Nr
IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzMDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgMzAweDMwMAorICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgekk6IDUge0RJVn0gYXQg
KDAsMCkgc2l6ZSAzMDB4MzAwCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAz
MDB4MzAwIFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1k
ZXNjZW5kYW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMzZjZmNDYyMWNlN2Q3YTkyZWRmMjA4ZWJlMDU5
ZmVlZDgyNDY1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zp
c2liaWxpdHkvdmlzaWJpbGl0eS1vbi1kaXN0YW50LWRlc2NlbmRhbnQuaHRtbApAQCAtMCwwICsx
LDcyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuaGlkZGVuIHsKKyAgICAgICAgdmlzaWJp
bGl0eTogaGlkZGVuOworICAgIH0KKworICAgIC52aXNpYmxlIHsKKyAgICAgICAgdmlzaWJpbGl0
eTogdmlzaWJsZTsKKyAgICB9CisKKyAgICAuYm94IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKworICAgIC5jb21wb3NpdGVkIHsKKyAgICAg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZXooMCk7CisgICAgfQorCisgICAgLnRvcExl
ZnQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAg
ICAgICBsZWZ0OiAwcHg7CisgICAgfQorCisgICAgLnN0YWNraW5nQ29udGV4dCB7CisgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgei1pbmRleDogNTsKKyAgICB9CisKKyAgICAu
cmVkIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIH0KKworICAgIC5ncmVl
biB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICA8IS0tCisgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwODExOAorCisgICAgVGhlIGJvb2xlYW4gY2hlY2sgUmVuZGVyTGF5ZXJC
YWNraW5nOjpoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkKKyAgICB3YXMgYWN0
dWFsbHkgbm90IGNoZWNraW5nIGZvciB2aXNpYmxlIGNvbnRlbnQgYmV5b25kIGNoaWxkcmVuIGxh
eWVycy4gQXMgYQorICAgIHJlc3VsdCwgY29tcG9zaXRlZCBsYXllcnMgc29tZXRpbWVzIGRpZCBu
b3Qgc2VlIHRoYXQgdGhleSBhY3R1YWxseSBoYXZlCisgICAgdmlzaWJsZSBjb250ZW50IGluIGEg
ZGVzY2VuZGFudCBSZW5kZXJMYXllci4gVGhpcyB0ZXN0IHJlY3JlYXRlcyB0aGF0CisgICAgc2Nl
bmFyaW8gYnkgdXNpbmcgdmlzaWJpbGl0eTpoaWRkZW4gc3RhY2tpbmcgY29udGV4dHMgdG8gY3Jl
YXRlIGEgZGVlcGVyCisgICAgaGllcmFyY2h5IG9mIFJlbmRlckxheWVycyB3aXRoaW4gb24gY29t
cG9zaXRlZCBsYXllci4KKworICAgIFRoZSBncmVlbiBib3ggc2hvdWxkIGJlIHZpc2libGUsIGhp
ZGluZyB0aGUgcmVkIGJveC4KKyAgLS0+CisgIDxkaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJ0b3BM
ZWZ0IHJlZCBib3giPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCB0
b3BMZWZ0IGhpZGRlbiBib3giPgorICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuIHN0YWNraW5nQ29u
dGV4dCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbiBzdGFja2luZ0NvbnRleHQiPgorICAg
ICAgICAgIDxkaXYgY2xhc3M9InZpc2libGUgZ3JlZW4gYm94Ij4KKyAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICA8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185381</attachid>
            <date>2013-01-29 19:16:46 -0800</date>
            <delta_ts>2013-02-05 17:38:13 -0800</delta_ts>
            <desc>moved the parent-&gt;hasVisibleDescendant() check</desc>
            <filename>bug-108118-20130129191332.patch</filename>
            <type>text/plain</type>
            <size>9637</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3N2EzNTY1YTc5Mzc1
YjViNTY2MGZjZjQ2MTdjZTM4ZGE4NjExNC4uNTdhMWZmNWFiZjUxNzY0ZDU4MmNjNzgwN2Q5ZmYw
NTU3MGRlYTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTI5ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlckxheWVy
IGhhc1Zpc2libGVDb250ZW50KCkgaGFzIGluY29uc2lzdGVudCBzZW1hbnRpY3MgY2F1c2luZyBk
aXNhcHBlYXJpbmcgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNv
bXBvc2l0aW5nRGVzY2VuZGFudExheWVycyB3YXMKKyAgICAgICAgb25seSBjaGVja2luZyB3aGV0
aGVyIGRpcmVjdCBjaGlsZHJlbiBoYWQgdmlzaWJsZSBjb250ZW50LiBBcyBhCisgICAgICAgIHJl
c3VsdCwgY29tcG9zaXRlZCBsYXllcnMgaGFkIHdyb25nIHZpc2liaWxpdHkgc3RhdHVzIGlmIG9u
bHkgYQorICAgICAgICBkZWVwZXIgZGVzY2VuZGFudCBSZW5kZXJMYXllciB3YXMgdmlzaWJsZS4K
KworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlz
dGFudC1kZXNjZW5kYW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVz
Y2VuZGFudCk6IGNvcGllZCB0aGUgb3JpZ2luYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaW50
byB0aGlzIGZ1bmN0aW9uOyB0aGVuIGFkZGVkIHRoZSBSZW5kZXJMYXllcgorICAgICAgICByZWN1
cnNpb24gYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFu
dExheWVycyk6CisgICAgICAgIFRoaXMgaXMgbm93IGp1c3QgYSB3cmFwcGVyIHRvIHRoZSBwcml2
YXRlIHN0YXRpYyByZWN1cnNpdmUKKyAgICAgICAgZnVuY3Rpb24uCisKIDIwMTMtMDEtMjkgIE1p
biBRaW4gIDxxaW5taW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBhIHByb2JsZW0gdGhh
dCBkZWZlcnJlZCBpbWFnZSBkZWNvZGluZyBpcyBlbmFibGVkIGZvciBtdWx0aWZyYW1lIGltYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApp
bmRleCBlZmE2MDFiMzc5ZjllNzNmNjMxYWNhMjBlYmQ3ZWRjNmIyNDg4OWNlLi4wZDNkMDYzNWJi
MTc3ZDdmNjIyZTA4YzI3YjUzMzc1MjEzNzYyMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTQyNyw0NCArMTQyNywzOSBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVy
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gQ29uc2VydmF0aXZlIHRlc3QgZm9y
IGhhdmluZyBubyByZW5kZXJlZCBjaGlsZHJlbi4KLWJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpo
YXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50TGF5ZXJzKCkgY29uc3QKK3N0YXRpYyBi
b29sIGhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoUmVuZGVyTGF5ZXIqIHBhcmVu
dCkKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUg
ei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4KLSAgICBtX293bmluZ0xheWVyLT51cGRhdGVM
YXllckxpc3RzSWZOZWVkZWQoKTsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBMYXllckxp
c3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihtX293bmluZ0xheWVyKTsKLSNlbmRp
ZgorICAgIGlmICghcGFyZW50LT5oYXNWaXNpYmxlRGVzY2VuZGFudCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0
ID0gbV9vd25pbmdMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChWZWN0b3I8UmVu
ZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBwYXJlbnQtPm5vcm1hbEZsb3dMaXN0KCkpIHsK
ICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBS
ZW5kZXJMYXllciogY3VyTGF5ZXIgPSBub3JtYWxGbG93TGlzdC0+YXQoaSk7Ci0gICAgICAgICAg
ICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBjdXJMYXllci0+aGFzVmlzaWJsZUNv
bnRlbnQoKSkKKyAgICAgICAgICAgIGlmICghY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpCisgICAg
ICAgICAgICAgICAgJiYgKGN1ckxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpIHx8IGhhc1Zpc2li
bGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoY3VyTGF5ZXIpKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX293bmluZ0xheWVyLT5p
c1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKCFtX293bmluZ0xheWVyLT5oYXNW
aXNpYmxlRGVzY2VuZGFudCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgaWYg
KHBhcmVudC0+aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIC8vIFVzZSB0aGUgbV9o
YXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQgYml0IHRvIG9wdGltaXplPwotICAgICAgICBpZiAoVmVj
dG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBtX293bmluZ0xheWVyLT5uZWdaT3Jk
ZXJMaXN0KCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJM
aXN0ID0gcGFyZW50LT5uZWdaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBj
dXJMYXllciA9IG5lZ1pPcmRlckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgICAgIGlmICghY3Vy
TGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmIGN1ckxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpKQor
ICAgICAgICAgICAgICAgIGlmICghY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpCisgICAgICAgICAg
ICAgICAgICAgICYmIChjdXJMYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSB8fCBoYXNWaXNpYmxl
Tm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50KGN1ckxheWVyKSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFZl
Y3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbV9vd25pbmdMYXllci0+cG9zWk9y
ZGVyTGlzdCgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVy
TGlzdCA9IHBhcmVudC0+cG9zWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGlz
dFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciog
Y3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWN1
ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBjdXJMYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSkK
KyAgICAgICAgICAgICAgICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKQorICAgICAgICAg
ICAgICAgICAgICAmJiAoY3VyTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkgfHwgaGFzVmlzaWJs
ZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudChjdXJMYXllcikpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQ3Myw2ICsxNDY4
LDE5IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdE
ZXNjZW5kYW50TGF5ZXJzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy8vIENvbnNl
cnZhdGl2ZSB0ZXN0IGZvciBoYXZpbmcgbm8gcmVuZGVyZWQgY2hpbGRyZW4uCitib29sIFJlbmRl
ckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudExheWVycygp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0aCBhIHN0
YWxlIHotb3JkZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCisgICAgbV9vd25pbmdMYXllci0+dXBk
YXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgTGF5
ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobV9vd25pbmdMYXllcik7Cisj
ZW5kaWYKKworICAgIHJldHVybiBoYXNWaXNpYmxlTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50KG1f
b3duaW5nTGF5ZXIpOworfQorCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6Y29udGFpbnNQYWlu
dGVkQ29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRp
bmdMYXllcigpIHx8IHBhaW50c0ludG9XaW5kb3coKSB8fCBwYWludHNJbnRvQ29tcG9zaXRlZEFu
Y2VzdG9yKCkgfHwgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kcyB8fCBtX293bmluZ0xheWVy
LT5pc1JlZmxlY3Rpb24oKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZDZiOWUwMjc5N2E3ZTc1NDg2ZjA2ZjRjY2RmZWU5
ZTRlZTI2ZmY5Li44NGMyODc2OThkMmZjZjUzM2ViYmVlODhjMmE1NmI4MDk3ZjIxMjdiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMjkgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5ZXIgaGFzVmlzaWJsZUNvbnRlbnQoKSBo
YXMgaW5jb25zaXN0ZW50IHNlbWFudGljcyBjYXVzaW5nIGRpc2FwcGVhcmluZyBjb21wb3NpdGVk
IGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA4MTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92
aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1vbi1kaXN0YW50LWRlc2Nl
bmRhbnQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMjkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJhY2sgdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBnb3Qg
ZXJyb25lb3VzbHkgcmVtb3ZlZCBpbiByMTQwOTgxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxp
dHktb24tZGlzdGFudC1kZXNjZW5kYW50LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmZkNzBk
OGIwNzRmYmI0M2NlNzEzZjJkMTNjMzFhMWMyNTc2MzcxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAzMzAzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5
Z0NDTTQ3JD1TdUZ4ZU9fJAp6cnBlfX03UkpWPUNhSDxac1lXUmxoOEFYSz1FZXJlMklnc3JOeSo7
ZlVSRGVZSmU4ZzxqdipDdS1yaFhPK2hELU0KemE/cylOZ2BGPng3SSkwI2RZNzh7RzwkRWgqYTYw
OGgzZ218bHplfjMkaVElKm88bzN2S3wkR3BmdVcmPzBWclVeCnojS09SRVZwTVE2S3Q+YjhYaHMr
PDhBZiFlYypmTHRiMllGJl9gcStjemApPygqMSo4UEFqIXpZej52YmkhTjQjPApwYTh6KEtLdD5i
OFhocys8OEFlTSpKMDREKzwlYVNMMUFzKiRnUXUmWCVRfmxvQ0lHVFpzSUxHMwoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJp
bGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNj
ZW5kYW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTI0MzM4NTIzMGY2YTAxZjQ1OWM0MTlh
M2ZkNzYwNWFhYzM0N2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4Cisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA3ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgIFJlbmRlckJsb2Nr
IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzMDAgW2JnY29sb3I9I0ZGMDAw
MF0KK2xheWVyIGF0ICgwLDApIHNpemUgMzAweDMwMAorICBSZW5kZXJCbG9jayAocG9zaXRpb25l
ZCkge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCitsYXllciBhdCAoMCwwKSBzaXplIDMwMHgz
MDAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHpJOiA1IHtESVZ9IGF0ICgwLDApIHNpemUg
MzAweDMwMAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMzAweDMwMCBbYmdj
b2xvcj0jMDA4MDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJp
bGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhjM2Y2ZjQ2MjFjZTdkN2E5MmVkZjIwOGViZTA1OWZlZWQ4MjQ2NWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L3Zp
c2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50Lmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIg
bWVkaWE9InNjcmVlbiI+CisgICAgLmhpZGRlbiB7CisgICAgICAgIHZpc2liaWxpdHk6IGhpZGRl
bjsKKyAgICB9CisKKyAgICAudmlzaWJsZSB7CisgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7
CisgICAgfQorCisgICAgLmJveCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICB9CisKKyAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGV6KDApOworICAgIH0KKworICAgIC50b3BMZWZ0IHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDog
MHB4OworICAgIH0KKworICAgIC5zdGFja2luZ0NvbnRleHQgeworICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIHotaW5kZXg6IDU7CisgICAgfQorCisgICAgLnJlZCB7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICAuZ3JlZW4geworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPCEtLQorICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDgxMTgKKworICAgIFRoZSBib29sZWFuIGNoZWNrIFJlbmRlckxheWVyQmFja2luZzo6aGFz
VmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudCgpCisgICAgd2FzIGFjdHVhbGx5IG5vdCBj
aGVja2luZyBmb3IgdmlzaWJsZSBjb250ZW50IGJleW9uZCBjaGlsZHJlbiBsYXllcnMuIEFzIGEK
KyAgICByZXN1bHQsIGNvbXBvc2l0ZWQgbGF5ZXJzIHNvbWV0aW1lcyBkaWQgbm90IHNlZSB0aGF0
IHRoZXkgYWN0dWFsbHkgaGF2ZQorICAgIHZpc2libGUgY29udGVudCBpbiBhIGRlc2NlbmRhbnQg
UmVuZGVyTGF5ZXIuIFRoaXMgdGVzdCByZWNyZWF0ZXMgdGhhdAorICAgIHNjZW5hcmlvIGJ5IHVz
aW5nIHZpc2liaWxpdHk6aGlkZGVuIHN0YWNraW5nIGNvbnRleHRzIHRvIGNyZWF0ZSBhIGRlZXBl
cgorICAgIGhpZXJhcmNoeSBvZiBSZW5kZXJMYXllcnMgd2l0aGluIG9uIGNvbXBvc2l0ZWQgbGF5
ZXIuCisKKyAgICBUaGUgZ3JlZW4gYm94IHNob3VsZCBiZSB2aXNpYmxlLCBoaWRpbmcgdGhlIHJl
ZCBib3guCisgIC0tPgorICA8ZGl2PgorCisgICAgPGRpdiBjbGFzcz0idG9wTGVmdCByZWQgYm94
Ij4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgdG9wTGVmdCBoaWRk
ZW4gYm94Ij4KKyAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbiBzdGFja2luZ0NvbnRleHQiPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4gc3RhY2tpbmdDb250ZXh0Ij4KKyAgICAgICAgICA8ZGl2
IGNsYXNzPSJ2aXNpYmxlIGdyZWVuIGJveCI+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186732</attachid>
            <date>2013-02-05 17:38:15 -0800</date>
            <delta_ts>2013-02-06 11:36:57 -0800</delta_ts>
            <desc>Moved early exit back to original location</desc>
            <filename>bug-108118-20130205173453.patch</filename>
            <type>text/plain</type>
            <size>9614</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwY2RmNWRmMzA3MTYw
MzAwODdjZDBhMmI3MzllYzY3NmRjOWM0My4uYzc4MDAyZmNhNDUzOWMyOTc2OTU5MGRlNWZiYjM2
ZDNlNjUwZWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTI5ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmRlckxheWVy
IGhhc1Zpc2libGVDb250ZW50KCkgaGFzIGluY29uc2lzdGVudCBzZW1hbnRpY3MgY2F1c2luZyBk
aXNhcHBlYXJpbmcgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNv
bXBvc2l0aW5nRGVzY2VuZGFudExheWVycyB3YXMKKyAgICAgICAgb25seSBjaGVja2luZyB3aGV0
aGVyIGRpcmVjdCBjaGlsZHJlbiBoYWQgdmlzaWJsZSBjb250ZW50LiBBcyBhCisgICAgICAgIHJl
c3VsdCwgY29tcG9zaXRlZCBsYXllcnMgaGFkIHdyb25nIHZpc2liaWxpdHkgc3RhdHVzIGlmIG9u
bHkgYQorICAgICAgICBkZWVwZXIgZGVzY2VuZGFudCBSZW5kZXJMYXllciB3YXMgdmlzaWJsZS4K
KworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlz
dGFudC1kZXNjZW5kYW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVz
Y2VuZGFudCk6IGNvcGllZCB0aGUgb3JpZ2luYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaW50
byB0aGlzIGZ1bmN0aW9uOyB0aGVuIGFkZGVkIHRoZSBSZW5kZXJMYXllcgorICAgICAgICByZWN1
cnNpb24gYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFu
dExheWVycyk6CisgICAgICAgIFRoaXMgaXMgbm93IGp1c3QgYSB3cmFwcGVyIHRvIHRoZSBwcml2
YXRlIHN0YXRpYyByZWN1cnNpdmUKKyAgICAgICAgZnVuY3Rpb24uCisKIDIwMTMtMDItMDUgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtKU0NdIENsZWFu
IHVwIENvZGVHZW5lcmF0b3JKUy5wbSBieSBpbnRyb2R1Y2luZyBIYXNDdXN0b217R2V0dGVyLFNl
dHRlcixNZXRob2R9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IDcyNjdiYWFmMDM0Y2IyZDQ5YTJkNmJkNjM2YzI4MjYzYWI5M2NkYmQu
LmRlNGY0YTU5MmRhZjY1ZTNjZTk4YzdmYTYzMjY0YzA5ZDZjNWYyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNDI5LDQ0ICsx
NDI5LDM5IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBv
c2l0aW5nTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0vLyBDb25zZXJ2YXRp
dmUgdGVzdCBmb3IgaGF2aW5nIG5vIHJlbmRlcmVkIGNoaWxkcmVuLgotYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6Omhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRMYXllcnMoKSBjb25z
dAorc3RhdGljIGJvb2wgaGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudChSZW5kZXJM
YXllciogcGFyZW50KQogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY2FsbGVkIHdp
dGggYSBzdGFsZSB6LW9yZGVyIGxpc3RzLiBTZWUgYnVnIDg1NTEyLgotICAgIG1fb3duaW5nTGF5
ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKG1fb3duaW5nTGF5
ZXIpOwotI2VuZGlmCi0KLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dM
aXN0ID0gbV9vd25pbmdMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChWZWN0b3I8
UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBwYXJlbnQtPm5vcm1hbEZsb3dMaXN0KCkp
IHsKICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBub3JtYWxGbG93TGlzdC0+YXQoaSk7Ci0gICAgICAg
ICAgICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBjdXJMYXllci0+aGFzVmlzaWJs
ZUNvbnRlbnQoKSkKKyAgICAgICAgICAgIGlmICghY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpCisg
ICAgICAgICAgICAgICAgJiYgKGN1ckxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpIHx8IGhhc1Zp
c2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnQoY3VyTGF5ZXIpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX293bmluZ0xheWVy
LT5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKCFtX293bmluZ0xheWVyLT5o
YXNWaXNpYmxlRGVzY2VuZGFudCgpKQorICAgIGlmIChwYXJlbnQtPmlzU3RhY2tpbmdDb250YWlu
ZXIoKSkgeworICAgICAgICBpZiAoIXBhcmVudC0+aGFzVmlzaWJsZURlc2NlbmRhbnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBVc2UgdGhlIG1faGFzQ29tcG9z
aXRpbmdEZXNjZW5kYW50IGJpdCB0byBvcHRpbWl6ZT8KLSAgICAgICAgaWYgKFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbV9vd25pbmdMYXllci0+bmVnWk9yZGVyTGlzdCgp
KSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHBh
cmVudC0+bmVnWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBu
ZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIg
PSBuZWdaT3JkZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWN1ckxheWVyLT5p
c0NvbXBvc2l0ZWQoKSAmJiBjdXJMYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICAgICAg
ICAgICAgICBpZiAoIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKQorICAgICAgICAgICAgICAgICAg
ICAmJiAoY3VyTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkgfHwgaGFzVmlzaWJsZU5vbkNvbXBv
c2l0aW5nRGVzY2VuZGFudChjdXJMYXllcikpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChWZWN0b3I8UmVu
ZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IG1fb3duaW5nTGF5ZXItPnBvc1pPcmRlckxpc3Qo
KSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBw
YXJlbnQtPnBvc1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0g
cG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVy
ID0gcG9zWk9yZGVyTGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJMYXllci0+
aXNDb21wb3NpdGVkKCkgJiYgY3VyTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkpCisgICAgICAg
ICAgICAgICAgaWYgKCFjdXJMYXllci0+aXNDb21wb3NpdGVkKCkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgKGN1ckxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpIHx8IGhhc1Zpc2libGVOb25Db21w
b3NpdGluZ0Rlc2NlbmRhbnQoY3VyTGF5ZXIpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0NzUsNiArMTQ3MCwxOSBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFu
dExheWVycygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBDb25zZXJ2YXRpdmUg
dGVzdCBmb3IgaGF2aW5nIG5vIHJlbmRlcmVkIGNoaWxkcmVuLgorYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6Omhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRMYXllcnMoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY2FsbGVkIHdpdGggYSBzdGFsZSB6LW9y
ZGVyIGxpc3RzLiBTZWUgYnVnIDg1NTEyLgorICAgIG1fb3duaW5nTGF5ZXItPnVwZGF0ZUxheWVy
TGlzdHNJZk5lZWRlZCgpOworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIExheWVyTGlzdE11
dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKG1fb3duaW5nTGF5ZXIpOworI2VuZGlmCisK
KyAgICByZXR1cm4gaGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudChtX293bmluZ0xh
eWVyKTsKK30KKwogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRhaW5zUGFpbnRlZENvbnRl
bnQoKSBjb25zdAogewogICAgIGlmIChpc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIo
KSB8fCBwYWludHNJbnRvV2luZG93KCkgfHwgcGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3Rvcigp
IHx8IG1fYXJ0aWZpY2lhbGx5SW5mbGF0ZWRCb3VuZHMgfHwgbV9vd25pbmdMYXllci0+aXNSZWZs
ZWN0aW9uKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggM2I5OGI0YmMyYjk4MWNjYTI5OWU4ZWQ4YjQ3ODk5YTk4MTYyMjRh
Ny4uOTczODI2ODlhMGE5MTc2YTYxN2IxZGNlMWI4MGUyOTBmNjAwNjc3NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEzLTAxLTI5ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJlbmRlckxheWVyIGhhc1Zpc2libGVDb250ZW50KCkgaGFzIGluY29u
c2lzdGVudCBzZW1hbnRpY3MgY2F1c2luZyBkaXNhcHBlYXJpbmcgY29tcG9zaXRlZCBsYXllcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODExOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY29tcG9z
aXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0
eS1vbi1kaXN0YW50LWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
b21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktb24tZGlzdGFudC1kZXNjZW5kYW50Lmh0
bWw6IEFkZGVkLgorCiAyMDEzLTAyLTA1ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFdpbjcgcG9ydCBkb2Vzbid0IHJ1
biBXZWJHTC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkv
dmlzaWJpbGl0eS1vbi1kaXN0YW50LWRlc2NlbmRhbnQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFu
dC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJmZDcwZDhiMDc0ZmJiNDNjZTcxM2YyZDEzYzMx
YTFjMjU3NjM3MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzMwMwp6Y21lQVNATj8ob2xIeWB1
VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVPXyQKenJwZX19
N1JKVj1DYUg8WnNZV1JsaDhBWEs9RWVyZTJJZ3NyTnkqO2ZVUkRlWUplOGc8anYqQ3UtcmhYTyto
RC1NCnphP3MpTmdgRj54N0kpMCNkWTc4e0c8JEVoKmE2MDhoM2dtfGx6ZX4zJGlRJSpvPG8zdkt8
JEdwZnVXJj8wVnJVXgp6I0tPUkVWcE1RNkt0PmI4WGhzKzw4QWYhZWMqZkx0YjJZRiZfYHErY3pg
KT8oKjEqOFBBaiF6WXo+dmJpIU40IzwKcGE4eihLS3Q+YjhYaHMrPDhBZU0qSjA0RCs8JWFTTDFB
cyokZ1F1JlglUX5sb0NJR1Rac0lMRzMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1vbi1kaXN0
YW50LWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlz
aWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVzY2VuZGFudC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2EyNDMzODUyMzBmNmEwMWY0NTljNDE5YTNmZDc2MDVhYWMzNDdmOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0
eS1vbi1kaXN0YW50LWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0
eDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDAKK2xheWVyIGF0
ICgwLDApIHNpemUgMzAweDMwMAorICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMCkgc2l6ZSAzMDB4MzAwIFtiZ2NvbG9yPSNGRjAwMDBdCitsYXllciBhdCAoMCwwKSBzaXpl
IDMwMHgzMDAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUg
MzAweDMwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB6STogNSB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzMDAKKyAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzMDAgW2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1vbi1kaXN0
YW50LWRlc2NlbmRhbnQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkv
dmlzaWJpbGl0eS1vbi1kaXN0YW50LWRlc2NlbmRhbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzNmNmY0
NjIxY2U3ZDdhOTJlZGYyMDhlYmUwNTlmZWVkODI0NjVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LW9uLWRpc3RhbnQtZGVz
Y2VuZGFudC5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4K
KzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIC5o
aWRkZW4geworICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgfQorCisgICAgLnZpc2li
bGUgeworICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOworICAgIH0KKworICAgIC5ib3ggewor
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorCisg
ICAgLmNvbXBvc2l0ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRleigw
KTsKKyAgICB9CisKKyAgICAudG9wTGVmdCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgICAgdG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICB9CisKKyAgICAuc3Rh
Y2tpbmdDb250ZXh0IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB6LWlu
ZGV4OiA1OworICAgIH0KKworICAgIC5yZWQgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7CisgICAgfQorCisgICAgLmdyZWVuIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDwhLS0KKyAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTE4CisKKyAgICBUaGUgYm9v
bGVhbiBjaGVjayBSZW5kZXJMYXllckJhY2tpbmc6Omhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rl
c2NlbmRhbnQoKQorICAgIHdhcyBhY3R1YWxseSBub3QgY2hlY2tpbmcgZm9yIHZpc2libGUgY29u
dGVudCBiZXlvbmQgY2hpbGRyZW4gbGF5ZXJzLiBBcyBhCisgICAgcmVzdWx0LCBjb21wb3NpdGVk
IGxheWVycyBzb21ldGltZXMgZGlkIG5vdCBzZWUgdGhhdCB0aGV5IGFjdHVhbGx5IGhhdmUKKyAg
ICB2aXNpYmxlIGNvbnRlbnQgaW4gYSBkZXNjZW5kYW50IFJlbmRlckxheWVyLiBUaGlzIHRlc3Qg
cmVjcmVhdGVzIHRoYXQKKyAgICBzY2VuYXJpbyBieSB1c2luZyB2aXNpYmlsaXR5OmhpZGRlbiBz
dGFja2luZyBjb250ZXh0cyB0byBjcmVhdGUgYSBkZWVwZXIKKyAgICBoaWVyYXJjaHkgb2YgUmVu
ZGVyTGF5ZXJzIHdpdGhpbiBvbiBjb21wb3NpdGVkIGxheWVyLgorCisgICAgVGhlIGdyZWVuIGJv
eCBzaG91bGQgYmUgdmlzaWJsZSwgaGlkaW5nIHRoZSByZWQgYm94LgorICAtLT4KKyAgPGRpdj4K
KworICAgIDxkaXYgY2xhc3M9InRvcExlZnQgcmVkIGJveCI+CisgICAgPC9kaXY+CisKKyAgICA8
ZGl2IGNsYXNzPSJjb21wb3NpdGVkIHRvcExlZnQgaGlkZGVuIGJveCI+CisgICAgICA8ZGl2IGNs
YXNzPSJoaWRkZW4gc3RhY2tpbmdDb250ZXh0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVu
IHN0YWNraW5nQ29udGV4dCI+CisgICAgICAgICAgPGRpdiBjbGFzcz0idmlzaWJsZSBncmVlbiBi
b3giPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAg
IDwvZGl2PgorCisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>