<?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>93473</bug_id>
          
          <creation_ts>2012-08-08 06:19:36 -0700</creation_ts>
          <short_desc>Web Inspector: The front-end should provide the position in original source file when set a breakpoint</short_desc>
          <delta_ts>2012-10-18 20:18:59 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>93387</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Wang">PeterHWang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>barraclough</cc>
    
    <cc>bweinstein</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>690251</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-08 06:19:36 -0700</bug_when>
    <thetext>I&apos;d like to discuss here, should we provide the the position in original source file when set a breakpoint. For example, a JS statement like this:
[space][space][space]var[space]a=1;
The position in original source file is (0,3), but now front-end send (0,0) when set a breakpoint, the heading spaces are removed.
To accommodate it, JSC has to add code to meet the same rules of removing leading space.

If we just provide the original position of a breakpoint, we can make JS engine and front-end independent, so that when front-end change the Formatter or support feature like &quot;Pretty Print&quot;, the JS engine is kept unchanged.

It&apos;s my personal suggestion. I&apos;d like to discuss.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690359</commentid>
    <comment_count>1</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-08-08 08:37:50 -0700</bug_when>
    <thetext>Are you just asking about column support for breakpoints? If so we have a bug about that already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691160</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-08 20:54:21 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Are you just asking about column support for breakpoints? If so we have a bug about that already.

If you mean  &quot;https://bugs.webkit.org/show_bug.cgi?id=53003&quot;, I think I know it. Actually I made a patch for it. JSC can support column for  breakpoints now, but there is a problem left.

Now, when the inspector user set a breakpoint, the front-end of inspector send the position of breakpoint to ScriptDebugServer. Most time the front-end sends the original position of statements in JS file, except for the statements that have leading blank space. In that case the position sent by front-end is taking no account of leading blank space.

I file this bug to discuss can we let front-end to send the original position of breakpoint, so that we don&apos;t have to modify the JS engine code to accommodate the front-end formatting style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691268</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-08 23:46:43 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; I&apos;d like to discuss here, should we provide the the position in original source file when set a breakpoint. For example, a JS statement like this:
&gt; [space][space][space]var[space]a=1;
&gt; The position in original source file is (0,3), but now front-end send (0,0) when set a breakpoint, the heading spaces are removed.
&gt; To accommodate it, JSC has to add code to meet the same rules of removing leading space.
&gt; 
I&apos;m not sure about JSC but in case of V8 it was that we couldn&apos;t break at some statements, e.g. if you set a breakpoint at line &quot;var c = a + b;&quot; it could move to line &quot;f();&quot;. The functionality was added for cases like this but it handles setting breakpoint at a space equally well by finding nearest statement.

function f() {}
var a = 10;
var b = Date.now();
var c = a + b;
f();

So basically we could only break at call stubs, branching operators and loops. That was improved some time ago but you should keep in mind that the breakpoint can move not only because of spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691301</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-09 00:40:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt; I&apos;d like to discuss here, should we provide the the position in original source file when set a breakpoint. For example, a JS statement like this:
&gt; &gt; [space][space][space]var[space]a=1;
&gt; &gt; The position in original source file is (0,3), but now front-end send (0,0) when set a breakpoint, the heading spaces are removed.
&gt; &gt; To accommodate it, JSC has to add code to meet the same rules of removing leading space.
&gt; &gt; 
&gt; I&apos;m not sure about JSC but in case of V8 it was that we couldn&apos;t break at some statements, e.g. if you set a breakpoint at line &quot;var c = a + b;&quot; it could move to line &quot;f();&quot;. The functionality was added for cases like this but it handles setting breakpoint at a space equally well by finding nearest statement.
&gt; 
&gt; function f() {}
&gt; var a = 10;
&gt; var b = Date.now();
&gt; var c = a + b;
&gt; f();
&gt; 
&gt; So basically we could only break at call stubs, branching operators and loops. That was improved some time ago but you should keep in mind that the breakpoint can move not only because of spaces.

Thank you for your comments. 
Things of JSC are different. Roughly speaking, JSC checks if there is a breakpoint before executing each statement. Taking this as example:
var a = 10;
[whitespace][whitespace]var b = Date.now();
[whitespace]var c = a + b;
f();
JSC knows the starting positions of every statements. Showing as (line,column), they are (0,0), (1,2), (2,1), and(3,0). JSC use them to match the breakpoint record to make sure if it should stop here. In old time JSC just check the &quot;line&quot; so can not support &quot;Pretty Print&quot; debug. Now JSC also records &quot;column&quot; during parsing. But there is still a problem, for above piece of JS code, if we set breakpoint for every statements, the positions set by front end are (0,0), (1,0), (2,0), and(3,0), since front-end ignores the leading whitespace. So I have to change the mechanism of JSC to follow the way of front-end. I&apos;m just worry that every time the formatter of front-end is changed, JSC must have to follow.
I&apos;m not sure if there is a standard of position of breakpoint. If not, could we just take the original position of statement as the position of breakpoint? So that JS engine and front-end can change their way of dealing with code independently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692270</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-10 00:03:32 -0700</bug_when>
    <thetext>JSC should be able to &quot;resolve&quot; the breakpoint in order to handle this case. In fact, this will also resolve many other cases such as setting the breakpoint on the line with comments. That&apos;s what all debuggers do. It should return the particular statement position it did set the breakpoint on. I do realize that this is an extra work for the JSC debugger, but there is no other way scenarios such as pretty printing, setting breakpoints on comments, etc. would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692446</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-10 04:37:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; JSC should be able to &quot;resolve&quot; the breakpoint in order to handle this case. In fact, this will also resolve many other cases such as setting the breakpoint on the line with comments. That&apos;s what all debuggers do. It should return the particular statement position it did set the breakpoint on. I do realize that this is an extra work for the JSC debugger, but there is no other way scenarios such as pretty printing, setting breakpoints on comments, etc. would work.

