<?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>3778</bug_id>
          
          <creation_ts>2005-06-30 14:07:28 -0700</creation_ts>
          <short_desc>Plugins not occluded by fixed position objects with higher z-index</short_desc>
          <delta_ts>2013-09-01 10:54:09 -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>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.sonicyouthmedia.com/alt-main/index.php</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris habib">visitordesign</reporter>
          <assigned_to name="Robert Hogan">robert</assigned_to>
          <cc>andersca</cc>
    
    <cc>cem.kocagil+webkit</cc>
    
    <cc>cpu</cc>
    
    <cc>dominicc</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>falken</cc>
    
    <cc>fishd</cc>
    
    <cc>ian</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>morrita</cc>
    
    <cc>robert</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>13570</commentid>
    <comment_count>0</comment_count>
    <who name="chris habib">visitordesign</who>
    <bug_when>2005-06-30 14:07:28 -0700</bug_when>
    <thetext>on the right side of the page (tour journal 2005: turkey) if you scroll in
safari, the ebedded quicktime renders above the page elements at the top of the
page while the text correctly hides beneath it. this bug does not exist in
firefox or IE on os x or windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13585</commentid>
    <comment_count>1</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2005-06-30 23:20:40 -0700</bug_when>
    <thetext>This is reproducable in current ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13598</commentid>
    <comment_count>2</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-07-01 05:35:19 -0700</bug_when>
    <thetext>it&apos;s the left side of the page here, but i can reproduce it :). confirming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13920</commentid>
    <comment_count>3</comment_count>
      <attachid>2794</attachid>
    <who name="David Storey">dstorey</who>
    <bug_when>2005-07-04 12:19:26 -0700</bug_when>
    <thetext>Created attachment 2794
Reduction of the problem

Text, images and the movies control bar seem to work correctly, it&apos;s just the
movie window itself</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24214</commentid>
    <comment_count>4</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2005-11-17 18:47:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/4338918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40269</commentid>
    <comment_count>5</comment_count>
      <attachid>7930</attachid>
    <who name="Seth A. Roby">tallama+webkit</who>
    <bug_when>2006-04-23 17:43:31 -0700</bug_when>
    <thetext>Created attachment 7930
Related Reduction

This is a very similar case where the QuickTime movie overlaps a fixed area that it should scroll under. It appears that QuickTime fails to properly inherit the z-index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42577</commentid>
    <comment_count>6</comment_count>
    <who name="river">river</who>
    <bug_when>2006-12-10 14:02:44 -0800</bug_when>
    <thetext>the same thing happens with flash movies. when they are positioned in a div with scrolling overflow the browser continues to render the flash element once it&apos;s outside of the div and should not be visible.

http://dev.exit3a.com/main.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438165</commentid>
    <comment_count>7</comment_count>
      <attachid>101095</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-07-16 13:13:55 -0700</bug_when>
    <thetext>Created attachment 101095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438169</commentid>
    <comment_count>8</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-07-16 13:20:34 -0700</bug_when>
    <thetext>A fixed position element should occlude a plugin if it has a higher index. Though firefox and opera both have some odd rules for this. The fixed position element will only occlude the plugin, regardless of z index, if:

 - It has a non-transparent background
 - It&apos;s not a form control, e.g. an input element

I cannot find any source to explain this behaviour so instead of mimicking it I&apos;ve implemented what seems the correct thing to do in the absence of a spec - allow fixed position elements to always occlude a plugin if they have a higher z index. If the z-index is equal, the plugin will also get occluded - based on the fact that the use-case of fixed position elements is to keep them always in view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438170</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-07-16 13:22:01 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=101095) [details]
&gt; Patch

Note that IFrameShimSupport needs to be changed to something like PluginOcclusions - but I did not rename in this patch as it would obscure the changes to the file in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438570</commentid>
    <comment_count>10</comment_count>
      <attachid>101095</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-18 10:48:28 -0700</bug_when>
    <thetext>Comment on attachment 101095
Patch

The code should be walking the RenderLayer z-order tree to determine stacking, rather than trying to do it itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446699</commentid>
    <comment_count>11</comment_count>
      <attachid>102961</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-08-04 12:52:32 -0700</bug_when>
    <thetext>Created attachment 102961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448163</commentid>
    <comment_count>12</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-08-08 12:19:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 101095 [details])
&gt; The code should be walking the RenderLayer z-order tree to determine stacking, rather than trying to do it itself.

Hi Simon,

I&apos;ve taken your advice and use the RenderLayer to implement occluding plugins by all elements, be they iframes or otherwise. It results in substantially less code. Could you take another look when you get the chance?

Darin, since this rewrites the iframe shim support, could you also take a look?
Thanks,
Robert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451732</commentid>
    <comment_count>13</comment_count>
      <attachid>102961</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-16 10:47:34 -0700</bug_when>
    <thetext>Comment on attachment 102961
Patch

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

Is the RenderLayer tree guaranteed to be current when getPluginOcclusions() is called? Are those plugin methods called during layout?

&gt; Source/WebCore/plugins/IFrameShimSupport.cpp:65
&gt; +        layer-&gt;dirtyZOrderLists();

Why are you dirtying the z-order lists here?

&gt; Source/WebCore/plugins/IFrameShimSupport.cpp:79
&gt; +            if (layer == element-&gt;renderer()-&gt;enclosingLayer()) {

You should put element-&gt;renderer()-&gt;enclosingLayer() in a local variable. It&apos;s called to get the initial &apos;sc&apos; too.

&gt; Source/WebCore/plugins/IFrameShimSupport.cpp:100
&gt; +            for (RenderLayer* child = layer-&gt;firstChild(); child; child = child-&gt;nextSibling())
&gt; +                if (child-&gt;renderer()-&gt;hasBackground())
&gt; +                    appendOcclusion(toRenderBox(child-&gt;renderer()), occlusions);

Why is this looking at layer children, not renderer children?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451770</commentid>
    <comment_count>14</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-08-16 11:32:39 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 102961 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102961&amp;action=review
&gt; 
&gt; Is the RenderLayer tree guaranteed to be current when getPluginOcclusions() is called? Are those plugin methods called during layout?

getPluginOcclusions() is called during layout, but I&apos;m not sure that the RenderLayer tree is current when it is called. How can I ensure that it is apart from calling updateZOrderLists()?

&gt; 
&gt; &gt; Source/WebCore/plugins/IFrameShimSupport.cpp:65
&gt; &gt; +        layer-&gt;dirtyZOrderLists();
&gt; 
&gt; Why are you dirtying the z-order lists here?

A leftover from when I was getting the hang of the zorder list.

&gt; &gt; Source/WebCore/plugins/IFrameShimSupport.cpp:100
&gt; &gt; +            for (RenderLayer* child = layer-&gt;firstChild(); child; child = child-&gt;nextSibling())
&gt; &gt; +                if (child-&gt;renderer()-&gt;hasBackground())
&gt; &gt; +                    appendOcclusion(toRenderBox(child-&gt;renderer()), occlusions);
&gt; 
&gt; Why is this looking at layer children, not renderer children?

Simply because iterating through the layers was the first thing that occurred to me and it worked. Why is using the renderer children more correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451805</commentid>
    <comment_count>15</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-08-16 12:53:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 102961 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102961&amp;action=review
&gt; &gt; 
&gt; &gt; Is the RenderLayer tree guaranteed to be current when getPluginOcclusions() is called? Are those plugin methods called during layout?
&gt; 
&gt; getPluginOcclusions() is called during layout...

This is incorrect, it&apos;s called when the plugin is getting painted, so at that point layout is meant to be complete. I&apos;ve updated the patch per your other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454413</commentid>
    <comment_count>16</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-08-21 11:55:56 -0700</bug_when>
    <thetext>When revising the patch I noticed a problem with the layout test, and in an effort to fix it discovered that the assumptions behind the current plugins/iframe-shims.html and my new test are wrong. The current iframe-shims.html test passes even when no attempt is made to occlude the plugin (by commenting out the call to getPluginOcclusions()). 

Both tests work fine manually (using QtTestBrowser for example), but the behaviour of the hit testing when run from DumpRenderTree does not depend at all on whether the plugins occlude the elements above/below them or not.

It&apos;s not due to using flash plugins in the tests as the same problem exhibits with the test netscape plugin. I suspect the problem is the use of windowed plugins run from DumpRenderTree without displaying the webview.

So it&apos;s possible to fix this bug, but currently not possible to write a test for it, and the existing plugins/iframe-shims.html test will continue to pass even if a regression happens.

Any suggestions how to proceed? I&apos;m stuck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532469</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-09 13:19:10 -0800</bug_when>
    <thetext>Can we make TestNetscapePlugin not windowed?  Or have a not-windowed plugin?  We certainly use flash in other layout tests, seems we could use it here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532470</commentid>
    <comment_count>18</comment_count>
      <attachid>102961</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-09 13:19:29 -0800</bug_when>
    <thetext>Comment on attachment 102961
Patch

Based on smfr&apos;s comments, seems this needs at least one more round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663950</commentid>
    <comment_count>19</comment_count>
    <who name="Cem Kocagil">cem.kocagil+webkit</who>
    <bug_when>2012-07-06 01:49:13 -0700</bug_when>
    <thetext>Any progress on this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664176</commentid>
    <comment_count>20</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2012-07-06 10:23:23 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Any progress on this bug?

I think the code-change is good - but it&apos;s extremely hard to create a valid test. The current z-pos/plugin testing coverage ( plugins/iframe-shims.html) is not valid either and will happily pass even plugin occlusions regress.

I would love a manual-test pass on this one as the effort/investigation required to get the testing working (some kind of fu required in TestNetscapePlugin) has eluded me. It&apos;s not windowed/not-windowed  - it is more to do with the need to get a painted background going in TestNetscapePlugin so that the hit-testing can work properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773667</commentid>
    <comment_count>21</comment_count>
      <attachid>175605</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-22 00:11:38 -0800</bug_when>
    <thetext>Created attachment 175605
rebase prev patch to HEAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773675</commentid>
    <comment_count>22</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-11-22 00:20:55 -0800</bug_when>
    <thetext>I updated Robert&apos;s patch for a current checkout. Two changes were needed:
- In getPluginOcclusions, replaced
    layer-&gt;dirtyZOrderLists();
    layer-&gt;updateZOrderLists();  // this is now private
with
    layer-&gt;updateLayerListsIfNeeded();
- PluginViewQt.cpp cannot be patched, as the getPluginOcclusions() call was removed in http://trac.webkit.org/changeset/124879

It&apos;s too bad a layout test is difficult due to hit testing for plugins run in DumpRenderTree. I guess just a pixel test is also hard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773801</commentid>
    <comment_count>23</comment_count>
      <attachid>175605</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-22 03:36:48 -0800</bug_when>
    <thetext>Comment on attachment 175605
rebase prev patch to HEAD

Attachment 175605 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14959291

New failing tests:
plugins/fixed-position-object-occludes-plugin.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827809</commentid>
    <comment_count>24</comment_count>
      <attachid>175605</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-07 12:47:17 -0800</bug_when>
    <thetext>Comment on attachment 175605
rebase prev patch to HEAD

Ist this change Chromium-only? If so, the bug title should be prepended with [Chromium]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827828</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-07 13:07:35 -0800</bug_when>
    <thetext>This is an ancient 4-digit bug. :)  Robert was reporting that this occurs for him on Chromium Linux with NPAPI flash.  But I&apos;m not able to reproduce this bug on either Safari or Chrome (with built-in PPAPI flash) on my Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827829</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-07 13:08:05 -0800</bug_when>
    <thetext>This original reporter used the QuickTime plugin in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923528</commentid>
    <comment_count>27</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-01 10:54:09 -0700</bug_when>
    <thetext>This bug was reported against Mac, and this has been working correctly on Mac since at least Snow Leopard.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2794</attachid>
            <date>2005-07-04 12:19:26 -0700</date>
            <delta_ts>2005-07-04 12:19:26 -0700</delta_ts>
            <desc>Reduction of the problem</desc>
            <filename>sonicyouth.html</filename>
            <type>text/xhtml</type>
            <size>1101</size>
            <attacher name="David Storey">dstorey</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJh
bnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
IiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KCTxoZWFkPgoJCTx0aXRsZT5zb25pY3lvdXRoIHJl
ZHVjdGlvbjwvdGl0bGU+CgkJPHN0eWxlPgoJCQkjaGVhZGVyIHsKCQkJCXdpZHRoOiAxMDAlOwoJ
CQkJaGVpZ2h0OiA1MHB4OwoJCQl9CgkJCSNjb250ZW50IHsKCQkJCWJvcmRlci1zdHlsZTogc29s
aWQ7CgkJCQl3aWR0aDogMzIwcHg7CgkJCQloZWlnaHQ6IDI3MHB4OwkJCgkJCQlvdmVyZmxvdzog
YXV0bzsgLyoqIG1ha2UgaXQgc28gY29udGVudCBzY3JvbGxzICovCgkJCX0KCQk8L3N0eWxlPgoJ
PC9oZWFkPgoJPGJvZHk+CgkJPGRpdiBpZD0iaGVhZGVyIj4KCQkJPCEtLSBrZWVwIHRoaXMgdG8g
Y3JlYXRlIHNwYWNlIHRvIHNlZSBtb3ZpZSBzY3JvbGwgb3V0IG9mIGRpdiBiZWxvdyAtLT4KCQk8
L2Rpdj4JCgkJCQkJCgkJPGRpdiBpZD0iY29udGVudCI+CgkJCTxvYmplY3QgY2xhc3NpZD0iY2xz
aWQ6MDJiZjI1ZDUtOGMxNy00YjIzLWJjODAtZDM0ODhhYmRkYzZiIiBoZWlnaHQ9IjI2MCI+CgkJ
CQk8ZW1iZWQgc3JjPSJodHRwOi8vd3d3LnNvbmljeW91dGguY29tL21haW4vaW1hZ2VzL3N5cG9z
dGVyX2JpZy5tb3YiIC8+PC9lbWJlZD4KCQkJPC9vYmplY3Q+CgkJCTxwPlRoaXMgdGV4dCBhbmQg
dGhlIGJyJ3Mgd2lsbCBtYWtlIHRoZSBkaXYgYmlnIGVub3VnaCBzbyB0aGF0IGl0IGNhbiBzY3Jv
bGw8L3A+CgkJCTxpbWcgc3JjPSJodHRwOi8vd3d3Lm9wZW5kYXJ3aW4ub3JnL2ltYWdlcy9oZXhs
ZXktMS5wbmciIC8+CgkJCTxiciAvPjxiciAvPjxiciAvPjxiciAvPjxiciAvPjxiciAvPjxiciAv
PjxiciAvPjxiciAvPjxiciAvPjxiciAvPjxiciAvPjxiciAvPgoJCQk8cD5UaGUgbW92aWUgc2hv
dWxkIG5vdCBicmVhayBvdXQgdGhlIGRpdiBhZnRlciBzY3JvbGxpbmc8L3A+CgkJPC9kaXY+CQkJ
CQoJPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7930</attachid>
            <date>2006-04-23 17:43:31 -0700</date>
            <delta_ts>2006-04-23 17:43:31 -0700</delta_ts>
            <desc>Related Reduction</desc>
            <filename>overlay.html</filename>
            <type>text/html</type>
            <size>1247</size>
            <attacher name="Seth A. Roby">tallama+webkit</attacher>
            
              <data encoding="base64">PCEtLSBiYXNlZCBvbiB0aGUgTmV0TmV3c1dpcmUgc3R5bGUgT2xsaWNsZSBGbGV4IC0tPgo8aGVh
