<?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>120416</bug_id>
          
          <creation_ts>2013-08-28 07:15:25 -0700</creation_ts>
          <short_desc>[GTK] AccessibilityUIElement::addNotificationListener() crashes on debug build</short_desc>
          <delta_ts>2013-09-06 09:31:34 -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>WebKitGTK</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>98350</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Denis Nomiyama (dnomi)">d.nomiyama</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d.nomiyama</cc>
    
    <cc>mario</cc>
    
    <cc>spena</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>921994</commentid>
    <comment_count>0</comment_count>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-08-28 07:15:25 -0700</bug_when>
    <thetext>The following tests are crashing on debug build after http://trac.webkit.org/changeset/154697.

accessibility/aria-checkbox-sends-notification-crash-log.txt
accessibility/multiselect-list-reports-active-option-crash-log.txt
accessibility/aria-invalid-crash-log.txt
accessibility/notification-listeners-crash-log.txt
accessibility/menu-list-sends-change-notification-crash-log.txt

Callstack is copied below.

#0  0x00007f65139aaec9 in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:342
#1  0x00000000004a14b1 in WTF::RefCountedBase::ref (this=0xe94740) at ../../Source/WTF/wtf/RefCounted.h:59
#2  0x00000000004ad6e1 in WTF::refIfNotNull&lt;AccessibilityNotificationHandler&gt; (ptr=0xe94740) at ../../Source/WTF/wtf/PassRefPtr.h:46
#3  0x00000000004ad4e7 in WTF::RefPtr&lt;AccessibilityNotificationHandler&gt;::RefPtr (this=0x7fff62b2a330, ptr=0xe94740) at ../../Source/WTF/wtf/RefPtr.h:43
#4  0x00000000004ad1a0 in WTF::RefPtr&lt;AccessibilityNotificationHandler&gt;::operator= (this=0xe8dd78, optr=0xe94740) at ../../Source/WTF/wtf/RefPtr.h:126
#5  0x00000000004ac370 in AccessibilityUIElement::addNotificationListener (this=0xe8dd70, functionCallback=0x7f64c009dbf0) at ../../Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:1038
#6  0x0000000000499742 in addNotificationListenerCallback (context=0x7f64b3c00108, function=0x7f64c005fbb0, thisObject=0x7f64c005fbf0, argumentCount=1, arguments=0x7fff62b2a400, exception=0x7fff62b2a498) at ../../Tools/DumpRenderTree/AccessibilityUIElement.cpp:1010
#7  0x00007f6513545921 in JSC::APICallbackFunction::call&lt;JSC::JSCallbackFunction&gt; (exec=0x7f64b3c00108) at ../../Source/JavaScriptCore/API/APICallbackFunction.h:59
#8  0x00007f6513800fd2 in JSC::LLInt::handleHostCall (execCallee=0x7f64b3c00108, pc=0xe18ec0, callee=..., kind=JSC::CodeForCall) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:949
#9  0x00007f6513804454 in JSC::LLInt::setUpCall (execCallee=0x7f64b3c00108, pc=0xe18ec0, kind=JSC::CodeForCall, calleeAsValue=..., callLinkInfo=0xdd0cd8) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:993
#10 0x00007f65138048f6 in JSC::LLInt::genericCall (exec=0x7f64b3c000a0, pc=0xe18ec0, kind=JSC::CodeForCall) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1054
#11 0x00007f65138013b2 in JSC::LLInt::llint_slow_path_call (exec=0x7f64b3c000a0, pc=0xe18ec0) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1060
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921996</commentid>
    <comment_count>1</comment_count>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-08-28 07:24:44 -0700</bug_when>
    <thetext>I found a additional problem at AccessibilityCallbacksAtk.cpp where the HashMap iterator is removed inside the for loop and causing a crash at ++it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921998</commentid>
    <comment_count>2</comment_count>
      <attachid>209884</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-08-28 07:26:52 -0700</bug_when>
    <thetext>Created attachment 209884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924334</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-04 02:42:24 -0700</bug_when>
    <thetext>*** Bug 120667 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924374</commentid>
    <comment_count>4</comment_count>
      <attachid>210448</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-04 05:45:51 -0700</bug_when>
    <thetext>Created attachment 210448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924436</commentid>
    <comment_count>5</comment_count>
      <attachid>210448</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-04 08:25:07 -0700</bug_when>
    <thetext>Comment on attachment 210448
Patch

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

Thanks for taking care of this. See my comments below...

&gt; Tools/ChangeLog:10
&gt; +        m_notificationHandler expected RefPtr.

Nit. You might probably use an extra line here to separate paragraphs

&gt; Tools/ChangeLog:14
&gt; +        * DumpRenderTree/atk/AccessibilityCallbacks.h: modified the global notification key from 0 to 1

Please use proper sentences starting with capital letters and ending with a period.

&gt; Tools/ChangeLog:16
&gt; +        (axObjectEventListener): Moved the call to the callback function out of the loop

Missing period. Same applies to the remaining bullet points from this entry.

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacks.h:35
&gt; -const PlatformUIElement GlobalNotificationKey = 0;
&gt; +const PlatformUIElement GlobalNotificationKey = reinterpret_cast&lt;PlatformUIElement&gt;(0x1);

This change seems unrelated to this fix, so please do not include it if it&apos;s not needed.

Besides, the whole thing of having this cryptic value in a header file to be used as a key in a hashmap present in the implementatoin file (hence private) it&apos;s a bit too obscure too me. Perhaps it would be nice to have make a patch in the future just for either find a better way to do it or at least document it?

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:136
&gt; +        AccessibilityNotificationHandler* notificationHandler = 0;
&gt;          for (HashMap&lt;PlatformUIElement, AccessibilityNotificationHandler*&gt;::iterator it = notificationHandlers.begin(); it != notificationHandlers.end(); ++it) {
&gt; -            if (it-&gt;key == accessible || it-&gt;key == GlobalNotificationKey) {
&gt; -                JSRetainPtr&lt;JSStringRef&gt; jsNotificationEventName(Adopt, JSStringCreateWithUTF8CString(reinterpret_cast&lt;const char*&gt;(notificationName.utf8().data())));
&gt; -                JSValueRef notificationNameArgument = JSValueMakeString(jsContext, jsNotificationEventName.get());
&gt; -                AccessibilityNotificationHandler* notificationHandler = it-&gt;value;
&gt; -                if (notificationHandler-&gt;platformElement()) {
&gt; -                    JSValueRef argument = notificationNameArgument;
&gt; -                    // Listener for one element just gets one argument, the notification name.
&gt; -                    JSObjectCallAsFunction(jsContext, notificationHandler-&gt;notificationFunctionCallback(), 0, 1, &amp;argument, 0);
&gt; -                } else {
&gt; -                    // A global listener gets the element and the notification name as arguments.
&gt; -                    JSValueRef arguments[2];
&gt; -                    arguments[0] = AccessibilityUIElement::makeJSAccessibilityUIElement(jsContext, AccessibilityUIElement(accessible));
&gt; -                    arguments[1] = notificationNameArgument;
&gt; -                    JSObjectCallAsFunction(jsContext, notificationHandler-&gt;notificationFunctionCallback(), 0, 2, arguments, 0);
&gt; -                }
&gt; +            if (it-&gt;key == accessible) {
&gt; +                notificationHandler = it-&gt;value;
&gt; +                break;
&gt;              }
&gt;          }

It looks to me like you could simplify this code by replacing it with a single line:

  AccessibilityNotificationHandler* notificationHandler = notificationHandlers.find(accessible);

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:138
&gt; +        JSRetainPtr&lt;JSStringRef&gt; jsNotificationEventName(Adopt, JSStringCreateWithUTF8CString(reinterpret_cast&lt;const char*&gt;(notificationName.utf8().data())));

CString::data() already returns a const char*, so I don&apos;t think you need this reinterpret_cast here.

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:140
&gt; +        if (notificationHandler)  {

It seems notificationHandler, if present, is only used inside this if branch.

Considering my previous comment, perhaps you could do just something like the following?

  if (AccessibilityNotificationHandler* notificationHandler = notificationHandlers.find(accessible)) {
     ...
  }

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:141
&gt; +            JSValueRef argument = notificationNameArgument;

You don&apos;t need argument variable, you can use notificationNameArgument directly below, giving you a one-line if branch (so you can avoid the {} too)

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:152
&gt; +        if (notificationHandlers.contains(GlobalNotificationKey)) {
&gt; +            // A global listener gets the element and the notification name as arguments.
&gt; +            JSValueRef arguments[2];
&gt; +            arguments[0] = AccessibilityUIElement::makeJSAccessibilityUIElement(jsContext, AccessibilityUIElement(accessible));
&gt; +            arguments[1] = notificationNameArgument;
&gt; +            JSObjectCallAsFunction(jsContext, notificationHandlers.find(GlobalNotificationKey)-&gt;value-&gt;notificationFunctionCallback(), 0, 2, arguments, 0);
&gt; +        }

I would probably do this without using the contains() method, by doing something like this:

  if (AccessibilityNotificationHandler* globalHandler = notificationHandlers.find(GlobalNotificationKey)) {
      // A global listener gets the element and the notification name as arguments.
      JSValueRef arguments[2];
      arguments[0] = AccessibilityUIElement::makeJSAccessibilityUIElement(jsContext, AccessibilityUIElement(accessible));
      arguments[1] = notificationNameArgument;
      JSObjectCallAsFunction(jsContext, globalHandler-&gt;value-&gt;notificationFunctionCallback(), 0, 2, arguments, 0);
  }

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:235
&gt; +    if (notificationHandlers.contains(notificationHandler-&gt;platformElement())) {
&gt; +        JSValueUnprotect(jsContext, notificationHandlers.find(notificationHandler-&gt;platformElement())-&gt;value-&gt;notificationFunctionCallback());
&gt; +        notificationHandlers.remove(notificationHandler-&gt;platformElement());

Following the idea of my previous comment, you can probably replace this two calls to contains() and find() with just one call to find() here as well.

Additionally, perhaps it would be interesting to check first that notificationHandler-&gt;platformElement() is not null?

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:265
&gt; +    HashMap&lt;PlatformUIElement, AccessibilityNotificationHandler*&gt;::iterator it;
&gt; +    for (it = notificationHandlers.begin(); it != notificationHandlers.end(); ++it) {
&gt;          if (it-&gt;value == notificationHandler) {
&gt;              JSValueUnprotect(jsContext, notificationHandler-&gt;notificationFunctionCallback());
&gt; -            notificationHandlers.remove(it);
&gt; +            break;
&gt;          }
&gt;      }
&gt; +
&gt; +    if (it.get())
&gt; +        notificationHandlers.remove(it);

It looks to me like the key thing here is the missing break and that, if you add that, you can keep the call to remove inside the loop and avoid doing it after it, leading to something more compact such as:

  for (HashMap&lt;PlatformUIElement, AccessibilityNotificationHandler*&gt;::iterator it = notificationHandlers.begin(); it != notificationHandlers.end(); ++it) {
     if (it-&gt;value == notificationHandler) {
        JSValueUnprotect(jsContext, notificationHandler-&gt;notificationFunctionCallback());
        notificationHandlers.remove(it);
        break;
     }
  }

&gt; LayoutTests/ChangeLog:15
&gt; +        - accessibility/multiselect-list-reports-active-option.html
&gt; +        - accessibility/notification-listeners.html
&gt; +        - accessibility/menu-list-sends-change-notification.html
&gt; +        - accessibility/aria-invalid.html
&gt; +        - accessibility/aria-checkbox-sends-notification.html

You don&apos;t have to explicitly list these tests here if you want. You can be more generic in this case :)

&gt; LayoutTests/ChangeLog:18
&gt; +        Skipped accessibility/notification-listeners.html both on Release and Debug builds since it is not
&gt; +        crashing on Debug anymore.

You are not actually skipping tests, just updating the expectations to expect a failure. It might be worth commenting here that this issue is being tracked in a separate bug (bug 120669)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924996</commentid>
    <comment_count>6</comment_count>
      <attachid>210448</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-05 06:37:49 -0700</bug_when>
    <thetext>Comment on attachment 210448
Patch

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

&gt;&gt; Tools/ChangeLog:10
&gt;&gt; +        m_notificationHandler expected RefPtr.
&gt; 
&gt; Nit. You might probably use an extra line here to separate paragraphs

Ok. I&apos;ll do.

&gt;&gt; Tools/ChangeLog:14
&gt;&gt; +        * DumpRenderTree/atk/AccessibilityCallbacks.h: modified the global notification key from 0 to 1
&gt; 
&gt; Please use proper sentences starting with capital letters and ending with a period.

Ok.

&gt;&gt; Tools/ChangeLog:16
&gt;&gt; +        (axObjectEventListener): Moved the call to the callback function out of the loop
&gt; 
&gt; Missing period. Same applies to the remaining bullet points from this entry.

Ok.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacks.h:35
&gt;&gt; +const PlatformUIElement GlobalNotificationKey = reinterpret_cast&lt;PlatformUIElement&gt;(0x1);
&gt; 
&gt; This change seems unrelated to this fix, so please do not include it if it&apos;s not needed.
&gt; 
&gt; Besides, the whole thing of having this cryptic value in a header file to be used as a key in a hashmap present in the implementatoin file (hence private) it&apos;s a bit too obscure too me. Perhaps it would be nice to have make a patch in the future just for either find a better way to do it or at least document it?

Before the changes for this review, I could move this fix to bug 70606, where the implementation of global notifications is being done. But the new patch will have a call to find() at axObjectEventListener() and the debug build will crash if the key is zero.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:136
&gt;&gt;          }
&gt; 
&gt; It looks to me like you could simplify this code by replacing it with a single line:
&gt; 
&gt;   AccessibilityNotificationHandler* notificationHandler = notificationHandlers.find(accessible);

Nice one. I&apos;ll do something similar. Just have to modify it a bit because find() returns an iterator.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:138
&gt;&gt; +        JSRetainPtr&lt;JSStringRef&gt; jsNotificationEventName(Adopt, JSStringCreateWithUTF8CString(reinterpret_cast&lt;const char*&gt;(notificationName.utf8().data())));
&gt; 
&gt; CString::data() already returns a const char*, so I don&apos;t think you need this reinterpret_cast here.

Ops. Sorry.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:140
&gt;&gt; +        if (notificationHandler)  {
&gt; 
&gt; It seems notificationHandler, if present, is only used inside this if branch.
&gt; 
&gt; Considering my previous comment, perhaps you could do just something like the following?
&gt; 
&gt;   if (AccessibilityNotificationHandler* notificationHandler = notificationHandlers.find(accessible)) {
&gt;      ...
&gt;   }

Ok I&apos;ll simplify it.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:141
&gt;&gt; +            JSValueRef argument = notificationNameArgument;
&gt; 
&gt; You don&apos;t need argument variable, you can use notificationNameArgument directly below, giving you a one-line if branch (so you can avoid the {} too)

Good point. I&apos;ll do it.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:152
&gt;&gt; +        }
&gt; 
&gt; I would probably do this without using the contains() method, by doing something like this:
&gt; 
&gt;   if (AccessibilityNotificationHandler* globalHandler = notificationHandlers.find(GlobalNotificationKey)) {
&gt;       // A global listener gets the element and the notification name as arguments.
&gt;       JSValueRef arguments[2];
&gt;       arguments[0] = AccessibilityUIElement::makeJSAccessibilityUIElement(jsContext, AccessibilityUIElement(accessible));
&gt;       arguments[1] = notificationNameArgument;
&gt;       JSObjectCallAsFunction(jsContext, globalHandler-&gt;value-&gt;notificationFunctionCallback(), 0, 2, arguments, 0);
&gt;   }

Nice one. I&apos;ll do something similar, just because find() returns an iterator.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:235
&gt;&gt; +        notificationHandlers.remove(notificationHandler-&gt;platformElement());
&gt; 
&gt; Following the idea of my previous comment, you can probably replace this two calls to contains() and find() with just one call to find() here as well.
&gt; 
&gt; Additionally, perhaps it would be interesting to check first that notificationHandler-&gt;platformElement() is not null?

Sure. I&apos;ll do it.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:265
&gt;&gt; +        notificationHandlers.remove(it);
&gt; 
&gt; It looks to me like the key thing here is the missing break and that, if you add that, you can keep the call to remove inside the loop and avoid doing it after it, leading to something more compact such as:
&gt; 
&gt;   for (HashMap&lt;PlatformUIElement, AccessibilityNotificationHandler*&gt;::iterator it = notificationHandlers.begin(); it != notificationHandlers.end(); ++it) {
&gt;      if (it-&gt;value == notificationHandler) {
&gt;         JSValueUnprotect(jsContext, notificationHandler-&gt;notificationFunctionCallback());
&gt;         notificationHandlers.remove(it);
&gt;         break;
&gt;      }
&gt;   }

Ok. I think we can use find() here as well. I&apos;ll give it a try.

&gt;&gt; LayoutTests/ChangeLog:15
&gt;&gt; +        - accessibility/aria-checkbox-sends-notification.html
&gt; 
&gt; You don&apos;t have to explicitly list these tests here if you want. You can be more generic in this case :)

