<?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>135358</bug_id>
          
          <creation_ts>2014-07-28 15:12:30 -0700</creation_ts>
          <short_desc>Create a more generic way for VMEntryScope to notify those interested that it will be destroyed</short_desc>
          <delta_ts>2014-08-07 19:29:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          <dependson>135627</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1025254</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-28 15:12:30 -0700</bug_when>
    <thetext>Currently, when VMEntryScope is destroyed, and it has a flag set that the VM needs recompilation, it calls Debugger::recompileAllJSFunctions.
This is tailored specifically for the Debugger and its purposes of recompiling all functions once the VM stops executing code. 
This patch will substitute this one recompilation flag with a list of callbacks that can all be notified when the VMEntryScope dies. 
This creates a more generalized interface to being notified when VMEntryScope dies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025281</commentid>
    <comment_count>1</comment_count>
      <attachid>235630</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-28 16:09:08 -0700</bug_when>
    <thetext>Created attachment 235630
patch 

Currently, when VMEntryScope is destroyed, and it has a flag set that the VM
needs recompilation, it calls Debugger::recompileAllJSFunctions. This is
tailored specifically for the Debugger and its purposes of recompiling all
functions once the VM stops executing code (specifically, to ensure that there are 
no functions on the stack that will be clobbered by recompiling them). This patch 
will substitute this one recompilation flag with a list of callbacks that are all 
notified when the VMEntryScope dies. This creates a more generalized interface to 
being notified when the VM stops executing code via the event of VMEntryScope
dying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025285</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-28 16:11:36 -0700</bug_when>
    <thetext>Attachment 235630 did not pass style-queue:


ERROR: Source/JavaScriptCore/debugger/Debugger.cpp:338:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/debugger/Debugger.cpp:341:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025292</commentid>
    <comment_count>3</comment_count>
      <attachid>235635</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-28 16:16:57 -0700</bug_when>
    <thetext>Created attachment 235635
patch 

Same patch as above, but with WebKit style compliant changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025299</commentid>
    <comment_count>4</comment_count>
      <attachid>235635</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-28 16:27:34 -0700</bug_when>
    <thetext>Comment on attachment 235635
patch 

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

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:338
&gt; +        VMEntryScope::EntryScopeDidPopListener callback = [this] (VM* vm, JSGlobalObject* globalObject) 

This is probably a good place to use &quot;auto&quot;.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:341
&gt; +            if (globalObject-&gt;debugger() &amp;&amp; globalObject-&gt;debugger() == this)
&gt; +                this-&gt;recompileAllJSFunctions(vm);

It feels weird to use &apos;this&apos; here, since we can&apos;t guarantee its lifetime. I think it would be better to use globalObject-&gt;debugger() instead of &apos;this&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025301</commentid>
    <comment_count>5</comment_count>
      <attachid>235630</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-28 16:28:40 -0700</bug_when>
    <thetext>Comment on attachment 235630
patch 

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        tailored specifically for the Debugger and its purposes of recompiling all

typos in &quot;its purposes of recompiling&quot;?  Can it be phrased better?

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        notified when the VMEntryScope dies. This creates a more generalized interface to 

... when the *outermost* VMEntryScope *exits* ...

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:341
&gt; +            if (globalObject-&gt;debugger() &amp;&amp; globalObject-&gt;debugger() == this) {
&gt; +                this-&gt;recompileAllJSFunctions(vm);
&gt; +            }

no need for { }

&gt; Source/JavaScriptCore/runtime/VMEntryScope.cpp:71
&gt; +        callback(&amp;m_vm, m_globalObject);

nit: why not us a VM&amp; instead of a VM*?

&gt; Source/JavaScriptCore/runtime/VMEntryScope.h:47
&gt; +    void addEntryScopeDidPopListener(EntryScopeDidPopListener lambda);

The &quot;lambda&quot; is not needed.  Please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025338</commentid>
    <comment_count>6</comment_count>
      <attachid>235648</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-28 17:12:52 -0700</bug_when>
    <thetext>Created attachment 235648
patch 

Took into account the changes that both Mark and Geoff recommended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025533</commentid>
    <comment_count>7</comment_count>
      <attachid>235648</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-29 11:44:15 -0700</bug_when>
    <thetext>Comment on attachment 235648
patch 

I think you re-uploaded the old patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025536</commentid>
    <comment_count>8</comment_count>
      <attachid>235648</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-07-29 12:00:24 -0700</bug_when>
    <thetext>Comment on attachment 235648
patch 

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        to being notified when the VM stops executing code via the event of the outermost 

&quot;to being&quot; ==&gt; &quot;for being&quot;

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:345
&gt; +        auto listener = [this] (VM* vm, JSGlobalObject* globalObject) 
&gt; +        {
&gt; +            Debugger* debugger = globalObject-&gt;debugger();
&gt; +            if (debugger &amp;&amp; debugger == this)
&gt; +                debugger-&gt;recompileAllJSFunctions(vm);
&gt; +        };
&gt; +
&gt; +        vm-&gt;entryScope-&gt;addEntryScopeDidPopListener(listener);

I just thought of an issue.  This code registers the listener, but you don&apos;t have any code to unregister it when the debugger is detached.  Please fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025537</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-29 12:22:16 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 235648 [details])
&gt; I think you re-uploaded the old patch.

No, this was the updated patch. But I think I took your point yesterday as being that we should call this method on globalObject-&gt;debugger and still compare that to &apos;this&apos;, but maybe, you meant that we shouldn&apos;t compare to &apos;this&apos; at all?

So:
Debugger* debugger = globalObject-&gt;debugger();
&gt; +            if (debugger &amp;&amp; debugger == this)
&gt; +                debugger-&gt;recompileAllJSFunctions(vm);

==&gt; becomes ==&gt;

&gt; +            if (debugger)
&gt; +                debugger-&gt;recompileAllJSFunctions(vm);


Is that what you meant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025538</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-29 12:22:53 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 235648 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235648&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt; +        to being notified when the VM stops executing code via the event of the outermost 
&gt; 
&gt; &quot;to being&quot; ==&gt; &quot;for being&quot;
&gt; 
&gt; &gt; Source/JavaScriptCore/debugger/Debugger.cpp:345
&gt; &gt; +        auto listener = [this] (VM* vm, JSGlobalObject* globalObject) 
&gt; &gt; +        {
&gt; &gt; +            Debugger* debugger = globalObject-&gt;debugger();
&gt; &gt; +            if (debugger &amp;&amp; debugger == this)
&gt; &gt; +                debugger-&gt;recompileAllJSFunctions(vm);
&gt; &gt; +        };
&gt; &gt; +
&gt; &gt; +        vm-&gt;entryScope-&gt;addEntryScopeDidPopListener(listener);
&gt; 
&gt; I just thought of an issue.  This code registers the listener, but you don&apos;t have any code to unregister it when the debugger is detached.  Please fix.

I&apos;ll create an interface for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025565</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-29 15:10:19 -0700</bug_when>
    <thetext>&gt; So:
&gt; Debugger* debugger = globalObject-&gt;debugger();
&gt; &gt; +            if (debugger &amp;&amp; debugger == this)
&gt; &gt; +                debugger-&gt;recompileAllJSFunctions(vm);
&gt; 
&gt; ==&gt; becomes ==&gt;
&gt; 
&gt; &gt; +            if (debugger)
&gt; &gt; +                debugger-&gt;recompileAllJSFunctions(vm);

That&apos;s right.

It&apos;s not good to use &apos;this&apos; unless we can guarantee that the object pointed to by &apos;this&apos; has not been deleted.

It&apos;s not good to use a potentially deleted pointer -- even if you never dereference it. If the object pointed to by &apos;this&apos; is deleted, and a new object is allocated in its place, then our &quot;== this&quot; comparison means something totally different, and probably wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025597</commentid>
    <comment_count>12</comment_count>
      <attachid>235711</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-29 16:18:57 -0700</bug_when>
    <thetext>Created attachment 235711
patch 