ZD4KCTxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+CgkJLyogVGl0bGUgbGlua3Mgc3RheSBhdCB0aGUg
dG9wIG9mIHRoZSBwYW5lIHdoZW4gc2Nyb2xsaW5nICovCgkJLm5ld3NJdGVtVGl0bGUgewoJCQlw
b3NpdGlvbjogZml4ZWQ7CgkJCWJhY2tncm91bmQtY29sb3I6ICNlZWU7CgkJCXRvcDogMDsKCQkJ
bGVmdDogMDsKCQkJd2lkdGg6IDEwMCU7CgkJfQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRp
diBpZD0iZW11bml0Ij4mbmJzcDs8L2Rpdj4KPGRpdiBjbGFzcz0ibmV3c0l0ZW1Db250YWluZXIi
PgoJPGRpdiBjbGFzcz0ibmV3c0l0ZW1UaXRsZSI+W1tuZXdzaXRlbV90aXRsZV1dPC9kaXY+CgkK
CTxkaXYgY2xhc3M9Im5ld3NJdGVtRGVzY3JpcHRpb24iIGlkPSJsaW5lZmxleCI+CgkJPHAgY2xh
c3M9Im5ld3NJdGVtRXh0cmFMaW5rcyI+VGhpcyB0ZXh0IHdpbGwgc2Nyb2xsIHVuZGVyIHRoZSB0
aWxlPC9wPgoJCTxwIGNsYXNzPSJuZXdzSXRlbUV4dHJhTGlua3MiPlRoaXMgdGV4dCB3aWxsIHNj
cm9sbCB1bmRlciB0aGUgdGlsZTwvcD4KCQk8cCBjbGFzcz0ibmV3c0l0ZW1FeHRyYUxpbmtzIj5C
dXQgdGhlIGZvbGxvd2luZyBtb3ZpZSB3aWxsIG5vdC48L3A+CgkJPG9iamVjdCBjbGFzc2lkPSJj
bHNpZDowMmJmMjVkNS04YzE3LTRiMjMtYmM4MC1kMzQ4OGFiZGRjNmIiIGhlaWdodD0iMjYwIj4K
CQkJPGVtYmVkIHNyYz0iaHR0cDovL3d3dy5zb25pY3lvdXRoLmNvbS9tYWluL2ltYWdlcy9zeXBv
c3Rlcl9iaWcubW92IiAvPjwvZW1iZWQ+CgkJPC9vYmplY3Q+CgkJPHAgY2xhc3M9Im5ld3NJdGVt
RXh0cmFMaW5rcyI+VGV4dCB0byBtYWtlIGFyZWEgc2Nyb2xsPC9wPgoJCTxwIGNsYXNzPSJuZXdz
SXRlbUV4dHJhTGlua3MiPlRleHQ8L3A+CgkJPHAgY2xhc3M9Im5ld3NJdGVtRXh0cmFMaW5rcyI+
VGV4dDwvcD4KCQk8cCBjbGFzcz0ibmV3c0l0ZW1FeHRyYUxpbmtzIj5UZXh0PC9wPgoJCTxwIGNs
YXNzPSJuZXdzSXRlbUV4dHJhTGlua3MiPlRleHQ8L3A+CgkJPHAgY2xhc3M9Im5ld3NJdGVtRXh0
cmFMaW5rcyI+VGV4dDwvcD4KCQk8cCBjbGFzcz0ibmV3c0l0ZW1FeHRyYUxpbmtzIj5UZXh0PC9w
PgoJCTxwIGNsYXNzPSJuZXdzSXRlbUV4dHJhTGlua3MiPlRleHQ8L3A+CgkJPHAgY2xhc3M9Im5l
d3NJdGVtRXh0cmFMaW5rcyI+VGV4dDwvcD4KCTwvZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101095</attachid>
            <date>2011-07-16 13:13:55 -0700</date>
            <delta_ts>2011-08-04 12:52:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-3778-20110716211352.patch</filename>
            <type>text/plain</type>
            <size>15240</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA4NDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YjhmMGQyNDE1MjU3ZGNlYzJhODc0