Ok. I&apos;ll do the work for JSC.
The last question is can we let front-end to send the position of breakpoint as (line, -1) when it&apos;s not in &quot;Pretty Print&quot; mode? Since JSC just knows the &quot;accurate&quot; position of current statement, it&apos;s a pain for JSC if front-end changes some rules a little, it may cause debugger disable to work. If JSC knows it&apos;s not in &quot;Pretty Print&quot; mode, it can just match line number, so if there is a little rule mismatch, at least the basic debugger can work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692520</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-10 06:24:40 -0700</bug_when>
    <thetext>
&gt; Ok. I&apos;ll do the work for JSC.
&gt; The last question is can we let front-end to send the position of breakpoint as (line, -1) when it&apos;s not in &quot;Pretty Print&quot; mode? Since JSC just knows the &quot;accurate&quot; position of current statement, it&apos;s a pain for JSC if front-end changes some rules a little, it may cause debugger disable to work. If JSC knows it&apos;s not in &quot;Pretty Print&quot; mode, it can just match line number, so if there is a little rule mismatch, at least the basic debugger can work.

Why would 0 be a problem? You attempt to set a breakpoint at char 0 and JSC returns the actual statement offset it could set the breakpoint on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693418</commentid>
    <comment_count>8</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-13 00:07:56 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Ok. I&apos;ll do the work for JSC.
&gt; &gt; The last question is can we let front-end to send the position of breakpoint as (line, -1) when it&apos;s not in &quot;Pretty Print&quot; mode? Since JSC just knows the &quot;accurate&quot; position of current statement, it&apos;s a pain for JSC if front-end changes some rules a little, it may cause debugger disable to work. If JSC knows it&apos;s not in &quot;Pretty Print&quot; mode, it can just match line number, so if there is a little rule mismatch, at least the basic debugger can work.
&gt; 
&gt; Why would 0 be a problem? You attempt to set a breakpoint at char 0 and JSC returns the actual statement offset it could set the breakpoint on.

No, I don&apos;t mean 0 is wrong. I mean if there is a way to let JSC to know the front-end is in &quot;Normal&quot; or &quot;Pretty Print&quot; mode, that will be great. Since in normal mode we don&apos;t even to match the &quot;column&quot;, because it&apos;s always 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693425</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-13 00:29:15 -0700</bug_when>
    <thetext>&gt; No, I don&apos;t mean 0 is wrong. I mean if there is a way to let JSC to know the front-end is in &quot;Normal&quot; or &quot;Pretty Print&quot; mode, that will be great. Since in normal mode we don&apos;t even to match the &quot;column&quot;, because it&apos;s always 0.

Well, front-end does not really distinguish between modes. It attempts to set breakpoint on 0, backend resolves it and sends the actual location to the front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694825</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-14 04:50:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; No, I don&apos;t mean 0 is wrong. I mean if there is a way to let JSC to know the front-end is in &quot;Normal&quot; or &quot;Pretty Print&quot; mode, that will be great. Since in normal mode we don&apos;t even to match the &quot;column&quot;, because it&apos;s always 0.
&gt; 
&gt; Well, front-end does not really distinguish between modes. It attempts to set breakpoint on 0, backend resolves it and sends the actual location to the front-end.

I see. Thx.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710566</commentid>
    <comment_count>11</comment_count>
      <attachid>161905</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-09-03 05:34:28 -0700</bug_when>
    <thetext>Created attachment 161905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710815</commentid>
    <comment_count>12</comment_count>
      <attachid>161964</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-09-03 22:34:01 -0700</bug_when>
    <thetext>Created attachment 161964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710816</commentid>
    <comment_count>13</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-09-03 22:37:22 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=161964) [details]
&gt; Patch

This patch was verified with Qt port, it can pass all the opened DRT test cases of Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726722</commentid>
    <comment_count>14</comment_count>
      <attachid>161964</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-24 08:58:36 -0700</bug_when>
    <thetext>Comment on attachment 161964
Patch

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

Can you provide a test for this?

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:144
&gt; +        m_lastExecutedLine = lineNumber;