More review considerations taken into account. Ultimately, I decided not to provide an interface for unregistering listeners.

If such an interface becomes required, it can be added in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025599</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-29 16:21:19 -0700</bug_when>
    <thetext>Attachment 235711 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/VMEntryScope.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025602</commentid>
    <comment_count>14</comment_count>
      <attachid>235714</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-29 16:27:23 -0700</bug_when>
    <thetext>Created attachment 235714
patch 

Fixed out of alphabetical order include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026696</commentid>
    <comment_count>15</comment_count>
      <attachid>235714</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-04 14:58:14 -0700</bug_when>
    <thetext>Comment on attachment 235714
patch 

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

r=me

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:342
&gt; +            Debugger* debugger = globalObject-&gt;debugger();
&gt; +            if (debugger)
&gt; +                debugger-&gt;recompileAllJSFunctions(vm);

It&apos;s nice to write this as a single line. That way, it&apos;s lexically impossible to use the NULL pointer:

if (Debugger* debugger = globalObject-&gt;debugger()) { ... }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026702</commentid>
    <comment_count>16</comment_count>
      <attachid>235714</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-04 15:05:01 -0700</bug_when>
    <thetext>Comment on attachment 235714
patch 

Clearing flags on attachment: 235714

Committed r172009: &lt;http://trac.webkit.org/changeset/172009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026703</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-04 15:05:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026980</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-05 16:01:09 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 135627</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027024</commentid>
    <comment_count>19</comment_count>
      <attachid>236068</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-05 18:18:37 -0700</bug_when>
    <thetext>Created attachment 236068
patch

Same patch as before, but with Geoff&apos;s recommendation taken into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027037</commentid>
    <comment_count>20</comment_count>
      <attachid>236068</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-05 18:42:54 -0700</bug_when>
    <thetext>Comment on attachment 236068
patch

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

&gt; Source/JavaScriptCore/runtime/VMEntryScope.cpp:59
&gt; +    m_allEntryScopeDidPopListeners.set(key, listener);

Probably should be add instead of set; set is a slower version that knows how to override values already in the map, and I think the intent here is not to do that.

Also, I think we should assert that they key isn’t already in there.

&gt; Source/JavaScriptCore/runtime/VMEntryScope.cpp:74
&gt; +    auto iter = m_allEntryScopeDidPopListeners.begin();
&gt; +    auto end = m_allEntryScopeDidPopListeners.end();
&gt; +    for ( ; iter != end; ++iter) {
&gt; +        EntryScopeDidPopListener listener = iter-&gt;value;
&gt; +        listener(&amp;m_vm, m_globalObject);
&gt;      }

The typical way of writing this kind of thing in new WebKit code is:

    for (auto&amp; listener : m_allEntryScopeDidPopListeners.values())
        listener(&amp;m_vm, m_globalObject);

I think that’s easier to read than the 6-line version.

&gt; Source/JavaScriptCore/runtime/VMEntryScope.h:46
&gt; +    typedef std::function&lt;void (VM*, JSGlobalObject*)&gt; EntryScopeDidPopListener;

Argument should be VM&amp; instead of VM*.

&gt; Source/JavaScriptCore/runtime/VMEntryScope.h:52
&gt; +    HashMap&lt;void*, EntryScopeDidPopListener&gt; m_allEntryScopeDidPopListeners;

Is void* really the best type for these keys?

Why does this need to be a map? Can’t it just be a Vector? Do we ever remove or overwrite any of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027063</commentid>
    <comment_count>21</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-05 19:41:57 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 236068 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236068&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VMEntryScope.cpp:59