MWQxZjIyMzJmNjA3NWZhMGRiLi4zNDJkM2RmMDg4Y2I0ODFkN2U4YmMwOWIxMmQ3YWRjMDE5Yzli
OTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTYgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFBsdWdpbnMgbm90IG9jY2x1ZGVkIGJ5IGZpeGVk
IHBvc2l0aW9uIG9iamVjdHMgd2l0aCBoaWdoZXIgei1pbmRleAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmpl
Y3Qtb2NjbHVkZXMtcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGx1Z2lu
cy9maXhlZC1wb3NpdGlvbi1vYmplY3Qtb2NjbHVkZXMtcGx1Z2luLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA3LTEyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgVXNlck1ldHJpY3MgZm9yIGNvbGxlY3Rpbmcgc3Rh
dHMgaW4gQ2hyb21pdW0gcG9ydC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvZml4
ZWQtcG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVzLXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbHVnaW5zL2ZpeGVkLXBvc2l0aW9uLW9iamVjdC1vY2NsdWRlcy1wbHVnaW4tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUxNDJjY2Y4NjMzMmZlOGZhZjliMmY2OTBlYjQ1NDMxMTRhMmVm
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL2ZpeGVkLXBvc2l0aW9u
LW9iamVjdC1vY2NsdWRlcy1wbHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorICAK
K1Rlc3QgdGhhdCBmaXhlZCBwb3NpdGlvbiBvYmplY3RzIHdpdGggYW4gYXBwcm9wcmlhdGUgei1p
bmRleCBhcHBlYXIgYWJvdmUgYSB3aW5kb3dlZCBwbHVnaW4uIFlvdSBzaG91bGQgc2VlLCBhbmQg
YmUgYWJsZSB0byBjbGljaywgdGhlIGJ1dHRvbiBvdmVyIHRoZSBmaXJzdCBwbHVnaW4uIFRoZSBz
ZWNvbmQgcGx1Z2luIHNob3VsZCBjb25jZWFsIHRoZSBzZWNvbmQgYnV0dG9uLgorCitQcmludHMg
IlNVQ0NFU1MiIG9uIHN1Y2Nlc3MsICJGQUlMVVJFIiBvbiBmYWlsdXJlLgorCitTVUNDRVNTCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL2ZpeGVkLXBvc2l0aW9uLW9iamVjdC1vY2Ns
dWRlcy1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvZml4ZWQtcG9zaXRpb24tb2Jq
ZWN0LW9jY2x1ZGVzLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5OTVlMjIxMDg5MDRmMTNkZjYz
M2E3OGUzNjk5YTFkZjJjYzY4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbHVn
aW5zL2ZpeGVkLXBvc2l0aW9uLW9iamVjdC1vY2NsdWRlcy1wbHVnaW4uaHRtbApAQCAtMCwwICsx
LDg5IEBACis8aHRtbD48aGVhZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0g
W107CisgICAgdmFyIGNsaWNrcyA9IFtdOworICAgIGV4cGVjdGVkQ2xpY2tzWzBdID0gdHJ1ZTsK
KyAgICBleHBlY3RlZENsaWNrc1sxXSA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gZG9DbGljayhp
ZCkKKyAgICB7CisgICAgICAgIGNsaWNrc1tpZF0gPSB0cnVlOworCisgICAgICAgIC8vIENoZWNr
IHN1Y2Nlc3MvZmFpbHVyZS4KKyAgICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJvdXRwdXQiKTsKKyAgICAgICAgdmFyIHdhaXRpbmdGb3JNb3JlQ2xpY2tzID0gZmFs
c2U7CisgICAgICAgIHZhciBrOworICAgICAgICBmb3IgKGsgaW4gZXhwZWN0ZWRDbGlja3MpIHsK
KyAgICAgICAgICAgIGlmIChleHBlY3RlZENsaWNrc1trXSAmJiAhY2xpY2tzW2tdKQorICAgICAg
ICAgICAgICAgIHdhaXRpbmdGb3JNb3JlQ2xpY2tzID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKCFleHBlY3RlZENsaWNrc1trXSAmJiBjbGlja3Nba10pIHsKKyAgICAgICAgICAgICAgICBv
dXRwdXQuaW5uZXJIVE1MID0gJ0ZBSUxVUkUnOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghd2FpdGluZ0Zvck1vcmVDbGlj
a3MpIHsKKyAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBdXRvbWF0aW9uOiB0cnkg
dG8gY2xpY2sgb24gZWFjaCBidXR0b24uCisgICAgdmFyIG5leHRJZFRvQ2xpY2sgPSAwOworCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDAp
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gbW92ZU1vdXNlT3ZlcihlbGVtTmFt
ZSkgeworICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1OYW1l
KTsKKyAgICAgICAgdmFyIHggPSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9sbFdpZHRoIC8g
MjsKKyAgICAgICAgdmFyIHkgPSBlbGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xsSGVpZ2h0IC8g
MjsKKyAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50OworICAgICAg
ICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICB4ICs9IG9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgfQorICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBkb05leHRDbGljaygpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgICAgICBpZiAobmV4dElkVG9DbGljayA8IGV4cGVjdGVkQ2xpY2tzLmxlbmd0aCkgewor
ICAgICAgICAgICAgbW92ZU1vdXNlT3ZlcignYnV0dG9uJyArIG5leHRJZFRvQ2xpY2spOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBuZXh0SWRUb0Ns
aWNrKys7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpOyI+CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4
OyB0b3A6IDBweDsgIiBpZD0iMCI+Cis8ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dh
dmUtZmxhc2giIHNyYz0icmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIj48L2VtYmVkPgorPC9kaXY+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0
dG9uMCIgdmFsdWU9IkNsaWNrTWUiIG9uY2xpY2s9ImRvQ2xpY2soMCkiICBzdHlsZT0icG9zaXRp
b246IGZpeGVkOyB0b3A6IDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsi
Lz4KKworPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9wOiAw
cHg7IHotaW5kZXg6IDE7IiBpZD0iMCIvPgorPGVtYmVkIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hv
Y2t3YXZlLWZsYXNoIiBzcmM9InJlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCI+PC9lbWJlZD4KKzwvZGl2PgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9
ImJ1dHRvbjEiIHZhbHVlPSJDbGlja01lIiBvbmNsaWNrPSJkb0NsaWNrKDEpIiBzdHlsZT0icG9z
aXRpb246IGZpeGVkOyB0b3A6IDEwOyBsZWZ0OiAyMDA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7IHotaW5kZXg6IDA7Ii8+CisKKyAgICA8cD5UZXN0IHRoYXQgZml4ZWQgcG9zaXRpb24gb2Jq
ZWN0cyB3aXRoIGFuIGFwcHJvcHJpYXRlIHotaW5kZXggYXBwZWFyIGFib3ZlIGEKKyAgICAgICB3
aW5kb3dlZCBwbHVnaW4uIFlvdSBzaG91bGQgc2VlLCBhbmQgYmUgYWJsZSB0byBjbGljaywgdGhl
IGJ1dHRvbiBvdmVyIHRoZQorICAgICAgIGZpcnN0IHBsdWdpbi4gVGhlIHNlY29uZCBwbHVnaW4g
c2hvdWxkIGNvbmNlYWwgdGhlIHNlY29uZCBidXR0b24uPC9wPgorCisgICAgPHA+UHJpbnRzICJT
VUNDRVNTIiBvbiBzdWNjZXNzLCAiRkFJTFVSRSIgb24gZmFpbHVyZS48L3A+CisKKzxkaXYgaWQ9
b3V0cHV0Pk5PTkU8L2Rpdj4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDZjOWU0ZGEzN2EzZDYxMmU5OGRkMDAzMWYyNzk3YTgyZmY0ZDQ3
NGEuLjljOTU1ZjE2MTI0ZjExMzAxNmQyYjUxOTYxMzI0ZTU3Yzk3MmE1YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxMS0wNy0xNiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUGx1Z2lucyBub3Qgb2NjbHVkZWQgYnkgZml4ZWQgcG9zaXRpb24g
b2JqZWN0cyB3aXRoIGhpZ2hlciB6LWluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IHdpdGggYSBoaWdoZXIg
b3IgZXF1YWwgeiBpbmRleCBzaG91bGQgb2NjbHVkZSBhIHBsdWdpbi4KKyAgICAgICAgRmlyZWZv
eCBhbmQgT3BlcmEgd2lsbCBhbGxvdyBhbnkgZml4ZWQgcG9zaXRpb24gZWxlbWVudCB3aXRoIGEg
bm9uLXRyYW5zcGFyZW50IGJhY2tncm91bmQsCisgICAgICAgIGV4Y2VwdCBhIGZvcm0gY29udHJv
bCwgdG8gb2NjbHVkZSBhIHBsdWdpbiAtIHJlZ2FyZGxlc3Mgb2Ygei1pbmRleC4gV2ViS2l0IGFs
bG93cyBhbnkKKyAgICAgICAgZml4ZWQgcG9zaXRpb24gb2JqZWN0IHRvIG9jY2x1ZGUgdGhlIHBs
dWdpbiBpZiBpdCBoYXMgYW4gZXF1YWwgb3IgaGlnaGVyIHotaW5kZXguCisKKyAgICAgICAgVGVz
dDogcGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmplY3Qtb2NjbHVkZXMtcGx1Z2luLmh0bWwKKwor
ICAgICAgICAqIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6b2JqZWN0SXNBYm92ZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRPY2NsdXNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kT2NjbHVzaW9uc0Zyb21GaXhlZFBvc2l0aW9u
T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRPY2NsdXNpb25zRnJvbUlmcmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGx1Z2luT2NjbHVzaW9ucyk6CisgICAgICAgICogcGx1
Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luVmll
d1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVk
ZWQpOgorCiAyMDExLTA3LTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTA4MzEuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCmluZGV4IGMwYWExZTQxMzZj
NDk0MmYyOWFmODg0ZjMyMTY4ODVjN2FjNTViNzkuLjQwYmQ1OGQ5YThhZDVlMDhhYWU0NDU3MzU1
MTc5NWY2NjY3OWE1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1l
U2hpbVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1
cHBvcnQuY3BwCkBAIC0zNyw4ICszNywxMCBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
V2lkZ2V0LmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTgsMTIgKzYwLDEyIEBA
IHN0YXRpYyB2b2lkIGdldE9iamVjdFN0YWNrKGNvbnN0IFJlbmRlck9iamVjdCogcm8sIFZlY3Rv
cjxjb25zdCBSZW5kZXJPYmplY3QqPioKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHN0YWNrMSBp
cyBhdCBvciBhYm92ZSBzdGFjazIKLXN0YXRpYyBib29sIGlmcmFtZUlzQWJvdmVQbHVnaW4oY29u
c3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+JiBpZnJhbWVac3RhY2ssIGNvbnN0IFZlY3Rv
cjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1Z2luWnN0YWNrKQorc3RhdGljIGJvb2wgb2JqZWN0
SXNBYm92ZVBsdWdpbihjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIG9iamVjdFpz
dGFjaywgY29uc3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+JiBwbHVnaW5ac3RhY2spCiB7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZnJhbWVac3RhY2suc2l6ZSgpICYmIGkgPCBw
bHVnaW5ac3RhY2suc2l6ZSgpOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9i
amVjdFpzdGFjay5zaXplKCkgJiYgaSA8IHBsdWdpblpzdGFjay5zaXplKCk7IGkrKykgewogICAg
ICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUgZW5kIG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdhbnQg
dG8gaXRlcmF0ZQogICAgICAgICAvLyByb290LWRvd253YXJkcyBzbyB3ZSBpbmRleCBiYWNrd2Fy
ZHMgZnJvbSB0aGUgZW5kLgotICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMSA9IGlmcmFt
ZVpzdGFja1tpZnJhbWVac3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBjb25zdCBSZW5k
ZXJPYmplY3QqIHJvMSA9IG9iamVjdFpzdGFja1tvYmplY3Rac3RhY2suc2l6ZSgpIC0gMSAtIGld
OwogICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMiA9IHBsdWdpblpzdGFja1twbHVnaW5a
c3RhY2suc2l6ZSgpIC0gMSAtIGldOwogCiAgICAgICAgIGlmIChybzEgIT0gcm8yKSB7CkBAIC04
NSwxMiArODcsMTIgQEAgc3RhdGljIGJvb2wgaWZyYW1lSXNBYm92ZVBsdWdpbihjb25zdCBWZWN0
b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIGlmcmFtZVpzdGFjaywKICAgICAgICAgICAgIC8vIFRo
aXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBJRS4KICAgICAgICAgICAg
IGlmIChybzItPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gU3RhdGljUG9zaXRpb24pIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgMCd0aCBlbGVtZW50cyBvZiB0aGVzZSBSZW5kZXJPYmplY3QgYXJy
YXlzIHJlcHJlc2VudCB0aGUgcGx1Z2luIG5vZGUgYW5kCi0gICAgICAgICAgICAgICAgLy8gdGhl
IGlmcmFtZS4KKyAgICAgICAgICAgICAgICAvLyB0aGUgb2JqZWN0LgogICAgICAgICAgICAgICAg
IGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luUmVuZGVyT2JqZWN0ID0gcGx1Z2luWnN0YWNrWzBd
OwotICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVyT2JqZWN0
ID0gaWZyYW1lWnN0YWNrWzBdOworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0UmVuZGVyT2JqZWN0ID0gb2JqZWN0WnN0YWNrWzBdOwogCi0gICAgICAgICAgICAgICAg
aWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKSAmJiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0
eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5
bGUoKS0+ekluZGV4KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJbmRleCgpKQor
ICAgICAgICAgICAgICAgIGlmIChwbHVnaW5SZW5kZXJPYmplY3QtPnN0eWxlKCkgJiYgb2JqZWN0
UmVuZGVyT2JqZWN0LT5zdHlsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwbHVnaW5S
ZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJbmRleCgpID4gb2JqZWN0UmVuZGVyT2JqZWN0LT5zdHls
ZSgpLT56SW5kZXgoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTUsMjcg
KzExNyw0MyBAQCBzdGF0aWMgYm9vbCBpZnJhbWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxj
b25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1lWnN0YWNrLAogICAgIHJldHVybiB0cnVlOwogfQog
Ci0vLyBSZXR1cm4gYSBzZXQgb2YgcmVjdGFuZ2xlcyB0aGF0IHNob3VsZCBub3QgYmUgb3ZlcmRy
YXduIGJ5IHRoZQotLy8gcGx1Z2luICgiY3V0b3V0cyIpLiAgVGhpcyBoZWxwcyBpbXBsZW1lbnQg
dGhlICJpZnJhbWUgc2hpbSIKLS8vIHRlY2huaXF1ZSBvZiBvdmVybGF5aW5nIGEgd2luZG93ZWQg
cGx1Z2luIHdpdGggY29udGVudCBmcm9tIHRoZQotLy8gcGFnZS4gIEluIGEgbnV0c2hlbGwsIGlm
cmFtZSBlbGVtZW50cyBzaG91bGQgb2NjbHVkZSBwbHVnaW5zIHdoZW4KLS8vIHRoZXkgb2NjdXIg
aGlnaGVyIGluIHRoZSBzdGFja2luZyBvcmRlci4KLXZvaWQgZ2V0UGx1Z2luT2NjbHVzaW9ucyhF
bGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBhcmVudFdpZGdldCwgY29uc3QgSW50UmVjdCYgZnJh
bWVSZWN0LCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMpCitzdGF0aWMgdm9pZCBhcHBlbmRP
Y2NsdXNpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNp
b25zKQogewotICAgIFJlbmRlck9iamVjdCogcGx1Z2luTm9kZSA9IGVsZW1lbnQtPnJlbmRlcmVy
KCk7Ci0gICAgQVNTRVJUKHBsdWdpbk5vZGUpOwotICAgIGlmICghcGx1Z2luTm9kZS0+c3R5bGUo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBwbHVn
aW5ac3RhY2s7Ci0gICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IGlmcmFtZVpzdGFjazsK
LSAgICBnZXRPYmplY3RTdGFjayhwbHVnaW5Ob2RlLCAmcGx1Z2luWnN0YWNrKTsKKyAgICBJbnRQ
b2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkp
OworICAgIFJlbmRlckJveCogcmJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKTsKKyAgICBJbnRT
aXplIHNpemUocmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkpOworICAgIG9jY2x1c2lvbnMu
YXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKK30KIAotICAgIGlmICghcGFyZW50V2lkZ2V0
LT5pc0ZyYW1lVmlldygpKQorc3RhdGljIHZvaWQgYXBwZW5kT2NjbHVzaW9uc0Zyb21GaXhlZFBv
c2l0aW9uT2JqZWN0cyhGcmFtZSogZnJhbWUsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgVmVj
dG9yPEludFJlY3Q+JiBvY2NsdXNpb25zLCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gcGx1
Z2luWnN0YWNrKQoreworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBvYmplY3Rac3Rh
Y2s7CisKKyAgICBSZW5kZXJCbG9jazo6UG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCogcG9z
aXRpb25lZE9iamVjdHMgPSAwOworICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpKQorICAgICAgICBwb3NpdGlvbmVkT2JqZWN0cyA9IHJvb3QtPnBvc2l0
aW9uZWRPYmplY3RzKCk7CisKKyAgICBpZiAoIXBvc2l0aW9uZWRPYmplY3RzIHx8IHBvc2l0aW9u
ZWRPYmplY3RzLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyog
cGFyZW50RnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50V2lkZ2V0KTsK
KyAgICBSZW5kZXJCbG9jazo6UG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAgIGZvciAoUmVuZGVyQmxv
Y2s6OlBvc2l0aW9uZWRPYmplY3RzTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcG9z
aXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZW5k
ZXJCb3gqIHJlbmRlckJveCA9ICppdDsKKyAgICAgICAgaWYgKHJlbmRlckJveC0+c3R5bGUoKS0+
cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICghcmVuZGVyQm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMo
ZnJhbWVSZWN0KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBnZXRPYmplY3RTdGFj
ayhyZW5kZXJCb3gsICZvYmplY3Rac3RhY2spOworICAgICAgICBpZiAob2JqZWN0SXNBYm92ZVBs
dWdpbihvYmplY3Rac3RhY2ssIHBsdWdpblpzdGFjaykpCisgICAgICAgICAgICBhcHBlbmRPY2Ns
dXNpb24ocmVuZGVyQm94LCBvY2NsdXNpb25zKTsKKyAgICB9Cit9CiAKK3N0YXRpYyB2b2lkIGFw
cGVuZE9jY2x1c2lvbnNGcm9tSWZyYW1lcyhGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldywgY29u
c3QgSW50UmVjdCYgZnJhbWVSZWN0LCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMsIFZlY3Rv
cjxjb25zdCBSZW5kZXJPYmplY3QqPiBwbHVnaW5ac3RhY2spCit7CisgICAgVmVjdG9yPGNvbnN0
IFJlbmRlck9iamVjdCo+IGlmcmFtZVpzdGFjazsKICAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxX
aWRnZXQ+ID4qIGNoaWxkcmVuID0gcGFyZW50RnJhbWVWaWV3LT5jaGlsZHJlbigpOworCiAgICAg
Zm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRy
ZW4tPmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLT5lbmQoKTsgKytpdCkgewogICAgICAgICAvLyBX
ZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3J3MgYmVjYXVzZSBpZnJhbWVzIHNob3cgdXAgYXMg
RnJhbWVWaWV3cy4KICAgICAgICAgaWYgKCEoKml0KS0+aXNGcmFtZVZpZXcoKSkKQEAgLTE0OCwy
MSArMTY2LDQ4IEBAIHZvaWQgZ2V0UGx1Z2luT2NjbHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBX
aWRnZXQqIHBhcmVudFdpZGdldCwgY29uc3QgSW50UmVjdCYKICAgICAgICAgICAgIHx8ICFmcmFt
ZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBmcmFtZVZpZXctPmZy
YW1lKCktPm93bmVyRWxlbWVudCgpOwotICAgICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRl
cmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKLQotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMoZnJhbWVSZWN0KQotICAgICAg
ICAgICAgJiYgKCFpZnJhbWVSZW5kZXJlci0+c3R5bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpKSB7Ci0gICAgICAgICAgICBnZXRPYmplY3RT
dGFjayhpZnJhbWVSZW5kZXJlciwgJmlmcmFtZVpzdGFjayk7Ci0gICAgICAgICAgICBpZiAoaWZy
YW1lSXNBYm92ZVBsdWdpbihpZnJhbWVac3RhY2ssIHBsdWdpblpzdGFjaykpIHsKLSAgICAgICAg
ICAgICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChpZnJhbWVSZW5kZXJlci0+
bG9jYWxUb0Fic29sdXRlKCkpOwotICAgICAgICAgICAgICAgIFJlbmRlckJveCogcmJveCA9IHRv
UmVuZGVyQm94KGlmcmFtZVJlbmRlcmVyKTsKLSAgICAgICAgICAgICAgICBJbnRTaXplIHNpemUo
cmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIG9jY2x1c2lv
bnMuYXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQorICAgICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1lKCk7CisKKyAgICAgICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBmcmFtZS0+b3duZXJFbGVtZW50KCk7CisgICAgICAgIGlm
ICghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+
cmVuZGVyZXIoKTsKKyAgICAgICAgYm9vbCBpc1Zpc2libGUgPSAhcmVuZGVyZXItPnN0eWxlKCkg
fHwgcmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFOworCisgICAgICAg
IGlmICghaXNWaXNpYmxlIHx8ICFyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5p
bnRlcnNlY3RzKGZyYW1lUmVjdCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBn
ZXRPYmplY3RTdGFjayhyZW5kZXJlciwgJmlmcmFtZVpzdGFjayk7CisgICAgICAgIGlmIChvYmpl
Y3RJc0Fib3ZlUGx1Z2luKGlmcmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkKKyAgICAgICAgICAg
IGFwcGVuZE9jY2x1c2lvbihyZW5kZXJlciwgb2NjbHVzaW9ucyk7CisKICAgICB9CiB9CiAKKy8v
IFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24g
YnkgdGhlCisvLyBwbHVnaW4gKCJjdXRvdXRzIikuIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAi
aWZyYW1lIHNoaW0iCisvLyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdp
biB3aXRoIGNvbnRlbnQgZnJvbSB0aGUKKy8vIHBhZ2UuIEluIGEgbnV0c2hlbGwsIGlmcmFtZSBl
bGVtZW50cyBhbmQgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMgc2hvdWxkIG9jY2x1ZGUgcGx1Z2lu
cyB3aGVuCisvLyB0aGV5IG9jY3VyIGhpZ2hlciBpbiB0aGUgc3RhY2tpbmcgb3JkZXIuCit2b2lk
IGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwgV2lkZ2V0KiBwYXJlbnRXaWRn
ZXQsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25z
KQoreworICAgIFJlbmRlck9iamVjdCogcGx1Z2luTm9kZSA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7
CisgICAgQVNTRVJUKHBsdWdpbk5vZGUpOworICAgIGlmICghcGx1Z2luTm9kZS0+c3R5bGUoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBwbHVnaW5a
c3RhY2s7CisgICAgZ2V0T2JqZWN0U3RhY2socGx1Z2luTm9kZSwgJnBsdWdpblpzdGFjayk7CisK
KyAgICBpZiAoIXBhcmVudFdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcq
PihwYXJlbnRXaWRnZXQpOworCisgICAgRnJhbWUqIGZyYW1lID0gcGFyZW50RnJhbWVWaWV3LT5m
cmFtZSgpOworCisgICAgYXBwZW5kT2NjbHVzaW9uc0Zyb21GaXhlZFBvc2l0aW9uT2JqZWN0cyhm
cmFtZSwgZnJhbWVSZWN0LCBvY2NsdXNpb25zLCBwbHVnaW5ac3RhY2spOworICAgIGFwcGVuZE9j
Y2x1c2lvbnNGcm9tSWZyYW1lcyhwYXJlbnRGcmFtZVZpZXcsIGZyYW1lUmVjdCwgb2NjbHVzaW9u
cywgcGx1Z2luWnN0YWNrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4IDA1NmJkMWI4ZGE1MTc4NWM5
Yzg3NTcyYWFiZjNhN2RiZTc0ODllOGYuLjA1Yjk4MTFiYWU5YjJhZDgwNWYwYjFkZTE1Njc2NzIx
NjhhNTNmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmll
d1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAK
QEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQo
KQogICAgIGlmIChtX2lzV2luZG93ZWQpIHsKICAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQo
KS0+c2V0R2VvbWV0cnkobV93aW5kb3dSZWN0KTsKIAotICAgICAgICAvLyBDdXQgb3V0IGFyZWFz
IG9mIHRoZSBwbHVnaW4gb2NjbHVkZWQgYnkgaWZyYW1lIHNoaW1zCisgICAgICAgIC8vIEN1dCBv
dXQgYXJlYXMgb2YgdGhlIHBsdWdpbiBvY2NsdWRlZCBieSBpZnJhbWUgc2hpbXMgYW5kIGZpeGVk
IHBvc2l0aW9uZWQgb2JqZWN0cwogICAgICAgICBWZWN0b3I8SW50UmVjdD4gY3V0T3V0UmVjdHM7
CiAgICAgICAgIFFSZWdpb24gY2xpcFJlZ2lvbiA9IFFSZWdpb24obV9jbGlwUmVjdCk7CiAgICAg
ICAgIGdldFBsdWdpbk9jY2x1c2lvbnMobV9lbGVtZW50LCB0aGlzLT5wYXJlbnQoKSwgZnJhbWVS
ZWN0KCksIGN1dE91dFJlY3RzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102961</attachid>
            <date>2011-08-04 12:52:32 -0700</date>
            <delta_ts>2012-11-22 00:11:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-3778-20110804205230.patch</filename>
            <type>text/plain</type>
            <size>20636</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzODcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZWM3OGU1YzU5MjM3NzU1Njg4ZTZi
