<?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>118307</bug_id>
          
          <creation_ts>2013-07-02 08:32:29 -0700</creation_ts>
          <short_desc>[ATK] Leak: AtkAttributeSet* should be freed</short_desc>
          <delta_ts>2013-07-04 05:11:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>
          
          <blocked>116317</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian Holt">brian.holt</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>905444</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-02 08:32:29 -0700</bug_when>
    <thetext>Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp and Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp 
both allocate (and don&apos;t free) memory from the call to atk_object_get_attributes(ATK_OBJECT(m_element)).

{
   &lt;insert_a_suppression_name_here&gt;
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_slist_prepend
   fun:_ZL29webkitAccessibleGetAttributesP10_AtkObject
   fun:_ZN22AccessibilityUIElement13allAttributesEv
   fun:_ZL21allAttributesCallbackPK15OpaqueJSContextP13OpaqueJSValueS3_mPKPKS2_PS5_
   fun:_ZN3JSC18JSCallbackFunction4callEPNS_9ExecStateE
   fun:_ZN3JSC5LLIntL14handleHostCallEPNS_9ExecStateEPNS_11InstructionENS_7JSValueENS_22CodeSpecializationKindE
   fun:llint_slow_path_call
   obj:/home/likewise-open/SERILOCAL/brian.holt/Code/gnome3/WebKit/WebKitBuild/Release/.libs/libjavascriptcoregtk-3.0.so.0.14.1
   fun:_ZN3JSC11Interpreter7executeEPNS_14EvalExecutableEPNS_9ExecStateENS_7JSValueEPNS_7JSScopeE
   fun:_ZN3JSC4evalEPNS_9ExecStateE
   fun:llint_slow_path_call_eval
   obj:/home/likewise-open/SERILOCAL/brian.holt/Code/gnome3/WebKit/WebKitBuild/Release/.libs/libjavascriptcoregtk-3.0.so.0.14.1
   fun:_ZN3JSC11Interpreter7executeEPNS_17ProgramExecutableEPNS_9ExecStateEPNS_8JSObjectE
   fun:_ZN3JSC8evaluateEPNS_9ExecStateERKNS_10SourceCodeENS_7JSValueEPS5_
   fun:_ZN7WebCore16ScriptController15evaluateInWorldERKNS_16ScriptSourceCodeEPNS_15DOMWrapperWorldE
   fun:_ZN7WebCore16ScriptController8evaluateERKNS_16ScriptSourceCodeE
   fun:_ZN7WebCore13ScriptElement13executeScriptERKNS_16ScriptSourceCodeE
   fun:_ZN7WebCore13ScriptElement13prepareScriptERKN3WTF12TextPositionENS0_17LegacyTypeSupportE
   fun:_ZN7WebCore16HTMLScriptRunner9runScriptEPNS_7ElementERKN3WTF12TextPositionE
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905478</commentid>
    <comment_count>1</comment_count>
      <attachid>205924</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-02 09:56:14 -0700</bug_when>
    <thetext>Created attachment 205924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905479</commentid>
    <comment_count>2</comment_count>
      <attachid>205924</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-02 10:02:09 -0700</bug_when>
    <thetext>Comment on attachment 205924
Patch

Attachment 205924 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1017335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905480</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-02 10:08:19 -0700</bug_when>
    <thetext>The EFL failure is because AtkAttributeSet* is typedef&apos;ed to_GSList*. Not sure why the EFL build fails but the GTK one is ok here.

Anyway, perhaps this patch doesn&apos;t actaully need a GOwnPtrAtk if it can just use the GSList* specialisation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905482</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-02 10:18:23 -0700</bug_when>
    <thetext>I think the EFL bot is right. we cannot distinguish GSList and AtkAttributeSet if one is a typedef to the other :(

Using the existing GSList specialization would not be great because it would only free the list but not its items.

Maybe we should stick with atk_attribute_set_free() then? unless someone has a better proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905745</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-07-03 01:40:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think the EFL bot is right. we cannot distinguish GSList and AtkAttributeSet
&gt; if one is a typedef to the other :(

I wonder why this is a problem while building EFL and not while building GTK. Any idea?

Another &quot;option&quot; is to propose to ATK developers, making the most of the fact that they are defining/changing the API now for the incoming versions, to get rid of that typedef and just use a GSList. That would take more time of course and could even make sense in the long run, yet would not fix the issue at hand here (which might happen in the future in a similar scenario).

&gt; Using the existing GSList specialization would not be great because it would 
&gt; only free the list but not its items.

Indeed. Using the GSList specialization would leak not only every single data field in the GSList, but also two allocated gchar* for each of them too, since AtkAttribute is a struct.

&gt; Maybe we should stick with atk_attribute_set_free() then?
&gt; unless someone has a better proposal.

I would propose to investigate why this is a problem in EFL and not in GTK, and try to get it sorted out, because using a GOwnPtr specialization is, in my opinion, clearer and cleaner than the current approach we have now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905757</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-07-03 02:18:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; [...]
&gt; &gt; Maybe we should stick with atk_attribute_set_free() then?
&gt; &gt; unless someone has a better proposal.
&gt; 
&gt; I would propose to investigate why this is a problem in EFL and not in GTK,
&gt; and try to get it sorted out, because using a GOwnPtr specialization is, in
&gt; my opinion, clearer and cleaner than the current approach we have now.

Brian just explained to me that he jsut updated PlatformGtk.cmake but not GNUmakefile.list.am, which I believe is what the EWS is using now.

I guess that explains why it was not failing in the GTK bot, which is probably using the GSList specialization after all...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905770</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 02:48:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; [...]
&gt; &gt; &gt; Maybe we should stick with atk_attribute_set_free() then?
&gt; &gt; &gt; unless someone has a better proposal.
&gt; &gt; 
&gt; &gt; I would propose to investigate why this is a problem in EFL and not in GTK,
&gt; &gt; and try to get it sorted out, because using a GOwnPtr specialization is, in
&gt; &gt; my opinion, clearer and cleaner than the current approach we have now.
&gt; 
&gt; Brian just explained to me that he jsut updated PlatformGtk.cmake but not GNUmakefile.list.am, which I believe is what the EWS is using now.
&gt; 
&gt; I guess that explains why it was not failing in the GTK bot, which is probably using the GSList specialization after all...

Not quite - it doesn&apos;t fail when using the autotools make system on Gtk.  Perhaps the EFL cmake build system is trying to link the 2 object files into the same shared object and Gtk is putting them in their own .so files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905772</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 02:52:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; [...]
&gt; &gt; &gt; &gt; Maybe we should stick with atk_attribute_set_free() then?
&gt; &gt; &gt; &gt; unless someone has a better proposal.
&gt; &gt; &gt; 
&gt; &gt; &gt; I would propose to investigate why this is a problem in EFL and not in GTK,
&gt; &gt; &gt; and try to get it sorted out, because using a GOwnPtr specialization is, in
&gt; &gt; &gt; my opinion, clearer and cleaner than the current approach we have now.
&gt; &gt; 
&gt; &gt; Brian just explained to me that he jsut updated PlatformGtk.cmake but not GNUmakefile.list.am, which I believe is what the EWS is using now.
&gt; &gt; 
&gt; &gt; I guess that explains why it was not failing in the GTK bot, which is probably using the GSList specialization after all...
&gt; 
&gt; Not quite - it doesn&apos;t fail when using the autotools make system on Gtk.  Perhaps the EFL cmake build system is trying to link the 2 object files into the same shared object and Gtk is putting them in their own .so files?

I don&apos;t think it matters. Since a AtkAttributeSet is the same thing as a GSList, how can you be sure the right GOwnPtr would be used? There is no way the differentiate the 2 types since they are the same type. You cannot do template specialization here. Even if it compiles on GTK, the behavior would be undetermined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905773</commentid>
    <comment_count>9</comment_count>
      <attachid>205924</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 02:53:18 -0700</bug_when>
    <thetext>Comment on attachment 205924
Patch

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

&gt; Source/WebCore/accessibility/atk/GOwnPtrAtk.cpp:2
&gt; + *  Copyright (C) 2013 Samsung Electronics Inc.

We usually use &quot;Samsung Electronics. All rights reserved.&quot;

&gt; Source/WebCore/accessibility/atk/GOwnPtrAtk.cpp:27
&gt; +

extra line

&gt; Source/WebCore/accessibility/atk/GOwnPtrAtk.h:2
&gt; + *  Copyright (C) 2013 Samsung Electronics Inc.

copyright

&gt; Source/WebCore/accessibility/atk/GOwnPtrAtk.h:22
&gt; +

No #if HAVE(ACCESSIBILITY)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905857</commentid>
    <comment_count>10</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 06:45:15 -0700</bug_when>
    <thetext>Unfortunately there is no way around the typdef (http://stackoverflow.com/questions/4832900/how-can-i-specialize-a-typedef-and-its-implicit-type-differently).

I&apos;m going to scrap the GOwnPtr idea and just simply call atk_attribute_set_free(ptr) to free the memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905867</commentid>
    <comment_count>11</comment_count>
      <attachid>206002</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 07:41:25 -0700</bug_when>
    <thetext>Created attachment 206002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905870</commentid>
    <comment_count>12</comment_count>
      <attachid>206002</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 07:57:23 -0700</bug_when>
    <thetext>Comment on attachment 206002
Patch

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

&gt; Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp:97
&gt; +    AtkAttributeSet* attributeSet(atk_object_get_attributes(parent));

I think the assignment looked better before.

&gt; Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp:98
&gt;      for (GSList* attributes = attributeSet; attributes; attributes = attributes-&gt;next) {

Would be nice to use AtkAttributeSet here instead of GSList.

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:808
&gt; +    for (GSList* attributes = attributeSet; attributes; attributes = attributes-&gt;next) {

Would be nice to use AtkAttributeSet here instead of GSList.

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:811
&gt; +            attributeValue.set(g_strdup(atkAttribute-&gt;value));

If we call JSStringCreateWithUTF8CString() before freeing the attributes list, we would not need this strdup() and attributeValue could be a const gchar*.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:160
&gt;      for (GSList* attributes = attributeSet; attributes; attributes = attributes-&gt;next) {

Would be nice to use AtkAttributeSet here instead of GSList.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:59
&gt; +    for (GSList* attributes = attributeSet; attributes; attributes = attributes-&gt;next) {

Would be nice to use AtkAttributeSet here instead of GSList.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:-78
&gt; -    attributesClear(atkAttributes.get());

Missing call to atk_attribute_set_free()?

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:477
&gt; +    for (GSList* attributes = attributeSet; attributes; attributes = attributes-&gt;next) {

AtkAttributeSet*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905871</commentid>
    <comment_count>13</comment_count>
      <attachid>206002</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 08:09:26 -0700</bug_when>
    <thetext>Comment on attachment 206002
Patch

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

Great comments, thanks very much!

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp:97
&gt;&gt; +    AtkAttributeSet* attributeSet(atk_object_get_attributes(parent));
&gt; 
&gt; I think the assignment looked better before.

My mistake, will change that.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:-78
&gt;&gt; -    attributesClear(atkAttributes.get());
&gt; 
&gt; Missing call to atk_attribute_set_free()?

No, the attributeSet will get freed in AccessibilityUIElement::allAttributes() where it is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905873</commentid>
    <comment_count>14</comment_count>
      <attachid>206002</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 08:23:27 -0700</bug_when>
    <thetext>Comment on attachment 206002
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt;  static gchar* attributeSetToString(AtkAttributeSet* attributeSet)

Since this function is always called as:
&quot;GOwnPtr&lt;gchar&gt; attributeData(attributeSetToString(atk_object_get_attributes(ATK_OBJECT(m_element))));&quot;

How about changing the prototype to:
static gchar* getAtkObjectAttributesAsString(AtkObject *accessible); ?

This way, we handle freeing the list inside the function instead of the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905877</commentid>
    <comment_count>15</comment_count>
      <attachid>206002</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 08:31:13 -0700</bug_when>
    <thetext>Comment on attachment 206002
Patch

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

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt;&gt;  static gchar* attributeSetToString(AtkAttributeSet* attributeSet)
&gt; 
&gt; Since this function is always called as:
&gt; &quot;GOwnPtr&lt;gchar&gt; attributeData(attributeSetToString(atk_object_get_attributes(ATK_OBJECT(m_element))));&quot;
&gt; 
&gt; How about changing the prototype to:
&gt; static gchar* getAtkObjectAttributesAsString(AtkObject *accessible); ?
&gt; 
&gt; This way, we handle freeing the list inside the function instead of the caller.

That seems very reasonable to me, I&apos;ll make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905885</commentid>
    <comment_count>16</comment_count>
      <attachid>206006</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 09:24:59 -0700</bug_when>
    <thetext>Created attachment 206006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905904</commentid>
    <comment_count>17</comment_count>
      <attachid>206006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 10:12:39 -0700</bug_when>
    <thetext>Comment on attachment 206006
Patch

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

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:806
&gt; +    const char* attributeValue = &quot;&quot;;

I would initialize to 0 instead

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:815
&gt; +    JSStringRef jsStr = JSStringCreateWithUTF8CString(attributeValue);

no abbreviations as per coding style. Please use &quot;jsString&quot;.
Also, mac implementation seems to return 0 if not found. So maybe something like:
JSStringRef jsString = attributeValue ? SStringCreateWithUTF8CString(attributeValue) : 0;

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:476
&gt; +    const char* attributeValue = &quot;&quot;;

Same comment as for DRT.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:485
&gt; +    JSStringRef jsStr = JSStringCreateWithUTF8CString(attributeValue);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905909</commentid>
    <comment_count>18</comment_count>
      <attachid>206009</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 10:23:31 -0700</bug_when>
    <thetext>Created attachment 206009
Revised patch

As per Christophe&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905914</commentid>
    <comment_count>19</comment_count>
      <attachid>206009</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 10:32:01 -0700</bug_when>
    <thetext>Comment on attachment 206009
Revised patch

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

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:295
&gt; +static char* getAtkAttributeSetAsString(AtkObject* accessible)

gchar

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:317
&gt; +    GOwnPtr&lt;char&gt; attributeData(getAtkAttributeSetAsString(ATK_OBJECT(m_element)));

gchar

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:804
&gt;          return JSStringCreateWithCharacters(0, 0);

It looks a bit weird that we return 0 below but not here.

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:806
&gt; +    const char* attributeValue = 0;

gchar

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt; +static char* getAtkAttributeSetAsString(AtkObject* accessible)

gchar

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:463
&gt; +    GOwnPtr&lt;char&gt; attributeData(getAtkAttributeSetAsString(ATK_OBJECT(m_element.get())));

gchar

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:474
&gt;          return JSStringCreateWithCharacters(0, 0);

It looks a bit weird that we return 0 below but not here.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:476
&gt; +    const char* attributeValue = 0;

gchar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905922</commentid>
    <comment_count>20</comment_count>
      <attachid>206009</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 10:48:13 -0700</bug_when>
    <thetext>Comment on attachment 206009
Revised patch

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

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt;&gt; +static char* getAtkAttributeSetAsString(AtkObject* accessible)
&gt; 
&gt; gchar

Regarding the gchars, I was under the impression that for new code that is not exposed to the outside world we should be using the non-g-versions.  If that&apos;s not correct then I will happily change to gchars throughout.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:474
&gt;&gt;          return JSStringCreateWithCharacters(0, 0);
&gt; 
&gt; It looks a bit weird that we return 0 below but not here.

That&apos;s a good point.  Shall I do
JSStringRef jsString = attributeValue ? JSStringCreateWithUTF8CString(attributeValue)
                                      : JSStringCreateWithCharacters(0, 0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905924</commentid>
    <comment_count>21</comment_count>
      <attachid>206009</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-03 10:52:22 -0700</bug_when>
    <thetext>Comment on attachment 206009
Revised patch

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

&gt;&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt;&gt;&gt; +static char* getAtkAttributeSetAsString(AtkObject* accessible)
&gt;&gt; 
&gt;&gt; gchar
&gt; 
&gt; Regarding the gchars, I was under the impression that for new code that is not exposed to the outside world we should be using the non-g-versions.  If that&apos;s not correct then I will happily change to gchars throughout.

Hmm, I&apos;m not aware of that. Last I heard, gchar was preferred but the situation might have changed since then. Do you have a link to a review / comment supporting what you&apos;re saying?

&gt;&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:474
&gt;&gt;&gt;          return JSStringCreateWithCharacters(0, 0);
&gt;&gt; 
&gt;&gt; It looks a bit weird that we return 0 below but not here.
&gt; 
&gt; That&apos;s a good point.  Shall I do
&gt; JSStringRef jsString = attributeValue ? JSStringCreateWithUTF8CString(attributeValue)
&gt;                                       : JSStringCreateWithCharacters(0, 0);

Just &quot;return 0;&quot; here for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905938</commentid>
    <comment_count>22</comment_count>
      <attachid>206009</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-03 11:09:25 -0700</bug_when>
    <thetext>Comment on attachment 206009
Revised patch

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

&gt;&gt;&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt;&gt;&gt;&gt; +static char* getAtkAttributeSetAsString(AtkObject* accessible)
&gt;&gt;&gt; 
&gt;&gt;&gt; gchar
&gt;&gt; 
&gt;&gt; Regarding the gchars, I was under the impression that for new code that is not exposed to the outside world we should be using the non-g-versions.  If that&apos;s not correct then I will happily change to gchars throughout.
&gt; 
&gt; Hmm, I&apos;m not aware of that. Last I heard, gchar was preferred but the situation might have changed since then. Do you have a link to a review / comment supporting what you&apos;re saying?

Just hearsay at the moment, I&apos;ll see if I can fish out a link tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906113</commentid>
    <comment_count>23</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-04 02:52:18 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 206009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=206009&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:56
&gt; &gt;&gt;&gt;&gt; +static char* getAtkAttributeSetAsString(AtkObject* accessible)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; gchar
&gt; &gt;&gt; 
&gt; &gt;&gt; Regarding the gchars, I was under the impression that for new code that is not exposed to the outside world we should be using the non-g-versions.  If that&apos;s not correct then I will happily change to gchars throughout.
&gt; &gt; 
&gt; &gt; Hmm, I&apos;m not aware of that. Last I heard, gchar was preferred but the situation might have changed since then. Do you have a link to a review / comment supporting what you&apos;re saying?
&gt; 
&gt; Just hearsay at the moment, I&apos;ll see if I can fish out a link tomorrow.

The fourth comment from Martin in this link mentions it https://bugs.webkit.org/show_bug.cgi?id=114871#c9, but the reason is not made clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906116</commentid>
    <comment_count>24</comment_count>
      <attachid>206009</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-04 03:07:10 -0700</bug_when>
    <thetext>Comment on attachment 206009
Revised patch

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

&gt;&gt;&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:474
&gt;&gt;&gt;&gt;          return JSStringCreateWithCharacters(0, 0);
&gt;&gt;&gt; 
&gt;&gt;&gt; It looks a bit weird that we return 0 below but not here.
&gt;&gt; 
&gt;&gt; That&apos;s a good point.  Shall I do
&gt;&gt; JSStringRef jsString = attributeValue ? JSStringCreateWithUTF8CString(attributeValue)
&gt;&gt;                                       : JSStringCreateWithCharacters(0, 0);
&gt; 
&gt; Just &quot;return 0;&quot; here for consistency.

I&apos;ve just been looking through the file and JSStringCreateWithCharacters(0, 0) is definitely the common way to return an empty JSStringRef. Should I not do that instead for consistency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906118</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-04 03:32:20 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 206009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=206009&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:474
&gt; &gt;&gt;&gt;&gt;          return JSStringCreateWithCharacters(0, 0);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; It looks a bit weird that we return 0 below but not here.
&gt; &gt;&gt; 
&gt; &gt;&gt; That&apos;s a good point.  Shall I do
&gt; &gt;&gt; JSStringRef jsString = attributeValue ? JSStringCreateWithUTF8CString(attributeValue)
&gt; &gt;&gt;                                       : JSStringCreateWithCharacters(0, 0);
&gt; &gt; 
&gt; &gt; Just &quot;return 0;&quot; here for consistency.
&gt; 
&gt; I&apos;ve just been looking through the file and JSStringCreateWithCharacters(0, 0) is definitely the common way to return an empty JSStringRef. Should I not do that instead for consistency?

But the mac implementation seems to return 0 is those cases, right? Anyway, this is not strictly related to your fix so you can keep using JSStringCreateWithCharacters(0, 0) in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906122</commentid>
    <comment_count>26</comment_count>
      <attachid>206070</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-04 04:03:11 -0700</bug_when>
    <thetext>Created attachment 206070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906128</commentid>
    <comment_count>27</comment_count>
      <attachid>206070</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-04 04:15:19 -0700</bug_when>
    <thetext>Comment on attachment 206070
Patch

Ok, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906134</commentid>
    <comment_count>28</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-04 04:39:26 -0700</bug_when>
    <thetext>Thanks Christophe!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906145</commentid>
    <comment_count>29</comment_count>
      <attachid>206070</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-04 05:11:30 -0700</bug_when>
    <thetext>Comment on attachment 206070
Patch

Clearing flags on attachment: 206070

Committed r152397: &lt;http://trac.webkit.org/changeset/152397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906146</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-04 05:11:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205924</attachid>
            <date>2013-07-02 09:56:14 -0700</date>
            <delta_ts>2013-07-03 07:41:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118307-20130702175418.patch</filename>
            <type>text/plain</type>
            <size>15533</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmMDE1YjkxODQ4MGQ2
YmYzOWRlODM0ZDNmMTI3MGRiZDQ4M2QwNC4uN2ZhNmNmNjFmOWQzZDkwMjRkM2YyNGZjODlhM2Zi
ODg0ZjZmMzJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA3LTAyICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBMZWFrOiBB
dGtBdHRyaWJ1dGVTZXQqIHNob3VsZCBiZSBmcmVlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgbWVtb3J5IGxlYWtzIGZvciBBdGtBdHRyaWJ1
dGVTZXQgYnkgc3BlY2lhbGlzaW5nIEdPd25QdHIgdG8KKyAgICAgICAgY2FsbCBhdGtfYXR0cmli
dXRlX3NldF9mcmVlKCkgb24gZGVzdHJ1Y3Rpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0ay9HT3duUHRyQXRrLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkF0a0F0dHJpYnV0
ZVNldCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvR093blB0ckF0ay5oOiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKToKKwogMjAxMy0w
Ny0wMiAgQ2F0YWxpbiBCYWRlYSAgPGJhZGVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTLVJl
Z2lvbnNdIE92ZXJyaWRlTG9naWNhbEhlaWdodCB1c2VkIGJ5IGJvdGggcmVnaW9ucyBhbmQgZmxl
eGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmNDk2NjQ3MjUwOTc5YWM0N2FmZTUz
ZGMyNGJhNDMyZjhlMTUwNTdhLi5hMTlkMzgwZjAxNDk1NzQzZmI5N2IxNGZhNGU3NWVjY2Y1ZTdk
NTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTgsNiArMTgsNyBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIGFjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCiAg
ICAgYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKyAgICBhY2Nlc3NpYmls
aXR5L2F0ay9HT3duUHRyQXRrLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZUFjdGlvbi5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlQ29tcG9uZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBl
NjI4NThhZjUwODhkNTg5NGY1ZTBhNTJjYzA2NjY1ZTQyNGY0ZmQxLi41ZDQxZTM1OTJkNmFhNmVh
ZTVhZjdiZWNjNWQwNTk1YTQ1MTlhZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MjMsNiArMjMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGFjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2li
aWxpdHlPYmplY3RBdGsuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0
ay5jcHAKKyAgICBhY2Nlc3NpYmlsaXR5L2F0ay9HT3duUHRyQXRrLmNwcAogICAgIGFjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCiAgICAgYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKICAgICBhY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQ29tcG9uZW50LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvR093blB0ckF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9HT3duUHRyQXRrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
N2VkZGQ1ZDUxZTkzNDM0Y2QzN2UyNzdhMTdmZWZhMmM3M2FkMjkwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvR093blB0ckF0ay5jcHAKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cyBJbmMuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHT3duUHRyQXRrLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxBdGtBdHRyaWJ1dGVTZXQ+KEF0a0F0dHJpYnV0ZVNl
dCogcHRyKQoreworCisgICAgaWYgKHB0cikKKyAgICAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJl
ZShwdHIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9HT3duUHRyQXRrLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9HT3du
UHRyQXRrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQxM2I4NTM3NmNjOGU5YTFhMjBhNzBhZWU5OTk0NzQ3ZTgy
YTYxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0dPd25QdHJBdGsuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHT3duUHRyQXRr
X2gKKyNkZWZpbmUgR093blB0ckF0a19oCisKKyNpbmNsdWRlIDxhdGsvYXRrLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiB2b2lkIGZyZWVPd25lZEdQdHI8QXRrQXR0cmlidXRlU2V0PihBdGtBdHRyaWJ1dGVTZXQqKTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCBhM2U3YzIz
YzJkZmMxMGYxMDdmYWFlMGYyYTAyYWZjNjg3ZTQzYzBlLi45Y2UyNWFlNzdlYmJmNGMwM2M2YjQ5
ODgxN2NjMjUzOGE3MmQxYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC02
MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRl
ICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgPGdsaWIvZ3ByaW50Zi5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNp
ZiBQTEFURk9STShHVEspCkBAIC04MTAsOCArODExLDggQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3
ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKEF0a09iamVjdCogb2JqZWN0KQogICAgIH0g
ZWxzZSBpZiAoQVRLX0lTX1RFWFQob2JqZWN0KSkgewogICAgICAgICBjb25zdCBnY2hhciogbG9j
YWxlID0gMDsKIAotICAgICAgICBBdGtBdHRyaWJ1dGVTZXQqIHRleHRBdHRyaWJ1dGVzID0gYXRr
X3RleHRfZ2V0X2RlZmF1bHRfYXR0cmlidXRlcyhBVEtfVEVYVChvYmplY3QpKTsKLSAgICAgICAg
Zm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSB0ZXh0QXR0cmlidXRlczsgYXR0cmlidXRlczsgYXR0
cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKyAgICAgICAgR093blB0cjxBdGtBdHRyaWJ1
dGVTZXQ+IHRleHRBdHRyaWJ1dGVzKGF0a190ZXh0X2dldF9kZWZhdWx0X2F0dHJpYnV0ZXMoQVRL
X1RFWFQob2JqZWN0KSkpOworICAgICAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IHRleHRB
dHRyaWJ1dGVzLmdldCgpOyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4
dCkgewogICAgICAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1dGUgPSBzdGF0aWNfY2Fz
dDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAgICAgICAgIGlmICghc3Ry
Y21wKGF0a0F0dHJpYnV0ZS0+bmFtZSwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19U
RVhUX0FUVFJfTEFOR1VBR0UpKSkgewogICAgICAgICAgICAgICAgIGxvY2FsZSA9IGNhY2hlQW5k
UmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWREb2N1bWVudExvY2FsZSwgU3RyaW5n
Ojpmcm9tVVRGOChhdGtBdHRyaWJ1dGUtPnZhbHVlKSk7CkBAIC04MTksOCArODIwLDYgQEAgc3Rh
dGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKEF0a09iamVj
dCogb2JqZWN0KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXRrX2F0dHJp
YnV0ZV9zZXRfZnJlZSh0ZXh0QXR0cmlidXRlcyk7Ci0KICAgICAgICAgcmV0dXJuIGxvY2FsZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAwOTYyMTI2M2M4NDNmMDk5YjdlMWU3N2Y0Mjk3N2RhZDZhZWQxNDlhLi45ZTRjZjZlNjJm
Y2MwMGFjNzVmNDkyNGQzNzYwODBkMjM2NTY3MzRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDctMDIgIEJy
aWFuIEhvbHQgIDxicmlhbi5ob2x0QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtBVEtdIExlYWs6
IEF0a0F0dHJpYnV0ZVNldCogc2hvdWxkIGJlIGZyZWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgzMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBtZW1vcnkgbGVha3MgZm9yIEF0a0F0dHJp
YnV0ZVNldCBieSBzcGVjaWFsaXNpbmcgR093blB0ciB0bworICAgICAgICBjYWxsIGF0a19hdHRy
aWJ1dGVfc2V0X2ZyZWUoKSBvbiBkZXN0cnVjdGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6Y2hpbGRFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwOgor
ICAgICAgICAoV1RSOjpjaGlsZEVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAg
ICAgICAgKFdUUjo6YXR0cmlidXRlU2V0VG9TdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorCiAyMDEzLTA3LTAxICBOaWNr
IERpZWdvIFlhbWFuZSAgPG5pY2sueWFtYW5lQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0Vm
bF1bR3RrXSBMb29rIGF0IFdFQktJVF9PVVRQVVRESVIgaW5zdGVhZCBvZiBXRUJLSVRPVVRQVVRE
SVIgaW4gamhidWlsZHJjCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAppbmRleCBmYWVjZmQwYWE1YTZiM2E4ZWU5NzZh
OWZkOGYzZDljMWQ1NWVhNWYwLi5lMjgwMjkwNzMwMDAwMGM0N2JjZTM4NWZjNzU3ZjBlZTNmNjQz
ZGQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJBdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckF0ay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZS5oIgogCiAjaW5jbHVkZSA8YXRrL2F0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KIAogc3RhdGljIGJvb2wgbG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMgPSBm
YWxzZTsKIApAQCAtOTMsOCArOTQsOCBAQCBBdGtPYmplY3QqIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpjaGlsZEVsZW1lbnRCeUlkKEF0a09iamVjdCogcGFyZW50LCBjb25zdCBjaAogICAgIGlm
ICghQVRLX0lTX09CSkVDVChwYXJlbnQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEF0a0F0
dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhwYXJl
bnQpOwotICAgIGZvciAoR1NMaXN0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1
dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgIEdPd25QdHI8QXRrQXR0
cmlidXRlU2V0PiBhdHRyaWJ1dGVTZXQoYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhwYXJlbnQp
KTsKKyAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldC5nZXQoKTsgYXR0
cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0
cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVz
LT5kYXRhKTsKICAgICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT5uYW1lLCAiaHRtbC1pZCIp
KSB7CiAgICAgICAgICAgICBpZiAoIXN0cmNtcChhdHRyaWJ1dGUtPnZhbHVlLCBpZCkpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKaW5kZXggYTIzMzUyZWFhZjUzYjMzNDUxZGMzZWI4MjViMDZmZGFmMzhjZDYxNC4uZDU0
MzVlMDc4NDA3MzNkZmVkOTQxODQxYzMyOWRmMjEyZTE5MzkyNiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAt
MzEyLDcgKzMxMiw4IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0
dHJpYnV0ZXMoKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKIAogICAgIEFTU0VSVChBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpOwotICAgIEdPd25Q
dHI8Z2NoYXI+IGF0dHJpYnV0ZURhdGEoYXR0cmlidXRlU2V0VG9TdHJpbmcoYXRrX29iamVjdF9n
ZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudCkpKSk7CisgICAgR093blB0cjxBdGtB
dHRyaWJ1dGVTZXQ+IGF0dHJpYnV0ZVNldChhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKEFUS19P
QkpFQ1QobV9lbGVtZW50KSkpOworICAgIEdPd25QdHI8Y2hhcj4gYXR0cmlidXRlRGF0YShhdHRy
aWJ1dGVTZXRUb1N0cmluZyhhdHRyaWJ1dGVTZXQuZ2V0KCkpKTsKICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXR0cmlidXRlRGF0YS5nZXQoKSk7CiB9CiAKQEAgLTgw
MSw3ICs4MDIsOCBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0
ZU5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCAwKTsKIAotICAgIGZvciAoR1NMaXN0KiBhdGtBdHRyaWJ1dGVzID0gYXRrX29iamVj
dF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudCkpOyBhdGtBdHRyaWJ1dGVzOyBh
dGtBdHRyaWJ1dGVzID0gYXRrQXR0cmlidXRlcy0+bmV4dCkgeworICAgIEdPd25QdHI8QXRrQXR0
cmlidXRlU2V0PiBhdHRyaWJ1dGVTZXQoYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JK
RUNUKG1fZWxlbWVudCkpKTsKKyAgICBmb3IgKEdTTGlzdCogYXRrQXR0cmlidXRlcyA9IGF0dHJp
YnV0ZVNldC5nZXQoKTsgYXRrQXR0cmlidXRlczsgYXRrQXR0cmlidXRlcyA9IGF0a0F0dHJpYnV0
ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1dGUgPSBzdGF0aWNf
Y2FzdDxBdGtBdHRyaWJ1dGUqPihhdGtBdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAgICAgaWYgKCFz
dHJjbXAoYXRrQXR0cmlidXRlLT5uYW1lLCBhdGtBdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkp
KQogICAgICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0a0F0
dHJpYnV0ZS0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJB
dGsuY3BwCmluZGV4IGVhZTIxZGUxZTgwOWZjZmMzOTY0ZGVhNzU2NjAzYTQ2N2JhYWM2NGMuLjE2
OTU2ZjUwZDM4NDhmM2ZhMjZjYzk1MmU0YzMxYzVhYWFmZjczZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKQEAgLTE1NSw4ICsxNTUsOCBAQCBzdGF0
aWMgQXRrT2JqZWN0KiBjaGlsZEVsZW1lbnRCeUlkKEF0a09iamVjdCogcGFyZW50LCBjb25zdCBj
aGFyKiBpZCkKICAgICBpZiAoIUFUS19JU19PQkpFQ1QocGFyZW50KSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IGF0a19vYmplY3RfZ2V0
X2F0dHJpYnV0ZXMocGFyZW50KTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJp
YnV0ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKyAg
ICBHT3duUHRyPEF0a0F0dHJpYnV0ZVNldD4gYXR0cmlidXRlU2V0KGF0a19vYmplY3RfZ2V0X2F0
dHJpYnV0ZXMocGFyZW50KSk7CisgICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1
dGVTZXQuZ2V0KCk7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7
CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmli
dXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAgICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+
bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAgICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT52
YWx1ZSwgaWQpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApp
bmRleCAxOGQwODFhNjZiZjNkY2ZmMmM1NTJjZGRjNjJhMjk1MTBhMDJhYzkyLi4wNzdhMTlhNTNh
MjQzOTI5YmU5Y2MzZjNhOWM1OTQzNWYzODk5NWIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNTMsMjEgKzUzLDEwIEBAIHN0YXRpYyBTdHJpbmcg
Y29yZUF0dHJpYnV0ZVRvQXRrQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBy
ZXR1cm4gYXR0cmlidXRlU3RyaW5nID09ICJBWFBsYWNlaG9sZGVyVmFsdWUiID8gInBsYWNlaG9s
ZGVyLXRleHQiIDogU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGF0dHJpYnV0ZXNDbGVhcihB
dGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXNTZXQpCi17Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJp
YnV0ZXMgPSBhdHRyaWJ1dGVzU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRl
cy0+bmV4dCkgewotICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19j
YXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOwotICAgICAgICBnX2ZyZWUoYXRr
QXR0cmlidXRlLT5uYW1lKTsKLSAgICAgICAgZ19mcmVlKGF0a0F0dHJpYnV0ZS0+dmFsdWUpOwot
ICAgICAgICBnX2ZyZWUoYXRrQXR0cmlidXRlKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBnY2hhciog
YXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQpCiB7Ci0g
ICAgR093blB0cjxHU0xpc3Q+IGF0a0F0dHJpYnV0ZXMoYXR0cmlidXRlU2V0KTsKICAgICBHU3Ry
aW5nKiBzdHIgPSBnX3N0cmluZ19uZXcoMCk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMg
PSBhdGtBdHRyaWJ1dGVzLmdldCgpOyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRl
cy0+bmV4dCkgeworICAgIGZvciAoR1NMaXN0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBh
dHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgewogICAgICAgICBBdGtB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0
ZXMtPmRhdGEpOwogICAgICAgICBHT3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29u
Y2F0KGF0dHJpYnV0ZS0+bmFtZSwgIjoiLCBhdHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CiAgICAg
ICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsIGF0dHJpYnV0ZURhdGEuZ2V0KCkpOwpAQCAtNzUsOCAr
NjQsNiBAQCBzdGF0aWMgZ2NoYXIqIGF0dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJpYnV0ZVNl
dCogYXR0cmlidXRlU2V0KQogICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgIiwgIik7
CiAgICAgfQogCi0gICAgYXR0cmlidXRlc0NsZWFyKGF0a0F0dHJpYnV0ZXMuZ2V0KCkpOwotCiAg
ICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUoc3RyLCBGQUxTRSk7CiB9CiAKQEAgLTQ3MCw3ICs0NTcs
OCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxs
QXR0cmlidXRlcygpCiAgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVt
ZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGF0dHJpYnV0ZVNldFRv
U3RyaW5nKGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0
KCkpKSkpOworICAgIEdPd25QdHI8QXRrQXR0cmlidXRlU2V0PiBhdHRyaWJ1dGVTZXQoYXRrX29i
amVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpKTsKKyAgICBH
T3duUHRyPGNoYXI+IGF0dHJpYnV0ZURhdGEoYXR0cmlidXRlU2V0VG9TdHJpbmcoYXR0cmlidXRl
U2V0LmdldCgpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0
dHJpYnV0ZURhdGEuZ2V0KCkpOwogfQogCkBAIC00ODMsMTkgKzQ3MSwxNCBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZQogICAgIGlmIChhdGtBdHRyaWJ1dGVOYW1lLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25Q
dHI8Z2NoYXI+IGF0dHJpYnV0ZVZhbHVlOwotICAgIEdPd25QdHI8R1NMaXN0PiBvYmplY3RBdHRy
aWJ1dGVzKGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0
KCkpKSk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSAgb2JqZWN0QXR0cmlidXRlcy5n
ZXQoKTsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKLSAgICAg
ICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUq
PihhdHRyaWJ1dGVzLT5kYXRhKTsKLSAgICAgICAgaWYgKCFzdHJjbXAoYXRrQXR0cmlidXRlLT5u
YW1lLCBhdGtBdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICBhdHRy
aWJ1dGVWYWx1ZS5zZXQoZ19zdHJkdXAoYXRrQXR0cmlidXRlLT52YWx1ZSkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBHT3duUHRyPEF0a0F0dHJpYnV0ZVNldD4gYXR0cmli
dXRlU2V0KGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0
KCkpKSk7CisgICAgZm9yIChHU0xpc3QqIGF0a0F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQuZ2V0
KCk7IGF0a0F0dHJpYnV0ZXM7IGF0a0F0dHJpYnV0ZXMgPSBhdGtBdHRyaWJ1dGVzLT5uZXh0KSB7
CisgICAgICAgIEF0a0F0dHJpYnV0ZSogYXRrQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0
cmlidXRlKj4oYXRrQXR0cmlidXRlcy0+ZGF0YSk7CisgICAgICAgIGlmICghc3RyY21wKGF0a0F0
dHJpYnV0ZS0+bmFtZSwgYXRrQXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdGtBdHRyaWJ1dGUtPnZh
bHVlKTsKICAgICB9CiAKLSAgICBhdHRyaWJ1dGVzQ2xlYXIob2JqZWN0QXR0cmlidXRlcy5nZXQo
KSk7Ci0KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXR0cmlidXRl
VmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206002</attachid>
            <date>2013-07-03 07:41:25 -0700</date>
            <delta_ts>2013-07-03 09:24:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118307-20130703153928.patch</filename>
            <type>text/plain</type>
            <size>9373</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDk2MjEyNjNjODQzZjA5OWI3ZTFlNzdmNDI5NzdkYWQ2
YWVkMTQ5YS4uNmUwZmNlYzFjYTg5NzRkNzQxMGQ2YzY2NGY4MmQ3YWJmMTVlZTg4OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEzLTA3LTAyICBCcmlhbiBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbQVRLXSBMZWFrOiBBdGtBdHRyaWJ1dGVTZXQqIHNob3VsZCBiZSBmcmVlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgbWVtb3J5
IGxlYWtzIGZvciBBdGtBdHRyaWJ1dGVTZXQgYnkgY2FsbGluZworICAgICAgICBhdGtfYXR0cmli
dXRlX3NldF9mcmVlKCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OmNoaWxkRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFsbEF0dHJpYnV0ZXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6Y2hp
bGRFbGVtZW50QnlJZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OmF0dHJp
YnV0ZVNldFRvU3RyaW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKToKKwogMjAxMy0wNy0wMSAgTmljayBEaWVnbyBZYW1hbmUgIDxu
aWNrLnlhbWFuZUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtFZmxdW0d0a10gTG9vayBhdCBX
RUJLSVRfT1VUUFVURElSIGluc3RlYWQgb2YgV0VCS0lUT1VUUFVURElSIGluIGpoYnVpbGRyYwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckF0ay5jcHAKaW5kZXggZmFlY2ZkMGFhNWE2YjNhOGVlOTc2YTlmZDhmM2Q5YzFkNTVlYTVm
MC4uNDYyZDJmZTI0NDYwYmUyZGU5NDdmYjRmZGEwYzVmNzU4NzY5OWZkYyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsu
Y3BwCkBAIC05MywxNSArOTMsMjAgQEAgQXRrT2JqZWN0KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6Y2hpbGRFbGVtZW50QnlJZChBdGtPYmplY3QqIHBhcmVudCwgY29uc3QgY2gKICAgICBpZiAo
IUFUS19JU19PQkpFQ1QocGFyZW50KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdGtBdHRy
aWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMocGFyZW50
KTsKKyAgICBib29sIHJldHVyblBhcmVudCA9IGZhbHNlOworICAgIEF0a0F0dHJpYnV0ZVNldCog
YXR0cmlidXRlU2V0KGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMocGFyZW50KSk7CiAgICAgZm9y
IChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0
ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmlidXRl
ID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAgICAg
IGlmICghc3RyY21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAgICAgICAg
aWYgKCFzdHJjbXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBwYXJlbnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuUGFyZW50ID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUo
YXR0cmlidXRlU2V0KTsKKworICAgIGlmIChyZXR1cm5QYXJlbnQpCisgICAgICAgIHJldHVybiBw
YXJlbnQ7CiAKICAgICBpbnQgY2hpbGRDb3VudCA9IGF0a19vYmplY3RfZ2V0X25fYWNjZXNzaWJs
ZV9jaGlsZHJlbihwYXJlbnQpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRDb3VudDsg
aSsrKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggYTIzMzUyZWFhZjUzYjMzNDUxZGMzZWI4MjViMDZmZGFm
MzhjZDYxNC4uMWYzYzgwODUwYTEyZTBhNGQ5YTc1MDJiNWQ3ZGE4NjU2OGY3N2U4MSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcApAQCAtMzEyLDcgKzMxMiw5IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKIAogICAgIEFTU0VSVChBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkp
OwotICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0ZURhdGEoYXR0cmlidXRlU2V0VG9TdHJpbmco
YXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudCkpKSk7CisgICAg
QXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVz
KEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgR093blB0cjxjaGFyPiBhdHRyaWJ1dGVEYXRh
KGF0dHJpYnV0ZVNldFRvU3RyaW5nKGF0dHJpYnV0ZVNldCkpOworICAgIGF0a19hdHRyaWJ1dGVf
c2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYXR0cmlidXRlRGF0YS5nZXQoKSk7CiB9CiAKQEAgLTgwMSwxMyArODAzLDE4IEBA
IEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBpZiAoYXRrQXR0cmlidXRlTmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwog
Ci0gICAgZm9yIChHU0xpc3QqIGF0a0F0dHJpYnV0ZXMgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1
dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7IGF0a0F0dHJpYnV0ZXM7IGF0a0F0dHJpYnV0ZXMg
PSBhdGtBdHRyaWJ1dGVzLT5uZXh0KSB7Ci0gICAgICAgIEF0a0F0dHJpYnV0ZSogYXRrQXR0cmli
dXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXRrQXR0cmlidXRlcy0+ZGF0YSk7Ci0g
ICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJpYnV0ZS0+bmFtZSwgYXRrQXR0cmlidXRlTmFtZS51
dGY4KCkuZGF0YSgpKSkKLSAgICAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhhdGtBdHRyaWJ1dGUtPnZhbHVlKTsKKyAgICBHT3duUHRyPGNoYXI+IGF0dHJpYnV0
ZVZhbHVlOworICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9n
ZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGZvciAoR1NMaXN0KiBh
dHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmli
dXRlcy0+bmV4dCkgeworICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRp
Y19jYXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBpZiAoIXN0
cmNtcChhdGtBdHRyaWJ1dGUtPm5hbWUsIGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkp
IHsKKyAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlLnNldChnX3N0cmR1cChhdGtBdHRyaWJ1dGUt
PnZhbHVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAgICBhdGtf
YXR0cmlidXRlX3NldF9mcmVlKGF0dHJpYnV0ZVNldCk7CiAKLSAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYXR0cmlidXRlVmFsdWUuZ2V0KCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IGVh
ZTIxZGUxZTgwOWZjZmMzOTY0ZGVhNzU2NjAzYTQ2N2JhYWM2NGMuLjZkODg5NjBkNGNlY2RiNjFl
ZmVlMjFmMTBlNDI3YTlmNjIwY2Y3MDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckF0ay5jcHAKQEAgLTE1NSwxNSArMTU1LDIwIEBAIHN0YXRpYyBBdGtPYmplY3Qq
IGNoaWxkRWxlbWVudEJ5SWQoQXRrT2JqZWN0KiBwYXJlbnQsIGNvbnN0IGNoYXIqIGlkKQogICAg
IGlmICghQVRLX0lTX09CSkVDVChwYXJlbnQpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGJv
b2wgcmV0dXJuUGFyZW50ID0gZmFsc2U7CiAgICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVT
ZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKHBhcmVudCk7CiAgICAgZm9yIChHU0xpc3Qq
IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRy
aWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmlidXRlID0gc3RhdGlj
X2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAgICAgICAgaWYgKCFzdHJj
bXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuUGFyZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQorICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRl
U2V0KTsKKworICAgIGlmIChyZXR1cm5QYXJlbnQpCisgICAgICAgIHJldHVybiBwYXJlbnQ7CiAK
ICAgICBpbnQgY2hpbGRDb3VudCA9IGF0a19vYmplY3RfZ2V0X25fYWNjZXNzaWJsZV9jaGlsZHJl
bihwYXJlbnQpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRDb3VudDsgaSsrKSB7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDE4ZDA4MWE2
NmJmM2RjZmYyYzU1MmNkZGM2MmEyOTUxMGEwMmFjOTIuLmUyMTE1NzkyZDBiZmRmY2IxZjVlMmI1
YmIxZTIzOThiMGY3NDUxNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCkBAIC01MywyMSArNTMsMTAgQEAgc3RhdGljIFN0cmluZyBjb3JlQXR0cmlidXRl
VG9BdGtBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiBhdHRyaWJ1
dGVTdHJpbmcgPT0gIkFYUGxhY2Vob2xkZXJWYWx1ZSIgPyAicGxhY2Vob2xkZXItdGV4dCIgOiBT
dHJpbmcoKTsKIH0KIAotc3RhdGljIHZvaWQgYXR0cmlidXRlc0NsZWFyKEF0a0F0dHJpYnV0ZVNl
dCogYXR0cmlidXRlc1NldCkKLXsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJp
YnV0ZXNTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7Ci0g
ICAgICAgIEF0a0F0dHJpYnV0ZSogYXRrQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmli
dXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7Ci0gICAgICAgIGdfZnJlZShhdGtBdHRyaWJ1dGUtPm5h
bWUpOwotICAgICAgICBnX2ZyZWUoYXRrQXR0cmlidXRlLT52YWx1ZSk7Ci0gICAgICAgIGdfZnJl
ZShhdGtBdHRyaWJ1dGUpOwotICAgIH0KLX0KLQogc3RhdGljIGdjaGFyKiBhdHRyaWJ1dGVTZXRU
b1N0cmluZyhBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCkKIHsKLSAgICBHT3duUHRyPEdT
TGlzdD4gYXRrQXR0cmlidXRlcyhhdHRyaWJ1dGVTZXQpOwogICAgIEdTdHJpbmcqIHN0ciA9IGdf
c3RyaW5nX25ldygwKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0a0F0dHJpYnV0
ZXMuZ2V0KCk7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7Cisg
ICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0
cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAg
ICAgICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0ZURhdGEoZ19zdHJjb25jYXQoYXR0cmlidXRl
LT5uYW1lLCAiOiIsIGF0dHJpYnV0ZS0+dmFsdWUsIE5VTEwpKTsKICAgICAgICAgZ19zdHJpbmdf
YXBwZW5kKHN0ciwgYXR0cmlidXRlRGF0YS5nZXQoKSk7CkBAIC03NSw4ICs2NCw2IEBAIHN0YXRp
YyBnY2hhciogYXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVT
ZXQpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiLCAiKTsKICAgICB9CiAKLSAg
ICBhdHRyaWJ1dGVzQ2xlYXIoYXRrQXR0cmlidXRlcy5nZXQoKSk7Ci0KICAgICByZXR1cm4gZ19z
dHJpbmdfZnJlZShzdHIsIEZBTFNFKTsKIH0KIApAQCAtNDcwLDcgKzQ1Nyw5IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkK
ICAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAg
IEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0ZURhdGEoYXR0cmlidXRlU2V0VG9TdHJpbmcoYXRrX29i
amVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpKSk7CisgICAg
QXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVz
KEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSk7CisgICAgR093blB0cjxjaGFyPiBhdHRyaWJ1
dGVEYXRhKGF0dHJpYnV0ZVNldFRvU3RyaW5nKGF0dHJpYnV0ZVNldCkpOworICAgIGF0a19hdHRy
aWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYXR0cmlidXRlRGF0YS5nZXQoKSk7CiB9CiAKQEAgLTQ4MywxNyArNDcy
LDE2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOwogCi0gICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlVmFsdWU7Ci0gICAgR093blB0cjxH
U0xpc3Q+IG9iamVjdEF0dHJpYnV0ZXMoYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JK
RUNUKG1fZWxlbWVudC5nZXQoKSkpKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9ICBv
YmplY3RBdHRyaWJ1dGVzLmdldCgpOyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRl
cy0+bmV4dCkgeworICAgIEdPd25QdHI8Y2hhcj4gYXR0cmlidXRlVmFsdWU7CisgICAgQXRrQXR0
cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKEFUS19P
QkpFQ1QobV9lbGVtZW50LmdldCgpKSk7CisgICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7
CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXRrQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0
cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJp
YnV0ZS0+bmFtZSwgYXRrQXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkgewogICAgICAgICAg
ICAgYXR0cmlidXRlVmFsdWUuc2V0KGdfc3RyZHVwKGF0a0F0dHJpYnV0ZS0+dmFsdWUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotCi0gICAgYXR0cmlidXRlc0NsZWFy
KG9iamVjdEF0dHJpYnV0ZXMuZ2V0KCkpOworICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0
cmlidXRlU2V0KTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhh
dHRyaWJ1dGVWYWx1ZS5nZXQoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206006</attachid>
            <date>2013-07-03 09:24:59 -0700</date>
            <delta_ts>2013-07-03 10:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118307-20130703172303.patch</filename>
            <type>text/plain</type>
            <size>12754</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmMDE1YjkxODQ4MGQ2
YmYzOWRlODM0ZDNmMTI3MGRiZDQ4M2QwNC4uN2E1NzE4NzYzNGZhYjY2ZGUxYWE0MTM3YTNiNWI2
ZmVhMTk0YjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA3LTAzICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBMZWFrOiBB
dGtBdHRyaWJ1dGVTZXQqIHNob3VsZCBiZSBmcmVlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEF0a0F0dHJpYnV0ZVNldCogaW5zdGVhZCBvZiBH
U0xpc3QqLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE9iamVjdExvY2FsZSk6
CisKIDIwMTMtMDctMDIgIENhdGFsaW4gQmFkZWEgIDxiYWRlYUBhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUy1SZWdpb25zXSBPdmVycmlkZUxvZ2ljYWxIZWlnaHQgdXNlZCBieSBib3RoIHJlZ2lv
bnMgYW5kIGZsZXhib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCBhM2U3YzIz
YzJkZmMxMGYxMDdmYWFlMGYyYTAyYWZjNjg3ZTQzYzBlLi5jNGIzMmEwZTM4ZjY5ZGMyMzJhZDVm
YmFhMDViZGNlNmYzYzNmMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC04
MTEsMTQgKzgxMSwxMyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXRP
YmplY3RMb2NhbGUoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGNvbnN0IGdjaGFyKiBsb2Nh
bGUgPSAwOwogCiAgICAgICAgIEF0a0F0dHJpYnV0ZVNldCogdGV4dEF0dHJpYnV0ZXMgPSBhdGtf
dGV4dF9nZXRfZGVmYXVsdF9hdHRyaWJ1dGVzKEFUS19URVhUKG9iamVjdCkpOwotICAgICAgICBm
b3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IHRleHRBdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzOyBhdHRy
aWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgICAgICBmb3IgKEF0a0F0dHJpYnV0ZVNl
dCogYXR0cmlidXRlcyA9IHRleHRBdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0g
YXR0cmlidXRlcy0+bmV4dCkgewogICAgICAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1
dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAg
ICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJpYnV0ZS0+bmFtZSwgYXRrX3RleHRfYXR0cmlidXRl
X2dldF9uYW1lKEFUS19URVhUX0FUVFJfTEFOR1VBR0UpKSkgewogICAgICAgICAgICAgICAgIGxv
Y2FsZSA9IGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWREb2N1bWVu
dExvY2FsZSwgU3RyaW5nOjpmcm9tVVRGOChhdGtBdHRyaWJ1dGUtPnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAgICBhdGtf
YXR0cmlidXRlX3NldF9mcmVlKHRleHRBdHRyaWJ1dGVzKTsKIAogICAgICAgICByZXR1cm4gbG9j
YWxlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDA5NjIxMjYzYzg0M2YwOTliN2UxZTc3ZjQyOTc3ZGFkNmFlZDE0OWEuLjk3MmIxYzM4MmMwZDg1
NGFiYjAwZGU1ZDNiZjIzNGY5OGI3NWUxYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wNy0wMyAgQnJpYW4g
SG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gTGVhazogQXRr
QXR0cmlidXRlU2V0KiBzaG91bGQgYmUgZnJlZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODMwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIG1lbW9yeSBsZWFrcyBmb3IgQXRrQXR0cmlidXRl
U2V0IGJ5IGNhbGxpbmcKKyAgICAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZSgpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjaGlsZEVsZW1lbnRCeUlkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6
CisgICAgICAgIChnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHA6Cisg
ICAgICAgIChXVFI6OmNoaWxkRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAg
ICAgICAoV1RSOjpnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisKIDIwMTMtMDctMDEg
IE5pY2sgRGllZ28gWWFtYW5lICA8bmljay55YW1hbmVAb3BlbmJvc3NhLm9yZz4KIAogICAgICAg
ICBbRWZsXVtHdGtdIExvb2sgYXQgV0VCS0lUX09VVFBVVERJUiBpbnN0ZWFkIG9mIFdFQktJVE9V
VFBVVERJUiBpbiBqaGJ1aWxkcmMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0
ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IGZhZWNmZDBhYTVhNmIzYThl
ZTk3NmE5ZmQ4ZjNkOWMxZDU1ZWE1ZjAuLmRkZWFmMjgzNGZmMzE4ODk3MTM1MDY2YTZhNjk4M2M2
NzViNGE5YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApAQCAtOTMsMTUgKzkzLDIwIEBAIEF0a09iamVjdCog
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNoaWxkRWxlbWVudEJ5SWQoQXRrT2JqZWN0KiBwYXJl
bnQsIGNvbnN0IGNoCiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKHBhcmVudCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0
X2dldF9hdHRyaWJ1dGVzKHBhcmVudCk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7
CisgICAgYm9vbCBwYXJlbnRGb3VuZCA9IGZhbHNlOworICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0
cmlidXRlU2V0KGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMocGFyZW50KSk7CisgICAgZm9yIChB
dGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0
cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAg
ICAgICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAg
ICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRf
ZnJlZShhdHRyaWJ1dGVTZXQpOworCisgICAgaWYgKHBhcmVudEZvdW5kKQorICAgICAgICByZXR1
cm4gcGFyZW50OwogCiAgICAgaW50IGNoaWxkQ291bnQgPSBhdGtfb2JqZWN0X2dldF9uX2FjY2Vz
c2libGVfY2hpbGRyZW4ocGFyZW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkQ291
bnQ7IGkrKykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IGEyMzM1MmVhYWY1M2IzMzQ1MWRjM2ViODI1YjA2
ZmRhZjM4Y2Q2MTQuLmY3OGYyM2UyZjcxZDM5ODI2N2YxYmJmNTE2OGQ2Mzg3NGQ0MWQxYjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKQEAgLTI5MiwyNyArMjkyLDI5IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQog
ICAgIHJldHVybiAwOwogfQogCi1nY2hhciogYXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmli
dXRlU2V0KiBhdHRyaWJ1dGVTZXQpCitzdGF0aWMgY2hhciogZ2V0QXRrQXR0cmlidXRlU2V0QXNT
dHJpbmcoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKQogewogICAgIEdTdHJpbmcqIHN0ciA9IGdfc3Ry
aW5nX25ldygwKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsg
YXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKworICAgIEF0a0F0
dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhhY2Nl
c3NpYmxlKTsKKyAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0
ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAg
ICAgQXRrQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihh
dHRyaWJ1dGVzLT5kYXRhKTsKICAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShn
X3N0cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkp
OwogICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5leHQpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQo
c3RyLCAiLCAiKTsKICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShhdHRyaWJ1dGVT
ZXQpOwogCiAgICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUoc3RyLCBGQUxTRSk7CiB9CiAKIEpTU3Ry
aW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogewotICAgIGlm
ICghbV9lbGVtZW50KQorICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxl
bWVudCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OwogCi0gICAgQVNTRVJUKEFUS19JU19PQkpFQ1QobV9lbGVtZW50KSk7Ci0gICAgR093blB0cjxn
Y2hhcj4gYXR0cmlidXRlRGF0YShhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdGtfb2JqZWN0X2dldF9h
dHRyaWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50KSkpKTsKKyAgICBHT3duUHRyPGNoYXI+IGF0
dHJpYnV0ZURhdGEoZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoQVRLX09CSkVDVChtX2VsZW1l
bnQpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0
ZURhdGEuZ2V0KCkpOwogfQogCkBAIC04MDEsMTMgKzgwMywxOSBAQCBKU1N0cmluZ1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIGZvciAoR1NMaXN0
KiBhdGtBdHRyaWJ1dGVzID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1f
ZWxlbWVudCkpOyBhdGtBdHRyaWJ1dGVzOyBhdGtBdHRyaWJ1dGVzID0gYXRrQXR0cmlidXRlcy0+
bmV4dCkgewotICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0
PEF0a0F0dHJpYnV0ZSo+KGF0a0F0dHJpYnV0ZXMtPmRhdGEpOwotICAgICAgICBpZiAoIXN0cmNt
cChhdGtBdHRyaWJ1dGUtPm5hbWUsIGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXRrQXR0cmli
dXRlLT52YWx1ZSk7CisgICAgY29uc3QgY2hhciogYXR0cmlidXRlVmFsdWUgPSAiIjsKKyAgICBB
dGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMo
QVRLX09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmli
dXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMt
Pm5leHQpIHsKKyAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1dGUgPSBzdGF0aWNfY2Fz
dDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKKyAgICAgICAgaWYgKCFzdHJjbXAo
YXRrQXR0cmlidXRlLT5uYW1lLCBhdGtBdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkpKSB7Cisg
ICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0a0F0dHJpYnV0ZS0+dmFsdWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAgICBKU1N0cmluZ1JlZiBqc1N0ciA9IEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0ZVZhbHVlKTsKKyAgICBhdGtfYXR0
cmlidXRlX3NldF9mcmVlKGF0dHJpYnV0ZVNldCk7CiAKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAgICByZXR1cm4ganNTdHI7CiB9CiAKIGRvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAK
aW5kZXggZWFlMjFkZTFlODA5ZmNmYzM5NjRkZWE3NTY2MDNhNDY3YmFhYzY0Yy4uM2I1OGMwZGEw
MzM4YjQ1NjY1ZWE5NTdiNGM2YmY5ZDhmMGEyNDA0NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApAQCAtMTU1LDE1ICsxNTUsMjAgQEAgc3RhdGljIEF0
a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtPYmplY3QqIHBhcmVudCwgY29uc3QgY2hhciog
aWQpCiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKHBhcmVudCkpCiAgICAgICAgIHJldHVybiAwOwog
CisgICAgYm9vbCBwYXJlbnRGb3VuZCA9IGZhbHNlOwogICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0
cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhwYXJlbnQpOwotICAgIGZvciAo
R1NMaXN0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVz
ID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgIGZvciAoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+
bmV4dCkgewogICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0
a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOwogICAgICAgICBpZiAoIXN0cmNtcChhdHRy
aWJ1dGUtPm5hbWUsICJodG1sLWlkIikpIHsKICAgICAgICAgICAgIGlmICghc3RyY21wKGF0dHJp
YnV0ZS0+dmFsdWUsIGlkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50OworICAgICAg
ICAgICAgICAgIHBhcmVudEZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKKwor
ICAgIGlmIChwYXJlbnRGb3VuZCkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKIAogICAgIGludCBj
aGlsZENvdW50ID0gYXRrX29iamVjdF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVuKHBhcmVudCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZENvdW50OyBpKyspIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMThkMDgxYTY2YmYzZGNmZjJj
NTUyY2RkYzYyYTI5NTEwYTAyYWM5Mi4uNDk3NWM3N2NlMmRlZGVmMDJkZjJkZGVjYzYyZmZiM2Rj
NGI1ZmIzYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAK
QEAgLTUzLDI5ICs1MywxOSBAQCBzdGF0aWMgU3RyaW5nIGNvcmVBdHRyaWJ1dGVUb0F0a0F0dHJp
YnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgcmV0dXJuIGF0dHJpYnV0ZVN0cmluZyA9
PSAiQVhQbGFjZWhvbGRlclZhbHVlIiA/ICJwbGFjZWhvbGRlci10ZXh0IiA6IFN0cmluZygpOwog
fQogCi1zdGF0aWMgdm9pZCBhdHRyaWJ1dGVzQ2xlYXIoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1
dGVzU2V0KQorc3RhdGljIGNoYXIqIGdldEF0a0F0dHJpYnV0ZVNldEFzU3RyaW5nKEF0a09iamVj
dCogYWNjZXNzaWJsZSkKIHsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0
ZXNTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7Ci0gICAg
ICAgIEF0a0F0dHJpYnV0ZSogYXRrQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRl
Kj4oYXR0cmlidXRlcy0+ZGF0YSk7Ci0gICAgICAgIGdfZnJlZShhdGtBdHRyaWJ1dGUtPm5hbWUp
OwotICAgICAgICBnX2ZyZWUoYXRrQXR0cmlidXRlLT52YWx1ZSk7Ci0gICAgICAgIGdfZnJlZShh
dGtBdHRyaWJ1dGUpOwotICAgIH0KLX0KLQotc3RhdGljIGdjaGFyKiBhdHRyaWJ1dGVTZXRUb1N0
cmluZyhBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCkKLXsKLSAgICBHT3duUHRyPEdTTGlz
dD4gYXRrQXR0cmlidXRlcyhhdHRyaWJ1dGVTZXQpOwogICAgIEdTdHJpbmcqIHN0ciA9IGdfc3Ry
aW5nX25ldygwKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0a0F0dHJpYnV0ZXMu
Z2V0KCk7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CisKKyAg
ICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0
ZXMoYWNjZXNzaWJsZSk7CisgICAgZm9yIChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7
CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmli
dXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0
ZURhdGEoZ19zdHJjb25jYXQoYXR0cmlidXRlLT5uYW1lLCAiOiIsIGF0dHJpYnV0ZS0+dmFsdWUs
IE5VTEwpKTsKICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgYXR0cmlidXRlRGF0YS5nZXQo
KSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLT5uZXh0KQogICAgICAgICAgICAgZ19zdHJpbmdf
YXBwZW5kKHN0ciwgIiwgIik7CiAgICAgfQotCi0gICAgYXR0cmlidXRlc0NsZWFyKGF0a0F0dHJp
YnV0ZXMuZ2V0KCkpOworICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsK
IAogICAgIHJldHVybiBnX3N0cmluZ19mcmVlKHN0ciwgRkFMU0UpOwogfQpAQCAtNDcwLDcgKzQ2
MCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
bGxBdHRyaWJ1dGVzKCkKICAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2Vs
ZW1lbnQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cygwLCAwKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0ZURhdGEoYXR0cmlidXRlU2V0
VG9TdHJpbmcoYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1fZWxlbWVudC5n
ZXQoKSkpKSk7CisgICAgR093blB0cjxjaGFyPiBhdHRyaWJ1dGVEYXRhKGdldEF0a0F0dHJpYnV0
ZVNldEFzU3RyaW5nKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpOwogICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVEYXRhLmdldCgpKTsKIH0KIApA
QCAtNDgzLDE5ICs0NzMsMTkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmUKICAgICBpZiAoYXRr
QXR0cmlidXRlTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgMCk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVWYWx1ZTsK
LSAgICBHT3duUHRyPEdTTGlzdD4gb2JqZWN0QXR0cmlidXRlcyhhdGtfb2JqZWN0X2dldF9hdHRy
aWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpOwotICAgIGZvciAoR1NMaXN0KiBh
dHRyaWJ1dGVzID0gIG9iamVjdEF0dHJpYnV0ZXMuZ2V0KCk7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0
ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CisgICAgY29uc3QgY2hhciogYXR0cmlidXRlVmFsdWUg
PSAiIjsKKyAgICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCA9IGF0a19vYmplY3RfZ2V0
X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKTsKKyAgICBmb3IgKEF0a0F0
dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmlidXRlczsgYXR0cmli
dXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRy
aWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAg
ICAgICAgaWYgKCFzdHJjbXAoYXRrQXR0cmlidXRlLT5uYW1lLCBhdGtBdHRyaWJ1dGVOYW1lLnV0
ZjgoKS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZS5zZXQoZ19zdHJkdXAo
YXRrQXR0cmlidXRlLT52YWx1ZSkpOworICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdGtB
dHRyaWJ1dGUtPnZhbHVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Cisg
ICAgSlNTdHJpbmdSZWYganNTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRy
aWJ1dGVWYWx1ZSk7CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShhdHRyaWJ1dGVTZXQpOwog
Ci0gICAgYXR0cmlidXRlc0NsZWFyKG9iamVjdEF0dHJpYnV0ZXMuZ2V0KCkpOwotCi0gICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0ZVZhbHVlLmdldCgpKTsK
KyAgICByZXR1cm4ganNTdHI7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
dW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206009</attachid>
            <date>2013-07-03 10:23:31 -0700</date>
            <delta_ts>2013-07-04 04:02:59 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>bug-118307-20130703182134.patch</filename>
            <type>text/plain</type>
            <size>12806</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmMDE1YjkxODQ4MGQ2
YmYzOWRlODM0ZDNmMTI3MGRiZDQ4M2QwNC4uN2E1NzE4NzYzNGZhYjY2ZGUxYWE0MTM3YTNiNWI2
ZmVhMTk0YjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA3LTAzICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBMZWFrOiBB
dGtBdHRyaWJ1dGVTZXQqIHNob3VsZCBiZSBmcmVlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEF0a0F0dHJpYnV0ZVNldCogaW5zdGVhZCBvZiBH
U0xpc3QqLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE9iamVjdExvY2FsZSk6
CisKIDIwMTMtMDctMDIgIENhdGFsaW4gQmFkZWEgIDxiYWRlYUBhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUy1SZWdpb25zXSBPdmVycmlkZUxvZ2ljYWxIZWlnaHQgdXNlZCBieSBib3RoIHJlZ2lv
bnMgYW5kIGZsZXhib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCBhM2U3YzIz
YzJkZmMxMGYxMDdmYWFlMGYyYTAyYWZjNjg3ZTQzYzBlLi5jNGIzMmEwZTM4ZjY5ZGMyMzJhZDVm
YmFhMDViZGNlNmYzYzNmMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC04
MTEsMTQgKzgxMSwxMyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXRP
YmplY3RMb2NhbGUoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGNvbnN0IGdjaGFyKiBsb2Nh
bGUgPSAwOwogCiAgICAgICAgIEF0a0F0dHJpYnV0ZVNldCogdGV4dEF0dHJpYnV0ZXMgPSBhdGtf
dGV4dF9nZXRfZGVmYXVsdF9hdHRyaWJ1dGVzKEFUS19URVhUKG9iamVjdCkpOwotICAgICAgICBm
b3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IHRleHRBdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzOyBhdHRy
aWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgICAgICBmb3IgKEF0a0F0dHJpYnV0ZVNl
dCogYXR0cmlidXRlcyA9IHRleHRBdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0g
YXR0cmlidXRlcy0+bmV4dCkgewogICAgICAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1
dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAg
ICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJpYnV0ZS0+bmFtZSwgYXRrX3RleHRfYXR0cmlidXRl
X2dldF9uYW1lKEFUS19URVhUX0FUVFJfTEFOR1VBR0UpKSkgewogICAgICAgICAgICAgICAgIGxv
Y2FsZSA9IGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWREb2N1bWVu
dExvY2FsZSwgU3RyaW5nOjpmcm9tVVRGOChhdGtBdHRyaWJ1dGUtPnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAgICBhdGtf
YXR0cmlidXRlX3NldF9mcmVlKHRleHRBdHRyaWJ1dGVzKTsKIAogICAgICAgICByZXR1cm4gbG9j
YWxlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDA5NjIxMjYzYzg0M2YwOTliN2UxZTc3ZjQyOTc3ZGFkNmFlZDE0OWEuLjk3MmIxYzM4MmMwZDg1
NGFiYjAwZGU1ZDNiZjIzNGY5OGI3NWUxYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wNy0wMyAgQnJpYW4g
SG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gTGVhazogQXRr
QXR0cmlidXRlU2V0KiBzaG91bGQgYmUgZnJlZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODMwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIG1lbW9yeSBsZWFrcyBmb3IgQXRrQXR0cmlidXRl
U2V0IGJ5IGNhbGxpbmcKKyAgICAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZSgpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjaGlsZEVsZW1lbnRCeUlkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6
CisgICAgICAgIChnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHA6Cisg
ICAgICAgIChXVFI6OmNoaWxkRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAg
ICAgICAoV1RSOjpnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisKIDIwMTMtMDctMDEg
IE5pY2sgRGllZ28gWWFtYW5lICA8bmljay55YW1hbmVAb3BlbmJvc3NhLm9yZz4KIAogICAgICAg
ICBbRWZsXVtHdGtdIExvb2sgYXQgV0VCS0lUX09VVFBVVERJUiBpbnN0ZWFkIG9mIFdFQktJVE9V
VFBVVERJUiBpbiBqaGJ1aWxkcmMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0
ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IGZhZWNmZDBhYTVhNmIzYThl
ZTk3NmE5ZmQ4ZjNkOWMxZDU1ZWE1ZjAuLmRkZWFmMjgzNGZmMzE4ODk3MTM1MDY2YTZhNjk4M2M2
NzViNGE5YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApAQCAtOTMsMTUgKzkzLDIwIEBAIEF0a09iamVjdCog
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNoaWxkRWxlbWVudEJ5SWQoQXRrT2JqZWN0KiBwYXJl
bnQsIGNvbnN0IGNoCiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKHBhcmVudCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0
X2dldF9hdHRyaWJ1dGVzKHBhcmVudCk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7
CisgICAgYm9vbCBwYXJlbnRGb3VuZCA9IGZhbHNlOworICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0
cmlidXRlU2V0KGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMocGFyZW50KSk7CisgICAgZm9yIChB
dGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0
cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAg
ICAgICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAg
ICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRf
ZnJlZShhdHRyaWJ1dGVTZXQpOworCisgICAgaWYgKHBhcmVudEZvdW5kKQorICAgICAgICByZXR1
cm4gcGFyZW50OwogCiAgICAgaW50IGNoaWxkQ291bnQgPSBhdGtfb2JqZWN0X2dldF9uX2FjY2Vz
c2libGVfY2hpbGRyZW4ocGFyZW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkQ291
bnQ7IGkrKykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IGEyMzM1MmVhYWY1M2IzMzQ1MWRjM2ViODI1YjA2
ZmRhZjM4Y2Q2MTQuLjY5ZjI5ODU2MGYwMjVlNDExNjdhNGViZTE0ZTFmODhmNzA0ZDMyNDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKQEAgLTI5MiwyNyArMjkyLDI5IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQog
ICAgIHJldHVybiAwOwogfQogCi1nY2hhciogYXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmli
dXRlU2V0KiBhdHRyaWJ1dGVTZXQpCitzdGF0aWMgY2hhciogZ2V0QXRrQXR0cmlidXRlU2V0QXNT
dHJpbmcoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKQogewogICAgIEdTdHJpbmcqIHN0ciA9IGdfc3Ry
aW5nX25ldygwKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsg
YXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKworICAgIEF0a0F0
dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhhY2Nl
c3NpYmxlKTsKKyAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0
ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAg
ICAgQXRrQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihh
dHRyaWJ1dGVzLT5kYXRhKTsKICAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShn
X3N0cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkp
OwogICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5leHQpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQo
c3RyLCAiLCAiKTsKICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShhdHRyaWJ1dGVT
ZXQpOwogCiAgICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUoc3RyLCBGQUxTRSk7CiB9CiAKIEpTU3Ry
aW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogewotICAgIGlm
ICghbV9lbGVtZW50KQorICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxl
bWVudCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OwogCi0gICAgQVNTRVJUKEFUS19JU19PQkpFQ1QobV9lbGVtZW50KSk7Ci0gICAgR093blB0cjxn
Y2hhcj4gYXR0cmlidXRlRGF0YShhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdGtfb2JqZWN0X2dldF9h
dHRyaWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50KSkpKTsKKyAgICBHT3duUHRyPGNoYXI+IGF0
dHJpYnV0ZURhdGEoZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoQVRLX09CSkVDVChtX2VsZW1l
bnQpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0
ZURhdGEuZ2V0KCkpOwogfQogCkBAIC04MDEsMTMgKzgwMywxOSBAQCBKU1N0cmluZ1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIGZvciAoR1NMaXN0
KiBhdGtBdHRyaWJ1dGVzID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1f
ZWxlbWVudCkpOyBhdGtBdHRyaWJ1dGVzOyBhdGtBdHRyaWJ1dGVzID0gYXRrQXR0cmlidXRlcy0+
bmV4dCkgewotICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0
PEF0a0F0dHJpYnV0ZSo+KGF0a0F0dHJpYnV0ZXMtPmRhdGEpOwotICAgICAgICBpZiAoIXN0cmNt
cChhdGtBdHRyaWJ1dGUtPm5hbWUsIGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXRrQXR0cmli
dXRlLT52YWx1ZSk7CisgICAgY29uc3QgY2hhciogYXR0cmlidXRlVmFsdWUgPSAwOworICAgIEF0
a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhB
VEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGZvciAoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+
bmV4dCkgeworICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0
PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBpZiAoIXN0cmNtcChh
dGtBdHRyaWJ1dGUtPm5hbWUsIGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpIHsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXRrQXR0cmlidXRlLT52YWx1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQorICAgIEpTU3RyaW5nUmVmIGpzU3RyaW5nID0g
YXR0cmlidXRlVmFsdWUgPyBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVW
YWx1ZSkgOiAwOworICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKIAot
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIHJldHVy
biBqc1N0cmluZzsKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAppbmRleCBlYWUyMWRlMWU4MDlmY2ZjMzk2NGRlYTc1
NjYwM2E0NjdiYWFjNjRjLi4zYjU4YzBkYTAzMzhiNDU2NjVlYTk1N2I0YzZiZjlkOGYwYTI0MDQ0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCkBAIC0x
NTUsMTUgKzE1NSwyMCBAQCBzdGF0aWMgQXRrT2JqZWN0KiBjaGlsZEVsZW1lbnRCeUlkKEF0a09i
amVjdCogcGFyZW50LCBjb25zdCBjaGFyKiBpZCkKICAgICBpZiAoIUFUS19JU19PQkpFQ1QocGFy
ZW50KSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBib29sIHBhcmVudEZvdW5kID0gZmFsc2U7
CiAgICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRy
aWJ1dGVzKHBhcmVudCk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVT
ZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CisgICAgZm9y
IChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7
IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSog
YXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7
CiAgICAgICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAg
ICAgICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9z
ZXRfZnJlZShhdHRyaWJ1dGVTZXQpOworCisgICAgaWYgKHBhcmVudEZvdW5kKQorICAgICAgICBy
ZXR1cm4gcGFyZW50OwogCiAgICAgaW50IGNoaWxkQ291bnQgPSBhdGtfb2JqZWN0X2dldF9uX2Fj
Y2Vzc2libGVfY2hpbGRyZW4ocGFyZW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxk
Q291bnQ7IGkrKykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cAppbmRleCAxOGQwODFhNjZiZjNkY2ZmMmM1NTJjZGRjNjJhMjk1MTBhMDJhYzkyLi4zMWVmNDNl
M2IzZDY0N2YyYTY2MzVlMDdlZTExNGYwNjJkMzdlOTM2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNTMsMjkgKzUzLDE5IEBAIHN0YXRpYyBTdHJp
bmcgY29yZUF0dHJpYnV0ZVRvQXRrQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAg
ICByZXR1cm4gYXR0cmlidXRlU3RyaW5nID09ICJBWFBsYWNlaG9sZGVyVmFsdWUiID8gInBsYWNl
aG9sZGVyLXRleHQiIDogU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGF0dHJpYnV0ZXNDbGVh
cihBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXNTZXQpCitzdGF0aWMgY2hhciogZ2V0QXRrQXR0
cmlidXRlU2V0QXNTdHJpbmcoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKQogewotICAgIGZvciAoR1NM
aXN0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlc1NldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9
IGF0dHJpYnV0ZXMtPm5leHQpIHsKLSAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1dGUg
PSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKLSAgICAgICAg
Z19mcmVlKGF0a0F0dHJpYnV0ZS0+bmFtZSk7Ci0gICAgICAgIGdfZnJlZShhdGtBdHRyaWJ1dGUt
PnZhbHVlKTsKLSAgICAgICAgZ19mcmVlKGF0a0F0dHJpYnV0ZSk7Ci0gICAgfQotfQotCi1zdGF0
aWMgZ2NoYXIqIGF0dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRl
U2V0KQotewotICAgIEdPd25QdHI8R1NMaXN0PiBhdGtBdHRyaWJ1dGVzKGF0dHJpYnV0ZVNldCk7
CiAgICAgR1N0cmluZyogc3RyID0gZ19zdHJpbmdfbmV3KDApOwotICAgIGZvciAoR1NMaXN0KiBh
dHRyaWJ1dGVzID0gYXRrQXR0cmlidXRlcy5nZXQoKTsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9
IGF0dHJpYnV0ZXMtPm5leHQpIHsKKworICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0
ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhhY2Nlc3NpYmxlKTsKKyAgICBmb3IgKEF0a0F0
dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmlidXRlczsgYXR0cmli
dXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0cmlidXRlKiBhdHRyaWJ1
dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAg
ICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0cmNvbmNhdChhdHRyaWJ1dGUtPm5h
bWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOwogICAgICAgICBnX3N0cmluZ19hcHBl
bmQoc3RyLCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5l
eHQpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiLCAiKTsKICAgICB9Ci0KLSAg
ICBhdHRyaWJ1dGVzQ2xlYXIoYXRrQXR0cmlidXRlcy5nZXQoKSk7CisgICAgYXRrX2F0dHJpYnV0
ZV9zZXRfZnJlZShhdHRyaWJ1dGVTZXQpOwogCiAgICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUoc3Ry
LCBGQUxTRSk7CiB9CkBAIC00NzAsNyArNDYwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogICAgIGlmICghbV9lbGVt
ZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0cjxnY2hhcj4g
YXR0cmlidXRlRGF0YShhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdGtfb2JqZWN0X2dldF9hdHRyaWJ1
dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpKTsKKyAgICBHT3duUHRyPGNoYXI+IGF0
dHJpYnV0ZURhdGEoZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoQVRLX09CSkVDVChtX2VsZW1l
bnQuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0
dHJpYnV0ZURhdGEuZ2V0KCkpOwogfQogCkBAIC00ODMsMTkgKzQ3MywxOSBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZQogICAgIGlmIChhdGtBdHRyaWJ1dGVOYW1lLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25Q
dHI8Z2NoYXI+IGF0dHJpYnV0ZVZhbHVlOwotICAgIEdPd25QdHI8R1NMaXN0PiBvYmplY3RBdHRy
aWJ1dGVzKGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0
KCkpKSk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSAgb2JqZWN0QXR0cmlidXRlcy5n
ZXQoKTsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKyAgICBj
b25zdCBjaGFyKiBhdHRyaWJ1dGVWYWx1ZSA9IDA7CisgICAgQXRrQXR0cmlidXRlU2V0KiBhdHRy
aWJ1dGVTZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50
LmdldCgpKSk7CisgICAgZm9yIChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1
dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAg
ICAgIEF0a0F0dHJpYnV0ZSogYXRrQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRl
Kj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJpYnV0ZS0+
bmFtZSwgYXRrQXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkgewotICAgICAgICAgICAgYXR0
cmlidXRlVmFsdWUuc2V0KGdfc3RyZHVwKGF0a0F0dHJpYnV0ZS0+dmFsdWUpKTsKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZVZhbHVlID0gYXRrQXR0cmlidXRlLT52YWx1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIEpTU3RyaW5nUmVmIGpzU3RyaW5nID0gYXR0cmli
dXRlVmFsdWUgPyBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVWYWx1ZSkg
OiAwOworICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKIAotICAgIGF0
dHJpYnV0ZXNDbGVhcihvYmplY3RBdHRyaWJ1dGVzLmdldCgpKTsKLQotICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVWYWx1ZS5nZXQoKSk7CisgICAgcmV0
dXJuIGpzU3RyaW5nOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVy
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206070</attachid>
            <date>2013-07-04 04:03:11 -0700</date>
            <delta_ts>2013-07-04 05:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118307-20130704120114.patch</filename>
            <type>text/plain</type>
            <size>12908</size>
            <attacher name="Brian Holt">brian.holt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmMDE1YjkxODQ4MGQ2
YmYzOWRlODM0ZDNmMTI3MGRiZDQ4M2QwNC4uN2E1NzE4NzYzNGZhYjY2ZGUxYWE0MTM3YTNiNWI2
ZmVhMTk0YjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA3LTAzICBCcmlh
biBIb2x0ICA8YnJpYW4uaG9sdEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBMZWFrOiBB
dGtBdHRyaWJ1dGVTZXQqIHNob3VsZCBiZSBmcmVlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEF0a0F0dHJpYnV0ZVNldCogaW5zdGVhZCBvZiBH
U0xpc3QqLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldE9iamVjdExvY2FsZSk6
CisKIDIwMTMtMDctMDIgIENhdGFsaW4gQmFkZWEgIDxiYWRlYUBhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUy1SZWdpb25zXSBPdmVycmlkZUxvZ2ljYWxIZWlnaHQgdXNlZCBieSBib3RoIHJlZ2lv
bnMgYW5kIGZsZXhib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCBhM2U3YzIz
YzJkZmMxMGYxMDdmYWFlMGYyYTAyYWZjNjg3ZTQzYzBlLi5jNGIzMmEwZTM4ZjY5ZGMyMzJhZDVm
YmFhMDViZGNlNmYzYzNmMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC04
MTEsMTQgKzgxMSwxMyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXRP
YmplY3RMb2NhbGUoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGNvbnN0IGdjaGFyKiBsb2Nh
bGUgPSAwOwogCiAgICAgICAgIEF0a0F0dHJpYnV0ZVNldCogdGV4dEF0dHJpYnV0ZXMgPSBhdGtf
dGV4dF9nZXRfZGVmYXVsdF9hdHRyaWJ1dGVzKEFUS19URVhUKG9iamVjdCkpOwotICAgICAgICBm
b3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IHRleHRBdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzOyBhdHRy
aWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgICAgICBmb3IgKEF0a0F0dHJpYnV0ZVNl
dCogYXR0cmlidXRlcyA9IHRleHRBdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0g
YXR0cmlidXRlcy0+bmV4dCkgewogICAgICAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1
dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAg
ICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJpYnV0ZS0+bmFtZSwgYXRrX3RleHRfYXR0cmlidXRl
X2dldF9uYW1lKEFUS19URVhUX0FUVFJfTEFOR1VBR0UpKSkgewogICAgICAgICAgICAgICAgIGxv
Y2FsZSA9IGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWREb2N1bWVu
dExvY2FsZSwgU3RyaW5nOjpmcm9tVVRGOChhdGtBdHRyaWJ1dGUtPnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAgICBhdGtf
YXR0cmlidXRlX3NldF9mcmVlKHRleHRBdHRyaWJ1dGVzKTsKIAogICAgICAgICByZXR1cm4gbG9j
YWxlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDA5NjIxMjYzYzg0M2YwOTliN2UxZTc3ZjQyOTc3ZGFkNmFlZDE0OWEuLjk3MmIxYzM4MmMwZDg1
NGFiYjAwZGU1ZDNiZjIzNGY5OGI3NWUxYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wNy0wMyAgQnJpYW4g
SG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gTGVhazogQXRr
QXR0cmlidXRlU2V0KiBzaG91bGQgYmUgZnJlZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODMwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIG1lbW9yeSBsZWFrcyBmb3IgQXRrQXR0cmlidXRl
U2V0IGJ5IGNhbGxpbmcKKyAgICAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZSgpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjaGlsZEVsZW1lbnRCeUlkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6
CisgICAgICAgIChnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHA6Cisg
ICAgICAgIChXVFI6OmNoaWxkRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAg
ICAgICAoV1RSOjpnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmluZyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisKIDIwMTMtMDctMDEg
IE5pY2sgRGllZ28gWWFtYW5lICA8bmljay55YW1hbmVAb3BlbmJvc3NhLm9yZz4KIAogICAgICAg
ICBbRWZsXVtHdGtdIExvb2sgYXQgV0VCS0lUX09VVFBVVERJUiBpbnN0ZWFkIG9mIFdFQktJVE9V
VFBVVERJUiBpbiBqaGJ1aWxkcmMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0
ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IGZhZWNmZDBhYTVhNmIzYThl
ZTk3NmE5ZmQ4ZjNkOWMxZDU1ZWE1ZjAuLmRkZWFmMjgzNGZmMzE4ODk3MTM1MDY2YTZhNjk4M2M2
NzViNGE5YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApAQCAtOTMsMTUgKzkzLDIwIEBAIEF0a09iamVjdCog
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNoaWxkRWxlbWVudEJ5SWQoQXRrT2JqZWN0KiBwYXJl
bnQsIGNvbnN0IGNoCiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKHBhcmVudCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0
X2dldF9hdHRyaWJ1dGVzKHBhcmVudCk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7
CisgICAgYm9vbCBwYXJlbnRGb3VuZCA9IGZhbHNlOworICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0
cmlidXRlU2V0KGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMocGFyZW50KSk7CisgICAgZm9yIChB
dGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0
cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAg
ICAgICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAg
ICAgICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRf
ZnJlZShhdHRyaWJ1dGVTZXQpOworCisgICAgaWYgKHBhcmVudEZvdW5kKQorICAgICAgICByZXR1
cm4gcGFyZW50OwogCiAgICAgaW50IGNoaWxkQ291bnQgPSBhdGtfb2JqZWN0X2dldF9uX2FjY2Vz
c2libGVfY2hpbGRyZW4ocGFyZW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkQ291
bnQ7IGkrKykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IGEyMzM1MmVhYWY1M2IzMzQ1MWRjM2ViODI1YjA2
ZmRhZjM4Y2Q2MTQuLmI1MjYyMTQ2OTZiYjg0OTAzMzQ2YTk2NGUyMTkyYzhmYzc2MDRlYjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKQEAgLTI5MiwyNyArMjkyLDI5IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQog
ICAgIHJldHVybiAwOwogfQogCi1nY2hhciogYXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmli
dXRlU2V0KiBhdHRyaWJ1dGVTZXQpCitzdGF0aWMgY2hhciogZ2V0QXRrQXR0cmlidXRlU2V0QXNT
dHJpbmcoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKQogewogICAgIEdTdHJpbmcqIHN0ciA9IGdfc3Ry
aW5nX25ldygwKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsg
YXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKworICAgIEF0a0F0
dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhhY2Nl
c3NpYmxlKTsKKyAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0
ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAg
ICAgQXRrQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihh
dHRyaWJ1dGVzLT5kYXRhKTsKICAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShn
X3N0cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkp
OwogICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5leHQpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQo
c3RyLCAiLCAiKTsKICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShhdHRyaWJ1dGVT
ZXQpOwogCiAgICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUoc3RyLCBGQUxTRSk7CiB9CiAKIEpTU3Ry
aW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogewotICAgIGlm
ICghbV9lbGVtZW50KQorICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxl
bWVudCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OwogCi0gICAgQVNTRVJUKEFUS19JU19PQkpFQ1QobV9lbGVtZW50KSk7Ci0gICAgR093blB0cjxn
Y2hhcj4gYXR0cmlidXRlRGF0YShhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdGtfb2JqZWN0X2dldF9h
dHRyaWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50KSkpKTsKKyAgICBHT3duUHRyPGNoYXI+IGF0
dHJpYnV0ZURhdGEoZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoQVRLX09CSkVDVChtX2VsZW1l
bnQpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0
ZURhdGEuZ2V0KCkpOwogfQogCkBAIC04MDEsMTMgKzgwMywyMSBAQCBKU1N0cmluZ1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIGZvciAoR1NMaXN0
KiBhdGtBdHRyaWJ1dGVzID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JKRUNUKG1f
ZWxlbWVudCkpOyBhdGtBdHRyaWJ1dGVzOyBhdGtBdHRyaWJ1dGVzID0gYXRrQXR0cmlidXRlcy0+
bmV4dCkgewotICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0
PEF0a0F0dHJpYnV0ZSo+KGF0a0F0dHJpYnV0ZXMtPmRhdGEpOwotICAgICAgICBpZiAoIXN0cmNt
cChhdGtBdHRyaWJ1dGUtPm5hbWUsIGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXRrQXR0cmli
dXRlLT52YWx1ZSk7CisgICAgY29uc3QgY2hhciogYXR0cmlidXRlVmFsdWUgPSAwOworICAgIEF0
a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhB
VEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGZvciAoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+
bmV4dCkgeworICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0
PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBpZiAoIXN0cmNtcChh
dGtBdHRyaWJ1dGUtPm5hbWUsIGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSkpIHsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXRrQXR0cmlidXRlLT52YWx1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQorICAgIEpTU3RyaW5nUmVmIGpzU3RyaW5nID0g
YXR0cmlidXRlVmFsdWUKKyAgICAgICAgPyBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhh
dHRyaWJ1dGVWYWx1ZSkKKyAgICAgICAgOiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKIAotICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIHJldHVybiBqc1N0
cmluZzsKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyQXRrLmNwcAppbmRleCBlYWUyMWRlMWU4MDlmY2ZjMzk2NGRlYTc1NjYwM2E0
NjdiYWFjNjRjLi4zYjU4YzBkYTAzMzhiNDU2NjVlYTk1N2I0YzZiZjlkOGYwYTI0MDQ0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCkBAIC0xNTUsMTUg
KzE1NSwyMCBAQCBzdGF0aWMgQXRrT2JqZWN0KiBjaGlsZEVsZW1lbnRCeUlkKEF0a09iamVjdCog
cGFyZW50LCBjb25zdCBjaGFyKiBpZCkKICAgICBpZiAoIUFUS19JU19PQkpFQ1QocGFyZW50KSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBib29sIHBhcmVudEZvdW5kID0gZmFsc2U7CiAgICAg
QXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVz
KHBhcmVudCk7Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0
dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CisgICAgZm9yIChBdGtB
dHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJp
YnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmli
dXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7CiAgICAg
ICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+bmFtZSwgImh0bWwtaWQiKSkgewogICAgICAgICAg
ICAgaWYgKCFzdHJjbXAoYXR0cmlidXRlLT52YWx1ZSwgaWQpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJl
ZShhdHRyaWJ1dGVTZXQpOworCisgICAgaWYgKHBhcmVudEZvdW5kKQorICAgICAgICByZXR1cm4g
cGFyZW50OwogCiAgICAgaW50IGNoaWxkQ291bnQgPSBhdGtfb2JqZWN0X2dldF9uX2FjY2Vzc2li
bGVfY2hpbGRyZW4ocGFyZW50KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkQ291bnQ7
IGkrKykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRl
eCAxOGQwODFhNjZiZjNkY2ZmMmM1NTJjZGRjNjJhMjk1MTBhMDJhYzkyLi42NWYxYTZmMTJkMjY5
MDBjMzMyYTFlODEyNThmMTUyOGQ1OGFmNjU5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNTMsMjkgKzUzLDE5IEBAIHN0YXRpYyBTdHJpbmcgY29y
ZUF0dHJpYnV0ZVRvQXRrQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICByZXR1
cm4gYXR0cmlidXRlU3RyaW5nID09ICJBWFBsYWNlaG9sZGVyVmFsdWUiID8gInBsYWNlaG9sZGVy
LXRleHQiIDogU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGF0dHJpYnV0ZXNDbGVhcihBdGtB
dHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXNTZXQpCitzdGF0aWMgY2hhciogZ2V0QXRrQXR0cmlidXRl
U2V0QXNTdHJpbmcoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlKQogewotICAgIGZvciAoR1NMaXN0KiBh
dHRyaWJ1dGVzID0gYXR0cmlidXRlc1NldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJp
YnV0ZXMtPm5leHQpIHsKLSAgICAgICAgQXRrQXR0cmlidXRlKiBhdGtBdHRyaWJ1dGUgPSBzdGF0
aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKLSAgICAgICAgZ19mcmVl
KGF0a0F0dHJpYnV0ZS0+bmFtZSk7Ci0gICAgICAgIGdfZnJlZShhdGtBdHRyaWJ1dGUtPnZhbHVl
KTsKLSAgICAgICAgZ19mcmVlKGF0a0F0dHJpYnV0ZSk7Ci0gICAgfQotfQotCi1zdGF0aWMgZ2No
YXIqIGF0dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0KQot
ewotICAgIEdPd25QdHI8R1NMaXN0PiBhdGtBdHRyaWJ1dGVzKGF0dHJpYnV0ZVNldCk7CiAgICAg
R1N0cmluZyogc3RyID0gZ19zdHJpbmdfbmV3KDApOwotICAgIGZvciAoR1NMaXN0KiBhdHRyaWJ1
dGVzID0gYXRrQXR0cmlidXRlcy5nZXQoKTsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJp
YnV0ZXMtPm5leHQpIHsKKworICAgIEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0ID0gYXRr
X29iamVjdF9nZXRfYXR0cmlidXRlcyhhY2Nlc3NpYmxlKTsKKyAgICBmb3IgKEF0a0F0dHJpYnV0
ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9
IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBz
dGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsKICAgICAgICAgR093
blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6
IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOwogICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3Ry
LCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5leHQpCiAg
ICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiLCAiKTsKICAgICB9Ci0KLSAgICBhdHRy
aWJ1dGVzQ2xlYXIoYXRrQXR0cmlidXRlcy5nZXQoKSk7CisgICAgYXRrX2F0dHJpYnV0ZV9zZXRf
ZnJlZShhdHRyaWJ1dGVTZXQpOwogCiAgICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUoc3RyLCBGQUxT
RSk7CiB9CkBAIC00NzAsNyArNDYwLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogICAgIGlmICghbV9lbGVtZW50IHx8
ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0cjxnY2hhcj4gYXR0cmli
dXRlRGF0YShhdHRyaWJ1dGVTZXRUb1N0cmluZyhhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKEFU
S19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpKTsKKyAgICBHT3duUHRyPGNoYXI+IGF0dHJpYnV0
ZURhdGEoZ2V0QXRrQXR0cmlidXRlU2V0QXNTdHJpbmcoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0
KCkpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0
ZURhdGEuZ2V0KCkpOwogfQogCkBAIC00ODMsMTkgKzQ3MywyMSBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZQogICAgIGlmIChhdGtBdHRyaWJ1dGVOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25QdHI8Z2No
YXI+IGF0dHJpYnV0ZVZhbHVlOwotICAgIEdPd25QdHI8R1NMaXN0PiBvYmplY3RBdHRyaWJ1dGVz
KGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKSk7
Ci0gICAgZm9yIChHU0xpc3QqIGF0dHJpYnV0ZXMgPSAgb2JqZWN0QXR0cmlidXRlcy5nZXQoKTsg
YXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKyAgICBjb25zdCBj
aGFyKiBhdHRyaWJ1dGVWYWx1ZSA9IDA7CisgICAgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVT
ZXQgPSBhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgp
KSk7CisgICAgZm9yIChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7
IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0
a0F0dHJpYnV0ZSogYXRrQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0cmlidXRlKj4oYXR0
cmlidXRlcy0+ZGF0YSk7CiAgICAgICAgIGlmICghc3RyY21wKGF0a0F0dHJpYnV0ZS0+bmFtZSwg
YXRrQXR0cmlidXRlTmFtZS51dGY4KCkuZGF0YSgpKSkgewotICAgICAgICAgICAgYXR0cmlidXRl
VmFsdWUuc2V0KGdfc3RyZHVwKGF0a0F0dHJpYnV0ZS0+dmFsdWUpKTsKKyAgICAgICAgICAgIGF0
dHJpYnV0ZVZhbHVlID0gYXRrQXR0cmlidXRlLT52YWx1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQorICAgIEpTU3RyaW5nUmVmIGpzU3RyaW5nID0gYXR0cmlidXRlVmFs
dWUKKyAgICAgICAgPyBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVWYWx1
ZSkKKyAgICAgICAgOiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGF0
a19hdHRyaWJ1dGVfc2V0X2ZyZWUoYXR0cmlidXRlU2V0KTsKIAotICAgIGF0dHJpYnV0ZXNDbGVh
cihvYmplY3RBdHRyaWJ1dGVzLmdldCgpKTsKLQotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5n
OwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>