&gt; &gt; +    m_allEntryScopeDidPopListeners.set(key, listener);
&gt; 
&gt; Probably should be add instead of set; set is a slower version that knows how to override values already in the map, and I think the intent here is not to do that.
&gt; 
&gt; Also, I think we should assert that they key isn’t already in there.
&gt; 
The intention here is to override the current listener if there is one. Those interested should be able to register listeners as many times as needed without having to worry handling duplicate callbacks themselves. This use case is currently unused because the only users of this API are various WebInspector Objects that subclass Debugger, who only register for this callback once, when they themselves attach to their first global object and request that all JS functions are recompiled. But I have another patch in the works that uses this feature to re-register callbacks (https://bugs.webkit.org/show_bug.cgi?id=135423). That being said, this method is named badly. I think it should be changed from &quot;addEntryScopeDidPopListener&quot; to &quot;setEntryScopeDidPopListener&quot; to better indicate its behavior.

&gt; &gt; Source/JavaScriptCore/runtime/VMEntryScope.cpp:74
&gt; &gt; +    auto iter = m_allEntryScopeDidPopListeners.begin();
&gt; &gt; +    auto end = m_allEntryScopeDidPopListeners.end();
&gt; &gt; +    for ( ; iter != end; ++iter) {
&gt; &gt; +        EntryScopeDidPopListener listener = iter-&gt;value;
&gt; &gt; +        listener(&amp;m_vm, m_globalObject);
&gt; &gt;      }
&gt; 
&gt; The typical way of writing this kind of thing in new WebKit code is:
&gt; 
&gt;     for (auto&amp; listener : m_allEntryScopeDidPopListeners.values())
&gt;         listener(&amp;m_vm, m_globalObject);
&gt; 
&gt; I think that’s easier to read than the 6-line version.
&gt; 
I agree, this is much nicer.

&gt; &gt; Source/JavaScriptCore/runtime/VMEntryScope.h:46
&gt; &gt; +    typedef std::function&lt;void (VM*, JSGlobalObject*)&gt; EntryScopeDidPopListener;
&gt; 
&gt; Argument should be VM&amp; instead of VM*.
Okay.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VMEntryScope.h:52
&gt; &gt; +    HashMap&lt;void*, EntryScopeDidPopListener&gt; m_allEntryScopeDidPopListeners;
&gt; 
&gt; Is void* really the best type for these keys?
The intention of this API is for the Objects that are interested in receiving this notification to pass themselves in as a pointer to uniquely identify themselves. So I think void* is the best way to describe that any object might request this notification and that object uses itself as its identification. How would you recommend describing this behavior?

&gt; 
&gt; Why does this need to be a map? Can’t it just be a Vector? Do we ever remove or overwrite any of these?
For the reason stated above that we do overwrite old values on conflict (which will be utilized the the above patch I mentioned) and do uniquing based on pointers being passed in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027710</commentid>
    <comment_count>22</comment_count>
      <attachid>236245</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-07 17:17:54 -0700</bug_when>
    <thetext>Created attachment 236245
patch

Above comments taken into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027731</commentid>
    <comment_count>23</comment_count>
      <attachid>236245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-07 18:55:32 -0700</bug_when>
    <thetext>Comment on attachment 236245
patch

Rejecting attachment 236245 from review queue.

sbarati@apple.com does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027732</commentid>
    <comment_count>24</comment_count>
      <attachid>236245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-07 19:29:40 -0700</bug_when>
    <thetext>Comment on attachment 236245
patch

Clearing flags on attachment: 236245

Committed r172324: &lt;http://trac.webkit.org/changeset/172324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027733</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-07 19:29:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235630</attachid>
            <date>2014-07-28 16:09:08 -0700</date>
            <delta_ts>2014-07-28 17:12:52 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4796</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNzAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE0LTA3LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdoZW4gVk1FbnRyeVNj
b3BlIGlzIGRlc3Ryb3llZCwgYW5kIGl0IGhhcyBhIGZsYWcgc2V0IHRoYXQgdGhlIFZNCisgICAg
ICAgIG5lZWRzIHJlY29tcGlsYXRpb24sIGl0IGNhbGxzIERlYnVnZ2VyOjpyZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucy4gVGhpcyBpcworICAgICAgICB0YWlsb3JlZCBzcGVjaWZpY2FsbHkgZm9yIHRo
ZSBEZWJ1Z2dlciBhbmQgaXRzIHB1cnBvc2VzIG9mIHJlY29tcGlsaW5nIGFsbAorICAgICAgICBm
dW5jdGlvbnMgb25jZSB0aGUgVk0gc3RvcHMgZXhlY3V0aW5nIGNvZGUgKHNwZWNpZmljYWxseSwg
dG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIAorICAgICAgICBubyBmdW5jdGlvbnMgb24gdGhlIHN0
YWNrIHRoYXQgd2lsbCBiZSBjbG9iYmVyZWQgYnkgcmVjb21waWxpbmcgdGhlbSkuIFRoaXMgcGF0
Y2ggCisgICAgICAgIHdpbGwgc3Vic3RpdHV0ZSB0aGlzIG9uZSByZWNvbXBpbGF0aW9uIGZsYWcg
d2l0aCBhIGxpc3Qgb2YgY2FsbGJhY2tzIHRoYXQgYXJlIGFsbCAKKyAgICAgICAgbm90aWZpZWQg
d2hlbiB0aGUgVk1FbnRyeVNjb3BlIGRpZXMuIFRoaXMgY3JlYXRlcyBhIG1vcmUgZ2VuZXJhbGl6
ZWQgaW50ZXJmYWNlIHRvIAorICAgICAgICBiZWluZyBub3RpZmllZCB3aGVuIHRoZSBWTSBzdG9w
cyBleGVjdXRpbmcgY29kZSB2aWEgdGhlIGV2ZW50IG9mIFZNRW50cnlTY29wZQorICAgICAgICBk
eWluZy4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKiBydW50aW1lL1ZN
RW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3Bl
KToKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjphZGRFbnRyeVNjb3BlRGlkUG9wTGlzdGVu
ZXIpOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmg6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6
c2V0UmVjb21waWxhdGlvbk5lZWRlZCk6IERlbGV0ZWQuCisKIDIwMTQtMDctMjUgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCShyZXZpc2lvbiAxNzE3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDEzIEBA
IHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFYKICAgICAvLyBJZiBKYXZh
U2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gcmVjb21waWxlLCBzaW5jZSB3ZSds
bCBlbmQKICAgICAvLyB1cCB0aHJvd2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBz
dGFjay4KICAgICBpZiAodm0tPmVudHJ5U2NvcGUpIHsKLSAgICAgICAgdm0tPmVudHJ5U2NvcGUt
PnNldFJlY29tcGlsYXRpb25OZWVkZWQodHJ1ZSk7CisgICAgICAgIFZNRW50cnlTY29wZTo6RW50
cnlTY29wZURpZFBvcExpc3RlbmVyIGNhbGxiYWNrID0gW3RoaXNdIChWTSogdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmRl
YnVnZ2VyKCkgJiYgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpID09IHRoaXMpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyh2bSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2bS0+ZW50cnlTY29wZS0+YWRkRW50cnlT
Y29wZURpZFBvcExpc3RlbmVyKGNhbGxiYWNrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
CShyZXZpc2lvbiAxNzE3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVu
dHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBK
U0MgewogVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdCkKLSAgICAsIG1fcmVjb21waWxhdGlvbk5lZWRlZChmYWxzZSkKIHsKICAgICBBU1NF
UlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgaWYg
KCF2bS5lbnRyeVNjb3BlKSB7CkBAIC01NSw2ICs1NCwxMSBAQCBWTUVudHJ5U2NvcGU6OlZNRW50
cnlTY29wZShWTSYgdm0sIEpTR2xvCiAgICAgdm0uY2xlYXJFeGNlcHRpb25TdGFjaygpOwogfQog
Cit2b2lkIFZNRW50cnlTY29wZTo6YWRkRW50cnlTY29wZURpZFBvcExpc3RlbmVyKEVudHJ5U2Nv
cGVEaWRQb3BMaXN0ZW5lciBsYW1iZGEpCit7CisgICAgbV9hbGxFbnRyeVNjb3BlRGlkUG9wQ2Fs
bGJhY2tzLmFwcGVuZChsYW1iZGEpOworfQorCiBWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUo
KQogewogICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUgIT0gdGhpcykKQEAgLTYyLDkgKzY2LDkgQEAg
Vk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKCkKIAogICAgIG1fdm0uZW50cnlTY29wZSA9IG51
bGxwdHI7CiAKLSAgICBpZiAobV9yZWNvbXBpbGF0aW9uTmVlZGVkKSB7Ci0gICAgICAgIGlmIChE
ZWJ1Z2dlciogZGVidWdnZXIgPSBtX2dsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKLSAgICAgICAg
ICAgIGRlYnVnZ2VyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygmbV92bSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2FsbEVudHJ5U2NvcGVEaWRQb3BDYWxsYmFja3Muc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgRW50cnlTY29wZURpZFBvcExpc3RlbmVyIGNhbGxiYWNrID0gbV9hbGxF
bnRyeVNjb3BlRGlkUG9wQ2FsbGJhY2tzLmF0KGkpOworICAgICAgICBjYWxsYmFjaygmbV92bSwg
bV9nbG9iYWxPYmplY3QpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHJldmlzaW9uIDE3MTcwMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvU3Rh
Y2tCb3VuZHMuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDEyICs0MywxMyBAQCBwdWJsaWM6
CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3Q7IH0KIAotICAgIHZvaWQgc2V0UmVjb21waWxhdGlvbk5lZWRlZChib29sIHJl
Y29tcGlsZU5lZWRlZCkgeyBtX3JlY29tcGlsYXRpb25OZWVkZWQgPSByZWNvbXBpbGVOZWVkZWQ7
IH0KKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoVk0qLCBKU0dsb2JhbE9iamVjdCop
PiBFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXI7CisgICAgdm9pZCBhZGRFbnRyeVNjb3BlRGlkUG9w
TGlzdGVuZXIoRW50cnlTY29wZURpZFBvcExpc3RlbmVyIGxhbWJkYSk7CiAKIHByaXZhdGU6CiAg
ICAgVk0mIG1fdm07CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OwotICAgIGJv
b2wgbV9yZWNvbXBpbGF0aW9uTmVlZGVkOworICAgIFZlY3RvcjxFbnRyeVNjb3BlRGlkUG9wTGlz
dGVuZXI+IG1fYWxsRW50cnlTY29wZURpZFBvcENhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235635</attachid>
            <date>2014-07-28 16:16:57 -0700</date>
            <delta_ts>2014-07-28 17:12:52 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4789</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNzAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE0LTA3LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHdoZW4gVk1FbnRyeVNj
b3BlIGlzIGRlc3Ryb3llZCwgYW5kIGl0IGhhcyBhIGZsYWcgc2V0IHRoYXQgdGhlIFZNCisgICAg
ICAgIG5lZWRzIHJlY29tcGlsYXRpb24sIGl0IGNhbGxzIERlYnVnZ2VyOjpyZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucy4gVGhpcyBpcworICAgICAgICB0YWlsb3JlZCBzcGVjaWZpY2FsbHkgZm9yIHRo
ZSBEZWJ1Z2dlciBhbmQgaXRzIHB1cnBvc2VzIG9mIHJlY29tcGlsaW5nIGFsbAorICAgICAgICBm
dW5jdGlvbnMgb25jZSB0aGUgVk0gc3RvcHMgZXhlY3V0aW5nIGNvZGUgKHNwZWNpZmljYWxseSwg
dG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIAorICAgICAgICBubyBmdW5jdGlvbnMgb24gdGhlIHN0
YWNrIHRoYXQgd2lsbCBiZSBjbG9iYmVyZWQgYnkgcmVjb21waWxpbmcgdGhlbSkuIFRoaXMgcGF0
Y2ggCisgICAgICAgIHdpbGwgc3Vic3RpdHV0ZSB0aGlzIG9uZSByZWNvbXBpbGF0aW9uIGZsYWcg
d2l0aCBhIGxpc3Qgb2YgY2FsbGJhY2tzIHRoYXQgYXJlIGFsbCAKKyAgICAgICAgbm90aWZpZWQg
d2hlbiB0aGUgVk1FbnRyeVNjb3BlIGRpZXMuIFRoaXMgY3JlYXRlcyBhIG1vcmUgZ2VuZXJhbGl6
ZWQgaW50ZXJmYWNlIHRvIAorICAgICAgICBiZWluZyBub3RpZmllZCB3aGVuIHRoZSBWTSBzdG9w
cyBleGVjdXRpbmcgY29kZSB2aWEgdGhlIGV2ZW50IG9mIFZNRW50cnlTY29wZQorICAgICAgICBk
eWluZy4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKiBydW50aW1lL1ZN
RW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3Bl
KToKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjphZGRFbnRyeVNjb3BlRGlkUG9wTGlzdGVu
ZXIpOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmg6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6
c2V0UmVjb21waWxhdGlvbk5lZWRlZCk6IERlbGV0ZWQuCisKIDIwMTQtMDctMjUgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCShyZXZpc2lvbiAxNzE3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDEzIEBA
IHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFYKICAgICAvLyBJZiBKYXZh
U2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gcmVjb21waWxlLCBzaW5jZSB3ZSds
bCBlbmQKICAgICAvLyB1cCB0aHJvd2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBz
dGFjay4KICAgICBpZiAodm0tPmVudHJ5U2NvcGUpIHsKLSAgICAgICAgdm0tPmVudHJ5U2NvcGUt
PnNldFJlY29tcGlsYXRpb25OZWVkZWQodHJ1ZSk7CisgICAgICAgIFZNRW50cnlTY29wZTo6RW50
cnlTY29wZURpZFBvcExpc3RlbmVyIGNhbGxiYWNrID0gW3RoaXNdIChWTSogdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2xvYmFs
T2JqZWN0LT5kZWJ1Z2dlcigpICYmIGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSA9PSB0aGlzKQor
ICAgICAgICAgICAgICAgIHRoaXMtPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKHZtKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgCisgICAgICAgIHZtLT5lbnRyeVNjb3BlLT5hZGRFbnRyeVNjb3BlRGlk
UG9wTGlzdGVuZXIoY2FsbGJhY2spOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlz
aW9uIDE3MTcwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBW
TUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQotICAgICwgbV9yZWNvbXBpbGF0aW9uTmVlZGVkKGZhbHNlKQogewogICAgIEFTU0VSVCh3dGZU
aHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICBpZiAoIXZtLmVu
dHJ5U2NvcGUpIHsKQEAgLTU1LDYgKzU0LDExIEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3Bl
KFZNJiB2bSwgSlNHbG8KICAgICB2bS5jbGVhckV4Y2VwdGlvblN0YWNrKCk7CiB9CiAKK3ZvaWQg
Vk1FbnRyeVNjb3BlOjphZGRFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIoRW50cnlTY29wZURpZFBv
cExpc3RlbmVyIGxhbWJkYSkKK3sKKyAgICBtX2FsbEVudHJ5U2NvcGVEaWRQb3BDYWxsYmFja3Mu
YXBwZW5kKGxhbWJkYSk7Cit9CisKIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiB7CiAg
ICAgaWYgKG1fdm0uZW50cnlTY29wZSAhPSB0aGlzKQpAQCAtNjIsOSArNjYsOSBAQCBWTUVudHJ5
U2NvcGU6On5WTUVudHJ5U2NvcGUoKQogCiAgICAgbV92bS5lbnRyeVNjb3BlID0gbnVsbHB0cjsK
IAotICAgIGlmIChtX3JlY29tcGlsYXRpb25OZWVkZWQpIHsKLSAgICAgICAgaWYgKERlYnVnZ2Vy
KiBkZWJ1Z2dlciA9IG1fZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQotICAgICAgICAgICAgZGVi
dWdnZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCZtX3ZtKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fYWxsRW50cnlTY29wZURpZFBvcENhbGxiYWNrcy5zaXplKCk7IGkrKykgewor
ICAgICAgICBFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIgY2FsbGJhY2sgPSBtX2FsbEVudHJ5U2Nv
cGVEaWRQb3BDYWxsYmFja3MuYXQoaSk7CisgICAgICAgIGNhbGxiYWNrKCZtX3ZtLCBtX2dsb2Jh
bE9iamVjdCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUVudHJ5U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUVudHJ5U2NvcGUuaAkocmV2aXNpb24gMTcxNzAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5k
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDIsMTIgKzQzLDEzIEBAIHB1YmxpYzoKIAogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9i
amVjdDsgfQogCi0gICAgdm9pZCBzZXRSZWNvbXBpbGF0aW9uTmVlZGVkKGJvb2wgcmVjb21waWxl
TmVlZGVkKSB7IG1fcmVjb21waWxhdGlvbk5lZWRlZCA9IHJlY29tcGlsZU5lZWRlZDsgfQorICAg
IHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChWTSosIEpTR2xvYmFsT2JqZWN0Kik+IEVudHJ5
U2NvcGVEaWRQb3BMaXN0ZW5lcjsKKyAgICB2b2lkIGFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5l
cihFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIgbGFtYmRhKTsKIAogcHJpdmF0ZToKICAgICBWTSYg
bV92bTsKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7Ci0gICAgYm9vbCBtX3Jl
Y29tcGlsYXRpb25OZWVkZWQ7CisgICAgVmVjdG9yPEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcj4g
bV9hbGxFbnRyeVNjb3BlRGlkUG9wQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
Cg==
</data>
<flag name="review"
          id="260214"
          type_id="1"
          status="-"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="260215"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235648</attachid>
            <date>2014-07-28 17:12:52 -0700</date>
            <delta_ts>2014-07-29 16:18:57 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4702</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNzA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA3LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFZNRW50cnlTY29wZSBpcyBkZXN0
cm95ZWQsIGFuZCBpdCBoYXMgYSBmbGFnIHNldCBpbmRpY2F0aW5nIHRoYXQgdGhlCisgICAgICAg
IERlYnVnZ2VyIG5lZWRzIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLCBpdCBjYWxscyBEZWJ1
Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMuIAorICAgICAgICBUaGlzIGZsYWcgaXMgb25s
eSB1c2VkIGJ5IERlYnVnZ2VyIHRvIGhhdmUgVk1FbnRyeVNjb3BlIG5vdGlmeSBpdCB3aGVuIHRo
ZQorICAgICAgICBEZWJ1Z2dlciBpcyBzYWZlIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLiBU
aGlzIHBhdGNoIHdpbGwgc3Vic3RpdHV0ZSB0aGlzCisgICAgICAgIERlYnVnZ2VyLXNwZWNpZmlj
IHJlY29tcGlsYXRpb24gZmxhZyB3aXRoIGEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCBhcmUgbm90
aWZpZWQgCisgICAgICAgIHdoZW4gdGhlIG91dGVybW9zdCBWTUVudHJ5U2NvcGUgZGllcy4gVGhp
cyBjcmVhdGVzIGEgZ2VuZXJhbCBwdXJwb3NlIGludGVyZmFjZSAKKyAgICAgICAgdG8gYmVpbmcg
bm90aWZpZWQgd2hlbiB0aGUgVk0gc3RvcHMgZXhlY3V0aW5nIGNvZGUgdmlhIHRoZSBldmVudCBv
ZiB0aGUgb3V0ZXJtb3N0IAorICAgICAgICBWTUVudHJ5U2NvcGUgZHlpbmcuCisKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpyZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgor
ICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6CisgICAgICAgIChKU0M6
OlZNRW50cnlTY29wZTo6YWRkRW50cnlTY29wZURpZFBvcExpc3RlbmVyKToKKyAgICAgICAgKEpT
Qzo6Vk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50
cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnNldFJlY29tcGlsYXRpb25O
ZWVkZWQpOiBEZWxldGVkLgorCiAyMDE0LTA3LTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2
aXNpb24gMTcxNzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSwxNCBAQCB2b2lkIERlYnVnZ2VyOjpy
ZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhWCiAgICAgLy8gSWYgSmF2YVNjcmlwdCBpcyBydW5uaW5n
LCBpdCdzIG5vdCBzYWZlIHRvIHJlY29tcGlsZSwgc2luY2Ugd2UnbGwgZW5kCiAgICAgLy8gdXAg
dGhyb3dpbmcgYXdheSBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2suCiAgICAgaWYgKHZt
LT5lbnRyeVNjb3BlKSB7Ci0gICAgICAgIHZtLT5lbnRyeVNjb3BlLT5zZXRSZWNvbXBpbGF0aW9u
TmVlZGVkKHRydWUpOworICAgICAgICBhdXRvIGxpc3RlbmVyID0gW3RoaXNdIChWTSogdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAorICAgICAgICB7CisgICAgICAgICAgICBEZWJ1
Z2dlciogZGVidWdnZXIgPSBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCk7CisgICAgICAgICAgICBp
ZiAoZGVidWdnZXIgJiYgZGVidWdnZXIgPT0gdGhpcykKKyAgICAgICAgICAgICAgICBkZWJ1Z2dl
ci0+cmVjb21waWxlQWxsSlNGdW5jdGlvbnModm0pOworICAgICAgICB9OworCisgICAgICAgIHZt
LT5lbnRyeVNjb3BlLT5hZGRFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIobGlzdGVuZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE3MTcwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX3ZtKHZtKQogICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9yZWNvbXBpbGF0aW9uTmVl
ZGVkKGZhbHNlKQogewogICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKQEAgLTU1LDYgKzU0LDEx
IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG8KICAgICB2bS5jbGVh
ckV4Y2VwdGlvblN0YWNrKCk7CiB9CiAKK3ZvaWQgVk1FbnRyeVNjb3BlOjphZGRFbnRyeVNjb3Bl
RGlkUG9wTGlzdGVuZXIoRW50cnlTY29wZURpZFBvcExpc3RlbmVyIGxpc3RlbmVyKQoreworICAg
IG1fYWxsRW50cnlTY29wZURpZFBvcExpc3RlbmVycy5hcHBlbmQobGlzdGVuZXIpOworfQorCiBW
TUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUoKQogewogICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUg
IT0gdGhpcykKQEAgLTYyLDkgKzY2LDkgQEAgVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKCkK
IAogICAgIG1fdm0uZW50cnlTY29wZSA9IG51bGxwdHI7CiAKLSAgICBpZiAobV9yZWNvbXBpbGF0
aW9uTmVlZGVkKSB7Ci0gICAgICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBtX2dsb2JhbE9i
amVjdC0+ZGVidWdnZXIoKSkKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5yZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygmbV92bSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FsbEVudHJ5U2Nv
cGVEaWRQb3BMaXN0ZW5lcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRW50cnlTY29wZURpZFBv
cExpc3RlbmVyIGxpc3RlbmVyID0gbV9hbGxFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXJzLmF0KGkp
OworICAgICAgICBsaXN0ZW5lcigmbV92bSwgbV9nbG9iYWxPYmplY3QpOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHJl
dmlzaW9uIDE3MTcwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlT
Y29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KICNpbmNsdWRlIDx3dGYvU3Rh
Y2tTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQyLDEyICs0MywxMyBAQCBwdWJsaWM6CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAotICAgIHZvaWQgc2V0
UmVjb21waWxhdGlvbk5lZWRlZChib29sIHJlY29tcGlsZU5lZWRlZCkgeyBtX3JlY29tcGlsYXRp
b25OZWVkZWQgPSByZWNvbXBpbGVOZWVkZWQ7IH0KKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoVk0qLCBKU0dsb2JhbE9iamVjdCopPiBFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXI7Cisg
ICAgdm9pZCBhZGRFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIoRW50cnlTY29wZURpZFBvcExpc3Rl
bmVyKTsKIAogcHJpdmF0ZToKICAgICBWTSYgbV92bTsKICAgICBKU0dsb2JhbE9iamVjdCogbV9n
bG9iYWxPYmplY3Q7Ci0gICAgYm9vbCBtX3JlY29tcGlsYXRpb25OZWVkZWQ7CisgICAgVmVjdG9y
PEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcj4gbV9hbGxFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXJz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="260226"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235711</attachid>
            <date>2014-07-29 16:18:57 -0700</date>
            <delta_ts>2014-07-29 16:27:23 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4772</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA3LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFZNRW50cnlTY29wZSBpcyBkZXN0
cm95ZWQsIGFuZCBpdCBoYXMgYSBmbGFnIHNldCBpbmRpY2F0aW5nIHRoYXQgdGhlCisgICAgICAg
IERlYnVnZ2VyIG5lZWRzIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLCBpdCBjYWxscyBEZWJ1
Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMuIAorICAgICAgICBUaGlzIGZsYWcgaXMgb25s
eSB1c2VkIGJ5IERlYnVnZ2VyIHRvIGhhdmUgVk1FbnRyeVNjb3BlIG5vdGlmeSBpdCB3aGVuIHRo
ZQorICAgICAgICBEZWJ1Z2dlciBpcyBzYWZlIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLiBU
aGlzIHBhdGNoIHdpbGwgc3Vic3RpdHV0ZSB0aGlzCisgICAgICAgIERlYnVnZ2VyLXNwZWNpZmlj
IHJlY29tcGlsYXRpb24gZmxhZyB3aXRoIGEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCBhcmUgbm90
aWZpZWQgCisgICAgICAgIHdoZW4gdGhlIG91dGVybW9zdCBWTUVudHJ5U2NvcGUgZGllcy4gVGhp
cyBjcmVhdGVzIGEgZ2VuZXJhbCBwdXJwb3NlIGludGVyZmFjZSAKKyAgICAgICAgZm9yIGJlaW5n
IG5vdGlmaWVkIHdoZW4gdGhlIFZNIHN0b3BzIGV4ZWN1dGluZyBjb2RlIHZpYSB0aGUgZXZlbnQg
b2YgdGhlIG91dGVybW9zdCAKKyAgICAgICAgVk1FbnRyeVNjb3BlIGR5aW5nLgorCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlND
OjpWTUVudHJ5U2NvcGU6OmFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcik6CisgICAgICAgIChK
U0M6OlZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgICogcnVudGltZS9WTUVu
dHJ5U2NvcGUuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpzZXRSZWNvbXBpbGF0aW9u
TmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wNy0yOSAgTWF0dGhldyBNaXJtYW4gIDxtbWlybWFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0XSBBZGRlZCBTa2lwVG9wU2NvcGUgY292ZXJh
Z2UgdG8gRlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAJKHJldmlzaW9uIDE3MTc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsMTQgQEAgdm9pZCBE
ZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVgogICAgIC8vIElmIEphdmFTY3JpcHQg
aXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0byByZWNvbXBpbGUsIHNpbmNlIHdlJ2xsIGVuZAog
ICAgIC8vIHVwIHRocm93aW5nIGF3YXkgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgog
ICAgIGlmICh2bS0+ZW50cnlTY29wZSkgewotICAgICAgICB2bS0+ZW50cnlTY29wZS0+c2V0UmVj
b21waWxhdGlvbk5lZWRlZCh0cnVlKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IFtdIChWTSog
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAorICAgICAgICB7CisgICAgICAgICAg
ICBEZWJ1Z2dlciogZGVidWdnZXIgPSBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCk7CisgICAgICAg
ICAgICBpZiAoZGVidWdnZXIpCisgICAgICAgICAgICAgICAgZGVidWdnZXItPnJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKHZtKTsKKyAgICAgICAgfTsKKworICAgICAgICB2bS0+ZW50cnlTY29wZS0+
YWRkRW50cnlTY29wZURpZFBvcExpc3RlbmVyKHRoaXMsIGxpc3RlbmVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAxNzE3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2
IEBAIG5hbWVzcGFjZSBKU0MgewogVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1fcmVjb21waWxhdGlvbk5lZWRlZChmYWxz
ZSkKIHsKICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndh
cmQoKSk7CiAgICAgaWYgKCF2bS5lbnRyeVNjb3BlKSB7CkBAIC01NSw2ICs1NCwxMSBAQCBWTUVu
dHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvCiAgICAgdm0uY2xlYXJFeGNlcHRp
b25TdGFjaygpOwogfQogCit2b2lkIFZNRW50cnlTY29wZTo6YWRkRW50cnlTY29wZURpZFBvcExp
c3RlbmVyKHZvaWQqIGtleSwgRW50cnlTY29wZURpZFBvcExpc3RlbmVyIGxpc3RlbmVyKQorewor
ICAgIG1fYWxsRW50cnlTY29wZURpZFBvcExpc3RlbmVycy5zZXQoa2V5LCBsaXN0ZW5lcik7Cit9
CisKIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiB7CiAgICAgaWYgKG1fdm0uZW50cnlT
Y29wZSAhPSB0aGlzKQpAQCAtNjIsOSArNjYsMTEgQEAgVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNj
b3BlKCkKIAogICAgIG1fdm0uZW50cnlTY29wZSA9IG51bGxwdHI7CiAKLSAgICBpZiAobV9yZWNv
bXBpbGF0aW9uTmVlZGVkKSB7Ci0gICAgICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBtX2ds
b2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5yZWNvbXBpbGVB
bGxKU0Z1bmN0aW9ucygmbV92bSk7CisgICAgYXV0byBpdGVyID0gbV9hbGxFbnRyeVNjb3BlRGlk
UG9wTGlzdGVuZXJzLmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX2FsbEVudHJ5U2NvcGVEaWRQ
b3BMaXN0ZW5lcnMuZW5kKCk7CisgICAgZm9yICggOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Cisg
ICAgICAgIEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lciBsaXN0ZW5lciA9IGl0ZXItPnZhbHVlOwor
ICAgICAgICBsaXN0ZW5lcigmbV92bSwgbV9nbG9iYWxPYmplY3QpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHJldmlz
aW9uIDE3MTc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tT
dGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC00MiwxMiArNDMsMTMgQEAgcHVibGljOgogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAKLSAgICB2b2lkIHNldFJl
Y29tcGlsYXRpb25OZWVkZWQoYm9vbCByZWNvbXBpbGVOZWVkZWQpIHsgbV9yZWNvbXBpbGF0aW9u
TmVlZGVkID0gcmVjb21waWxlTmVlZGVkOyB9CisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFZNKiwgSlNHbG9iYWxPYmplY3QqKT4gRW50cnlTY29wZURpZFBvcExpc3RlbmVyOworICAg
IHZvaWQgYWRkRW50cnlTY29wZURpZFBvcExpc3RlbmVyKHZvaWQqLCBFbnRyeVNjb3BlRGlkUG9w
TGlzdGVuZXIpOwogCiBwcml2YXRlOgogICAgIFZNJiBtX3ZtOwogICAgIEpTR2xvYmFsT2JqZWN0
KiBtX2dsb2JhbE9iamVjdDsKLSAgICBib29sIG1fcmVjb21waWxhdGlvbk5lZWRlZDsKKyAgICBI
YXNoTWFwPHZvaWQqLCBFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXI+IG1fYWxsRW50cnlTY29wZURp
ZFBvcExpc3RlbmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235714</attachid>
            <date>2014-07-29 16:27:23 -0700</date>
            <delta_ts>2014-08-05 18:18:37 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4779</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA3LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIFZNRW50cnlTY29wZSBpcyBkZXN0
cm95ZWQsIGFuZCBpdCBoYXMgYSBmbGFnIHNldCBpbmRpY2F0aW5nIHRoYXQgdGhlCisgICAgICAg
IERlYnVnZ2VyIG5lZWRzIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLCBpdCBjYWxscyBEZWJ1
Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMuIAorICAgICAgICBUaGlzIGZsYWcgaXMgb25s
eSB1c2VkIGJ5IERlYnVnZ2VyIHRvIGhhdmUgVk1FbnRyeVNjb3BlIG5vdGlmeSBpdCB3aGVuIHRo
ZQorICAgICAgICBEZWJ1Z2dlciBpcyBzYWZlIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLiBU
aGlzIHBhdGNoIHdpbGwgc3Vic3RpdHV0ZSB0aGlzCisgICAgICAgIERlYnVnZ2VyLXNwZWNpZmlj
IHJlY29tcGlsYXRpb24gZmxhZyB3aXRoIGEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCBhcmUgbm90
aWZpZWQgCisgICAgICAgIHdoZW4gdGhlIG91dGVybW9zdCBWTUVudHJ5U2NvcGUgZGllcy4gVGhp
cyBjcmVhdGVzIGEgZ2VuZXJhbCBwdXJwb3NlIGludGVyZmFjZSAKKyAgICAgICAgZm9yIGJlaW5n
IG5vdGlmaWVkIHdoZW4gdGhlIFZNIHN0b3BzIGV4ZWN1dGluZyBjb2RlIHZpYSB0aGUgZXZlbnQg
b2YgdGhlIG91dGVybW9zdCAKKyAgICAgICAgVk1FbnRyeVNjb3BlIGR5aW5nLgorCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlND
OjpWTUVudHJ5U2NvcGU6OmFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcik6CisgICAgICAgIChK
U0M6OlZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgICogcnVudGltZS9WTUVu
dHJ5U2NvcGUuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpzZXRSZWNvbXBpbGF0aW9u
TmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wNy0yOSAgTWF0dGhldyBNaXJtYW4gIDxtbWlybWFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0XSBBZGRlZCBTa2lwVG9wU2NvcGUgY292ZXJh
Z2UgdG8gRlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAJKHJldmlzaW9uIDE3MTc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsMTQgQEAgdm9pZCBE
ZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVgogICAgIC8vIElmIEphdmFTY3JpcHQg
aXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0byByZWNvbXBpbGUsIHNpbmNlIHdlJ2xsIGVuZAog
ICAgIC8vIHVwIHRocm93aW5nIGF3YXkgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgog
ICAgIGlmICh2bS0+ZW50cnlTY29wZSkgewotICAgICAgICB2bS0+ZW50cnlTY29wZS0+c2V0UmVj
b21waWxhdGlvbk5lZWRlZCh0cnVlKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IFtdIChWTSog
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAorICAgICAgICB7CisgICAgICAgICAg
ICBEZWJ1Z2dlciogZGVidWdnZXIgPSBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCk7CisgICAgICAg
ICAgICBpZiAoZGVidWdnZXIpCisgICAgICAgICAgICAgICAgZGVidWdnZXItPnJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKHZtKTsKKyAgICAgICAgfTsKKworICAgICAgICB2bS0+ZW50cnlTY29wZS0+
YWRkRW50cnlTY29wZURpZFBvcExpc3RlbmVyKHRoaXMsIGxpc3RlbmVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAxNzE3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2
IEBAIG5hbWVzcGFjZSBKU0MgewogVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1fcmVjb21waWxhdGlvbk5lZWRlZChmYWxz
ZSkKIHsKICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndh
cmQoKSk7CiAgICAgaWYgKCF2bS5lbnRyeVNjb3BlKSB7CkBAIC01NSw2ICs1NCwxMSBAQCBWTUVu
dHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvCiAgICAgdm0uY2xlYXJFeGNlcHRp
b25TdGFjaygpOwogfQogCit2b2lkIFZNRW50cnlTY29wZTo6YWRkRW50cnlTY29wZURpZFBvcExp
c3RlbmVyKHZvaWQqIGtleSwgRW50cnlTY29wZURpZFBvcExpc3RlbmVyIGxpc3RlbmVyKQorewor
ICAgIG1fYWxsRW50cnlTY29wZURpZFBvcExpc3RlbmVycy5zZXQoa2V5LCBsaXN0ZW5lcik7Cit9
CisKIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiB7CiAgICAgaWYgKG1fdm0uZW50cnlT
Y29wZSAhPSB0aGlzKQpAQCAtNjIsOSArNjYsMTEgQEAgVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNj
b3BlKCkKIAogICAgIG1fdm0uZW50cnlTY29wZSA9IG51bGxwdHI7CiAKLSAgICBpZiAobV9yZWNv
bXBpbGF0aW9uTmVlZGVkKSB7Ci0gICAgICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBtX2ds
b2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5yZWNvbXBpbGVB
bGxKU0Z1bmN0aW9ucygmbV92bSk7CisgICAgYXV0byBpdGVyID0gbV9hbGxFbnRyeVNjb3BlRGlk
UG9wTGlzdGVuZXJzLmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX2FsbEVudHJ5U2NvcGVEaWRQ
b3BMaXN0ZW5lcnMuZW5kKCk7CisgICAgZm9yICggOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Cisg
ICAgICAgIEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lciBsaXN0ZW5lciA9IGl0ZXItPnZhbHVlOwor
ICAgICAgICBsaXN0ZW5lcigmbV92bSwgbV9nbG9iYWxPYmplY3QpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHJldmlz
aW9uIDE3MTc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFZNRW50cnlTY29w
ZV9oCiAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMu
aD4KIApAQCAtNDIsMTIgKzQzLDEzIEBAIHB1YmxpYzoKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdDsgfQogCi0gICAgdm9p
ZCBzZXRSZWNvbXBpbGF0aW9uTmVlZGVkKGJvb2wgcmVjb21waWxlTmVlZGVkKSB7IG1fcmVjb21w
aWxhdGlvbk5lZWRlZCA9IHJlY29tcGlsZU5lZWRlZDsgfQorICAgIHR5cGVkZWYgc3RkOjpmdW5j
dGlvbjx2b2lkIChWTSosIEpTR2xvYmFsT2JqZWN0Kik+IEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5l
cjsKKyAgICB2b2lkIGFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcih2b2lkKiwgRW50cnlTY29w
ZURpZFBvcExpc3RlbmVyKTsKIAogcHJpdmF0ZToKICAgICBWTSYgbV92bTsKICAgICBKU0dsb2Jh
bE9iamVjdCogbV9nbG9iYWxPYmplY3Q7Ci0gICAgYm9vbCBtX3JlY29tcGlsYXRpb25OZWVkZWQ7
CisgICAgSGFzaE1hcDx2b2lkKiwgRW50cnlTY29wZURpZFBvcExpc3RlbmVyPiBtX2FsbEVudHJ5
U2NvcGVEaWRQb3BMaXN0ZW5lcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236068</attachid>
            <date>2014-08-05 18:18:37 -0700</date>
            <delta_ts>2014-08-07 17:17:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>entry-scope-patch.diff</filename>
            <type>text/plain</type>
            <size>4756</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMTAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA3LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBXaGVuIFZNRW50cnlTY29wZSBpcyBkZXN0
cm95ZWQsIGFuZCBpdCBoYXMgYSBmbGFnIHNldCBpbmRpY2F0aW5nIHRoYXQgdGhlCisgICAgICAg
IERlYnVnZ2VyIG5lZWRzIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLCBpdCBjYWxscyBEZWJ1
Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMuIAorICAgICAgICBUaGlzIGZsYWcgaXMgb25s
eSB1c2VkIGJ5IERlYnVnZ2VyIHRvIGhhdmUgVk1FbnRyeVNjb3BlIG5vdGlmeSBpdCB3aGVuIHRo
ZQorICAgICAgICBEZWJ1Z2dlciBpcyBzYWZlIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLiBU
aGlzIHBhdGNoIHdpbGwgc3Vic3RpdHV0ZSB0aGlzCisgICAgICAgIERlYnVnZ2VyLXNwZWNpZmlj
IHJlY29tcGlsYXRpb24gZmxhZyB3aXRoIGEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCBhcmUgbm90
aWZpZWQgCisgICAgICAgIHdoZW4gdGhlIG91dGVybW9zdCBWTUVudHJ5U2NvcGUgZGllcy4gVGhp
cyBjcmVhdGVzIGEgZ2VuZXJhbCBwdXJwb3NlIGludGVyZmFjZSAKKyAgICAgICAgZm9yIGJlaW5n
IG5vdGlmaWVkIHdoZW4gdGhlIFZNIHN0b3BzIGV4ZWN1dGluZyBjb2RlIHZpYSB0aGUgZXZlbnQg
b2YgdGhlIG91dGVybW9zdCAKKyAgICAgICAgVk1FbnRyeVNjb3BlIGR5aW5nLgorCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlND
OjpWTUVudHJ5U2NvcGU6OmFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcik6CisgICAgICAgIChK
U0M6OlZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgICogcnVudGltZS9WTUVu
dHJ5U2NvcGUuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpzZXRSZWNvbXBpbGF0aW9u
TmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wNy0yOSAgTWF0dGhldyBNaXJtYW4gIDxtbWlybWFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0XSBBZGRlZCBTa2lwVG9wU2NvcGUgY292ZXJh
Z2UgdG8gRlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAJKHJldmlzaW9uIDE3MjEwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsMTMgQEAgdm9pZCBE
ZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVgogICAgIC8vIElmIEphdmFTY3JpcHQg
aXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0byByZWNvbXBpbGUsIHNpbmNlIHdlJ2xsIGVuZAog
ICAgIC8vIHVwIHRocm93aW5nIGF3YXkgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgog
ICAgIGlmICh2bS0+ZW50cnlTY29wZSkgewotICAgICAgICB2bS0+ZW50cnlTY29wZS0+c2V0UmVj
b21waWxhdGlvbk5lZWRlZCh0cnVlKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IFtdIChWTSog
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQorICAg
ICAgICAgICAgICAgIGRlYnVnZ2VyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyh2bSk7CisgICAg
ICAgIH07CisKKyAgICAgICAgdm0tPmVudHJ5U2NvcGUtPmFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0
ZW5lcih0aGlzLCBsaXN0ZW5lcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAkocmV2aXNp
b24gMTcyMTAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIFZN
RW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qp
Ci0gICAgLCBtX3JlY29tcGlsYXRpb25OZWVkZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50
cnlTY29wZSkgewpAQCAtNTUsNiArNTQsMTEgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUo
Vk0mIHZtLCBKU0dsbwogICAgIHZtLmNsZWFyRXhjZXB0aW9uU3RhY2soKTsKIH0KIAordm9pZCBW
TUVudHJ5U2NvcGU6OmFkZEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcih2b2lkKiBrZXksIEVudHJ5
U2NvcGVEaWRQb3BMaXN0ZW5lciBsaXN0ZW5lcikKK3sKKyAgICBtX2FsbEVudHJ5U2NvcGVEaWRQ
b3BMaXN0ZW5lcnMuc2V0KGtleSwgbGlzdGVuZXIpOworfQorCiBWTUVudHJ5U2NvcGU6On5WTUVu
dHJ5U2NvcGUoKQogewogICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUgIT0gdGhpcykKQEAgLTYyLDkg
KzY2LDExIEBAIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiAKICAgICBtX3ZtLmVudHJ5
U2NvcGUgPSBudWxscHRyOwogCi0gICAgaWYgKG1fcmVjb21waWxhdGlvbk5lZWRlZCkgewotICAg
ICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gbV9nbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCkp
Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoJm1fdm0pOwor
ICAgIGF1dG8gaXRlciA9IG1fYWxsRW50cnlTY29wZURpZFBvcExpc3RlbmVycy5iZWdpbigpOwor
ICAgIGF1dG8gZW5kID0gbV9hbGxFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXJzLmVuZCgpOworICAg
IGZvciAoIDsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBFbnRyeVNjb3BlRGlkUG9w
TGlzdGVuZXIgbGlzdGVuZXIgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgbGlzdGVuZXIoJm1fdm0s
IG1fZ2xvYmFsT2JqZWN0KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAxNzIxMDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBWTUVudHJ5U2NvcGVfaAogCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja0Jv
dW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKQEAgLTQyLDEyICs0MywxMyBA
QCBwdWJsaWM6CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAotICAgIHZvaWQgc2V0UmVjb21waWxhdGlvbk5lZWRl
ZChib29sIHJlY29tcGlsZU5lZWRlZCkgeyBtX3JlY29tcGlsYXRpb25OZWVkZWQgPSByZWNvbXBp
bGVOZWVkZWQ7IH0KKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoVk0qLCBKU0dsb2Jh
bE9iamVjdCopPiBFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXI7CisgICAgdm9pZCBhZGRFbnRyeVNj
b3BlRGlkUG9wTGlzdGVuZXIodm9pZCosIEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcik7CiAKIHBy
aXZhdGU6CiAgICAgVk0mIG1fdm07CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0
OwotICAgIGJvb2wgbV9yZWNvbXBpbGF0aW9uTmVlZGVkOworICAgIEhhc2hNYXA8dm9pZCosIEVu
dHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcj4gbV9hbGxFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXJzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="260654"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236245</attachid>
            <date>2014-08-07 17:17:54 -0700</date>
            <delta_ts>2014-08-07 19:29:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>entry-scope-patch.diff</filename>
            <type>text/plain</type>
            <size>4690</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTA4LTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENyZWF0ZSBhIG1vcmUgZ2VuZXJpYyB3YXkgZm9yIFZNRW50cnlTY29wZSB0byBub3RpZnkgdGhv
c2UgaW50ZXJlc3RlZCB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBXaGVuIFZNRW50cnlTY29wZSBpcyBkZXN0
cm95ZWQsIGFuZCBpdCBoYXMgYSBmbGFnIHNldCBpbmRpY2F0aW5nIHRoYXQgdGhlCisgICAgICAg
IERlYnVnZ2VyIG5lZWRzIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLCBpdCBjYWxscyBEZWJ1
Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMuIAorICAgICAgICBUaGlzIGZsYWcgaXMgb25s
eSB1c2VkIGJ5IERlYnVnZ2VyIHRvIGhhdmUgVk1FbnRyeVNjb3BlIG5vdGlmeSBpdCB3aGVuIHRo
ZQorICAgICAgICBEZWJ1Z2dlciBpcyBzYWZlIHRvIHJlY29tcGlsZSBhbGwgZnVuY3Rpb25zLiBU
aGlzIHBhdGNoIHdpbGwgc3Vic3RpdHV0ZSB0aGlzCisgICAgICAgIERlYnVnZ2VyLXNwZWNpZmlj
IHJlY29tcGlsYXRpb24gZmxhZyB3aXRoIGEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCBhcmUgbm90
aWZpZWQgCisgICAgICAgIHdoZW4gdGhlIG91dGVybW9zdCBWTUVudHJ5U2NvcGUgZGllcy4gVGhp
cyBjcmVhdGVzIGEgZ2VuZXJhbCBwdXJwb3NlIGludGVyZmFjZSAKKyAgICAgICAgZm9yIGJlaW5n
IG5vdGlmaWVkIHdoZW4gdGhlIFZNIHN0b3BzIGV4ZWN1dGluZyBjb2RlIHZpYSB0aGUgZXZlbnQg
b2YgdGhlIG91dGVybW9zdCAKKyAgICAgICAgVk1FbnRyeVNjb3BlIGR5aW5nLgorCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlND
OjpWTUVudHJ5U2NvcGU6OnNldEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcik6CisgICAgICAgIChK
U0M6OlZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgICogcnVudGltZS9WTUVu
dHJ5U2NvcGUuaDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpzZXRSZWNvbXBpbGF0aW9u
TmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wOC0wNyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBpcyBzb21l
dGltZXMgdXNlZCBpbiBhIDY0LWJpdCBjb250ZXh0LCB3aGljaCBoYXMgdW5kZWZpbmVkIGJlaGF2
aW9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJ
KHJldmlzaW9uIDE3MjMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsMTMgQEAgdm9pZCBEZWJ1Z2dl
cjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVgogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVu
bmluZywgaXQncyBub3Qgc2FmZSB0byByZWNvbXBpbGUsIHNpbmNlIHdlJ2xsIGVuZAogICAgIC8v
IHVwIHRocm93aW5nIGF3YXkgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgogICAgIGlm
ICh2bS0+ZW50cnlTY29wZSkgewotICAgICAgICB2bS0+ZW50cnlTY29wZS0+c2V0UmVjb21waWxh
dGlvbk5lZWRlZCh0cnVlKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IFtdIChWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
RGVidWdnZXIqIGRlYnVnZ2VyID0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQorICAgICAgICAg
ICAgICAgIGRlYnVnZ2VyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygmdm0pOworICAgICAgICB9
OworCisgICAgICAgIHZtLT5lbnRyeVNjb3BlLT5zZXRFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIo
dGhpcywgbGlzdGVuZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE3
MjMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBWTUVudHJ5
U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAg
ICwgbV9yZWNvbXBpbGF0aW9uTmVlZGVkKGZhbHNlKQogewogICAgIEFTU0VSVCh3dGZUaHJlYWRE
YXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2Nv
cGUpIHsKQEAgLTU1LDYgKzU0LDExIEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2
bSwgSlNHbG8KICAgICB2bS5jbGVhckV4Y2VwdGlvblN0YWNrKCk7CiB9CiAKK3ZvaWQgVk1FbnRy
eVNjb3BlOjpzZXRFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXIodm9pZCoga2V5LCBFbnRyeVNjb3Bl
RGlkUG9wTGlzdGVuZXIgbGlzdGVuZXIpCit7CisgICAgbV9hbGxFbnRyeVNjb3BlRGlkUG9wTGlz
dGVuZXJzLnNldChrZXksIGxpc3RlbmVyKTsKK30KKwogVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNj
b3BlKCkKIHsKICAgICBpZiAobV92bS5lbnRyeVNjb3BlICE9IHRoaXMpCkBAIC02MiwxMCArNjYs
OCBAQCBWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUoKQogCiAgICAgbV92bS5lbnRyeVNjb3Bl
ID0gbnVsbHB0cjsKIAotICAgIGlmIChtX3JlY29tcGlsYXRpb25OZWVkZWQpIHsKLSAgICAgICAg
aWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IG1fZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQotICAg
ICAgICAgICAgZGVidWdnZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCZtX3ZtKTsKLSAgICB9
CisgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IG1fYWxsRW50cnlTY29wZURpZFBvcExpc3RlbmVy
cy52YWx1ZXMoKSkKKyAgICAgICAgbGlzdGVuZXIobV92bSwgbV9nbG9iYWxPYmplY3QpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAxNzIzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBWTUVudHJ5U2NvcGVfaAogCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKQEAgLTQyLDEyICs0MywxMyBAQCBwdWJsaWM6
CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3Q7IH0KIAotICAgIHZvaWQgc2V0UmVjb21waWxhdGlvbk5lZWRlZChib29sIHJl
Y29tcGlsZU5lZWRlZCkgeyBtX3JlY29tcGlsYXRpb25OZWVkZWQgPSByZWNvbXBpbGVOZWVkZWQ7
IH0KKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoVk0mLCBKU0dsb2JhbE9iamVjdCop
PiBFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXI7CisgICAgdm9pZCBzZXRFbnRyeVNjb3BlRGlkUG9w
TGlzdGVuZXIodm9pZCosIEVudHJ5U2NvcGVEaWRQb3BMaXN0ZW5lcik7CiAKIHByaXZhdGU6CiAg
ICAgVk0mIG1fdm07CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OwotICAgIGJv
b2wgbV9yZWNvbXBpbGF0aW9uTmVlZGVkOworICAgIEhhc2hNYXA8dm9pZCosIEVudHJ5U2NvcGVE
aWRQb3BMaXN0ZW5lcj4gbV9hbGxFbnRyeVNjb3BlRGlkUG9wTGlzdGVuZXJzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>