<?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>149289</bug_id>
          
          <creation_ts>2015-09-17 14:28:50 -0700</creation_ts>
          <short_desc>Null dereference loading Blink layout test editing/execCommand/delete-hidden-crash.html</short_desc>
          <delta_ts>2015-11-04 16:47:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit 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>BlinkMergeCandidate, HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Honeycutt">jhoneycutt</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126847</commentid>
    <comment_count>0</comment_count>
      <attachid>261423</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-09-17 14:28:50 -0700</bug_when>
    <thetext>Created attachment 261423
crashing test

Null dereference loading Blink layout test editing/execCommand/delete-hidden-crash.html.

Stack trace:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000014
Exception Note:        EXC_CORPSE_NOTIFY

VM Regions Near 0x14:
--&gt; 
    __TEXT                 000000010102c000-000000010102e000 [    8K] r-x/rwx SM=COW  /Users/USER/*/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.Development.xpc/Contents/MacOS/com.apple.WebKit.WebContent.Development

Application Specific Information:
CRASHING TEST: temp-tests/editing/execCommand/delete-hidden-crash.html

Global Trace Buffer (reverse chronological seconds):
41.945279    CFNetwork                 	0x00007fff88d43b97 Explicitly setting CF cookie storage singleton
41.945648    CFNetwork                 	0x00007fff88d8f211 Explicitly setting cookie storage singleton

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000109855560 WebCore::Node::isDescendantOf(WebCore::Node const*) const + 32 (Node.h:638)
1   com.apple.WebCore             	0x000000010901d5bc WebCore::DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows() + 556 (DeleteSelectionCommand.cpp:708)
2   com.apple.WebCore             	0x000000010901e9ce WebCore::DeleteSelectionCommand::doApply() + 1598 (DeleteSelectionCommand.cpp:856)
3   com.apple.WebCore             	0x0000000108ed852b WebCore::CompositeEditCommand::applyCommandToComposite(WTF::PassRefPtr&lt;WebCore::EditCommand&gt;) + 43 (CompositeEditCommand.cpp:281)
4   com.apple.WebCore             	0x0000000108edadc7 WebCore::CompositeEditCommand::deleteSelection(bool, bool, bool, bool, bool) + 135 (StdLibExtras.h:366)
5   com.apple.WebCore             	0x000000010935e8fb WebCore::InsertTextCommand::doApply() + 107 (VisibleSelection.h:75)
6   com.apple.WebCore             	0x0000000108ed8630 WebCore::CompositeEditCommand::applyCommandToComposite(WTF::PassRefPtr&lt;WebCore::CompositeEditCommand&gt;, WebCore::VisibleSelection const&amp;) + 80 (CompositeEditCommand.cpp:296)
7   com.apple.WebCore             	0x0000000109d23c13 WebCore::TypingCommand::insertTextRunWithoutNewlines(WTF::String const&amp;, bool) + 115 (StdLibExtras.h:366)
8   com.apple.WebCore             	0x0000000109d24091 void WebCore::forEachLineInString&lt;WebCore::TypingCommandLineOperation&gt;(WTF::String const&amp;, WebCore::TypingCommandLineOperation const&amp;) + 257 (StdLibExtras.h:366)
9   com.apple.WebCore             	0x0000000109d23656 WebCore::TypingCommand::doApply() + 214 (TypingCommand.cpp:286)
10  com.apple.WebCore             	0x0000000108ed8216 WebCore::CompositeEditCommand::apply() + 102 (ScopedEventQueue.h:71)
11  com.apple.WebCore             	0x0000000109ce5263 WebCore::TextInsertionBaseCommand::applyTextInsertionCommand(WebCore::Frame*, WTF::PassRefPtr&lt;WebCore::TextInsertionBaseCommand&gt;, WebCore::VisibleSelection const&amp;, WebCore::VisibleSelection const&amp;) + 67 (StdLibExtras.h:366)
12  com.apple.WebCore             	0x0000000109d22bde WebCore::TypingCommand::insertText(WebCore::Document&amp;, WTF::String const&amp;, WebCore::VisibleSelection const&amp;, unsigned int, WebCore::TypingCommand::TextCompositionType) + 686 (StdLibExtras.h:366)
13  com.apple.WebCore             	0x000000010910c29a WebCore::executeInsertText(WebCore::Frame&amp;, WebCore::Event*, WebCore::EditorCommandSource, WTF::String const&amp;) + 26 (EditorCommand.cpp:535)
14  com.apple.WebCore             	0x000000010910a876 WebCore::Editor::Command::execute(WTF::String const&amp;, WebCore::Event*) const + 182 (EditorCommand.cpp:1704)
15  com.apple.WebCore             	0x0000000109043c36 WebCore::Document::execCommand(WTF::String const&amp;, bool, WTF::String const&amp;) + 214 (Document.cpp:4666)
16  com.apple.WebCore             	0x000000010945a074 WebCore::jsDocumentPrototypeFunctionExecCommand(JSC::ExecState*) + 420 (JSCJSValue.h:499)
17  ???                           	0x00002bb58a001028 0 + 48058704334888
18  com.apple.JavaScriptCore      	0x00000001087b676f llint_entry + 22696
19  com.apple.JavaScriptCore      	0x00000001087b0ce4 vmEntryToJavaScript + 299
20  com.apple.JavaScriptCore      	0x00000001086712d9 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 169 (JITCode.cpp:82)
21  com.apple.JavaScriptCore      	0x0000000108657d12 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 450 (Interpreter.cpp:1008)
22  com.apple.JavaScriptCore      	0x00000001083238b7 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 71 (MarkedBlock.h:241)
23  com.apple.WebCore             	0x00000001094defa4 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 996 (JSMainThreadExecState.h:56)
24  com.apple.WebCore             	0x00000001091454db WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector&lt;WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow, 16ul&gt;&amp;) + 635 (InspectorInstrumentation.h:285)
25  com.apple.WebCore             	0x00000001091451a0 WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 224 (EventTarget.cpp:208)
26  com.apple.WebCore             	0x00000001090d1bf4 WebCore::DOMWindow::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;, WTF::PassRefPtr&lt;WebCore::EventTarget&gt;) + 260 (DOMWindow.cpp:1900)
27  com.apple.WebCore             	0x00000001090d730b WebCore::DOMWindow::dispatchLoadEvent() + 347 (StdLibExtras.h:366)
28  com.apple.WebCore             	0x000000010903a294 WebCore::Document::implicitClose() + 324 (Document.cpp:4077)
29  com.apple.WebCore             	0x00000001091c7003 WebCore::FrameLoader::checkCompleted() + 275 (FrameLoader.cpp:839)
30  com.apple.WebCore             	0x00000001091c595b WebCore::FrameLoader::finishedParsing() + 123 (FrameLoader.cpp:760)
31  com.apple.WebCore             	0x0000000109045281 WebCore::Document::finishedParsing() + 417 (Frame.h:377)
32  com.apple.WebCore             	0x0000000109271e05 WebCore::HTMLDocumentParser::prepareToStopParsing() + 165 (RefCounted.h:99)
33  com.apple.WebCore             	0x000000010907569a WebCore::DocumentWriter::end() + 58 (StdLibExtras.h:366)
34  com.apple.WebCore             	0x000000010905d9ec WebCore::DocumentLoader::finishedLoading(double) + 268 (ResourceErrorBase.h:42)
35  com.apple.WebCore             	0x0000000108e8e179 WebCore::CachedResource::checkNotify() + 153 (CachedResourceClientWalker.h:51)
36  com.apple.WebCore             	0x0000000108e8a433 WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*) + 227 (CachedRawResource.cpp:104)
37  com.apple.WebCore             	0x0000000109c05501 WebCore::SubresourceLoader::didFinishLoading(double) + 1153 (ResourceLoader.h:154)
38  com.apple.WebKit              	0x000000010774b98d WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) + 561 (HandleMessage.h:16)
39  com.apple.WebKit              	0x00000001075251f1 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;) + 127 (memory:2636)
40  com.apple.WebKit              	0x0000000107527b4a IPC::Connection::dispatchOneMessage() + 126 (memory:2656)
41  com.apple.JavaScriptCore      	0x0000000108969985 WTF::RunLoop::performWork() + 437 (functional:1742)
42  com.apple.JavaScriptCore      	0x0000000108969d32 WTF::RunLoop::performWork(void*) + 34 (RunLoopCF.cpp:39)
43  com.apple.CoreFoundation      	0x00007fff949e2c01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
44  com.apple.CoreFoundation      	0x00007fff949d4b1c __CFRunLoopDoSources0 + 556
45  com.apple.CoreFoundation      	0x00007fff949d403f __CFRunLoopRun + 927
46  com.apple.CoreFoundation      	0x00007fff949d3a38 CFRunLoopRunSpecific + 296
47  com.apple.HIToolbox           	0x00007fff88e673bd RunCurrentEventLoopInMode + 235
48  com.apple.HIToolbox           	0x00007fff88e67153 ReceiveNextEventCommon + 432
49  com.apple.HIToolbox           	0x00007fff88e66f93 _BlockUntilNextEventMatchingListInModeWithFilter + 71
50  com.apple.AppKit              	0x00007fff870b81e7 _DPSNextEvent + 1076
51  com.apple.AppKit              	0x00007fff8748490d -[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 454
52  com.apple.AppKit              	0x00007fff870ae0b8 -[NSApplication run] + 682
53  com.apple.AppKit              	0x00007fff87030396 NSApplicationMain + 1176
54  libxpc.dylib                  	0x00007fff8c70ff70 _xpc_objc_main + 793
55  libxpc.dylib                  	0x00007fff8c7116bf xpc_main + 494
56  com.apple.WebKit.WebContent.Development	0x000000010102d424 main + 409 (XPCServiceMain.Development.mm:187)
57  libdyld.dylib                 	0x00007fff93aa15ad start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126848</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-17 14:29:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/22746352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135440</commentid>
    <comment_count>2</comment_count>
      <attachid>263755</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-21 15:59:29 -0700</bug_when>
    <thetext>Created attachment 263755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136626</commentid>
    <comment_count>3</comment_count>
      <attachid>263755</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-10-26 13:47:52 -0700</bug_when>
    <thetext>Comment on attachment 263755
Patch

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

&gt; Source/WebCore/editing/htmlediting.cpp:288
&gt; +Position firstEditablePositionAfterPositionInRoot(const Position&amp; position, Node* highestRoot)

It is not clear to me why you had to make the change to the returned value. It doesn&apos;t seem to add anything to the fix itself. Also, not creating a VisiblePosition from a position prevents the position from being canonicalized and could potentially change the behavior of the system. What I&apos;m saying is that given a Position p, VisiblePosition( p ).deepEquivalent() is not guaranteed to be equal to p.
Are all the other editing tests still passing?

&gt; LayoutTests/editing/execCommand/delete-hidden-crash.html:29
&gt; +&lt;/html&gt;

We tend to write modern editing tests using the framework in editing.js and markup.js. Look for an example under the LayoutTests/editing folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136637</commentid>
    <comment_count>4</comment_count>
      <attachid>263755</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-26 14:38:50 -0700</bug_when>
    <thetext>Comment on attachment 263755
Patch

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

&gt;&gt; Source/WebCore/editing/htmlediting.cpp:288
&gt;&gt; +Position firstEditablePositionAfterPositionInRoot(const Position&amp; position, Node* highestRoot)
&gt; 
&gt; It is not clear to me why you had to make the change to the returned value. It doesn&apos;t seem to add anything to the fix itself. Also, not creating a VisiblePosition from a position prevents the position from being canonicalized and could potentially change the behavior of the system. What I&apos;m saying is that given a Position p, VisiblePosition( p ).deepEquivalent() is not guaranteed to be equal to p.
&gt; Are all the other editing tests still passing?

Yes, it passed all the other editing tests. Actually, if you search over the whole workspace, except the one I modified (Editor::advanceToNextMisspelling), all the other code is using a VisiblePosition type to catch the return value. Therefore, the return value will be automatically converted to its corresponding VisiblePosition in all other places. However, since VisiblePosition could be null. the original methods will cause problem for those callers who need Position type. The deepEquivalent() will not work for a null object. Alternatively, we could add methods that deal with Position type. However, as the functions of the new methods are exactly the same as the one who deal with VisiblePosition, it will be redundant. Considering the fact that a Position type can be converted to VisiblePosition automatically, it will be good to just deal with Position type instead of both Position and VisiblePosition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136732</commentid>
    <comment_count>5</comment_count>
      <attachid>264111</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-26 17:51:52 -0700</bug_when>
    <thetext>Created attachment 264111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136981</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-10-27 16:36:32 -0700</bug_when>
    <thetext>&gt; Yes, it passed all the other editing tests. Actually, if you search over the
&gt; whole workspace, except the one I modified
&gt; (Editor::advanceToNextMisspelling), all the other code is using a
&gt; VisiblePosition type to catch the return value. 
For this case you have definitely modified the behavior though.

Therefore, the return value
&gt; will be automatically converted to its corresponding VisiblePosition in all
&gt; other places. However, since VisiblePosition could be null. the original
&gt; methods will cause problem for those callers who need Position type. The
&gt; deepEquivalent() will not work for a null object. Alternatively, we could
&gt; add methods that deal with Position type. However, as the functions of the
&gt; new methods are exactly the same as the one who deal with VisiblePosition,
&gt; it will be redundant. Considering the fact that a Position type can be
&gt; converted to VisiblePosition automatically, it will be good to just deal
&gt; with Position type instead of both Position and VisiblePosition.

I don&apos;t understand why you are saying this. A position can be null as well. The problem
you are addressing is fixed with making sure you are not starting or ending on a non editable position. Maybe I&apos;m missing the point here, but I still don&apos;t see how this is relevant and it still worries me that you are changing the behavior by avoiding canonicalizing in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137195</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-28 11:10:32 -0700</bug_when>
    <thetext>Yes, I am trying to make sure that the starting position and ending position are within editable areas. Hence, I am trying to reuse these two functions: VisiblePosition firstEditablePositionAfterPositionInRoot() and VisiblePosition lastEditablePositionBeforePositionInRoot(), to move the starting and ending positions to proper positions. However, the original flow of these two functions will convert the result which is a Position type to a VisiblePosition type before return. Therefore, any non visible position will be ignored and then a null object will be returned. Thus, I cannot use these two functions directly. Either I create two new methods which do the exact same thing but without cast the result to VisiblePosition, or I modify the original methods to return Position directly. After careful examination (maybe not careful enough), I found it is better to go with the latter one. Therefore that&apos;s how this patch came out. If this approach is not good, should I go with my first idea? Or do you have any other suggestions I could follow?

(In reply to comment #6)
&gt; &gt; Yes, it passed all the other editing tests. Actually, if you search over the
&gt; &gt; whole workspace, except the one I modified
&gt; &gt; (Editor::advanceToNextMisspelling), all the other code is using a
&gt; &gt; VisiblePosition type to catch the return value. 
&gt; For this case you have definitely modified the behavior though.
&gt; 
&gt; Therefore, the return value
&gt; &gt; will be automatically converted to its corresponding VisiblePosition in all
&gt; &gt; other places. However, since VisiblePosition could be null. the original
&gt; &gt; methods will cause problem for those callers who need Position type. The
&gt; &gt; deepEquivalent() will not work for a null object. Alternatively, we could
&gt; &gt; add methods that deal with Position type. However, as the functions of the
&gt; &gt; new methods are exactly the same as the one who deal with VisiblePosition,
&gt; &gt; it will be redundant. Considering the fact that a Position type can be
&gt; &gt; converted to VisiblePosition automatically, it will be good to just deal
&gt; &gt; with Position type instead of both Position and VisiblePosition.
&gt; 
&gt; I don&apos;t understand why you are saying this. A position can be null as well.
&gt; The problem
&gt; you are addressing is fixed with making sure you are not starting or ending
&gt; on a non editable position. Maybe I&apos;m missing the point here, but I still
&gt; don&apos;t see how this is relevant and it still worries me that you are changing
&gt; the behavior by avoiding canonicalizing in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139427</commentid>
    <comment_count>8</comment_count>
      <attachid>264809</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-11-04 13:57:12 -0800</bug_when>
    <thetext>Created attachment 264809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139486</commentid>
    <comment_count>9</comment_count>
      <attachid>264809</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-04 16:47:28 -0800</bug_when>
    <thetext>Comment on attachment 264809
Patch

Clearing flags on attachment: 264809

Committed r192043: &lt;http://trac.webkit.org/changeset/192043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139487</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-04 16:47:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>261423</attachid>
            <date>2015-09-17 14:28:50 -0700</date>
            <delta_ts>2015-09-17 14:28:50 -0700</delta_ts>
            <desc>crashing test</desc>
            <filename>delete-hidden-crash.html</filename>
            <type>text/html</type>
            <size>656</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHNjcmlwdD4KaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQogICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CgpvbmxvYWQgPSBmdW5jdGlvbigpIHsK
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKQogICAgc3BhbiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CiAgICBzcGFuLmNvbnRlbnRFZGl0YWJs
ZSA9ICd0cnVlJzsKICAgIHNwYW4udGV4dENvbnRlbnQgPSAnYmFyJzsKICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICcxJyk7CiAgICBkb2N1bWVudC5ib2R5LnRl
eHRDb250ZW50ID0gJ1BBU1MgaWYgQmxpbmsgZG9lc25cJ3QgY3Jhc2guJzsKfTsKPC9zY3JpcHQ+
CjxzdHlsZT4KKiB7IHZpc2liaWxpdHk6dmlzaWJsZTsgfQouaW5saW5lIHsgZGlzcGxheTppbmxp
bmU7IH0KKjpvbmx5LWNoaWxkIHsgdmlzaWJpbGl0eTpoaWRkZW47IH0KPC9zdHlsZT4KPC9oZWFk
Pgo8Ym9keT4KPHRhYmxlPgo8dHI+PHRkPjxzcGFuPjx0YWJsZT48L3RhYmxlPjxzcGFuPjwvc3Bh
bj48L3NwYW4+PC90ZD48L3RyPgo8dHI+PHRkPjx0ZCBjbGFzcz0iaW5saW5lIj5mb288L3RkPjwv
dHI+CjwvdGFibGU+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263755</attachid>
            <date>2015-10-21 15:59:29 -0700</date>
            <delta_ts>2015-10-26 17:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149289-20151021155846.patch</filename>
            <type>text/plain</type>
            <size>9701</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFiMjJhNjc4Yjc4ODVm
NTAyYmFkY2ZiNjU1MTUyOTY0ODIxNjFlNi4uMGIzZTM3YjA3YzM0MDgzMjVjNmE3ZWU3NmYxZTEy
N2ZkZDk2MDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTEwLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTnVsbCBkZXJlZmVyZW5j
ZSBsb2FkaW5nIEJsaW5rIGxheW91dCB0ZXN0IGVkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhp
ZGRlbi1jcmFzaC5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDkyODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzQ2MzUyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZXJn
ZSBvZiBCbGluayByMTc2NDk3OgorICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0u
b3JnLzM0MDcxMzAwMworCisgICAgICAgIEl0IGVuc3VyZXMgdGhlIHN0YXJ0ICYgZW5kIHBvc2l0
aW9ucyBpbiBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhCisg
ICAgICAgIGFyZSBlZGl0YWJsZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5k
L2RlbGV0ZS1oaWRkZW4tY3Jhc2guaHRtbAorCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
cnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdCk6CisgICAgICAgIFRo
ZXNlIHR3byBmdW5jdGlvbnMgZG9uJ3QgbWFrZSBhbnkgc2Vuc2UgdG8gcmV0dXJuIFZpc2libGVQ
b3NpdGlvbi4gQ2hhbmdlIHRoZW0KKyAgICAgICAgdG8gcmV0dXJuIFBvc2l0aW9uIGluc3RlYWQu
IFNpbmNlIHRoZXJlIGlzIGEgdmlhYmxlIGNvbnZlcnNpb24gZnJvbSBQb3NpdGlvbiB0bworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24uIEl0IHNob3VsZCBub3QgY2hhbmdlIHRoZSBiZWhhdmlvciBv
ZiBhbnkgb3RoZXIgY29tcG9uZW50cyBkZXBlbmRpbmcKKyAgICAgICAgb24gaXQuCisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorCiAyMDE1LTEwLTE5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgSG9zdCBHcmFwaGljc0NvbnRleHQn
cyBDVE0gaW5zaWRlIEdyYXBoaWNzQ29udGV4dFN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1NjA5OTcxMzNmNjE5ZTNk
MGE3MmRjYmRhZmJhYjE3OGQ4ZjMwZDFhLi4yZDdiZWRlZjM3NDgxYWEzNjE4ZTk2NGEwOTA5NjE2
ZTUwYzEzYWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKQEAgLTE4NSw2ICsxODUsMTEgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25D
b21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhKCkKICAgICBQb3NpdGlvbiBzdGFydCwgZW5k
OwogICAgIGluaXRpYWxpemVTdGFydEVuZChzdGFydCwgZW5kKTsKICAgICAKKyAgICBpZiAoIWlz
RWRpdGFibGVQb3NpdGlvbihzdGFydCwgQ29udGVudElzRWRpdGFibGUpKQorICAgICAgICBzdGFy
dCA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3Qoc3RhcnQsIGhpZ2hl
c3RFZGl0YWJsZVJvb3Qoc3RhcnQpKTsKKyAgICBpZiAoIWlzRWRpdGFibGVQb3NpdGlvbihlbmQs
IENvbnRlbnRJc0VkaXRhYmxlKSkKKyAgICAgICAgZW5kID0gbGFzdEVkaXRhYmxlUG9zaXRpb25C
ZWZvcmVQb3NpdGlvbkluUm9vdChlbmQsIGhpZ2hlc3RFZGl0YWJsZVJvb3Qoc3RhcnQpKTsKKwog
ICAgIG1fdXBzdHJlYW1TdGFydCA9IHN0YXJ0LnVwc3RyZWFtKCk7CiAgICAgbV9kb3duc3RyZWFt
U3RhcnQgPSBzdGFydC5kb3duc3RyZWFtKCk7CiAgICAgbV91cHN0cmVhbUVuZCA9IGVuZC51cHN0
cmVhbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDk4NDBmZTVmOTYxMmJhZWZh
ZTQ1MjA1MTY4NWQwMjMwZjVhNDcwYzcuLjZiYzU3NTU2Y2EwZjVhNmRkZDM4MWJkMTAxZDJiOTUx
MjU0MDA1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE5MDMsNyArMTkwMyw3
IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9y
ZVNlbGVjdGlvbikKICAgICAgICAgLy8gd2hlbiBzcGVsbCBjaGVja2luZyB0aGUgd2hvbGUgZG9j
dW1lbnQgYmVmb3JlIHNlbmRpbmcgdGhlIG1lc3NhZ2UuCiAgICAgICAgIC8vIEluIHRoYXQgY2Fz
ZSB0aGUgZG9jdW1lbnQgbWlnaHQgbm90IGJlIGVkaXRhYmxlLCBidXQgdGhlcmUgYXJlIGVkaXRh
YmxlIHBvY2tldHMgdGhhdCBuZWVkIHRvIGJlIHNwZWxsIGNoZWNrZWQuCiAKLSAgICAgICAgcG9z
aXRpb24gPSBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5Sb290KHBvc2l0aW9u
LCBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAg
ICBwb3NpdGlvbiA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QocG9z
aXRpb24sIGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgICAgICBpZiAocG9zaXRp
b24uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA3Y2FhMTRmNGJlMzdjNjEzNDQ5Yzk0YTZhZGRi
YzU5ZWI1ZTZiZTUzLi4xMDU5ZjljYTZjMzg0NjZhODEwNTRlNDU5Yzc5NjhjZmRkMDZmMDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBA
IFBvc2l0aW9uIHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24pCiAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiB9CiAKLVZpc2libGVQb3NpdGlv
biBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9u
JiBwb3NpdGlvbiwgTm9kZSogaGlnaGVzdFJvb3QpCitQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9z
aXRpb25BZnRlclBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgTm9kZSog
aGlnaGVzdFJvb3QpCiB7CiAgICAgLy8gcG9zaXRpb24gZmFsbHMgYmVmb3JlIGhpZ2hlc3RSb290
LgogICAgIGlmIChjb21wYXJlUG9zaXRpb25zKHBvc2l0aW9uLCBmaXJzdFBvc2l0aW9uSW5Ob2Rl
KGhpZ2hlc3RSb290KSkgPT0gLTEgJiYgaGlnaGVzdFJvb3QtPmhhc0VkaXRhYmxlU3R5bGUoKSkK
QEAgLTI5Niw3ICsyOTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9u
QWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAgIGlmICgmcG9z
aXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+dHJlZVNjb3BlKCkgIT0gJmhpZ2hlc3RSb290LT50cmVl
U2NvcGUoKSkgewogICAgICAgICBOb2RlKiBzaGFkb3dBbmNlc3RvciA9IGhpZ2hlc3RSb290LT50
cmVlU2NvcGUoKS5hbmNlc3RvckluVGhpc1Njb3BlKHAuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAg
ICAgIGlmICghc2hhZG93QW5jZXN0b3IpCi0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAogICAgICAgICBwID0gcG9z
aXRpb25BZnRlck5vZGUoc2hhZG93QW5jZXN0b3IpOwogICAgIH0KQEAgLTMwNSwxMiArMzA1LDEy
IEBAIFZpc2libGVQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5S
b290KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvCiAgICAgICAgIHAgPSBpc0F0b21pY05vZGUocC5k
ZXByZWNhdGVkTm9kZSgpKSA/IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUocC5kZXByZWNhdGVk
Tm9kZSgpKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHApOwogICAgIAogICAgIGlm
IChwLmRlcHJlY2F0ZWROb2RlKCkgJiYgcC5kZXByZWNhdGVkTm9kZSgpICE9IGhpZ2hlc3RSb290
ICYmICFwLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKLSAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworICAgICAgICByZXR1cm4gUG9zaXRpb24o
KTsKICAgICAKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHApOworICAgIHJldHVybiBwOwog
fQogCi1WaXNpYmxlUG9zaXRpb24gbGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbklu
Um9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIE5vZGUqIGhpZ2hlc3RSb290KQorUG9zaXRp
b24gbGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24sIE5vZGUqIGhpZ2hlc3RSb290KQogewogICAgIC8vIFdoZW4gcG9zaXRpb24g
ZmFsbHMgYWZ0ZXIgaGlnaGVzdFJvb3QsIHRoZSByZXN1bHQgaXMgZWFzeSB0byBjb21wdXRlLgog
ICAgIGlmIChjb21wYXJlUG9zaXRpb25zKHBvc2l0aW9uLCBsYXN0UG9zaXRpb25Jbk5vZGUoaGln
aGVzdFJvb3QpKSA9PSAxKQpAQCAtMzIxLDcgKzMyMSw3IEBAIFZpc2libGVQb3NpdGlvbiBsYXN0
RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiBwb3Np
dGlvCiAgICAgaWYgKCZwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT50cmVlU2NvcGUoKSAhPSAm
aGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpKSB7CiAgICAgICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9y
ID0gaGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9ySW5UaGlzU2NvcGUocC5kZXByZWNh
dGVkTm9kZSgpKTsKICAgICAgICAgaWYgKCFzaGFkb3dBbmNlc3RvcikKLSAgICAgICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwog
CiAgICAgICAgIHAgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoc2hhZG93QW5jZXN0b3Ip
OwogICAgIH0KQEAgLTMzMCw5ICszMzAsOSBAQCBWaXNpYmxlUG9zaXRpb24gbGFzdEVkaXRhYmxl
UG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAg
ICAgICBwID0gaXNBdG9taWNOb2RlKHAuZGVwcmVjYXRlZE5vZGUoKSkgPyBwb3NpdGlvbkluUGFy
ZW50QmVmb3JlTm9kZShwLmRlcHJlY2F0ZWROb2RlKCkpIDogcHJldmlvdXNWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKHApOwogICAgIAogICAgIGlmIChwLmRlcHJlY2F0ZWROb2RlKCkgJiYgcC5k
ZXByZWNhdGVkTm9kZSgpICE9IGhpZ2hlc3RSb290ICYmICFwLmRlcHJlY2F0ZWROb2RlKCktPmlz
RGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKICAgICAKLSAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKHApOworICAgIHJldHVybiBwOwogfQogCiAvLyBGSVhNRTogVGhlIG1ldGhvZCBu
YW1lLCBjb21tZW50LCBhbmQgY29kZSBzYXkgdGhyZWUgZGlmZmVyZW50IHRoaW5ncyBoZXJlIQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCmluZGV4IGY2OWQ5ZDhlYzc1MTc4MTFiOWVk
NGYzYzcwNzc0NTBhMTU4MTE1MWIuLmRkNGMzMTlmMjc2ZTUzZmIwZDY5ODAyNjQ2MDNhMDE5OTk1
OTdmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKQEAgLTE2MSw2ICsxNjEs
OSBAQCBpbmxpbmUgUG9zaXRpb24gbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShOb2RlKiBub2Rl
KQogICAgIHJldHVybiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkgPyBwb3NpdGlvbkFmdGVy
Tm9kZShub2RlKSA6IGxhc3RQb3NpdGlvbkluTm9kZShub2RlKTsKIH0KIAorUG9zaXRpb24gZmly
c3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYsIE5v
ZGUqKTsKK1Bvc2l0aW9uIGxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9zaXRpb25JblJvb3Qo
Y29uc3QgUG9zaXRpb24mLCBOb2RlKik7CisKIC8vIGNvbXBhcmlzaW9uIGZ1bmN0aW9ucyBvbiBQ
b3NpdGlvbgogICAgIAogaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3QgUG9zaXRpb24mLCBjb25z
dCBQb3NpdGlvbiYpOwpAQCAtMTg1LDkgKzE4OCw3IEBAIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JO
b2RlUmVtb3ZhbChQb3NpdGlvbiYsIE5vZGUmKTsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAK
IC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcgVmlzaWJsZVBvc2l0aW9uCi0gICAgCi1WaXNpYmxlUG9z
aXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3Np
dGlvbiYsIE5vZGUqKTsKLVZpc2libGVQb3NpdGlvbiBsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9y
ZVBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSopOworCiBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKik7CiBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU1ZjQ1ZThiMjQxMjE0MDZk
N2MwZjUxMTkxNjkxMjBiNTQ4NjYwZjAuLmUzYmJhNDQwYzZkYjYxOTJjZDQzNGEzMGIwMzMyZTVl
NGFmMGQ5YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMC0yMSAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIE51bGwgZGVyZWZlcmVuY2UgbG9hZGlu
ZyBCbGluayBsYXlvdXQgdGVzdCBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jh
c2guaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5Mjg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjc0NjM1Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQv
ZGVsZXRlLWhpZGRlbi1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhpZGRlbi1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxNS0x
MC0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCBkdW1wIEdlc3R1cmVFdmVudCBjb25zdHJ1Y3RvciBhdHRyaWJ1dGVzIGZvciBub3cKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhpZGRlbi1j
cmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0
ZS1oaWRkZW4tY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0ODkyY2Y0NTE0ODRiMTZj
ZGUyOGM2NTk0ZmFkNjMxMzlhNzdkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEgQEAKK1Bhc3MgaWYgbm90IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9kZWxldGUtaGlkZGVuLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jhc2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OWQ2YjVlNjM4YTQxNTIxNGEyMzMxMmM1ZDUyYWM1ZGU1NjMyMjkyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaGlkZGVuLWNyYXNoLmh0
bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1Nl
bGVjdEFsbCcpCisgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFu
JylbMF07CisgICAgc3Bhbi5jb250ZW50RWRpdGFibGUgPSAndHJ1ZSc7CisgICAgc3Bhbi50ZXh0
Q29udGVudCA9ICdiYXInOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0Jywg
ZmFsc2UsICcxJyk7CisgICAgZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudCA9ICdQYXNzIGlmIG5v
dCBjcmFzaC4nOworfTsKKzwvc2NyaXB0PgorPHN0eWxlPgorKiB7IHZpc2liaWxpdHk6dmlzaWJs
ZTsgfQorLmlubGluZSB7IGRpc3BsYXk6aW5saW5lOyB9CisqIDpvbmx5LWNoaWxkIHsgdmlzaWJp
bGl0eTpoaWRkZW47IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzx0YWJsZT4KKzx0cj48
dGQ+PHNwYW4+PHRhYmxlPjwvdGFibGU+PHNwYW4+PC9zcGFuPjwvc3Bhbj48L3RkPjwvdHI+Cis8
dHI+PHRkPjx0ZCBjbGFzcz0iaW5saW5lIj5mb288L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264111</attachid>
            <date>2015-10-26 17:51:52 -0700</date>
            <delta_ts>2015-11-04 13:57:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149289-20151026175104.patch</filename>
            <type>text/plain</type>
            <size>10554</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFiMjJhNjc4Yjc4ODVm
NTAyYmFkY2ZiNjU1MTUyOTY0ODIxNjFlNi4uMGIzZTM3YjA3YzM0MDgzMjVjNmE3ZWU3NmYxZTEy
N2ZkZDk2MDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTEwLTIxICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTnVsbCBkZXJlZmVyZW5j
ZSBsb2FkaW5nIEJsaW5rIGxheW91dCB0ZXN0IGVkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhp
ZGRlbi1jcmFzaC5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDkyODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzQ2MzUyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZXJn
ZSBvZiBCbGluayByMTc2NDk3OgorICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0u
b3JnLzM0MDcxMzAwMworCisgICAgICAgIEl0IGVuc3VyZXMgdGhlIHN0YXJ0ICYgZW5kIHBvc2l0
aW9ucyBpbiBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhCisg
ICAgICAgIGFyZSBlZGl0YWJsZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5k
L2RlbGV0ZS1oaWRkZW4tY3Jhc2guaHRtbAorCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
cnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdCk6CisgICAgICAgIFRo
ZXNlIHR3byBmdW5jdGlvbnMgZG9uJ3QgbWFrZSBhbnkgc2Vuc2UgdG8gcmV0dXJuIFZpc2libGVQ
b3NpdGlvbi4gQ2hhbmdlIHRoZW0KKyAgICAgICAgdG8gcmV0dXJuIFBvc2l0aW9uIGluc3RlYWQu
IFNpbmNlIHRoZXJlIGlzIGEgdmlhYmxlIGNvbnZlcnNpb24gZnJvbSBQb3NpdGlvbiB0bworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24uIEl0IHNob3VsZCBub3QgY2hhbmdlIHRoZSBiZWhhdmlvciBv
ZiBhbnkgb3RoZXIgY29tcG9uZW50cyBkZXBlbmRpbmcKKyAgICAgICAgb24gaXQuCisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorCiAyMDE1LTEwLTE5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgSG9zdCBHcmFwaGljc0NvbnRleHQn
cyBDVE0gaW5zaWRlIEdyYXBoaWNzQ29udGV4dFN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1NjA5OTcxMzNmNjE5ZTNk
MGE3MmRjYmRhZmJhYjE3OGQ4ZjMwZDFhLi4yZDdiZWRlZjM3NDgxYWEzNjE4ZTk2NGEwOTA5NjE2
ZTUwYzEzYWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKQEAgLTE4NSw2ICsxODUsMTEgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25D
b21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhKCkKICAgICBQb3NpdGlvbiBzdGFydCwgZW5k
OwogICAgIGluaXRpYWxpemVTdGFydEVuZChzdGFydCwgZW5kKTsKICAgICAKKyAgICBpZiAoIWlz
RWRpdGFibGVQb3NpdGlvbihzdGFydCwgQ29udGVudElzRWRpdGFibGUpKQorICAgICAgICBzdGFy
dCA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3Qoc3RhcnQsIGhpZ2hl
c3RFZGl0YWJsZVJvb3Qoc3RhcnQpKTsKKyAgICBpZiAoIWlzRWRpdGFibGVQb3NpdGlvbihlbmQs
IENvbnRlbnRJc0VkaXRhYmxlKSkKKyAgICAgICAgZW5kID0gbGFzdEVkaXRhYmxlUG9zaXRpb25C
ZWZvcmVQb3NpdGlvbkluUm9vdChlbmQsIGhpZ2hlc3RFZGl0YWJsZVJvb3Qoc3RhcnQpKTsKKwog
ICAgIG1fdXBzdHJlYW1TdGFydCA9IHN0YXJ0LnVwc3RyZWFtKCk7CiAgICAgbV9kb3duc3RyZWFt
U3RhcnQgPSBzdGFydC5kb3duc3RyZWFtKCk7CiAgICAgbV91cHN0cmVhbUVuZCA9IGVuZC51cHN0
cmVhbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDk4NDBmZTVmOTYxMmJhZWZh
ZTQ1MjA1MTY4NWQwMjMwZjVhNDcwYzcuLjZiYzU3NTU2Y2EwZjVhNmRkZDM4MWJkMTAxZDJiOTUx
MjU0MDA1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE5MDMsNyArMTkwMyw3
IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9y
ZVNlbGVjdGlvbikKICAgICAgICAgLy8gd2hlbiBzcGVsbCBjaGVja2luZyB0aGUgd2hvbGUgZG9j
dW1lbnQgYmVmb3JlIHNlbmRpbmcgdGhlIG1lc3NhZ2UuCiAgICAgICAgIC8vIEluIHRoYXQgY2Fz
ZSB0aGUgZG9jdW1lbnQgbWlnaHQgbm90IGJlIGVkaXRhYmxlLCBidXQgdGhlcmUgYXJlIGVkaXRh
YmxlIHBvY2tldHMgdGhhdCBuZWVkIHRvIGJlIHNwZWxsIGNoZWNrZWQuCiAKLSAgICAgICAgcG9z
aXRpb24gPSBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5Sb290KHBvc2l0aW9u
LCBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAg
ICBwb3NpdGlvbiA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QocG9z
aXRpb24sIGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgICAgICBpZiAocG9zaXRp
b24uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA3Y2FhMTRmNGJlMzdjNjEzNDQ5Yzk0YTZhZGRi
YzU5ZWI1ZTZiZTUzLi4xMDU5ZjljYTZjMzg0NjZhODEwNTRlNDU5Yzc5NjhjZmRkMDZmMDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBA
IFBvc2l0aW9uIHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24pCiAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiB9CiAKLVZpc2libGVQb3NpdGlv
biBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9u
JiBwb3NpdGlvbiwgTm9kZSogaGlnaGVzdFJvb3QpCitQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9z
aXRpb25BZnRlclBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgTm9kZSog
aGlnaGVzdFJvb3QpCiB7CiAgICAgLy8gcG9zaXRpb24gZmFsbHMgYmVmb3JlIGhpZ2hlc3RSb290
LgogICAgIGlmIChjb21wYXJlUG9zaXRpb25zKHBvc2l0aW9uLCBmaXJzdFBvc2l0aW9uSW5Ob2Rl
KGhpZ2hlc3RSb290KSkgPT0gLTEgJiYgaGlnaGVzdFJvb3QtPmhhc0VkaXRhYmxlU3R5bGUoKSkK
QEAgLTI5Niw3ICsyOTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9u
QWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAgIGlmICgmcG9z
aXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+dHJlZVNjb3BlKCkgIT0gJmhpZ2hlc3RSb290LT50cmVl
U2NvcGUoKSkgewogICAgICAgICBOb2RlKiBzaGFkb3dBbmNlc3RvciA9IGhpZ2hlc3RSb290LT50
cmVlU2NvcGUoKS5hbmNlc3RvckluVGhpc1Njb3BlKHAuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAg
ICAgIGlmICghc2hhZG93QW5jZXN0b3IpCi0gICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAogICAgICAgICBwID0gcG9z
aXRpb25BZnRlck5vZGUoc2hhZG93QW5jZXN0b3IpOwogICAgIH0KQEAgLTMwNSwxMiArMzA1LDEy
IEBAIFZpc2libGVQb3NpdGlvbiBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5S
b290KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvCiAgICAgICAgIHAgPSBpc0F0b21pY05vZGUocC5k
ZXByZWNhdGVkTm9kZSgpKSA/IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUocC5kZXByZWNhdGVk
Tm9kZSgpKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHApOwogICAgIAogICAgIGlm
IChwLmRlcHJlY2F0ZWROb2RlKCkgJiYgcC5kZXByZWNhdGVkTm9kZSgpICE9IGhpZ2hlc3RSb290
ICYmICFwLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKLSAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworICAgICAgICByZXR1cm4gUG9zaXRpb24o
KTsKICAgICAKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHApOworICAgIHJldHVybiBwOwog
fQogCi1WaXNpYmxlUG9zaXRpb24gbGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbklu
Um9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIE5vZGUqIGhpZ2hlc3RSb290KQorUG9zaXRp
b24gbGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24sIE5vZGUqIGhpZ2hlc3RSb290KQogewogICAgIC8vIFdoZW4gcG9zaXRpb24g
ZmFsbHMgYWZ0ZXIgaGlnaGVzdFJvb3QsIHRoZSByZXN1bHQgaXMgZWFzeSB0byBjb21wdXRlLgog
ICAgIGlmIChjb21wYXJlUG9zaXRpb25zKHBvc2l0aW9uLCBsYXN0UG9zaXRpb25Jbk5vZGUoaGln
aGVzdFJvb3QpKSA9PSAxKQpAQCAtMzIxLDcgKzMyMSw3IEBAIFZpc2libGVQb3NpdGlvbiBsYXN0
RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiBwb3Np
dGlvCiAgICAgaWYgKCZwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT50cmVlU2NvcGUoKSAhPSAm
aGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpKSB7CiAgICAgICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9y
ID0gaGlnaGVzdFJvb3QtPnRyZWVTY29wZSgpLmFuY2VzdG9ySW5UaGlzU2NvcGUocC5kZXByZWNh
dGVkTm9kZSgpKTsKICAgICAgICAgaWYgKCFzaGFkb3dBbmNlc3RvcikKLSAgICAgICAgICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwog
CiAgICAgICAgIHAgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoc2hhZG93QW5jZXN0b3Ip
OwogICAgIH0KQEAgLTMzMCw5ICszMzAsOSBAQCBWaXNpYmxlUG9zaXRpb24gbGFzdEVkaXRhYmxl
UG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAg
ICAgICBwID0gaXNBdG9taWNOb2RlKHAuZGVwcmVjYXRlZE5vZGUoKSkgPyBwb3NpdGlvbkluUGFy
ZW50QmVmb3JlTm9kZShwLmRlcHJlY2F0ZWROb2RlKCkpIDogcHJldmlvdXNWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKHApOwogICAgIAogICAgIGlmIChwLmRlcHJlY2F0ZWROb2RlKCkgJiYgcC5k
ZXByZWNhdGVkTm9kZSgpICE9IGhpZ2hlc3RSb290ICYmICFwLmRlcHJlY2F0ZWROb2RlKCktPmlz
RGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKICAgICAKLSAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKHApOworICAgIHJldHVybiBwOwogfQogCiAvLyBGSVhNRTogVGhlIG1ldGhvZCBu
YW1lLCBjb21tZW50LCBhbmQgY29kZSBzYXkgdGhyZWUgZGlmZmVyZW50IHRoaW5ncyBoZXJlIQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCmluZGV4IGY2OWQ5ZDhlYzc1MTc4MTFiOWVk
NGYzYzcwNzc0NTBhMTU4MTE1MWIuLmRkNGMzMTlmMjc2ZTUzZmIwZDY5ODAyNjQ2MDNhMDE5OTk1
OTdmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKQEAgLTE2MSw2ICsxNjEs
OSBAQCBpbmxpbmUgUG9zaXRpb24gbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShOb2RlKiBub2Rl
KQogICAgIHJldHVybiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkgPyBwb3NpdGlvbkFmdGVy
Tm9kZShub2RlKSA6IGxhc3RQb3NpdGlvbkluTm9kZShub2RlKTsKIH0KIAorUG9zaXRpb24gZmly
c3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYsIE5v
ZGUqKTsKK1Bvc2l0aW9uIGxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9zaXRpb25JblJvb3Qo
Y29uc3QgUG9zaXRpb24mLCBOb2RlKik7CisKIC8vIGNvbXBhcmlzaW9uIGZ1bmN0aW9ucyBvbiBQ
b3NpdGlvbgogICAgIAogaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3QgUG9zaXRpb24mLCBjb25z
dCBQb3NpdGlvbiYpOwpAQCAtMTg1LDkgKzE4OCw3IEBAIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JO
b2RlUmVtb3ZhbChQb3NpdGlvbiYsIE5vZGUmKTsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAK
IC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcgVmlzaWJsZVBvc2l0aW9uCi0gICAgCi1WaXNpYmxlUG9z
aXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3Np
dGlvbiYsIE5vZGUqKTsKLVZpc2libGVQb3NpdGlvbiBsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9y
ZVBvc2l0aW9uSW5Sb290KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSopOworCiBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKik7CiBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU1ZjQ1ZThiMjQxMjE0MDZk
N2MwZjUxMTkxNjkxMjBiNTQ4NjYwZjAuLmUzYmJhNDQwYzZkYjYxOTJjZDQzNGEzMGIwMzMyZTVl
NGFmMGQ5YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMC0yMSAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIE51bGwgZGVyZWZlcmVuY2UgbG9hZGlu
ZyBCbGluayBsYXlvdXQgdGVzdCBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jh
c2guaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5Mjg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjc0NjM1Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQv
ZGVsZXRlLWhpZGRlbi1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhpZGRlbi1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxNS0x
MC0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCBkdW1wIEdlc3R1cmVFdmVudCBjb25zdHJ1Y3RvciBhdHRyaWJ1dGVzIGZvciBub3cKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhpZGRlbi1j
cmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0
ZS1oaWRkZW4tY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNTQ5NTQ0MGFjOTdmNzJl
YzczNWJjNjAyMDA2YTZjODkxMzJkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNiBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgU1BBTiA+IFREID4gVFIgPiBUQk9E
WSA+IFRBQkxFID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFREID4g
VFIgPiBUQk9EWSA+IFRBQkxFID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgU1BBTiA+IFREID4gVFIgPiBUQk9EWSA+IFRBQkxFID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFREID4gVFIgPiBUQk9EWSA+
IFRBQkxFID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZToobnVsbCkgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNo
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaGlk
ZGVuLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0ZS1o
aWRkZW4tY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjkxMzAxZDBkZWNkMTQyZmJhN2I4MmZiMjI2
ODUxNjU1Njc0NDQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9kZWxldGUtaGlkZGVuLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIAorZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpCisgICAgc3BhbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CisgICAgc3Bhbi5jb250ZW50RWRpdGFibGUgPSAn
dHJ1ZSc7CisgICAgc3Bhbi50ZXh0Q29udGVudCA9ICdiYXInOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICcxJyk7CisgICAgZG9jdW1lbnQuYm9keS50ZXh0
Q29udGVudCA9ICJQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLiI7Cit9OworPC9zY3JpcHQ+CisK
KzxzdHlsZT4KKyogeyB2aXNpYmlsaXR5OnZpc2libGU7IH0KKy5pbmxpbmUgeyBkaXNwbGF5Omlu
bGluZTsgfQorKiA6b25seS1jaGlsZCB7IHZpc2liaWxpdHk6aGlkZGVuOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPXJ1bkVkaXRpbmdUZXN0KCk+Cis8dGFibGU+Cis8dHI+PHRk
PjxzcGFuPjx0YWJsZT48L3RhYmxlPjxzcGFuPjwvc3Bhbj48L3NwYW4+PC90ZD48L3RyPgorPHRy
Pjx0ZD48dGQgY2xhc3M9ImlubGluZSI+Zm9vPC90ZD48L3RyPgorPC90YWJsZT4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264809</attachid>
            <date>2015-11-04 13:57:12 -0800</date>
            <delta_ts>2015-11-04 16:47:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149289-20151104135614.patch</filename>
            <type>text/plain</type>
            <size>9812</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU2YjQ4OGUyMWQ2MDE3
YTZkYTVhM2U4MDQ4NGM5M2E5ODU2YTBiOC4uYzUxY2E3NDc1MWY3YWY2MzljZjM1ZjM5ZDVmMmMy
ZDg4ODhhN2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTExLTA0ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTnVsbCBkZXJlZmVyZW5j
ZSBsb2FkaW5nIEJsaW5rIGxheW91dCB0ZXN0IGVkaXRpbmcvZXhlY0NvbW1hbmQvZGVsZXRlLWhp
ZGRlbi1jcmFzaC5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDkyODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzQ2MzUyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBtZXJn
ZSBvZiBCbGluayByMTc2NDk3OgorICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0u
b3JnLzM0MDcxMzAwMworCisgICAgICAgIEl0IGVuc3VyZXMgdGhlIHN0YXJ0ICYgZW5kIHBvc2l0
aW9ucyBpbiBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhCisg
ICAgICAgIGFyZSBlZGl0YWJsZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5k
L2RlbGV0ZS1oaWRkZW4tY3Jhc2guaHRtbAorCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OmluaXRpYWxpemVQb3NpdGlvbkRhdGEpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
cnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdCk6CisgICAgICAgIFRo
ZXNlIHR3byBmdW5jdGlvbnMgZG9uJ3QgbWFrZSBhbnkgc2Vuc2UgdG8gcmV0dXJuIFZpc2libGVQ
b3NpdGlvbi4gQ2hhbmdlIHRoZW0KKyAgICAgICAgdG8gcmV0dXJuIFBvc2l0aW9uIGluc3RlYWQu
IFNpbmNlIHRoZXJlIGlzIGEgdmlhYmxlIGNvbnZlcnNpb24gZnJvbSBQb3NpdGlvbiB0bworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24uIEl0IHNob3VsZCBub3QgY2hhbmdlIHRoZSBiZWhhdmlvciBv
ZiBhbnkgb3RoZXIgY29tcG9uZW50cyBkZXBlbmRpbmcKKyAgICAgICAgb24gaXQuCisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorCiAyMDE1LTExLTA0ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gQSBSZWFsdGlt
ZU1lZGlhU291cmNlIHNob3VsZCBiZWdpbiBwcm9kdWNpbmcgZGF0YSBhdXRvbWF0aWNhbGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApp
bmRleCA5Njg5ZTE5YmEwYjQ2YzBjOTZiOTZiZDIyYjBhMmVlNDJkNDc0MDg0Li4xMThjZTM2Zjk5
ZmJlZjNmZWYwYzhlMDEyYjUyZDk1Mjk0ZWRjNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE3Nyw2ICsxNzcsMTEgQEAg
dm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUG9zaXRpb25EYXRhKCkKICAg
ICBQb3NpdGlvbiBzdGFydCwgZW5kOwogICAgIGluaXRpYWxpemVTdGFydEVuZChzdGFydCwgZW5k
KTsKICAgICAKKyAgICBpZiAoIWlzRWRpdGFibGVQb3NpdGlvbihzdGFydCwgQ29udGVudElzRWRp
dGFibGUpKQorICAgICAgICBzdGFydCA9IGZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRp
b25JblJvb3Qoc3RhcnQsIGhpZ2hlc3RFZGl0YWJsZVJvb3Qoc3RhcnQpKTsKKyAgICBpZiAoIWlz
RWRpdGFibGVQb3NpdGlvbihlbmQsIENvbnRlbnRJc0VkaXRhYmxlKSkKKyAgICAgICAgZW5kID0g
bGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdChlbmQsIGhpZ2hlc3RFZGl0
YWJsZVJvb3Qoc3RhcnQpKTsKKwogICAgIG1fdXBzdHJlYW1TdGFydCA9IHN0YXJ0LnVwc3RyZWFt
KCk7CiAgICAgbV9kb3duc3RyZWFtU3RhcnQgPSBzdGFydC5kb3duc3RyZWFtKCk7CiAgICAgbV91
cHN0cmVhbUVuZCA9IGVuZC51cHN0cmVhbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IGVkMGRlMzc5YzRmZGQwYmIzZWI1YjVmMGE4NDZhNjM5YzQ5YWQ3MGUuLmQ0YjBmYWRiNmU1
Yjc1NTQzYWYwODk2NmI0M2UyNDRjZmM1MWM3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTE5MDIsNyArMTkwMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gd2hlbiBzcGVsbCBj
aGVja2luZyB0aGUgd2hvbGUgZG9jdW1lbnQgYmVmb3JlIHNlbmRpbmcgdGhlIG1lc3NhZ2UuCiAg
ICAgICAgIC8vIEluIHRoYXQgY2FzZSB0aGUgZG9jdW1lbnQgbWlnaHQgbm90IGJlIGVkaXRhYmxl
LCBidXQgdGhlcmUgYXJlIGVkaXRhYmxlIHBvY2tldHMgdGhhdCBuZWVkIHRvIGJlIHNwZWxsIGNo
ZWNrZWQuCiAKLSAgICAgICAgcG9zaXRpb24gPSBmaXJzdEVkaXRhYmxlUG9zaXRpb25BZnRlclBv
c2l0aW9uSW5Sb290KHBvc2l0aW9uLCBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKS5kZWVw
RXF1aXZhbGVudCgpOworICAgICAgICBwb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdEVk
aXRhYmxlUG9zaXRpb25BZnRlclBvc2l0aW9uSW5Sb290KHBvc2l0aW9uLCBkb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpKSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgaWYgKHBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggOTIyOWQ3OWRlYjcyNTRjOTVhMWQ1MmRmMWVhZTQ2
NzY4YTc3OTA2Ni4uZjk0OTA5MjUxOGMzZTY2ZGU3NjM1OTZhYTEyZWQ3MDEyN2FjZTYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBQ
b3NpdGlvbiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoY29uc3QgUG9zaXRpb24m
IHBvc2l0aW9uKQogICAgIHJldHVybiBQb3NpdGlvbigpOwogfQogCi1WaXNpYmxlUG9zaXRpb24g
Zmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYg
cG9zaXRpb24sIE5vZGUqIGhpZ2hlc3RSb290KQorUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0
aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIE5vZGUqIGhp
Z2hlc3RSb290KQogewogICAgIC8vIHBvc2l0aW9uIGZhbGxzIGJlZm9yZSBoaWdoZXN0Um9vdC4K
ICAgICBpZiAoY29tcGFyZVBvc2l0aW9ucyhwb3NpdGlvbiwgZmlyc3RQb3NpdGlvbkluTm9kZSho
aWdoZXN0Um9vdCkpID09IC0xICYmIGhpZ2hlc3RSb290LT5oYXNFZGl0YWJsZVN0eWxlKCkpCkBA
IC0yOTYsNyArMjk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlvbkFm
dGVyUG9zaXRpb25JblJvb3QoY29uc3QgUG9zaXRpb24mIHBvc2l0aW8KICAgICBpZiAoJnBvc2l0
aW9uLmRlcHJlY2F0ZWROb2RlKCktPnRyZWVTY29wZSgpICE9ICZoaWdoZXN0Um9vdC0+dHJlZVNj
b3BlKCkpIHsKICAgICAgICAgTm9kZSogc2hhZG93QW5jZXN0b3IgPSBoaWdoZXN0Um9vdC0+dHJl
ZVNjb3BlKCkuYW5jZXN0b3JJblRoaXNTY29wZShwLmRlcHJlY2F0ZWROb2RlKCkpOwogICAgICAg
ICBpZiAoIXNoYWRvd0FuY2VzdG9yKQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOworICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAKICAgICAgICAgcCA9IHBvc2l0
aW9uQWZ0ZXJOb2RlKHNoYWRvd0FuY2VzdG9yKTsKICAgICB9CkBAIC0zMDUsMTIgKzMwNSwxMiBA
QCBWaXNpYmxlUG9zaXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9v
dChjb25zdCBQb3NpdGlvbiYgcG9zaXRpbwogICAgICAgICBwID0gaXNBdG9taWNOb2RlKHAuZGVw
cmVjYXRlZE5vZGUoKSkgPyBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHAuZGVwcmVjYXRlZE5v
ZGUoKSkgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKICAgICAKICAgICBpZiAo
cC5kZXByZWNhdGVkTm9kZSgpICYmIHAuZGVwcmVjYXRlZE5vZGUoKSAhPSBoaWdoZXN0Um9vdCAm
JiAhcC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihoaWdoZXN0Um9vdCkpCi0gICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7
CiAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwKTsKKyAgICByZXR1cm4gcDsKIH0K
IAotVmlzaWJsZVBvc2l0aW9uIGxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9zaXRpb25JblJv
b3QoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBOb2RlKiBoaWdoZXN0Um9vdCkKK1Bvc2l0aW9u
IGxhc3RFZGl0YWJsZVBvc2l0aW9uQmVmb3JlUG9zaXRpb25JblJvb3QoY29uc3QgUG9zaXRpb24m
IHBvc2l0aW9uLCBOb2RlKiBoaWdoZXN0Um9vdCkKIHsKICAgICAvLyBXaGVuIHBvc2l0aW9uIGZh
bGxzIGFmdGVyIGhpZ2hlc3RSb290LCB0aGUgcmVzdWx0IGlzIGVhc3kgdG8gY29tcHV0ZS4KICAg
ICBpZiAoY29tcGFyZVBvc2l0aW9ucyhwb3NpdGlvbiwgbGFzdFBvc2l0aW9uSW5Ob2RlKGhpZ2hl
c3RSb290KSkgPT0gMSkKQEAgLTMyMSw3ICszMjEsNyBAQCBWaXNpYmxlUG9zaXRpb24gbGFzdEVk
aXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRp
bwogICAgIGlmICgmcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+dHJlZVNjb3BlKCkgIT0gJmhp
Z2hlc3RSb290LT50cmVlU2NvcGUoKSkgewogICAgICAgICBOb2RlKiBzaGFkb3dBbmNlc3RvciA9
IGhpZ2hlc3RSb290LT50cmVlU2NvcGUoKS5hbmNlc3RvckluVGhpc1Njb3BlKHAuZGVwcmVjYXRl
ZE5vZGUoKSk7CiAgICAgICAgIGlmICghc2hhZG93QW5jZXN0b3IpCi0gICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAog
ICAgICAgICBwID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHNoYWRvd0FuY2VzdG9yKTsK
ICAgICB9CkBAIC0zMzAsOSArMzMwLDkgQEAgVmlzaWJsZVBvc2l0aW9uIGxhc3RFZGl0YWJsZVBv
c2l0aW9uQmVmb3JlUG9zaXRpb25JblJvb3QoY29uc3QgUG9zaXRpb24mIHBvc2l0aW8KICAgICAg
ICAgcCA9IGlzQXRvbWljTm9kZShwLmRlcHJlY2F0ZWROb2RlKCkpID8gcG9zaXRpb25JblBhcmVu
dEJlZm9yZU5vZGUocC5kZXByZWNhdGVkTm9kZSgpKSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZShwKTsKICAgICAKICAgICBpZiAocC5kZXByZWNhdGVkTm9kZSgpICYmIHAuZGVw
cmVjYXRlZE5vZGUoKSAhPSBoaWdoZXN0Um9vdCAmJiAhcC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rl
c2NlbmRhbnRPZihoaWdoZXN0Um9vdCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbihwKTsKKyAgICByZXR1cm4gcDsKIH0KIAogLy8gRklYTUU6IFRoZSBtZXRob2QgbmFt
ZSwgY29tbWVudCwgYW5kIGNvZGUgc2F5IHRocmVlIGRpZmZlcmVudCB0aGluZ3MgaGVyZSEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAppbmRleCAxMGNlZDAyNmIwYWYyNmVjNzE2ZWM4
NTlhYzA3OGE0MTFlYjBkMzM0Li45ZmU1ZjQ3NjBiNTQxMjgyZmE5NjZkYTczNDc3MzY2MTQwNGNl
Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCkBAIC0xNjEsNiArMTYxLDkg
QEAgaW5saW5lIFBvc2l0aW9uIGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUoTm9kZSogbm9kZSkK
ICAgICByZXR1cm4gZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpID8gcG9zaXRpb25BZnRlck5v
ZGUobm9kZSkgOiBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZSk7CiB9CiAKK1Bvc2l0aW9uIGZpcnN0
RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QoY29uc3QgUG9zaXRpb24mLCBOb2Rl
Kik7CitQb3NpdGlvbiBsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290KGNv
bnN0IFBvc2l0aW9uJiwgTm9kZSopOworCiAvLyBjb21wYXJpc2lvbiBmdW5jdGlvbnMgb24gUG9z
aXRpb24KICAgICAKIGludCBjb21wYXJlUG9zaXRpb25zKGNvbnN0IFBvc2l0aW9uJiwgY29uc3Qg
UG9zaXRpb24mKTsKQEAgLTE4NSw5ICsxODgsNyBAQCB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yTm9k
ZVJlbW92YWwoUG9zaXRpb24mLCBOb2RlJik7CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgCiAv
LyBGdW5jdGlvbnMgcmV0dXJuaW5nIFZpc2libGVQb3NpdGlvbgotICAgIAotVmlzaWJsZVBvc2l0
aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlvbkFmdGVyUG9zaXRpb25JblJvb3QoY29uc3QgUG9zaXRp
b24mLCBOb2RlKik7Ci1WaXNpYmxlUG9zaXRpb24gbGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQ
b3NpdGlvbkluUm9vdChjb25zdCBQb3NpdGlvbiYsIE5vZGUqKTsKKwogVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUoTm9kZSopOwogVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkFmdGVyTm9kZShOb2RlKik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3M2IxZjc1N2Y4NmQxYjE1ZmZl
ZThhYTdkMzQyODIzZGZlYzdiOTU5Li45NzdkMWNiMzRhMzRhMDc0MGM2ZWQ3MDVhNjkzNDI5MDk2
MGEzMmYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTEtMDQgIEppZXdlbiBUYW4gIDxq
aWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcg
QmxpbmsgbGF5b3V0IHRlc3QgZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaGlkZGVuLWNyYXNo
Lmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
OTI4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI3NDYzNTI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2Rl
bGV0ZS1oaWRkZW4tY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTUtMTEt
MDQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4aW5n
IHRlc3QgYWRkZWQgd2l0aCByMTkyMDIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2RlbGV0ZS1oaWRkZW4tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaGlkZGVuLWNyYXNoLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYWZhMGJmZDE1ODljMWNjYjUwZjRkNTMxYmFmNGRjNWM2NTEzMzkzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxldGUtaGlk
ZGVuLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTLiBXZWJLaXQgZGlkbid0
IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWxl
dGUtaGlkZGVuLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2Rl
bGV0ZS1oaWRkZW4tY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDM0YjBmYmUwZjE2YmY3YzdlOGYx
ODQ0YzNmMmVmOTI1ZTAyNDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9kZWxldGUtaGlkZGVuLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwzMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKKyAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykKKyAgICBzcGFuID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICBzcGFuLmNvbnRlbnRFZGl0YWJsZSA9
ICd0cnVlJzsKKyAgICBzcGFuLnRleHRDb250ZW50ID0gJ2Jhcic7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJzEnKTsKKyAgICBkb2N1bWVudC5ib2R5LnRl
eHRDb250ZW50ID0gIlBBU1MuIFdlYktpdCBkaWRuJ3QgY3Jhc2guIjsKK307Cis8L3NjcmlwdD4K
KworPHN0eWxlPgorKiB7IHZpc2liaWxpdHk6dmlzaWJsZTsgfQorLmlubGluZSB7IGRpc3BsYXk6
aW5saW5lOyB9CisqIDpvbmx5LWNoaWxkIHsgdmlzaWJpbGl0eTpoaWRkZW47IH0KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ZWRpdGluZ1Rlc3QoKT4KKzx0YWJsZT4KKzx0cj48dGQ+
PHNwYW4+PHRhYmxlPjwvdGFibGU+PHNwYW4+PC9zcGFuPjwvc3Bhbj48L3RkPjwvdHI+Cis8dHI+
PHRkPjx0ZCBjbGFzcz0iaW5saW5lIj5mb288L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>