has* methods should not modify the object, this is why in particular it was marked const.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:162
&gt; +        // Since frontend truncates the indent, so the first statement in a line must matches the breakpoint (line, 0).

typo: Since frontend truncates the indent, the first statement in a line must match the breakpoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730285</commentid>
    <comment_count>15</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-09-27 23:38:05 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 161964 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161964&amp;action=review
&gt; 
&gt; Can you provide a test for this?
Most of the cases in path LayoutTests/inspector/debugger are the cases of JS with indent, since the JS code of them are formatted. 
And LayoutTests/inspector/debugger/script-formatter-breakpoints.html can be used to verify the case of unformatted JS code.
Actually, I&apos;ve done DRT test for my patch using Qt build. 
 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:144
&gt; &gt; +        m_lastExecutedLine = lineNumber;
&gt; 
&gt; has* methods should not modify the object, this is why in particular it was marked const.
ok, I&apos;ll put it in another place.

&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:162
&gt; &gt; +        // Since frontend truncates the indent, so the first statement in a line must matches the breakpoint (line, 0).
&gt; 
&gt; typo: Since frontend truncates the indent, the first statement in a line must match the breakpoint
sorry, thx.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730295</commentid>
    <comment_count>16</comment_count>
      <attachid>166157</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-09-27 23:55:51 -0700</bug_when>
    <thetext>Created attachment 166157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736482</commentid>
    <comment_count>17</comment_count>
      <attachid>166157</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-07 21:14:55 -0700</bug_when>
    <thetext>Comment on attachment 166157
Patch

commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736490</commentid>
    <comment_count>18</comment_count>
      <attachid>166157</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-07 21:37:53 -0700</bug_when>
    <thetext>Comment on attachment 166157
Patch

Clearing flags on attachment: 166157

Committed r130615: &lt;http://trac.webkit.org/changeset/130615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736491</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-07 21:37:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161905</attachid>
            <date>2012-09-03 05:34:28 -0700</date>
            <delta_ts>2012-09-03 22:33:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93473-20120903203403.patch</filename>
            <type>text/plain</type>
            <size>6822</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQzNjQ5ZmU0MTBjZmZk