Cool ok.

&gt;&gt; LayoutTests/ChangeLog:18
&gt;&gt; +        crashing on Debug anymore.
&gt; 
&gt; You are not actually skipping tests, just updating the expectations to expect a failure. It might be worth commenting here that this issue is being tracked in a separate bug (bug 120669)

Ok. I will fix the comment and will add the reference to the other bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924997</commentid>
    <comment_count>7</comment_count>
      <attachid>210609</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-05 06:38:11 -0700</bug_when>
    <thetext>Created attachment 210609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925071</commentid>
    <comment_count>8</comment_count>
      <attachid>210626</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-05 09:16:41 -0700</bug_when>
    <thetext>Created attachment 210626
Patch

Just realised the code can be more readable and concise by moving the global notification handler from the HashTable to a separate pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925495</commentid>
    <comment_count>9</comment_count>
      <attachid>210626</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-06 03:49:26 -0700</bug_when>
    <thetext>Comment on attachment 210626
Patch

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

Thanks Denis for working on this. I think the patch is better and cleaner now. Just setting the r- because of the small issues found and pointed below

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacks.h:-36
&gt; -const PlatformUIElement GlobalNotificationKey = 0;
&gt; -

I love this change :)

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:51
&gt; +typedef HashMap&lt;PlatformUIElement, AccessibilityNotificationHandler*&gt; NotificationHandlers;

&apos;NotificationHandlers&apos; does not seem to me like a good name for a type, it looks more like a variable name to me.

What about NotificationHandlersMap?

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:138
&gt; +            JSObjectCallAsFunction(jsContext, elementNotificationHandler.get()-&gt;value-&gt;notificationFunctionCallback(), 0, 1, &amp;notificationNameArgument, 0);

HashTableIteratorAdapter has the &apos;-&gt;&apos; operator overloaded to behave as get(), so you can&apos;t replace &quot;.get()-&gt;&quot; here for just &quot;-&gt;&quot;

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:232
&gt; +            JSValueUnprotect(jsContext, currentNotificationHandler.get()-&gt;value-&gt;notificationFunctionCallback());
&gt; +            notificationHandlers.remove(currentNotificationHandler.get()-&gt;value-&gt;platformElement());

Replace &quot;.get()-&gt;&quot; here for just &quot;-&gt;&quot; here as well

Additionally, you might want to check that currentNotificationHandler-&gt;value-&gt;platformElement() is valid before using it?

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:261
&gt; +        NotificationHandlers::iterator removeNotificationHandler = notificationHandlers.find(notificationHandler-&gt;platformElement());

Same concern about notificationHandler-&gt;platformElement() here. It might be interesting to check that it&apos;s a valid value before using it.

&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:263
&gt; +            JSValueUnprotect(jsContext, removeNotificationHandler.get()-&gt;value-&gt;notificationFunctionCallback());

s/&apos;.get()-&gt;&apos;/&apos;-&gt;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925596</commentid>
    <comment_count>10</comment_count>
      <attachid>210626</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-06 08:04:22 -0700</bug_when>
    <thetext>Comment on attachment 210626
Patch

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

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:51
&gt;&gt; +typedef HashMap&lt;PlatformUIElement, AccessibilityNotificationHandler*&gt; NotificationHandlers;
&gt; 
&gt; &apos;NotificationHandlers&apos; does not seem to me like a good name for a type, it looks more like a variable name to me.
&gt; 
&gt; What about NotificationHandlersMap?

Agree, the name doesn&apos;t help much. I&apos;ll change it.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:138
&gt;&gt; +            JSObjectCallAsFunction(jsContext, elementNotificationHandler.get()-&gt;value-&gt;notificationFunctionCallback(), 0, 1, &amp;notificationNameArgument, 0);
&gt; 
&gt; HashTableIteratorAdapter has the &apos;-&gt;&apos; operator overloaded to behave as get(), so you can&apos;t replace &quot;.get()-&gt;&quot; here for just &quot;-&gt;&quot;

Ok nice one.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:232
&gt;&gt; +            notificationHandlers.remove(currentNotificationHandler.get()-&gt;value-&gt;platformElement());
&gt; 
&gt; Replace &quot;.get()-&gt;&quot; here for just &quot;-&gt;&quot; here as well
&gt; 
&gt; Additionally, you might want to check that currentNotificationHandler-&gt;value-&gt;platformElement() is valid before using it?

Ops ok. I will replace get() with -&gt;.
In case of checking platformElement() before using it, I think we can add an assertion because if it is zero, then there is problem in the find() implementation.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:261
&gt;&gt; +        NotificationHandlers::iterator removeNotificationHandler = notificationHandlers.find(notificationHandler-&gt;platformElement());
&gt; 
&gt; Same concern about notificationHandler-&gt;platformElement() here. It might be interesting to check that it&apos;s a valid value before using it.

Ok. I&apos;ll add a check here.

&gt;&gt; Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:263
&gt;&gt; +            JSValueUnprotect(jsContext, removeNotificationHandler.get()-&gt;value-&gt;notificationFunctionCallback());
&gt; 
&gt; s/&apos;.get()-&gt;&apos;/&apos;-&gt;&apos;

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925597</commentid>
    <comment_count>11</comment_count>
      <attachid>210757</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-06 08:06:36 -0700</bug_when>
    <thetext>Created attachment 210757
Patch

Modified the patch according to review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925609</commentid>
    <comment_count>12</comment_count>
      <attachid>210757</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-06 09:00:09 -0700</bug_when>
    <thetext>Comment on attachment 210757
Patch

Thanks Denis. It looks good to me now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925625</commentid>
    <comment_count>13</comment_count>
      <attachid>210757</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-06 09:31:31 -0700</bug_when>
    <thetext>Comment on attachment 210757
Patch

Clearing flags on attachment: 210757

Committed r155192: &lt;http://trac.webkit.org/changeset/155192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925626</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-06 09:31:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209884</attachid>
            <date>2013-08-28 07:26:52 -0700</date>
            <delta_ts>2013-09-04 05:45:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120416-20130828152710.patch</filename>
            <type>text/plain</type>
            <size>7289</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0Njk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjg0ZDk5ZjNmNTE0ZWM1OTk4MmFhMTczZDA0ZDc5Yzc5
ODBkOGQzYS4uYTdkYjU3NTRjMTdjOTM3ZWMxMGIwNGI3MjE2Yzk2Y2QzOGEyNTY1MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDEzLTA4LTI4ICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoKSBjcmFzaGVzIG9uIGRlYnVnIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MTYKKworICAgICAgICBGaXhlZCBjcmFzaGVz
IHdoZW4gcnVubmluZyBkZWJ1ZyBEUlQuIEZpeGVkIGxvb3BzIGF0IEFjY2Vzc2liaWxpdHlDYWxs
YmFja0F0ay5jcHAgd2hlcmUgdGhlIEhhc2hNYXAKKyAgICAgICAgaXRlcmF0b3Igd2FzIHJlbW92
ZWQgaW5zaWRlIGEgbG9vcC4gRml4ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKSB3aGVyZQorICAgICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgZXhw
ZWN0ZWQgUmVmUHRyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3Bw
OgorICAgICAgICAoYXhPYmplY3RFdmVudExpc3RlbmVyKTogTW92ZWQgdGhlIGNhbGwgdG8gdGhl
IGNhbGxiYWNrIGZ1bmN0aW9uIG91dCBvZiB0aGUgbG9vcAorICAgICAgICAocmVtb3ZlQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIpOiBNb3ZlZCB0aGUgaGFuZGxlciByZW1vdmFsIG91
dCBvZiB0aGUgbG9vcAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXI6OmNyZWF0ZSk6IEFkZGVkIHN0YXRpYyBmdW5jdGlvbiB0byBjcmVhdGUKKyAg
ICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6IEFzc2lnbmVkIG1f
bm90aWZpY2F0aW9uSGFuZGxlciB3aXRoCisgICAgICAgIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyOjpjcmVhdGUoKQorCiAyMDEzLTA4LTI3ICBEZW5pcyBOb21peWFtYSAgPGQubm9t
aXlhbWFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS10gTWlzc2luZyBEUlQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tz
QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tz
QXRrLmNwcAppbmRleCBlODlmZDM4OGNkMjc4NzE4M2UyN2RiYjk1NGQzMjQ0MzA3MjcwMDJjLi4y
M2Y0MmU1YThhNWQ1ZWI2MTczMzlhOTliNDdhNmM2OGFlZjQ0ZDMxIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCkBA
IC0xMjQsMjIgKzEyNCwyNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gYXhPYmplY3RFdmVudExpc3RlbmVy
KEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2lnbmFsSGludCwgZ3VpbnQgbgogICAgICAgICByZXR1
cm4gVFJVRTsKIAogICAgIGlmIChub3RpZmljYXRpb25OYW1lLmxlbmd0aCgpKSB7CisgICAgICAg
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBub3RpZmljYXRpb25IYW5kbGVyID0g
MDsKICAgICAgICAgZm9yIChIYXNoTWFwPFBsYXRmb3JtVUlFbGVtZW50LCBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlcio+OjppdGVyYXRvciBpdCA9IG5vdGlmaWNhdGlvbkhhbmRsZXJz
LmJlZ2luKCk7IGl0ICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpOyArK2l0KSB7CiAgICAg
ICAgICAgICBpZiAoaXQtPmtleSA9PSBhY2Nlc3NpYmxlIHx8IGl0LT5rZXkgPT0gR2xvYmFsTm90
aWZpY2F0aW9uS2V5KSB7Ci0gICAgICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGpzTm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihub3RpZmljYXRpb25OYW1lLnV0Zjgo
KS5kYXRhKCkpKSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBub3RpZmljYXRpb25OYW1l
QXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhqc0NvbnRleHQsIGpzTm90aWZpY2F0aW9uRXZl
bnROYW1lLmdldCgpKTsKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlciogbm90aWZpY2F0aW9uSGFuZGxlciA9IGl0LT52YWx1ZTsKLSAgICAgICAgICAgICAg
ICBpZiAobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVu
dDsKLSAgICAgICAgICAgICAgICAgICAgLy8gTGlzdGVuZXIgZm9yIG9uZSBlbGVtZW50IGp1c3Qg
Z2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24gbmFtZS4KLSAgICAgICAgICAgICAg
ICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0NvbnRleHQsIG5vdGlmaWNhdGlvbkhhbmRs
ZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSwgMCwgMSwgJmFyZ3VtZW50LCAwKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBBIGdsb2Jh
bCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9uIG5hbWUgYXMg
YXJndW1lbnRzLgotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1syXTsK
LSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzWzBdID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChqc0NvbnRleHQsIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoYWNjZXNzaWJsZSkpOwotICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbMV0g
PSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRp
b25GdW5jdGlvbkNhbGxiYWNrKCksIDAsIDIsIGFyZ3VtZW50cywgMCk7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXIgPSBpdC0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobm90aWZpY2F0aW9uSGFuZGxlcikgIHsKKyAgICAgICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbkV2ZW50TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obm90aWZpY2F0aW9u
TmFtZS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZiBub3RpZmljYXRp
b25OYW1lQXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhqc0NvbnRleHQsIGpzTm90aWZpY2F0
aW9uRXZlbnROYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChub3RpZmljYXRpb25IYW5kbGVy
LT5wbGF0Zm9ybUVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1l
bnQgPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7CisgICAgICAgICAgICAgICAgLy8gTGlzdGVu
ZXIgZm9yIG9uZSBlbGVtZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRp
b24gbmFtZS4KKyAgICAgICAgICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGpzQ29udGV4
dCwgbm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpLCAw
LCAxLCAmYXJndW1lbnQsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAvLyBBIGdsb2JhbCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0
aW9uIG5hbWUgYXMgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1l
bnRzWzJdOworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoanNDb250ZXh0LCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KGFjY2Vzc2libGUpKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbMV0g
PSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7CisgICAgICAgICAgICAgICAgSlNPYmplY3RDYWxs
QXNGdW5jdGlvbihqc0NvbnRleHQsIG5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1
bmN0aW9uQ2FsbGJhY2soKSwgMCwgMiwgYXJndW1lbnRzLCAwKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTI1NCwxMiArMjU5LDE2IEBAIHZvaWQgcmVtb3ZlQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIq
IG5vCiAgICAgaWYgKCFqc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoSGFz
aE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIq
Pjo6aXRlcmF0b3IgaXQgPSBub3RpZmljYXRpb25IYW5kbGVycy5iZWdpbigpOyBpdCAhPSBub3Rp
ZmljYXRpb25IYW5kbGVycy5lbmQoKTsgKytpdCkgeworICAgIEhhc2hNYXA8UGxhdGZvcm1VSUVs
ZW1lbnQsIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKj46Oml0ZXJhdG9yIGl0Owor
ICAgIGZvciAoaXQgPSBub3RpZmljYXRpb25IYW5kbGVycy5iZWdpbigpOyBpdCAhPSBub3RpZmlj
YXRpb25IYW5kbGVycy5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlID09IG5v
dGlmaWNhdGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250
ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkp
OwotICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGl0KTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKGl0LmdldCgpKQorICAgICAg
ICBub3RpZmljYXRpb25IYW5kbGVycy5yZW1vdmUoaXQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmgKaW5kZXggMzUwMjgzM2U0NDQyZGY2Nzk5NmU3YmRjNmUyOTNmMTgx
N2U4OTI4NS4uYjY1M2U4NmY0OGEyZGVjNTgzNDNhMzY1MGY2Zjg5YWNmYjJiMzE5NCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyQXRrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmgKQEAgLTIyLDEwICsyMiwxNSBAQAogCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxhdGsvYXRrLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBj
bGFzcyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiB7CiBwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKCkpOworICAgIH0KICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cih2b2lkKTsKICAgICB+QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCmluZGV4IGU3ZGRiMzkzYjU5ODgzMjQwYTNkOGFmMDk5YWM1ZDljY2U0MTI5MzkuLjM3
Mjk0NWJkNWQ0MTk1NTJhMGFiMjEzY2UzNDczOWU2NDFiMmQzOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAg
LTEwMzUsNyArMTAzNSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIoSlNPYmplY3RSZWYgZnVuY3Rpb25DYWxsYmFjCiAgICAgaWYgKG1fbm90
aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9ub3RpZmlj
YXRpb25IYW5kbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7Cisg
ICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXI6OmNyZWF0ZSgpOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+c2V0UGxhdGZvcm1FbGVt
ZW50KHBsYXRmb3JtVUlFbGVtZW50KCkpOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+c2V0
Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhmdW5jdGlvbkNhbGxiYWNrKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210448</attachid>
            <date>2013-09-04 05:45:51 -0700</date>
            <delta_ts>2013-09-05 06:38:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120416-20130904134603.patch</filename>
            <type>text/plain</type>
            <size>12941</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MDI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjEyYjk3YjNiZTY1Yjk5MGNjNDg1YjEyNzhmNjQ5ZWNj
