<?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>101274</bug_id>
          
          <creation_ts>2012-11-05 16:26:23 -0800</creation_ts>
          <short_desc>Allow plugins to be disabled by shared library filename</short_desc>
          <delta_ts>2012-12-14 09:54:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Feil">mfeil</reporter>
          <assigned_to name="Yong Li">yong.li.webkit</assigned_to>
          <cc>darin</cc>
    
    <cc>mifenton</cc>
    
    <cc>parpatel</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759010</commentid>
    <comment_count>0</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-05 16:26:23 -0800</bug_when>
    <thetext>We need a mechanism to allow plugins to be disabled by specifying their shared library filenames, for example &quot;libflashplayer.so&quot;. Once disabled, a plugin&apos;s shared library should never be loaded. This will save memory at runtime. Other mechanisms based on mime type, etc, require loading of the shared library just to determine its supported mime type(s).

This bug covers the Source/WebCore and Source/WebKit changes for this fix. There are corresponding changes in the libwebview and browser repositories, which are covered by PR201152.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759030</commentid>
    <comment_count>1</comment_count>
      <attachid>172436</attachid>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-05 16:47:37 -0800</bug_when>
    <thetext>Created attachment 172436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766968</commentid>
    <comment_count>2</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-14 09:28:02 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=172436) [details]
&gt; Patch

It would be nice to get this patch reviewed. If there are problems with it, I can work on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767140</commentid>
    <comment_count>3</comment_count>
      <attachid>172436</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-14 11:49:00 -0800</bug_when>
    <thetext>Comment on attachment 172436
Patch

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

I can review it later today, but I&apos;ve seen some nits to be addressed anyways.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [BlackBerry] Allow plugins to be disabled by shared library filename

The prefix [BB] here is not right. It change webcore cross platform code, and affects blackberry. So we should remove the prefix and add &apos;blackberry&apos; keyword available on bugzilla.

&gt; Source/WebCore/plugins/PluginDatabase.cpp:322
&gt; +    HashSet&lt;String&gt;::const_iterator fIt;
&gt; +    for (fIt = m_disabledPluginFiles.begin(); fIt != filesEnd; ++fIt) {

I would name it &apos;it&apos;

&gt; Source/WebCore/plugins/PluginDatabase.cpp:328
&gt; +    if (fIt != filesEnd)
&gt; +        return false;
&gt; +    return true;

return fIt == filesEnd;

&gt; Source/WebCore/plugins/PluginDatabase.cpp:335
&gt; +        if (!fileExistsAndIsEnabled((*it)-&gt;path()))

I did not like much this updated method name, but am out of suggestions. Maybe fileExistsAndIsNotBlackListed?

&gt; Source/WebCore/plugins/PluginDatabase.cpp:379
&gt; +bool PluginDatabase::updateDisabledPluginFiles(const String&amp; fileName, bool disabled)

Same. ::updatePluginsBlackListedFileList?

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5236
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);
&gt; +
&gt; +    if (!database)

no new line needed (for consistency).

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5250
&gt; +        d-&gt;m_page-&gt;refreshPlugins(false);

what does &quot;false&quot; mean here?

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5253
&gt; +        if (d-&gt;m_webSettings-&gt;arePluginsEnabled())
&gt; +            database-&gt;refresh();

should not this be the first things checked in this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768604</commentid>
    <comment_count>4</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-15 16:12:34 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; The prefix [BB] here is not right. It change webcore cross platform code, and affects blackberry. So we should remove the prefix and add &apos;blackberry&apos; keyword available on bugzilla.

Done, thanks.
 
&gt; I would name it &apos;it&apos;

I have replaced it with it, hope you like it :)

&gt; return fIt == filesEnd;

Much cleaner. Done.
 
&gt; &gt; +        if (!fileExistsAndIsEnabled((*it)-&gt;path()))
&gt; I did not like much this updated method name, but am out of suggestions. Maybe fileExistsAndIsNotBlackListed?

Since the function used to disable plugin library files is called &apos;updateDisabledPluginFiles&apos;, and the member variable used to track the set of disabled files is called &apos;m_disabledPluginFiles&apos;, then &apos;NotDisabled&apos; is more self documenting than &apos;NotBlackListed&apos;. I&apos;ll change it to that for now...

&gt; &gt; +bool PluginDatabase::updateDisabledPluginFiles(const String&amp; fileName, bool disabled)
&gt; 
&gt; Same. ::updatePluginsBlackListedFileList?

I don&apos;t think this is any better. Sorry...
 
&gt; no new line needed (for consistency).

Fixed...

&gt; &gt; +        d-&gt;m_page-&gt;refreshPlugins(false);
&gt; 
&gt; what does &quot;false&quot; mean here?

True only needs to be passed here if we want to reload each frame in the page&apos;s frame tree. I am passing false for minimum disruption, and because this does exactly what we need and nothing more: refresh the plugin data. See Page.cpp.

&gt; &gt; +        if (d-&gt;m_webSettings-&gt;arePluginsEnabled())
&gt; &gt; +            database-&gt;refresh();
&gt; 
&gt; should not this be the first things checked in this method?

I don&apos;t think so. There&apos;s no requirement that plugins be enabled in order to change their internal configuration (list of directories, disabled library filenames, etc). In fact certain calls like refreshPlugins() MUST be done even if plugins are disabled, because this is not done when plugins get re-enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768614</commentid>
    <comment_count>5</comment_count>
      <attachid>174542</attachid>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-15 16:15:40 -0800</bug_when>
    <thetext>Created attachment 174542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776328</commentid>
    <comment_count>6</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-26 21:55:13 -0800</bug_when>
    <thetext>r? ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777062</commentid>
    <comment_count>7</comment_count>
      <attachid>174542</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-27 11:57:20 -0800</bug_when>
    <thetext>Comment on attachment 174542
Patch

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

&gt; Source/WebCore/plugins/PluginDatabase.cpp:390
&gt; +        if (!m_disabledPluginFiles.contains(fileName)) {
&gt; +            m_disabledPluginFiles.add(fileName);
&gt; +            changed = true;
&gt; +        }
&gt; +    } else {
&gt; +        if (m_disabledPluginFiles.contains(fileName)) {
&gt; +            m_disabledPluginFiles.remove(fileName);
&gt; +            changed = true;
&gt; +        }
&gt; +    }