ODhmYzA0YzMyODc2ZTM4NWFmLi4zODg3OTZlZWRlMDMwMTRjY2RhODZlMmExMzdiYTUyYTcyMDJh
NWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMTYgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFBsdWdpbnMgbm90IG9jY2x1ZGVkIGJ5IGZpeGVk
IHBvc2l0aW9uIG9iamVjdHMgd2l0aCBoaWdoZXIgei1pbmRleAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmpl
Y3Qtb2NjbHVkZXMtcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGx1Z2lu
cy9maXhlZC1wb3NpdGlvbi1vYmplY3Qtb2NjbHVkZXMtcGx1Z2luLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA4LTA0ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCBtYXJrIGdhaW4uaHRtbCBhcyBmbGFreSBvbiBMaW51eCBjaHJvbWl1bS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvZml4ZWQtcG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVz
LXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL2ZpeGVkLXBvc2l0aW9u
LW9iamVjdC1vY2NsdWRlcy1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmYTZhNWE5
NDYwYzBlYzY2ZTVhNjBhYjU4YTliYmNkMWJlZGQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbHVnaW5zL2ZpeGVkLXBvc2l0aW9uLW9iamVjdC1vY2NsdWRlcy1wbHVnaW4tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorICAgICAKK1Rlc3QgdGhhdCBmaXhlZCBwb3NpdGlv
biBvYmplY3RzIHdpdGggYW4gYXBwcm9wcmlhdGUgei1pbmRleCBhbmQgYmFja2dyb3VuZCBjb2xv
ciBhcHBlYXIgYWJvdmUgYSB3aW5kb3dlZCBwbHVnaW4uIFlvdSBzaG91bGQgc2VlLCBhbmQgYmUg
YWJsZSB0byBjbGljaywgdGhlIGltYWdlIG92ZXIgdGhlIGZpcnN0IHBsdWdpbi4gVGhlIHNlY29u
ZCBwbHVnaW4gc2hvdWxkIGNvbmNlYWwgdGhlIHNlY29uZCBidXR0b24uCisKK1ByaW50cyAiU1VD
Q0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZhaWx1cmUuCisKK1NVQ0NFU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvZml4ZWQtcG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVz
LXBsdWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmplY3Qt
b2NjbHVkZXMtcGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU1OWQwMjFhZmZhOGZhZmNkYjRlZjQ0
YWU2ZDEyMWJhYWU5ODBjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsdWdpbnMv
Zml4ZWQtcG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVzLXBsdWdpbi5odG1sCkBAIC0wLDAgKzEsMTEy
IEBACis8aHRtbD48aGVhZD4KKzxzY3JpcHQ+CisgICAgdmFyIGV4cGVjdGVkQ2xpY2tzID0gW107
CisgICAgdmFyIGNsaWNrcyA9IFtdOworICAgIGV4cGVjdGVkQ2xpY2tzWzBdID0gdHJ1ZTsKKyAg
ICBleHBlY3RlZENsaWNrc1sxXSA9IGZhbHNlOworICAgIGV4cGVjdGVkQ2xpY2tzWzJdID0gZmFs
c2U7CisgICAgZXhwZWN0ZWRDbGlja3NbM10gPSBmYWxzZTsKKyAgICBleHBlY3RlZENsaWNrc1s0
XSA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gZG9DbGljayhpZCkKKyAgICB7CisgICAgICAgIGNs
aWNrc1tpZF0gPSB0cnVlOworCisgICAgICAgIC8vIENoZWNrIHN1Y2Nlc3MvZmFpbHVyZS4KKyAg
ICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAg
ICAgICAgdmFyIHdhaXRpbmdGb3JNb3JlQ2xpY2tzID0gZmFsc2U7CisgICAgICAgIHZhciBrOwor
ICAgICAgICBmb3IgKGsgaW4gZXhwZWN0ZWRDbGlja3MpIHsKKyAgICAgICAgICAgIGlmIChleHBl
Y3RlZENsaWNrc1trXSAmJiAhY2xpY2tzW2tdKQorICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JN
b3JlQ2xpY2tzID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFleHBlY3RlZENsaWNrc1tr
XSAmJiBjbGlja3Nba10pIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQuaW5uZXJIVE1MID0gJ0ZB
SUxVUkUnOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGlmICghd2FpdGluZ0Zvck1vcmVDbGlja3MpIHsKKyAgICAgICAgICAgIG91
dHB1dC5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBBdXRvbWF0aW9uOiB0cnkgdG8gY2xpY2sgb24gZWFjaCBidXR0
b24uCisgICAgdmFyIG5leHRJZFRvQ2xpY2sgPSAwOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDApOworICAgICAgICB9CisgICAgfQor
CisgICAgZnVuY3Rpb24gbW92ZU1vdXNlT3ZlcihlbGVtTmFtZSkgeworICAgICAgICB2YXIgZWxl
bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1OYW1lKTsKKyAgICAgICAgdmFyIHggPSBl
bGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9sbFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIHkgPSBl
bGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xsSGVpZ2h0IC8gMjsKKyAgICAgICAgdmFyIG9mZnNl
dFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50OworICAgICAgICB3aGlsZSAob2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICB4ICs9IG9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgb2Zmc2V0UGFyZW50
ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgfQorICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb05leHRDbGlj
aygpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICBpZiAobmV4dElk
VG9DbGljayA8IGV4cGVjdGVkQ2xpY2tzLmxlbmd0aCkgeworICAgICAgICAgICAgbW92ZU1vdXNl
T3ZlcignYnV0dG9uJyArIG5leHRJZFRvQ2xpY2spOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgICAgICAgICBuZXh0SWRUb0NsaWNrKys7CisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0KKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+CisKKzwhLS1B
biBpbWFnZSB3aXRoIGEgYmFja2dyb3VuZCBhbmQgYSBoaWdoZXIgei1pbmRleCB3aWxsIG9jY2x1
ZGUgdGhlIHBsdWdpbi0tPgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBw
eDsgbGVmdDogMHB4OyAgei1pbmRleDogMTsiIGlkPSIwIi8+Cis8ZW1iZWQgdHlwZT0iYXBwbGlj
YXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0icmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2Yi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2VtYmVkPgorPC9kaXY+Cis8aW1nIGlkPSJidXR0
b24wIiBzcmM9InJlc291cmNlcy9hcHBsZS5naWYiIHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRv
cDogMTA7IGxlZnQ6IDEwOyB3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyB6LWluZGV4OiAxMDsg
YmFja2dyb3VuZC1jb2xvcjogI2VlZTsiLz4KKworPCEtLVRoZSBwbHVnaW4gd2lsbCBjb25jZWFs
IGEgYnV0dG9uIGV2ZW4gdGhvdWdoIHRoZSBidXR0b24gaGFzIGEgYmFja2dyb3VuZCBieSBkZWZh
dWx0IGFuZCBldmVuIHRob3VnaCB0aGUgYnV0dG9uIGhhcyBhIGhpZ2hlciB6LWluZGV4LS0+Cis8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBsZWZ0OiAyMDBweDsgIiBp
ZD0iMSI+Cis8ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0i
cmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2Vt
YmVkPgorPC9kaXY+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uMSIgdmFsdWU9IkNs
aWNrTWUiIG9uY2xpY2s9ImRvQ2xpY2soMCkiICBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6
IDEwOyBsZWZ0OiAyMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7Ii8+CisKKzwhLS1UaGUg
cGx1Z2luIHdpbGwgY29uY2VhbCBhbiBpbWFnZSB3aXRoIG5vIGJhY2tncm91bmQgZXZlbiB3aGVu
IHRoZSBpbWFnZSBoYXMgYSBoaWdoZXIgei1pbmRleC0tPgorPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7IHotaW5kZXg6IDE7IiBpZD0iMCIvPgor
PGVtYmVkIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBzcmM9InJlc291cmNl
cy9zaW1wbGVfYmxhbmsuc3dmIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9lbWJlZD4KKzwv
ZGl2PgorPGltZyBpZD0iYnV0dG9uMiIgc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIiBzdHlsZT0i
cG9zaXRpb246IGZpeGVkOyB0b3A6IDIxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6
IDYwcHg7IHotaW5kZXg6IDEwOyIvPgorCis8IS0tVGhlIHBsdWdpbiB3aWxsIGNvbmNlYWwgYW4g
aW1hZ2Ugd2l0aCBhIGJhY2tncm91bmQgd2hlbiB0aGUgaW1hZ2UgaGFzIGEgbG93ZXIgei1pbmRl
eC0tPgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDIwMHB4OyBsZWZ0OiAy
MDBweDsgei1pbmRleDogMTAwOyIgaWQ9IjAiLz4KKzxlbWJlZCB0eXBlPSJhcHBsaWNhdGlvbi94
LXNob2Nrd2F2ZS1mbGFzaCIgc3JjPSJyZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3ZiIgd2lkdGg9
IjEwMCIgaGVpZ2h0PSIxMDAiPjwvZW1iZWQ+Cis8L2Rpdj4KKzxpbWcgaWQ9ImJ1dHRvbjMiIHNy
Yz0icmVzb3VyY2VzL2FwcGxlLmdpZiIgc3R5bGU9InBvc2l0aW9uOiBmaXhlZDsgdG9wOiAyMTA7
IGxlZnQ6IDIxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgei1pbmRleDogMTsgYmFja2dy
b3VuZC1jb2xvcjogI2VlZTsiLz4KKworPCEtLVRoZSBwbHVnaW4gd2lsbCBjb25jZWFsIGEgYnV0
dG9uIHdoZW4gaXQgaGFzIGEgbG93ZXIgeiBpbmRleC0tPgorPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDQwMHB4OyBsZWZ0OiAwcHg7ICB6LWluZGV4OiAxIiBpZD0iMSI+Cis8
ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0icmVzb3VyY2Vz
L3NpbXBsZV9ibGFuay5zd2YiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2VtYmVkPgorPC9k
aXY+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uNCIgdmFsdWU9IkNsaWNrTWUiIG9u
Y2xpY2s9ImRvQ2xpY2soMCkiICBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0b3A6IDQxMDsgbGVm
dDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IHotaW5kZXg6IDEwIi8+CisKKyAgICA8
cD5UZXN0IHRoYXQgZml4ZWQgcG9zaXRpb24gb2JqZWN0cyB3aXRoIGFuIGFwcHJvcHJpYXRlIHot
aW5kZXggYW5kIGJhY2tncm91bmQgY29sb3IgYXBwZWFyIGFib3ZlIGEKKyAgICAgICB3aW5kb3dl
ZCBwbHVnaW4uIFlvdSBzaG91bGQgc2VlLCBhbmQgYmUgYWJsZSB0byBjbGljaywgdGhlIGltYWdl
IG92ZXIgdGhlCisgICAgICAgZmlyc3QgcGx1Z2luLiBUaGUgc2Vjb25kIHBsdWdpbiBzaG91bGQg
Y29uY2VhbCB0aGUgc2Vjb25kIGJ1dHRvbi48L3A+CisKKyAgICA8cD5QcmludHMgIlNVQ0NFU1Mi
IG9uIHN1Y2Nlc3MsICJGQUlMVVJFIiBvbiBmYWlsdXJlLjwvcD4KKworPGRpdiBpZD1vdXRwdXQ+
Tk9ORTwvZGl2PgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMjFhODU2M2NmMTljODVhZjBlZjZkNGI3ODc2ZmMxNWRlMzJkNTQzMS4uYzEw
YmI2NDY0ZWYxMGMwMjA4OGE4NTUyN2NiYTViMTlkZWViZTc5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI2IEBACisyMDExLTA3LTE2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4K
KworICAgICAgICBQbHVnaW5zIG5vdCBvY2NsdWRlZCBieSBmaXhlZCBwb3NpdGlvbiBvYmplY3Rz
IHdpdGggaGlnaGVyIHotaW5kZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgd2l0aCBhIGhpZ2hlciBvciBlcXVh
bCB6IGluZGV4IHNob3VsZCBvY2NsdWRlIGEgcGx1Z2luLgorICAgICAgICBGaXJlZm94IGFuZCBP
cGVyYSB3aWxsIGFsbG93IGFueSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IHdpdGggYSBub24tdHJh
bnNwYXJlbnQgYmFja2dyb3VuZCwKKyAgICAgICAgZXhjZXB0IGEgZm9ybSBjb250cm9sLCB0byBv
Y2NsdWRlIGEgcGx1Z2luIC0gcmVnYXJkbGVzcyBvZiB6LWluZGV4LiBGb3IgY29tcGF0aWJpbGl0
eSByZWFzb25zLAorICAgICAgICB0aGlzIHBhdGNoIG1pbWljcyB0aGF0IGJlaGF2aW91ci4KKwor
ICAgICAgICBUZXN0OiBwbHVnaW5zL2ZpeGVkLXBvc2l0aW9uLW9iamVjdC1vY2NsdWRlcy1wbHVn
aW4uaHRtbAorCisgICAgICAgICogcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBlbmRPY2NsdXNpb24pOiBuZXcgaGVscGVyIGZ1bmN0aW9uCisgICAg
ICAgIChXZWJDb3JlOjpnZXRQbHVnaW5PY2NsdXNpb25zKTogV2FsayB0aGUgbGF5ZXIncyBwb3Np
dGl2ZSB6LW9yZGVyIGxpc3QgYW5kIG9jY2x1ZGUgdGhlCisgICAgICAgICAgIHBsdWdpbiB3aXRo
IGFueSBpbnRlcnNlY3RpbmcgcmVjdHMuCisgICAgICAgICogcGx1Z2lucy9JRnJhbWVTaGltU3Vw
cG9ydC5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogcGx1
Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
c2V0TlBXaW5kb3dJZk5lZWRlZCk6CisKIDIwMTEtMDgtMDEgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3
ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdDI6IFdlYiBJbnNwZWN0b3IgYWx3
YXlzIHN0YXJ0cyBpbiB1bmRvY2tlZCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZy
YW1lU2hpbVN1cHBvcnQuY3BwCmluZGV4IGMwYWExZTQxMzZjNDk0MmYyOWFmODg0ZjMyMTY4ODVj
N2FjNTViNzkuLjA1NWY1NWM1OGRmMGRkYmY5MWNhNGZkODBiYzNmNjk4ZDNmMzAwZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVy
dGhvZ2FuLm5ldD4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMiwx
MzUgKzMzLDcxIEBACiAjaW5jbHVkZSAiSUZyYW1lU2hpbVN1cHBvcnQuaCIKIAogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgot
I2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCi0jaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLS8vIFRoaXMgZmlsZSBw
cm92aWRlcyBwbHVnaW4tcmVsYXRlZCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaWZyYW1lIHNoaW1z
IGFuZCBpcyBzaGFyZWQgYnkgcGxhdGZvcm1zIHRoYXQgaW5oZXJpdAorLy8gVGhpcyBmaWxlIHBy
b3ZpZGVzIHBsdWdpbi1yZWxhdGVkIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBpZnJhbWUgc2hpbXMg
YW5kIG90aGVyIG9iamVjdHMgdGhhdCBvY2NsdWRlIHRoZSBwbHVnaW4gYW5kIGlzIHNoYXJlZCBi
eSBwbGF0Zm9ybXMgdGhhdCBpbmhlcml0CiAvLyBmcm9tIFBsdWdpblZpZXcgKGUuZy4gUXQpIGFu
ZCB0aG9zZSB0aGF0IGRvIG5vdCAoZS5nLiBDaHJvbWl1bSkuCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIHZvaWQgZ2V0T2JqZWN0U3RhY2soY29uc3QgUmVuZGVyT2JqZWN0KiBybywg
VmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+KiByb1N0YWNrKQorc3RhdGljIHZvaWQgYXBwZW5k
T2NjbHVzaW9uKFJlbmRlckJveCogcmJveCwgVmVjdG9yPEludFJlY3Q+JiBvY2NsdXNpb25zKQog
ewotICAgIHJvU3RhY2stPmNsZWFyKCk7Ci0gICAgd2hpbGUgKHJvKSB7Ci0gICAgICAgIHJvU3Rh
Y2stPmFwcGVuZChybyk7Ci0gICAgICAgIHJvID0gcm8tPnBhcmVudCgpOwotICAgIH0KLX0KLQot
Ly8gUmV0dXJucyB0cnVlIGlmIHN0YWNrMSBpcyBhdCBvciBhYm92ZSBzdGFjazIKLXN0YXRpYyBi
b29sIGlmcmFtZUlzQWJvdmVQbHVnaW4oY29uc3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+
JiBpZnJhbWVac3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1Z2lu
WnN0YWNrKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWZyYW1lWnN0YWNrLnNpemUo
KSAmJiBpIDwgcGx1Z2luWnN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIC8vIFRoZSByb290
IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiAgV2Ugd2FudCB0byBpdGVyYXRlCi0gICAg
ICAgIC8vIHJvb3QtZG93bndhcmRzIHNvIHdlIGluZGV4IGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQu
Ci0gICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcm8xID0gaWZyYW1lWnN0YWNrW2lmcmFtZVpz
dGFjay5zaXplKCkgLSAxIC0gaV07Ci0gICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcm8yID0g
cGx1Z2luWnN0YWNrW3BsdWdpblpzdGFjay5zaXplKCkgLSAxIC0gaV07Ci0KLSAgICAgICAgaWYg
KHJvMSAhPSBybzIpIHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUg
c3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuCi0gICAgICAgICAgICAvLyB3ZSd2ZSBm
b3VuZCB0aGUgbm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQgYW5jZXN0b3IuCi0g
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc2hvdWxkIGJlIG9uIHRvcC4KLQotICAgICAg
ICAgICAgLy8gU2VlIGlmIHotaW5kZXggZGV0ZXJtaW5lcyBhbiBvcmRlci4KLSAgICAgICAgICAg
IGlmIChybzEtPnN0eWxlKCkgJiYgcm8yLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50
IHoxID0gcm8xLT5zdHlsZSgpLT56SW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpbnQgejIgPSBy
bzItPnN0eWxlKCktPnpJbmRleCgpOwotICAgICAgICAgICAgICAgIGlmICh6MSA+IHoyKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoejEgPCB6
MikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1p
bmRleCBpdCBzdGFja3MgYmVoaW5kIHRoZSBpZnJhbWUuCi0gICAgICAgICAgICAvLyBUaGlzIGlz
IGZvciBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggSUUuCi0gICAgICAgICAgICBpZiAo
cm8yLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2JqZWN0IGFycmF5cyBy
ZXByZXNlbnQgdGhlIHBsdWdpbiBub2RlIGFuZAotICAgICAgICAgICAgICAgIC8vIHRoZSBpZnJh
bWUuCi0gICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwbHVnaW5SZW5kZXJPYmpl
Y3QgPSBwbHVnaW5ac3RhY2tbMF07Ci0gICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0
KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVac3RhY2tbMF07Ci0KLSAgICAgICAgICAgICAg
ICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpICYmIGlmcmFtZVJlbmRlck9iamVjdC0+
c3R5bGUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5z
dHlsZSgpLT56SW5kZXgoKSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS0+ekluZGV4KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBJbnNwZWN0IHRoZSBkb2N1bWVudCBvcmRlci4gIExhdGVyIG9yZGVyIG1lYW5zIGhp
Z2hlciBzdGFja2luZy4KLSAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0g
cm8xLT5wYXJlbnQoKTsKLSAgICAgICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcm8yLT5wYXJlbnQo
KSk7Ci0KLSAgICAgICAgICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBybyA9IHBhcmVudC0+
Zmlyc3RDaGlsZCgpOyBybzsgcm8gPSByby0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChybyA9PSBybzEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBpZiAocm8gPT0gcm8yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7IC8vIFdlIHNo
b3VsZCBoYXZlIHNlZW4gcm8xIGFuZCBybzIgYnkgbm93LgotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIEludFBvaW50IHBv
aW50ID0gcm91bmRlZEludFBvaW50KHJib3gtPmxvY2FsVG9BYnNvbHV0ZSgpKTsKKyAgICBJbnRT
aXplIHNpemUocmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkpOworICAgIG9jY2x1c2lvbnMu
YXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKIH0KIAotLy8gUmV0dXJuIGEgc2V0IG9mIHJl
Y3RhbmdsZXMgdGhhdCBzaG91bGQgbm90IGJlIG92ZXJkcmF3biBieSB0aGUKLS8vIHBsdWdpbiAo
ImN1dG91dHMiKS4gIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAiaWZyYW1lIHNoaW0iCi0vLyB0
ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQgZnJv
bSB0aGUKLS8vIHBhZ2UuICBJbiBhIG51dHNoZWxsLCBpZnJhbWUgZWxlbWVudHMgc2hvdWxkIG9j
Y2x1ZGUgcGx1Z2lucyB3aGVuCi0vLyB0aGV5IG9jY3VyIGhpZ2hlciBpbiB0aGUgc3RhY2tpbmcg
b3JkZXIuCi12b2lkIGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwgV2lkZ2V0
KiBwYXJlbnRXaWRnZXQsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgVmVjdG9yPEludFJlY3Q+
JiBvY2NsdXNpb25zKQordm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqIGVsZW1lbnQs
IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKLSAgICBSZW5kZXJPYmplY3QqIHBsdWdp
bk5vZGUgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIEFTU0VSVChwbHVnaW5Ob2RlKTsKLSAg
ICBpZiAoIXBsdWdpbk5vZGUtPnN0eWxlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBWZWN0b3I8
Y29uc3QgUmVuZGVyT2JqZWN0Kj4gcGx1Z2luWnN0YWNrOwotICAgIFZlY3Rvcjxjb25zdCBSZW5k
ZXJPYmplY3QqPiBpZnJhbWVac3RhY2s7Ci0gICAgZ2V0T2JqZWN0U3RhY2socGx1Z2luTm9kZSwg
JnBsdWdpblpzdGFjayk7Ci0KLSAgICBpZiAoIXBhcmVudFdpZGdldC0+aXNGcmFtZVZpZXcoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcgPSBzdGF0
aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnRXaWRnZXQpOwotCi0gICAgY29uc3QgSGFzaFNldDxS
ZWZQdHI8V2lkZ2V0PiA+KiBjaGlsZHJlbiA9IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKTsK
LSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBj
aGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4tPmVuZCgpOyArK2l0KSB7Ci0gICAgICAg
IC8vIFdlIG9ubHkgY2FyZSBhYm91dCBGcmFtZVZpZXcncyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1
cCBhcyBGcmFtZVZpZXdzLgotICAgICAgICBpZiAoISgqaXQpLT5pc0ZyYW1lVmlldygpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPigoKml0KS5nZXQoKSk7Ci0gICAgICAgIC8v
IENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gZ2V0IGJvdGggdGhlIGVsZW1lbnQgYW5kIHRoZSBS
ZW5kZXJPYmplY3QKLSAgICAgICAgLy8gZm9yIHRoaXMgRnJhbWVWaWV3LCBpZiB3ZSBjYW4ndCBq
dXN0IG1vdmUgb24gdG8gdGhlIG5leHQgb2JqZWN0LgotICAgICAgICBpZiAoIWZyYW1lVmlldy0+
ZnJhbWUoKSB8fCAhZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKQotICAgICAgICAg
ICAgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpCisg
ICAgUmVuZGVyTGF5ZXIqIHNjID0gZWxlbWVudC0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIo
KTsKKyAgICAvLyBJZiB0aGUgZW5jbG9zaW5nIGxheWVyIGlzIG5vdCB0aGUgcm9vdCBnZXQgdGhl
IHN0YWNraW5nIGNvbnRleHQuCisgICAgYm9vbCBoYXNIaWdoZXJaSW5kZXggPSBmYWxzZTsKKyAg
ICBpZiAoIXNjLT5yZW5kZXJlcigpLT5pc1Jvb3QoKSkKKyAgICAgICAgc2MgPSBzYy0+c3RhY2tp
bmdDb250ZXh0KCk7CisgICAgZWxzZQorICAgICAgICBoYXNIaWdoZXJaSW5kZXggPSB0cnVlOwor
CisgICAgZm9yIChSZW5kZXJMYXllciogbGF5ZXIgPSBzYzsgbGF5ZXI7IGxheWVyID0gbGF5ZXIt
PnN0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGxheWVyLT5kaXJ0eVpPcmRlckxpc3RzKCk7
CisgICAgICAgIGxheWVyLT51cGRhdGVaT3JkZXJMaXN0cygpOworICAgICAgICBWZWN0b3I8UmVu
ZGVyTGF5ZXIqPiogcG9zTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCk7CisKKyAgICAgICAg
aWYgKCFwb3NMaXN0KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwotICAgICAg
ICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBwb3NMaXN0LT5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcG9zTGlzdC0+YXQoaSk7CisgICAgICAg
ICAgICAvLyBEb24ndCBjb25zaWRlciB0aGUgcm9vdCBsYXllcgorICAgICAgICAgICAgaWYgKGxh
eWVyLT5yZW5kZXJlcigpLT5pc1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAg
ICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmlu
dGVyc2VjdHMoZnJhbWVSZWN0KQotICAgICAgICAgICAgJiYgKCFpZnJhbWVSZW5kZXJlci0+c3R5
bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
KSB7Ci0gICAgICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJlciwgJmlmcmFtZVpz
dGFjayk7Ci0gICAgICAgICAgICBpZiAoaWZyYW1lSXNBYm92ZVBsdWdpbihpZnJhbWVac3RhY2ss
IHBsdWdpblpzdGFjaykpIHsKLSAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5k
ZWRJbnRQb2ludChpZnJhbWVSZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOwotICAgICAgICAg
ICAgICAgIFJlbmRlckJveCogcmJveCA9IHRvUmVuZGVyQm94KGlmcmFtZVJlbmRlcmVyKTsKLSAg
ICAgICAgICAgICAgICBJbnRTaXplIHNpemUocmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkp
OwotICAgICAgICAgICAgICAgIG9jY2x1c2lvbnMuYXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUp
KTsKKyAgICAgICAgICAgIC8vIE9uY2Ugd2UgaGl0IG91ciBvd24gbGF5ZXIgaW4gdGhlIGxpc3Qs
IGFueXRoaW5nIGFmdGVyd2FyZHMgaGFzIGEgaGlnaGVyIHogaW5kZXgKKyAgICAgICAgICAgIGlm
IChsYXllciA9PSBlbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKSB7CisgICAg
ICAgICAgICAgICAgaGFzSGlnaGVyWkluZGV4ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaGFzSGlnaGVyWkluZGV4KQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBJbnB1dCBlbGVtZW50
cyBhbHdheXMgaGF2ZSBhIGJhY2tncm91bmQgYnV0IG5ldmVyIG9jY2x1ZGUgYSBwbHVnaW4gcmVn
YXJkbGVzcyBvZiB6LWluZGV4CisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY29tcGFiaWxpdHkg
aGFjayB3aXRoIEZGIGFuZCBPcGVyYQorICAgICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigp
LT5ub2RlKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCktPm5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmlucHV0VGFnKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
Ly8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPcGVyYSBhbmQgRkYsIG9ubHkgZWxlbWVudHMgd2l0
aCBhbiBlcXVhbCBvciBoaWdoZXIgeiBpbmRleAorICAgICAgICAgICAgLy8gdGhhdCBoYXZlIGEg
YmFja2dyb3VuZCBjYW4gb2NjbHVkZSB0aGUgcGx1Z2luCisgICAgICAgICAgICBpZiAobGF5ZXIt
PnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQoKSkKKyAgICAgICAgICAgICAgICBhcHBlbmRPY2Ns
dXNpb24odG9SZW5kZXJCb3gobGF5ZXItPnJlbmRlcmVyKCkpLCBvY2NsdXNpb25zKTsKKworICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIGFueSBjaGlsZHJlbiB3aXRoaW4gdGhlIG9jY2x1ZGluZyBi
bG9jayBhcmUgdGFrZW4gYWNjb3VudCBvZiwgdGhpcyBpcworICAgICAgICAgICAgLy8gbmVjZXNz
YXJ5IGZvciBpZnJhbWVzIGZvciBleGFtcGxlLgorICAgICAgICAgICAgZm9yIChSZW5kZXJMYXll
ciogY2hpbGQgPSBsYXllci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCktPmhhc0Jh
Y2tncm91bmQoKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kT2NjbHVzaW9uKHRvUmVuZGVy
Qm94KGNoaWxkLT5yZW5kZXJlcigpKSwgb2NjbHVzaW9ucyk7CiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmgKaW5kZXggNmU1NTEy
NmJjMTVjNDZiMmU4YmE4Y2VjM2ZmOWQ3Mzk0NzY5MWQ2Ni4uNWUzYjVhYmFjMDVlZGRlNzE4OGYz
YzRjZjgzNGQyMjg2NWM4YTc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9J
RnJhbWVTaGltU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hp
bVN1cHBvcnQuaApAQCAtMjcsNyArMjcsNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgV2lkZ2V0
OwogY2xhc3MgSW50UmVjdDsKIAotdm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqLCBX
aWRnZXQqIHBhcmVudFdpZGdldCwgY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBWZWN0b3I8SW50
UmVjdD4mIG9jY2x1c2lvbnMpOwordm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqLCBW
ZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdlOTU5NmUwMDhlMzhlNDA1
NzEyMDJhM2JhODc0ZGZkYTA3OTdmM2MuLmJlZGFmYjMwMjIzMjc1YmJlZjEwN2EzZmE5N2M5Njcy
NmFlY2IwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTgsNiAr
NTgsNyBAQAogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJQcm94eVNlcnZl
ci5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5WaWV3UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCmluZGV4IDA1NmJkMWI4ZGE1MTc4NWM5Yzg3NTcyYWFiZjNhN2RiZTc0ODllOGYu
LjE2NmNjM2ZiODgyZGE4NDJiZmM5ZDExNzUxY2JkZGQ4MGMyZjU0MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKQEAgLTY1NywxMCArNjU3LDEwIEBAIHZv
aWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCiAgICAgaWYgKG1faXNXaW5kb3dl
ZCkgewogICAgICAgICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRHZW9tZXRyeShtX3dpbmRv
d1JlY3QpOwogCi0gICAgICAgIC8vIEN1dCBvdXQgYXJlYXMgb2YgdGhlIHBsdWdpbiBvY2NsdWRl
ZCBieSBpZnJhbWUgc2hpbXMKKyAgICAgICAgLy8gQ3V0IG91dCBhcmVhcyBvZiB0aGUgcGx1Z2lu
IG9jY2x1ZGVkIGJ5IGlmcmFtZSBzaGltcyBhbmQgZml4ZWQgcG9zaXRpb25lZCBvYmplY3RzCiAg
ICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjdXRPdXRSZWN0czsKICAgICAgICAgUVJlZ2lvbiBjbGlw
UmVnaW9uID0gUVJlZ2lvbihtX2NsaXBSZWN0KTsKLSAgICAgICAgZ2V0UGx1Z2luT2NjbHVzaW9u
cyhtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBmcmFtZVJlY3QoKSwgY3V0T3V0UmVjdHMpOwor
ICAgICAgICBnZXRQbHVnaW5PY2NsdXNpb25zKG1fZWxlbWVudCwgY3V0T3V0UmVjdHMpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1dE91dFJlY3RzLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgICAgICBjdXRPdXRSZWN0c1tpXS5tb3ZlKC1mcmFtZVJlY3QoKS54KCksIC1mcmFtZVJl
Y3QoKS55KCkpOwogICAgICAgICAgICAgY2xpcFJlZ2lvbiA9IGNsaXBSZWdpb24uc3VidHJhY3Rl
ZChRUmVnaW9uKGN1dE91dFJlY3RzW2ldKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGQyODY0NmRmZDRlMzg4ZTAxZmZjOWRmNzE5NDAzY2E4NWJmMDM3YTMuLjdkNjJkYzRlN2Y0Njlm
NmRmNmJjYmVkMDE0NDZhMDkxZTczNjk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMDQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQu
b3JnPgorCisgICAgICAgIFBsdWdpbnMgbm90IG9jY2x1ZGVkIGJ5IGZpeGVkIHBvc2l0aW9uIG9i
amVjdHMgd2l0aCBoaWdoZXIgei1pbmRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgZml4ZWQgcG9zaXRpb24gZWxlbWVudCB3aXRoIGEgaGlnaGVyIG9y
IGVxdWFsIHogaW5kZXggc2hvdWxkIG9jY2x1ZGUgYSBwbHVnaW4uCisgICAgICAgIEZpcmVmb3gg
YW5kIE9wZXJhIHdpbGwgYWxsb3cgYW55IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgd2l0aCBhIG5v
bi10cmFuc3BhcmVudCBiYWNrZ3JvdW5kLAorICAgICAgICBleGNlcHQgYSBmb3JtIGNvbnRyb2ws
IHRvIG9jY2x1ZGUgYSBwbHVnaW4gLSByZWdhcmRsZXNzIG9mIHotaW5kZXguIEZvciBjb21wYXRp
YmlsaXR5IHJlYXNvbnMsCisgICAgICAgIHRoaXMgcGF0Y2ggbWltaWNzIHRoYXQgYmVoYXZpb3Vy
LgorCisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOiBVc2UgdGhlIG5l
dyBmdW5jdGlvbiBzaWduYXR1cmUgZm9yIGdldFBsdWdpbk9jY2x1c2lvbnMoKQorCiAyMDExLTA4
LTA0ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJLaXQyOiBXZWIgSW5zcGVjdG9yIGFsd2F5cyBzdGFydHMgaW4gdW5kb2NrZWQgbW9kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBs
LmNwcAppbmRleCAyNzJlZDQwY2Y0MTYxYzUyZTUxODBlYWE4N2Y1Y2NjOTI0NDI5MjgxLi41MWFl
ZDk0ODc2ODQ1YzhlMDI3YWMxMjg3NzRmMzE4MGJjMjM1NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTUy
LDcgKzU1Miw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y2FsY3VsYXRlR2VvbWV0
cnkoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LAogICAgIGNsaXBSZWN0ID0gd2luZG93Q2xpcFJl
Y3QoKTsKICAgICBjbGlwUmVjdC5tb3ZlKC13aW5kb3dSZWN0LngoKSwgLXdpbmRvd1JlY3QueSgp
KTsKIAotICAgIGdldFBsdWdpbk9jY2x1c2lvbnMobV9lbGVtZW50LCB0aGlzLT5wYXJlbnQoKSwg
ZnJhbWVSZWN0LCBjdXRPdXRSZWN0cyk7CisgICAgZ2V0UGx1Z2luT2NjbHVzaW9ucyhtX2VsZW1l
bnQsIGN1dE91dFJlY3RzKTsKICAgICAvLyBDb252ZXJ0IHRvIHRoZSBwbHVnaW4gcG9zaXRpb24u
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXRPdXRSZWN0cy5zaXplKCk7IGkrKykKICAg
ICAgICAgY3V0T3V0UmVjdHNbaV0ubW92ZSgtZnJhbWVSZWN0LngoKSwgLWZyYW1lUmVjdC55KCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175605</attachid>
            <date>2012-11-22 00:11:38 -0800</date>
            <delta_ts>2013-02-07 12:47:17 -0800</delta_ts>
            <desc>rebase prev patch to HEAD</desc>
            <filename>bug-3778-20121122170924.patch</filename>
            <type>text/plain</type>
            <size>19671</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDUxNDkwMWYzMzc3NTE0
N2M5MGI3YzdjMzYzMWJmODMxMjMyNTIzZC4uYzdlMzg3MTQyYzY5NTBjZGE3YWYzNTlhZWYyYzNj
MGQ1YzI2MTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIyICBSb2Jl
cnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBQbHVnaW5zIG5vdCBvY2Ns
dWRlZCBieSBmaXhlZCBwb3NpdGlvbiBvYmplY3RzIHdpdGggaGlnaGVyIHotaW5kZXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZpeGVkIHBvc2l0aW9u
IGVsZW1lbnQgd2l0aCBhIGhpZ2hlciBvciBlcXVhbCB6IGluZGV4IHNob3VsZCBvY2NsdWRlIGEg
cGx1Z2luLgorICAgICAgICBGaXJlZm94IGFuZCBPcGVyYSB3aWxsIGFsbG93IGFueSBmaXhlZCBw
b3NpdGlvbiBlbGVtZW50IHdpdGggYSBub24tdHJhbnNwYXJlbnQgYmFja2dyb3VuZCwKKyAgICAg
ICAgZXhjZXB0IGEgZm9ybSBjb250cm9sLCB0byBvY2NsdWRlIGEgcGx1Z2luIC0gcmVnYXJkbGVz
cyBvZiB6LWluZGV4LiAgRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywKKyAgICAgICAgdGhpcyBw
YXRjaCBtaW1pY3MgdGhhdCBiZWhhdmlvdXIuCisKKyAgICAgICAgVGVzdDogcGx1Z2lucy9maXhl
ZC1wb3NpdGlvbi1vYmplY3Qtb2NjbHVkZXMtcGx1Z2luLmh0bWwKKworICAgICAgICAqIHBsdWdp
bnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kT2NjbHVz
aW9uKTogbmV3IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGx1Z2luT2Nj
bHVzaW9ucyk6IFdhbGsgdGhlIGxheWVyJ3MgcG9zaXRpdmUgei1vcmRlciBsaXN0IGFuZCBvY2Ns
dWRlIHRoZQorICAgICAgICAgICBwbHVnaW4gd2l0aCBhbnkgaW50ZXJzZWN0aW5nIHJlY3RzLgor
ICAgICAgICAqIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisKIDIwMTItMTEtMjEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBpbmNvcnJlY3Qg
YXNzZXJ0aW9uIGluIEltbXV0YWJsZUVsZW1lbnRBdHRyaWJ1dGVEYXRhKE11dGFibGVFbGVtZW50
QXR0cmlidXRlRGF0YSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY3NzAzZDY5NmU3
OGM4YTY2NDMyOWNiZmNjYmRhZmMzNDM5MTMyYmUuLmQzM2FkMTM1Yzc5MGVmODkxZGE4ZGYxZjVl
YWNkMzEzYTFiNDdmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMTEtMjIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFBsdWdpbnMgbm90IG9jY2x1ZGVkIGJ5IGZpeGVkIHBvc2l0aW9uIG9iamVjdHMgd2l0aCBo
aWdoZXIgei1pbmRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEEgZml4ZWQgcG9zaXRpb24gZWxlbWVudCB3aXRoIGEgaGlnaGVyIG9yIGVxdWFsIHogaW5k
ZXggc2hvdWxkIG9jY2x1ZGUgYSBwbHVnaW4uCisgICAgICAgIEZpcmVmb3ggYW5kIE9wZXJhIHdp
bGwgYWxsb3cgYW55IGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgd2l0aCBhIG5vbi10cmFuc3BhcmVu
dCBiYWNrZ3JvdW5kLAorICAgICAgICBleGNlcHQgYSBmb3JtIGNvbnRyb2wsIHRvIG9jY2x1ZGUg
YSBwbHVnaW4gLSByZWdhcmRsZXNzIG9mIHotaW5kZXguIEZvciBjb21wYXRpYmlsaXR5IHJlYXNv
bnMsCisgICAgICAgIHRoaXMgcGF0Y2ggbWltaWNzIHRoYXQgYmVoYXZpb3VyLgorCisgICAgICAg
ICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOiBVc2UgdGhlIG5ldyBmdW5jdGlvbiBz
aWduYXR1cmUgZm9yIGdldFBsdWdpbk9jY2x1c2lvbnMoKQorCiAyMDEyLTExLTIxICBQZXRlciBC
ZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIHdlYmtp
dF91bml0X3Rlc3RzIHNob3VsZCBkZXBlbmQgb24gZm9yd2FyZGVyMiBmb3IgQW5kcm9pZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAppbmRleCA4MjY1NzY1
MTEwYWU1NDY4ZDAzMDVmM2VmYjA0NmQyNWFkZDdmZWZmLi5hMjM5OWI5NWUxZGIzYjZlNDhhNzI4
ZWI0YjY5YTNjZGQxYWVhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lG
cmFtZVNoaW1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNo
aW1TdXBwb3J0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBS
b2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+LgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMzIsMTM1ICszMyw3MCBAQAogI2luY2x1ZGUgIklGcmFtZVNo
aW1TdXBwb3J0LmgiCiAKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIK
LSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJveC5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUg
IldpZGdldC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogCi0vLyBUaGlzIGZpbGUgcHJvdmlkZXMgcGx1Z2luLXJlbGF0ZWQgdXRpbGl0eSBm
dW5jdGlvbnMgZm9yIGlmcmFtZSBzaGltcyBhbmQgaXMgc2hhcmVkIGJ5IHBsYXRmb3JtcyB0aGF0
IGluaGVyaXQKKy8vIFRoaXMgZmlsZSBwcm92aWRlcyBwbHVnaW4tcmVsYXRlZCB1dGlsaXR5IGZ1
bmN0aW9ucyBmb3IgaWZyYW1lIHNoaW1zIGFuZCBvdGhlciBvYmplY3RzIHRoYXQgb2NjbHVkZSB0
aGUgcGx1Z2luIGFuZCBpcyBzaGFyZWQgYnkgcGxhdGZvcm1zIHRoYXQgaW5oZXJpdAogLy8gZnJv
bSBQbHVnaW5WaWV3IChlLmcuIFF0KSBhbmQgdGhvc2UgdGhhdCBkbyBub3QgKGUuZy4gQ2hyb21p
dW0pLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIGdldE9iamVjdFN0YWNr
KGNvbnN0IFJlbmRlck9iamVjdCogcm8sIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiogcm9T
dGFjaykKK3N0YXRpYyB2b2lkIGFwcGVuZE9jY2x1c2lvbihSZW5kZXJCb3gqIHJib3gsIFZlY3Rv
cjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKIHsKLSAgICByb1N0YWNrLT5jbGVhcigpOwotICAgIHdo
aWxlIChybykgewotICAgICAgICByb1N0YWNrLT5hcHBlbmQocm8pOwotICAgICAgICBybyA9IHJv
LT5wYXJlbnQoKTsKLSAgICB9Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBzdGFjazEgaXMgYXQg
b3IgYWJvdmUgc3RhY2syCi1zdGF0aWMgYm9vbCBpZnJhbWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZl
Y3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1lWnN0YWNrLCBjb25zdCBWZWN0b3I8Y29u
c3QgUmVuZGVyT2JqZWN0Kj4mIHBsdWdpblpzdGFjaykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGlmcmFtZVpzdGFjay5zaXplKCkgJiYgaSA8IHBsdWdpblpzdGFjay5zaXplKCk7IGkr
KykgewotICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUgZW5kIG9mIHRoZXNlIHN0YWNrcy4g
IFdlIHdhbnQgdG8gaXRlcmF0ZQotICAgICAgICAvLyByb290LWRvd253YXJkcyBzbyB3ZSBpbmRl
eCBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kLgotICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJv
MSA9IGlmcmFtZVpzdGFja1tpZnJhbWVac3RhY2suc2l6ZSgpIC0gMSAtIGldOwotICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHJvMiA9IHBsdWdpblpzdGFja1twbHVnaW5ac3RhY2suc2l6ZSgp
IC0gMSAtIGldOwotCi0gICAgICAgIGlmIChybzEgIT0gcm8yKSB7Ci0gICAgICAgICAgICAvLyBX
aGVuIHdlIGZpbmQgbm9kZXMgaW4gdGhlIHN0YWNrIHRoYXQgYXJlIG5vdCB0aGUgc2FtZSwgdGhl
bgotICAgICAgICAgICAgLy8gd2UndmUgZm91bmQgdGhlIG5vZGVzIGp1c3QgYmVsb3cgdGhlIGxv
d2VzdCBjb21tZW50IGFuY2VzdG9yLgotICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNo
b3VsZCBiZSBvbiB0b3AuCi0KLSAgICAgICAgICAgIC8vIFNlZSBpZiB6LWluZGV4IGRldGVybWlu
ZXMgYW4gb3JkZXIuCi0gICAgICAgICAgICBpZiAocm8xLT5zdHlsZSgpICYmIHJvMi0+c3R5bGUo
KSkgewotICAgICAgICAgICAgICAgIGludCB6MSA9IHJvMS0+c3R5bGUoKS0+ekluZGV4KCk7Ci0g
ICAgICAgICAgICAgICAgaW50IHoyID0gcm8yLT5zdHlsZSgpLT56SW5kZXgoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoejEgPiB6MikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICAgICAgaWYgKHoxIDwgejIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgdGhlIHBsdWdpbiBkb2Vz
IG5vdCBoYXZlIGFuIGV4cGxpY2l0IHotaW5kZXggaXQgc3RhY2tzIGJlaGluZCB0aGUgaWZyYW1l
LgotICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgbWFpbnRhaW5pbmcgY29tcGF0aWJpbGl0eSB3
aXRoIElFLgotICAgICAgICAgICAgaWYgKHJvMi0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBTdGF0
aWNQb3NpdGlvbikgewotICAgICAgICAgICAgICAgIC8vIFRoZSAwJ3RoIGVsZW1lbnRzIG9mIHRo
ZXNlIFJlbmRlck9iamVjdCBhcnJheXMgcmVwcmVzZW50IHRoZSBwbHVnaW4gbm9kZSBhbmQKLSAg
ICAgICAgICAgICAgICAvLyB0aGUgaWZyYW1lLgotICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRl
ck9iamVjdCogcGx1Z2luUmVuZGVyT2JqZWN0ID0gcGx1Z2luWnN0YWNrWzBdOwotICAgICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVyT2JqZWN0ID0gaWZyYW1lWnN0
YWNrWzBdOwotCi0gICAgICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUo
KSAmJiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS0+ekluZGV4KCkgPiBpZnJhbWVSZW5kZXJP
YmplY3QtPnN0eWxlKCktPnpJbmRleCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSW5zcGVjdCB0aGUgZG9jdW1lbnQgb3Jk
ZXIuICBMYXRlciBvcmRlciBtZWFucyBoaWdoZXIgc3RhY2tpbmcuCi0gICAgICAgICAgICBjb25z
dCBSZW5kZXJPYmplY3QqIHBhcmVudCA9IHJvMS0+cGFyZW50KCk7Ci0gICAgICAgICAgICBpZiAo
IXBhcmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBBU1NF
UlQocGFyZW50ID09IHJvMi0+cGFyZW50KCkpOwotCi0gICAgICAgICAgICBmb3IgKGNvbnN0IFJl
bmRlck9iamVjdCogcm8gPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsgcm87IHJvID0gcm8tPm5leHRT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAocm8gPT0gcm8xKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHJvID09IHJvMikKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBBU1NFUlQoZmFsc2UpOyAvLyBXZSBzaG91bGQgaGF2ZSBzZWVuIHJvMSBhbmQgcm8yIGJ5IG5v
dy4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChyYm94LT5sb2Nh
bFRvQWJzb2x1dGUoKSk7CisgICAgSW50U2l6ZSBzaXplKHJib3gtPndpZHRoKCksIHJib3gtPmhl
aWdodCgpKTsKKyAgICBvY2NsdXNpb25zLmFwcGVuZChJbnRSZWN0KHBvaW50LCBzaXplKSk7CiB9
CiAKLS8vIFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVy
ZHJhd24gYnkgdGhlCi0vLyBwbHVnaW4gKCJjdXRvdXRzIikuICBUaGlzIGhlbHBzIGltcGxlbWVu
dCB0aGUgImlmcmFtZSBzaGltIgotLy8gdGVjaG5pcXVlIG9mIG92ZXJsYXlpbmcgYSB3aW5kb3dl
ZCBwbHVnaW4gd2l0aCBjb250ZW50IGZyb20gdGhlCi0vLyBwYWdlLiAgSW4gYSBudXRzaGVsbCwg
aWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbgotLy8gdGhleSBvY2N1
ciBoaWdoZXIgaW4gdGhlIHN0YWNraW5nIG9yZGVyLgotdm9pZCBnZXRQbHVnaW5PY2NsdXNpb25z
KEVsZW1lbnQqIGVsZW1lbnQsIFdpZGdldCogcGFyZW50V2lkZ2V0LCBjb25zdCBJbnRSZWN0JiBm
cmFtZVJlY3QsIFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucykKK3ZvaWQgZ2V0UGx1Z2luT2Nj
bHVzaW9ucyhFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMpCiB7
Ci0gICAgUmVuZGVyT2JqZWN0KiBwbHVnaW5Ob2RlID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKLSAg
ICBBU1NFUlQocGx1Z2luTm9kZSk7Ci0gICAgaWYgKCFwbHVnaW5Ob2RlLT5zdHlsZSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IHBsdWdpblpzdGFj
azsKLSAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gaWZyYW1lWnN0YWNrOwotICAgIGdl
dE9iamVjdFN0YWNrKHBsdWdpbk5vZGUsICZwbHVnaW5ac3RhY2spOwotCi0gICAgaWYgKCFwYXJl
bnRXaWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZyYW1lVmll
dyogcGFyZW50RnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50V2lkZ2V0
KTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSBwYXJl
bnRGcmFtZVZpZXctPmNoaWxkcmVuKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVu
LT5lbmQoKTsgKytpdCkgewotICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3
J3MgYmVjYXVzZSBpZnJhbWVzIHNob3cgdXAgYXMgRnJhbWVWaWV3cy4KLSAgICAgICAgaWYgKCEo
Kml0KS0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNv
bnN0IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRnJhbWVWaWV3Kj4o
KCppdCkuZ2V0KCkpOwotICAgICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgd2UgY2FuIGdldCBi
b3RoIHRoZSBlbGVtZW50IGFuZCB0aGUgUmVuZGVyT2JqZWN0Ci0gICAgICAgIC8vIGZvciB0aGlz
IEZyYW1lVmlldywgaWYgd2UgY2FuJ3QganVzdCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9iamVjdC4K
LSAgICAgICAgaWYgKCFmcmFtZVZpZXctPmZyYW1lKCkgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+
b3duZXJFbGVtZW50KCkKLSAgICAgICAgICAgIHx8ICFmcmFtZVZpZXctPmZyYW1lKCktPm93bmVy
RWxlbWVudCgpLT5yZW5kZXJlcigpKQorICAgIFJlbmRlckxheWVyKiBzYyA9IGVsZW1lbnQtPnJl
bmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgLy8gSWYgdGhlIGVuY2xvc2luZyBsYXll
ciBpcyBub3QgdGhlIHJvb3QgZ2V0IHRoZSBzdGFja2luZyBjb250ZXh0LgorICAgIGJvb2wgaGFz
SGlnaGVyWkluZGV4ID0gZmFsc2U7CisgICAgaWYgKCFzYy0+cmVuZGVyZXIoKS0+aXNSb290KCkp
CisgICAgICAgIHNjID0gc2MtPnN0YWNraW5nQ29udGV4dCgpOworICAgIGVsc2UKKyAgICAgICAg
aGFzSGlnaGVyWkluZGV4ID0gdHJ1ZTsKKworICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0g
c2M7IGxheWVyOyBsYXllciA9IGxheWVyLT5zdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBs
YXllci0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisgICAgICAgIFZlY3RvcjxSZW5kZXJM
YXllcio+KiBwb3NMaXN0ID0gbGF5ZXItPnBvc1pPcmRlckxpc3QoKTsKKworICAgICAgICBpZiAo
IXBvc0xpc3QpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBIVE1MRWxlbWVudCog
ZWxlbWVudCA9IGZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIFJl
bmRlck9iamVjdCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IHBvc0xpc3QtPnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBwb3NMaXN0LT5hdChpKTsKKyAgICAgICAgICAg
IC8vIERvbid0IGNvbnNpZGVyIHRoZSByb290IGxheWVyCisgICAgICAgICAgICBpZiAobGF5ZXIt
PnJlbmRlcmVyKCktPmlzUm9vdCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAg
ICAgICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdU
cmFuc2Zvcm1zKCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCi0gICAgICAgICAgICAmJiAoIWlmcmFt
ZVJlbmRlcmVyLT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSkpIHsKLSAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRl
cmVyLCAmaWZyYW1lWnN0YWNrKTsKLSAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1Z2lu
KGlmcmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgewotICAgICAgICAgICAgICAgIEludFBvaW50
IHBvaW50ID0gcm91bmRlZEludFBvaW50KGlmcmFtZVJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUo
KSk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyQm94KiByYm94ID0gdG9SZW5kZXJCb3goaWZyYW1l
UmVuZGVyZXIpOwotICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShyYm94LT53aWR0aCgpLCBy
Ym94LT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgb2NjbHVzaW9ucy5hcHBlbmQoSW50UmVj
dChwb2ludCwgc2l6ZSkpOworICAgICAgICAgICAgLy8gT25jZSB3ZSBoaXQgb3VyIG93biBsYXll
ciBpbiB0aGUgbGlzdCwgYW55dGhpbmcgYWZ0ZXJ3YXJkcyBoYXMgYSBoaWdoZXIgeiBpbmRleAor
ICAgICAgICAgICAgaWYgKGxheWVyID09IGVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xh
eWVyKCkpIHsKKyAgICAgICAgICAgICAgICBoYXNIaWdoZXJaSW5kZXggPSB0cnVlOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYXNI
aWdoZXJaSW5kZXgpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8v
IElucHV0IGVsZW1lbnRzIGFsd2F5cyBoYXZlIGEgYmFja2dyb3VuZCBidXQgbmV2ZXIgb2NjbHVk
ZSBhIHBsdWdpbiByZWdhcmRsZXNzIG9mIHotaW5kZXgKKyAgICAgICAgICAgIC8vIFRoaXMgaXMg
YSBjb21wYWJpbGl0eSBoYWNrIHdpdGggRkYgYW5kIE9wZXJhCisgICAgICAgICAgICBpZiAobGF5
ZXItPnJlbmRlcmVyKCktPm5vZGUoKSAmJiBsYXllci0+cmVuZGVyZXIoKS0+bm9kZSgpLT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZXJhIGFuZCBGRiwgb25s
eSBlbGVtZW50cyB3aXRoIGFuIGVxdWFsIG9yIGhpZ2hlciB6IGluZGV4CisgICAgICAgICAgICAv
LyB0aGF0IGhhdmUgYSBiYWNrZ3JvdW5kIGNhbiBvY2NsdWRlIHRoZSBwbHVnaW4KKyAgICAgICAg
ICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS0+aGFzQmFja2dyb3VuZCgpKQorICAgICAgICAgICAg
ICAgIGFwcGVuZE9jY2x1c2lvbih0b1JlbmRlckJveChsYXllci0+cmVuZGVyZXIoKSksIG9jY2x1
c2lvbnMpOworCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgYW55IGNoaWxkcmVuIHdpdGhpbiB0
aGUgb2NjbHVkaW5nIGJsb2NrIGFyZSB0YWtlbiBhY2NvdW50IG9mLCB0aGlzIGlzCisgICAgICAg
ICAgICAvLyBuZWNlc3NhcnkgZm9yIGlmcmFtZXMgZm9yIGV4YW1wbGUuCisgICAgICAgICAgICBm
b3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGxheWVyLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVu
ZGVyZXIoKS0+aGFzQmFja2dyb3VuZCgpKQorICAgICAgICAgICAgICAgICAgICBhcHBlbmRPY2Ns
dXNpb24odG9SZW5kZXJCb3goY2hpbGQtPnJlbmRlcmVyKCkpLCBvY2NsdXNpb25zKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1l
U2hpbVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQu
aAppbmRleCA2ZTU1MTI2YmMxNWM0NmIyZThiYThjZWMzZmY5ZDczOTQ3NjkxZDY2Li41ZTNiNWFi
YWMwNWVkZGU3MTg4ZjNjNGNmODM0ZDIyODY1YzhhNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oCkBAIC0yNyw3ICsyNyw3IEBAIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBXaWRnZXQ7CiBjbGFzcyBJbnRSZWN0OwogCi12b2lkIGdldFBsdWdpbk9jY2x1c2lv
bnMoRWxlbWVudCosIFdpZGdldCogcGFyZW50V2lkZ2V0LCBjb25zdCBJbnRSZWN0JiBmcmFtZVJl
Y3QsIFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucyk7Cit2b2lkIGdldFBsdWdpbk9jY2x1c2lv
bnMoRWxlbWVudCosIFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVzaW9ucyk7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDQ2
Njg0NmQ0MzE5MDIzZmQ0ZmVmOWQyMDJmY2JmYmEyN2I3ZmRlZC4uZGZjZmM0YTI5ZGJkM2M0ZTBj
NTcxODgwMzRiMzk5OTg2YWE2NmIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1
ZGUgIlByb3h5U2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDA3NWZj
MDU0ODZkNDU5YzBjZGE5YWVjNDA0MmVkNWFkOTdkNjFlMzcuLjM5YTk3ZTQyNmRjYTA5MTE1Y2I4
NjRlYmNhYjYxYjczOTUxZjMxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC04NTIsNyArODUyLDcgQEAgdm9p
ZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYWxjdWxhdGVHZW9tZXRyeShjb25zdCBJbnRSZWN0
JiBmcmFtZVJlY3QsCiAgICAgY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgpOwogICAgIGNsaXBS
ZWN0Lm1vdmUoLXdpbmRvd1JlY3QueCgpLCAtd2luZG93UmVjdC55KCkpOwogCi0gICAgZ2V0UGx1
Z2luT2NjbHVzaW9ucyhtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBmcmFtZVJlY3QsIGN1dE91
dFJlY3RzKTsKKyAgICBnZXRQbHVnaW5PY2NsdXNpb25zKG1fZWxlbWVudCwgY3V0T3V0UmVjdHMp
OwogICAgIC8vIENvbnZlcnQgdG8gdGhlIHBsdWdpbiBwb3NpdGlvbi4KICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGN1dE91dFJlY3RzLnNpemUoKTsgaSsrKQogICAgICAgICBjdXRPdXRSZWN0
c1tpXS5tb3ZlKC1mcmFtZVJlY3QueCgpLCAtZnJhbWVSZWN0LnkoKSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjAxODNk
NGE0MzM0MjUzYTFmNzUxZTQ2OGNkN2RhYTI4OTQyMGY3My4uZDlkMmRhOTE2NjIyNWRhNWVmMWNl
ZWYxMzAwMmU1NmE2NjUxMDQyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTIyICBS
b2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBQbHVnaW5zIG5vdCBv
Y2NsdWRlZCBieSBmaXhlZCBwb3NpdGlvbiBvYmplY3RzIHdpdGggaGlnaGVyIHotaW5kZXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVh
c2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsdWdpbnMvZml4ZWQtcG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVzLXBsdWdpbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvZml4ZWQtcG9zaXRpb24tb2JqZWN0LW9j
Y2x1ZGVzLXBsdWdpbi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0yMSAgSm9zaHVhIEJlbGwgIDxq
c2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBJREJEYXRhYmFzZUV4Y2VwdGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmplY3Qt
b2NjbHVkZXMtcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsdWdpbnMvZml4ZWQt
cG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVzLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmZhNmE1YTk0NjBjMGVjNjZlNWE2MGFiNThhOWJiY2QxYmVkZDVjZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsdWdpbnMvZml4ZWQtcG9zaXRpb24tb2JqZWN0LW9jY2x1ZGVzLXBs
dWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisgICAgIAorVGVzdCB0aGF0IGZpeGVk
IHBvc2l0aW9uIG9iamVjdHMgd2l0aCBhbiBhcHByb3ByaWF0ZSB6LWluZGV4IGFuZCBiYWNrZ3Jv
dW5kIGNvbG9yIGFwcGVhciBhYm92ZSBhIHdpbmRvd2VkIHBsdWdpbi4gWW91IHNob3VsZCBzZWUs
IGFuZCBiZSBhYmxlIHRvIGNsaWNrLCB0aGUgaW1hZ2Ugb3ZlciB0aGUgZmlyc3QgcGx1Z2luLiBU
aGUgc2Vjb25kIHBsdWdpbiBzaG91bGQgY29uY2VhbCB0aGUgc2Vjb25kIGJ1dHRvbi4KKworUHJp
bnRzICJTVUNDRVNTIiBvbiBzdWNjZXNzLCAiRkFJTFVSRSIgb24gZmFpbHVyZS4KKworU1VDQ0VT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmplY3Qt
b2NjbHVkZXMtcGx1Z2luLmh0bWwgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL2ZpeGVkLXBvc2l0aW9u
LW9iamVjdC1vY2NsdWRlcy1wbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTU5ZDAyMWFmZmE4ZmFm
Y2RiNGVmNDRhZTZkMTIxYmFhZTk4MGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGx1Z2lucy9maXhlZC1wb3NpdGlvbi1vYmplY3Qtb2NjbHVkZXMtcGx1Z2luLmh0bWwKQEAgLTAs
MCArMSwxMTIgQEAKKzxodG1sPjxoZWFkPgorPHNjcmlwdD4KKyAgICB2YXIgZXhwZWN0ZWRDbGlj
a3MgPSBbXTsKKyAgICB2YXIgY2xpY2tzID0gW107CisgICAgZXhwZWN0ZWRDbGlja3NbMF0gPSB0
cnVlOworICAgIGV4cGVjdGVkQ2xpY2tzWzFdID0gZmFsc2U7CisgICAgZXhwZWN0ZWRDbGlja3Nb
Ml0gPSBmYWxzZTsKKyAgICBleHBlY3RlZENsaWNrc1szXSA9IGZhbHNlOworICAgIGV4cGVjdGVk
Q2xpY2tzWzRdID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiBkb0NsaWNrKGlkKQorICAgIHsKKyAg
ICAgICAgY2xpY2tzW2lkXSA9IHRydWU7CisKKyAgICAgICAgLy8gQ2hlY2sgc3VjY2Vzcy9mYWls
dXJlLgorICAgICAgICB2YXIgb3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1
dCIpOworICAgICAgICB2YXIgd2FpdGluZ0Zvck1vcmVDbGlja3MgPSBmYWxzZTsKKyAgICAgICAg
dmFyIGs7CisgICAgICAgIGZvciAoayBpbiBleHBlY3RlZENsaWNrcykgeworICAgICAgICAgICAg
aWYgKGV4cGVjdGVkQ2xpY2tzW2tdICYmICFjbGlja3Nba10pCisgICAgICAgICAgICAgICAgd2Fp
dGluZ0Zvck1vcmVDbGlja3MgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIWV4cGVjdGVk
Q2xpY2tzW2tdICYmIGNsaWNrc1trXSkgeworICAgICAgICAgICAgICAgIG91dHB1dC5pbm5lckhU
TUwgPSAnRkFJTFVSRSc7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF3YWl0aW5nRm9yTW9yZUNsaWNrcykgeworICAgICAg
ICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEF1dG9tYXRpb246IHRyeSB0byBjbGljayBvbiBl
YWNoIGJ1dHRvbi4KKyAgICB2YXIgbmV4dElkVG9DbGljayA9IDA7CisKKyAgICBmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgc2V0VGltZW91dChkb05leHRDbGljaywgMCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmdW5jdGlvbiBtb3ZlTW91c2VPdmVyKGVsZW1OYW1lKSB7CisgICAgICAg
IHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbU5hbWUpOworICAgICAgICB2
YXIgeCA9IGVsZW0ub2Zmc2V0TGVmdCArIGVsZW0uc2Nyb2xsV2lkdGggLyAyOworICAgICAgICB2
YXIgeSA9IGVsZW0ub2Zmc2V0VG9wICsgZWxlbS5zY3JvbGxIZWlnaHQgLyAyOworICAgICAgICB2
YXIgb2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQ7CisgICAgICAgIHdoaWxlIChvZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgIHggKz0gb2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICB5ICs9IG9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICBvZmZz
ZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OworICAgICAgICB9CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRv
TmV4dENsaWNrKCkgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIGlm
IChuZXh0SWRUb0NsaWNrIDwgZXhwZWN0ZWRDbGlja3MubGVuZ3RoKSB7CisgICAgICAgICAgICBt
b3ZlTW91c2VPdmVyKCdidXR0b24nICsgbmV4dElkVG9DbGljayk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIG5leHRJZFRvQ2xpY2srKzsKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZG9OZXh0Q2xpY2ssIDApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg
fQorICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4K
KworPCEtLUFuIGltYWdlIHdpdGggYSBiYWNrZ3JvdW5kIGFuZCBhIGhpZ2hlciB6LWluZGV4IHdp
bGwgb2NjbHVkZSB0aGUgcGx1Z2luLS0+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMHB4OyBsZWZ0OiAwcHg7ICB6LWluZGV4OiAxOyIgaWQ9IjAiLz4KKzxlbWJlZCB0eXBl
PSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgc3JjPSJyZXNvdXJjZXMvc2ltcGxlX2Js
YW5rLnN3ZiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjwvZW1iZWQ+Cis8L2Rpdj4KKzxpbWcg
aWQ9ImJ1dHRvbjAiIHNyYz0icmVzb3VyY2VzL2FwcGxlLmdpZiIgc3R5bGU9InBvc2l0aW9uOiBm
aXhlZDsgdG9wOiAxMDsgbGVmdDogMTA7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IHotaW5k
ZXg6IDEwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyIvPgorCis8IS0tVGhlIHBsdWdpbiB3aWxs
IGNvbmNlYWwgYSBidXR0b24gZXZlbiB0aG91Z2ggdGhlIGJ1dHRvbiBoYXMgYSBiYWNrZ3JvdW5k
IGJ5IGRlZmF1bHQgYW5kIGV2ZW4gdGhvdWdoIHRoZSBidXR0b24gaGFzIGEgaGlnaGVyIHotaW5k
ZXgtLT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDIw
MHB4OyAiIGlkPSIxIj4KKzxlbWJlZCB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFz
aCIgc3JjPSJyZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3ZiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIx
MDAiPjwvZW1iZWQ+Cis8L2Rpdj4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24xIiB2
YWx1ZT0iQ2xpY2tNZSIgb25jbGljaz0iZG9DbGljaygwKSIgIHN0eWxlPSJwb3NpdGlvbjogZml4
ZWQ7IHRvcDogMTA7IGxlZnQ6IDIxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiLz4KKwor
PCEtLVRoZSBwbHVnaW4gd2lsbCBjb25jZWFsIGFuIGltYWdlIHdpdGggbm8gYmFja2dyb3VuZCBl
dmVuIHdoZW4gdGhlIGltYWdlIGhhcyBhIGhpZ2hlciB6LWluZGV4LS0+Cis8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDsgei1pbmRleDogMTsiIGlk
PSIwIi8+Cis8ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0i
cmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2Vt
YmVkPgorPC9kaXY+Cis8aW1nIGlkPSJidXR0b24yIiBzcmM9InJlc291cmNlcy9hcHBsZS5naWYi
IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMjEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYwcHg7
IGhlaWdodDogNjBweDsgei1pbmRleDogMTA7Ii8+CisKKzwhLS1UaGUgcGx1Z2luIHdpbGwgY29u
Y2VhbCBhbiBpbWFnZSB3aXRoIGEgYmFja2dyb3VuZCB3aGVuIHRoZSBpbWFnZSBoYXMgYSBsb3dl
ciB6LWluZGV4LS0+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7
IGxlZnQ6IDIwMHB4OyB6LWluZGV4OiAxMDA7IiBpZD0iMCIvPgorPGVtYmVkIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBzcmM9InJlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dm
IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9lbWJlZD4KKzwvZGl2PgorPGltZyBpZD0iYnV0
dG9uMyIgc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIiBzdHlsZT0icG9zaXRpb246IGZpeGVkOyB0
b3A6IDIxMDsgbGVmdDogMjEwOyB3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyB6LWluZGV4OiAx
OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyIvPgorCis8IS0tVGhlIHBsdWdpbiB3aWxsIGNvbmNl
YWwgYSBidXR0b24gd2hlbiBpdCBoYXMgYSBsb3dlciB6IGluZGV4LS0+Cis8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDAwcHg7IGxlZnQ6IDBweDsgIHotaW5kZXg6IDEiIGlk
PSIxIj4KKzxlbWJlZCB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgc3JjPSJy
ZXNvdXJjZXMvc2ltcGxlX2JsYW5rLnN3ZiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjwvZW1i
ZWQ+Cis8L2Rpdj4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b240IiB2YWx1ZT0iQ2xp
Y2tNZSIgb25jbGljaz0iZG9DbGljaygwKSIgIHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDog
NDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgei1pbmRleDogMTAiLz4K
KworICAgIDxwPlRlc3QgdGhhdCBmaXhlZCBwb3NpdGlvbiBvYmplY3RzIHdpdGggYW4gYXBwcm9w
cmlhdGUgei1pbmRleCBhbmQgYmFja2dyb3VuZCBjb2xvciBhcHBlYXIgYWJvdmUgYQorICAgICAg
IHdpbmRvd2VkIHBsdWdpbi4gWW91IHNob3VsZCBzZWUsIGFuZCBiZSBhYmxlIHRvIGNsaWNrLCB0
aGUgaW1hZ2Ugb3ZlciB0aGUKKyAgICAgICBmaXJzdCBwbHVnaW4uIFRoZSBzZWNvbmQgcGx1Z2lu
IHNob3VsZCBjb25jZWFsIHRoZSBzZWNvbmQgYnV0dG9uLjwvcD4KKworICAgIDxwPlByaW50cyAi
U1VDQ0VTUyIgb24gc3VjY2VzcywgIkZBSUxVUkUiIG9uIGZhaWx1cmUuPC9wPgorCis8ZGl2IGlk
PW91dHB1dD5OT05FPC9kaXY+Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>
<flag name="commit-queue"
          id="191145"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>