ZDdjNzdjMy4uZDhkMGE0ODZhYjRkZDVlM2FmNjU0OTU4OTU3YzhlYzY3ODkxNWVkZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDEzLTA5LTA0ICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoKSBjcmFzaGVzIG9uIGRlYnVnIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBjcmFzaGVzIHdoZW4gcnVubmluZyBkZWJ1
ZyBEUlQuIEZpeGVkIGxvb3BzIGF0IEFjY2Vzc2liaWxpdHlDYWxsYmFja0F0ay5jcHAgd2hlcmUg
dGhlIEhhc2hNYXAKKyAgICAgICAgaXRlcmF0b3Igd2FzIHJlbW92ZWQgaW5zaWRlIGEgbG9vcC4g
Rml4ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoKSB3
aGVyZQorICAgICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgZXhwZWN0ZWQgUmVmUHRyLgorICAg
ICAgICBUaGUgZ2xvYmFsIG5vdGlmaWNhdGlvbiBrZXkgZm9yIHRoZSBIYXNoTWFwIHRoYXQgc3Rv
cmVzIGhhbmRsZXJzIGhhZCB0byBiZSBjaGFuZ2VkIGZyb20gemVybworICAgICAgICB0byBvbmUg
YmVjYXVzZSBIYXNoTWFwIGRvZXMgbm90IGFjY2VwdCB6ZXJvIGFzIGEga2V5LgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3MuaDogbW9kaWZpZWQg
dGhlIGdsb2JhbCBub3RpZmljYXRpb24ga2V5IGZyb20gMCB0byAxCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwOgorICAgICAgICAoYXhP
YmplY3RFdmVudExpc3RlbmVyKTogTW92ZWQgdGhlIGNhbGwgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0
aW9uIG91dCBvZiB0aGUgbG9vcAorICAgICAgICAoYWRkQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIpOiBSZW1vdmVkIHRoZSBjb25kaXRpb24gZm9yIGdsb2JhbCBub3RpZmljYXRpb24g
YXMgaXQgaGFzIG5vIGRpZmZlcmVuY2UKKyAgICAgICAgZnJvbSB0aGUgbm90aWZpY2F0aW9uIGZv
ciBhIHNwZWNpZmljIGVsZW1lbnQKKyAgICAgICAgKHJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyKTogTW92ZWQgdGhlIGhhbmRsZXIgcmVtb3ZhbCBvdXQgb2YgdGhlIGxvb3AK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXJBdGsuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpj
cmVhdGUpOiBBZGRlZCBzdGF0aWMgZnVuY3Rpb24gdG8gY3JlYXRlCisgICAgICAgIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBBc3NpZ25lZCBtX25vdGlmaWNhdGlvbkhh
bmRsZXIgd2l0aAorICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6Y3Jl
YXRlKCkKKwogMjAxMy0wOS0wNCAgQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgICA8YW5kcmUubWFn
YWxoYWVzQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBbR1N0cmVhbWVyXSBjYW5ub3QgcGxh
eSBsaXZlIHN0cmVhbXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5Q2FsbGJhY2tzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJp
bGl0eUNhbGxiYWNrcy5oCmluZGV4IGNjZWU3ZTQxZGRmOTQ1ZTBhMmNlZDA2MTQyNGJlNjBkYjdm
M2MzYTQuLjA1MzgxZjNkMTgxNjk4MDA4NDM3ZWE5ZjhhZDg2MzRkODdjZjc0Y2UgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3MuaApAQCAt
MzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
QXRrLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogCi1jb25zdCBQbGF0
Zm9ybVVJRWxlbWVudCBHbG9iYWxOb3RpZmljYXRpb25LZXkgPSAwOworY29uc3QgUGxhdGZvcm1V
SUVsZW1lbnQgR2xvYmFsTm90aWZpY2F0aW9uS2V5ID0gcmVpbnRlcnByZXRfY2FzdDxQbGF0Zm9y
bVVJRWxlbWVudD4oMHgxKTsKIAogdm9pZCBjb25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygp
Owogdm9pZCBkaXNjb25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCmlu
ZGV4IDM5ZTBiZDQwNGEyNjBjYmM2OWZkZDNjZjc3YTljNTc1OWMxOTEyNGMuLjcwNWQ4YTczMjZl
NDA5YjA1ZjUyMmYxOGMwN2VjM2JiMmUyNmRmZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAKQEAgLTEyNywyNCAr
MTI3LDI5IEBAIHN0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbElu
dm9jYXRpb25IaW50ICpzaWduYWxIaW50LCBndWludCBuCiAgICAgICAgIHJldHVybiBUUlVFOwog
CiAgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUubGVuZ3RoKCkpIHsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqIG5vdGlmaWNhdGlvbkhhbmRsZXIgPSAwOwogICAgICAg
ICBmb3IgKEhhc2hNYXA8UGxhdGZvcm1VSUVsZW1lbnQsIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKj46Oml0ZXJhdG9yIGl0ID0gbm90aWZpY2F0aW9uSGFuZGxlcnMuYmVnaW4oKTsg
aXQgIT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIGlm
IChpdC0+a2V5ID09IGFjY2Vzc2libGUgfHwgaXQtPmtleSA9PSBHbG9iYWxOb3RpZmljYXRpb25L
ZXkpIHsKLSAgICAgICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ganNOb3RpZmlj
YXRpb25FdmVudE5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5vdGlmaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSkp
KTsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudCA9
IEpTVmFsdWVNYWtlU3RyaW5nKGpzQ29udGV4dCwganNOb3RpZmljYXRpb25FdmVudE5hbWUuZ2V0
KCkpOwotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBu
b3RpZmljYXRpb25IYW5kbGVyID0gaXQtPnZhbHVlOwotICAgICAgICAgICAgICAgIGlmIChub3Rp
ZmljYXRpb25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gbm90aWZpY2F0aW9uTmFtZUFyZ3VtZW50OwotICAgICAg
ICAgICAgICAgICAgICAvLyBMaXN0ZW5lciBmb3Igb25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBh
cmd1bWVudCwgdGhlIG5vdGlmaWNhdGlvbiBuYW1lLgotICAgICAgICAgICAgICAgICAgICBKU09i
amVjdENhbGxBc0Z1bmN0aW9uKGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZp
Y2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpLCAwLCAxLCAmYXJndW1lbnQsIDApOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVy
IGdldHMgdGhlIGVsZW1lbnQgYW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMu
Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdOwotICAgICAgICAg
ICAgICAgICAgICBhcmd1bWVudHNbMF0gPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KGpzQ29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudChh
Y2Nlc3NpYmxlKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1sxXSA9IG5vdGlmaWNh
dGlvbk5hbWVBcmd1bWVudDsKLSAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5j
dGlvbihqc0NvbnRleHQsIG5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9u
Q2FsbGJhY2soKSwgMCwgMiwgYXJndW1lbnRzLCAwKTsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoaXQtPmtleSA9PSBhY2Nlc3NpYmxlKSB7CisgICAgICAgICAgICAgICAgbm90
aWZpY2F0aW9uSGFuZGxlciA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBqc05vdGlmaWNhdGlvbkV2ZW50TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obm90aWZpY2F0aW9uTmFtZS51dGY4
KCkuZGF0YSgpKSkpOworICAgICAgICBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVu
dCA9IEpTVmFsdWVNYWtlU3RyaW5nKGpzQ29udGV4dCwganNOb3RpZmljYXRpb25FdmVudE5hbWUu
Z2V0KCkpOworICAgICAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlcikgIHsKKyAgICAgICAgICAg
IEpTVmFsdWVSZWYgYXJndW1lbnQgPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7CisgICAgICAg
ICAgICAvLyBMaXN0ZW5lciBmb3Igb25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBhcmd1bWVudCwg
dGhlIG5vdGlmaWNhdGlvbiBuYW1lLgorICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlv
bihqc0NvbnRleHQsIG5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2Fs
bGJhY2soKSwgMCwgMSwgJmFyZ3VtZW50LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChu
b3RpZmljYXRpb25IYW5kbGVycy5jb250YWlucyhHbG9iYWxOb3RpZmljYXRpb25LZXkpKSB7Cisg
ICAgICAgICAgICAvLyBBIGdsb2JhbCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50IGFuZCB0aGUg
bm90aWZpY2F0aW9uIG5hbWUgYXMgYXJndW1lbnRzLgorICAgICAgICAgICAgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbMl07CisgICAgICAgICAgICBhcmd1bWVudHNbMF0gPSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGpzQ29udGV4dCwgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudChhY2Nlc3NpYmxlKSk7CisgICAgICAgICAgICBhcmd1bWVudHNbMV0gPSBu
b3RpZmljYXRpb25OYW1lQXJndW1lbnQ7CisgICAgICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0
aW9uKGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlcnMuZmluZChHbG9iYWxOb3RpZmljYXRp
b25LZXkpLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpLCAwLCAyLCBhcmd1
bWVudHMsIDApOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIFRSVUU7CkBAIC0yMjUs
MjEgKzIzMCwxMiBAQCB2b2lkIGFkZEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBub3RpZgogICAgIGlmICghanNDb250ZXh0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBKU1ZhbHVlUHJvdGVjdChqc0NvbnRleHQsIG5vdGlm
aWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7Ci0gICAgLy8g
Q2hlY2sgaWYgdGhpcyBub3RpZmljYXRpb24gaGFuZGxlciBpcyByZWxhdGVkIHRvIGEgc3BlY2lm
aWMgZWxlbWVudC4KLSAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50
KCkpIHsKLSAgICAgICAgaWYgKG5vdGlmaWNhdGlvbkhhbmRsZXJzLmNvbnRhaW5zKG5vdGlmaWNh
dGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKSkgewotICAgICAgICAgICAgSlNWYWx1ZVVu
cHJvdGVjdChqc0NvbnRleHQsIG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobm90aWZpY2F0aW9u
SGFuZGxlci0+cGxhdGZvcm1FbGVtZW50KCkpLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjaygpKTsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShub3Rp
ZmljYXRpb25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1lbnQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
bm90aWZpY2F0aW9uSGFuZGxlcnMuYWRkKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxl
bWVudCgpLCBub3RpZmljYXRpb25IYW5kbGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
bm90aWZpY2F0aW9uSGFuZGxlcnMuY29udGFpbnMoR2xvYmFsTm90aWZpY2F0aW9uS2V5KSkgewot
ICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChqc0NvbnRleHQsIG5vdGlmaWNhdGlvbkhhbmRs
ZXJzLmZpbmQoR2xvYmFsTm90aWZpY2F0aW9uS2V5KS0+dmFsdWUtPm5vdGlmaWNhdGlvbkZ1bmN0
aW9uQ2FsbGJhY2soKSk7Ci0gICAgICAgICAgICBub3RpZmljYXRpb25IYW5kbGVycy5yZW1vdmUo
R2xvYmFsTm90aWZpY2F0aW9uS2V5KTsKLSAgICAgICAgfQotICAgICAgICBub3RpZmljYXRpb25I
YW5kbGVycy5hZGQoR2xvYmFsTm90aWZpY2F0aW9uS2V5LCBub3RpZmljYXRpb25IYW5kbGVyKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlcnMuY29udGFpbnMobm90aWZpY2F0aW9uSGFuZGxl
ci0+cGxhdGZvcm1FbGVtZW50KCkpKSB7CisgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250
ZXh0LCBub3RpZmljYXRpb25IYW5kbGVycy5maW5kKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRm
b3JtRWxlbWVudCgpKS0+dmFsdWUtPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7Cisg
ICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShub3RpZmljYXRpb25IYW5kbGVyLT5w
bGF0Zm9ybUVsZW1lbnQoKSk7CiAgICAgfQorICAgIEpTVmFsdWVQcm90ZWN0KGpzQ29udGV4dCwg
bm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAg
ICBub3RpZmljYXRpb25IYW5kbGVycy5hZGQobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1F
bGVtZW50KCksIG5vdGlmaWNhdGlvbkhhbmRsZXIpOwogCiAgICAgY29ubmVjdEFjY2Vzc2liaWxp
dHlDYWxsYmFja3MoKTsKIH0KQEAgLTI1NywxMiArMjUzLDE2IEBAIHZvaWQgcmVtb3ZlQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIqIG5vCiAgICAgaWYgKCFqc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAo
SGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIqPjo6aXRlcmF0b3IgaXQgPSBub3RpZmljYXRpb25IYW5kbGVycy5iZWdpbigpOyBpdCAhPSBu
b3RpZmljYXRpb25IYW5kbGVycy5lbmQoKTsgKytpdCkgeworICAgIEhhc2hNYXA8UGxhdGZvcm1V
SUVsZW1lbnQsIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKj46Oml0ZXJhdG9yIGl0
OworICAgIGZvciAoaXQgPSBub3RpZmljYXRpb25IYW5kbGVycy5iZWdpbigpOyBpdCAhPSBub3Rp
ZmljYXRpb25IYW5kbGVycy5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlID09
IG5vdGlmaWNhdGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanND
b250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNr
KCkpOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGl0KTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKGl0LmdldCgpKQorICAg
ICAgICBub3RpZmljYXRpb25IYW5kbGVycy5yZW1vdmUoaXQpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlckF0ay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmgKaW5kZXggMzUwMjgzM2U0NDQyZGY2Nzk5NmU3YmRjNmUyOTNm
MTgxN2U4OTI4NS4uYjY1M2U4NmY0OGEyZGVjNTgzNDNhMzY1MGY2Zjg5YWNmYjJiMzE5NCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyQXRrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgKQEAgLTIyLDEwICsyMiwxNSBAQAogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxhdGsvYXRrLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiBjbGFzcyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiB7CiBwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IGNyZWF0ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyKCkpOworICAgIH0KICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcih2b2lkKTsKICAgICB+QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCmluZGV4IDQxYmM5Njk3ZDM1NWY2NTFiZjA2MTE1NzBiMDg1NDI4ZjAyMWYzZTQu
LjFiYjc4ZTQ5NDM5M2M3MTBiM2U2OTJkOGM4ZjIwMGIxY2FiOTcxMjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAK
QEAgLTEwNDgsNyArMTA0OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90
aWZpY2F0aW9uTGlzdGVuZXIoSlNPYmplY3RSZWYgZnVuY3Rpb25DYWxsYmFjCiAgICAgaWYgKG1f
bm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9ub3Rp
ZmljYXRpb25IYW5kbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7
CisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXI6OmNyZWF0ZSgpOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+c2V0UGxhdGZvcm1F
bGVtZW50KHBsYXRmb3JtVUlFbGVtZW50KCkpOwogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+
c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhmdW5jdGlvbkNhbGxiYWNrKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGRlYzRiODQxM2U4OWNiZDUzMGUzODMwNTI5NjM5NzRmODg4MDhiY2QuLjgwOGViNGQ3MDFh
ODBlYWQ2ODg5YzViYjUwNzhkNjgyMTQ0MmI1MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
My0wOS0wNCAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtHVEtdIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVy
KCkgY3Jhc2hlcyBvbiBkZWJ1ZyBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4ZWQgY3Jhc2hlcyB3aGVuIHJ1bm5pbmcgZGVidWcgRFJUIG9u
IHRlc3RzIHRoYXQgcmVxdWlyZSBhbiBhMTF5IG5vdGlmaWNhdGlvbiBoYW5kbGVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcHBlZCB0aGUgZm9sbG93
aW5nIHRlc3RzIHRoYXQgd2VyZSBjcmFzaGluZyBiZWZvcmUgdGhpcyBmaXg6CisgICAgICAgIC0g
YWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1s
CisgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwKKyAg
ICAgICAgLSBhY2Nlc3NpYmlsaXR5L21lbnUtbGlzdC1zZW5kcy1jaGFuZ2Utbm90aWZpY2F0aW9u
Lmh0bWwKKyAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sCisgICAgICAg
IC0gYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisK
KyAgICAgICAgU2tpcHBlZCBhY2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRt
bCBib3RoIG9uIFJlbGVhc2UgYW5kIERlYnVnIGJ1aWxkcyBzaW5jZSBpdCBpcyBub3QKKyAgICAg
ICAgY3Jhc2hpbmcgb24gRGVidWcgYW55bW9yZS4KKwogMjAxMy0wOS0wNCAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVu
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2Mzgz
OWY2M2FhMjJmMGQzZjE5NTllYjk4ZDE3MTI4NmIzOWViYjg4Li5jYzA0OTVhY2U2MzI1Y2ZiNTQ3
ZmFkODUwYWU5NDJkZmJmODU3MGMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNDkzLDEyICs0OTMsNiBAQCB3ZWJraXQub3JnL2IvMTE5MjU1IFsgRGVi
dWcgXSBmYXN0L3dvcmtlcnMvc3RyZXNzLWpzLWV4ZWN1dGlvbi5odG1sIFsgQ3Jhc2ggUGFzcwog
CiB3ZWJraXQub3JnL2IvMTIwMjAwIFsgRGVidWcgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWFsbG93YWxsLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAot
d2Via2l0Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1s
aXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1sIFsgQ3Jhc2ggXQotd2Via2l0Lm9yZy9iLzEy
MDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwg
WyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L21l
bnUtbGlzdC1zZW5kcy1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQu
b3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIFsg
Q3Jhc2ggXQotd2Via2l0Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9hcmlh
LWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgQ3Jhc2ggXQotCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgQ3Jhc2hpbmcgdGVzdHMKICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xNDU2LDcgKzE0NTAsNyBAQCB3ZWJraXQub3Jn
L2IvMTIwMTA1IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0LWZyYW1lcy1nb2JhY2sxLXVuY2Fj
aGVkLmh0bWwgWyBGYQogCiB3ZWJraXQub3JnL2IvMTIwMjAzIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3MtZnJhbWUtYWNjZXNzLWdldE93blByb3BlcnR5RGVzY3JpcHRvci5odG1sIFsgRmFpbHVy
ZSBdCiAKLXdlYmtpdC5vcmcvYi8xMjA2NjkgWyBSZWxlYXNlIF0gYWNjZXNzaWJpbGl0eS9ub3Rp
ZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMjA2Njkg
YWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgWyBGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzEyMDY3MCBhY2Nlc3NpYmlsaXR5L2xpc3RzLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xMjA2NzAgYWNjZXNzaWJpbGl0eS9wbHVnaW4uaHRtbCBbIEZhaWx1cmUg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210609</attachid>
            <date>2013-09-05 06:38:11 -0700</date>
            <delta_ts>2013-09-05 09:16:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120416-20130905143822.patch</filename>
            <type>text/plain</type>
            <size>14423</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTA5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjYzNDFhZGExMmZjZDhjYmVjMGNmYjEwYjhkOWU1NzQx