Calling m_disabledPluginFiles.contains is probably not necessary. At least add() returns a value indicating if it is new entry. Not sure but probably HashSet::remove also returns something

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5240
&gt; +    if (path.length() &amp;&amp; !pluginDirectories.contains(path.c_str())) {

Early return is preferred.

!empty() is usually better than length(). No need to call c_str()? Platform::String can be converted to WTF::String implicitly.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5241
&gt; +        pluginDirectories.append(path.c_str());

here, too

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5262
&gt; +    if (database-&gt;updateDisabledPluginFiles(String(fileName.c_str()), disabled)) {

early return is better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777068</commentid>
    <comment_count>8</comment_count>
      <attachid>174542</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-27 11:59:57 -0800</bug_when>
    <thetext>Comment on attachment 174542
Patch

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

&gt; Source/WebCore/plugins/PluginDatabase.cpp:324
&gt; +        if (fileName.endsWith(*it))
&gt; +            break;

Why endsWith()? Also I would return false here rather than checking it==filesEnd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777082</commentid>
    <comment_count>9</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-27 12:03:49 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 174542 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174542&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/plugins/PluginDatabase.cpp:324
&gt; &gt; +        if (fileName.endsWith(*it))
&gt; &gt; +            break;
&gt; 
&gt; Why endsWith()? Also I would return false here rather than checking it==filesEnd

The &quot;endsWith&quot; is so that we don&apos;t have to specify an entire path name, just the important part of the path which is at the end. It&apos;s probably better to isolate everything after the last slash for comparison though...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777098</commentid>
    <comment_count>10</comment_count>
      <attachid>174542</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-27 12:15:40 -0800</bug_when>
    <thetext>Comment on attachment 174542
Patch

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

&gt;&gt;&gt; Source/WebCore/plugins/PluginDatabase.cpp:324
&gt;&gt;&gt; +            break;
&gt;&gt; 
&gt;&gt; Why endsWith()? Also I would return false here rather than checking it==filesEnd
&gt; 
&gt; The &quot;endsWith&quot; is so that we don&apos;t have to specify an entire path name, just the important part of the path which is at the end. It&apos;s probably better to isolate everything after the last slash for comparison though...

You can use pathGetFileName(). See WebCore/platform/FileSystem.h

Also I think checking the disabledPlugin list first may be faster in most cases. fileExists() might be slow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777104</commentid>
    <comment_count>11</comment_count>
      <attachid>174542</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-27 12:19:11 -0800</bug_when>
    <thetext>Comment on attachment 174542
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [BlackBerry] Allow plugins to be disabled by shared library filename

Probably we should remove [BlackBerry] here, as it changes cross-platform code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777143</commentid>
    <comment_count>12</comment_count>
      <attachid>174542</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-27 12:55:50 -0800</bug_when>
    <thetext>Comment on attachment 174542
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/plugins/PluginDatabase.cpp:324
&gt;&gt;&gt;&gt; +    HashSet&lt;String&gt;::const_iterator filesEnd = m_disabledPluginFiles.end();
&gt;&gt;&gt;&gt; +    HashSet&lt;String&gt;::const_iterator it;
&gt;&gt;&gt;&gt; +    for (it = m_disabledPluginFiles.begin(); it != filesEnd; ++it) {
&gt;&gt;&gt;&gt; +        if (fileName.endsWith(*it))
&gt;&gt;&gt;&gt; +            break;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why endsWith()? Also I would return false here rather than checking it==filesEnd
&gt;&gt; 
&gt;&gt; The &quot;endsWith&quot; is so that we don&apos;t have to specify an entire path name, just the important part of the path which is at the end. It&apos;s probably better to isolate everything after the last slash for comparison though...
&gt; 
&gt; You can use pathGetFileName(). See WebCore/platform/FileSystem.h
&gt; 
&gt; Also I think checking the disabledPlugin list first may be faster in most cases. fileExists() might be slow?

If fileName can be a path, we can use pathGetFileName. Then we just need &quot;return !m_disabledPluginFiles.contain(fileName)&quot;. That is also faster than walking through the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778283</commentid>
    <comment_count>13</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-28 13:37:48 -0800</bug_when>
    <thetext>Thanks for the review comments Yong! I will address your comments one by one below:

(In reply to comment #7)
&gt; Calling m_disabledPluginFiles.contains is probably not necessary. At least add() returns a value indicating if it is new entry. Not sure but probably HashSet::remove also returns something

Good point. I changed the code to use the &quot;isNewEntry&quot; bool returned by HashSet::add. The HashSet::remove method returns void, so I kept that part the same.
 
&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:5240
&gt; &gt; +    if (path.length() &amp;&amp; !pluginDirectories.contains(path.c_str())) {
&gt; 
&gt; Early return is preferred.
&gt; !empty() is usually better than length(). No need to call c_str()? Platform::String can be converted to WTF::String implicitly.

That is not my code. It was written by somebody else, and reviewed by somebody else long ago. I prefer not to create unrelated diffs in other people&apos;s reviewed code. If you feel strongly about this you can open a separate bug, but as it stands this code is not being touched by this bug (see webkit/89a69f88 and PR201152).

&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:5241
&gt; &gt; +        pluginDirectories.append(path.c_str());
&gt; 
&gt; here, too

That is not my code. It was written by somebody else, and reviewed by somebody else long ago. I prefer not to create unrelated diffs in other people&apos;s reviewed code. If you feel strongly about this you can open a separate bug, but as it stands this code is not being touched by this bug (see webkit/89a69f88 and PR201152).

&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:5262
&gt; &gt; +    if (database-&gt;updateDisabledPluginFiles(String(fileName.c_str()), disabled)) {
&gt; 
&gt; early return is better

Ok, I changed this to early return.

(In reply to comment #8)
&gt; Why endsWith()? Also I would return false here rather than checking it==filesEnd

Ok, I changed the code to return false.

(In reply to comment #10)
&gt; You can use pathGetFileName(). See WebCore/platform/FileSystem.h
&gt; Also I think checking the disabledPlugin list first may be faster in most cases. fileExists() might be slow?

Good points. I implemented both suggestions.

(In reply to comment #11)
&gt; Probably we should remove [BlackBerry] here, as it changes cross-platform code

Yes, I missed those...

(In reply to comment #12)
&gt; If fileName can be a path, we can use pathGetFileName. Then we just need &quot;return !m_disabledPluginFiles.contain(fileName)&quot;. That is also faster than walking through the list.

Another good point. I updated my code. Patch coming momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778344</commentid>
    <comment_count>14</comment_count>
      <attachid>176580</attachid>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-28 14:28:12 -0800</bug_when>
    <thetext>Created attachment 176580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778393</commentid>
    <comment_count>15</comment_count>
      <attachid>176580</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-28 15:02:54 -0800</bug_when>
    <thetext>Comment on attachment 176580
Patch

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

Basically looks good to me if updateDisabledPluginFiles() is changed to setDisabledPluginFile()

&gt; Source/WebCore/plugins/PluginDatabase.cpp:385
&gt; +    bool changed = false;
&gt; +    if (disabled) {
&gt; +        if (m_disabledPluginFiles.add(fileName).isNewEntry)
&gt; +            changed = true;
&gt; +    } else {
&gt; +        if (m_disabledPluginFiles.contains(fileName)) {
&gt; +            m_disabledPluginFiles.remove(fileName);
&gt; +            changed = true;
&gt; +        }
&gt; +    }
&gt; +    return changed;
&gt; +}

Minor: this function can be further simplified by:
if (disabled)
    return m_disabledPluginFiles.add(fileName).isNewEntry;
if (!m_disabledPluginFiles.contains(fileName))
    return false;
....

&gt; Source/WebCore/plugins/PluginDatabase.h:77
&gt; +        bool updateDisabledPluginFiles(const String&amp; fileName, bool disabled);

It is called update...Files, but it only changes one file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778402</commentid>
    <comment_count>16</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-28 15:12:21 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Basically looks good to me if updateDisabledPluginFiles() is changed to setDisabledPluginFile()
&gt; It is called update...Files, but it only changes one file

The name is plural because the &quot;disabled plugin files&quot; are a hash set of multiple files, and you are updating it by adding or removing a filename. So I don&apos;t think setDisabledPluginFile works...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779013</commentid>
    <comment_count>17</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-29 07:41:04 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Basically looks good to me if updateDisabledPluginFiles() is changed to setDisabledPluginFile()
&gt; &gt; It is called update...Files, but it only changes one file
&gt; 
&gt; The name is plural because the &quot;disabled plugin files&quot; are a hash set of multiple files, and you are updating it by adding or removing a filename. So I don&apos;t think setDisabledPluginFile works...

I see. But it wouldn&apos;t confuse me if it was updateOneFileInDisabledPluginFiles() :)

Or just addDisabledPluginFile/remove*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779021</commentid>
    <comment_count>18</comment_count>
      <attachid>176580</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-29 07:59:17 -0800</bug_when>
    <thetext>Comment on attachment 176580
Patch

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

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5147
&gt; +    if (!database-&gt;updateDisabledPluginFiles(String(fileName.c_str()), disabled))

Also I can&apos;t find this in our existing code. Can you please clean them up? String(fileName.c_str()) can just be replaced with fileName</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779781</commentid>
    <comment_count>19</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-29 20:34:55 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I see. But it wouldn&apos;t confuse me if it was updateOneFileInDisabledPluginFiles() :)
&gt; 
&gt; Or just addDisabledPluginFile/remove*?

I like the add/remove idea, but it would mean plumbing two API calls through QNXWebView. I still want to avoid that.

(In reply to comment #18)
&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:5147
&gt; &gt; +    if (!database-&gt;updateDisabledPluginFiles(String(fileName.c_str()), disabled))
&gt; 
&gt; Also I can&apos;t find this in our existing code. Can you please clean them up? String(fileName.c_str()) can just be replaced with fileName

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780668</commentid>
    <comment_count>20</comment_count>
      <attachid>177090</attachid>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-30 22:53:14 -0800</bug_when>
    <thetext>Created attachment 177090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781511</commentid>
    <comment_count>21</comment_count>
      <attachid>177090</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-03 09:04:06 -0800</bug_when>
    <thetext>Comment on attachment 177090
Patch

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

some minor nits.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5117
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);

what is the bool? /**/

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5142
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);

ditto

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5148
&gt; +        return; // No change

comment is not a sentence (no . at the end).

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5156
&gt; +    d-&gt;m_page-&gt;refreshPlugins(false);

what is the bool?

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5158
&gt; +    // Refresh the plugin database if necessary

unneeded comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785549</commentid>
    <comment_count>22</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-12-06 19:13:40 -0800</bug_when>
    <thetext>Assigning to Yong. He offered to complete the upstreaming. In my discussions with him the only item preventing his r+ was the unsatisfactory function name &quot;updateDisabledPluginFiles&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785990</commentid>
    <comment_count>23</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-07 11:06:27 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Assigning to Yong. He offered to complete the upstreaming. In my discussions with him the only item preventing his r+ was the unsatisfactory function name &quot;updateDisabledPluginFiles&quot;.

OK. I would also rewrite the function with early return to follow webkit style if not create a pair of add/remove methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789508</commentid>
    <comment_count>24</comment_count>
      <attachid>179033</attachid>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-12 07:11:19 -0800</bug_when>
    <thetext>Created attachment 179033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789514</commentid>
    <comment_count>25</comment_count>
      <attachid>179036</attachid>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-12 07:25:46 -0800</bug_when>
    <thetext>Created attachment 179036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789517</commentid>
    <comment_count>26</comment_count>
      <attachid>179036</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-12 07:27:34 -0800</bug_when>
    <thetext>Comment on attachment 179036
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests are needed.

please explain why

&gt; Source/WebCore/plugins/PluginDatabase.cpp:317
&gt; +    // Skip plugin files that are disabled by filename

dot at end

&gt; Source/WebCore/plugins/PluginDatabase.cpp:383
&gt; +    return m_disabledPluginFiles.add(fileName).isNewEntry

does it build??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789520</commentid>
    <comment_count>27</comment_count>
      <attachid>179036</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-12 07:29:46 -0800</bug_when>
    <thetext>Comment on attachment 179036
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        No new tests are needed.
&gt; 
&gt; please explain why

please explain why

&gt;&gt; Source/WebCore/plugins/PluginDatabase.cpp:317
&gt;&gt; +    // Skip plugin files that are disabled by filename
&gt; 
&gt; dot at end

dot at end

&gt;&gt; Source/WebCore/plugins/PluginDatabase.cpp:383
&gt;&gt; +    return m_disabledPluginFiles.add(fileName).isNewEntry
&gt; 
&gt; does it build??

does it build??

&gt; Source/WebCore/plugins/PluginDatabase.h:80
&gt; +        bool removeDisabledPluginFile(const String&amp; fileName);
&gt; +
&gt; +        bool addDisabledPluginFile(const String&amp; fileName);

remove extra line

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5156
&gt; +void WebPage::setExtraPluginDirectory(const BlackBerry::Platform::String&amp; path)

is blackberry:: namespace needed.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5160
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);
&gt; +
&gt; +    if (!database)

remove extra line

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5174
&gt; +        d-&gt;m_page-&gt;refreshPlugins(false);

what is false herE?

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5185
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);
&gt; +
&gt; +    if (!database)

remove extra line

what is TRUE herE?

&gt; Source/WebKit/blackberry/Api/WebPage.h:334
&gt; +    void setExtraPluginDirectory(const BlackBerry::Platform::String&amp; path);

is BlackBerry:: namespace needed?

&gt; Source/WebKit/blackberry/Api/WebPage.h:335
&gt; +    void updateDisabledPluginFiles(const BlackBerry::Platform::String&amp; fileName, bool disabled);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789553</commentid>
    <comment_count>28</comment_count>
      <attachid>179046</attachid>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-12 07:57:25 -0800</bug_when>
    <thetext>Created attachment 179046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789560</commentid>
    <comment_count>29</comment_count>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-12 08:04:49 -0800</bug_when>
    <thetext>sorry...i was not able to see the last few comments from antonio before...I will have to make more changes from current patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789673</commentid>
    <comment_count>30</comment_count>
      <attachid>179076</attachid>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-12 10:24:14 -0800</bug_when>
    <thetext>Created attachment 179076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790617</commentid>
    <comment_count>31</comment_count>
      <attachid>179076</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-13 07:56:13 -0800</bug_when>
    <thetext>Comment on attachment 179076
Patch

This looks good to me except the new data member should usually be added after old ones.

Antonio, Max?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790672</commentid>
    <comment_count>32</comment_count>
      <attachid>179076</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-13 09:22:59 -0800</bug_when>
    <thetext>Comment on attachment 179076
Patch

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

Looks good.  Please address the comments below and any concern Yong might have.

Next, reupload the patch with &quot;Reviewed by Antonio Gomes&quot;  in the ChangeLog, and only request commit-queue to land it. No further review needed.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5158
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);

::installedPlugins(true /*whatDoesTheBoolMeanHerePlease*/);

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5161
&gt; +        return;
&gt; +    // Reload

replace this &quot;reload&quot; comment by an empty line.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5178
&gt; +    d-&gt;m_page-&gt;refreshPlugins(false);

refreshPlugins(false /*whatDoesTheBoolMeanHerePlease*/);

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5187
&gt; +    PluginDatabase* database = PluginDatabase::installedPlugins(true);

::installedPlugins(true /*whatDoesTheBoolMeanHerePlease*/);

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5191
&gt; +    if (!(disabled ? database-&gt;addDisabledPluginFile(fileName) : database-&gt;removeDisabledPluginFile(fileName)))

This line does not read well to me. Use a help variable, please.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5200
&gt; +    d-&gt;m_page-&gt;refreshPlugins(false);

refreshPlugins(false /*whatDoesTheBoolMeanHerePlease*/);

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:5202
&gt; +    // Refresh the plugin database if necessary

Add a dot at the end of the sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790761</commentid>
    <comment_count>33</comment_count>
      <attachid>179303</attachid>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-13 11:03:06 -0800</bug_when>
    <thetext>Created attachment 179303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790782</commentid>
    <comment_count>34</comment_count>
      <attachid>179303</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 11:24:24 -0800</bug_when>
    <thetext>Comment on attachment 179303
Patch

Clearing flags on attachment: 179303

Committed r137627: &lt;http://trac.webkit.org/changeset/137627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790783</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 11:24:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791630</commentid>
    <comment_count>36</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-12-14 08:26:30 -0800</bug_when>
    <thetext>reopening for a build error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791631</commentid>
    <comment_count>37</comment_count>
      <attachid>179487</attachid>
    <who name="Parth Patel">parpatel</who>
    <bug_when>2012-12-14 08:28:04 -0800</bug_when>
    <thetext>Created attachment 179487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791676</commentid>
    <comment_count>38</comment_count>
      <attachid>179487</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 09:54:49 -0800</bug_when>
    <thetext>Comment on attachment 179487
Patch

Clearing flags on attachment: 179487

Committed r137753: &lt;http://trac.webkit.org/changeset/137753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791677</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 09:54:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172436</attachid>
            <date>2012-11-05 16:47:37 -0800</date>
            <delta_ts>2012-11-15 16:15:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121105194551.patch</filename>
            <type>text/plain</type>
            <size>10409</size>
            <attacher name="Max Feil">mfeil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkN2U2ZjJlZjI1OTNk
NWM4YWYzYjI5YjM3NzkwMDIzN2Y0ZTkwZi4uOGQ1Zjc1OTU3NWViMjhiNzI4NTIyZTA1MzUxMmE3
YWJkZDRlMzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTA1ICBNYXgg
RmVpbCAgPG1mZWlsQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEFsbG93IHBsdWdp
bnMgdG8gYmUgZGlzYWJsZWQgYnkgc2hhcmVkIGxpYnJhcnkgZmlsZW5hbWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgYSBtZWNoYW5pc20g
dG8gYWxsb3cgcGx1Z2lucyB0byBiZSBkaXNhYmxlZCBieSBzcGVjaWZ5aW5nCisgICAgICAgIHRo
ZWlyIHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lcywgZm9yIGV4YW1wbGUgImxpYmZsYXNocGxheWVy
LnNvIi4KKyAgICAgICAgT25jZSBkaXNhYmxlZCwgYSBwbHVnaW4ncyBzaGFyZWQgbGlicmFyeSBz
aG91bGQgbmV2ZXIgYmUgbG9hZGVkLgorICAgICAgICBUaGlzIHdpbGwgc2F2ZSBtZW1vcnkgYXQg
cnVudGltZS4gT3RoZXIgbWVjaGFuaXNtcyBiYXNlZCBvbgorICAgICAgICBtaW1lIHR5cGUsIGV0
YywgcmVxdWlyZSBsb2FkaW5nIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBqdXN0IHRvCisgICAgICAg
IGRldGVybWluZSBpdHMgc3VwcG9ydGVkIG1pbWUgdHlwZShzKS4KKworICAgICAgICBUaGlzIGZp
eCBpcyBiZWluZyBtYWRlIGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0LCBidXQgSSBoYXZlIGRlY2lk
ZWQKKyAgICAgICAgdG8gbWFrZSB0aGUgUGx1Z2luRGF0YWJhc2UgY2hhbmdlcyBnZW5lcmFsIHNv
IHRoYXQgb3RoZXIgcG9ydHMKKyAgICAgICAgY2FuIHVzZSB0aGlzIG1lY2hhbmlzbSBpZiB0aGV5
IHdpc2guCisKKyAgICAgICAgSSBhbSBub3QgaW5jbHVkaW5nIGEgTGF5b3V0IHRlc3Qgd2l0aCB0
aGlzIHBhdGNoIGJlY2F1c2UgdGhlcmUKKyAgICAgICAgaXMgY3VycmVudGx5IG5vIGZyYW1ld29y
ayB3aXRoaW4gTGF5b3V0VGVzdHMgdG8gYWxsb3cgY2FsbHMKKyAgICAgICAgZnJvbSBhbiBleHRl
cm5hbCBhcHBsaWNhdGlvbiB2aWEgcGxhdGZvcm0gQVBJIGNvZGUgKHN1Y2ggYXMgdGhlCisgICAg
ICAgIFdlYlZpZXcgQVBJKS4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFz
ZTo6Z2V0RGVsZXRlZFBsdWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6
OnVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oOgorICAgICAgICAoUGx1Z2luRGF0YWJhc2UpOgorCiAyMDEyLTExLTA1
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwppbmRleCA1ZWE5MWRiYjkzZjRmZWFlZDJlOWQ5NThlOWFkNmMzMDNjNzJlN2FmLi4zM2Uy
ZjA3NGVlNDhlZTgzNTlkMjZhMGFiMjEzZjI3YjViZGY3OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMS0wNSAgTWF4IEZlaWwgIDxtZmVp
bEByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBwbHVnaW5zIHRvIGJlIGRp
c2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBuZWVkIGEgbWVjaGFuaXNtIHRvIGFsbG93IHBs
dWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc3BlY2lmeWluZworICAgICAgICB0aGVpciBzaGFyZWQg
bGlicmFyeSBmaWxlbmFtZXMsIGZvciBleGFtcGxlICJsaWJmbGFzaHBsYXllci5zbyIuCisgICAg
ICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1Z2luJ3Mgc2hhcmVkIGxpYnJhcnkgc2hvdWxkIG5ldmVy
IGJlIGxvYWRlZC4KKyAgICAgICAgVGhpcyB3aWxsIHNhdmUgbWVtb3J5IGF0IHJ1bnRpbWUuIE90
aGVyIG1lY2hhbmlzbXMgYmFzZWQgb24KKyAgICAgICAgbWltZSB0eXBlLCBldGMsIHJlcXVpcmUg
bG9hZGluZyBvZiB0aGUgc2hhcmVkIGxpYnJhcnkganVzdCB0bworICAgICAgICBkZXRlcm1pbmUg
aXRzIHN1cHBvcnRlZCBtaW1lIHR5cGUocykuCisKKyAgICAgICAgVGhlIG5ldyBXZWJQYWdlOjp1
cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKCkgbWV0aG9kCisgICAgICAgIGhhbmRsZXMgdGhlIGNh
bGwgaW50byBXZWJLaXQgZnJvbSB0aGUgV2ViVmlldyBBUEkuIE5vdGUgdGhhdAorICAgICAgICBX
ZWJQYWdlOjpzZXRFeHRyYVBsdWdpbkRpcmVjdG9yeSgpIGlzIG5vdCBzdHJpY3RseSBwYXJ0IG9m
IHRoaXMKKyAgICAgICAgcGF0Y2gsIGJ1dCBpcyBpbmNsdWRlZCBiZWNhdXNlIGl0IHdhcyBub3Qg
dXBzdHJlYW1lZCB5ZXQgYW5kCisgICAgICAgIHJlcXVpcmVkIHNvbWUgZml4ZXMgdG8gcmVmcmVz
aCB0aGUgcGx1Z2luIGRhdGFiYXNlIGNvcnJlY3RseS4KKworICAgICAgICAqIEFwaS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0cmFQbHVn
aW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyk6CisgICAgICAgICogQXBp
L1dlYlBhZ2UuaDoKKwogMjAxMi0xMS0wNSAgTGlhbmdodWkgQ2hlbiAgPGxpYWNoZW5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRG8gbm90IGRpc3BsYXkgZXJyb3IgcGFnZSBmb3Ig
ZmFpbGVkIGRvd25sb2FkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cAppbmRleCA0NDUyYWZlMWU0YjYzOGI1ZjdkZGEwZWM3YjE3OWQ3YWUzZDlkNmUzLi45YTc3NTdl
OGI1MjViYWZiODA0MGY1ZmVmY2IwZjgyYzFlZDExYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzEyLDExICszMTIsMjcgQEAgdm9pZCBQbHVnaW5E
YXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgUGx1Z2kKICAgICAgICAgbV9wcmVmZXJyZWRQbHVnaW5zLnNldChtaW1lVHlwZS5sb3dl
cigpLCBwbHVnaW4pOwogfQogCitib29sIFBsdWdpbkRhdGFiYXNlOjpmaWxlRXhpc3RzQW5kSXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpIGNvbnN0Cit7CisgICAgaWYgKCFmaWxlRXhp
c3RzKGZpbGVOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFNraXAgcGx1Z2lu
IGZpbGVzIHRoYXQgYXJlIGRpc2FibGVkIGJ5IGZpbGVuYW1lCisgICAgSGFzaFNldDxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBmaWxlc0VuZCA9IG1fZGlzYWJsZWRQbHVnaW5GaWxlcy5lbmQoKTsK
KyAgICBIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGZJdDsKKyAgICBmb3IgKGZJdCA9
IG1fZGlzYWJsZWRQbHVnaW5GaWxlcy5iZWdpbigpOyBmSXQgIT0gZmlsZXNFbmQ7ICsrZkl0KSB7
CisgICAgICAgIGlmIChmaWxlTmFtZS5lbmRzV2l0aCgqZkl0KSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBpZiAoZkl0ICE9IGZpbGVzRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQ
bHVnaW5zKFBsdWdpblNldCYgcGx1Z2lucykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsKICAgICBmb3IgKFBsdWdpblNldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIGlmICghZmlsZUV4aXN0cygoKml0KS0+cGF0aCgpKSkKKyAgICAgICAgaWYgKCFmaWxl
RXhpc3RzQW5kSXNFbmFibGVkKCgqaXQpLT5wYXRoKCkpKQogICAgICAgICAgICAgcGx1Z2lucy5h
ZGQoKml0KTsKICAgICB9CiB9CkBAIC0zNjAsNiArMzc2LDIzIEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OmNsZWFyKCkKICNlbmRpZgogfQogCitib29sIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVEaXNh
YmxlZFBsdWdpbkZpbGVzKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGJvb2wgZGlzYWJsZWQpCit7
CisgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgaWYgKGRpc2FibGVkKSB7CisgICAgICAg
IGlmICghbV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKGZpbGVOYW1lKSkgeworICAgICAg
ICAgICAgbV9kaXNhYmxlZFBsdWdpbkZpbGVzLmFkZChmaWxlTmFtZSk7CisgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2Rp
c2FibGVkUGx1Z2luRmlsZXMuY29udGFpbnMoZmlsZU5hbWUpKSB7CisgICAgICAgICAgICBtX2Rp
c2FibGVkUGx1Z2luRmlsZXMucmVtb3ZlKGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjaGFuZ2VkOworfQorCiAjaWYg
KCFPUyhXSU5DRSkpICYmICghT1MoV0lORE9XUykgfHwgIUVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKSkKIC8vIEZvciBTYWZhcmkvV2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUg
aW1wbGVtZW50ZWQKIC8vIGluIFBsdWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1
c2UgV2ViQ29yZSBjb25zdHJ1Y3RzCkBAIC00NjIsNyArNDk1LDcgQEAgdm9pZCBQbHVnaW5EYXRh
YmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMp
IGNvbnN0CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdpblBhdGhzID0gbGlzdERpcmVjdG9y
eSgqZEl0LCBmaWxlTmFtZUZpbHRlcik7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZvciAoVmVj
dG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBJdCA9IHBsdWdpblBhdGhzLmJlZ2luKCk7IHBJ
dCAhPSBwbHVnaW5zRW5kOyArK3BJdCkgewotICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCpw
SXQpKQorICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzQW5kSXNFbmFibGVkKCpwSXQpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBwYXRocy5hZGQoKnBJdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggYTFjNDRiYzViZjczYThm
YTYwNzllYWIyMTI2ODliMzVhNjQyYWYyNy4uNDkwOWFjNjE3OTUwNjhlMjcxM2JlMzcwMzc1MzI4
MmQ1YzVkZDRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAt
NzQsNiArNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBjbGVhcigpOwog
ICAgICAgICAgICAgbV9wbHVnaW5EaXJlY3RvcmllcyA9IGRpcmVjdG9yaWVzOwogICAgICAgICB9
CisgICAgICAgIGJvb2wgdXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyhjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBib29sIGRpc2FibGVkKTsKIAogICAgICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4g
ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdp
bkRpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EaXJlY3RvcmllczsgfQpAQCAt
ODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JikgY29uc3Q7
CiAgICAgICAgIHZvaWQgZ2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JikgY29uc3Q7CisgICAg
ICAgIGJvb2wgZmlsZUV4aXN0c0FuZElzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAog
ICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWdpbiB3YXMgYWN0dWFsbHkgYWRkZWQg
b3Igbm90IChpdCB3b24ndCBiZSBhZGRlZCBpZiBpdCdzIGEgZHVwbGljYXRlIG9mIGFuIGV4aXN0
aW5nIHBsdWdpbikuCiAgICAgICAgIGJvb2wgYWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4p
OwpAQCAtOTgsNiArMTAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHVw
ZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCk7CiAjZW5kaWYKIAorICAgICAgICBIYXNoU2V0
PFN0cmluZz4gbV9kaXNhYmxlZFBsdWdpbkZpbGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBt
X3BsdWdpbkRpcmVjdG9yaWVzOwogICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZWdpc3RlcmVk
TUlNRVR5cGVzOwogICAgICAgICBQbHVnaW5TZXQgbV9wbHVnaW5zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNzM0MjBjMGRlMjljNDFkYTc5NjllZmNiNmFi
MWMzYTZmNGI3Y2UzNi4uOTIxMTQ4ZmQyNmUwOGEzMjA4NDQ3ZTZhM2E4NGQwMDYxMWM5ZmE5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01MjI5LDYgKzUy
MjksNTIgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclBsdWdpblNpdGVEYXRhKCkKICAgICAgICAgKCpp
dCktPmNsZWFyU2l0ZURhdGEoU3RyaW5nKCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldEV4dHJh
UGx1Z2luRGlyZWN0b3J5KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhdGgp
Cit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUGx1Z2luRGF0YWJhc2U6Omluc3Rh
bGxlZFBsdWdpbnModHJ1ZSk7CisKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1cm47
CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcyA9IGRhdGFiYXNlLT5wbHVn
aW5EaXJlY3RvcmllcygpOworCisgICAgaWYgKHBhdGgubGVuZ3RoKCkgJiYgIXBsdWdpbkRpcmVj
dG9yaWVzLmNvbnRhaW5zKHBhdGguY19zdHIoKSkpIHsKKyAgICAgICAgcGx1Z2luRGlyZWN0b3Jp
ZXMuYXBwZW5kKHBhdGguY19zdHIoKSk7CisgICAgICAgIGRhdGFiYXNlLT5zZXRQbHVnaW5EaXJl
Y3RvcmllcyhwbHVnaW5EaXJlY3Rvcmllcyk7CisgICAgICAgIC8vIENsZWFyIG91dCBldmVyeSBQ
YWdlJ3MgbG9jYWwgY29weSBvZiBQbHVnaW5EYXRhLCBzbyBpdCB3aWxsCisgICAgICAgIC8vIHJl
dHJpZXZlIGl0IGFnYWluIHdoZW4gbmVjZXNzYXJ5LiBPdGhlcndpc2UgZWFjaCBwYWdlIHdpbGwg
YmUKKyAgICAgICAgLy8gdXNpbmcgb2xkIGRhdGEgYW5kIG1heSBlaXRoZXIgZGlyZWN0IGNvbnRl
bnQgdG8gYSBwbHVnaW4gdGhhdAorICAgICAgICAvLyBkb2Vzbid0IGV4aXN0IChjYXVzaW5nIGEg
Y3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbgorICAgICAgICAvLyB0aGF0
IGRvZXMgZXhpc3QuIFdlIGRvIHRoaXMgZXZlbiBpZiBwbHVnaW5zIGFyZSBkaXNhYmxlZCBiZWNh
dXNlCisgICAgICAgIC8vIHRoaXMgc3RlcCBpcyBub3QgZG9uZSB3aGVuIHBsdWdpbnMgZ2V0IGVu
YWJsZWQuCisgICAgICAgIGQtPm1fcGFnZS0+cmVmcmVzaFBsdWdpbnMoZmFsc2UpOworCisgICAg
ICAgIGlmIChkLT5tX3dlYlNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQorICAgICAgICAg
ICAgZGF0YWJhc2UtPnJlZnJlc2goKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXBkYXRl
RGlzYWJsZWRQbHVnaW5GaWxlcyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBm
aWxlTmFtZSwgYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2Ug
PSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyh0cnVlKTsKKyAgICBpZiAoIWRhdGFi
YXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGF0YWJhc2UtPnVwZGF0ZURpc2FibGVk
UGx1Z2luRmlsZXMoU3RyaW5nKGZpbGVOYW1lLmNfc3RyKCkpLCBkaXNhYmxlZCkpIHsKKyAgICAg
ICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBhZ2UncyBsb2NhbCBjb3B5IG9mIFBsdWdpbkRhdGEsIHNv
IGl0IHdpbGwKKyAgICAgICAgLy8gcmV0cmlldmUgaXQgYWdhaW4gd2hlbiBuZWNlc3NhcnkuIE90
aGVyd2lzZSBlYWNoIHBhZ2Ugd2lsbCBiZQorICAgICAgICAvLyB1c2luZyBvbGQgZGF0YSBhbmQg
bWF5IGVpdGhlciBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbiB0aGF0CisgICAgICAgIC8vIGRv
ZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBjcmFzaCkgb3Igbm90IGRpcmVjdCBjb250ZW50IHRvIGEg
cGx1Z2luCisgICAgICAgIC8vIHRoYXQgZG9lcyBleGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBs
dWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1c2UKKyAgICAgICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBk
b25lIHdoZW4gcGx1Z2lucyBnZXQgZW5hYmxlZC4KKyAgICAgICAgZC0+bV9wYWdlLT5yZWZyZXNo
UGx1Z2lucyhmYWxzZSk7CisKKyAgICAgICAgLy8gUmVmcmVzaCB0aGUgcGx1Z2luIGRhdGFiYXNl
IGlmIG5lY2Vzc2FyeQorICAgICAgICBpZiAoZC0+bV93ZWJTZXR0aW5ncy0+YXJlUGx1Z2luc0Vu
YWJsZWQoKSkKKyAgICAgICAgICAgIGRhdGFiYXNlLT5yZWZyZXNoKCk7CisgICAgfQorfQorCiB2
b2lkIFdlYlBhZ2U6Om9uTmV0d29ya0F2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUp
CiB7CiAgICAgdXBkYXRlT25saW5lU3RhdHVzKGF2YWlsYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5oCmluZGV4IGFlNTlkOGY3YTVlOTkxYWZlNzJmNTM5MTEzZjI4OGYy
ZjQxNjg3NmMuLjEyZjRkOTYxM2VjNzFlNzc3YmMzMmFkNjVmNWQ2OTEwNDczMWMyZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCkBAIC0zMzYsNiArMzM2LDggQEAgcHVi
bGljOgogICAgIHZvaWQgbm90aWZ5U2NyZWVuUG93ZXJTdGF0ZUNoYW5nZWQoYm9vbCBwb3dlcmVk
KTsKICAgICB2b2lkIG5vdGlmeUZ1bGxTY3JlZW5WaWRlb0V4aXRlZChib29sIGRvbmUpOwogICAg
IHZvaWQgY2xlYXJQbHVnaW5TaXRlRGF0YSgpOworICAgIHZvaWQgc2V0RXh0cmFQbHVnaW5EaXJl
Y3RvcnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCk7CisgICAgdm9p
ZCB1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcmIGZpbGVOYW1lLCBib29sIGRpc2FibGVkKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCk7CiAgICAgYm9vbCBpc1dlYkdMRW5hYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0V2ViR0xFbmFibGVkKGJvb2wpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174542</attachid>
            <date>2012-11-15 16:15:40 -0800</date>
            <delta_ts>2012-11-28 14:28:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121115191336.patch</filename>
            <type>text/plain</type>
            <size>10379</size>
            <attacher name="Max Feil">mfeil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkN2U2ZjJlZjI1OTNk
NWM4YWYzYjI5YjM3NzkwMDIzN2Y0ZTkwZi4uOGQ1Zjc1OTU3NWViMjhiNzI4NTIyZTA1MzUxMmE3
YWJkZDRlMzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTA1ICBNYXgg
RmVpbCAgPG1mZWlsQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEFsbG93IHBsdWdp
bnMgdG8gYmUgZGlzYWJsZWQgYnkgc2hhcmVkIGxpYnJhcnkgZmlsZW5hbWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgYSBtZWNoYW5pc20g
dG8gYWxsb3cgcGx1Z2lucyB0byBiZSBkaXNhYmxlZCBieSBzcGVjaWZ5aW5nCisgICAgICAgIHRo
ZWlyIHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lcywgZm9yIGV4YW1wbGUgImxpYmZsYXNocGxheWVy
LnNvIi4KKyAgICAgICAgT25jZSBkaXNhYmxlZCwgYSBwbHVnaW4ncyBzaGFyZWQgbGlicmFyeSBz
aG91bGQgbmV2ZXIgYmUgbG9hZGVkLgorICAgICAgICBUaGlzIHdpbGwgc2F2ZSBtZW1vcnkgYXQg
cnVudGltZS4gT3RoZXIgbWVjaGFuaXNtcyBiYXNlZCBvbgorICAgICAgICBtaW1lIHR5cGUsIGV0
YywgcmVxdWlyZSBsb2FkaW5nIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBqdXN0IHRvCisgICAgICAg
IGRldGVybWluZSBpdHMgc3VwcG9ydGVkIG1pbWUgdHlwZShzKS4KKworICAgICAgICBUaGlzIGZp
eCBpcyBiZWluZyBtYWRlIGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0LCBidXQgSSBoYXZlIGRlY2lk
ZWQKKyAgICAgICAgdG8gbWFrZSB0aGUgUGx1Z2luRGF0YWJhc2UgY2hhbmdlcyBnZW5lcmFsIHNv
IHRoYXQgb3RoZXIgcG9ydHMKKyAgICAgICAgY2FuIHVzZSB0aGlzIG1lY2hhbmlzbSBpZiB0aGV5
IHdpc2guCisKKyAgICAgICAgSSBhbSBub3QgaW5jbHVkaW5nIGEgTGF5b3V0IHRlc3Qgd2l0aCB0
aGlzIHBhdGNoIGJlY2F1c2UgdGhlcmUKKyAgICAgICAgaXMgY3VycmVudGx5IG5vIGZyYW1ld29y
ayB3aXRoaW4gTGF5b3V0VGVzdHMgdG8gYWxsb3cgY2FsbHMKKyAgICAgICAgZnJvbSBhbiBleHRl
cm5hbCBhcHBsaWNhdGlvbiB2aWEgcGxhdGZvcm0gQVBJIGNvZGUgKHN1Y2ggYXMgdGhlCisgICAg
ICAgIFdlYlZpZXcgQVBJKS4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFz
ZTo6Z2V0RGVsZXRlZFBsdWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6
OnVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oOgorICAgICAgICAoUGx1Z2luRGF0YWJhc2UpOgorCiAyMDEyLTExLTA1
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwppbmRleCA1ZWE5MWRiYjkzZjRmZWFlZDJlOWQ5NThlOWFkNmMzMDNjNzJlN2FmLi4zM2Uy
ZjA3NGVlNDhlZTgzNTlkMjZhMGFiMjEzZjI3YjViZGY3OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMS0wNSAgTWF4IEZlaWwgIDxtZmVp
bEByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBwbHVnaW5zIHRvIGJlIGRp
c2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBuZWVkIGEgbWVjaGFuaXNtIHRvIGFsbG93IHBs
dWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc3BlY2lmeWluZworICAgICAgICB0aGVpciBzaGFyZWQg
bGlicmFyeSBmaWxlbmFtZXMsIGZvciBleGFtcGxlICJsaWJmbGFzaHBsYXllci5zbyIuCisgICAg
ICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1Z2luJ3Mgc2hhcmVkIGxpYnJhcnkgc2hvdWxkIG5ldmVy
IGJlIGxvYWRlZC4KKyAgICAgICAgVGhpcyB3aWxsIHNhdmUgbWVtb3J5IGF0IHJ1bnRpbWUuIE90
aGVyIG1lY2hhbmlzbXMgYmFzZWQgb24KKyAgICAgICAgbWltZSB0eXBlLCBldGMsIHJlcXVpcmUg
bG9hZGluZyBvZiB0aGUgc2hhcmVkIGxpYnJhcnkganVzdCB0bworICAgICAgICBkZXRlcm1pbmUg
aXRzIHN1cHBvcnRlZCBtaW1lIHR5cGUocykuCisKKyAgICAgICAgVGhlIG5ldyBXZWJQYWdlOjp1
cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKCkgbWV0aG9kCisgICAgICAgIGhhbmRsZXMgdGhlIGNh
bGwgaW50byBXZWJLaXQgZnJvbSB0aGUgV2ViVmlldyBBUEkuIE5vdGUgdGhhdAorICAgICAgICBX
ZWJQYWdlOjpzZXRFeHRyYVBsdWdpbkRpcmVjdG9yeSgpIGlzIG5vdCBzdHJpY3RseSBwYXJ0IG9m
IHRoaXMKKyAgICAgICAgcGF0Y2gsIGJ1dCBpcyBpbmNsdWRlZCBiZWNhdXNlIGl0IHdhcyBub3Qg
dXBzdHJlYW1lZCB5ZXQgYW5kCisgICAgICAgIHJlcXVpcmVkIHNvbWUgZml4ZXMgdG8gcmVmcmVz
aCB0aGUgcGx1Z2luIGRhdGFiYXNlIGNvcnJlY3RseS4KKworICAgICAgICAqIEFwaS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0cmFQbHVn
aW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyk6CisgICAgICAgICogQXBp
L1dlYlBhZ2UuaDoKKwogMjAxMi0xMS0wNSAgTGlhbmdodWkgQ2hlbiAgPGxpYWNoZW5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRG8gbm90IGRpc3BsYXkgZXJyb3IgcGFnZSBmb3Ig
ZmFpbGVkIGRvd25sb2FkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cAppbmRleCA0NDUyYWZlMWU0YjYzOGI1ZjdkZGEwZWM3YjE3OWQ3YWUzZDlkNmUzLi5lMzY5Yzdk
YTM0OWU5NDFhNzhiOTNmZjU1NjZmZWExOTRhODFkZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzEyLDExICszMTIsMjUgQEAgdm9pZCBQbHVnaW5E
YXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgUGx1Z2kKICAgICAgICAgbV9wcmVmZXJyZWRQbHVnaW5zLnNldChtaW1lVHlwZS5sb3dl
cigpLCBwbHVnaW4pOwogfQogCitib29sIFBsdWdpbkRhdGFiYXNlOjpmaWxlRXhpc3RzQW5kSXNO
b3REaXNhYmxlZChjb25zdCBTdHJpbmcmIGZpbGVOYW1lKSBjb25zdAoreworICAgIGlmICghZmls
ZUV4aXN0cyhmaWxlTmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBTa2lwIHBs
dWdpbiBmaWxlcyB0aGF0IGFyZSBkaXNhYmxlZCBieSBmaWxlbmFtZQorICAgIEhhc2hTZXQ8U3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgZmlsZXNFbmQgPSBtX2Rpc2FibGVkUGx1Z2luRmlsZXMuZW5k
KCk7CisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAgICBmb3IgKGl0
ID0gbV9kaXNhYmxlZFBsdWdpbkZpbGVzLmJlZ2luKCk7IGl0ICE9IGZpbGVzRW5kOyArK2l0KSB7
CisgICAgICAgIGlmIChmaWxlTmFtZS5lbmRzV2l0aCgqaXQpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBpdCA9PSBmaWxlc0VuZDsKK30KKwogdm9pZCBQbHVnaW5EYXRh
YmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JiBwbHVnaW5zKSBjb25zdAogewogICAg
IFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVuZCgpOwogICAgIGZv
ciAoUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2lucy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCgqaXQpLT5wYXRoKCkpKQor
ICAgICAgICBpZiAoIWZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKCgqaXQpLT5wYXRoKCkpKQog
ICAgICAgICAgICAgcGx1Z2lucy5hZGQoKml0KTsKICAgICB9CiB9CkBAIC0zNjAsNiArMzc0LDIz
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmNsZWFyKCkKICNlbmRpZgogfQogCitib29sIFBsdWdp
bkRhdGFiYXNlOjp1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGJvb2wgZGlzYWJsZWQpCit7CisgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgaWYg
KGRpc2FibGVkKSB7CisgICAgICAgIGlmICghbV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5z
KGZpbGVOYW1lKSkgeworICAgICAgICAgICAgbV9kaXNhYmxlZFBsdWdpbkZpbGVzLmFkZChmaWxl
TmFtZSk7CisgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChtX2Rpc2FibGVkUGx1Z2luRmlsZXMuY29udGFpbnMoZmlsZU5hbWUp
KSB7CisgICAgICAgICAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVtb3ZlKGZpbGVOYW1lKTsK
KyAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBjaGFuZ2VkOworfQorCiAjaWYgKCFPUyhXSU5DRSkpICYmICghT1MoV0lORE9XUykgfHwgIUVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSkKIC8vIEZvciBTYWZhcmkvV2luIHRoZSBmb2xsb3dp
bmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8vIGluIFBsdWdpbkRhdGFiYXNlV2lu
LmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25zdHJ1Y3RzCkBAIC00NjIsNyArNDkz
LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhh
c2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdp
blBhdGhzID0gbGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFtZUZpbHRlcik7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5k
KCk7CiAgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBJdCA9IHBs
dWdpblBhdGhzLmJlZ2luKCk7IHBJdCAhPSBwbHVnaW5zRW5kOyArK3BJdCkgewotICAgICAgICAg
ICAgaWYgKCFmaWxlRXhpc3RzKCpwSXQpKQorICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzQW5k
SXNOb3REaXNhYmxlZCgqcEl0KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgcGF0aHMuYWRkKCpwSXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5oCmluZGV4IGExYzQ0YmM1YmY3M2E4ZmE2MDc5ZWFiMjEyNjg5YjM1YTY0MmFmMjcuLjlmZWRk
MWQzYzhjYTdlYjU2ZGE3OWQ2MWQ0ZWFmMzc1ZjJmYmUwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTc0LDYgKzc0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgICAgIG1fcGx1Z2luRGlyZWN0b3JpZXMg
PSBkaXJlY3RvcmllczsKICAgICAgICAgfQorICAgICAgICBib29sIHVwZGF0ZURpc2FibGVkUGx1
Z2luRmlsZXMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBkaXNhYmxlZCk7CiAKICAgICAg
ICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpOwogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcygpIGNvbnN0IHsgcmV0dXJuIG1f
cGx1Z2luRGlyZWN0b3JpZXM7IH0KQEAgLTg5LDYgKzkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZ2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVz
KEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICB2b2lkIGdldERlbGV0ZWRQbHVnaW5z
KFBsdWdpblNldCYpIGNvbnN0OworICAgICAgICBib29sIGZpbGVFeGlzdHNBbmRJc05vdERpc2Fi
bGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVybnMgd2hldGhlciB0
aGUgcGx1Z2luIHdhcyBhY3R1YWxseSBhZGRlZCBvciBub3QgKGl0IHdvbid0IGJlIGFkZGVkIGlm
IGl0J3MgYSBkdXBsaWNhdGUgb2YgYW4gZXhpc3RpbmcgcGx1Z2luKS4KICAgICAgICAgYm9vbCBh
ZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPik7CkBAIC05OCw2ICsxMDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUo
KTsKICNlbmRpZgogCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Rpc2FibGVkUGx1Z2luRmls
ZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcGx1Z2luRGlyZWN0b3JpZXM7CiAgICAgICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRNSU1FVHlwZXM7CiAgICAgICAgIFBsdWdpblNl
dCBtX3BsdWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRl
eCA3MzQyMGMwZGUyOWM0MWRhNzk2OWVmY2I2YWIxYzNhNmY0YjdjZTM2Li4yMzIxZDhiZWRlODQ4
ZTE1MTY3NWE3OWNjZTI5OTBhZTg5NjZmMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5jcHAKQEAgLTUyMjksNiArNTIyOSw1MSBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFy
UGx1Z2luU2l0ZURhdGEoKQogICAgICAgICAoKml0KS0+Y2xlYXJTaXRlRGF0YShTdHJpbmcoKSk7
CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0
YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyh0cnVlKTsKKyAgICBpZiAo
IWRhdGFiYXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5E
aXJlY3RvcmllcyA9IGRhdGFiYXNlLT5wbHVnaW5EaXJlY3RvcmllcygpOworCisgICAgaWYgKHBh
dGgubGVuZ3RoKCkgJiYgIXBsdWdpbkRpcmVjdG9yaWVzLmNvbnRhaW5zKHBhdGguY19zdHIoKSkp
IHsKKyAgICAgICAgcGx1Z2luRGlyZWN0b3JpZXMuYXBwZW5kKHBhdGguY19zdHIoKSk7CisgICAg
ICAgIGRhdGFiYXNlLT5zZXRQbHVnaW5EaXJlY3RvcmllcyhwbHVnaW5EaXJlY3Rvcmllcyk7Cisg
ICAgICAgIC8vIENsZWFyIG91dCBldmVyeSBQYWdlJ3MgbG9jYWwgY29weSBvZiBQbHVnaW5EYXRh
LCBzbyBpdCB3aWxsCisgICAgICAgIC8vIHJldHJpZXZlIGl0IGFnYWluIHdoZW4gbmVjZXNzYXJ5
LiBPdGhlcndpc2UgZWFjaCBwYWdlIHdpbGwgYmUKKyAgICAgICAgLy8gdXNpbmcgb2xkIGRhdGEg
YW5kIG1heSBlaXRoZXIgZGlyZWN0IGNvbnRlbnQgdG8gYSBwbHVnaW4gdGhhdAorICAgICAgICAv
LyBkb2Vzbid0IGV4aXN0IChjYXVzaW5nIGEgY3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0
byBhIHBsdWdpbgorICAgICAgICAvLyB0aGF0IGRvZXMgZXhpc3QuIFdlIGRvIHRoaXMgZXZlbiBp
ZiBwbHVnaW5zIGFyZSBkaXNhYmxlZCBiZWNhdXNlCisgICAgICAgIC8vIHRoaXMgc3RlcCBpcyBu
b3QgZG9uZSB3aGVuIHBsdWdpbnMgZ2V0IGVuYWJsZWQuCisgICAgICAgIGQtPm1fcGFnZS0+cmVm
cmVzaFBsdWdpbnMoZmFsc2UpOworCisgICAgICAgIGlmIChkLT5tX3dlYlNldHRpbmdzLT5hcmVQ
bHVnaW5zRW5hYmxlZCgpKQorICAgICAgICAgICAgZGF0YWJhc2UtPnJlZnJlc2goKTsKKyAgICB9
Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyhjb25zdCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBkaXNhYmxlZCkKK3sKKyAg
ICBQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1
Z2lucyh0cnVlKTsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoZGF0YWJhc2UtPnVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoU3RyaW5nKGZpbGVOYW1lLmNf
c3RyKCkpLCBkaXNhYmxlZCkpIHsKKyAgICAgICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBhZ2UncyBs
b2NhbCBjb3B5IG9mIFBsdWdpbkRhdGEsIHNvIGl0IHdpbGwKKyAgICAgICAgLy8gcmV0cmlldmUg
aXQgYWdhaW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lzZSBlYWNoIHBhZ2Ugd2lsbCBiZQorICAg
ICAgICAvLyB1c2luZyBvbGQgZGF0YSBhbmQgbWF5IGVpdGhlciBkaXJlY3QgY29udGVudCB0byBh
IHBsdWdpbiB0aGF0CisgICAgICAgIC8vIGRvZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBjcmFzaCkg
b3Igbm90IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luCisgICAgICAgIC8vIHRoYXQgZG9lcyBl
eGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1c2UKKyAg
ICAgICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBkb25lIHdoZW4gcGx1Z2lucyBnZXQgZW5hYmxlZC4K
KyAgICAgICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lucyhmYWxzZSk7CisKKyAgICAgICAgLy8g
UmVmcmVzaCB0aGUgcGx1Z2luIGRhdGFiYXNlIGlmIG5lY2Vzc2FyeQorICAgICAgICBpZiAoZC0+
bV93ZWJTZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGRhdGFiYXNl
LT5yZWZyZXNoKCk7CisgICAgfQorfQorCiB2b2lkIFdlYlBhZ2U6Om9uTmV0d29ya0F2YWlsYWJp
bGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7CiAgICAgdXBkYXRlT25saW5lU3RhdHVzKGF2
YWlsYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmluZGV4IGFlNTlk
OGY3YTVlOTkxYWZlNzJmNTM5MTEzZjI4OGYyZjQxNjg3NmMuLjEyZjRkOTYxM2VjNzFlNzc3YmMz
MmFkNjVmNWQ2OTEwNDczMWMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5oCkBAIC0zMzYsNiArMzM2LDggQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5U2NyZWVuUG93
ZXJTdGF0ZUNoYW5nZWQoYm9vbCBwb3dlcmVkKTsKICAgICB2b2lkIG5vdGlmeUZ1bGxTY3JlZW5W
aWRlb0V4aXRlZChib29sIGRvbmUpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5TaXRlRGF0YSgpOwor
ICAgIHZvaWQgc2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlN0cmluZyYgcGF0aCk7CisgICAgdm9pZCB1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKGNv
bnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZpbGVOYW1lLCBib29sIGRpc2FibGVk
KTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCk7CiAgICAg
Ym9vbCBpc1dlYkdMRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V2ViR0xFbmFibGVkKGJv
b2wpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176580</attachid>
            <date>2012-11-28 14:28:12 -0800</date>
            <delta_ts>2012-11-30 22:53:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121128172547.patch</filename>
            <type>text/plain</type>
            <size>10154</size>
            <attacher name="Max Feil">mfeil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ2OTNlMGUwZDgzNzA1
MjdjMjZlNTFmYWZkZTlhZTIzMzVlNjdkMC4uN2FiNjhlYmY2ZTcwMWRjYjcwM2M4NWJmZjJmMTU3
MTAyNmJkYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTA1ICBNYXgg
RmVpbCAgPG1mZWlsQHJpbS5jb20+CisKKyAgICAgICAgQWxsb3cgcGx1Z2lucyB0byBiZSBkaXNh
YmxlZCBieSBzaGFyZWQgbGlicmFyeSBmaWxlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbmVlZCBhIG1lY2hhbmlzbSB0byBhbGxvdyBwbHVn
aW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNwZWNpZnlpbmcKKyAgICAgICAgdGhlaXIgc2hhcmVkIGxp
YnJhcnkgZmlsZW5hbWVzLCBmb3IgZXhhbXBsZSAibGliZmxhc2hwbGF5ZXIuc28iLgorICAgICAg
ICBPbmNlIGRpc2FibGVkLCBhIHBsdWdpbidzIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCBuZXZlciBi
ZSBsb2FkZWQuCisgICAgICAgIFRoaXMgd2lsbCBzYXZlIG1lbW9yeSBhdCBydW50aW1lLiBPdGhl
ciBtZWNoYW5pc21zIGJhc2VkIG9uCisgICAgICAgIG1pbWUgdHlwZSwgZXRjLCByZXF1aXJlIGxv
YWRpbmcgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGp1c3QgdG8KKyAgICAgICAgZGV0ZXJtaW5lIGl0
cyBzdXBwb3J0ZWQgbWltZSB0eXBlKHMpLgorCisgICAgICAgIFRoaXMgZml4IGlzIGJlaW5nIG1h
ZGUgZm9yIHRoZSBCbGFja0JlcnJ5IHBvcnQsIGJ1dCBJIGhhdmUgZGVjaWRlZAorICAgICAgICB0
byBtYWtlIHRoZSBQbHVnaW5EYXRhYmFzZSBjaGFuZ2VzIGdlbmVyYWwgc28gdGhhdCBvdGhlciBw
b3J0cworICAgICAgICBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIGlmIHRoZXkgd2lzaC4KKworICAg
ICAgICBJIGFtIG5vdCBpbmNsdWRpbmcgYSBMYXlvdXQgdGVzdCB3aXRoIHRoaXMgcGF0Y2ggYmVj
YXVzZSB0aGVyZQorICAgICAgICBpcyBjdXJyZW50bHkgbm8gZnJhbWV3b3JrIHdpdGhpbiBMYXlv
dXRUZXN0cyB0byBhbGxvdyBjYWxscworICAgICAgICBmcm9tIGFuIGV4dGVybmFsIGFwcGxpY2F0
aW9uIHZpYSBwbGF0Zm9ybSBBUEkgY29kZSAoc3VjaCBhcyB0aGUKKyAgICAgICAgV2ViVmlldyBB
UEkpLgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6ZmlsZUV4aXN0c0FuZElzRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVk
UGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6dXBkYXRlRGlzYWJs
ZWRQbHVnaW5GaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1
Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgIChQbHVnaW5EYXRhYmFzZSk6CisKIDIwMTItMTEtMjggIEFsZXhhbmRydSBD
aGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gRWxl
bWVudHMgdXNpbmcgdHJhbnNmb3JtcyBhcmUgbm90IHJlcGFpbnRlZCBjb3JyZWN0bHkgd2hlbiBy
ZW5kZXJlZCBpbiBhIHJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggN2E1
NmFmZjUyZjcyMWZkMTJmMGIzMjUyMjhjMzg0MGNlOTE5MjA5Yi4uZGRiMTVmOTViZDhlNWM1OGU4
MWQ0ZjM0NjU5MGRkYzQzNmVkZjMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMTEtMDUgIE1heCBGZWlsICA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBuZWVkIGEgbWVjaGFuaXNtIHRvIGFsbG93IHBsdWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc3Bl
Y2lmeWluZworICAgICAgICB0aGVpciBzaGFyZWQgbGlicmFyeSBmaWxlbmFtZXMsIGZvciBleGFt
cGxlICJsaWJmbGFzaHBsYXllci5zbyIuCisgICAgICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1Z2lu
J3Mgc2hhcmVkIGxpYnJhcnkgc2hvdWxkIG5ldmVyIGJlIGxvYWRlZC4KKyAgICAgICAgVGhpcyB3
aWxsIHNhdmUgbWVtb3J5IGF0IHJ1bnRpbWUuIE90aGVyIG1lY2hhbmlzbXMgYmFzZWQgb24KKyAg
ICAgICAgbWltZSB0eXBlLCBldGMsIHJlcXVpcmUgbG9hZGluZyBvZiB0aGUgc2hhcmVkIGxpYnJh
cnkganVzdCB0bworICAgICAgICBkZXRlcm1pbmUgaXRzIHN1cHBvcnRlZCBtaW1lIHR5cGUocyku
CisKKyAgICAgICAgVGhlIG5ldyBXZWJQYWdlOjp1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKCkg
bWV0aG9kCisgICAgICAgIGhhbmRsZXMgdGhlIGNhbGwgaW50byBXZWJLaXQgZnJvbSB0aGUgV2Vi
VmlldyBBUEkuIE5vdGUgdGhhdAorICAgICAgICBXZWJQYWdlOjpzZXRFeHRyYVBsdWdpbkRpcmVj
dG9yeSgpIGlzIG5vdCBzdHJpY3RseSBwYXJ0IG9mIHRoaXMKKyAgICAgICAgcGF0Y2gsIGJ1dCBp
cyBpbmNsdWRlZCBiZWNhdXNlIGl0IHdhcyBub3QgdXBzdHJlYW1lZCB5ZXQgYW5kCisgICAgICAg
IHJlcXVpcmVkIHNvbWUgZml4ZXMgdG8gcmVmcmVzaCB0aGUgcGx1Z2luIGRhdGFiYXNlIGNvcnJl
Y3RseS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6dXBkYXRlRGlzYWJs
ZWRQbHVnaW5GaWxlcyk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoKKwogMjAxMi0xMS0yNyAg
SmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29uc29s
aWRhdGUgRnJhbWVMb2FkZXI6OmxvYWQoKSBpbnRvIG9uZSBmdW5jdGlvbiB0YWtpbmcgYSBGcmFt
ZUxvYWRSZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmlu
ZGV4IDQ0NTJhZmUxZTRiNjM4YjVmN2RkYTBlYzdiMTc5ZDdhZTNkOWQ2ZTMuLjE5ZTI1NGYyZjVk
OGQyZWM0NWY4NTFjMGM1MDgwM2I0NjBlMTQ4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMTIsMTEgKzMxMiwyMCBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBQbHVnaQogICAgICAgICBtX3ByZWZlcnJlZFBsdWdpbnMuc2V0KG1pbWVUeXBlLmxvd2VyKCks
IHBsdWdpbik7CiB9CiAKK2Jvb2wgUGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERp
c2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0Cit7CisgICAgLy8gU2tpcCBwbHVn
aW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUKKyAgICBpZiAobV9kaXNhYmxl
ZFBsdWdpbkZpbGVzLmNvbnRhaW5zKHBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZmlsZUV4aXN0cyhmaWxlUGF0aCk7Cit9CisK
IHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYgcGx1Z2lu
cykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lu
cy5lbmQoKTsKICAgICBmb3IgKFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdp
bnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cygo
Kml0KS0+cGF0aCgpKSkKKyAgICAgICAgaWYgKCFmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZCgo
Kml0KS0+cGF0aCgpKSkKICAgICAgICAgICAgIHBsdWdpbnMuYWRkKCppdCk7CiAgICAgfQogfQpA
QCAtMzYwLDYgKzM2OSwyMSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpjbGVhcigpCiAjZW5kaWYK
IH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyhjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGRpc2FibGVkKQoreworICAgIGJvb2wgY2hhbmdlZCA9
IGZhbHNlOworICAgIGlmIChkaXNhYmxlZCkgeworICAgICAgICBpZiAobV9kaXNhYmxlZFBsdWdp
bkZpbGVzLmFkZChmaWxlTmFtZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2Rpc2FibGVkUGx1Z2luRmlsZXMuY29u
dGFpbnMoZmlsZU5hbWUpKSB7CisgICAgICAgICAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVt
b3ZlKGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBjaGFuZ2VkOworfQorCiAjaWYgKCFPUyhXSU5DRSkpICYmICghT1Mo
V0lORE9XUykgfHwgIUVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSkKIC8vIEZvciBTYWZhcmkv
V2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8vIGluIFBs
dWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25zdHJ1Y3Rz
CkBAIC00NjIsNyArNDg2LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJ
bkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHBsdWdpblBhdGhzID0gbGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFtZUZpbHRl
cik7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwbHVnaW5zRW5kID0g
cGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIHBJdCA9IHBsdWdpblBhdGhzLmJlZ2luKCk7IHBJdCAhPSBwbHVnaW5zRW5kOyArK3BJ
dCkgewotICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCpwSXQpKQorICAgICAgICAgICAgaWYg
KCFmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZCgqcEl0KSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRkKCpwSXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGExYzQ0YmM1YmY3M2E4ZmE2MDc5ZWFiMjEyNjg5YjM1
YTY0MmFmMjcuLjlmZWRkMWQzYzhjYTdlYjU2ZGE3OWQ2MWQ0ZWFmMzc1ZjJmYmUwMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTc0LDYgKzc0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgICAgIG1fcGx1
Z2luRGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKICAgICAgICAgfQorICAgICAgICBib29sIHVw
ZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBkaXNh
YmxlZCk7CiAKICAgICAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVnaW5EaXJl
Y3RvcmllcygpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcygpIGNv
bnN0IHsgcmV0dXJuIG1fcGx1Z2luRGlyZWN0b3JpZXM7IH0KQEAgLTg5LDYgKzkwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZ2V0UGx1Z2luUGF0
aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICB2b2lkIGdl
dERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYpIGNvbnN0OworICAgICAgICBib29sIGZpbGVFeGlz
dHNBbmRJc05vdERpc2FibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgICAgIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgcGx1Z2luIHdhcyBhY3R1YWxseSBhZGRlZCBvciBub3QgKGl0IHdv
bid0IGJlIGFkZGVkIGlmIGl0J3MgYSBkdXBsaWNhdGUgb2YgYW4gZXhpc3RpbmcgcGx1Z2luKS4K
ICAgICAgICAgYm9vbCBhZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPik7CkBAIC05OCw2ICsx
MDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUGVyc2lzdGVu
dE1ldGFkYXRhQ2FjaGUoKTsKICNlbmRpZgogCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Rp
c2FibGVkUGx1Z2luRmlsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcGx1Z2luRGlyZWN0
b3JpZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRNSU1FVHlwZXM7CiAg
ICAgICAgIFBsdWdpblNldCBtX3BsdWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcAppbmRleCBjNmQzM2ZjYTA0YzY4M2VhMjJmOGMxZTg5MThjOWFlZWUyNjQ4ZWJh
Li43OGI1YmU0OTBlY2Q2ZTkwZTI5Yzk0OGI2NzI1NzJlMDllOGY4YjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTUxMTIsNiArNTExMiw1NCBAQCB2b2lk
IFdlYlBhZ2U6OmNsZWFyUGx1Z2luU2l0ZURhdGEoKQogICAgICAgICAoKml0KS0+Y2xlYXJTaXRl
RGF0YShTdHJpbmcoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3Rv
cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCkKK3sKKyAgICBQbHVn
aW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyh0
cnVlKTsKKworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IHBsdWdpbkRpcmVjdG9yaWVzID0gZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9yaWVz
KCk7CisKKyAgICBpZiAocGF0aC5sZW5ndGgoKSAmJiAhcGx1Z2luRGlyZWN0b3JpZXMuY29udGFp
bnMocGF0aC5jX3N0cigpKSkgeworICAgICAgICBwbHVnaW5EaXJlY3Rvcmllcy5hcHBlbmQocGF0
aC5jX3N0cigpKTsKKyAgICAgICAgZGF0YWJhc2UtPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBsdWdp
bkRpcmVjdG9yaWVzKTsKKyAgICAgICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBhZ2UncyBsb2NhbCBj
b3B5IG9mIFBsdWdpbkRhdGEsIHNvIGl0IHdpbGwKKyAgICAgICAgLy8gcmV0cmlldmUgaXQgYWdh
aW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lzZSBlYWNoIHBhZ2Ugd2lsbCBiZQorICAgICAgICAv
LyB1c2luZyBvbGQgZGF0YSBhbmQgbWF5IGVpdGhlciBkaXJlY3QgY29udGVudCB0byBhIHBsdWdp
biB0aGF0CisgICAgICAgIC8vIGRvZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBjcmFzaCkgb3Igbm90
IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luCisgICAgICAgIC8vIHRoYXQgZG9lcyBleGlzdC4g
V2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1c2UKKyAgICAgICAg
Ly8gdGhpcyBzdGVwIGlzIG5vdCBkb25lIHdoZW4gcGx1Z2lucyBnZXQgZW5hYmxlZC4KKyAgICAg
ICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lucyhmYWxzZSk7CisKKyAgICAgICAgaWYgKGQtPm1f
d2ViU2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCkpCisgICAgICAgICAgICBkYXRhYmFzZS0+
cmVmcmVzaCgpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjp1cGRhdGVEaXNhYmxlZFBsdWdp
bkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZpbGVOYW1lLCBib29s
IGRpc2FibGVkKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9IFBsdWdpbkRhdGFi
YXNlOjppbnN0YWxsZWRQbHVnaW5zKHRydWUpOworCisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFkYXRhYmFzZS0+dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxl
cyhTdHJpbmcoZmlsZU5hbWUuY19zdHIoKSksIGRpc2FibGVkKSkKKyAgICAgICAgcmV0dXJuOyAv
LyBObyBjaGFuZ2UKKworICAgIC8vIENsZWFyIG91dCBldmVyeSBQYWdlJ3MgbG9jYWwgY29weSBv
ZiBQbHVnaW5EYXRhLCBzbyBpdCB3aWxsCisgICAgLy8gcmV0cmlldmUgaXQgYWdhaW4gd2hlbiBu
ZWNlc3NhcnkuIE90aGVyd2lzZSBlYWNoIHBhZ2Ugd2lsbCBiZQorICAgIC8vIHVzaW5nIG9sZCBk
YXRhIGFuZCBtYXkgZWl0aGVyIGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luIHRoYXQKKyAgICAv
LyBkb2Vzbid0IGV4aXN0IChjYXVzaW5nIGEgY3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0
byBhIHBsdWdpbgorICAgIC8vIHRoYXQgZG9lcyBleGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBs
dWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1c2UKKyAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGRvbmUg
d2hlbiBwbHVnaW5zIGdldCBlbmFibGVkLgorICAgIGQtPm1fcGFnZS0+cmVmcmVzaFBsdWdpbnMo
ZmFsc2UpOworCisgICAgLy8gUmVmcmVzaCB0aGUgcGx1Z2luIGRhdGFiYXNlIGlmIG5lY2Vzc2Fy
eQorICAgIGlmIChkLT5tX3dlYlNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQorICAgICAg
ICBkYXRhYmFzZS0+cmVmcmVzaCgpOworfQorCiB2b2lkIFdlYlBhZ2U6Om9uTmV0d29ya0F2YWls
YWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7CiAgICAgdXBkYXRlT25saW5lU3RhdHVz
KGF2YWlsYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmluZGV4IGZj
NzViMGY5YWY2NDg1MGM5MTJkNWI3MGNmZjFkYTFjNDRjOWJkOGUuLjIyN2VhMzRkYmM5MzZlZjRj
NjA4NGQxYjIzZTU1ZGQwYmIyYTM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5oCkBAIC0zMzEsNiArMzMxLDggQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5U2NyZWVu
UG93ZXJTdGF0ZUNoYW5nZWQoYm9vbCBwb3dlcmVkKTsKICAgICB2b2lkIG5vdGlmeUZ1bGxTY3Jl
ZW5WaWRlb0V4aXRlZChib29sIGRvbmUpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5TaXRlRGF0YSgp
OworICAgIHZvaWQgc2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgcGF0aCk7CisgICAgdm9pZCB1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVz
KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZpbGVOYW1lLCBib29sIGRpc2Fi
bGVkKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCk7CiAg
ICAgYm9vbCBpc1dlYkdMRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V2ViR0xFbmFibGVk
KGJvb2wpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177090</attachid>
            <date>2012-11-30 22:53:14 -0800</date>
            <delta_ts>2012-12-13 11:08:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121201015044.patch</filename>
            <type>text/plain</type>
            <size>10138</size>
            <attacher name="Max Feil">mfeil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ2OTNlMGUwZDgzNzA1
MjdjMjZlNTFmYWZkZTlhZTIzMzVlNjdkMC4uN2FiNjhlYmY2ZTcwMWRjYjcwM2M4NWJmZjJmMTU3
MTAyNmJkYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTExLTA1ICBNYXgg
RmVpbCAgPG1mZWlsQHJpbS5jb20+CisKKyAgICAgICAgQWxsb3cgcGx1Z2lucyB0byBiZSBkaXNh
YmxlZCBieSBzaGFyZWQgbGlicmFyeSBmaWxlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbmVlZCBhIG1lY2hhbmlzbSB0byBhbGxvdyBwbHVn
aW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNwZWNpZnlpbmcKKyAgICAgICAgdGhlaXIgc2hhcmVkIGxp
YnJhcnkgZmlsZW5hbWVzLCBmb3IgZXhhbXBsZSAibGliZmxhc2hwbGF5ZXIuc28iLgorICAgICAg
ICBPbmNlIGRpc2FibGVkLCBhIHBsdWdpbidzIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCBuZXZlciBi
ZSBsb2FkZWQuCisgICAgICAgIFRoaXMgd2lsbCBzYXZlIG1lbW9yeSBhdCBydW50aW1lLiBPdGhl
ciBtZWNoYW5pc21zIGJhc2VkIG9uCisgICAgICAgIG1pbWUgdHlwZSwgZXRjLCByZXF1aXJlIGxv
YWRpbmcgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGp1c3QgdG8KKyAgICAgICAgZGV0ZXJtaW5lIGl0
cyBzdXBwb3J0ZWQgbWltZSB0eXBlKHMpLgorCisgICAgICAgIFRoaXMgZml4IGlzIGJlaW5nIG1h
ZGUgZm9yIHRoZSBCbGFja0JlcnJ5IHBvcnQsIGJ1dCBJIGhhdmUgZGVjaWRlZAorICAgICAgICB0
byBtYWtlIHRoZSBQbHVnaW5EYXRhYmFzZSBjaGFuZ2VzIGdlbmVyYWwgc28gdGhhdCBvdGhlciBw
b3J0cworICAgICAgICBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIGlmIHRoZXkgd2lzaC4KKworICAg
ICAgICBJIGFtIG5vdCBpbmNsdWRpbmcgYSBMYXlvdXQgdGVzdCB3aXRoIHRoaXMgcGF0Y2ggYmVj
YXVzZSB0aGVyZQorICAgICAgICBpcyBjdXJyZW50bHkgbm8gZnJhbWV3b3JrIHdpdGhpbiBMYXlv
dXRUZXN0cyB0byBhbGxvdyBjYWxscworICAgICAgICBmcm9tIGFuIGV4dGVybmFsIGFwcGxpY2F0
aW9uIHZpYSBwbGF0Zm9ybSBBUEkgY29kZSAoc3VjaCBhcyB0aGUKKyAgICAgICAgV2ViVmlldyBB
UEkpLgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6ZmlsZUV4aXN0c0FuZElzRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVk
UGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6dXBkYXRlRGlzYWJs
ZWRQbHVnaW5GaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1
Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgIChQbHVnaW5EYXRhYmFzZSk6CisKIDIwMTItMTEtMjggIEFsZXhhbmRydSBD
aGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gRWxl
bWVudHMgdXNpbmcgdHJhbnNmb3JtcyBhcmUgbm90IHJlcGFpbnRlZCBjb3JyZWN0bHkgd2hlbiBy
ZW5kZXJlZCBpbiBhIHJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggN2E1
NmFmZjUyZjcyMWZkMTJmMGIzMjUyMjhjMzg0MGNlOTE5MjA5Yi4uZGRiMTVmOTViZDhlNWM1OGU4
MWQ0ZjM0NjU5MGRkYzQzNmVkZjMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMTEtMDUgIE1heCBGZWlsICA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBuZWVkIGEgbWVjaGFuaXNtIHRvIGFsbG93IHBsdWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc3Bl
Y2lmeWluZworICAgICAgICB0aGVpciBzaGFyZWQgbGlicmFyeSBmaWxlbmFtZXMsIGZvciBleGFt
cGxlICJsaWJmbGFzaHBsYXllci5zbyIuCisgICAgICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1Z2lu
J3Mgc2hhcmVkIGxpYnJhcnkgc2hvdWxkIG5ldmVyIGJlIGxvYWRlZC4KKyAgICAgICAgVGhpcyB3
aWxsIHNhdmUgbWVtb3J5IGF0IHJ1bnRpbWUuIE90aGVyIG1lY2hhbmlzbXMgYmFzZWQgb24KKyAg
ICAgICAgbWltZSB0eXBlLCBldGMsIHJlcXVpcmUgbG9hZGluZyBvZiB0aGUgc2hhcmVkIGxpYnJh
cnkganVzdCB0bworICAgICAgICBkZXRlcm1pbmUgaXRzIHN1cHBvcnRlZCBtaW1lIHR5cGUocyku
CisKKyAgICAgICAgVGhlIG5ldyBXZWJQYWdlOjp1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKCkg
bWV0aG9kCisgICAgICAgIGhhbmRsZXMgdGhlIGNhbGwgaW50byBXZWJLaXQgZnJvbSB0aGUgV2Vi
VmlldyBBUEkuIE5vdGUgdGhhdAorICAgICAgICBXZWJQYWdlOjpzZXRFeHRyYVBsdWdpbkRpcmVj
dG9yeSgpIGlzIG5vdCBzdHJpY3RseSBwYXJ0IG9mIHRoaXMKKyAgICAgICAgcGF0Y2gsIGJ1dCBp
cyBpbmNsdWRlZCBiZWNhdXNlIGl0IHdhcyBub3QgdXBzdHJlYW1lZCB5ZXQgYW5kCisgICAgICAg
IHJlcXVpcmVkIHNvbWUgZml4ZXMgdG8gcmVmcmVzaCB0aGUgcGx1Z2luIGRhdGFiYXNlIGNvcnJl
Y3RseS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6dXBkYXRlRGlzYWJs
ZWRQbHVnaW5GaWxlcyk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoKKwogMjAxMi0xMS0yNyAg
SmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29uc29s
aWRhdGUgRnJhbWVMb2FkZXI6OmxvYWQoKSBpbnRvIG9uZSBmdW5jdGlvbiB0YWtpbmcgYSBGcmFt
ZUxvYWRSZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmlu
ZGV4IDQ0NTJhZmUxZTRiNjM4YjVmN2RkYTBlYzdiMTc5ZDdhZTNkOWQ2ZTMuLjE5ZTI1NGYyZjVk
OGQyZWM0NWY4NTFjMGM1MDgwM2I0NjBlMTQ4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMTIsMTEgKzMxMiwyMCBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBQbHVnaQogICAgICAgICBtX3ByZWZlcnJlZFBsdWdpbnMuc2V0KG1pbWVUeXBlLmxvd2VyKCks
IHBsdWdpbik7CiB9CiAKK2Jvb2wgUGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERp
c2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0Cit7CisgICAgLy8gU2tpcCBwbHVn
aW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUKKyAgICBpZiAobV9kaXNhYmxl
ZFBsdWdpbkZpbGVzLmNvbnRhaW5zKHBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZmlsZUV4aXN0cyhmaWxlUGF0aCk7Cit9CisK
IHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYgcGx1Z2lu
cykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lu
cy5lbmQoKTsKICAgICBmb3IgKFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdp
bnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cygo
Kml0KS0+cGF0aCgpKSkKKyAgICAgICAgaWYgKCFmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZCgo
Kml0KS0+cGF0aCgpKSkKICAgICAgICAgICAgIHBsdWdpbnMuYWRkKCppdCk7CiAgICAgfQogfQpA
QCAtMzYwLDYgKzM2OSwyMSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpjbGVhcigpCiAjZW5kaWYK
IH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyhjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGRpc2FibGVkKQoreworICAgIGJvb2wgY2hhbmdlZCA9
IGZhbHNlOworICAgIGlmIChkaXNhYmxlZCkgeworICAgICAgICBpZiAobV9kaXNhYmxlZFBsdWdp
bkZpbGVzLmFkZChmaWxlTmFtZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2Rpc2FibGVkUGx1Z2luRmlsZXMuY29u
dGFpbnMoZmlsZU5hbWUpKSB7CisgICAgICAgICAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVt
b3ZlKGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBjaGFuZ2VkOworfQorCiAjaWYgKCFPUyhXSU5DRSkpICYmICghT1Mo
V0lORE9XUykgfHwgIUVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSkKIC8vIEZvciBTYWZhcmkv
V2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8vIGluIFBs
dWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25zdHJ1Y3Rz
CkBAIC00NjIsNyArNDg2LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJ
bkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHBsdWdpblBhdGhzID0gbGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFtZUZpbHRl
cik7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwbHVnaW5zRW5kID0g
cGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIHBJdCA9IHBsdWdpblBhdGhzLmJlZ2luKCk7IHBJdCAhPSBwbHVnaW5zRW5kOyArK3BJ
dCkgewotICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCpwSXQpKQorICAgICAgICAgICAgaWYg
KCFmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZCgqcEl0KSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRkKCpwSXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGExYzQ0YmM1YmY3M2E4ZmE2MDc5ZWFiMjEyNjg5YjM1
YTY0MmFmMjcuLjlmZWRkMWQzYzhjYTdlYjU2ZGE3OWQ2MWQ0ZWFmMzc1ZjJmYmUwMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTc0LDYgKzc0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgICAgIG1fcGx1
Z2luRGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKICAgICAgICAgfQorICAgICAgICBib29sIHVw
ZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBkaXNh
YmxlZCk7CiAKICAgICAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVnaW5EaXJl
Y3RvcmllcygpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcygpIGNv
bnN0IHsgcmV0dXJuIG1fcGx1Z2luRGlyZWN0b3JpZXM7IH0KQEAgLTg5LDYgKzkwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZ2V0UGx1Z2luUGF0
aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICB2b2lkIGdl
dERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYpIGNvbnN0OworICAgICAgICBib29sIGZpbGVFeGlz
dHNBbmRJc05vdERpc2FibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgICAgIC8vIFJl
dHVybnMgd2hldGhlciB0aGUgcGx1Z2luIHdhcyBhY3R1YWxseSBhZGRlZCBvciBub3QgKGl0IHdv
bid0IGJlIGFkZGVkIGlmIGl0J3MgYSBkdXBsaWNhdGUgb2YgYW4gZXhpc3RpbmcgcGx1Z2luKS4K
ICAgICAgICAgYm9vbCBhZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPik7CkBAIC05OCw2ICsx
MDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUGVyc2lzdGVu
dE1ldGFkYXRhQ2FjaGUoKTsKICNlbmRpZgogCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Rp
c2FibGVkUGx1Z2luRmlsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcGx1Z2luRGlyZWN0
b3JpZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRNSU1FVHlwZXM7CiAg
ICAgICAgIFBsdWdpblNldCBtX3BsdWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcAppbmRleCBjNmQzM2ZjYTA0YzY4M2VhMjJmOGMxZTg5MThjOWFlZWUyNjQ4ZWJh
Li43ZDM3NDNlYTA3ODUyZTVlZTFlZmFjYmI1ODNkZTZhMzljMDEzYTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTUxMTIsNiArNTExMiw1NCBAQCB2b2lk
IFdlYlBhZ2U6OmNsZWFyUGx1Z2luU2l0ZURhdGEoKQogICAgICAgICAoKml0KS0+Y2xlYXJTaXRl
RGF0YShTdHJpbmcoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3Rv
cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCkKK3sKKyAgICBQbHVn
aW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyh0
cnVlKTsKKworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IHBsdWdpbkRpcmVjdG9yaWVzID0gZGF0YWJhc2UtPnBsdWdpbkRpcmVjdG9yaWVz
KCk7CisKKyAgICBpZiAocGF0aC5sZW5ndGgoKSAmJiAhcGx1Z2luRGlyZWN0b3JpZXMuY29udGFp
bnMocGF0aC5jX3N0cigpKSkgeworICAgICAgICBwbHVnaW5EaXJlY3Rvcmllcy5hcHBlbmQocGF0
aC5jX3N0cigpKTsKKyAgICAgICAgZGF0YWJhc2UtPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBsdWdp
bkRpcmVjdG9yaWVzKTsKKyAgICAgICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBhZ2UncyBsb2NhbCBj
b3B5IG9mIFBsdWdpbkRhdGEsIHNvIGl0IHdpbGwKKyAgICAgICAgLy8gcmV0cmlldmUgaXQgYWdh
aW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lzZSBlYWNoIHBhZ2Ugd2lsbCBiZQorICAgICAgICAv
LyB1c2luZyBvbGQgZGF0YSBhbmQgbWF5IGVpdGhlciBkaXJlY3QgY29udGVudCB0byBhIHBsdWdp
biB0aGF0CisgICAgICAgIC8vIGRvZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBjcmFzaCkgb3Igbm90
IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luCisgICAgICAgIC8vIHRoYXQgZG9lcyBleGlzdC4g
V2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1c2UKKyAgICAgICAg
Ly8gdGhpcyBzdGVwIGlzIG5vdCBkb25lIHdoZW4gcGx1Z2lucyBnZXQgZW5hYmxlZC4KKyAgICAg
ICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lucyhmYWxzZSk7CisKKyAgICAgICAgaWYgKGQtPm1f
d2ViU2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCkpCisgICAgICAgICAgICBkYXRhYmFzZS0+
cmVmcmVzaCgpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjp1cGRhdGVEaXNhYmxlZFBsdWdp
bkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZpbGVOYW1lLCBib29s
IGRpc2FibGVkKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9IFBsdWdpbkRhdGFi
YXNlOjppbnN0YWxsZWRQbHVnaW5zKHRydWUpOworCisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFkYXRhYmFzZS0+dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxl
cyhmaWxlTmFtZSwgZGlzYWJsZWQpKQorICAgICAgICByZXR1cm47IC8vIE5vIGNoYW5nZQorCisg
ICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBhZ2UncyBsb2NhbCBjb3B5IG9mIFBsdWdpbkRhdGEsIHNv
IGl0IHdpbGwKKyAgICAvLyByZXRyaWV2ZSBpdCBhZ2FpbiB3aGVuIG5lY2Vzc2FyeS4gT3RoZXJ3
aXNlIGVhY2ggcGFnZSB3aWxsIGJlCisgICAgLy8gdXNpbmcgb2xkIGRhdGEgYW5kIG1heSBlaXRo
ZXIgZGlyZWN0IGNvbnRlbnQgdG8gYSBwbHVnaW4gdGhhdAorICAgIC8vIGRvZXNuJ3QgZXhpc3Qg
KGNhdXNpbmcgYSBjcmFzaCkgb3Igbm90IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luCisgICAg
Ly8gdGhhdCBkb2VzIGV4aXN0LiBXZSBkbyB0aGlzIGV2ZW4gaWYgcGx1Z2lucyBhcmUgZGlzYWJs
ZWQgYmVjYXVzZQorICAgIC8vIHRoaXMgc3RlcCBpcyBub3QgZG9uZSB3aGVuIHBsdWdpbnMgZ2V0
IGVuYWJsZWQuCisgICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lucyhmYWxzZSk7CisKKyAgICAv
LyBSZWZyZXNoIHRoZSBwbHVnaW4gZGF0YWJhc2UgaWYgbmVjZXNzYXJ5CisgICAgaWYgKGQtPm1f
d2ViU2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCkpCisgICAgICAgIGRhdGFiYXNlLT5yZWZy
ZXNoKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6b25OZXR3b3JrQXZhaWxhYmlsaXR5Q2hhbmdlZChi
b29sIGF2YWlsYWJsZSkKIHsKICAgICB1cGRhdGVPbmxpbmVTdGF0dXMoYXZhaWxhYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKaW5kZXggZmM3NWIwZjlhZjY0ODUwYzkx
MmQ1YjcwY2ZmMWRhMWM0NGM5YmQ4ZS4uMjI3ZWEzNGRiYzkzNmVmNGM2MDg0ZDFiMjNlNTVkZDBi
YjJhMzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKQEAgLTMzMSw2
ICszMzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlTY3JlZW5Qb3dlclN0YXRlQ2hhbmdl
ZChib29sIHBvd2VyZWQpOwogICAgIHZvaWQgbm90aWZ5RnVsbFNjcmVlblZpZGVvRXhpdGVkKGJv
b2wgZG9uZSk7CiAgICAgdm9pZCBjbGVhclBsdWdpblNpdGVEYXRhKCk7CisgICAgdm9pZCBzZXRF
eHRyYVBsdWdpbkRpcmVjdG9yeShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBw
YXRoKTsKKyAgICB2b2lkIHVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoY29uc3QgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlN0cmluZyYgZmlsZU5hbWUsIGJvb2wgZGlzYWJsZWQpOwogICAgIHZvaWQg
c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sKTsKICAgICBib29sIGlzV2ViR0xF
bmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXZWJHTEVuYWJsZWQoYm9vbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179033</attachid>
            <date>2012-12-12 07:11:19 -0800</date>
            <delta_ts>2012-12-12 07:25:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121212100755.patch</filename>
            <type>text/plain</type>
            <size>8993</size>
            <attacher name="Parth Patel">parpatel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YWJlYThhNWVlN2Jm
MzIxMzU5ZDczMmZkNTA5YjNjNTU4NGRjNC4uZWM3YTM1ZGY1NzA4NmZjNjc1ZDQxOWY2YTEzNjVj
OTgwMmY3ZDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGZpeCBtYWtlcyBQbHVnaW5EYXRhYmFzZSBjaGFuZ2VzIGdlbmVyYWwgc28gdGhhdCBvdGhl
ciBwb3J0cworICAgICAgICBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIGlmIHRoZXkgd2lzaC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lZWRlZC4KKworICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVF
eGlzdHNBbmRJc05vdERpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxlZFBsdWdpbkZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmFkZERpc2FibGVkUGx1Z2luRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToK
KyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisgICAgICAgIChQbHVnaW5EYXRh
YmFzZSk6CisKIDIwMTItMTItMTIgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBtZW1vcnkgdXNlZCBieSBtZW1vcnkgYWxs
b2NhdG9yIGl0c2VsZiB0byBOTUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDAy
YjExMDk4NDRiMmU0MWJlZjkyYmY5ZjYyMTExYWU2MDNlYzM0MGYuLjE1ZjBjNDA2NzUxNTliMmMw
ZTE2NmE4NmExNzg0ZjMyOTg1MjQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTEyICBQYXJ0aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5j
b20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKworICAgICAgICBBbGxvdyBwbHVnaW5zIHRv
IGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZWNoYW5pc20gYWxsb3dzIHBsdWdpbnMg
dG8gYmUgZGlzYWJsZWQgYnkgc3BlY2lmeWluZyB0aGVpciBzaGFyZWQgbGlicmFyeSBmaWxlbmFt
ZXMuCisgICAgICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1Z2luJ3Mgc2hhcmVkIGxpYnJhcnkgc2hv
dWxkIG5ldmVyIGJlIGxvYWRlZC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoK
KwogMjAxMi0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBWaWJyYXRpb24gQVBJOiBJREwgdHlwZSBkb2Vzbid0IG1hdGNoIGltcGxlbWVudGF0
aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXgg
NDQ1MmFmZTFlNGI2MzhiNWY3ZGRhMGVjN2IxNzlkN2FlM2Q5ZDZlMy4uYTk0MDQ1OWQ2MjRmM2Zl
MjA0N2Q3ZWQ3NzMwOGY3YmM1NzhiM2M2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTMxMiwxMSArMzEyLDIwIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6
OnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBs
dWdpCiAgICAgICAgIG1fcHJlZmVycmVkUGx1Z2lucy5zZXQobWltZVR5cGUubG93ZXIoKSwgcGx1
Z2luKTsKIH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJs
ZWQoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgY29uc3QKK3sKKyAgICAvLyBTa2lwIHBsdWdpbiBm
aWxlcyB0aGF0IGFyZSBkaXNhYmxlZCBieSBmaWxlbmFtZQorICAgIGlmIChtX2Rpc2FibGVkUGx1
Z2luRmlsZXMuY29udGFpbnMocGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBmaWxlRXhpc3RzKGZpbGVQYXRoKTsKK30KKwogdm9p
ZCBQbHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JiBwbHVnaW5zKSBj
b25zdAogewogICAgIFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVu
ZCgpOwogICAgIGZvciAoUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2lucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCgqaXQp
LT5wYXRoKCkpKQorICAgICAgICBpZiAoIWZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKCgqaXQp
LT5wYXRoKCkpKQogICAgICAgICAgICAgcGx1Z2lucy5hZGQoKml0KTsKICAgICB9CiB9CkBAIC0z
NjAsNiArMzY5LDIyIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmNsZWFyKCkKICNlbmRpZgogfQog
Citib29sIFBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxlZFBsdWdpbkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSkKK3sKKyAgICBpZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5z
KGZpbGVOYW1lKSkgeworICAgICAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVtb3ZlKGZpbGVO
YW1lKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkRGlzYWJsZWRQbHVnaW5GaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpCit7CisgICAgaWYgKG1fZGlzYWJsZWRQbHVnaW5GaWxlcy5hZGQoZmlsZU5h
bWUpLmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsK
K30KKwogI2lmICghT1MoV0lOQ0UpKSAmJiAoIU9TKFdJTkRPV1MpIHx8ICFFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkpCiAvLyBGb3IgU2FmYXJpL1dpbiB0aGUgZm9sbG93aW5nIHRocmVlIG1l
dGhvZHMgYXJlIGltcGxlbWVudGVkCiAvLyBpbiBQbHVnaW5EYXRhYmFzZVdpbi5jcHAsIGJ1dCBp
ZiB3ZSBjYW4gdXNlIFdlYkNvcmUgY29uc3RydWN0cwpAQCAtNDYyLDcgKzQ4Nyw3IEBAIHZvaWQg
UGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmlu
Zz4mIHBhdGhzKSBjb25zdAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5QYXRocyA9IGxp
c3REaXJlY3RvcnkoKmRJdCwgZmlsZU5hbWVGaWx0ZXIpOwogICAgICAgICBWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgcGx1Z2luc0VuZCA9IHBsdWdpblBhdGhzLmVuZCgpOwogICAgICAg
ICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwSXQgPSBwbHVnaW5QYXRocy5i
ZWdpbigpOyBwSXQgIT0gcGx1Z2luc0VuZDsgKytwSXQpIHsKLSAgICAgICAgICAgIGlmICghZmls
ZUV4aXN0cygqcEl0KSkKKyAgICAgICAgICAgIGlmICghZmlsZUV4aXN0c0FuZElzTm90RGlzYWJs
ZWQoKnBJdCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHBhdGhz
LmFkZCgqcEl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAppbmRleCBh
MWM0NGJjNWJmNzNhOGZhNjA3OWVhYjIxMjY4OWIzNWE2NDJhZjI3Li4yNmU3Njg3MGZiOWMxNWUw
YWVkMTUwZjU1OTY1ZjgxNDExZGIyODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5oCkBAIC03NCw2ICs3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgIGNsZWFyKCk7CiAgICAgICAgICAgICBtX3BsdWdpbkRpcmVjdG9yaWVzID0gZGlyZWN0b3Jp
ZXM7CiAgICAgICAgIH0KKyAgICAgICAgYm9vbCByZW1vdmVEaXNhYmxlZFBsdWdpbkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgICAgIGJvb2wgYWRkRGlzYWJsZWRQbHVnaW5GaWxl
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5n
PiBkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1
Z2luRGlyZWN0b3JpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVjdG9yaWVzOyB9CkBA
IC04OSw2ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAg
ICB2b2lkIGdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mKSBjb25z
dDsKICAgICAgICAgdm9pZCBnZXREZWxldGVkUGx1Z2lucyhQbHVnaW5TZXQmKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZChjb25zdCBTdHJpbmcmKSBjb25z
dDsKIAogICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWdpbiB3YXMgYWN0dWFsbHkg
YWRkZWQgb3Igbm90IChpdCB3b24ndCBiZSBhZGRlZCBpZiBpdCdzIGEgZHVwbGljYXRlIG9mIGFu
IGV4aXN0aW5nIHBsdWdpbikuCiAgICAgICAgIGJvb2wgYWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFj
a2FnZT4pOwpAQCAtOTgsNiArMTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCk7CiAjZW5kaWYKIAorICAgICAgICBI
YXNoU2V0PFN0cmluZz4gbV9kaXNhYmxlZFBsdWdpbkZpbGVzOwogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBtX3BsdWdpbkRpcmVjdG9yaWVzOwogICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZWdp
c3RlcmVkTUlNRVR5cGVzOwogICAgICAgICBQbHVnaW5TZXQgbV9wbHVnaW5zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNTFhZjgxNTMwOThkNGIwNjBhNDhk
MDNjYTNjNzk1Yzg4NzEyZmUxZC4uNTJhZjMxZWEzNzI0NDM5M2RjNjIyMWJlZTE5ODNkMzFjMDc5
ZWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01MTUz
LDYgKzUxNTMsNTQgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclBsdWdpblNpdGVEYXRhKCkKICAgICAg
ICAgKCppdCktPmNsZWFyU2l0ZURhdGEoU3RyaW5nKCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNl
dEV4dHJhUGx1Z2luRGlyZWN0b3J5KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcm
IHBhdGgpCit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUGx1Z2luRGF0YWJhc2U6
Omluc3RhbGxlZFBsdWdpbnModHJ1ZSk7CisKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcyA9IGRhdGFiYXNl
LT5wbHVnaW5EaXJlY3RvcmllcygpOworCisgICAgaWYgKHBhdGgubGVuZ3RoKCkgJiYgIXBsdWdp
bkRpcmVjdG9yaWVzLmNvbnRhaW5zKHBhdGguY19zdHIoKSkpIHsKKyAgICAgICAgcGx1Z2luRGly
ZWN0b3JpZXMuYXBwZW5kKHBhdGguY19zdHIoKSk7CisgICAgICAgIGRhdGFiYXNlLT5zZXRQbHVn
aW5EaXJlY3RvcmllcyhwbHVnaW5EaXJlY3Rvcmllcyk7CisgICAgICAgIC8vIENsZWFyIG91dCBl
dmVyeSBQYWdlJ3MgbG9jYWwgY29weSBvZiBQbHVnaW5EYXRhLCBzbyBpdCB3aWxsCisgICAgICAg
IC8vIHJldHJpZXZlIGl0IGFnYWluIHdoZW4gbmVjZXNzYXJ5LiBPdGhlcndpc2UgZWFjaCBwYWdl
IHdpbGwgYmUKKyAgICAgICAgLy8gdXNpbmcgb2xkIGRhdGEgYW5kIG1heSBlaXRoZXIgZGlyZWN0
IGNvbnRlbnQgdG8gYSBwbHVnaW4gdGhhdAorICAgICAgICAvLyBkb2Vzbid0IGV4aXN0IChjYXVz
aW5nIGEgY3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbgorICAgICAgICAv
LyB0aGF0IGRvZXMgZXhpc3QuIFdlIGRvIHRoaXMgZXZlbiBpZiBwbHVnaW5zIGFyZSBkaXNhYmxl
ZCBiZWNhdXNlCisgICAgICAgIC8vIHRoaXMgc3RlcCBpcyBub3QgZG9uZSB3aGVuIHBsdWdpbnMg
Z2V0IGVuYWJsZWQuCisgICAgICAgIGQtPm1fcGFnZS0+cmVmcmVzaFBsdWdpbnMoZmFsc2UpOwor
CisgICAgICAgIGlmIChkLT5tX3dlYlNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQorICAg
ICAgICAgICAgZGF0YWJhc2UtPnJlZnJlc2goKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6
dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nJiBmaWxlTmFtZSwgYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0
YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyh0cnVlKTsKKworICAgIGlm
ICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghKGRpc2FibGVkID8gZGF0
YWJhc2UtPmFkZERpc2FibGVkUGx1Z2luRmlsZShmaWxlTmFtZSkgOiBkYXRhYmFzZS0+cmVtb3Zl
RGlzYWJsZWRQbHVnaW5GaWxlKGZpbGVOYW1lKSkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IENsZWFyIG91dCBldmVyeSBQYWdlJ3MgbG9jYWwgY29weSBvZiBQbHVnaW5EYXRhLCBzbyBpdCB3
aWxsCisgICAgLy8gcmV0cmlldmUgaXQgYWdhaW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lzZSBl
YWNoIHBhZ2Ugd2lsbCBiZQorICAgIC8vIHVzaW5nIG9sZCBkYXRhIGFuZCBtYXkgZWl0aGVyIGRp
cmVjdCBjb250ZW50IHRvIGEgcGx1Z2luIHRoYXQKKyAgICAvLyBkb2Vzbid0IGV4aXN0IChjYXVz
aW5nIGEgY3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbgorICAgIC8vIHRo
YXQgZG9lcyBleGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGJl
Y2F1c2UKKyAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGRvbmUgd2hlbiBwbHVnaW5zIGdldCBlbmFi
bGVkLgorICAgIGQtPm1fcGFnZS0+cmVmcmVzaFBsdWdpbnMoZmFsc2UpOworCisgICAgLy8gUmVm
cmVzaCB0aGUgcGx1Z2luIGRhdGFiYXNlIGlmIG5lY2Vzc2FyeQorICAgIGlmIChkLT5tX3dlYlNl
dHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQorICAgICAgICBkYXRhYmFzZS0+cmVmcmVzaCgp
OworfQorCiB2b2lkIFdlYlBhZ2U6Om9uTmV0d29ya0F2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBh
dmFpbGFibGUpCiB7CiAgICAgdXBkYXRlT25saW5lU3RhdHVzKGF2YWlsYWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmluZGV4IGZjNzViMGY5YWY2NDg1MGM5MTJkNWI3
MGNmZjFkYTFjNDRjOWJkOGUuLjIyN2VhMzRkYmM5MzZlZjRjNjA4NGQxYjIzZTU1ZGQwYmIyYTM3
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCkBAIC0zMzEsNiArMzMx
LDggQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5U2NyZWVuUG93ZXJTdGF0ZUNoYW5nZWQoYm9v
bCBwb3dlcmVkKTsKICAgICB2b2lkIG5vdGlmeUZ1bGxTY3JlZW5WaWRlb0V4aXRlZChib29sIGRv
bmUpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5TaXRlRGF0YSgpOworICAgIHZvaWQgc2V0RXh0cmFQ
bHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCk7
CisgICAgdm9pZCB1cGRhdGVEaXNhYmxlZFBsdWdpbkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpTdHJpbmcmIGZpbGVOYW1lLCBib29sIGRpc2FibGVkKTsKICAgICB2b2lkIHNldEph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCk7CiAgICAgYm9vbCBpc1dlYkdMRW5hYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V2ViR0xFbmFibGVkKGJvb2wpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179036</attachid>
            <date>2012-12-12 07:25:46 -0800</date>
            <delta_ts>2012-12-12 07:57:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121212102222.patch</filename>
            <type>text/plain</type>
            <size>8929</size>
            <attacher name="Parth Patel">parpatel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YWJlYThhNWVlN2Jm
MzIxMzU5ZDczMmZkNTA5YjNjNTU4NGRjNC4uZWM3YTM1ZGY1NzA4NmZjNjc1ZDQxOWY2YTEzNjVj
OTgwMmY3ZDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGZpeCBtYWtlcyBQbHVnaW5EYXRhYmFzZSBjaGFuZ2VzIGdlbmVyYWwgc28gdGhhdCBvdGhl
ciBwb3J0cworICAgICAgICBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIGlmIHRoZXkgd2lzaC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lZWRlZC4KKworICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVF
eGlzdHNBbmRJc05vdERpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxlZFBsdWdpbkZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmFkZERpc2FibGVkUGx1Z2luRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToK
KyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisgICAgICAgIChQbHVnaW5EYXRh
YmFzZSk6CisKIDIwMTItMTItMTIgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBtZW1vcnkgdXNlZCBieSBtZW1vcnkgYWxs
b2NhdG9yIGl0c2VsZiB0byBOTUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDAy
YjExMDk4NDRiMmU0MWJlZjkyYmY5ZjYyMTExYWU2MDNlYzM0MGYuLjE1ZjBjNDA2NzUxNTliMmMw
ZTE2NmE4NmExNzg0ZjMyOTg1MjQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTEyICBQYXJ0aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5j
b20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKworICAgICAgICBBbGxvdyBwbHVnaW5zIHRv
IGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZWNoYW5pc20gYWxsb3dzIHBsdWdpbnMg
dG8gYmUgZGlzYWJsZWQgYnkgc3BlY2lmeWluZyB0aGVpciBzaGFyZWQgbGlicmFyeSBmaWxlbmFt
ZXMuCisgICAgICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1Z2luJ3Mgc2hhcmVkIGxpYnJhcnkgc2hv
dWxkIG5ldmVyIGJlIGxvYWRlZC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoK
KwogMjAxMi0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBWaWJyYXRpb24gQVBJOiBJREwgdHlwZSBkb2Vzbid0IG1hdGNoIGltcGxlbWVudGF0
aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXgg
NDQ1MmFmZTFlNGI2MzhiNWY3ZGRhMGVjN2IxNzlkN2FlM2Q5ZDZlMy4uMjdhOWVmMTkyYWIyNDVh
NDUzNTc0YmQwYThjZGQ4ZThiZTgzNzNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTMxMiwxMSArMzEyLDIwIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6
OnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBs
dWdpCiAgICAgICAgIG1fcHJlZmVycmVkUGx1Z2lucy5zZXQobWltZVR5cGUubG93ZXIoKSwgcGx1
Z2luKTsKIH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJs
ZWQoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgY29uc3QKK3sKKyAgICAvLyBTa2lwIHBsdWdpbiBm
aWxlcyB0aGF0IGFyZSBkaXNhYmxlZCBieSBmaWxlbmFtZQorICAgIGlmIChtX2Rpc2FibGVkUGx1
Z2luRmlsZXMuY29udGFpbnMocGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBmaWxlRXhpc3RzKGZpbGVQYXRoKTsKK30KKwogdm9p
ZCBQbHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JiBwbHVnaW5zKSBj
b25zdAogewogICAgIFBsdWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVu
ZCgpOwogICAgIGZvciAoUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z2lucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCgqaXQp
LT5wYXRoKCkpKQorICAgICAgICBpZiAoIWZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKCgqaXQp
LT5wYXRoKCkpKQogICAgICAgICAgICAgcGx1Z2lucy5hZGQoKml0KTsKICAgICB9CiB9CkBAIC0z
NjAsNiArMzY5LDIwIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmNsZWFyKCkKICNlbmRpZgogfQog
Citib29sIFBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxlZFBsdWdpbkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSkKK3sKKyAgICBpZiAoIW1fZGlzYWJsZWRQbHVnaW5GaWxlcy5jb250YWlu
cyhmaWxlTmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZGlzYWJsZWRQbHVn
aW5GaWxlcy5yZW1vdmUoZmlsZU5hbWUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBs
dWdpbkRhdGFiYXNlOjphZGREaXNhYmxlZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSkKK3sKKyAgICByZXR1cm4gbV9kaXNhYmxlZFBsdWdpbkZpbGVzLmFkZChmaWxlTmFtZSkuaXNO
ZXdFbnRyeQorfQorCiAjaWYgKCFPUyhXSU5DRSkpICYmICghT1MoV0lORE9XUykgfHwgIUVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKSkKIC8vIEZvciBTYWZhcmkvV2luIHRoZSBmb2xsb3dpbmcg
dGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8vIGluIFBsdWdpbkRhdGFiYXNlV2luLmNw
cCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25zdHJ1Y3RzCkBAIC00NjIsNyArNDg1LDcg
QEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hT
ZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdpblBh
dGhzID0gbGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFtZUZpbHRlcik7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7
CiAgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBJdCA9IHBsdWdp
blBhdGhzLmJlZ2luKCk7IHBJdCAhPSBwbHVnaW5zRW5kOyArK3BJdCkgewotICAgICAgICAgICAg
aWYgKCFmaWxlRXhpc3RzKCpwSXQpKQorICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzQW5kSXNO
b3REaXNhYmxlZCgqcEl0KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgcGF0aHMuYWRkKCpwSXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5o
CmluZGV4IGExYzQ0YmM1YmY3M2E4ZmE2MDc5ZWFiMjEyNjg5YjM1YTY0MmFmMjcuLjE3ODA4NTJi
ZTE3OGNlN2M2OGRkN2VlMjJjMWFjMjQ1NjcxY2UyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmgKQEAgLTc1LDYgKzc1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIG1fcGx1Z2luRGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKICAgICAgICAg
fQogCisgICAgICAgIGJvb2wgcmVtb3ZlRGlzYWJsZWRQbHVnaW5GaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpOworCisgICAgICAgIGJvb2wgYWRkRGlzYWJsZWRQbHVnaW5GaWxlKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpOworCiAgICAgICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBkZWZhdWx0
UGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luRGlyZWN0
b3JpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVjdG9yaWVzOyB9CiAKQEAgLTg5LDYg
KzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0OwogICAg
ICAgICB2b2lkIGdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYpIGNvbnN0OworICAgICAgICBi
b29sIGZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAg
ICAgICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Z2luIHdhcyBhY3R1YWxseSBhZGRlZCBv
ciBub3QgKGl0IHdvbid0IGJlIGFkZGVkIGlmIGl0J3MgYSBkdXBsaWNhdGUgb2YgYW4gZXhpc3Rp
bmcgcGx1Z2luKS4KICAgICAgICAgYm9vbCBhZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPik7
CkBAIC05OCw2ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdXBk
YXRlUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKTsKICNlbmRpZgogCisgICAgICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2Rpc2FibGVkUGx1Z2luRmlsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1f
cGx1Z2luRGlyZWN0b3JpZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRN
SU1FVHlwZXM7CiAgICAgICAgIFBsdWdpblNldCBtX3BsdWdpbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCA1MWFmODE1MzA5OGQ0YjA2MGE0OGQwM2NhM2M3
OTVjODg3MTJmZTFkLi41MmFmMzFlYTM3MjQ0MzkzZGM2MjIxYmVlMTk4M2QzMWMwNzllZGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTUxNTMsNiArNTE1
Myw1NCBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFyUGx1Z2luU2l0ZURhdGEoKQogICAgICAgICAoKml0
KS0+Y2xlYXJTaXRlRGF0YShTdHJpbmcoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0RXh0cmFQ
bHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCkK
K3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFs
bGVkUGx1Z2lucyh0cnVlKTsKKworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsK
KworICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdpbkRpcmVjdG9yaWVzID0gZGF0YWJhc2UtPnBsdWdp
bkRpcmVjdG9yaWVzKCk7CisKKyAgICBpZiAocGF0aC5sZW5ndGgoKSAmJiAhcGx1Z2luRGlyZWN0
b3JpZXMuY29udGFpbnMocGF0aC5jX3N0cigpKSkgeworICAgICAgICBwbHVnaW5EaXJlY3Rvcmll
cy5hcHBlbmQocGF0aC5jX3N0cigpKTsKKyAgICAgICAgZGF0YWJhc2UtPnNldFBsdWdpbkRpcmVj
dG9yaWVzKHBsdWdpbkRpcmVjdG9yaWVzKTsKKyAgICAgICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBh
Z2UncyBsb2NhbCBjb3B5IG9mIFBsdWdpbkRhdGEsIHNvIGl0IHdpbGwKKyAgICAgICAgLy8gcmV0
cmlldmUgaXQgYWdhaW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lzZSBlYWNoIHBhZ2Ugd2lsbCBi
ZQorICAgICAgICAvLyB1c2luZyBvbGQgZGF0YSBhbmQgbWF5IGVpdGhlciBkaXJlY3QgY29udGVu
dCB0byBhIHBsdWdpbiB0aGF0CisgICAgICAgIC8vIGRvZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBj
cmFzaCkgb3Igbm90IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luCisgICAgICAgIC8vIHRoYXQg
ZG9lcyBleGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1
c2UKKyAgICAgICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBkb25lIHdoZW4gcGx1Z2lucyBnZXQgZW5h
YmxlZC4KKyAgICAgICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lucyhmYWxzZSk7CisKKyAgICAg
ICAgaWYgKGQtPm1fd2ViU2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCkpCisgICAgICAgICAg
ICBkYXRhYmFzZS0+cmVmcmVzaCgpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjp1cGRhdGVE
aXNhYmxlZFBsdWdpbkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZp
bGVOYW1lLCBib29sIGRpc2FibGVkKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKHRydWUpOworCisgICAgaWYgKCFkYXRh
YmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCEoZGlzYWJsZWQgPyBkYXRhYmFzZS0+
YWRkRGlzYWJsZWRQbHVnaW5GaWxlKGZpbGVOYW1lKSA6IGRhdGFiYXNlLT5yZW1vdmVEaXNhYmxl
ZFBsdWdpbkZpbGUoZmlsZU5hbWUpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2xlYXIg
b3V0IGV2ZXJ5IFBhZ2UncyBsb2NhbCBjb3B5IG9mIFBsdWdpbkRhdGEsIHNvIGl0IHdpbGwKKyAg
ICAvLyByZXRyaWV2ZSBpdCBhZ2FpbiB3aGVuIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlIGVhY2ggcGFn
ZSB3aWxsIGJlCisgICAgLy8gdXNpbmcgb2xkIGRhdGEgYW5kIG1heSBlaXRoZXIgZGlyZWN0IGNv
bnRlbnQgdG8gYSBwbHVnaW4gdGhhdAorICAgIC8vIGRvZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBj
cmFzaCkgb3Igbm90IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luCisgICAgLy8gdGhhdCBkb2Vz
IGV4aXN0LiBXZSBkbyB0aGlzIGV2ZW4gaWYgcGx1Z2lucyBhcmUgZGlzYWJsZWQgYmVjYXVzZQor
ICAgIC8vIHRoaXMgc3RlcCBpcyBub3QgZG9uZSB3aGVuIHBsdWdpbnMgZ2V0IGVuYWJsZWQuCisg
ICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lucyhmYWxzZSk7CisKKyAgICAvLyBSZWZyZXNoIHRo
ZSBwbHVnaW4gZGF0YWJhc2UgaWYgbmVjZXNzYXJ5CisgICAgaWYgKGQtPm1fd2ViU2V0dGluZ3Mt
PmFyZVBsdWdpbnNFbmFibGVkKCkpCisgICAgICAgIGRhdGFiYXNlLT5yZWZyZXNoKCk7Cit9CisK
IHZvaWQgV2ViUGFnZTo6b25OZXR3b3JrQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJs
ZSkKIHsKICAgICB1cGRhdGVPbmxpbmVTdGF0dXMoYXZhaWxhYmxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlLmgKaW5kZXggZmM3NWIwZjlhZjY0ODUwYzkxMmQ1YjcwY2ZmMWRh
MWM0NGM5YmQ4ZS4uMjI3ZWEzNGRiYzkzNmVmNGM2MDg0ZDFiMjNlNTVkZDBiYjJhMzcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKQEAgLTMzMSw2ICszMzEsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBub3RpZnlTY3JlZW5Qb3dlclN0YXRlQ2hhbmdlZChib29sIHBvd2Vy
ZWQpOwogICAgIHZvaWQgbm90aWZ5RnVsbFNjcmVlblZpZGVvRXhpdGVkKGJvb2wgZG9uZSk7CiAg
ICAgdm9pZCBjbGVhclBsdWdpblNpdGVEYXRhKCk7CisgICAgdm9pZCBzZXRFeHRyYVBsdWdpbkRp
cmVjdG9yeShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBwYXRoKTsKKyAgICB2
b2lkIHVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZyYgZmlsZU5hbWUsIGJvb2wgZGlzYWJsZWQpOwogICAgIHZvaWQgc2V0SmF2YVNjcmlw
dENhbkFjY2Vzc0NsaXBib2FyZChib29sKTsKICAgICBib29sIGlzV2ViR0xFbmFibGVkKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRXZWJHTEVuYWJsZWQoYm9vbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179046</attachid>
            <date>2012-12-12 07:57:25 -0800</date>
            <delta_ts>2012-12-12 10:24:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121212105402.patch</filename>
            <type>text/plain</type>
            <size>9126</size>
            <attacher name="Parth Patel">parpatel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YWJlYThhNWVlN2Jm
MzIxMzU5ZDczMmZkNTA5YjNjNTU4NGRjNC4uY2FkNzJkNjAzNGUwMzFlNDg4ZDZlZDA1NTBkYjUy
ZDJmODhjNjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGZpeCBtYWtlcyBQbHVnaW5EYXRhYmFzZSBjaGFuZ2VzIGdlbmVyYWwgc28gdGhhdCBvdGhl
ciBwb3J0cworICAgICAgICBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIGlmIHRoZXkgd2lzaC4KKwor
ICAgICAgICBMYXlvdXQgdGVzdCBub3QgaW5jbHVkZWQgd2l0aCB0aGlzIHBhdGNoIGJlY2F1c2Ug
dGhlcmUKKyAgICAgICAgaXMgY3VycmVudGx5IG5vIGZyYW1ld29yayB3aXRoaW4gTGF5b3V0VGVz
dHMgdG8gYWxsb3cgY2FsbHMKKyAgICAgICAgZnJvbSBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbiB2
aWEgcGxhdGZvcm0gQVBJIGNvZGUgKHN1Y2ggYXMgdGhlCisgICAgICAgIFdlYlZpZXcgQVBJKS4K
KworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQ
bHVnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxl
ZFBsdWdpbkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmFkZERpc2Fi
bGVkUGx1Z2luRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1
Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgIChQbHVnaW5EYXRhYmFzZSk6CisKIDIwMTItMTItMTIgIEFsZXhlaSBGaWxp
cHBvdiAgPGFscGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBt
ZW1vcnkgdXNlZCBieSBtZW1vcnkgYWxsb2NhdG9yIGl0c2VsZiB0byBOTUkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IDAyYjExMDk4NDRiMmU0MWJlZjkyYmY5ZjYyMTExYWU2MDNl
YzM0MGYuLjE1ZjBjNDA2NzUxNTliMmMwZTE2NmE4NmExNzg0ZjMyOTg1MjQzZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
ZWNoYW5pc20gYWxsb3dzIHBsdWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc3BlY2lmeWluZyB0aGVp
ciBzaGFyZWQgbGlicmFyeSBmaWxlbmFtZXMuCisgICAgICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1
Z2luJ3Mgc2hhcmVkIGxpYnJhcnkgc2hvdWxkIG5ldmVyIGJlIGxvYWRlZC4KKworICAgICAgICAq
IEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6
c2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyk6Cisg
ICAgICAgICogQXBpL1dlYlBhZ2UuaDoKKwogMjAxMi0xMi0xMSAgS2lob25nIEt3b24gIDxraWhv
bmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBWaWJyYXRpb24gQVBJOiBJREwgdHlwZSBk
b2Vzbid0IG1hdGNoIGltcGxlbWVudGF0aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNDQ1MmFmZTFlNGI2MzhiNWY3ZGRhMGVjN2IxNzlkN2Fl
M2Q5ZDZlMy4uNGQwZmZiZWMzZjEwZGUyODQ5NmY4NmQwMjEyY2UzMTA4MGM4NzRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTMxMiwxMSArMzEyLDIw
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpCiAgICAgICAgIG1fcHJlZmVycmVkUGx1Z2lucy5z
ZXQobWltZVR5cGUubG93ZXIoKSwgcGx1Z2luKTsKIH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6
ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgY29uc3QK
K3sKKyAgICAvLyBTa2lwIHBsdWdpbiBmaWxlcyB0aGF0IGFyZSBkaXNhYmxlZCBieSBmaWxlbmFt
ZS4KKyAgICBpZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKHBhdGhHZXRGaWxlTmFt
ZShmaWxlUGF0aCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZmlsZUV4
aXN0cyhmaWxlUGF0aCk7Cit9CisKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVn
aW5zKFBsdWdpblNldCYgcGx1Z2lucykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsKICAgICBmb3IgKFBsdWdpblNldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3BsdWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGlmICghZmlsZUV4aXN0cygoKml0KS0+cGF0aCgpKSkKKyAgICAgICAgaWYgKCFmaWxlRXhp
c3RzQW5kSXNOb3REaXNhYmxlZCgoKml0KS0+cGF0aCgpKSkKICAgICAgICAgICAgIHBsdWdpbnMu
YWRkKCppdCk7CiAgICAgfQogfQpAQCAtMzYwLDYgKzM2OSwyMCBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpjbGVhcigpCiAjZW5kaWYKIH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVtb3ZlRGlz
YWJsZWRQbHVnaW5GaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7CisgICAgaWYgKCFtX2Rp
c2FibGVkUGx1Z2luRmlsZXMuY29udGFpbnMoZmlsZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVtb3ZlKGZpbGVOYW1lKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkRGlzYWJsZWRQbHVnaW5G
aWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7CisgICAgcmV0dXJuIG1fZGlzYWJsZWRQbHVn
aW5GaWxlcy5hZGQoZmlsZU5hbWUpLmlzTmV3RW50cnk7Cit9CisKICNpZiAoIU9TKFdJTkNFKSkg
JiYgKCFPUyhXSU5ET1dTKSB8fCAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpKQogLy8gRm9y
IFNhZmFyaS9XaW4gdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZAog
Ly8gaW4gUGx1Z2luRGF0YWJhc2VXaW4uY3BwLCBidXQgaWYgd2UgY2FuIHVzZSBXZWJDb3JlIGNv
bnN0cnVjdHMKQEAgLTQ2Miw3ICs0ODUsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVO
YW1lRmlsdGVyKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBsdWdp
bnNFbmQgPSBwbHVnaW5QYXRocy5lbmQoKTsKICAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgcEl0ID0gcGx1Z2luUGF0aHMuYmVnaW4oKTsgcEl0ICE9IHBsdWdpbnNF
bmQ7ICsrcEl0KSB7Ci0gICAgICAgICAgICBpZiAoIWZpbGVFeGlzdHMoKnBJdCkpCisgICAgICAg
ICAgICBpZiAoIWZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKCpwSXQpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBwYXRocy5hZGQoKnBJdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggYTFjNDRiYzViZjczYThmYTYwNzllYWIy
MTI2ODliMzVhNjQyYWYyNy4uMTc4MDg1MmJlMTc4Y2U3YzY4ZGQ3ZWUyMmMxYWMyNDU2NzFjZTI3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtNzUsNiArNzUs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgbV9wbHVnaW5EaXJlY3Rvcmll
cyA9IGRpcmVjdG9yaWVzOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCByZW1vdmVEaXNhYmxl
ZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisKKyAgICAgICAgYm9vbCBhZGRE
aXNhYmxlZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisKICAgICAgICAgc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2lu
RGlyZWN0b3JpZXM7IH0KIApAQCAtODksNiArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFz
aFNldDxTdHJpbmc+JikgY29uc3Q7CiAgICAgICAgIHZvaWQgZ2V0RGVsZXRlZFBsdWdpbnMoUGx1
Z2luU2V0JikgY29uc3Q7CisgICAgICAgIGJvb2wgZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBw
bHVnaW4gd2FzIGFjdHVhbGx5IGFkZGVkIG9yIG5vdCAoaXQgd29uJ3QgYmUgYWRkZWQgaWYgaXQn
cyBhIGR1cGxpY2F0ZSBvZiBhbiBleGlzdGluZyBwbHVnaW4pLgogICAgICAgICBib29sIGFkZChQ
YXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+KTsKQEAgLTk4LDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCB1cGRhdGVQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpOwog
I2VuZGlmCiAKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1fZGlzYWJsZWRQbHVnaW5GaWxlczsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9wbHVnaW5EaXJlY3RvcmllczsKICAgICAgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmVnaXN0ZXJlZE1JTUVUeXBlczsKICAgICAgICAgUGx1Z2luU2V0IG1f
cGx1Z2luczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDUx
YWY4MTUzMDk4ZDRiMDYwYTQ4ZDAzY2EzYzc5NWM4ODcxMmZlMWQuLjUyYWYzMWVhMzcyNDQzOTNk
YzYyMjFiZWUxOTgzZDMxYzA3OWVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcApAQCAtNTE1Myw2ICs1MTUzLDU0IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJQbHVn
aW5TaXRlRGF0YSgpCiAgICAgICAgICgqaXQpLT5jbGVhclNpdGVEYXRhKFN0cmluZygpKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRFeHRyYVBsdWdpbkRpcmVjdG9yeShjb25zdCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6U3RyaW5nJiBwYXRoKQoreworICAgIFBsdWdpbkRhdGFiYXNlKiBkYXRhYmFz
ZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKHRydWUpOworCisgICAgaWYgKCFk
YXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luRGly
ZWN0b3JpZXMgPSBkYXRhYmFzZS0+cGx1Z2luRGlyZWN0b3JpZXMoKTsKKworICAgIGlmIChwYXRo
Lmxlbmd0aCgpICYmICFwbHVnaW5EaXJlY3Rvcmllcy5jb250YWlucyhwYXRoLmNfc3RyKCkpKSB7
CisgICAgICAgIHBsdWdpbkRpcmVjdG9yaWVzLmFwcGVuZChwYXRoLmNfc3RyKCkpOworICAgICAg
ICBkYXRhYmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMocGx1Z2luRGlyZWN0b3JpZXMpOworICAg
ICAgICAvLyBDbGVhciBvdXQgZXZlcnkgUGFnZSdzIGxvY2FsIGNvcHkgb2YgUGx1Z2luRGF0YSwg
c28gaXQgd2lsbAorICAgICAgICAvLyByZXRyaWV2ZSBpdCBhZ2FpbiB3aGVuIG5lY2Vzc2FyeS4g
T3RoZXJ3aXNlIGVhY2ggcGFnZSB3aWxsIGJlCisgICAgICAgIC8vIHVzaW5nIG9sZCBkYXRhIGFu
ZCBtYXkgZWl0aGVyIGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luIHRoYXQKKyAgICAgICAgLy8g
ZG9lc24ndCBleGlzdCAoY2F1c2luZyBhIGNyYXNoKSBvciBub3QgZGlyZWN0IGNvbnRlbnQgdG8g
YSBwbHVnaW4KKyAgICAgICAgLy8gdGhhdCBkb2VzIGV4aXN0LiBXZSBkbyB0aGlzIGV2ZW4gaWYg
cGx1Z2lucyBhcmUgZGlzYWJsZWQgYmVjYXVzZQorICAgICAgICAvLyB0aGlzIHN0ZXAgaXMgbm90
IGRvbmUgd2hlbiBwbHVnaW5zIGdldCBlbmFibGVkLgorICAgICAgICBkLT5tX3BhZ2UtPnJlZnJl
c2hQbHVnaW5zKGZhbHNlKTsKKworICAgICAgICBpZiAoZC0+bV93ZWJTZXR0aW5ncy0+YXJlUGx1
Z2luc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGRhdGFiYXNlLT5yZWZyZXNoKCk7CisgICAgfQor
fQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgZmlsZU5hbWUsIGJvb2wgZGlzYWJsZWQpCit7CisgICAg
UGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdp
bnModHJ1ZSk7CisKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIShkaXNhYmxlZCA/IGRhdGFiYXNlLT5hZGREaXNhYmxlZFBsdWdpbkZpbGUoZmlsZU5hbWUp
IDogZGF0YWJhc2UtPnJlbW92ZURpc2FibGVkUGx1Z2luRmlsZShmaWxlTmFtZSkpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBDbGVhciBvdXQgZXZlcnkgUGFnZSdzIGxvY2FsIGNvcHkgb2Yg
UGx1Z2luRGF0YSwgc28gaXQgd2lsbAorICAgIC8vIHJldHJpZXZlIGl0IGFnYWluIHdoZW4gbmVj
ZXNzYXJ5LiBPdGhlcndpc2UgZWFjaCBwYWdlIHdpbGwgYmUKKyAgICAvLyB1c2luZyBvbGQgZGF0
YSBhbmQgbWF5IGVpdGhlciBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbiB0aGF0CisgICAgLy8g
ZG9lc24ndCBleGlzdCAoY2F1c2luZyBhIGNyYXNoKSBvciBub3QgZGlyZWN0IGNvbnRlbnQgdG8g
YSBwbHVnaW4KKyAgICAvLyB0aGF0IGRvZXMgZXhpc3QuIFdlIGRvIHRoaXMgZXZlbiBpZiBwbHVn
aW5zIGFyZSBkaXNhYmxlZCBiZWNhdXNlCisgICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBkb25lIHdo
ZW4gcGx1Z2lucyBnZXQgZW5hYmxlZC4KKyAgICBkLT5tX3BhZ2UtPnJlZnJlc2hQbHVnaW5zKGZh
bHNlKTsKKworICAgIC8vIFJlZnJlc2ggdGhlIHBsdWdpbiBkYXRhYmFzZSBpZiBuZWNlc3NhcnkK
KyAgICBpZiAoZC0+bV93ZWJTZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQoKSkKKyAgICAgICAg
ZGF0YWJhc2UtPnJlZnJlc2goKTsKK30KKwogdm9pZCBXZWJQYWdlOjpvbk5ldHdvcmtBdmFpbGFi
aWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogewogICAgIHVwZGF0ZU9ubGluZVN0YXR1cyhh
dmFpbGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAppbmRleCBmYzc1
YjBmOWFmNjQ4NTBjOTEyZDViNzBjZmYxZGExYzQ0YzliZDhlLi4yMjdlYTM0ZGJjOTM2ZWY0YzYw
ODRkMWIyM2U1NWRkMGJiMmEzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuaApAQCAtMzMxLDYgKzMzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeVNjcmVlblBv
d2VyU3RhdGVDaGFuZ2VkKGJvb2wgcG93ZXJlZCk7CiAgICAgdm9pZCBub3RpZnlGdWxsU2NyZWVu
VmlkZW9FeGl0ZWQoYm9vbCBkb25lKTsKICAgICB2b2lkIGNsZWFyUGx1Z2luU2l0ZURhdGEoKTsK
KyAgICB2b2lkIHNldEV4dHJhUGx1Z2luRGlyZWN0b3J5KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgdXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyhj
b25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBkaXNhYmxl
ZCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wpOwogICAg
IGJvb2wgaXNXZWJHTEVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYkdMRW5hYmxlZChi
b29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179076</attachid>
            <date>2012-12-12 10:24:14 -0800</date>
            <delta_ts>2012-12-13 11:02:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121212132050.patch</filename>
            <type>text/plain</type>
            <size>9423</size>
            <attacher name="Parth Patel">parpatel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YWJlYThhNWVlN2Jm
MzIxMzU5ZDczMmZkNTA5YjNjNTU4NGRjNC4uY2FkNzJkNjAzNGUwMzFlNDg4ZDZlZDA1NTBkYjUy
ZDJmODhjNjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGZpeCBtYWtlcyBQbHVnaW5EYXRhYmFzZSBjaGFuZ2VzIGdlbmVyYWwgc28gdGhhdCBvdGhl
ciBwb3J0cworICAgICAgICBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIGlmIHRoZXkgd2lzaC4KKwor
ICAgICAgICBMYXlvdXQgdGVzdCBub3QgaW5jbHVkZWQgd2l0aCB0aGlzIHBhdGNoIGJlY2F1c2Ug
dGhlcmUKKyAgICAgICAgaXMgY3VycmVudGx5IG5vIGZyYW1ld29yayB3aXRoaW4gTGF5b3V0VGVz
dHMgdG8gYWxsb3cgY2FsbHMKKyAgICAgICAgZnJvbSBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbiB2
aWEgcGxhdGZvcm0gQVBJIGNvZGUgKHN1Y2ggYXMgdGhlCisgICAgICAgIFdlYlZpZXcgQVBJKS4K
KworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQ
bHVnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxl
ZFBsdWdpbkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmFkZERpc2Fi
bGVkUGx1Z2luRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1
Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgIChQbHVnaW5EYXRhYmFzZSk6CisKIDIwMTItMTItMTIgIEFsZXhlaSBGaWxp
cHBvdiAgPGFscGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBt
ZW1vcnkgdXNlZCBieSBtZW1vcnkgYWxsb2NhdG9yIGl0c2VsZiB0byBOTUkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IDAyYjExMDk4NDRiMmU0MWJlZjkyYmY5ZjYyMTExYWU2MDNl
YzM0MGYuLjE1ZjBjNDA2NzUxNTliMmMwZTE2NmE4NmExNzg0ZjMyOTg1MjQzZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
ZWNoYW5pc20gYWxsb3dzIHBsdWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc3BlY2lmeWluZyB0aGVp
ciBzaGFyZWQgbGlicmFyeSBmaWxlbmFtZXMuCisgICAgICAgIE9uY2UgZGlzYWJsZWQsIGEgcGx1
Z2luJ3Mgc2hhcmVkIGxpYnJhcnkgc2hvdWxkIG5ldmVyIGJlIGxvYWRlZC4KKworICAgICAgICAq
IEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6
c2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6dXBkYXRlRGlzYWJsZWRQbHVnaW5GaWxlcyk6Cisg
ICAgICAgICogQXBpL1dlYlBhZ2UuaDoKKwogMjAxMi0xMi0xMSAgS2lob25nIEt3b24gIDxraWhv
bmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBWaWJyYXRpb24gQVBJOiBJREwgdHlwZSBk
b2Vzbid0IG1hdGNoIGltcGxlbWVudGF0aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNDQ1MmFmZTFlNGI2MzhiNWY3ZGRhMGVjN2IxNzlkN2Fl
M2Q5ZDZlMy4uNGQwZmZiZWMzZjEwZGUyODQ5NmY4NmQwMjEyY2UzMTA4MGM4NzRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTMxMiwxMSArMzEyLDIw
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpCiAgICAgICAgIG1fcHJlZmVycmVkUGx1Z2lucy5z
ZXQobWltZVR5cGUubG93ZXIoKSwgcGx1Z2luKTsKIH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6
ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgY29uc3QK
K3sKKyAgICAvLyBTa2lwIHBsdWdpbiBmaWxlcyB0aGF0IGFyZSBkaXNhYmxlZCBieSBmaWxlbmFt
ZS4KKyAgICBpZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKHBhdGhHZXRGaWxlTmFt
ZShmaWxlUGF0aCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZmlsZUV4
aXN0cyhmaWxlUGF0aCk7Cit9CisKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldERlbGV0ZWRQbHVn
aW5zKFBsdWdpblNldCYgcGx1Z2lucykgY29uc3QKIHsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsKICAgICBmb3IgKFBsdWdpblNldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3BsdWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGlmICghZmlsZUV4aXN0cygoKml0KS0+cGF0aCgpKSkKKyAgICAgICAgaWYgKCFmaWxlRXhp
c3RzQW5kSXNOb3REaXNhYmxlZCgoKml0KS0+cGF0aCgpKSkKICAgICAgICAgICAgIHBsdWdpbnMu
YWRkKCppdCk7CiAgICAgfQogfQpAQCAtMzYwLDYgKzM2OSwyMCBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpjbGVhcigpCiAjZW5kaWYKIH0KIAorYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVtb3ZlRGlz
YWJsZWRQbHVnaW5GaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7CisgICAgaWYgKCFtX2Rp
c2FibGVkUGx1Z2luRmlsZXMuY29udGFpbnMoZmlsZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVtb3ZlKGZpbGVOYW1lKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkRGlzYWJsZWRQbHVnaW5G
aWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7CisgICAgcmV0dXJuIG1fZGlzYWJsZWRQbHVn
aW5GaWxlcy5hZGQoZmlsZU5hbWUpLmlzTmV3RW50cnk7Cit9CisKICNpZiAoIU9TKFdJTkNFKSkg
JiYgKCFPUyhXSU5ET1dTKSB8fCAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpKQogLy8gRm9y
IFNhZmFyaS9XaW4gdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZAog
Ly8gaW4gUGx1Z2luRGF0YWJhc2VXaW4uY3BwLCBidXQgaWYgd2UgY2FuIHVzZSBXZWJDb3JlIGNv
bnN0cnVjdHMKQEAgLTQ2Miw3ICs0ODUsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVO
YW1lRmlsdGVyKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBsdWdp
bnNFbmQgPSBwbHVnaW5QYXRocy5lbmQoKTsKICAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgcEl0ID0gcGx1Z2luUGF0aHMuYmVnaW4oKTsgcEl0ICE9IHBsdWdpbnNF
bmQ7ICsrcEl0KSB7Ci0gICAgICAgICAgICBpZiAoIWZpbGVFeGlzdHMoKnBJdCkpCisgICAgICAg
ICAgICBpZiAoIWZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKCpwSXQpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBwYXRocy5hZGQoKnBJdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggYTFjNDRiYzViZjczYThmYTYwNzllYWIy
MTI2ODliMzVhNjQyYWYyNy4uNmZhZTVmMDhhNzA4YzA0MTY5ZmZmMjIyOTQzMjBiNWJkNTcxZThm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtNzUsNiArNzUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX3BsdWdpbkRpcmVjdG9yaWVz
ID0gZGlyZWN0b3JpZXM7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHJlbW92ZURpc2FibGVk
UGx1Z2luRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICAgICAgYm9vbCBhZGREaXNh
YmxlZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAgICAgICAgIHN0YXRpYyBW
ZWN0b3I8U3RyaW5nPiBkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gcGx1Z2luRGlyZWN0b3JpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVj
dG9yaWVzOyB9CiAKQEAgLTg5LDYgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgZ2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8
U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICB2b2lkIGdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNl
dCYpIGNvbnN0OworICAgICAgICBib29sIGZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Z2lu
IHdhcyBhY3R1YWxseSBhZGRlZCBvciBub3QgKGl0IHdvbid0IGJlIGFkZGVkIGlmIGl0J3MgYSBk
dXBsaWNhdGUgb2YgYW4gZXhpc3RpbmcgcGx1Z2luKS4KICAgICAgICAgYm9vbCBhZGQoUGFzc1Jl
ZlB0cjxQbHVnaW5QYWNrYWdlPik7CkBAIC05OCw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgdXBkYXRlUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKTsKICNlbmRp
ZgogCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Rpc2FibGVkUGx1Z2luRmlsZXM7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IG1fcGx1Z2luRGlyZWN0b3JpZXM7CiAgICAgICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3JlZ2lzdGVyZWRNSU1FVHlwZXM7CiAgICAgICAgIFBsdWdpblNldCBtX3BsdWdp
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCA1MWFmODE1
MzA5OGQ0YjA2MGE0OGQwM2NhM2M3OTVjODg3MTJmZTFkLi5iYjg4NTZjZjNkMDM5MWFiNzU5NDIw
NjlkYmM4ZjQ1YmEwMjUzY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKQEAgLTUxNTMsNiArNTE1Myw1NyBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFyUGx1Z2luU2l0
ZURhdGEoKQogICAgICAgICAoKml0KS0+Y2xlYXJTaXRlRGF0YShTdHJpbmcoKSk7CiB9CiAKK3Zv
aWQgV2ViUGFnZTo6c2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgcGF0aCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQ
bHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucyh0cnVlKTsKKyAgICBpZiAoIWRhdGFiYXNl
KQorICAgICAgICByZXR1cm47CisgICAgLy8gUmVsb2FkCisgICAgVmVjdG9yPFN0cmluZz4gcGx1
Z2luRGlyZWN0b3JpZXMgPSBkYXRhYmFzZS0+cGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBpZiAo
cGF0aC5lbXB0eSgpIHx8IHBsdWdpbkRpcmVjdG9yaWVzLmNvbnRhaW5zKHBhdGgpCisgICAgICAg
IHJldHVybjsKKworICAgIHBsdWdpbkRpcmVjdG9yaWVzLmFwcGVuZChwYXRoKTsKKyAgICBkYXRh
YmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMocGx1Z2luRGlyZWN0b3JpZXMpOworICAgIC8vIENs
ZWFyIG91dCBldmVyeSBQYWdlJ3MgbG9jYWwgY29weSBvZiBQbHVnaW5EYXRhLCBzbyBpdCB3aWxs
CisgICAgLy8gcmV0cmlldmUgaXQgYWdhaW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lzZSBlYWNo
IHBhZ2Ugd2lsbCBiZQorICAgIC8vIHVzaW5nIG9sZCBkYXRhIGFuZCBtYXkgZWl0aGVyIGRpcmVj
dCBjb250ZW50IHRvIGEgcGx1Z2luIHRoYXQKKyAgICAvLyBkb2Vzbid0IGV4aXN0IChjYXVzaW5n
IGEgY3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbgorICAgIC8vIHRoYXQg
ZG9lcyBleGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGJlY2F1
c2UKKyAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGRvbmUgd2hlbiBwbHVnaW5zIGdldCBlbmFibGVk
LgorCisgICAgLy8gVHJ1ZSBvbmx5IG5lZWRzIHRvIGJlIHBhc3NlZCBoZXJlIGlmIHdlIHdhbnQg
dG8gcmVsb2FkIGVhY2ggZnJhbWUKKyAgICAvLyBpbiB0aGUgcGFnZSdzIGZyYW1lIHRyZWUuIEhl
cmUgd2UgYXJlIHBhc3NpbmcgZmFsc2UgZm9yIG1pbmltdW0gZGlzcnVwdGlvbiwKKyAgICAvLyBh
bmQgYmVjYXVzZSB0aGlzIGRvZXMgZXhhY3RseSB3aGF0IHdlIG5lZWQgYW5kIG5vdGhpbmcgbW9y
ZTogcmVmcmVzaCB0aGUgcGx1Z2luIGRhdGEuCisgICAgZC0+bV9wYWdlLT5yZWZyZXNoUGx1Z2lu
cyhmYWxzZSk7CisKKyAgICBpZiAoZC0+bV93ZWJTZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQo
KSkKKyAgICAgICAgZGF0YWJhc2UtPnJlZnJlc2goKTsKK30KKwordm9pZCBXZWJQYWdlOjp1cGRh
dGVEaXNhYmxlZFBsdWdpbkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcm
IGZpbGVOYW1lLCBib29sIGRpc2FibGVkKQoreworICAgIC8vIFBhc3NpbmcgdHJ1ZSB3aWxsIHNl
dCBwbHVnaW4gZGF0YWJhc2Ugd2l0aCBkZWZhdWx0IHBsdWdpbiBkaXJlY3RvcmllcyBhbmQgcmVm
cmVzaCBpdC4KKyAgICBQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBQbHVnaW5EYXRhYmFzZTo6
aW5zdGFsbGVkUGx1Z2lucyh0cnVlKTsKKyAgICBpZiAoIWRhdGFiYXNlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIShkaXNhYmxlZCA/IGRhdGFiYXNlLT5hZGREaXNhYmxlZFBsdWdpbkZp
bGUoZmlsZU5hbWUpIDogZGF0YWJhc2UtPnJlbW92ZURpc2FibGVkUGx1Z2luRmlsZShmaWxlTmFt
ZSkpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDbGVhciBvdXQgZXZlcnkgUGFnZSdzIGxv
Y2FsIGNvcHkgb2YgUGx1Z2luRGF0YSwgc28gaXQgd2lsbAorICAgIC8vIHJldHJpZXZlIGl0IGFn
YWluIHdoZW4gbmVjZXNzYXJ5LiBPdGhlcndpc2UgZWFjaCBwYWdlIHdpbGwgYmUKKyAgICAvLyB1
c2luZyBvbGQgZGF0YSBhbmQgbWF5IGVpdGhlciBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbiB0
aGF0CisgICAgLy8gZG9lc24ndCBleGlzdCAoY2F1c2luZyBhIGNyYXNoKSBvciBub3QgZGlyZWN0
IGNvbnRlbnQgdG8gYSBwbHVnaW4KKyAgICAvLyB0aGF0IGRvZXMgZXhpc3QuIFdlIGRvIHRoaXMg
ZXZlbiBpZiBwbHVnaW5zIGFyZSBkaXNhYmxlZCBiZWNhdXNlCisgICAgLy8gdGhpcyBzdGVwIGlz
IG5vdCBkb25lIHdoZW4gcGx1Z2lucyBnZXQgZW5hYmxlZC4KKyAgICBkLT5tX3BhZ2UtPnJlZnJl
c2hQbHVnaW5zKGZhbHNlKTsKKworICAgIC8vIFJlZnJlc2ggdGhlIHBsdWdpbiBkYXRhYmFzZSBp
ZiBuZWNlc3NhcnkKKyAgICBpZiAoZC0+bV93ZWJTZXR0aW5ncy0+YXJlUGx1Z2luc0VuYWJsZWQo
KSkKKyAgICAgICAgZGF0YWJhc2UtPnJlZnJlc2goKTsKK30KKwogdm9pZCBXZWJQYWdlOjpvbk5l
dHdvcmtBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogewogICAgIHVwZGF0ZU9u
bGluZVN0YXR1cyhhdmFpbGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
aAppbmRleCBmYzc1YjBmOWFmNjQ4NTBjOTEyZDViNzBjZmYxZGExYzQ0YzliZDhlLi4yMjdlYTM0
ZGJjOTM2ZWY0YzYwODRkMWIyM2U1NWRkMGJiMmEzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuaApAQCAtMzMxLDYgKzMzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG5v
dGlmeVNjcmVlblBvd2VyU3RhdGVDaGFuZ2VkKGJvb2wgcG93ZXJlZCk7CiAgICAgdm9pZCBub3Rp
ZnlGdWxsU2NyZWVuVmlkZW9FeGl0ZWQoYm9vbCBkb25lKTsKICAgICB2b2lkIGNsZWFyUGx1Z2lu
U2l0ZURhdGEoKTsKKyAgICB2b2lkIHNldEV4dHJhUGx1Z2luRGlyZWN0b3J5KGNvbnN0IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgdXBkYXRlRGlzYWJsZWRQ
bHVnaW5GaWxlcyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBmaWxlTmFtZSwg
Ym9vbCBkaXNhYmxlZCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
KGJvb2wpOwogICAgIGJvb2wgaXNXZWJHTEVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFdl
YkdMRW5hYmxlZChib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179303</attachid>
            <date>2012-12-13 11:03:06 -0800</date>
            <delta_ts>2012-12-14 08:24:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121213135944.patch</filename>
            <type>text/plain</type>
            <size>9932</size>
            <attacher name="Parth Patel">parpatel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YWJlYThhNWVlN2Jm
MzIxMzU5ZDczMmZkNTA5YjNjNTU4NGRjNC4uZGFmODRiOWRlODI2ZjNiM2RhOTJiZWQ2YWE2MmM1
NDk5NTdjZGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEyICBQYXJ0
aCBQYXRlbCAgPHBhcnBhdGVsQHJpbS5jb20+LCBNYXggRmVpbCA8bWZlaWxAcmltLmNvbT4KKwor
ICAgICAgICBBbGxvdyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZp
bGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFRo
aXMgZml4IG1ha2VzIFBsdWdpbkRhdGFiYXNlIGNoYW5nZXMgZ2VuZXJhbCBzbyB0aGF0IG90aGVy
IHBvcnRzCisgICAgICAgIGNhbiB1c2UgdGhpcyBtZWNoYW5pc20gaWYgdGhleSB3aXNoLgorCisg
ICAgICAgIExheW91dCB0ZXN0IG5vdCBpbmNsdWRlZCB3aXRoIHRoaXMgcGF0Y2ggYmVjYXVzZSB0
aGVyZQorICAgICAgICBpcyBjdXJyZW50bHkgbm8gZnJhbWV3b3JrIHdpdGhpbiBMYXlvdXRUZXN0
cyB0byBhbGxvdyBjYWxscworICAgICAgICBmcm9tIGFuIGV4dGVybmFsIGFwcGxpY2F0aW9uIHZp
YSBwbGF0Zm9ybSBBUEkgY29kZSAoc3VjaCBhcyB0aGUKKyAgICAgICAgV2ViVmlldyBBUEkpLgor
CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhYmFzZTo6ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBs
dWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlbW92ZURpc2FibGVk
UGx1Z2luRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkRGlzYWJs
ZWRQbHVnaW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
aDoKKyAgICAgICAgKFBsdWdpbkRhdGFiYXNlKToKKwogMjAxMi0xMi0xMiAgQWxleGVpIEZpbGlw
cG92ICA8YWxwaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIG1l
bW9yeSB1c2VkIGJ5IG1lbW9yeSBhbGxvY2F0b3IgaXRzZWxmIHRvIE5NSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKaW5kZXggMDJiMTEwOTg0NGIyZTQxYmVmOTJiZjlmNjIxMTFhZTYwM2Vj
MzQwZi4uMWYwYTkwOTliZDFjMjFiY2YxNDI0NjZiZmI3NWEzM2U0N2M3MWY0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTItMTIgIFBhcnRo
IFBhdGVsICA8cGFycGF0ZWxAcmltLmNvbT4sIE1heCBGZWlsIDxtZmVpbEByaW0uY29tPgorCisg
ICAgICAgIEFsbG93IHBsdWdpbnMgdG8gYmUgZGlzYWJsZWQgYnkgc2hhcmVkIGxpYnJhcnkgZmls
ZW5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MTI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgTWVj
aGFuaXNtIGFsbG93cyBwbHVnaW5zIHRvIGJlIGRpc2FibGVkIGJ5IHNwZWNpZnlpbmcgdGhlaXIg
c2hhcmVkIGxpYnJhcnkgZmlsZW5hbWVzLgorICAgICAgICBPbmNlIGRpc2FibGVkLCBhIHBsdWdp
bidzIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCBuZXZlciBiZSBsb2FkZWQuCisKKyAgICAgICAgKiBB
cGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNl
dEV4dHJhUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMpOgorICAg
ICAgICAqIEFwaS9XZWJQYWdlLmg6CisKIDIwMTItMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25n
Lmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmlicmF0aW9uIEFQSTogSURMIHR5cGUgZG9l
c24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCmluZGV4IDQ0NTJhZmUxZTRiNjM4YjVmN2RkYTBlYzdiMTc5ZDdhZTNk
OWQ2ZTMuLjRkMGZmYmVjM2YxMGRlMjg0OTZmODZkMDIxMmNlMzEwODBjODc0YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMTIsMTEgKzMxMiwyMCBA
QCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBQbHVnaQogICAgICAgICBtX3ByZWZlcnJlZFBsdWdpbnMuc2V0
KG1pbWVUeXBlLmxvd2VyKCksIHBsdWdpbik7CiB9CiAKK2Jvb2wgUGx1Z2luRGF0YWJhc2U6OmZp
bGVFeGlzdHNBbmRJc05vdERpc2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0Cit7
CisgICAgLy8gU2tpcCBwbHVnaW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUu
CisgICAgaWYgKG1fZGlzYWJsZWRQbHVnaW5GaWxlcy5jb250YWlucyhwYXRoR2V0RmlsZU5hbWUo
ZmlsZVBhdGgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZpbGVFeGlz
dHMoZmlsZVBhdGgpOworfQorCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lu
cyhQbHVnaW5TZXQmIHBsdWdpbnMpIGNvbnN0CiB7CiAgICAgUGx1Z2luU2V0Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3BsdWdpbnMuZW5kKCk7CiAgICAgZm9yIChQbHVnaW5TZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9wbHVnaW5zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBpZiAoIWZpbGVFeGlzdHMoKCppdCktPnBhdGgoKSkpCisgICAgICAgIGlmICghZmlsZUV4aXN0
c0FuZElzTm90RGlzYWJsZWQoKCppdCktPnBhdGgoKSkpCiAgICAgICAgICAgICBwbHVnaW5zLmFk
ZCgqaXQpOwogICAgIH0KIH0KQEAgLTM2MCw2ICszNjksMjAgQEAgdm9pZCBQbHVnaW5EYXRhYmFz
ZTo6Y2xlYXIoKQogI2VuZGlmCiB9CiAKK2Jvb2wgUGx1Z2luRGF0YWJhc2U6OnJlbW92ZURpc2Fi
bGVkUGx1Z2luRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQoreworICAgIGlmICghbV9kaXNh
YmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKGZpbGVOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV9kaXNhYmxlZFBsdWdpbkZpbGVzLnJlbW92ZShmaWxlTmFtZSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZERpc2FibGVkUGx1Z2luRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQoreworICAgIHJldHVybiBtX2Rpc2FibGVkUGx1Z2lu
RmlsZXMuYWRkKGZpbGVOYW1lKS5pc05ld0VudHJ5OworfQorCiAjaWYgKCFPUyhXSU5DRSkpICYm
ICghT1MoV0lORE9XUykgfHwgIUVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSkKIC8vIEZvciBT
YWZhcmkvV2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8v
IGluIFBsdWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25z
dHJ1Y3RzCkBAIC00NjIsNyArNDg1LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2lu
UGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHBsdWdpblBhdGhzID0gbGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFt
ZUZpbHRlcik7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwbHVnaW5z
RW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIHBJdCA9IHBsdWdpblBhdGhzLmJlZ2luKCk7IHBJdCAhPSBwbHVnaW5zRW5k
OyArK3BJdCkgewotICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKCpwSXQpKQorICAgICAgICAg
ICAgaWYgKCFmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZCgqcEl0KSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRkKCpwSXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IGExYzQ0YmM1YmY3M2E4ZmE2MDc5ZWFiMjEy
Njg5YjM1YTY0MmFmMjcuLjZmYWU1ZjA4YTcwOGMwNDE2OWZmZjIyMjk0MzIwYjViZDU3MWU4Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTc1LDYgKzc1LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgbV9wbHVnaW5EaXJlY3RvcmllcyA9
IGRpcmVjdG9yaWVzOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCByZW1vdmVEaXNhYmxlZFBs
dWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgICAgIGJvb2wgYWRkRGlzYWJs
ZWRQbHVnaW5GaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogICAgICAgICBzdGF0aWMgVmVj
dG9yPFN0cmluZz4gZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IHBsdWdpbkRpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EaXJlY3Rv
cmllczsgfQogCkBAIC04OSw2ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2
YXRlOgogICAgICAgICB2b2lkIGdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0
cmluZz4mKSBjb25zdDsKICAgICAgICAgdm9pZCBnZXREZWxldGVkUGx1Z2lucyhQbHVnaW5TZXQm
KSBjb25zdDsKKyAgICAgICAgYm9vbCBmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZChjb25zdCBT
dHJpbmcmKSBjb25zdDsKIAogICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWdpbiB3
YXMgYWN0dWFsbHkgYWRkZWQgb3Igbm90IChpdCB3b24ndCBiZSBhZGRlZCBpZiBpdCdzIGEgZHVw
bGljYXRlIG9mIGFuIGV4aXN0aW5nIHBsdWdpbikuCiAgICAgICAgIGJvb2wgYWRkKFBhc3NSZWZQ
dHI8UGx1Z2luUGFja2FnZT4pOwpAQCAtOTgsNiArMTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCk7CiAjZW5kaWYK
IAorICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9kaXNhYmxlZFBsdWdpbkZpbGVzOwogICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBtX3BsdWdpbkRpcmVjdG9yaWVzOwogICAgICAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZWdpc3RlcmVkTUlNRVR5cGVzOwogICAgICAgICBQbHVnaW5TZXQgbV9wbHVnaW5z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNTFhZjgxNTMw
OThkNGIwNjBhNDhkMDNjYTNjNzk1Yzg4NzEyZmUxZC4uMTlhYTkwMTZkNDdkMzFkMjZiZTI4NTkx
Njc2OWZiZjU1MzAyYWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
Y3BwCkBAIC01MTUzLDYgKzUxNTMsNjYgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclBsdWdpblNpdGVE
YXRhKCkKICAgICAgICAgKCppdCktPmNsZWFyU2l0ZURhdGEoU3RyaW5nKCkpOwogfQogCit2b2lk
IFdlYlBhZ2U6OnNldEV4dHJhUGx1Z2luRGlyZWN0b3J5KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpTdHJpbmcmIHBhdGgpCit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUGx1
Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnModHJ1ZSAvKiB0cnVlIGZvciBsb2FkaW5nIGRl
ZmF1bHQgZGlyZWN0b3JpZXMgKi8pOworICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcyA9IGRhdGFiYXNl
LT5wbHVnaW5EaXJlY3RvcmllcygpOworICAgIGlmIChwYXRoLmVtcHR5KCkgfHwgcGx1Z2luRGly
ZWN0b3JpZXMuY29udGFpbnMocGF0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGx1Z2luRGly
ZWN0b3JpZXMuYXBwZW5kKHBhdGgpOworICAgIGRhdGFiYXNlLT5zZXRQbHVnaW5EaXJlY3Rvcmll
cyhwbHVnaW5EaXJlY3Rvcmllcyk7CisgICAgLy8gQ2xlYXIgb3V0IGV2ZXJ5IFBhZ2UncyBsb2Nh
bCBjb3B5IG9mIFBsdWdpbkRhdGEsIHNvIGl0IHdpbGwKKyAgICAvLyByZXRyaWV2ZSBpdCBhZ2Fp
biB3aGVuIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlIGVhY2ggcGFnZSB3aWxsIGJlCisgICAgLy8gdXNp
bmcgb2xkIGRhdGEgYW5kIG1heSBlaXRoZXIgZGlyZWN0IGNvbnRlbnQgdG8gYSBwbHVnaW4gdGhh
dAorICAgIC8vIGRvZXNuJ3QgZXhpc3QgKGNhdXNpbmcgYSBjcmFzaCkgb3Igbm90IGRpcmVjdCBj
b250ZW50IHRvIGEgcGx1Z2luCisgICAgLy8gdGhhdCBkb2VzIGV4aXN0LiBXZSBkbyB0aGlzIGV2
ZW4gaWYgcGx1Z2lucyBhcmUgZGlzYWJsZWQgYmVjYXVzZQorICAgIC8vIHRoaXMgc3RlcCBpcyBu
b3QgZG9uZSB3aGVuIHBsdWdpbnMgZ2V0IGVuYWJsZWQuCisKKyAgICAvLyBUcnVlIG9ubHkgbmVl
ZHMgdG8gYmUgcGFzc2VkIGhlcmUgaWYgd2Ugd2FudCB0byByZWxvYWQgZWFjaCBmcmFtZQorICAg
IC8vIGluIHRoZSBwYWdlJ3MgZnJhbWUgdHJlZS4gSGVyZSB3ZSBhcmUgcGFzc2luZyBmYWxzZSBm
b3IgbWluaW11bSBkaXNydXB0aW9uLAorICAgIC8vIGFuZCBiZWNhdXNlIHRoaXMgZG9lcyBleGFj
dGx5IHdoYXQgd2UgbmVlZCBhbmQgbm90aGluZyBtb3JlOiByZWZyZXNoIHRoZSBwbHVnaW4gZGF0
YS4KKyAgICBkLT5tX3BhZ2UtPnJlZnJlc2hQbHVnaW5zKGZhbHNlIC8qIGZhbHNlIGZvciBtaW5p
bXVtIGRpc3J1cHRpb24gYXMgZGVzY3JpYmVkIGFib3ZlICovKTsKKworICAgIGlmIChkLT5tX3dl
YlNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQorICAgICAgICBkYXRhYmFzZS0+cmVmcmVz
aCgpOworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZURpc2FibGVkUGx1Z2luRmlsZXMoY29uc3Qg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgZmlsZU5hbWUsIGJvb2wgZGlzYWJsZWQpCit7
CisgICAgLy8gUGFzc2luZyB0cnVlIHdpbGwgc2V0IHBsdWdpbiBkYXRhYmFzZSB3aXRoIGRlZmF1
bHQgcGx1Z2luIGRpcmVjdG9yaWVzIGFuZCByZWZyZXNoIGl0LgorICAgIFBsdWdpbkRhdGFiYXNl
KiBkYXRhYmFzZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKHRydWUgLyogdHJ1
ZSBmb3IgbG9hZGluZyBkZWZhdWx0IGRpcmVjdG9yaWVzICovKTsKKyAgICBpZiAoIWRhdGFiYXNl
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGlzYWJsZWQpIHsKKyAgICAgICAgaWYgKCFk
YXRhYmFzZS0+YWRkRGlzYWJsZWRQbHVnaW5GaWxlKGZpbGVOYW1lKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWRhdGFiYXNlLT5yZW1vdmVEaXNhYmxl
ZFBsdWdpbkZpbGUoZmlsZU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIENsZWFyIG91dCBldmVyeSBQYWdlJ3MgbG9jYWwgY29weSBvZiBQbHVnaW5EYXRhLCBzbyBp
dCB3aWxsCisgICAgLy8gcmV0cmlldmUgaXQgYWdhaW4gd2hlbiBuZWNlc3NhcnkuIE90aGVyd2lz
ZSBlYWNoIHBhZ2Ugd2lsbCBiZQorICAgIC8vIHVzaW5nIG9sZCBkYXRhIGFuZCBtYXkgZWl0aGVy
IGRpcmVjdCBjb250ZW50IHRvIGEgcGx1Z2luIHRoYXQKKyAgICAvLyBkb2Vzbid0IGV4aXN0IChj
YXVzaW5nIGEgY3Jhc2gpIG9yIG5vdCBkaXJlY3QgY29udGVudCB0byBhIHBsdWdpbgorICAgIC8v
IHRoYXQgZG9lcyBleGlzdC4gV2UgZG8gdGhpcyBldmVuIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVk
IGJlY2F1c2UKKyAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGRvbmUgd2hlbiBwbHVnaW5zIGdldCBl
bmFibGVkLgorCisgICAgLy8gVHJ1ZSBvbmx5IG5lZWRzIHRvIGJlIHBhc3NlZCBoZXJlIGlmIHdl
IHdhbnQgdG8gcmVsb2FkIGVhY2ggZnJhbWUKKyAgICAvLyBpbiB0aGUgcGFnZSdzIGZyYW1lIHRy
ZWUuIEhlcmUgd2UgYXJlIHBhc3NpbmcgZmFsc2UgZm9yIG1pbmltdW0gZGlzcnVwdGlvbiwKKyAg
ICAvLyBhbmQgYmVjYXVzZSB0aGlzIGRvZXMgZXhhY3RseSB3aGF0IHdlIG5lZWQgYW5kIG5vdGhp
bmcgbW9yZTogcmVmcmVzaCB0aGUgcGx1Z2luIGRhdGEuCisgICAgZC0+bV9wYWdlLT5yZWZyZXNo
UGx1Z2lucyhmYWxzZSAvKiBmYWxzZSBmb3IgbWluaW11bSBkaXNydXB0aW9uIGFzIGRlc2NyaWJl
ZCBhYm92ZSAqLyk7CisKKyAgICAvLyBSZWZyZXNoIHRoZSBwbHVnaW4gZGF0YWJhc2UgaWYgbmVj
ZXNzYXJ5LgorICAgIGlmIChkLT5tX3dlYlNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQor
ICAgICAgICBkYXRhYmFzZS0+cmVmcmVzaCgpOworfQorCiB2b2lkIFdlYlBhZ2U6Om9uTmV0d29y
a0F2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7CiAgICAgdXBkYXRlT25saW5l
U3RhdHVzKGF2YWlsYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmlu
ZGV4IGZjNzViMGY5YWY2NDg1MGM5MTJkNWI3MGNmZjFkYTFjNDRjOWJkOGUuLjIyN2VhMzRkYmM5
MzZlZjRjNjA4NGQxYjIzZTU1ZGQwYmIyYTM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5oCkBAIC0zMzEsNiArMzMxLDggQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5
U2NyZWVuUG93ZXJTdGF0ZUNoYW5nZWQoYm9vbCBwb3dlcmVkKTsKICAgICB2b2lkIG5vdGlmeUZ1
bGxTY3JlZW5WaWRlb0V4aXRlZChib29sIGRvbmUpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5TaXRl
RGF0YSgpOworICAgIHZvaWQgc2V0RXh0cmFQbHVnaW5EaXJlY3RvcnkoY29uc3QgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlN0cmluZyYgcGF0aCk7CisgICAgdm9pZCB1cGRhdGVEaXNhYmxlZFBsdWdp
bkZpbGVzKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZpbGVOYW1lLCBib29s
IGRpc2FibGVkKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9v
bCk7CiAgICAgYm9vbCBpc1dlYkdMRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V2ViR0xF
bmFibGVkKGJvb2wpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179487</attachid>
            <date>2012-12-14 08:28:04 -0800</date>
            <delta_ts>2012-12-14 09:54:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101274-20121214112445.patch</filename>
            <type>text/plain</type>
            <size>1425</size>
            <attacher name="Parth Patel">parpatel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwN2IxNjE5YzA3Y2E3ZjUyM2YzNTY0MDIwZWQxMjAzZGYzYTRmOTFiLi45OWJmOTIzYWMw
YTRjZjVmNmMwNjgzMDRhMDQ1OGVhNTg1MjI5MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0xNCAgUGFydGggUGF0ZWwgIDxwYXJwYXRl
bEByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBwbHVnaW5zIHRvIGJlIGRp
c2FibGVkIGJ5IHNoYXJlZCBsaWJyYXJ5IGZpbGVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b25nIExpLgorCisgICAgICAgIEZpeGluZyBidWlsZCBlcnJvci4KKworICAgICAgICAqIEFwaS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6c2V0RXh0
cmFQbHVnaW5EaXJlY3RvcnkpOgorCiAyMDEyLTEyLTEzICBZb25nIExpICA8eW9saUByaW0uY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBQb3NzaWJsZSBKUyByZS1lbnRyYW5jeSBjYXVzZWQg
YnkgVUkgZXZlbnQgaGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKaW5kZXggNjgzMjQyZTE2ODk0NGI3MThhNjBmMDM3NmYyZmQwMmI2ODE0NWM4Zi4uYzU5MDg0
YjRmODFhMTA1MDBjNWJjNmJhYmE5M2NkOTAxY2MxYmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01MTYwLDcgKzUxNjAsNyBAQCB2b2lkIFdlYlBhZ2U6
OnNldEV4dHJhUGx1Z2luRGlyZWN0b3J5KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJp
bmcmIHBhdGgpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiBwbHVn
aW5EaXJlY3RvcmllcyA9IGRhdGFiYXNlLT5wbHVnaW5EaXJlY3RvcmllcygpOwotICAgIGlmIChw
YXRoLmVtcHR5KCkgfHwgcGx1Z2luRGlyZWN0b3JpZXMuY29udGFpbnMocGF0aCkKKyAgICBpZiAo
cGF0aC5lbXB0eSgpIHx8IHBsdWdpbkRpcmVjdG9yaWVzLmNvbnRhaW5zKFN0cmluZyhwYXRoKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHBsdWdpbkRpcmVjdG9yaWVzLmFwcGVuZChwYXRoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>