MTg5NTM5MWQ4YTM1N2I4N2QyODc1MjE0NS4uZTYyMTVlN2I3OWM5ZTU0OTZjMTI5NTc4NmU4NTYw
Y2I3NzU1ZGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTAzICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogVGhlIGZyb250LWVuZCBzaG91bGQgcHJvdmlkZSB0aGUgcG9zaXRpb24gaW4gb3Jp
Z2luYWwgc291cmNlIGZpbGUgd2hlbiBzZXQgYSBicmVha3BvaW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIGZyb250ZW5kIHRydW5jYXRlcyB0
aGUgaW5kZW50IHdoZW4gc2V0dGluZyBicmVha3BvaW50LCBzbyB0aGUgZmlyc3Qgc3RhdGVtZW50
IGluIGEgbGluZQorICAgICAgICBtYXRjaGVzIHRoZSBicmVha3BvaW50IChsaW5lLCAwKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdCBjYXNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpo
YXNCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpjcmVh
dGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorCiAyMDEyLTA4
LTIyICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBD
b25zaWRlciByZXBsYWNpbmcgcmV0dXJuIHR5cGUgb2YgQ2xpcGJvYXJkOjp0eXBlcygpIGZyb20g
SGFzaFNldDxTdHJpbmc+IHRvIFZlY3RvcjxTdHJpbmc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDk2N2IzZDIxZjA1NTY0YTFh
YmQwMjQwMTgyMTUwMGMxNTk2ZTQ2NTEuLjk3MmZjNTE2YTQ5YWYwNDZlYzQwMThlNTM2ZDQ0OTMy
MWU4ZWQ4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKQEAgLTYwLDYgKzYwLDggQEAgU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERl
YnVnU2VydmVyKCkKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKICAgICAsIG1f
cGF1c2VPbkNhbGxGcmFtZSgwKQogICAgICwgbV9yZWNvbXBpbGVUaW1lcih0aGlzLCAmU2NyaXB0
RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKQorICAgICwgbV9sYXN0RXhlY3V0
ZWRMaW5lKC0xKQorICAgICwgbV9sYXN0RXhlY3V0ZWRTb3VyY2VJZCgtMSkKIHsKIH0KIApAQCAt
MTI2LDQ1ICsxMjgsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50
KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIH0KIH0KIAotdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6dXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZSkKLXsKLSAgICBpZiAobGluZSA8IDApCi0gICAgICAgIHJldHVybjsKLQotICAg
IFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVy
Kj4oc291cmNlSUQpOwotCi0gICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7
Ci0gICAgICAgIFN0cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmlu
Zyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKLSAgICAgICAgbV9j
dXJyZW50U291cmNlQ29kZS5jbGVhcigpOwotICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJcbiIs
IHRydWUsIG1fY3VycmVudFNvdXJjZUNvZGUpOwotICAgICAgICBtX2N1cnJlbnRTb3VyY2VJRCA9
IHNvdXJjZUlEOwotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVy
ID0gMDsKLSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0g
MDsKLSAgICB9Ci0KLSAgICBpZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5s
aW5lTnVtYmVyKSB7Ci0gICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1i
ZXIgPSBsaW5lOwotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1i
ZXIgPSAwOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IHN0YXJ0TGluZSA9IHNv
dXJjZS0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKLSAgICBpZiAoKG1f
Y3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+PSBz
dGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNvbnN0IFN0cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNvZGVb
bV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFdOwot
ICAgIGlmIChjb2RlSW5MaW5lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGludCBu
ZXh0Q29sdW1uID0gY29kZUluTGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRp
b24uY29sdW1uTnVtYmVyKTsKLSAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgewotICAgICAgICBV
Q2hhciBjID0gY29kZUluTGluZVtuZXh0Q29sdW1uICsgMV07Ci0gICAgICAgIGlmIChjID09ICcg
JyB8fCBjID09ICdcdCcpCi0gICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7Ci0gICAgICAgIG1f
Y3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAxOwot
ICAgIH0gZWxzZQotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1i
ZXIgPSAwOwotfQotCi1ib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0
cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAorYm9vbCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAoIW1fYnJlYWtwb2ludHNBY3RpdmF0
ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MiwxMyArMTQ2LDIyIEBAIGJvb2wgU2Ny
aXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgcG9zCiAgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGJvb2wgbmV3TGluZSA9ZmFsc2U7CisgICAgaWYg
KGxpbmVOdW1iZXIgIT0gbV9sYXN0RXhlY3V0ZWRMaW5lKSB7CisgICAgICAgIG5ld0xpbmUgPSB0
cnVlOworICAgICAgICBtX2xhc3RFeGVjdXRlZExpbmUgPSBsaW5lTnVtYmVyOworICAgIH0KKwog
ICAgIGJvb2wgaGl0ID0gZmFsc2U7CiAgICAgY29uc3QgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFr
c1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CiAgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBi
cmVha3NWZWN0b3Iuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGk7CiAgICAgZm9yIChpID0gMDsgaSA8
IGJyZWFrc0NvdW50OyBpKyspIHsKICAgICAgICAgaW50IGJyZWFrTGluZSA9IGJyZWFrc1ZlY3Rv
ci5hdChpKS5saW5lTnVtYmVyOwotICAgICAgICBpZiAobGluZU51bWJlciA9PSBicmVha0xpbmUp
IHsKKyAgICAgICAgaW50IGJyZWFrQ29sdW1uID0gYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51
bWJlcjsKKyAgICAgICAgLy8gU2luY2UgZnJvbnRlbmQgdHJ1bmNhdGVzIHRoZSBpbmRlbnQsIHNv
IHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gYSBsaW5lIG11c3QgbWF0Y2hlcyB0aGUgYnJlYWtwb2lu
dCAobGluZSwgMCkuCisgICAgICAgIGlmICgobmV3TGluZSAmJiBsaW5lTnVtYmVyID09IGJyZWFr
TGluZSAmJiAhYnJlYWtDb2x1bW4pCisgICAgICAgICAgICB8fCAobGluZU51bWJlciA9PSBicmVh
a0xpbmUgJiYgY29sdW1uTnVtYmVyID09IGJyZWFrQ29sdW1uKSkgewogICAgICAgICAgICAgaGl0
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MzAsNiArNDAzLDEw
IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVk
ZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmCiB7CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3Np
dGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxO
dW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2Fs
bEZyYW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lLCBt
X2N1cnJlbnRDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOworICAgIGlmIChtX2xh
c3RFeGVjdXRlZFNvdXJjZUlkICE9IHNvdXJjZUlEKSB7CisgICAgICAgIG1fbGFzdEV4ZWN1dGVk
TGluZSA9IC0xOworICAgICAgICBtX2xhc3RFeGVjdXRlZFNvdXJjZUlkID0gc291cmNlSUQ7Cisg
ICAgfQogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9i
amVjdCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmgKaW5kZXggOTM1OTE0YzZiNDE4ZGMzZmEzNjMzNzg3NDI2MjU3NWE1YWFkODVkMy4u
ZWE2MGVlZDYwYThkYzI5MWE1Nzk3YjQ3YWM1MWQxNWMwYjRjYmQwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMTQsNyArMTE0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KikgPSAwOwogCi0gICAgYm9vbCBoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBj
b25zdCBUZXh0UG9zaXRpb24mKSBjb25zdDsKKyAgICBib29sIGhhc0JyZWFrcG9pbnQoaW50cHRy
X3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYpOwogCiAgICAgdm9pZCBkaXNwYXRjaEZ1
bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoY29uc3Qg
TGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxi
YWNrKTsKQEAgLTEzOCw5ICsxMzgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5OdW1iZXIpOwogCi0KLSAgICB2b2lk
IHVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsKLQogICAgIHR5
cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOwogICAgIHR5
cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1h
cDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNv
dXJjZUlkVG9CcmVha3BvaW50c01hcDsKQEAgLTE1Niw5ICsxNTMsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwIG1fc291cmNlSWRUb0JyZWFrcG9pbnRzOwogICAg
IFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiBtX3JlY29tcGlsZVRpbWVyOwogCi0gICAgVmVjdG9y
PFN0cmluZz4gbV9jdXJyZW50U291cmNlQ29kZTsKLSAgICBpbnRwdHJfdCBtX2N1cnJlbnRTb3Vy
Y2VJRDsKLSAgICBTY3JpcHRCcmVha3BvaW50IG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uOwor
ICAgIGludCBtX2xhc3RFeGVjdXRlZExpbmU7CisgICAgaW50cHRyX3QgbV9sYXN0RXhlY3V0ZWRT
b3VyY2VJZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161964</attachid>
            <date>2012-09-03 22:34:01 -0700</date>
            <delta_ts>2012-09-27 23:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93473-20120904133333.patch</filename>
            <type>text/plain</type>
            <size>7279</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQzNjQ5ZmU0MTBjZmZk