ZTkyODU1OS4uNzNhZTAxMmRiMTU5NGI2OTQwYzI1NGUxZDAyMDRmZWZhNjhiN2MwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEzLTA5LTA1ICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoKSBjcmFzaGVzIG9uIGRlYnVnIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBjcmFzaGVzIHdoZW4gcnVubmluZyBkZWJ1
ZyBEUlQuIFNpbXBsaWZpZWQgbG9vcHMgYXQgQWNjZXNzaWJpbGl0eUNhbGxiYWNrQXRrLmNwcCB3
aGVyZSB0aGUgSGFzaE1hcAorICAgICAgICBpdGVyYXRvciB3YXMgcmVtb3ZlZCBpbnNpZGUgYSBs
b29wLiBGaXhlZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cigpIHdoZXJlCisgICAgICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciBleHBlY3RlZCBSZWZQdHIu
CisKKyAgICAgICAgVGhlIGdsb2JhbCBub3RpZmljYXRpb24ga2V5IGZvciB0aGUgSGFzaE1hcCB0
aGF0IHN0b3JlcyBoYW5kbGVycyBoYWQgdG8gYmUgY2hhbmdlZCBmcm9tIHplcm8KKyAgICAgICAg
dG8gb25lIGJlY2F1c2UgSGFzaE1hcCBkb2VzIG5vdCBhY2NlcHQgemVybyBhcyBhIGtleS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmg6IE1v
ZGlmaWVkIHRoZSBnbG9iYWwgbm90aWZpY2F0aW9uIGtleSBmcm9tIDAgdG8gMSBzaW5jZQorICAg
ICAgICBIYXNoTWFwIGRvZXMgbm90IGFjY2VwdCB6ZXJvIGFzIGEga2V5LgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcDoKKyAgICAgICAg
KGF4T2JqZWN0RXZlbnRMaXN0ZW5lcik6IE1vdmVkIHRoZSBjYWxsIHRvIHRoZSBjYWxsYmFjayBm
dW5jdGlvbiBvdXQgb2YgdGhlIGxvb3AuCisgICAgICAgIChhZGRBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlcik6IFJlbW92ZWQgdGhlIGNvbmRpdGlvbiBmb3IgZ2xvYmFsIG5vdGlmaWNh
dGlvbiBhcyBpdCBoYXMgbm8KKyAgICAgICAgZGlmZmVyZW5jZSBmcm9tIHRoZSBub3RpZmljYXRp
b24gZm9yIGEgc3BlY2lmaWMgZWxlbWVudC4KKyAgICAgICAgKHJlbW92ZUFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyKTogTW92ZWQgdGhlIGhhbmRsZXIgcmVtb3ZhbCBvdXQgb2YgdGhl
IGxvb3AuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcjo6Y3JlYXRlKTogQWRkZWQgc3RhdGljIGZ1bmN0aW9uIHRvIGNyZWF0ZQorICAgICAgICBB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6IEFzc2lnbmVkIG1fbm90aWZp
Y2F0aW9uSGFuZGxlciB3aXRoCisgICAgICAgIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyOjpjcmVhdGUoKS4KKwogMjAxMy0wOS0wNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRvbid0IHJ1biBmYXN0L2pzIHRlc3RzIGluIHJ1
bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyBvbiBwbGF0Zm9ybXMgdGhhdApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3MuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmgKaW5kZXggY2NlZTdlNDFk
ZGY5NDVlMGEyY2VkMDYxNDI0YmU2MGRiN2YzYzNhNC4uOTk2NDViYjQyZTljNGZhYmNkMDcwZTJk
MzY4NDcwYWNiZmVmNjUwYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0Fj
Y2Vzc2liaWxpdHlDYWxsYmFja3MuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eUNhbGxiYWNrcy5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgiCiAKLWNvbnN0IFBsYXRmb3JtVUlFbGVtZW50IEdsb2JhbE5vdGlmaWNhdGlv
bktleSA9IDA7CisvLyBHbG9iYWxOb3RpZmljYXRpb25LZXkgaXMgdGhlIEhhc2hNYXAga2V5IGZv
ciB0aGUgZ2xvYmFsIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGluIE5vdGlmaWNhdGlvbkhhbmRsZXJz
LgorY29uc3QgUGxhdGZvcm1VSUVsZW1lbnQgR2xvYmFsTm90aWZpY2F0aW9uS2V5ID0gcmVpbnRl
cnByZXRfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4oMHgxKTsKIAogdm9pZCBjb25uZWN0QWNjZXNz
aWJpbGl0eUNhbGxiYWNrcygpOwogdm9pZCBkaXNjb25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNr
cygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlD
YWxsYmFja3NBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlD
YWxsYmFja3NBdGsuY3BwCmluZGV4IDM5ZTBiZDQwNGEyNjBjYmM2OWZkZDNjZjc3YTljNTc1OWMx
OTEyNGMuLjU2MzIxNDRiYmU3MDkyNDMxNzgzYmMwMmYzNWVkMmMzNTE4YmYyMWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0
ay5jcHAKQEAgLTQ4LDEzICs0OCwxNSBAQAogI2luY2x1ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgogI2VuZGlmCiAKK3R5cGVkZWYgSGFzaE1hcDxQbGF0Zm9y
bVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqPiBOb3RpZmljYXRp
b25IYW5kbGVyczsKKwogc3RhdGljIGd1aW50IHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7CiBz
dGF0aWMgZ3VpbnQgZm9jdXNFdmVudExpc3RlbmVySWQgPSAwOwogc3RhdGljIGd1aW50IGFjdGl2
ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CiBzdGF0aWMgZ3VpbnQgY2hpbGRyZW5D
aGFuZ2VkTGlzdGVuZXJJZCA9IDA7CiBzdGF0aWMgZ3VpbnQgcHJvcGVydHlDaGFuZ2VkTGlzdGVu
ZXJJZCA9IDA7CiBzdGF0aWMgZ3VpbnQgdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7
Ci1zdGF0aWMgSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIqPiBub3RpZmljYXRpb25IYW5kbGVyczsKK3N0YXRpYyBOb3RpZmljYXRpb25I
YW5kbGVycyBub3RpZmljYXRpb25IYW5kbGVyczsKIAogZXh0ZXJuIGJvb2wgbG9nZ2luZ0FjY2Vz
c2liaWxpdHlFdmVudHM7CiAKQEAgLTEyNywyMyArMTI5LDIwIEBAIHN0YXRpYyBnYm9vbGVhbiBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25IaW50ICpzaWduYWxIaW50LCBn
dWludCBuCiAgICAgICAgIHJldHVybiBUUlVFOwogCiAgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
bGVuZ3RoKCkpIHsKLSAgICAgICAgZm9yIChIYXNoTWFwPFBsYXRmb3JtVUlFbGVtZW50LCBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcio+OjppdGVyYXRvciBpdCA9IG5vdGlmaWNhdGlv
bkhhbmRsZXJzLmJlZ2luKCk7IGl0ICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleSA9PSBhY2Nlc3NpYmxlIHx8IGl0LT5rZXkgPT0g
R2xvYmFsTm90aWZpY2F0aW9uS2V5KSB7Ci0gICAgICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGpzTm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihub3RpZmljYXRpb25O
YW1lLnV0ZjgoKS5kYXRhKCkpKSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb25OYW1lQXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhqc0NvbnRleHQsIGpzTm90aWZp
Y2F0aW9uRXZlbnROYW1lLmdldCgpKTsKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciogbm90aWZpY2F0aW9uSGFuZGxlciA9IGl0LT52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IG5vdGlmaWNhdGlvbk5h
bWVBcmd1bWVudDsKLSAgICAgICAgICAgICAgICAgICAgLy8gTGlzdGVuZXIgZm9yIG9uZSBlbGVt
ZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24gbmFtZS4KLSAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0NvbnRleHQsIG5vdGlmaWNh
dGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSwgMCwgMSwgJmFyZ3Vt
ZW50LCAwKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAv
LyBBIGdsb2JhbCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9u
IG5hbWUgYXMgYXJndW1lbnRzLgotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1syXTsKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzWzBdID0gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChqc0NvbnRleHQsIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoYWNjZXNzaWJsZSkpOwotICAgICAgICAgICAgICAgICAgICBhcmd1
bWVudHNbMV0gPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5u
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCksIDAsIDIsIGFyZ3VtZW50cywgMCk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4ganNOb3RpZmljYXRpb25FdmVudE5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBKU1Zh
bHVlUmVmIG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKGpzQ29u
dGV4dCwganNOb3RpZmljYXRpb25FdmVudE5hbWUuZ2V0KCkpOworICAgICAgICBOb3RpZmljYXRp
b25IYW5kbGVyczo6aXRlcmF0b3IgZWxlbWVudE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmlj
YXRpb25IYW5kbGVycy5maW5kKGFjY2Vzc2libGUpOworICAgICAgICBpZiAoZWxlbWVudE5vdGlm
aWNhdGlvbkhhbmRsZXIgIT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkpCisgICAgICAgICAg
ICAvLyBMaXN0ZW5lciBmb3Igb25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBhcmd1bWVudCwgdGhl
IG5vdGlmaWNhdGlvbiBuYW1lLgorICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihq
c0NvbnRleHQsIGVsZW1lbnROb3RpZmljYXRpb25IYW5kbGVyLmdldCgpLT52YWx1ZS0+bm90aWZp
Y2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpLCAwLCAxLCAmbm90aWZpY2F0aW9uTmFtZUFyZ3VtZW50
LCAwKTsKKworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyczo6aXRlcmF0b3IgZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQoR2xvYmFsTm90aWZp
Y2F0aW9uS2V5KTsKKyAgICAgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgIT0gbm90
aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3Rl
bmVyIGdldHMgdGhlIGVsZW1lbnQgYW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVu
dHMuCisgICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1syXTsKKyAgICAgICAgICAgIGFy
Z3VtZW50c1swXSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQoanNDb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2libGUpKTsK
KyAgICAgICAgICAgIGFyZ3VtZW50c1sxXSA9IG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudDsKKyAg
ICAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBnbG9iYWxOb3RpZmlj
YXRpb25IYW5kbGVyLmdldCgpLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygp
LCAwLCAyLCBhcmd1bWVudHMsIDApOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTQsNTQgKzIx
Myw0MCBAQCB2b2lkIGRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCkKIAogdm9pZCBh
ZGRBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcihBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlciogbm90aWZpY2F0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIW5vdGlmaWNhdGlv
bkhhbmRsZXIpCi0gICAgICAgIHJldHVybjsKLQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBKU0ds
b2JhbENvbnRleHRSZWYganNDb250ZXh0ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfZ2xvYmFsX2Nv
bnRleHQobWFpbkZyYW1lKTsKICNlbHNlCiAgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4dCA9IDA7
CiAjZW5kaWYKLSAgICBpZiAoIWpzQ29udGV4dCkKKyAgICBpZiAoIW5vdGlmaWNhdGlvbkhhbmRs
ZXIgfHwgIW5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpIHx8ICFqc0NvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTVmFsdWVQcm90ZWN0KGpzQ29udGV4dCwgbm90
aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKLSAgICAv
LyBDaGVjayBpZiB0aGlzIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGlzIHJlbGF0ZWQgdG8gYSBzcGVj
aWZpYyBlbGVtZW50LgotICAgIGlmIChub3RpZmljYXRpb25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1l
bnQoKSkgewotICAgICAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlcnMuY29udGFpbnMobm90aWZp
Y2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50KCkpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVl
VW5wcm90ZWN0KGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlcnMuZmluZChub3RpZmljYXRp
b25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1lbnQoKSktPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlv
bkNhbGxiYWNrKCkpOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKG5v
dGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKTsKLSAgICAgICAgfQotICAgICAg
ICBub3RpZmljYXRpb25IYW5kbGVycy5hZGQobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1F
bGVtZW50KCksIG5vdGlmaWNhdGlvbkhhbmRsZXIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChub3RpZmljYXRpb25IYW5kbGVycy5jb250YWlucyhHbG9iYWxOb3RpZmljYXRpb25LZXkpKSB7
Ci0gICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFu
ZGxlcnMuZmluZChHbG9iYWxOb3RpZmljYXRpb25LZXkpLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVu
Y3Rpb25DYWxsYmFjaygpKTsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92
ZShHbG9iYWxOb3RpZmljYXRpb25LZXkpOwotICAgICAgICB9Ci0gICAgICAgIG5vdGlmaWNhdGlv
bkhhbmRsZXJzLmFkZChHbG9iYWxOb3RpZmljYXRpb25LZXksIG5vdGlmaWNhdGlvbkhhbmRsZXIp
OworICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzOjppdGVyYXRvciBjdXJyZW50Tm90aWZpY2F0aW9u
SGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobm90aWZpY2F0aW9uSGFuZGxlci0+
cGxhdGZvcm1FbGVtZW50KCkpOworICAgIGlmIChjdXJyZW50Tm90aWZpY2F0aW9uSGFuZGxlciAh
PSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0
KGpzQ29udGV4dCwgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIuZ2V0KCktPnZhbHVlLT5ub3Rp
ZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICBub3RpZmljYXRpb25IYW5kbGVy
cy5yZW1vdmUoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIuZ2V0KCktPnZhbHVlLT5wbGF0Zm9y
bUVsZW1lbnQoKSk7CiAgICAgfQorICAgIEpTVmFsdWVQcm90ZWN0KGpzQ29udGV4dCwgbm90aWZp
Y2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICBub3Rp
ZmljYXRpb25IYW5kbGVycy5hZGQobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50
KCksIG5vdGlmaWNhdGlvbkhhbmRsZXIpOwogCiAgICAgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxs
YmFja3MoKTsKIH0KIAogdm9pZCByZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cihBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciogbm90aWZpY2F0aW9uSGFuZGxlcikK
IHsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbkhhbmRsZXIpCi0gICAgICAgIHJldHVybjsKIAogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0ID0gd2Via2l0
X3dlYl9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQobWFpbkZyYW1lKTsKICNlbHNlCiAgICAgSlNH
bG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCA9IDA7CiAjZW5kaWYKLSAgICBpZiAoIWpzQ29udGV4
dCkKKyAgICBpZiAoIW5vdGlmaWNhdGlvbkhhbmRsZXIgfHwgIW5vdGlmaWNhdGlvbkhhbmRsZXIt
PnBsYXRmb3JtRWxlbWVudCgpIHx8ICFqc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZvciAoSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIqPjo6aXRlcmF0b3IgaXQgPSBub3RpZmljYXRpb25IYW5kbGVycy5iZWdpbigpOyBp
dCAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQt
PnZhbHVlID09IG5vdGlmaWNhdGlvbkhhbmRsZXIpIHsKLSAgICAgICAgICAgIEpTVmFsdWVVbnBy
b3RlY3QoanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRpb25GdW5jdGlv
bkNhbGxiYWNrKCkpOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGl0
KTsKLSAgICAgICAgfQorICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzOjppdGVyYXRvciByZW1vdmVO
b3RpZmljYXRpb25IYW5kbGVyID0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZmluZChub3RpZmljYXRp
b25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgaWYgKHJlbW92ZU5vdGlmaWNhdGlv
bkhhbmRsZXIgIT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgSlNWYWx1
ZVVucHJvdGVjdChqc0NvbnRleHQsIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIuZ2V0KCktPnZh
bHVlLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICBub3RpZmljYXRp
b25IYW5kbGVycy5yZW1vdmUocmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlcik7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXJBdGsuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCmluZGV4IDM1MDI4MzNlNDQ0MmRmNjc5OTZlN2Jk
YzZlMjkzZjE4MTdlODkyODUuLmI2NTNlODZmNDhhMmRlYzU4MzQzYTM2NTBmNmY4OWFjZmIyYjMx
OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCkBAIC0yMiwxMCArMjIsMTUgQEAKIAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8YXRrL2F0
ay5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gewogcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKKyAgICB9CiAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIodm9pZCk7CiAgICAgfkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAppbmRleCBkMDY4ZTY1OWNiOTVlODQ1YTc1YTNkM2UwMGQ1NjcyNDAz
YjExYTkwLi4yNDcyNjgwM2EzYjIyNmZkODM5MzQ0YzA1NmJlYjk1ZDk0NWY5NTNlIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCkBAIC0xMDUwLDcgKzEwNTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAg
IGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcigpOworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyOjpjcmVhdGUoKTsKICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldFBs
YXRmb3JtRWxlbWVudChwbGF0Zm9ybVVJRWxlbWVudCgpKTsKICAgICBtX25vdGlmaWNhdGlvbkhh
bmRsZXItPnNldE5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soZnVuY3Rpb25DYWxsYmFjayk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA2ODgxZDYwZjE1ZGQ2MWJiZWFjMWUyZTFlMWFiYTE5YjcwZDExZmQ0Li5kZWM2
NDkyZDFkZmNkNmEyNTZlMjBjZTgyODAxZmJkMDY5ZDQxYzJhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDktMDUgIERlbmlzIE5vbWl5YW1hICA8ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbR1RLXSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcigpIGNyYXNoZXMgb24gZGVidWcgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIGNyYXNoZXMgd2hlbiBydW5uaW5nIGRlYnVn
IERSVCBvbiB0ZXN0cyB0aGF0IHJlcXVpcmUgYW4gYTExeSBub3RpZmljYXRpb24gaGFuZGxlci4K
KworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXBwZWQgc29t
ZSBhMTF5IHRlc3RzIHRoYXQgd2VyZSBjcmFzaGluZyBiZWZvcmUgdGhpcyBmaXguCisgICAgICAg
IFVwZGF0ZWQgdGhlIGV4cGVjdGF0aW9uIG9mIGFjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxp
c3RlbmVycy5odG1sIHRvIGV4cGVjdCBmYWlsdXJlIG9uIERlYnVnIGJ1aWxkCisgICAgICAgIHNp
bmNlIGl0IGlzIG5vdCBjcmFzaGluZyBhbnltb3JlLiBUaGlzIG90aGVyIGlzc3VlIGlzIHRyYWNr
ZWQgaW4gYSBzZXBhcmF0ZSBidWcgKGJ1ZyAxMjA2NjkpLiAKKwogMjAxMy0wOS0wNSAgRGlyayBT
Y2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIE5VTEwgcHRyIGluIFdlYkNvcmU6
OlJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI8V2ViQ29yZTo6Q2xpcFBhdGhPcGVyYXRpb24+Ojpi
bGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzZWIz
OWJiYThiMjkxZDcxZDkwMDkyMWZkZDRlYzIzZmFmNTgwYTQzLi4xYzA4NGI0NzRhYjIzMWY4NmYw
NzczMjA2MTNlYWI4OWE3ZDA0Yzg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNDkwLDEyICs0OTAsNiBAQCB3ZWJraXQub3JnL2IvMTE5MjU1IFsgRGVi
dWcgXSBmYXN0L3dvcmtlcnMvc3RyZXNzLWpzLWV4ZWN1dGlvbi5odG1sIFsgQ3Jhc2ggUGFzcwog
CiB3ZWJraXQub3JnL2IvMTIwMjAwIFsgRGVidWcgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFt
ZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWFsbG93YWxsLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAot
d2Via2l0Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1s
aXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1sIFsgQ3Jhc2ggXQotd2Via2l0Lm9yZy9iLzEy
MDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwg
WyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L21l
bnUtbGlzdC1zZW5kcy1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQu
b3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIFsg
Q3Jhc2ggXQotd2Via2l0Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9hcmlh
LWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgQ3Jhc2ggXQotCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgQ3Jhc2hpbmcgdGVzdHMKICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xNDUwLDcgKzE0NDQsNyBAQCB3ZWJraXQub3Jn
L2IvMTIwMTA1IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0LWZyYW1lcy1nb2JhY2sxLXVuY2Fj
aGVkLmh0bWwgWyBGYQogCiB3ZWJraXQub3JnL2IvMTIwMjAzIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3MtZnJhbWUtYWNjZXNzLWdldE93blByb3BlcnR5RGVzY3JpcHRvci5odG1sIFsgRmFpbHVy
ZSBdCiAKLXdlYmtpdC5vcmcvYi8xMjA2NjkgWyBSZWxlYXNlIF0gYWNjZXNzaWJpbGl0eS9ub3Rp
ZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMjA2Njkg
YWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgWyBGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzEyMDY3MCBhY2Nlc3NpYmlsaXR5L2xpc3RzLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xMjA2NzAgYWNjZXNzaWJpbGl0eS9wbHVnaW4uaHRtbCBbIEZhaWx1cmUg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210626</attachid>
            <date>2013-09-05 09:16:41 -0700</date>
            <delta_ts>2013-09-06 08:06:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120416-20130905171652.patch</filename>
            <type>text/plain</type>
            <size>14479</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTA5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjYzNDFhZGExMmZjZDhjYmVjMGNmYjEwYjhkOWU1NzQx
