<?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>85028</bug_id>
          
          <creation_ts>2012-04-26 20:24:28 -0700</creation_ts>
          <short_desc>[BlackBerry] Cookies should be checked during parsing to improve performance.</short_desc>
          <delta_ts>2012-05-16 04:42:35 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jason Liu">jasonliuwebkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>joenotcharles</cc>
    
    <cc>kpiascik</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>611214</commentid>
    <comment_count>0</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-04-26 20:24:28 -0700</bug_when>
    <thetext>If a cookie coming in has a domain with domain=&quot;opera.com, the domain of the
cookie will be saved in memory (and database) as &apos;&quot;opera.com&apos;. The cookie will
never be used because &apos;&quot;&apos; is never used in a request domain.

The expected behavior is to throw out the cookie immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612123</commentid>
    <comment_count>1</comment_count>
      <attachid>139330</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-04-27 20:39:14 -0700</bug_when>
    <thetext>Created attachment 139330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612176</commentid>
    <comment_count>2</comment_count>
      <attachid>139342</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-04-27 23:39:40 -0700</bug_when>
    <thetext>Created attachment 139342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612632</commentid>
    <comment_count>3</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-04-30 07:52:15 -0700</bug_when>
    <thetext>The approach looks good.

size_t dotPosition = parsedValue.find(&quot;.&quot;, 1);

That looks wrong, though. The original code skipped this check if the domain did not start with a dot.  So originally we had (where x is any character that isn&apos;t a dot):

.xxxxx - accepted
.xx.xx - accepted
xxxxxx - REJECTED
xxx.xx - accepted

This is the same as searching for the dot from position 0, not 1.

Also we have lost this check:

162  // ignore domain security if protocol doesn&apos;t have domains
163  if (shouldIgnoreDomain(cookie-&gt;protocol()))
164      return false;
165 
166  // Reject Cookie if domain is empty
167  if (!cookie-&gt;domain().length())
168      return true; 

We should check this in the parser, after the switch statement when both protocol and domain have been read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616504</commentid>
    <comment_count>4</comment_count>
      <attachid>139342</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-04 12:14:17 -0700</bug_when>
    <thetext>Comment on attachment 139342
Patch

Based on Joe&apos;s comments, Jason needs to look into that, so r- for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617267</commentid>
    <comment_count>5</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-05-06 18:52:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; The approach looks good.
&gt; 
&gt; size_t dotPosition = parsedValue.find(&quot;.&quot;, 1);
&gt; 
&gt; That looks wrong, though. The original code skipped this check if the domain did not start with a dot.  So originally we had (where x is any character that isn&apos;t a dot):
&gt; 
&gt; .xxxxx - accepted
&gt; .xx.xx - accepted
&gt; xxxxxx - REJECTED
&gt; xxx.xx - accepted
&gt; 
&gt; This is the same as searching for the dot from position 0, not 1.

We check if the domain contains an embedded dot. 
And originally we had:
 .xxxxx - rejected   not accepted
 .xx.xx - accepted
 xxxxxx - REJECTED
 xxx.xx - accepted
So this is the same as searching for the dot from 1, not 0.

&gt; Also we have lost this check:
&gt; 
&gt; 162  // ignore domain security if protocol doesn&apos;t have domains
&gt; 163  if (shouldIgnoreDomain(cookie-&gt;protocol()))
&gt; 164      return false;
&gt; 165
If the protocol doesn&apos;t have domains, the code path won&apos;t contain domain parsing. So drop this &quot;if&quot; check in parsing.
 
&gt; 166  // Reject Cookie if domain is empty
&gt; 167  if (!cookie-&gt;domain().length())
&gt; 168      return true; 
&gt; 

size_t dotPosition = realDomain.find(&quot;.&quot;, 1); This is including length check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617609</commentid>
    <comment_count>6</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-05-07 08:16:31 -0700</bug_when>
    <thetext>In the original code:

if (cookie-&gt;domain()[0] == &apos;.&apos;) {
    // Check if the domain contains an embedded dot.
    size_t dotPosition = cookie-&gt;domain().find(&quot;.&quot;, 1);
    if (dotPosition == notFound || dotPosition == cookie-&gt;domain().length()) {
        LOG_ERROR(&quot;Cookie %s is rejected because its domain does not contain an embedded dot.\n&quot;, cookie-&gt;toString().utf8().data());
        return true;
    }
}

// The request host should domain match the Domain attribute.
// Domain string starts with a dot, so a.b.com should domain match .a.b.com.
// add a &quot;.&quot; at beginning of host name, because it can handle many cases such as
// a.b.com matches b.com, a.b.com matches .B.com and a.b.com matches .A.b.Com
// and so on.
String hostDomainName = url.host();
hostDomainName = hostDomainName.startsWith(&quot;.&quot;) ? hostDomainName : &quot;.&quot; + hostDomainName;
if (!hostDomainName.endsWith(cookie-&gt;domain(), false)) {
    LOG_ERROR(&quot;Cookie %s is rejected because its domain does not domain match the URL %s\n&quot;, cookie-&gt;toString().utf8().data(), url.string().utf8().data());
    return true;
}

// We should check for an embedded dot in the portion of string in the host not in the domain
// but to match firefox behaviour we do not.

return false; 


So for .xxxxx, cookie-&gt;domain()[0] is &apos;.&apos; and it skips the first &quot;if&quot; statement entirely.  Then the second &quot;if&quot; statement looks only at url.host() so the dot position in the domain doesn&apos;t matter.  Then it returns false, meaning &quot;do not reject this cookie&quot;.

Am I reading that wrong?


The new code does:

// Check if the domain contains an embedded dot.
size_t dotPosition = parsedValue.find(&quot;.&quot;, 1);
if (dotPosition == notFound || dotPosition == parsedValue.length())
    LOG_AND_DELETE(&quot;Invalid cookie %s (domain): it does not contain an embedded dot&quot;, cookie.ascii().data()); 

So for &quot;.xxxxx&quot;, dotPosition is notFound since it&apos;s starting at position 1 and not position 0.  Which means it marks the cookie invalid and deletes it.


I&apos;m assuming the old code is correct.  If not, we should file a different PR to fix the issue since this is a performance patch and should not cause any behaviour differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618435</commentid>
    <comment_count>7</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-05-08 02:27:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; In the original code:
&gt; 
&gt; if (cookie-&gt;domain()[0] == &apos;.&apos;) {
&gt;     // Check if the domain contains an embedded dot.
&gt;     size_t dotPosition = cookie-&gt;domain().find(&quot;.&quot;, 1);
&gt;     if (dotPosition == notFound || dotPosition == cookie-&gt;domain().length()) {
&gt;         LOG_ERROR(&quot;Cookie %s is rejected because its domain does not contain an embedded dot.\n&quot;, cookie-&gt;toString().utf8().data());
&gt;         return true;
&gt;     }
&gt; }
&gt; 
&gt; // The request host should domain match the Domain attribute.
&gt; // Domain string starts with a dot, so a.b.com should domain match .a.b.com.
&gt; // add a &quot;.&quot; at beginning of host name, because it can handle many cases such as
&gt; // a.b.com matches b.com, a.b.com matches .B.com and a.b.com matches .A.b.Com
&gt; // and so on.
&gt; String hostDomainName = url.host();
&gt; hostDomainName = hostDomainName.startsWith(&quot;.&quot;) ? hostDomainName : &quot;.&quot; + hostDomainName;
&gt; if (!hostDomainName.endsWith(cookie-&gt;domain(), false)) {
&gt;     LOG_ERROR(&quot;Cookie %s is rejected because its domain does not domain match the URL %s\n&quot;, cookie-&gt;toString().utf8().data(), url.string().utf8().data());
&gt;     return true;
&gt; }
&gt; 
&gt; // We should check for an embedded dot in the portion of string in the host not in the domain
&gt; // but to match firefox behaviour we do not.
&gt; 
&gt; return false; 
&gt; 
&gt; 
&gt; So for .xxxxx, cookie-&gt;domain()[0] is &apos;.&apos; and it skips the first &quot;if&quot; statement entirely.  Then the second &quot;if&quot; statement looks only at url.host() so the dot position in the domain doesn&apos;t matter.  Then it returns false, meaning &quot;do not reject this cookie&quot;.
&gt; 
&gt; Am I reading that wrong?
&gt; 
In the original code:
if (cookie-&gt;domain()[0] == &apos;.&apos;) {

For .xxxxx, it won&apos;t skip this if statement.
it will go into this if branch and rejected by the following codes.

// Check if the domain contains an embedded dot.
size_t dotPosition = cookie-&gt;domain().find(&quot;.&quot;, 1);
if (dotPosition == notFound || dotPosition == cookie-&gt;domain().length())  {
   LOG_ERROR(&quot;Cookie %s is rejected because its domain does not contain an embedded dot.\n&quot;, cookie-&gt;toString().utf8().data());
   return true;
}

So there is no change in behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618490</commentid>
    <comment_count>8</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-05-08 07:01:12 -0700</bug_when>
    <thetext>Wow.  How did I read that so wrong?

Ok, so the new code has the opposite problem.  With the old code:

.xxxxx - REJECTED
.xx.xx - accepted
xxxxxx - accepted
xxx.xx - accepted

With the new code:

.xxxxx - REJECTED
.xx.xx - accepted
xxxxxx - REJECTED
xxx.xx - accepted

The old code only did the check when the domain started with a dot, but the new code always does it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619084</commentid>
    <comment_count>9</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-05-08 18:58:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Wow.  How did I read that so wrong?
&gt; 
&gt; Ok, so the new code has the opposite problem.  With the old code:
&gt; 
&gt; .xxxxx - REJECTED
&gt; .xx.xx - accepted
&gt; xxxxxx - accepted
&gt; xxx.xx - accepted
&gt; 
&gt; With the new code:
&gt; 
&gt; .xxxxx - REJECTED
&gt; .xx.xx - accepted
&gt; xxxxxx - REJECTED
&gt; xxx.xx - accepted
&gt; 
&gt; The old code only did the check when the domain started with a dot, but the new code always does it.

(In reply to comment #8)
&gt; Wow.  How did I read that so wrong?
&gt; 
&gt; Ok, so the new code has the opposite problem.  With the old code:
&gt; 
&gt; .xxxxx - REJECTED
&gt; .xx.xx - accepted
&gt; xxxxxx - accepted
&gt; xxx.xx - accepted
&gt; 
&gt; With the new code:
&gt; 
&gt; .xxxxx - REJECTED
&gt; .xx.xx - accepted
&gt; xxxxxx - REJECTED
&gt; xxx.xx - accepted
&gt; 
&gt; The old code only did the check when the domain started with a dot, but the new code always does it.

CookieParser::parseOneCookie
{
...
case &apos;D&apos;:
case &apos;d&apos; : {
...
// If the domain does not start with a dot, add one for security checks, 	
// For example: ab.c.com dose not domain match b.c.com;
String realDomain = parsedValue[0] == &apos;.&apos; ? parsedValue : &quot;.&quot; + parsedValue;
...
}

These codes will add &apos;.&apos; for xxxx.
So xxxx becomes .xxxx before checking in the old code. And then rejected.

The new code will check xxxx directly and drop it.

So there is no change in behaviour for xxxx.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621345</commentid>
    <comment_count>10</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-05-11 00:26:13 -0700</bug_when>
    <thetext>Would you help me review it again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621688</commentid>
    <comment_count>11</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-05-11 09:17:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Would you help me review it again?

In case anyone was waiting for to weigh in, Jason&apos;s convinced me.  The actual reviewer should double-check, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622395</commentid>
    <comment_count>12</comment_count>
      <attachid>139342</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-05-12 11:14:45 -0700</bug_when>
    <thetext>Comment on attachment 139342
Patch

I&apos;m ok with it in principle but haven&apos;t reviewed it in detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623863</commentid>
    <comment_count>13</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-05-15 03:16:17 -0700</bug_when>
    <thetext>Would you approve this patch? :)
And this is blocking my another cookie patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625023</commentid>
    <comment_count>14</comment_count>
      <attachid>139342</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 23:37:18 -0700</bug_when>
    <thetext>Comment on attachment 139342
Patch

Rejecting attachment 139342 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ED at 138.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/platform/blackberry/CookieManager.cpp.rej
patching file Source/WebCore/platform/blackberry/CookieManager.h
patching file Source/WebCore/platform/blackberry/CookieParser.cpp
Hunk #1 succeeded at 230 (offset 5 lines).
Hunk #2 succeeded at 249 (offset 5 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;George Sta...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12709325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625204</commentid>
    <comment_count>15</comment_count>
      <attachid>142209</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2012-05-16 02:57:41 -0700</bug_when>
    <thetext>Created attachment 142209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625273</commentid>
    <comment_count>16</comment_count>
      <attachid>142209</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 04:42:29 -0700</bug_when>
    <thetext>Comment on attachment 142209
Patch

Clearing flags on attachment: 142209

Committed r117261: &lt;http://trac.webkit.org/changeset/117261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625274</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 04:42:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139330</attachid>
            <date>2012-04-27 20:39:14 -0700</date>
            <delta_ts>2012-04-27 23:39:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85028-20120428113911.patch</filename>
            <type>text/plain</type>
            <size>8737</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEzZTkxZDMwZDYwNTFm
ZmQ4MGQzNDRhYTVkMGExNDcxYzJkZWIyMi4uMWIwYTQ4MWNhY2ZmZTM3NmRiNmNjOTI1ZDg0Njhm
Mzk3ZTg5MzVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTI3ICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBDb29raWVzIHNob3VsZCBiZSBjaGVja2VkIGR1cmluZyBwYXJzaW5nIHRvIGltcHJvdmUg
cGVyZm9ybWFuY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHNob3VsZG4ndCB3YXN0ZSB0aW1lIGFuZCBtZW1lcnkgZm9yIGludmFsaWQgY29va2ll
cy4gSXQgaXMgYmV0dGVyIHRvIGRyb3AgdGhlbSBkdXJpbmcgcGFyc2luZy4KKyAgICAgICAgV2Ug
c2hvdWxkbid0IGNoZWNrIHRoZSBkZWZhdWx0IGRvbWFpbiBzaW5jZSBpdCBpcyBzZXQgd2l0aCBo
b3N0LiBTbyB3ZSBvbmx5IGNoZWNrIGRvbWFpbnMgd2hpY2ggYXJlIHBhcnNlZAorICAgICAgICBm
cm9tIHJlc3BvbnNlIGhlYWRlcnMuCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMuIE5v
IGZ1bmN0aW9uYWxpdHkgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9D
b29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6OnNldENv
b2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUpOgorCiAyMDEyLTA0LTI2ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI5
NDQ5Nyk6IFByZXNzaW5nIENvbW1hbmQrQSB3aGVuIGlubGluZSAoTWFya2VkIFRleHQpIGlzIG5v
dCBlbXB0eSB3aWxsIGNsZWFuIHdob2xlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGJmNjNiNjE2OTVi
Y2ZmYTk4NjZmN2Y0MzFlZjU4NzI4MTYzNTk1ZTMuLjZhOTlkMmQ5YTY0OTlkZjYyNjcxMzlmOWY0
NjQzNDlkZDczODlkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTM4LDYxICsxMzgsOSBAQCB2b2lkIENvb2tp
ZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29raWVzID0gcGFyc2VyLnBhcnNlKHZhbHVl
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBQYXJzZWRDb29raWUqIGNvb2tpZSA9IGNvb2tpZXNbaV07Ci0gICAgICAgIGlmICgh
c2hvdWxkUmVqZWN0Rm9yU2VjdXJpdHlSZWFzb24oY29va2llLCB1cmwpKSB7Ci0gICAgICAgICAg
ICBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBE
b05vdFJlbW92ZUZyb21CYWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOwotICAg
ICAgICAgICAgY2hlY2tBbmRUcmVhdENvb2tpZShjb29raWUsIHRyZWF0bWVudCk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgZGVsZXRlIGNvb2tpZTsKLSAgICB9Ci19Ci0KLWJvb2wgQ29v
a2llTWFuYWdlcjo6c2hvdWxkUmVqZWN0Rm9yU2VjdXJpdHlSZWFzb24oY29uc3QgUGFyc2VkQ29v
a2llKiBjb29raWUsIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICAvLyBXZSBoYXZlIHRvIGRpc2Fi
bGUgdGhlIGZvbGxvd2luZyBjaGVjayBiZWNhdXNlIHNpdGVzIGxpa2UgRmFjZWJvb2sgYW5kCi0g
ICAgLy8gR21haWwgY3VycmVudGx5IGRvIG5vdCBmb2xsb3cgdGhlIHNwZWMuCi0jaWYgMAotICAg
IC8vIENoZWNrIGlmIHBhdGggYXR0cmlidXRlIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0IFVS
SS4KLSAgICBpZiAoIXVybC5wYXRoKCkuc3RhcnRzV2l0aChjb29raWUtPnBhdGgoKSkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJDb29raWUgJXMgaXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgcGF0aCBk
b2VzIG5vdCBtYXRoIHRoZSBVUkwgJXNcbiIsIGNvb2tpZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSNlbmRpZgotCi0gICAgLy8gaWdub3JlIGRvbWFpbiBzZWN1cml0eSBpZiBwcm90b2Nv
bCBkb2Vzbid0IGhhdmUgZG9tYWlucwotICAgIGlmIChzaG91bGRJZ25vcmVEb21haW4oY29va2ll
LT5wcm90b2NvbCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gUmVqZWN0IENv
b2tpZSBpZiBkb21haW4gaXMgZW1wdHkKLSAgICBpZiAoIWNvb2tpZS0+ZG9tYWluKCkubGVuZ3Ro
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgYW4gZXhwbGljaXRseSBzcGVj
aWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIgYWdlbnQgc3Vw
cGxpZXMuIChSRkMgMjk2NSAzLjIuMikKLSAgICAvLyBEb21haW46IERlZmF1bHRzIHRvIHRoZSBl
ZmZlY3RpdmUgcmVxdWVzdC1ob3N0LiBUaGVyZSBpcyBubyBkb3QgYXQgdGhlIGJlZ2lubmluZyBv
ZiByZXF1ZXN0LWhvc3QuIChSRkMgMjk2NSAzLjMuMSkKLSAgICBpZiAoY29va2llLT5kb21haW4o
KVswXSA9PSAnLicpIHsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRvbWFpbiBjb250YWlucyBh
biBlbWJlZGRlZCBkb3QuCi0gICAgICAgIHNpemVfdCBkb3RQb3NpdGlvbiA9IGNvb2tpZS0+ZG9t
YWluKCkuZmluZCgiLiIsIDEpOwotICAgICAgICBpZiAoZG90UG9zaXRpb24gPT0gbm90Rm91bmQg
fHwgZG90UG9zaXRpb24gPT0gY29va2llLT5kb21haW4oKS5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJDb29raWUgJXMgaXMgcmVqZWN0ZWQgYmVjYXVzZSBpdHMgZG9tYWluIGRv
ZXMgbm90IGNvbnRhaW4gYW4gZW1iZWRkZWQgZG90LlxuIiwgY29va2llLT50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAg
ICAgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSB0cmVhdG1lbnQgPSBtX3ByaXZhdGVNb2RlID8g
RG9Ob3RSZW1vdmVGcm9tQmFja2luZ1N0b3JlIDogUmVtb3ZlRnJvbUJhY2tpbmdTdG9yZTsKKyAg
ICAgICAgY2hlY2tBbmRUcmVhdENvb2tpZShjb29raWVzW2ldLCB0cmVhdG1lbnQpOwogICAgIH0K
LQotICAgIC8vIFRoZSByZXF1ZXN0IGhvc3Qgc2hvdWxkIGRvbWFpbiBtYXRjaCB0aGUgRG9tYWlu
IGF0dHJpYnV0ZS4KLSAgICAvLyBEb21haW4gc3RyaW5nIHN0YXJ0cyB3aXRoIGEgZG90LCBzbyBh
LmIuY29tIHNob3VsZCBkb21haW4gbWF0Y2ggLmEuYi5jb20uCi0gICAgLy8gYWRkIGEgIi4iIGF0
IGJlZ2lubmluZyBvZiBob3N0IG5hbWUsIGJlY2F1c2UgaXQgY2FuIGhhbmRsZSBtYW55IGNhc2Vz
IHN1Y2ggYXMKLSAgICAvLyBhLmIuY29tIG1hdGNoZXMgYi5jb20sIGEuYi5jb20gbWF0Y2hlcyAu
Qi5jb20gYW5kIGEuYi5jb20gbWF0Y2hlcyAuQS5iLkNvbQotICAgIC8vIGFuZCBzbyBvbi4KLSAg
ICBTdHJpbmcgaG9zdERvbWFpbk5hbWUgPSB1cmwuaG9zdCgpOwotICAgIGhvc3REb21haW5OYW1l
ID0gaG9zdERvbWFpbk5hbWUuc3RhcnRzV2l0aCgiLiIpID8gaG9zdERvbWFpbk5hbWUgOiAiLiIg
KyBob3N0RG9tYWluTmFtZTsKLSAgICBpZiAoIWhvc3REb21haW5OYW1lLmVuZHNXaXRoKGNvb2tp
ZS0+ZG9tYWluKCksIGZhbHNlKSkgewotICAgICAgICBMT0dfRVJST1IoIkNvb2tpZSAlcyBpcyBy
ZWplY3RlZCBiZWNhdXNlIGl0cyBkb21haW4gZG9lcyBub3QgZG9tYWluIG1hdGNoIHRoZSBVUkwg
JXNcbiIsIGNvb2tpZS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAvLyBXZSBzaG91
bGQgY2hlY2sgZm9yIGFuIGVtYmVkZGVkIGRvdCBpbiB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgaW4g
dGhlIGhvc3Qgbm90IGluIHRoZSBkb21haW4KLSAgICAvLyBidXQgdG8gbWF0Y2ggZmlyZWZveCBi
ZWhhdmlvdXIgd2UgZG8gbm90LgotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiBTdHJpbmcgQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llKGNvbnN0IEtVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRl
cikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29r
aWVNYW5hZ2VyLmgKaW5kZXggOTA0NTUxZWJhMzc4MTkwM2U4NWZhNGZhYWUyMDMyMDA1OTlmNWM0
Ny4uMDYxNGU3ZDMzM2Y1ZTk4NTBjYjNiMzUyMjIzMzlmMzYwNDFlZWU5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKQEAgLTEx
OSw4ICsxMTksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjaGVja0FuZFRyZWF0Q29va2llKFBh
cnNlZENvb2tpZSosIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kpOwogCi0gICAgYm9vbCBzaG91
bGRSZWplY3RGb3JTZWN1cml0eVJlYXNvbihjb25zdCBQYXJzZWRDb29raWUqLCBjb25zdCBLVVJM
Jik7Ci0KICAgICB2b2lkIGFkZENvb2tpZVRvTWFwKENvb2tpZU1hcCogdGFyZ2V0TWFwLCBQYXJz
ZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBwb3N0
VG9CYWNraW5nU3RvcmUpOwogCiAgICAgQ29va2llTWFwKiBmaW5kT3JDcmVhdGVDb29raWVNYXAo
Q29va2llTWFwKiBwcm90b2NvbE1hcCwgY29uc3QgU3RyaW5nJiBkb21haW4sIGJvb2wgZmluZE9u
bHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29r
aWVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQ
YXJzZXIuY3BwCmluZGV4IGIyMTc3YzY2NWQxYmM3NmYyMTdlNjA2MDMxMzJhZThlOGYzOGYwNTQu
LmVmNmMxZmFjMzYyZTc2NjAwYmQ3YmI2NWZlMTI0MTFiOTU2ZTcxNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAKQEAgLTIy
NSw2ICsyMjUsMTUgQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2ll
KGNvbnN0IFN0cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwKICAgICAgICAgICAgICAgICAv
LyBUaGUgcGF0aCBhdHRyaWJ1dGUgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwZXJjZW50LWVuY29k
ZWQgY2hhcmFjdGVycy4gRm9ydHVuYXRlbHkKICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBh
cmUgbm8gcGVyY2VudC1lbmNvZGVkIGNoYXJhY3RlcnMsIGRlY29kaW5nIHRoZSB1cmwgaXMgYSBu
by1vcC4KICAgICAgICAgICAgICAgICByZXMtPnNldFBhdGgoZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKHBhcnNlZFZhbHVlKSk7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRpc2Fi
bGUgdGhlIGZvbGxvd2luZyBjaGVjayBiZWNhdXNlIHNpdGVzIGxpa2UgRmFjZWJvb2sgYW5kCisg
ICAgICAgICAgICAgICAgLy8gR21haWwgY3VycmVudGx5IGRvIG5vdCBmb2xsb3cgdGhlIHNwZWMu
CisjaWYgMAorICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHBhdGggYXR0cmlidXRlIGlzIGEg
cHJlZml4IG9mIHRoZSByZXF1ZXN0IFVSSS4KKyAgICAgICAgICAgICAgICBpZiAoIW1fZGVmYXVs
dENvb2tpZVVSTC5wYXRoKCkuc3RhcnRzV2l0aChyZXMtPnBhdGgoKSkpCisgICAgICAgICAgICAg
ICAgICAgIExPR19BTkRfREVMRVRFKCJJbnZhbGlkIGNvb2tpZSAlcyAocGF0aCk6IGl0IGRvZXMg
bm90IG1hdGggdGhlIFVSTCIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CisjZW5kaWYKKwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgTE9HX0FORF9ERUxFVEUoIkludmFsaWQg
Y29va2llICVzIChwYXRoKSIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTIzNSw5ICsyNDQsMjggQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6OnBh
cnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwKICAgICAg
ICAgICAgIGlmIChsZW5ndGggPj0gNiAmJiBjb29raWUuZmluZCgib21haW4iLCB0b2tlblN0YXJ0
U3ZnICsgMSwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVlLmxlbmd0
aCgpID4gMSAmJiBwYXJzZWRWYWx1ZVswXSA9PSAnIicgJiYgcGFyc2VkVmFsdWVbcGFyc2VkVmFs
dWUubGVuZ3RoKCkgLSAxXSA9PSAnIicpCiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gcGFyc2VkVmFsdWUuc3Vic3RyaW5nKDEsIHBhcnNlZFZhbHVlLmxlbmd0aCgpIC0gMik7CisK
KyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZG9tYWluIGNvbnRhaW5zIGFuIGVtYmVk
ZGVkIGRvdC4KKyAgICAgICAgICAgICAgICBzaXplX3QgZG90UG9zaXRpb24gPSBwYXJzZWRWYWx1
ZS5maW5kKCIuIiwgMSk7CisgICAgICAgICAgICAgICAgaWYgKGRvdFBvc2l0aW9uID09IG5vdEZv
dW5kIHx8IGRvdFBvc2l0aW9uID09IHBhcnNlZFZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAg
ICAgICAgICBMT0dfQU5EX0RFTEVURSgiSW52YWxpZCBjb29raWUgJXMgKGRvbWFpbik6IGl0IGRv
ZXMgbm90IGNvbnRhaW4gYW4gZW1iZWRkZWQgZG90IiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsK
KyAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZG9tYWluIGRvZXMgbm90IHN0YXJ0IHdpdGgg
YSBkb3QsIGFkZCBvbmUgZm9yIHNlY3VyaXR5IGNoZWNrcywKICAgICAgICAgICAgICAgICAvLyBG
b3IgZXhhbXBsZTogYWIuYy5jb20gZG9zZSBub3QgZG9tYWluIG1hdGNoIGIuYy5jb207CiAgICAg
ICAgICAgICAgICAgU3RyaW5nIHJlYWxEb21haW4gPSBwYXJzZWRWYWx1ZVswXSA9PSAnLicgPyBw
YXJzZWRWYWx1ZSA6ICIuIiArIHBhcnNlZFZhbHVlOworCisgICAgICAgICAgICAgICAgLy8gVGhl
IHJlcXVlc3QgaG9zdCBzaG91bGQgZG9tYWluIG1hdGNoIHRoZSBEb21haW4gYXR0cmlidXRlLgor
ICAgICAgICAgICAgICAgIC8vIERvbWFpbiBzdHJpbmcgc3RhcnRzIHdpdGggYSBkb3QsIHNvIGEu
Yi5jb20gc2hvdWxkIGRvbWFpbiBtYXRjaCAuYS5iLmNvbS4KKyAgICAgICAgICAgICAgICAvLyBh
ZGQgYSAiLiIgYXQgYmVnaW5uaW5nIG9mIGhvc3QgbmFtZSwgYmVjYXVzZSBpdCBjYW4gaGFuZGxl
IG1hbnkgY2FzZXMgc3VjaCBhcworICAgICAgICAgICAgICAgIC8vIGEuYi5jb20gbWF0Y2hlcyBi
LmNvbSwgYS5iLmNvbSBtYXRjaGVzIC5CLmNvbSBhbmQgYS5iLmNvbSBtYXRjaGVzIC5BLmIuQ29t
CisgICAgICAgICAgICAgICAgLy8gYW5kIHNvIG9uLgorICAgICAgICAgICAgICAgIFN0cmluZyBo
b3N0RG9tYWluTmFtZSA9IG1fZGVmYXVsdENvb2tpZVVSTC5ob3N0KCk7CisgICAgICAgICAgICAg
ICAgaG9zdERvbWFpbk5hbWUgPSBob3N0RG9tYWluTmFtZS5zdGFydHNXaXRoKCIuIikgPyBob3N0
RG9tYWluTmFtZSA6ICIuIiArIGhvc3REb21haW5OYW1lOworICAgICAgICAgICAgICAgIGlmICgh
aG9zdERvbWFpbk5hbWUuZW5kc1dpdGgocmVhbERvbWFpbiwgZmFsc2UpKQorICAgICAgICAgICAg
ICAgICAgICBMT0dfQU5EX0RFTEVURSgiSW52YWxpZCBjb29raWUgJXMgKGRvbWFpbik6IGl0IGRv
ZXMgbm90IGRvbWFpbiBtYXRjaCB0aGUgaG9zdCIpOworICAgICAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBjaGVjayBmb3IgYW4gZW1iZWRkZWQgZG90IGluIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBp
biB0aGUgaG9zdCBub3QgaW4gdGhlIGRvbWFpbgorICAgICAgICAgICAgICAgIC8vIGJ1dCB0byBt
YXRjaCBmaXJlZm94IGJlaGF2aW91ciB3ZSBkbyBub3QuCisKICAgICAgICAgICAgICAgICByZXMt
PnNldERvbWFpbihyZWFsRG9tYWluKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIExPR19BTkRfREVMRVRFKCJJbnZhbGlkIGNvb2tpZSAlcyAoZG9tYWluKSIsIGNvb2tpZS5h
c2NpaSgpLmRhdGEoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139342</attachid>
            <date>2012-04-27 23:39:40 -0700</date>
            <delta_ts>2012-05-16 02:57:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85028-20120428143937.patch</filename>
            <type>text/plain</type>
            <size>8736</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEzZTkxZDMwZDYwNTFm
ZmQ4MGQzNDRhYTVkMGExNDcxYzJkZWIyMi4uNTY3ODg4MWFkZDJjYzIzNmYwMmYyZjQ0ODQyOWY0
MjM3ZjNiNDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTI3ICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBDb29raWVzIHNob3VsZCBiZSBjaGVja2VkIGR1cmluZyBwYXJzaW5nIHRvIGltcHJvdmUg
cGVyZm9ybWFuY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHNob3VsZG4ndCB3YXN0ZSB0aW1lIGFuZCBtZW1lcnkgb24gaW52YWxpZCBjb29raWVz
LiBJdCBpcyBiZXR0ZXIgdG8gZHJvcCB0aGVtIGR1cmluZyBwYXJzaW5nLgorICAgICAgICBXZSBz
aG91bGRuJ3QgY2hlY2sgdGhlIGRlZmF1bHQgZG9tYWluIHNpbmNlIGl0IGlzIHNldCB3aXRoIGhv
c3QuIFNvIHdlIG9ubHkgY2hlY2sgZG9tYWlucyB3aGljaCBhcmUgcGFyc2VkCisgICAgICAgIGZy
b20gcmVzcG9uc2UgaGVhZGVycy4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8g
ZnVuY3Rpb25hbGl0eSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6c2V0Q29v
a2llcyk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZSk6CisKIDIwMTItMDQtMjYgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjk0
NDk3KTogUHJlc3NpbmcgQ29tbWFuZCtBIHdoZW4gaW5saW5lIChNYXJrZWQgVGV4dCkgaXMgbm90
IGVtcHR5IHdpbGwgY2xlYW4gd2hvbGUgY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKaW5kZXggYmY2M2I2MTY5NWJj
ZmZhOTg2NmY3ZjQzMWVmNTg3MjgxNjM1OTVlMy4uNmE5OWQyZDlhNjQ5OWRmNjI2NzEzOWY5ZjQ2
NDM0OWRkNzM4OWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC0xMzgsNjEgKzEzOCw5IEBAIHZvaWQgQ29va2ll
TWFuYWdlcjo6c2V0Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+IGNvb2tpZXMgPSBwYXJzZXIucGFyc2UodmFsdWUp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb29raWVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIFBhcnNlZENvb2tpZSogY29va2llID0gY29va2llc1tpXTsKLSAgICAgICAgaWYgKCFz
aG91bGRSZWplY3RGb3JTZWN1cml0eVJlYXNvbihjb29raWUsIHVybCkpIHsKLSAgICAgICAgICAg
IEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kgdHJlYXRtZW50ID0gbV9wcml2YXRlTW9kZSA/IERv
Tm90UmVtb3ZlRnJvbUJhY2tpbmdTdG9yZSA6IFJlbW92ZUZyb21CYWNraW5nU3RvcmU7Ci0gICAg
ICAgICAgICBjaGVja0FuZFRyZWF0Q29va2llKGNvb2tpZSwgdHJlYXRtZW50KTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBkZWxldGUgY29va2llOwotICAgIH0KLX0KLQotYm9vbCBDb29r
aWVNYW5hZ2VyOjpzaG91bGRSZWplY3RGb3JTZWN1cml0eVJlYXNvbihjb25zdCBQYXJzZWRDb29r
aWUqIGNvb2tpZSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIC8vIFdlIGhhdmUgdG8gZGlzYWJs
ZSB0aGUgZm9sbG93aW5nIGNoZWNrIGJlY2F1c2Ugc2l0ZXMgbGlrZSBGYWNlYm9vayBhbmQKLSAg
ICAvLyBHbWFpbCBjdXJyZW50bHkgZG8gbm90IGZvbGxvdyB0aGUgc3BlYy4KLSNpZiAwCi0gICAg
Ly8gQ2hlY2sgaWYgcGF0aCBhdHRyaWJ1dGUgaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QgVVJJ
LgotICAgIGlmICghdXJsLnBhdGgoKS5zdGFydHNXaXRoKGNvb2tpZS0+cGF0aCgpKSkgewotICAg
ICAgICBMT0dfRVJST1IoIkNvb2tpZSAlcyBpcyByZWplY3RlZCBiZWNhdXNlIGl0cyBwYXRoIGRv
ZXMgbm90IG1hdGggdGhlIFVSTCAlc1xuIiwgY29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICAvLyBpZ25vcmUgZG9tYWluIHNlY3VyaXR5IGlmIHByb3RvY29s
IGRvZXNuJ3QgaGF2ZSBkb21haW5zCi0gICAgaWYgKHNob3VsZElnbm9yZURvbWFpbihjb29raWUt
PnByb3RvY29sKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBSZWplY3QgQ29v
a2llIGlmIGRvbWFpbiBpcyBlbXB0eQotICAgIGlmICghY29va2llLT5kb21haW4oKS5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBhbiBleHBsaWNpdGx5IHNwZWNp
ZmllZCB2YWx1ZSBkb2VzIG5vdCBzdGFydCB3aXRoIGEgZG90LCB0aGUgdXNlciBhZ2VudCBzdXBw
bGllcy4gKFJGQyAyOTY1IDMuMi4yKQotICAgIC8vIERvbWFpbjogRGVmYXVsdHMgdG8gdGhlIGVm
ZmVjdGl2ZSByZXF1ZXN0LWhvc3QuIFRoZXJlIGlzIG5vIGRvdCBhdCB0aGUgYmVnaW5uaW5nIG9m
IHJlcXVlc3QtaG9zdC4gKFJGQyAyOTY1IDMuMy4xKQotICAgIGlmIChjb29raWUtPmRvbWFpbigp
WzBdID09ICcuJykgewotICAgICAgICAvLyBDaGVjayBpZiB0aGUgZG9tYWluIGNvbnRhaW5zIGFu
IGVtYmVkZGVkIGRvdC4KLSAgICAgICAgc2l6ZV90IGRvdFBvc2l0aW9uID0gY29va2llLT5kb21h
aW4oKS5maW5kKCIuIiwgMSk7Ci0gICAgICAgIGlmIChkb3RQb3NpdGlvbiA9PSBub3RGb3VuZCB8
fCBkb3RQb3NpdGlvbiA9PSBjb29raWUtPmRvbWFpbigpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAg
ICBMT0dfRVJST1IoIkNvb2tpZSAlcyBpcyByZWplY3RlZCBiZWNhdXNlIGl0cyBkb21haW4gZG9l
cyBub3QgY29udGFpbiBhbiBlbWJlZGRlZCBkb3QuXG4iLCBjb29raWUtPnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAg
ICBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBE
b05vdFJlbW92ZUZyb21CYWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOworICAg
ICAgICBjaGVja0FuZFRyZWF0Q29va2llKGNvb2tpZXNbaV0sIHRyZWF0bWVudCk7CiAgICAgfQot
Ci0gICAgLy8gVGhlIHJlcXVlc3QgaG9zdCBzaG91bGQgZG9tYWluIG1hdGNoIHRoZSBEb21haW4g
YXR0cmlidXRlLgotICAgIC8vIERvbWFpbiBzdHJpbmcgc3RhcnRzIHdpdGggYSBkb3QsIHNvIGEu
Yi5jb20gc2hvdWxkIGRvbWFpbiBtYXRjaCAuYS5iLmNvbS4KLSAgICAvLyBhZGQgYSAiLiIgYXQg
YmVnaW5uaW5nIG9mIGhvc3QgbmFtZSwgYmVjYXVzZSBpdCBjYW4gaGFuZGxlIG1hbnkgY2FzZXMg
c3VjaCBhcwotICAgIC8vIGEuYi5jb20gbWF0Y2hlcyBiLmNvbSwgYS5iLmNvbSBtYXRjaGVzIC5C
LmNvbSBhbmQgYS5iLmNvbSBtYXRjaGVzIC5BLmIuQ29tCi0gICAgLy8gYW5kIHNvIG9uLgotICAg
IFN0cmluZyBob3N0RG9tYWluTmFtZSA9IHVybC5ob3N0KCk7Ci0gICAgaG9zdERvbWFpbk5hbWUg
PSBob3N0RG9tYWluTmFtZS5zdGFydHNXaXRoKCIuIikgPyBob3N0RG9tYWluTmFtZSA6ICIuIiAr
IGhvc3REb21haW5OYW1lOwotICAgIGlmICghaG9zdERvbWFpbk5hbWUuZW5kc1dpdGgoY29va2ll
LT5kb21haW4oKSwgZmFsc2UpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ29va2llICVzIGlzIHJl
amVjdGVkIGJlY2F1c2UgaXRzIGRvbWFpbiBkb2VzIG5vdCBkb21haW4gbWF0Y2ggdGhlIFVSTCAl
c1xuIiwgY29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIC8vIFdlIHNob3Vs
ZCBjaGVjayBmb3IgYW4gZW1iZWRkZWQgZG90IGluIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBpbiB0
aGUgaG9zdCBub3QgaW4gdGhlIGRvbWFpbgotICAgIC8vIGJ1dCB0byBtYXRjaCBmaXJlZm94IGJl
aGF2aW91ciB3ZSBkbyBub3QuCi0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFN0cmluZyBDb29r
aWVNYW5hZ2VyOjpnZXRDb29raWUoY29uc3QgS1VSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVy
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9D
b29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZU1hbmFnZXIuaAppbmRleCA5MDQ1NTFlYmEzNzgxOTAzZTg1ZmE0ZmFhZTIwMzIwMDU5OWY1YzQ3
Li4wNjE0ZTdkMzMzZjVlOTg1MGNiM2IzNTIyMjMzOWYzNjA0MWVlZTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaApAQCAtMTE5
LDggKzExOSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNrQW5kVHJlYXRDb29raWUoUGFy
c2VkQ29va2llKiwgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7CiAKLSAgICBib29sIHNob3Vs
ZFJlamVjdEZvclNlY3VyaXR5UmVhc29uKGNvbnN0IFBhcnNlZENvb2tpZSosIGNvbnN0IEtVUkwm
KTsKLQogICAgIHZvaWQgYWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNl
ZENvb2tpZSogY2FuZGlkYXRlQ29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RU
b0JhY2tpbmdTdG9yZSk7CiAKICAgICBDb29raWVNYXAqIGZpbmRPckNyZWF0ZUNvb2tpZU1hcChD
b29raWVNYXAqIHByb3RvY29sTWFwLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgYm9vbCBmaW5kT25s
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBh
cnNlci5jcHAKaW5kZXggYjIxNzdjNjY1ZDFiYzc2ZjIxN2U2MDYwMzEzMmFlOGU4ZjM4ZjA1NC4u
ZWY2YzFmYWMzNjJlNzY2MDBiZDdiYjY1ZmUxMjQxMWI5NTZlNzE0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcApAQCAtMjI1
LDYgKzIyNSwxNSBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUo
Y29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogICAgICAgICAgICAgICAgIC8v
IFRoZSBwYXRoIGF0dHJpYnV0ZSBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHBlcmNlbnQtZW5jb2Rl
ZCBjaGFyYWN0ZXJzLiBGb3J0dW5hdGVseQogICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFy
ZSBubyBwZXJjZW50LWVuY29kZWQgY2hhcmFjdGVycywgZGVjb2RpbmcgdGhlIHVybCBpcyBhIG5v
LW9wLgogICAgICAgICAgICAgICAgIHJlcy0+c2V0UGF0aChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMocGFyc2VkVmFsdWUpKTsKKworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZGlzYWJs
ZSB0aGUgZm9sbG93aW5nIGNoZWNrIGJlY2F1c2Ugc2l0ZXMgbGlrZSBGYWNlYm9vayBhbmQKKyAg
ICAgICAgICAgICAgICAvLyBHbWFpbCBjdXJyZW50bHkgZG8gbm90IGZvbGxvdyB0aGUgc3BlYy4K
KyNpZiAwCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgcGF0aCBhdHRyaWJ1dGUgaXMgYSBw
cmVmaXggb2YgdGhlIHJlcXVlc3QgVVJJLgorICAgICAgICAgICAgICAgIGlmICghbV9kZWZhdWx0
Q29va2llVVJMLnBhdGgoKS5zdGFydHNXaXRoKHJlcy0+cGF0aCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgTE9HX0FORF9ERUxFVEUoIkludmFsaWQgY29va2llICVzIChwYXRoKTogaXQgZG9lcyBu
b3QgbWF0aCB0aGUgVVJMIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZgorCiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBMT0dfQU5EX0RFTEVURSgiSW52YWxpZCBj
b29raWUgJXMgKHBhdGgpIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjM1LDkgKzI0NCwyOCBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFy
c2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogICAgICAg
ICAgICAgaWYgKGxlbmd0aCA+PSA2ICYmIGNvb2tpZS5maW5kKCJvbWFpbiIsIHRva2VuU3RhcnRT
dmcgKyAxLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUubGVuZ3Ro
KCkgPiAxICYmIHBhcnNlZFZhbHVlWzBdID09ICciJyAmJiBwYXJzZWRWYWx1ZVtwYXJzZWRWYWx1
ZS5sZW5ndGgoKSAtIDFdID09ICciJykKICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUg
PSBwYXJzZWRWYWx1ZS5zdWJzdHJpbmcoMSwgcGFyc2VkVmFsdWUubGVuZ3RoKCkgLSAyKTsKKwor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBkb21haW4gY29udGFpbnMgYW4gZW1iZWRk
ZWQgZG90LgorICAgICAgICAgICAgICAgIHNpemVfdCBkb3RQb3NpdGlvbiA9IHBhcnNlZFZhbHVl
LmZpbmQoIi4iLCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoZG90UG9zaXRpb24gPT0gbm90Rm91
bmQgfHwgZG90UG9zaXRpb24gPT0gcGFyc2VkVmFsdWUubGVuZ3RoKCkpCisgICAgICAgICAgICAg
ICAgICAgIExPR19BTkRfREVMRVRFKCJJbnZhbGlkIGNvb2tpZSAlcyAoZG9tYWluKTogaXQgZG9l
cyBub3QgY29udGFpbiBhbiBlbWJlZGRlZCBkb3QiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOwor
IAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkb21haW4gZG9lcyBub3Qgc3RhcnQgd2l0aCBh
IGRvdCwgYWRkIG9uZSBmb3Igc2VjdXJpdHkgY2hlY2tzLAogICAgICAgICAgICAgICAgIC8vIEZv
ciBleGFtcGxlOiBhYi5jLmNvbSBkb3NlIG5vdCBkb21haW4gbWF0Y2ggYi5jLmNvbTsKICAgICAg
ICAgICAgICAgICBTdHJpbmcgcmVhbERvbWFpbiA9IHBhcnNlZFZhbHVlWzBdID09ICcuJyA/IHBh
cnNlZFZhbHVlIDogIi4iICsgcGFyc2VkVmFsdWU7CisKKyAgICAgICAgICAgICAgICAvLyBUaGUg
cmVxdWVzdCBob3N0IHNob3VsZCBkb21haW4gbWF0Y2ggdGhlIERvbWFpbiBhdHRyaWJ1dGUuCisg
ICAgICAgICAgICAgICAgLy8gRG9tYWluIHN0cmluZyBzdGFydHMgd2l0aCBhIGRvdCwgc28gYS5i
LmNvbSBzaG91bGQgZG9tYWluIG1hdGNoIC5hLmIuY29tLgorICAgICAgICAgICAgICAgIC8vIGFk
ZCBhICIuIiBhdCBiZWdpbm5pbmcgb2YgaG9zdCBuYW1lLCBiZWNhdXNlIGl0IGNhbiBoYW5kbGUg
bWFueSBjYXNlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgLy8gYS5iLmNvbSBtYXRjaGVzIGIu
Y29tLCBhLmIuY29tIG1hdGNoZXMgLkIuY29tIGFuZCBhLmIuY29tIG1hdGNoZXMgLkEuYi5Db20K
KyAgICAgICAgICAgICAgICAvLyBhbmQgc28gb24uCisgICAgICAgICAgICAgICAgU3RyaW5nIGhv
c3REb21haW5OYW1lID0gbV9kZWZhdWx0Q29va2llVVJMLmhvc3QoKTsKKyAgICAgICAgICAgICAg
ICBob3N0RG9tYWluTmFtZSA9IGhvc3REb21haW5OYW1lLnN0YXJ0c1dpdGgoIi4iKSA/IGhvc3RE
b21haW5OYW1lIDogIi4iICsgaG9zdERvbWFpbk5hbWU7CisgICAgICAgICAgICAgICAgaWYgKCFo
b3N0RG9tYWluTmFtZS5lbmRzV2l0aChyZWFsRG9tYWluLCBmYWxzZSkpCisgICAgICAgICAgICAg
ICAgICAgIExPR19BTkRfREVMRVRFKCJJbnZhbGlkIGNvb2tpZSAlcyAoZG9tYWluKTogaXQgZG9l
cyBub3QgZG9tYWluIG1hdGNoIHRoZSBob3N0Iik7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIGNoZWNrIGZvciBhbiBlbWJlZGRlZCBkb3QgaW4gdGhlIHBvcnRpb24gb2Ygc3RyaW5nIGlu
IHRoZSBob3N0IG5vdCBpbiB0aGUgZG9tYWluCisgICAgICAgICAgICAgICAgLy8gYnV0IHRvIG1h
dGNoIGZpcmVmb3ggYmVoYXZpb3VyIHdlIGRvIG5vdC4KKwogICAgICAgICAgICAgICAgIHJlcy0+
c2V0RG9tYWluKHJlYWxEb21haW4pOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgTE9HX0FORF9ERUxFVEUoIkludmFsaWQgY29va2llICVzIChkb21haW4pIiwgY29va2llLmFz
Y2lpKCkuZGF0YSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142209</attachid>
            <date>2012-05-16 02:57:41 -0700</date>
            <delta_ts>2012-05-16 04:42:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85028-20120516175739.patch</filename>
            <type>text/plain</type>
            <size>8666</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExODA2YTJiNTU1MDcy
YWEzZmM2NjA3NzI4YmVmM2EzZWI3M2ZiNi4uNDI1ZGU5NDAyNDk5MTllMTIxNGZmMzgzNmFkNTZj
YzNkYjE0OWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTE2ICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBDb29raWVzIHNob3VsZCBiZSBjaGVja2VkIGR1cmluZyBwYXJzaW5nIHRvIGltcHJvdmUg
cGVyZm9ybWFuY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgorCisgICAg
ICAgIFdlIHNob3VsZG4ndCB3YXN0ZSB0aW1lIGFuZCBtZW1lcnkgb24gaW52YWxpZCBjb29raWVz
LiBJdCBpcyBiZXR0ZXIgdG8gZHJvcCB0aGVtIGR1cmluZyBwYXJzaW5nLgorICAgICAgICBXZSBz
aG91bGRuJ3QgY2hlY2sgdGhlIGRlZmF1bHQgZG9tYWluIHNpbmNlIGl0IGlzIHNldCB3aXRoIGhv
c3QuIFNvIHdlIG9ubHkgY2hlY2sgZG9tYWlucyB3aGljaCBhcmUgcGFyc2VkCisgICAgICAgIGZy
b20gcmVzcG9uc2UgaGVhZGVycy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGZ1bmN0aW9u
YWxpdHkgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUpOgorCiAyMDEyLTA1LTE2ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTE3MDUwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKaW5kZXggZGQ3MmU2Nzk0M2Q3OWE4YThhZTc4OWQy
ZWNiNTExMDlmMDgxYTJhNi4uNmE5OWQyZDlhNjQ5OWRmNjI2NzEzOWY5ZjQ2NDM0OWRkNzM4OWRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZU1hbmFnZXIuY3BwCkBAIC0xMzgsNjEgKzEzOCw5IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6c2V0
Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgVmVjdG9y
PFBhcnNlZENvb2tpZSo+IGNvb2tpZXMgPSBwYXJzZXIucGFyc2UodmFsdWUpOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb29raWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFBhcnNl
ZENvb2tpZSogY29va2llID0gY29va2llc1tpXTsKLSAgICAgICAgaWYgKCFzaG91bGRSZWplY3RG
b3JTZWN1cml0eVJlYXNvbihjb29raWUsIHVybCkpIHsKLSAgICAgICAgICAgIEJhY2tpbmdTdG9y
ZVJlbW92YWxQb2xpY3kgdHJlYXRtZW50ID0gbV9wcml2YXRlTW9kZSA/IERvTm90UmVtb3ZlRnJv
bUJhY2tpbmdTdG9yZSA6IFJlbW92ZUZyb21CYWNraW5nU3RvcmU7Ci0gICAgICAgICAgICBjaGVj
a0FuZFRyZWF0Q29va2llKGNvb2tpZSwgdHJlYXRtZW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBkZWxldGUgY29va2llOwotICAgIH0KLX0KLQotYm9vbCBDb29raWVNYW5hZ2VyOjpz
aG91bGRSZWplY3RGb3JTZWN1cml0eVJlYXNvbihjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSwg
Y29uc3QgS1VSTCYgdXJsKQotewotICAgIC8vIFdlIGhhdmUgdG8gZGlzYWJsZSB0aGUgZm9sbG93
aW5nIGNoZWNrIGJlY2F1c2Ugc2l0ZXMgbGlrZSBGYWNlYm9vayBhbmQKLSAgICAvLyBHbWFpbCBj
dXJyZW50bHkgZG8gbm90IGZvbGxvdyB0aGUgc3BlYy4KLSNpZiAwCi0gICAgLy8gQ2hlY2sgaWYg
cGF0aCBhdHRyaWJ1dGUgaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QgVVJJLgotICAgIGlmICgh
dXJsLnBhdGgoKS5zdGFydHNXaXRoKGNvb2tpZS0+cGF0aCgpKSkgewotICAgICAgICBMT0dfRVJS
T1IoIkNvb2tpZSAlcyBpcyByZWplY3RlZCBiZWNhdXNlIGl0cyBwYXRoIGRvZXMgbm90IG1hdGgg
dGhlIFVSTCAlc1xuIiwgY29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICAvLyBpZ25vcmUgZG9tYWluIHNlY3VyaXR5IGlmIHByb3RvY29sIGRvZXNuJ3QgaGF2
ZSBkb21haW5zCi0gICAgaWYgKHNob3VsZElnbm9yZURvbWFpbihjb29raWUtPnByb3RvY29sKCkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBSZWplY3QgQ29va2llIGlmIGRvbWFp
biBpcyBlbXB0eQotICAgIGlmICghY29va2llLT5kb21haW4oKS5sZW5ndGgoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBhbiBleHBsaWNpdGx5IHNwZWNpZmllZCB2YWx1ZSBk
b2VzIG5vdCBzdGFydCB3aXRoIGEgZG90LCB0aGUgdXNlciBhZ2VudCBzdXBwbGllcy4gKFJGQyAy
OTY1IDMuMi4yKQotICAgIC8vIERvbWFpbjogRGVmYXVsdHMgdG8gdGhlIGVmZmVjdGl2ZSByZXF1
ZXN0LWhvc3QuIFRoZXJlIGlzIG5vIGRvdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHJlcXVlc3QtaG9z
dC4gKFJGQyAyOTY1IDMuMy4xKQotICAgIGlmIChjb29raWUtPmRvbWFpbigpWzBdID09ICcuJykg
ewotICAgICAgICAvLyBDaGVjayBpZiB0aGUgZG9tYWluIGNvbnRhaW5zIGFuIGVtYmVkZGVkIGRv
dC4KLSAgICAgICAgc2l6ZV90IGRvdFBvc2l0aW9uID0gY29va2llLT5kb21haW4oKS5maW5kKCIu
IiwgMSk7Ci0gICAgICAgIGlmIChkb3RQb3NpdGlvbiA9PSBub3RGb3VuZCB8fCBkb3RQb3NpdGlv
biA9PSBjb29raWUtPmRvbWFpbigpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkNvb2tpZSAlcyBpcyByZWplY3RlZCBiZWNhdXNlIGl0cyBkb21haW4gZG9lcyBub3QgY29udGFp
biBhbiBlbWJlZGRlZCBkb3QuXG4iLCBjb29raWUtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBCYWNraW5nU3Rv
cmVSZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBEb05vdFJlbW92ZUZy
b21CYWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOworICAgICAgICBjaGVja0Fu
ZFRyZWF0Q29va2llKGNvb2tpZXNbaV0sIHRyZWF0bWVudCk7CiAgICAgfQotCi0gICAgLy8gVGhl
IHJlcXVlc3QgaG9zdCBzaG91bGQgZG9tYWluIG1hdGNoIHRoZSBEb21haW4gYXR0cmlidXRlLgot
ICAgIC8vIERvbWFpbiBzdHJpbmcgc3RhcnRzIHdpdGggYSBkb3QsIHNvIGEuYi5jb20gc2hvdWxk
IGRvbWFpbiBtYXRjaCAuYS5iLmNvbS4KLSAgICAvLyBhZGQgYSAiLiIgYXQgYmVnaW5uaW5nIG9m
IGhvc3QgbmFtZSwgYmVjYXVzZSBpdCBjYW4gaGFuZGxlIG1hbnkgY2FzZXMgc3VjaCBhcwotICAg
IC8vIGEuYi5jb20gbWF0Y2hlcyBiLmNvbSwgYS5iLmNvbSBtYXRjaGVzIC5CLmNvbSBhbmQgYS5i
LmNvbSBtYXRjaGVzIC5BLmIuQ29tCi0gICAgLy8gYW5kIHNvIG9uLgotICAgIFN0cmluZyBob3N0
RG9tYWluTmFtZSA9IHVybC5ob3N0KCk7Ci0gICAgaG9zdERvbWFpbk5hbWUgPSBob3N0RG9tYWlu
TmFtZS5zdGFydHNXaXRoKCcuJykgPyBob3N0RG9tYWluTmFtZSA6ICIuIiArIGhvc3REb21haW5O
YW1lOwotICAgIGlmICghaG9zdERvbWFpbk5hbWUuZW5kc1dpdGgoY29va2llLT5kb21haW4oKSwg
ZmFsc2UpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ29va2llICVzIGlzIHJlamVjdGVkIGJlY2F1
c2UgaXRzIGRvbWFpbiBkb2VzIG5vdCBkb21haW4gbWF0Y2ggdGhlIFVSTCAlc1xuIiwgY29va2ll
LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIC8vIFdlIHNob3VsZCBjaGVjayBmb3Ig
YW4gZW1iZWRkZWQgZG90IGluIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBpbiB0aGUgaG9zdCBub3Qg
aW4gdGhlIGRvbWFpbgotICAgIC8vIGJ1dCB0byBtYXRjaCBmaXJlZm94IGJlaGF2aW91ciB3ZSBk
byBub3QuCi0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFN0cmluZyBDb29raWVNYW5hZ2VyOjpn
ZXRDb29raWUoY29uc3QgS1VSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaApp
bmRleCA5MDQ1NTFlYmEzNzgxOTAzZTg1ZmE0ZmFhZTIwMzIwMDU5OWY1YzQ3Li4wNjE0ZTdkMzMz
ZjVlOTg1MGNiM2IzNTIyMjMzOWYzNjA0MWVlZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaApAQCAtMTE5LDggKzExOSw2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNrQW5kVHJlYXRDb29raWUoUGFyc2VkQ29va2llKiwg
QmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7CiAKLSAgICBib29sIHNob3VsZFJlamVjdEZvclNl
Y3VyaXR5UmVhc29uKGNvbnN0IFBhcnNlZENvb2tpZSosIGNvbnN0IEtVUkwmKTsKLQogICAgIHZv
aWQgYWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2Fu
ZGlkYXRlQ29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9y
ZSk7CiAKICAgICBDb29raWVNYXAqIGZpbmRPckNyZWF0ZUNvb2tpZU1hcChDb29raWVNYXAqIHBy
b3RvY29sTWFwLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgYm9vbCBmaW5kT25seSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAKaW5k
ZXggZTA4OWRhMDk1MjFmOGRhMjRmNmUzMTE3OTU4YThkNTlhY2ViZWY3Zi4uOTFiYWJjMmExYWY4
Mzg1ZWI1ZWM1N2NlN2ZlMTgxYWUwY2ZiMGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcApAQCAtMjMwLDYgKzIzMCwxNSBA
QCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5n
JiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRoIGF0
dHJpYnV0ZSBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0ZXJz
LiBGb3J0dW5hdGVseQogICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBwZXJjZW50
LWVuY29kZWQgY2hhcmFjdGVycywgZGVjb2RpbmcgdGhlIHVybCBpcyBhIG5vLW9wLgogICAgICAg
ICAgICAgICAgIHJlcy0+c2V0UGF0aChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGFyc2VkVmFs
dWUpKTsKKworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZGlzYWJsZSB0aGUgZm9sbG93
aW5nIGNoZWNrIGJlY2F1c2Ugc2l0ZXMgbGlrZSBGYWNlYm9vayBhbmQKKyAgICAgICAgICAgICAg
ICAvLyBHbWFpbCBjdXJyZW50bHkgZG8gbm90IGZvbGxvdyB0aGUgc3BlYy4KKyNpZiAwCisgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgcGF0aCBhdHRyaWJ1dGUgaXMgYSBwcmVmaXggb2YgdGhl
IHJlcXVlc3QgVVJJLgorICAgICAgICAgICAgICAgIGlmICghbV9kZWZhdWx0Q29va2llVVJMLnBh
dGgoKS5zdGFydHNXaXRoKHJlcy0+cGF0aCgpKSkKKyAgICAgICAgICAgICAgICAgICAgTE9HX0FO
RF9ERUxFVEUoIkludmFsaWQgY29va2llICVzIChwYXRoKTogaXQgZG9lcyBub3QgbWF0aCB0aGUg
VVJMIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyNlbmRpZgorCiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBMT0dfQU5EX0RFTEVURSgiSW52YWxpZCBjb29raWUgJXMgKHBh
dGgpIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQw
LDkgKzI0OSwyOCBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUo
Y29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogICAgICAgICAgICAgaWYgKGxl
bmd0aCA+PSA2ICYmIGNvb2tpZS5maW5kKCJvbWFpbiIsIHRva2VuU3RhcnRTdmcgKyAxLCBmYWxz
ZSkpIHsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUubGVuZ3RoKCkgPiAxICYmIHBh
cnNlZFZhbHVlWzBdID09ICciJyAmJiBwYXJzZWRWYWx1ZVtwYXJzZWRWYWx1ZS5sZW5ndGgoKSAt
IDFdID09ICciJykKICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZWRWYWx1
ZS5zdWJzdHJpbmcoMSwgcGFyc2VkVmFsdWUubGVuZ3RoKCkgLSAyKTsKKworICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBkb21haW4gY29udGFpbnMgYW4gZW1iZWRkZWQgZG90LgorICAg
ICAgICAgICAgICAgIHNpemVfdCBkb3RQb3NpdGlvbiA9IHBhcnNlZFZhbHVlLmZpbmQoIi4iLCAx
KTsKKyAgICAgICAgICAgICAgICBpZiAoZG90UG9zaXRpb24gPT0gbm90Rm91bmQgfHwgZG90UG9z
aXRpb24gPT0gcGFyc2VkVmFsdWUubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgICAgIExPR19B
TkRfREVMRVRFKCJJbnZhbGlkIGNvb2tpZSAlcyAoZG9tYWluKTogaXQgZG9lcyBub3QgY29udGFp
biBhbiBlbWJlZGRlZCBkb3QiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOworCiAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIGRvbWFpbiBkb2VzIG5vdCBzdGFydCB3aXRoIGEgZG90LCBhZGQgb25l
IGZvciBzZWN1cml0eSBjaGVja3MsCiAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGFi
LmMuY29tIGRvc2Ugbm90IGRvbWFpbiBtYXRjaCBiLmMuY29tOwogICAgICAgICAgICAgICAgIFN0
cmluZyByZWFsRG9tYWluID0gcGFyc2VkVmFsdWVbMF0gPT0gJy4nID8gcGFyc2VkVmFsdWUgOiAi
LiIgKyBwYXJzZWRWYWx1ZTsKKworICAgICAgICAgICAgICAgIC8vIFRoZSByZXF1ZXN0IGhvc3Qg
c2hvdWxkIGRvbWFpbiBtYXRjaCB0aGUgRG9tYWluIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgICAg
ICAvLyBEb21haW4gc3RyaW5nIHN0YXJ0cyB3aXRoIGEgZG90LCBzbyBhLmIuY29tIHNob3VsZCBk
b21haW4gbWF0Y2ggLmEuYi5jb20uCisgICAgICAgICAgICAgICAgLy8gYWRkIGEgIi4iIGF0IGJl
Z2lubmluZyBvZiBob3N0IG5hbWUsIGJlY2F1c2UgaXQgY2FuIGhhbmRsZSBtYW55IGNhc2VzIHN1
Y2ggYXMKKyAgICAgICAgICAgICAgICAvLyBhLmIuY29tIG1hdGNoZXMgYi5jb20sIGEuYi5jb20g
bWF0Y2hlcyAuQi5jb20gYW5kIGEuYi5jb20gbWF0Y2hlcyAuQS5iLkNvbQorICAgICAgICAgICAg
ICAgIC8vIGFuZCBzbyBvbi4KKyAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdERvbWFpbk5hbWUg
PSBtX2RlZmF1bHRDb29raWVVUkwuaG9zdCgpOworICAgICAgICAgICAgICAgIGhvc3REb21haW5O
YW1lID0gaG9zdERvbWFpbk5hbWUuc3RhcnRzV2l0aCgnLicpID8gaG9zdERvbWFpbk5hbWUgOiAi
LiIgKyBob3N0RG9tYWluTmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoIWhvc3REb21haW5OYW1l
LmVuZHNXaXRoKHJlYWxEb21haW4sIGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgTE9HX0FO
RF9ERUxFVEUoIkludmFsaWQgY29va2llICVzIChkb21haW4pOiBpdCBkb2VzIG5vdCBkb21haW4g
bWF0Y2ggdGhlIGhvc3QiKTsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgY2hlY2sgZm9y
IGFuIGVtYmVkZGVkIGRvdCBpbiB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgaW4gdGhlIGhvc3Qgbm90
IGluIHRoZSBkb21haW4KKyAgICAgICAgICAgICAgICAvLyBidXQgdG8gbWF0Y2ggZmlyZWZveCBi
ZWhhdmlvdXIgd2UgZG8gbm90LgorCiAgICAgICAgICAgICAgICAgcmVzLT5zZXREb21haW4ocmVh
bERvbWFpbik7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBMT0dfQU5EX0RF
TEVURSgiSW52YWxpZCBjb29raWUgJXMgKGRvbWFpbikiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>