MTg5NTM5MWQ4YTM1N2I4N2QyODc1MjE0NS4uZTYyMTVlN2I3OWM5ZTU0OTZjMTI5NTc4NmU4NTYw
Y2I3NzU1ZGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTAzICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogVGhlIGZyb250LWVuZCBzaG91bGQgcHJvdmlkZSB0aGUgcG9zaXRpb24gaW4gb3Jp
Z2luYWwgc291cmNlIGZpbGUgd2hlbiBzZXQgYSBicmVha3BvaW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIGZyb250ZW5kIHRydW5jYXRlcyB0
aGUgaW5kZW50IHdoZW4gc2V0dGluZyBicmVha3BvaW50LCBzbyB0aGUgZmlyc3Qgc3RhdGVtZW50
IGluIGEgbGluZQorICAgICAgICBtYXRjaGVzIHRoZSBicmVha3BvaW50IChsaW5lLCAwKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdCBjYXNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpo
YXNCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpjcmVh
dGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorCiAyMDEyLTA4
LTIyICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBD
b25zaWRlciByZXBsYWNpbmcgcmV0dXJuIHR5cGUgb2YgQ2xpcGJvYXJkOjp0eXBlcygpIGZyb20g
SGFzaFNldDxTdHJpbmc+IHRvIFZlY3RvcjxTdHJpbmc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDk2N2IzZDIxZjA1NTY0YTFh
YmQwMjQwMTgyMTUwMGMxNTk2ZTQ2NTEuLjEzYjVlZjU0YmFmNjk1YzA0NmI0Njk0NjA5YmFlZmQ0
MDIyZmQ0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKQEAgLTYwLDYgKzYwLDggQEAgU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERl
YnVnU2VydmVyKCkKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKICAgICAsIG1f
cGF1c2VPbkNhbGxGcmFtZSgwKQogICAgICwgbV9yZWNvbXBpbGVUaW1lcih0aGlzLCAmU2NyaXB0
RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKQorICAgICwgbV9sYXN0RXhlY3V0
ZWRMaW5lKC0xKQorICAgICwgbV9sYXN0RXhlY3V0ZWRTb3VyY2VJZCgtMSkKIHsKIH0KIApAQCAt
MTI2LDU4ICsxMjgsMjYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmUpCi17Ci0gICAgaWYgKGxpbmUgPCAwKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBTb3VyY2VQcm92aWRlciogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxTb3VyY2VQcm92aWRl
cio+KHNvdXJjZUlEKTsKLQotICAgIGlmIChtX2N1cnJlbnRTb3VyY2VJRCAhPSBzb3VyY2VJRCkg
ewotICAgICAgICBTdHJpbmcgc291cmNlQ29kZSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJp
bmcoY29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNlLT5kYXRhKCkpKSk7Ci0gICAgICAgIG1f
Y3VycmVudFNvdXJjZUNvZGUuY2xlYXIoKTsKLSAgICAgICAgc291cmNlQ29kZS5zcGxpdCgiXG4i
LCB0cnVlLCBtX2N1cnJlbnRTb3VyY2VDb2RlKTsKLSAgICAgICAgbV9jdXJyZW50U291cmNlSUQg
PSBzb3VyY2VJRDsKLSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJl
ciA9IDA7Ci0gICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9
IDA7Ci0gICAgfQotCi0gICAgaWYgKGxpbmUgIT0gbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24u
bGluZU51bWJlcikgewotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVt
YmVyID0gbGluZTsKLSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVt
YmVyID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCBzdGFydExpbmUgPSBz
b3VyY2UtPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jhc2VkSW50KCk7Ci0gICAgaWYgKCht
X2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyIC0gc3RhcnRMaW5lIC0gMSkgPj0g
c3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTb3VyY2VDb2RlLnNpemUoKSkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjb25zdCBTdHJpbmcmIGNvZGVJbkxpbmUgPSBtX2N1cnJlbnRTb3VyY2VDb2Rl
W21fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxXTsK
LSAgICBpZiAoY29kZUluTGluZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpbnQg
bmV4dENvbHVtbiA9IGNvZGVJbkxpbmUuZmluZCgiOyIsIG1fY3VycmVudFN0YXRlbWVudFBvc2l0
aW9uLmNvbHVtbk51bWJlcik7Ci0gICAgaWYgKG5leHRDb2x1bW4gIT0gLTEpIHsKLSAgICAgICAg
VUNoYXIgYyA9IGNvZGVJbkxpbmVbbmV4dENvbHVtbiArIDFdOwotICAgICAgICBpZiAoYyA9PSAn
ICcgfHwgYyA9PSAnXHQnKQotICAgICAgICAgICAgbmV4dENvbHVtbiArPSAxOwotICAgICAgICBt
X2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSBuZXh0Q29sdW1uICsgMTsK
LSAgICB9IGVsc2UKLSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVt
YmVyID0gMDsKLX0KLQotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRw
dHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKK2Jvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFtX2JyZWFrcG9pbnRzQWN0aXZh
dGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3Vy
Y2VJRCk7Ci0gICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpbnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGlu
ZS56ZXJvQmFzZWRJbnQoKTsKICAgICBpbnQgY29sdW1uTnVtYmVyID0gcG9zaXRpb24ubV9jb2x1
bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgaWYgKGxpbmVOdW1iZXIgPCAwIHx8IGNvbHVtbk51bWJl
ciA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGJvb2wgbmV3TGluZSA9IGZhbHNl
OworICAgIGlmIChsaW5lTnVtYmVyICE9IG1fbGFzdEV4ZWN1dGVkTGluZSkgeworICAgICAgICBu
ZXdMaW5lID0gdHJ1ZTsKKyAgICAgICAgbV9sYXN0RXhlY3V0ZWRMaW5lID0gbGluZU51bWJlcjsK
KyAgICB9CisKKyAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7CisgICAgaWYgKGl0ID09
IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5z
ZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CiAgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNv
bmQuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCw3ICsxNTgsMTAgQEAgYm9v
bCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICB1bnNpZ25lZCBpOwogICAgIGZvciAoaSA9IDA7IGkg
PCBicmVha3NDb3VudDsgaSsrKSB7CiAgICAgICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0
b3IuYXQoaSkubGluZU51bWJlcjsKLSAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5l
KSB7CisgICAgICAgIGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5O
dW1iZXI7CisgICAgICAgIC8vIFNpbmNlIGZyb250ZW5kIHRydW5jYXRlcyB0aGUgaW5kZW50LCBz
byB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIGEgbGluZSBtdXN0IG1hdGNoZXMgdGhlIGJyZWFrcG9p
bnQgKGxpbmUsIDApLgorICAgICAgICBpZiAoKG5ld0xpbmUgJiYgbGluZU51bWJlciA9PSBicmVh
a0xpbmUgJiYgIWJyZWFrQ29sdW1uKQorICAgICAgICAgICAgfHwgKGxpbmVOdW1iZXIgPT0gYnJl
YWtMaW5lICYmIGNvbHVtbk51bWJlciA9PSBicmVha0NvbHVtbikpIHsKICAgICAgICAgICAgIGhp
dCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDMwLDYgKzQwMywx
MCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVl
ZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJgogewogICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENh
bGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwg
bV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKKyAgICBpZiAobV9s
YXN0RXhlY3V0ZWRTb3VyY2VJZCAhPSBzb3VyY2VJRCkgeworICAgICAgICBtX2xhc3RFeGVjdXRl
ZExpbmUgPSAtMTsKKyAgICAgICAgbV9sYXN0RXhlY3V0ZWRTb3VyY2VJZCA9IHNvdXJjZUlEOwor
ICAgIH0KICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxP
YmplY3QoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCmluZGV4IDkzNTkxNGM2YjQxOGRjM2ZhMzYzMzc4NzQyNjI1NzVhNWFhZDg1ZDMu
LmVhNjBlZWQ2MGE4ZGMyOTFhNTc5N2I0N2FjNTFkMTVjMGI0Y2JkMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTE0LDcgKzExNCw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9i
amVjdCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9i
amVjdCopID0gMDsKIAotICAgIGJvb2wgaGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwg
Y29uc3QgVGV4dFBvc2l0aW9uJikgY29uc3Q7CisgICAgYm9vbCBoYXNCcmVha3BvaW50KGludHB0
cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hG
dW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjaywgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKGNvbnN0
IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxs
YmFjayk7CkBAIC0xMzgsOSArMTM4LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKIAotCi0gICAgdm9p
ZCB1cGRhdGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24oaW50cHRyX3QsIGludCk7Ci0KICAgICB0
eXBlZGVmIFZlY3RvcjxTY3JpcHRCcmVha3BvaW50PiBCcmVha3BvaW50c0luTGluZTsKICAgICB0
eXBlZGVmIEhhc2hNYXA8bG9uZywgQnJlYWtwb2ludHNJbkxpbmU+IExpbmVUb0JyZWFrcG9pbnRN
YXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBT
b3VyY2VJZFRvQnJlYWtwb2ludHNNYXA7CkBAIC0xNTYsOSArMTUzLDggQEAgcHJvdGVjdGVkOgog
ICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAg
ICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKIAotICAgIFZlY3Rv
cjxTdHJpbmc+IG1fY3VycmVudFNvdXJjZUNvZGU7Ci0gICAgaW50cHRyX3QgbV9jdXJyZW50U291
cmNlSUQ7Ci0gICAgU2NyaXB0QnJlYWtwb2ludCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbjsK
KyAgICBpbnQgbV9sYXN0RXhlY3V0ZWRMaW5lOworICAgIGludHB0cl90IG1fbGFzdEV4ZWN1dGVk
U291cmNlSWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166157</attachid>
            <date>2012-09-27 23:55:51 -0700</date>
            <delta_ts>2012-10-07 21:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93473-20120928145506.patch</filename>
            <type>text/plain</type>
            <size>6400</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI3YzBjNTZhNjljMTlk