ZTkyODU1OS4uZjY1YmFiNmFkY2Y5MmIwNzEwNTllMGY0YjZkNTE2NmI1Yjk3MWM3NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEzLTA5LTA1ICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoKSBjcmFzaGVzIG9uIGRlYnVnIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBjcmFzaGVzIHdoZW4gcnVubmluZyBkZWJ1
ZyBEUlQuIFNpbXBsaWZpZWQgbG9vcHMgYXQgQWNjZXNzaWJpbGl0eUNhbGxiYWNrQXRrLmNwcCB3
aGVyZSB0aGUgSGFzaE1hcAorICAgICAgICBpdGVyYXRvciB3YXMgcmVtb3ZlZCBpbnNpZGUgYSBs
b29wLiBGaXhlZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cigpIHdoZXJlCisgICAgICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciBleHBlY3RlZCBSZWZQdHIu
CisKKyAgICAgICAgVGhlIGdsb2JhbCBub3RpZmljYXRpb24gaGFuZGxlciB3YXMgc3RvcmVkIGlu
IHRoZSBIYXNoTWFwIHdpdGgga2V5IDAuIEFuZCB0aGlzIGNhdXNlcyBhbiBhc3NlcnRpb24gd2hl
bgorICAgICAgICBIYXNoTWFwOjphZGQoKSBvciBmaW5kKCkgYXJlIGNhbGxlZC4gVG8gZml4IGl0
LCBtb3ZlZCB0aGUgZ2xvYmFsIGhhbmRsZXIgdG8gYSBzZXBhcmF0ZWQgcG9pbnRlci4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmg6IFJlbW92
ZWQgdGhlIGdsb2JhbCBub3RpZmljYXRpb24ga2V5LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcDoKKyAgICAgICAgKGF4T2JqZWN0RXZl
bnRMaXN0ZW5lcik6IFNpbXBsaWZpZWQgdGhlIGNvZGUgYnkgdXNpbmcgSGFzaE1hcDo6ZmluZCgp
IGFuZCBhIHNlcGFyYXRlIHBvaW50ZXIgZm9yIHRoZQorICAgICAgICBnbG9iYWwgbm90aWZpY2F0
aW9uIGhhbmRsZXIuCisgICAgICAgIChhZGRBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cik6IFNpbXBsaWZpZWQgdGhlIGNvZGUgYnkgdXNpbmcgSGFzaE1hcDo6ZmluZCgpIGFuZCBhIHNl
cGFyYXRlIHBvaW50ZXIKKyAgICAgICAgZm9yIHRoZSBnbG9iYWwgbm90aWZpY2F0aW9uIGhhbmRs
ZXIuCisgICAgICAgIChyZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcik6IEFk
ZGVkIHRoZSByZW1vdmFsIGZvciB0aGUgZ2xvYmFsIG5vdGlmaWNhdGlvbiBoYW5kbGVyLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0
ZSk6IEFkZGVkIHN0YXRpYyBmdW5jdGlvbiB0byBjcmVhdGUKKyAgICAgICAgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBBc3NpZ25lZCBtX25vdGlmaWNhdGlvbkhhbmRs
ZXIgd2l0aAorICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6Y3JlYXRl
KCkuCisKIDIwMTMtMDktMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBkb24ndCBydW4gZmFzdC9qcyB0ZXN0cyBpbiBydW4tamF2YXNjcmlw
dGNvcmUtdGVzdHMgb24gcGxhdGZvcm1zIHRoYXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrcy5oCmluZGV4IGNjZWU3ZTQxZGRmOTQ1ZTBhMmNl
ZDA2MTQyNGJlNjBkYjdmM2MzYTQuLmQ3OWU4MzgzYjZkOGU1NmZjNmI1YTRjNzkwMzU5ODk1MDkx
ZWFjY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
Q2FsbGJhY2tzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlD
YWxsYmFja3MuaApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
IgogCi1jb25zdCBQbGF0Zm9ybVVJRWxlbWVudCBHbG9iYWxOb3RpZmljYXRpb25LZXkgPSAwOwot
CiB2b2lkIGNvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CiB2b2lkIGRpc2Nvbm5lY3RB
Y2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CiB2b2lkIGFkZEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKik7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAK
aW5kZXggMzllMGJkNDA0YTI2MGNiYzY5ZmRkM2NmNzdhOWM1NzU5YzE5MTI0Yy4uYTYxYmYxMmJi
ZTZmNWU5M2FhMjE1OTg1MjZjNzgyYTY5YjI5NmI4NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcApAQCAtNDgsMTMg
KzQ4LDE2IEBACiAjaW5jbHVkZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmgiCiAjZW5kaWYKIAordHlwZWRlZiBIYXNoTWFwPFBsYXRmb3JtVUlFbGVtZW50LCBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcio+IE5vdGlmaWNhdGlvbkhhbmRsZXJzOworCiBz
dGF0aWMgZ3VpbnQgc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gMDsKIHN0YXRpYyBndWludCBmb2N1
c0V2ZW50TGlzdGVuZXJJZCA9IDA7CiBzdGF0aWMgZ3VpbnQgYWN0aXZlRGVzY2VuZGFudENoYW5n
ZWRMaXN0ZW5lcklkID0gMDsKIHN0YXRpYyBndWludCBjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklk
ID0gMDsKIHN0YXRpYyBndWludCBwcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKIHN0YXRp
YyBndWludCB2aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKLXN0YXRpYyBIYXNoTWFw
PFBsYXRmb3JtVUlFbGVtZW50LCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcio+IG5v
dGlmaWNhdGlvbkhhbmRsZXJzOworc3RhdGljIE5vdGlmaWNhdGlvbkhhbmRsZXJzIG5vdGlmaWNh
dGlvbkhhbmRsZXJzOworc3RhdGljIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBn
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gMDsKIAogZXh0ZXJuIGJvb2wgbG9nZ2luZ0FjY2Vz
c2liaWxpdHlFdmVudHM7CiAKQEAgLTEyNywyMyArMTMwLDE4IEBAIHN0YXRpYyBnYm9vbGVhbiBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25IaW50ICpzaWduYWxIaW50LCBn
dWludCBuCiAgICAgICAgIHJldHVybiBUUlVFOwogCiAgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
bGVuZ3RoKCkpIHsKLSAgICAgICAgZm9yIChIYXNoTWFwPFBsYXRmb3JtVUlFbGVtZW50LCBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcio+OjppdGVyYXRvciBpdCA9IG5vdGlmaWNhdGlv
bkhhbmRsZXJzLmJlZ2luKCk7IGl0ICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPmtleSA9PSBhY2Nlc3NpYmxlIHx8IGl0LT5rZXkgPT0g
R2xvYmFsTm90aWZpY2F0aW9uS2V5KSB7Ci0gICAgICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGpzTm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihub3RpZmljYXRpb25O
YW1lLnV0ZjgoKS5kYXRhKCkpKSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb25OYW1lQXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhqc0NvbnRleHQsIGpzTm90aWZp
Y2F0aW9uRXZlbnROYW1lLmdldCgpKTsKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlciogbm90aWZpY2F0aW9uSGFuZGxlciA9IGl0LT52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IG5vdGlmaWNhdGlvbk5h
bWVBcmd1bWVudDsKLSAgICAgICAgICAgICAgICAgICAgLy8gTGlzdGVuZXIgZm9yIG9uZSBlbGVt
ZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24gbmFtZS4KLSAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0NvbnRleHQsIG5vdGlmaWNh
dGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSwgMCwgMSwgJmFyZ3Vt
ZW50LCAwKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAv
LyBBIGdsb2JhbCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9u
IG5hbWUgYXMgYXJndW1lbnRzLgotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1syXTsKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzWzBdID0gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChqc0NvbnRleHQsIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQoYWNjZXNzaWJsZSkpOwotICAgICAgICAgICAgICAgICAgICBhcmd1
bWVudHNbMV0gPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5u
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCksIDAsIDIsIGFyZ3VtZW50cywgMCk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4ganNOb3RpZmljYXRpb25FdmVudE5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKG5vdGlmaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBKU1Zh
bHVlUmVmIG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKGpzQ29u
dGV4dCwganNOb3RpZmljYXRpb25FdmVudE5hbWUuZ2V0KCkpOworICAgICAgICBOb3RpZmljYXRp
b25IYW5kbGVyczo6aXRlcmF0b3IgZWxlbWVudE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmlj
YXRpb25IYW5kbGVycy5maW5kKGFjY2Vzc2libGUpOworICAgICAgICBpZiAoZWxlbWVudE5vdGlm
aWNhdGlvbkhhbmRsZXIgIT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAg
ICAgIC8vIExpc3RlbmVyIGZvciBvbmUgZWxlbWVudCBqdXN0IGdldHMgb25lIGFyZ3VtZW50LCB0
aGUgbm90aWZpY2F0aW9uIG5hbWUuCisgICAgICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9u
KGpzQ29udGV4dCwgZWxlbWVudE5vdGlmaWNhdGlvbkhhbmRsZXIuZ2V0KCktPnZhbHVlLT5ub3Rp
ZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCksIDAsIDEsICZub3RpZmljYXRpb25OYW1lQXJndW1l
bnQsIDApOworICAgICAgICB9IGVsc2UgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpIHsK
KyAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhlIGVsZW1lbnQgYW5kIHRo
ZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1syXTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoanNDb250ZXh0LCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KGFjY2Vzc2libGUpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1sxXSA9
IG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudDsKKyAgICAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oanNDb250ZXh0LCBnbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRpb25G
dW5jdGlvbkNhbGxiYWNrKCksIDAsIDIsIGFyZ3VtZW50cywgMCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTIyOCwxNyArMjI2LDE2IEBAIHZvaWQgYWRkQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIoQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqIG5vdGlmCiAgICAgSlNW
YWx1ZVByb3RlY3QoanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRpb25G
dW5jdGlvbkNhbGxiYWNrKCkpOwogICAgIC8vIENoZWNrIGlmIHRoaXMgbm90aWZpY2F0aW9uIGhh
bmRsZXIgaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGVsZW1lbnQuCiAgICAgaWYgKG5vdGlmaWNh
dGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRp
b25IYW5kbGVycy5jb250YWlucyhub3RpZmljYXRpb25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1lbnQo
KSkpIHsKLSAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBub3RpZmljYXRp
b25IYW5kbGVycy5maW5kKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKS0+
dmFsdWUtPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7Ci0gICAgICAgICAgICBub3Rp
ZmljYXRpb25IYW5kbGVycy5yZW1vdmUobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVt
ZW50KCkpOworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyczo6aXRlcmF0b3IgY3VycmVudE5v
dGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmljYXRpb25IYW5kbGVycy5maW5kKG5vdGlmaWNhdGlv
bkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAgICAgaWYgKGN1cnJlbnROb3RpZmlj
YXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICAg
ICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIu
Z2V0KCktPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICAg
ICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGN1cnJlbnROb3RpZmljYXRpb25IYW5kbGVy
LmdldCgpLT52YWx1ZS0+cGxhdGZvcm1FbGVtZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIG5v
dGlmaWNhdGlvbkhhbmRsZXJzLmFkZChub3RpZmljYXRpb25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1l
bnQoKSwgbm90aWZpY2F0aW9uSGFuZGxlcik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG5v
dGlmaWNhdGlvbkhhbmRsZXJzLmNvbnRhaW5zKEdsb2JhbE5vdGlmaWNhdGlvbktleSkpIHsKLSAg
ICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5kbGVy
cy5maW5kKEdsb2JhbE5vdGlmaWNhdGlvbktleSktPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlv
bkNhbGxiYWNrKCkpOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKEds
b2JhbE5vdGlmaWNhdGlvbktleSk7Ci0gICAgICAgIH0KLSAgICAgICAgbm90aWZpY2F0aW9uSGFu
ZGxlcnMuYWRkKEdsb2JhbE5vdGlmaWNhdGlvbktleSwgbm90aWZpY2F0aW9uSGFuZGxlcik7Cisg
ICAgICAgIGlmIChnbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyKQorICAgICAgICAgICAgSlNWYWx1
ZVVucHJvdGVjdChqc0NvbnRleHQsIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7CisgICAgICAgIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRs
ZXIgPSBub3RpZmljYXRpb25IYW5kbGVyOwogICAgIH0KIAogICAgIGNvbm5lY3RBY2Nlc3NpYmls
aXR5Q2FsbGJhY2tzKCk7CkBAIC0yNTcsMTAgKzI1NCwxNCBAQCB2b2lkIHJlbW92ZUFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KiBubwogICAgIGlmICghanNDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKEhh
c2hNYXA8UGxhdGZvcm1VSUVsZW1lbnQsIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Kj46Oml0ZXJhdG9yIGl0ID0gbm90aWZpY2F0aW9uSGFuZGxlcnMuYmVnaW4oKTsgaXQgIT0gbm90
aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZSA9
PSBub3RpZmljYXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpz
Q29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
aygpKTsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShpdCk7CisgICAg
aWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPT0gbm90aWZpY2F0aW9uSGFuZGxlcikgewor
ICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFu
ZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAgICAgZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlciA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTm90aWZpY2F0aW9u
SGFuZGxlcnM6Oml0ZXJhdG9yIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmljYXRp
b25IYW5kbGVycy5maW5kKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKTsK
KyAgICAgICAgaWYgKHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIgIT0gbm90aWZpY2F0aW9uSGFu
ZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBy
ZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyLmdldCgpLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rp
b25DYWxsYmFjaygpKTsKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShy
ZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXJBdGsuY3BwCmluZGV4IDMyMDMyZjFhYWRhNTc0OTRiMGU4MzliN2RmM2E1
MTlkZGFiYzYwNTUuLmM3MWE2Mjc0YmNmNTliM2YwODI2OGI3MTQ0NTU5MmM1ZWZmZmY1YjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlckF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlDYWxsYmFja3MuaCIKIAogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKHZvaWQpCi0gICAgOiBt
X3BsYXRmb3JtRWxlbWVudChHbG9iYWxOb3RpZmljYXRpb25LZXkpCisgICAgOiBtX3BsYXRmb3Jt
RWxlbWVudCgwKQogICAgICwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKDApCiB7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXJBdGsuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCmluZGV4IDM1MDI4MzNlNDQ0MmRmNjc5OTZlN2Jk
YzZlMjkzZjE4MTdlODkyODUuLmI2NTNlODZmNDhhMmRlYzU4MzQzYTM2NTBmNmY4OWFjZmIyYjMx
OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCkBAIC0yMiwxMCArMjIsMTUgQEAKIAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8YXRrL2F0
ay5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gewogcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKKyAgICB9CiAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIodm9pZCk7CiAgICAgfkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAppbmRleCBkMDY4ZTY1OWNiOTVlODQ1YTc1YTNkM2UwMGQ1NjcyNDAz
YjExYTkwLi4yNDcyNjgwM2EzYjIyNmZkODM5MzQ0YzA1NmJlYjk1ZDk0NWY5NTNlIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCkBAIC0xMDUwLDcgKzEwNTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAg
IGlmIChtX25vdGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcigpOworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciA9IEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyOjpjcmVhdGUoKTsKICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldFBs
YXRmb3JtRWxlbWVudChwbGF0Zm9ybVVJRWxlbWVudCgpKTsKICAgICBtX25vdGlmaWNhdGlvbkhh
bmRsZXItPnNldE5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soZnVuY3Rpb25DYWxsYmFjayk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA2ODgxZDYwZjE1ZGQ2MWJiZWFjMWUyZTFlMWFiYTE5YjcwZDExZmQ0Li40NDk2
MWU2OTM0NjQ3MGFiNDQxYzZhNjc5OTZlNTgxODAyZjA4ODM4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDktMDUgIERlbmlzIE5vbWl5YW1hICA8ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbR1RLXSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25M
aXN0ZW5lcigpIGNyYXNoZXMgb24gZGVidWcgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIGNyYXNoZXMgd2hlbiBydW5uaW5nIGRlYnVn
IERSVCBvbiB0ZXN0cyB0aGF0IHJlcXVpcmUgYW4gYTExeSBub3RpZmljYXRpb24gaGFuZGxlci4K
KworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXBwZWQgc29t
ZSBhMTF5IHRlc3RzIHRoYXQgd2VyZSBjcmFzaGluZyBiZWZvcmUgdGhpcyBmaXguCisgICAgICAg
IFVwZGF0ZWQgdGhlIGV4cGVjdGF0aW9uIG9mIGFjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxp
c3RlbmVycy5odG1sIHRvIGV4cGVjdCBmYWlsdXJlIG9uIERlYnVnIGJ1aWxkCisgICAgICAgIHNp
bmNlIGl0IGlzIG5vdCBjcmFzaGluZyBhbnltb3JlLiBUaGlzIG90aGVyIGlzc3VlIGlzIHRyYWNr
ZWQgaW4gYSBzZXBhcmF0ZSBidWcgKGJ1ZyAxMjA2NjkpLgorCiAyMDEzLTA5LTA1ICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTlVMTCBwdHIgaW4gV2ViQ29yZTo6
UmVmQ291bnRlZFByb3BlcnR5V3JhcHBlcjxXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbj46OmJs
ZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNlYjM5
YmJhOGIyOTFkNzFkOTAwOTIxZmRkNGVjMjNmYWY1ODBhNDMuLjFjMDg0YjQ3NGFiMjMxZjg2ZjA3
NzMyMDYxM2VhYjg5YTdkMDRjODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00OTAsMTIgKzQ5MCw2IEBAIHdlYmtpdC5vcmcvYi8xMTkyNTUgWyBEZWJ1
ZyBdIGZhc3Qvd29ya2Vycy9zdHJlc3MtanMtZXhlY3V0aW9uLmh0bWwgWyBDcmFzaCBQYXNzCiAK
IHdlYmtpdC5vcmcvYi8xMjAyMDAgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1l
T3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtYWxsb3dhbGwuaHRtbCBbIENyYXNoIFBhc3MgXQogCi13
ZWJraXQub3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L211bHRpc2VsZWN0LWxp
c3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTIw
NjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRtbCBb
IENyYXNoIF0KLXdlYmtpdC5vcmcvYi8xMjA2NjcgWyBEZWJ1ZyBdIGFjY2Vzc2liaWxpdHkvbWVu
dS1saXN0LXNlbmRzLWNoYW5nZS1ub3RpZmljYXRpb24uaHRtbCBbIENyYXNoIF0KLXdlYmtpdC5v
cmcvYi8xMjA2NjcgWyBEZWJ1ZyBdIGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZhbGlkLmh0bWwgWyBD
cmFzaCBdCi13ZWJraXQub3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L2FyaWEt
Y2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgWyBDcmFzaCBdCi0KICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBDcmFzaGluZyB0ZXN0cwogIy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTE0NTAsNyArMTQ0NCw3IEBAIHdlYmtpdC5vcmcv
Yi8xMjAxMDUgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3QtZnJhbWVzLWdvYmFjazEtdW5jYWNo
ZWQuaHRtbCBbIEZhCiAKIHdlYmtpdC5vcmcvYi8xMjAyMDMgaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1mcmFtZS1hY2Nlc3MtZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmh0bWwgWyBGYWlsdXJl
IF0KIAotd2Via2l0Lm9yZy9iLzEyMDY2OSBbIFJlbGVhc2UgXSBhY2Nlc3NpYmlsaXR5L25vdGlm
aWNhdGlvbi1saXN0ZW5lcnMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEyMDY2OSBh
Y2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRtbCBbIEZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMTIwNjcwIGFjY2Vzc2liaWxpdHkvbGlzdHMuaHRtbCBbIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzEyMDY3MCBhY2Nlc3NpYmlsaXR5L3BsdWdpbi5odG1sIFsgRmFpbHVyZSBd
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210757</attachid>
            <date>2013-09-06 08:06:36 -0700</date>
            <delta_ts>2013-09-06 09:31:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120416-20130906160645.patch</filename>
            <type>text/plain</type>
            <size>14546</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjE4Y2VhYjU5MjAwZTk4NTk3NTZkOGUzMjFiZWZmNzgy