Y2M0ZTNlMTc5Y2IzNzcxY2VkMTdlMDcxYS4uMDY4MmY4MjkyZTUyNmRjYzUzZWVkMDFlMmQ5OGFl
NTgxNWFhMmNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTI3ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogVGhlIGZyb250LWVuZCBzaG91bGQgcHJvdmlkZSB0aGUgcG9zaXRpb24gaW4gb3Jp
Z2luYWwgc291cmNlIGZpbGUgd2hlbiBzZXQgYSBicmVha3BvaW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIGZyb250ZW5kIHRydW5jYXRlcyB0
aGUgaW5kZW50LCB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIGEgbGluZSBtdXN0IG1hdGNoIHRoZSBi
cmVha3BvaW50IChsaW5lLCAwKS4KKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoIEpTQyBkZWJ1Z2dl
ciBjYW4gc3VwcG9ydCBib3RoIG5vcm1hbCBhbmQgIlByZXR0eSBQcmludCIgbW9kZS4KKworICAg
ICAgICBObyBuZXcgdGVzdCBjYXNlLiBUaGlzIHBhdGNoIGNhbiBiZSB2ZXJpZmllZCB3aXRoIGNh
c2VzIGluICJMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvIi4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVy
KToKKwogMjAxMi0wOS0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTgyMy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBhYTYw
YTJkZDhhMzU4YmZjNWRlMTFkM2IwYzQ3MGUyZWI5MTRkYmExLi4yNThlZmNhNTJhOTkxMGFjNzYy
ODEyMjljMGJhZDBjMmZlYTRmMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC02MCw2ICs2MCw4IEBAIFNjcmlwdERlYnVnU2Vy
dmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgLCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKHRy
dWUpCiAgICAgLCBtX3BhdXNlT25DYWxsRnJhbWUoMCkKICAgICAsIG1fcmVjb21waWxlVGltZXIo
dGhpcywgJlNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucykKKyAgICAs
IG1fbGFzdEV4ZWN1dGVkTGluZSgtMSkKKyAgICAsIG1fbGFzdEV4ZWN1dGVkU291cmNlSWQoLTEp
CiB7CiB9CiAKQEAgLTEyNiw0NCArMTI4LDYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVt
b3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB9CiB9CiAKLXZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmUpCi17Ci0gICAgaWYgKGxpbmUgPCAwKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBTb3VyY2VQcm92aWRlciogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxT
b3VyY2VQcm92aWRlcio+KHNvdXJjZUlEKTsKLQotICAgIGlmIChtX2N1cnJlbnRTb3VyY2VJRCAh
PSBzb3VyY2VJRCkgewotICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUgPSBzb3VyY2Ut
PnNvdXJjZSgpOwotICAgICAgICBtX2N1cnJlbnRTb3VyY2VDb2RlLmNsZWFyKCk7Ci0gICAgICAg
IHNvdXJjZUNvZGUuc3BsaXQoIlxuIiwgdHJ1ZSwgbV9jdXJyZW50U291cmNlQ29kZSk7Ci0gICAg
ICAgIG1fY3VycmVudFNvdXJjZUlEID0gc291cmNlSUQ7Ci0gICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSAwOwotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQ
b3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOwotICAgIH0KLQotICAgIGlmIChsaW5lICE9IG1fY3Vy
cmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIpIHsKLSAgICAgICAgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IGxpbmU7Ci0gICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpbnQgc3RhcnRMaW5lID0gc291cmNlLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9C
YXNlZEludCgpOwotICAgIGlmICgobV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJl
ciAtIHN0YXJ0TGluZSAtIDEpID49IHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U291cmNlQ29k
ZS5zaXplKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgU3RyaW5nJiBjb2RlSW5MaW5l
ID0gbV9jdXJyZW50U291cmNlQ29kZVttX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVt
YmVyIC0gc3RhcnRMaW5lIC0gMV07Ci0gICAgaWYgKGNvZGVJbkxpbmUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgaW50IG5leHRDb2x1bW4gPSBjb2RlSW5MaW5lLmZpbmQoIjsiLCBt
X2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIpOwotICAgIGlmIChuZXh0Q29s
dW1uICE9IC0xKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBjb2RlSW5MaW5lW25leHRDb2x1bW4gKyAx
XTsKLSAgICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKLSAgICAgICAgICAgIG5leHRD
b2x1bW4gKz0gMTsKLSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVt
YmVyID0gbmV4dENvbHVtbiArIDE7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7Ci19Ci0KIGJvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYg
cG9zaXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKQpAQCAt
MTg4LDcgKzE1MiwxMCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGlu
dHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvcwogICAgIHVuc2lnbmVkIGk7
CiAgICAgZm9yIChpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKICAgICAgICAgaW50IGJy
ZWFrTGluZSA9IGJyZWFrc1ZlY3Rvci5hdChpKS5saW5lTnVtYmVyOwotICAgICAgICBpZiAobGlu
ZU51bWJlciA9PSBicmVha0xpbmUpIHsKKyAgICAgICAgaW50IGJyZWFrQ29sdW1uID0gYnJlYWtz
VmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlcjsKKyAgICAgICAgLy8gU2luY2UgZnJvbnRlbmQgdHJ1
bmNhdGVzIHRoZSBpbmRlbnQsIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gYSBsaW5lIG11c3QgbWF0
Y2ggdGhlIGJyZWFrcG9pbnQgKGxpbmUsMCkuCisgICAgICAgIGlmICgobGluZU51bWJlciAhPSBt
X2xhc3RFeGVjdXRlZExpbmUgJiYgbGluZU51bWJlciA9PSBicmVha0xpbmUgJiYgIWJyZWFrQ29s
dW1uKQorICAgICAgICAgICAgfHwgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNvbHVtbk51
bWJlciA9PSBicmVha0NvbHVtbikpIHsKICAgICAgICAgICAgIGhpdCA9IHRydWU7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDMwLDYgKzM5NywxMCBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJgogewogICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jh
c2VkSW50KGNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3Jp
cHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1l
LCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKKyAgICBpZiAobV9sYXN0RXhlY3V0ZWRTb3VyY2VJ
ZCAhPSBzb3VyY2VJRCkgeworICAgICAgICBtX2xhc3RFeGVjdXRlZExpbmUgPSAtMTsKKyAgICAg
ICAgbV9sYXN0RXhlY3V0ZWRTb3VyY2VJZCA9IHNvdXJjZUlEOworICAgIH0KICAgICBwYXVzZUlm
TmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CiAKQEAg
LTQ1NSw2ICs0MjYsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpT
R2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQogICAgIGJvb2wgcGF1c2VOb3cgPSBt
X3BhdXNlT25OZXh0U3RhdGVtZW50OwogICAgIHBhdXNlTm93IHw9IChtX3BhdXNlT25DYWxsRnJh
bWUgPT0gbV9jdXJyZW50Q2FsbEZyYW1lKTsKICAgICBwYXVzZU5vdyB8PSBoYXNCcmVha3BvaW50
KG1fY3VycmVudENhbGxGcmFtZS0+c291cmNlSUQoKSwgbV9jdXJyZW50Q2FsbEZyYW1lLT5wb3Np
dGlvbigpKTsKKyAgICBtX2xhc3RFeGVjdXRlZExpbmUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnBv
c2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOwogICAgIGlmICghcGF1c2VOb3cpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmgKaW5kZXggMDg5NDEwNmFhMTkwNDA4MDFlZGUzMjA0MDE3OWE2YTJmMzBkNTgyNy4u
ZjI0NTI5NjRhOTA1NWU0MTQ3NGZmMDRkMjFjMDk2OTliNTBkNDIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMzcsOSArMTM3LDYg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGlu
dCBjb2x1bW5OdW1iZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5v
LCBpbnQgY29sdW1uTnVtYmVyKTsKIAotCi0gICAgdm9pZCB1cGRhdGVDdXJyZW50U3RhdGVtZW50
UG9zaXRpb24oaW50cHRyX3QsIGludCk7Ci0KICAgICB0eXBlZGVmIFZlY3RvcjxTY3JpcHRCcmVh
a3BvaW50PiBCcmVha3BvaW50c0luTGluZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywgQnJl
YWtwb2ludHNJbkxpbmU+IExpbmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA7
CkBAIC0xNTUsOSArMTUyLDggQEAgcHJvdGVjdGVkOgogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50
c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZl
cj4gbV9yZWNvbXBpbGVUaW1lcjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG1fY3VycmVudFNvdXJj
ZUNvZGU7Ci0gICAgaW50cHRyX3QgbV9jdXJyZW50U291cmNlSUQ7Ci0gICAgU2NyaXB0QnJlYWtw
b2ludCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbjsKKyAgICBpbnQgbV9sYXN0RXhlY3V0ZWRM
aW5lOworICAgIGludHB0cl90IG1fbGFzdEV4ZWN1dGVkU291cmNlSWQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>