MjZlODRiNS4uMTI5OGE0ODJlZGQzZjJkZjAzM2Q5ZTU4NTEyNTk1ODYyZGVhYWZhMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDEzLTA5LTA2ICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoKSBjcmFzaGVzIG9uIGRlYnVnIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBjcmFzaGVzIHdoZW4gcnVubmluZyBkZWJ1
ZyBEUlQuIFNpbXBsaWZpZWQgbG9vcHMgYXQgQWNjZXNzaWJpbGl0eUNhbGxiYWNrQXRrLmNwcCB3
aGVyZSB0aGUgSGFzaE1hcAorICAgICAgICBpdGVyYXRvciB3YXMgcmVtb3ZlZCBpbnNpZGUgYSBs
b29wLiBGaXhlZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cigpIHdoZXJlCisgICAgICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlciBleHBlY3RlZCBSZWZQdHIu
CisKKyAgICAgICAgVGhlIGdsb2JhbCBub3RpZmljYXRpb24gaGFuZGxlciB3YXMgc3RvcmVkIGlu
IHRoZSBIYXNoTWFwIHdpdGgga2V5IDAuIEFuZCB0aGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gd2hl
bgorICAgICAgICBIYXNoTWFwOjphZGQoKSBvciBmaW5kKCkgYXJlIGNhbGxlZC4gVG8gZml4IGl0
LCBtb3ZlZCB0aGUgZ2xvYmFsIGhhbmRsZXIgdG8gYSBzZXBhcmF0ZWQgcG9pbnRlci4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmg6IFJlbW92
ZWQgdGhlIGdsb2JhbCBub3RpZmljYXRpb24ga2V5LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcDoKKyAgICAgICAgKGF4T2JqZWN0RXZl
bnRMaXN0ZW5lcik6IFNpbXBsaWZpZWQgdGhlIGNvZGUgYnkgdXNpbmcgSGFzaE1hcDo6ZmluZCgp
IGFuZCBhIHNlcGFyYXRlIHBvaW50ZXIgZm9yIHRoZQorICAgICAgICBnbG9iYWwgbm90aWZpY2F0
aW9uIGhhbmRsZXIuCisgICAgICAgIChhZGRBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cik6IFNpbXBsaWZpZWQgdGhlIGNvZGUgYnkgdXNpbmcgSGFzaE1hcDo6ZmluZCgpIGFuZCBhIHNl
cGFyYXRlIHBvaW50ZXIKKyAgICAgICAgZm9yIHRoZSBnbG9iYWwgbm90aWZpY2F0aW9uIGhhbmRs
ZXIuCisgICAgICAgIChyZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcik6IEFk
ZGVkIHRoZSByZW1vdmFsIGZvciB0aGUgZ2xvYmFsIG5vdGlmaWNhdGlvbiBoYW5kbGVyLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0
ZSk6IEFkZGVkIHN0YXRpYyBmdW5jdGlvbiB0byBjcmVhdGUKKyAgICAgICAgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBBc3NpZ25lZCBtX25vdGlmaWNhdGlvbkhhbmRs
ZXIgd2l0aAorICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6Y3JlYXRl
KCkuCisKIDIwMTMtMDktMDUgIFNlb2tqdSBLd29uICA8c2Vva2p1QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIFZlY3RvclJldmVyc2UuY3BwIHdhcyByZW1vdmVk
IGFmdGVyIHIxNTUxNTEuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eUNhbGxiYWNrcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlDYWxsYmFja3MuaAppbmRleCBjY2VlN2U0MWRkZjk0NWUwYTJjZWQwNjE0MjRiZTYwZGI3
ZjNjM2E0Li5kNzllODM4M2I2ZDhlNTZmYzZiNWE0Yzc5MDM1OTg5NTA5MWVhY2NmIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrcy5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzLmgKQEAg
LTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKIAotY29uc3QgUGxh
dGZvcm1VSUVsZW1lbnQgR2xvYmFsTm90aWZpY2F0aW9uS2V5ID0gMDsKLQogdm9pZCBjb25uZWN0
QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpOwogdm9pZCBkaXNjb25uZWN0QWNjZXNzaWJpbGl0eUNh
bGxiYWNrcygpOwogdm9pZCBhZGRBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcihBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCmluZGV4IDM5ZTBiZDQw
NGEyNjBjYmM2OWZkZDNjZjc3YTljNTc1OWMxOTEyNGMuLjczYzdlYzk1N2E3ZDJkY2ZiYjdiMzQx
YjQ4OTZmYjI5Nzk0M2Q4N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9B
Y2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAKQEAgLTQ4LDEzICs0OCwxNiBAQAogI2lu
Y2x1ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgogI2VuZGlm
CiAKK3R5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIqPiBOb3RpZmljYXRpb25IYW5kbGVyc01hcDsKKwogc3RhdGljIGd1aW50
IHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7CiBzdGF0aWMgZ3VpbnQgZm9jdXNFdmVudExpc3Rl
bmVySWQgPSAwOwogc3RhdGljIGd1aW50IGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJ
ZCA9IDA7CiBzdGF0aWMgZ3VpbnQgY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CiBzdGF0
aWMgZ3VpbnQgcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CiBzdGF0aWMgZ3VpbnQgdmlz
aWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci1zdGF0aWMgSGFzaE1hcDxQbGF0Zm9ybVVJ
RWxlbWVudCwgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqPiBub3RpZmljYXRpb25I
YW5kbGVyczsKK3N0YXRpYyBOb3RpZmljYXRpb25IYW5kbGVyc01hcCBub3RpZmljYXRpb25IYW5k
bGVyczsKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciogZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlciA9IDA7CiAKIGV4dGVybiBib29sIGxvZ2dpbmdBY2Nlc3NpYmlsaXR5
RXZlbnRzOwogCkBAIC0xMjcsMjMgKzEzMCwxOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gYXhPYmplY3RF
dmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2lnbmFsSGludCwgZ3VpbnQgbgog
ICAgICAgICByZXR1cm4gVFJVRTsKIAogICAgIGlmIChub3RpZmljYXRpb25OYW1lLmxlbmd0aCgp
KSB7Ci0gICAgICAgIGZvciAoSGFzaE1hcDxQbGF0Zm9ybVVJRWxlbWVudCwgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIqPjo6aXRlcmF0b3IgaXQgPSBub3RpZmljYXRpb25IYW5kbGVy
cy5iZWdpbigpOyBpdCAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKTsgKytpdCkgewotICAg
ICAgICAgICAgaWYgKGl0LT5rZXkgPT0gYWNjZXNzaWJsZSB8fCBpdC0+a2V5ID09IEdsb2JhbE5v
dGlmaWNhdGlvbktleSkgewotICAgICAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBqc05vdGlmaWNhdGlvbkV2ZW50TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obm90aWZpY2F0aW9uTmFtZS51dGY4
KCkuZGF0YSgpKSkpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uTmFt
ZUFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBqc05vdGlmaWNhdGlvbkV2
ZW50TmFtZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIqIG5vdGlmaWNhdGlvbkhhbmRsZXIgPSBpdC0+dmFsdWU7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnQgPSBub3RpZmljYXRpb25OYW1lQXJndW1l
bnQ7Ci0gICAgICAgICAgICAgICAgICAgIC8vIExpc3RlbmVyIGZvciBvbmUgZWxlbWVudCBqdXN0
IGdldHMgb25lIGFyZ3VtZW50LCB0aGUgbm90aWZpY2F0aW9uIG5hbWUuCi0gICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBub3RpZmljYXRpb25IYW5k
bGVyLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCksIDAsIDEsICZhcmd1bWVudCwgMCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQSBnbG9i
YWwgbGlzdGVuZXIgZ2V0cyB0aGUgZWxlbWVudCBhbmQgdGhlIG5vdGlmaWNhdGlvbiBuYW1lIGFz
IGFyZ3VtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbMl07
Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQoanNDb250ZXh0LCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KGFjY2Vzc2libGUpKTsKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzWzFd
ID0gbm90aWZpY2F0aW9uTmFtZUFyZ3VtZW50OwotICAgICAgICAgICAgICAgICAgICBKU09iamVj
dENhbGxBc0Z1bmN0aW9uKGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0
aW9uRnVuY3Rpb25DYWxsYmFjaygpLCAwLCAyLCBhcmd1bWVudHMsIDApOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpz
Tm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
Zyhub3RpZmljYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBu
b3RpZmljYXRpb25OYW1lQXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhqc0NvbnRleHQsIGpz
Tm90aWZpY2F0aW9uRXZlbnROYW1lLmdldCgpKTsKKyAgICAgICAgTm90aWZpY2F0aW9uSGFuZGxl
cnNNYXA6Oml0ZXJhdG9yIGVsZW1lbnROb3RpZmljYXRpb25IYW5kbGVyID0gbm90aWZpY2F0aW9u
SGFuZGxlcnMuZmluZChhY2Nlc3NpYmxlKTsKKyAgICAgICAgaWYgKGVsZW1lbnROb3RpZmljYXRp
b25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICAgICAv
LyBMaXN0ZW5lciBmb3Igb25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBhcmd1bWVudCwgdGhlIG5v
dGlmaWNhdGlvbiBuYW1lLgorICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0Nv
bnRleHQsIGVsZW1lbnROb3RpZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVu
Y3Rpb25DYWxsYmFjaygpLCAwLCAxLCAmbm90aWZpY2F0aW9uTmFtZUFyZ3VtZW50LCAwKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChnbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyKSB7CisgICAgICAgICAg
ICAvLyBBIGdsb2JhbCBsaXN0ZW5lciBnZXRzIHRoZSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0
aW9uIG5hbWUgYXMgYXJndW1lbnRzLgorICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
Ml07CisgICAgICAgICAgICBhcmd1bWVudHNbMF0gPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpt
YWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGpzQ29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudChhY2Nlc3NpYmxlKSk7CisgICAgICAgICAgICBhcmd1bWVudHNbMV0gPSBub3RpZmljYXRp
b25OYW1lQXJndW1lbnQ7CisgICAgICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGpzQ29u
dGV4dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxs
YmFjaygpLCAwLCAyLCBhcmd1bWVudHMsIDApOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjgs
MTcgKzIyNiwxNyBAQCB2b2lkIGFkZEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBub3RpZgogICAgIEpTVmFsdWVQcm90ZWN0
KGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxs
YmFjaygpKTsKICAgICAvLyBDaGVjayBpZiB0aGlzIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGlzIHJl
bGF0ZWQgdG8gYSBzcGVjaWZpYyBlbGVtZW50LgogICAgIGlmIChub3RpZmljYXRpb25IYW5kbGVy
LT5wbGF0Zm9ybUVsZW1lbnQoKSkgewotICAgICAgICBpZiAobm90aWZpY2F0aW9uSGFuZGxlcnMu
Y29udGFpbnMobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50KCkpKSB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlcnMu
ZmluZChub3RpZmljYXRpb25IYW5kbGVyLT5wbGF0Zm9ybUVsZW1lbnQoKSktPnZhbHVlLT5ub3Rp
ZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOwotICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFu
ZGxlcnMucmVtb3ZlKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKTsKKyAg
ICAgICAgTm90aWZpY2F0aW9uSGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGN1cnJlbnROb3RpZmljYXRp
b25IYW5kbGVyID0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZmluZChub3RpZmljYXRpb25IYW5kbGVy
LT5wbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgIGlmIChjdXJyZW50Tm90aWZpY2F0aW9uSGFu
ZGxlciAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgQVNTRVJU
KGN1cnJlbnROb3RpZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+cGxhdGZvcm1FbGVtZW50KCkpOwor
ICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChqc0NvbnRleHQsIGN1cnJlbnROb3RpZmljYXRp
b25IYW5kbGVyLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAg
ICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShjdXJyZW50Tm90aWZpY2F0aW9uSGFu
ZGxlci0+dmFsdWUtPnBsYXRmb3JtRWxlbWVudCgpKTsKICAgICAgICAgfQogICAgICAgICBub3Rp
ZmljYXRpb25IYW5kbGVycy5hZGQobm90aWZpY2F0aW9uSGFuZGxlci0+cGxhdGZvcm1FbGVtZW50
KCksIG5vdGlmaWNhdGlvbkhhbmRsZXIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChub3Rp
ZmljYXRpb25IYW5kbGVycy5jb250YWlucyhHbG9iYWxOb3RpZmljYXRpb25LZXkpKSB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgbm90aWZpY2F0aW9uSGFuZGxlcnMu
ZmluZChHbG9iYWxOb3RpZmljYXRpb25LZXkpLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjaygpKTsKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShHbG9i
YWxOb3RpZmljYXRpb25LZXkpOwotICAgICAgICB9Ci0gICAgICAgIG5vdGlmaWNhdGlvbkhhbmRs
ZXJzLmFkZChHbG9iYWxOb3RpZmljYXRpb25LZXksIG5vdGlmaWNhdGlvbkhhbmRsZXIpOworICAg
ICAgICBpZiAoZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIEpTVmFsdWVV
bnByb3RlY3QoanNDb250ZXh0LCBnbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyLT5ub3RpZmljYXRp
b25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICBnbG9iYWxOb3RpZmljYXRpb25IYW5kbGVy
ID0gbm90aWZpY2F0aW9uSGFuZGxlcjsKICAgICB9CiAKICAgICBjb25uZWN0QWNjZXNzaWJpbGl0
eUNhbGxiYWNrcygpOwpAQCAtMjU3LDEwICsyNTUsMTQgQEAgdm9pZCByZW1vdmVBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlcihBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciog
bm8KICAgICBpZiAoIWpzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChIYXNo
TWFwPFBsYXRmb3JtVUlFbGVtZW50LCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcio+
OjppdGVyYXRvciBpdCA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmJlZ2luKCk7IGl0ICE9IG5vdGlm
aWNhdGlvbkhhbmRsZXJzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUgPT0g
bm90aWZpY2F0aW9uSGFuZGxlcikgewotICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChqc0Nv
bnRleHQsIG5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2so
KSk7Ci0gICAgICAgICAgICBub3RpZmljYXRpb25IYW5kbGVycy5yZW1vdmUoaXQpOworICAgIGlm
IChnbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID09IG5vdGlmaWNhdGlvbkhhbmRsZXIpIHsKKyAg
ICAgICAgSlNWYWx1ZVVucHJvdGVjdChqc0NvbnRleHQsIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRs
ZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7CisgICAgICAgIGdsb2JhbE5vdGlm
aWNhdGlvbkhhbmRsZXIgPSAwOworICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9uSGFuZGxlci0+
cGxhdGZvcm1FbGVtZW50KCkpIHsKKyAgICAgICAgTm90aWZpY2F0aW9uSGFuZGxlcnNNYXA6Oml0
ZXJhdG9yIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmljYXRpb25IYW5kbGVycy5m
aW5kKG5vdGlmaWNhdGlvbkhhbmRsZXItPnBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAgICAgaWYg
KHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIgIT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkp
IHsKKyAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCByZW1vdmVOb3RpZmlj
YXRpb25IYW5kbGVyLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAg
ICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShyZW1vdmVOb3RpZmljYXRpb25I
YW5kbGVyKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
Y3BwCmluZGV4IDMyMDMyZjFhYWRhNTc0OTRiMGU4MzliN2RmM2E1MTlkZGFiYzYwNTUuLmM3MWE2
Mjc0YmNmNTliM2YwODI2OGI3MTQ0NTU5MmM1ZWZmZmY1YjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyQXRrLmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlD
YWxsYmFja3MuaCIKIAogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OkFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKHZvaWQpCi0gICAgOiBtX3BsYXRmb3JtRWxlbWVudChH
bG9iYWxOb3RpZmljYXRpb25LZXkpCisgICAgOiBtX3BsYXRmb3JtRWxlbWVudCgwKQogICAgICwg
bV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKDApCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5oCmluZGV4IDM1MDI4MzNlNDQ0MmRmNjc5OTZlN2JkYzZlMjkzZjE4MTdlODkyODUu
LmI2NTNlODZmNDhhMmRlYzU4MzQzYTM2NTBmNmY4OWFjZmIyYjMxOTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0
ay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlckF0ay5oCkBAIC0yMiwxMCArMjIsMTUgQEAKIAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8YXRrL2F0ay5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogY2xhc3MgQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cigpKTsKKyAgICB9CiAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIodm9pZCk7
CiAgICAgfkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApp
bmRleCBkMDY4ZTY1OWNiOTVlODQ1YTc1YTNkM2UwMGQ1NjcyNDAzYjExYTkwLi4yNDcyNjgwM2Ez
YjIyNmZkODM5MzQ0YzA1NmJlYjk1ZDk0NWY5NTNlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC0xMDUwLDcg
KzEwNTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAgIGlmIChtX25vdGlmaWNhdGlv
bkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fbm90aWZpY2F0aW9uSGFu
ZGxlciA9IG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpOworICAgIG1fbm90
aWZpY2F0aW9uSGFuZGxlciA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjcmVh
dGUoKTsKICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldFBsYXRmb3JtRWxlbWVudChwbGF0
Zm9ybVVJRWxlbWVudCgpKTsKICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldE5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soZnVuY3Rpb25DYWxsYmFjayk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNTc2OWYz
MGEzYTIzNGU3MjU3MTNlNTQ5NjZmZGJhNjY3NzgzMDg1Li4yMjgyNTQwNTMwOTlhY2I0NzhmMmJl
MjZiNjk4ZWY3Y2VlMDU1NWFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDktMDYgIERl
bmlzIE5vbWl5YW1hICA8ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcigpIGNyYXNoZXMg
b24gZGVidWcgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeGVkIGNyYXNoZXMgd2hlbiBydW5uaW5nIGRlYnVnIERSVCBvbiB0ZXN0cyB0aGF0
IHJlcXVpcmUgYW4gYTExeSBub3RpZmljYXRpb24gaGFuZGxlci4KKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXBwZWQgc29tZSBhMTF5IHRlc3RzIHRoYXQg
d2VyZSBjcmFzaGluZyBiZWZvcmUgdGhpcyBmaXguCisgICAgICAgIFVwZGF0ZWQgdGhlIGV4cGVj
dGF0aW9uIG9mIGFjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sIHRvIGV4
cGVjdCBmYWlsdXJlIG9uIERlYnVnIGJ1aWxkCisgICAgICAgIHNpbmNlIGl0IGlzIG5vdCBjcmFz
aGluZyBhbnltb3JlLiBUaGlzIG90aGVyIGlzc3VlIGlzIHRyYWNrZWQgaW4gYSBzZXBhcmF0ZSBi
dWcgKGJ1ZyAxMjA2NjkpLgorCiAyMDEzLTA5LTA2ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3Zp
bGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIFJlc29sdmUgbmFt
ZWQgZ3JpZCBsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA4MTBiYTMyMzRmNjAwYmNmNzUxNWQ0MjhhMmZjMzI2ZmVmMWVmY2E3Li4yNjYzY2Q1YTAx
NjQ5Zjc2NTBjZTNkYmNlODhhNTUyODRhMDczMTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDkxLDEyICs0OTEsNiBAQCB3ZWJraXQub3JnL2IvMTE5
MjU1IFsgRGVidWcgXSBmYXN0L3dvcmtlcnMvc3RyZXNzLWpzLWV4ZWN1dGlvbi5odG1sIFsgQ3Jh
c2ggUGFzcwogCiB3ZWJraXQub3JnL2IvMTIwMjAwIFsgRGVidWcgXSBodHRwL3Rlc3RzL3NlY3Vy
aXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWFsbG93YWxsLmh0bWwgWyBDcmFzaCBQ
YXNzIF0KIAotd2Via2l0Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9tdWx0
aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1sIFsgQ3Jhc2ggXQotd2Via2l0
Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVu
ZXJzLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3Np
YmlsaXR5L21lbnUtbGlzdC1zZW5kcy1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwgWyBDcmFzaCBd
Ci13ZWJraXQub3JnL2IvMTIwNjY3IFsgRGVidWcgXSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxp
ZC5odG1sIFsgQ3Jhc2ggXQotd2Via2l0Lm9yZy9iLzEyMDY2NyBbIERlYnVnIF0gYWNjZXNzaWJp
bGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgQ3Jhc2ggXQotCiAj
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgQ3Jhc2hpbmcgdGVzdHMK
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xNDUxLDcgKzE0NDUsNyBAQCB3
ZWJraXQub3JnL2IvMTIwMTA1IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0LWZyYW1lcy1nb2Jh
Y2sxLXVuY2FjaGVkLmh0bWwgWyBGYQogCiB3ZWJraXQub3JnL2IvMTIwMjAzIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWdldE93blByb3BlcnR5RGVzY3JpcHRvci5odG1s
IFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xMjA2NjkgWyBSZWxlYXNlIF0gYWNjZXNzaWJp
bGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xMjA2NjkgYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgWyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzEyMDY3MCBhY2Nlc3NpYmlsaXR5L2xpc3RzLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMjA2NzAgYWNjZXNzaWJpbGl0eS9wbHVnaW4uaHRtbCBb
IEZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>