<?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>191532</bug_id>
          
          <creation_ts>2018-11-11 18:28:01 -0800</creation_ts>
          <short_desc>ASSERTION FAILED: !m_embeddedObjectsToUpdate-&gt;contains(nullptr) in WebCore::FrameView::updateEmbeddedObjects</short_desc>
          <delta_ts>2020-02-18 20:57:36 -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>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.14</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Renata Hodovan">hodovan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rhodovan.u-szeged</cc>
    
    <cc>rniwa</cc>
    
    <cc>shihchieh_lee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477459</commentid>
    <comment_count>0</comment_count>
      <attachid>354522</attachid>
    <who name="Renata Hodovan">hodovan</who>
    <bug_when>2018-11-11 18:28:01 -0800</bug_when>
    <thetext>Created attachment 354522
Test

Load the attached test with debug WebKitTestRunner / MiniBrowser:

&lt;object&gt;
    &lt;object&gt;
        &lt;object&gt;a&lt;/object&gt;
    &lt;/object&gt;
&lt;object onbeforeload=&quot;event.target.parentNode.removeChild(event.target)&quot;&gt;&lt;/object&gt;


Checked revision: 2698c9fc7de
The issue can be reproduced both on Mac and GTK.

Backtrace:

ASSERTION FAILED: !m_embeddedObjectsToUpdate-&gt;contains(nullptr)
./page/FrameView.cpp(3198) : bool WebCore::FrameView::updateEmbeddedObjects()
1   0x58800fd39 WTFCrash
2   0x562b210b0 WTF::Vector&lt;unsigned char, 0ul, WTF::CrashOnOverflow, 16ul&gt;::Vector()
3   0x569bfa4f7 WebCore::FrameView::updateEmbeddedObjects()
4   0x569bc2858 WebCore::FrameView::updateEmbeddedObjectsTimerFired()
5   0x569bfac19 WebCore::FrameView::flushAnyPendingPostLayoutTasks()
6   0x5681c8008 WebCore::Document::updateLayoutIgnorePendingStylesheets(WebCore::Document::RunPostLayoutTasks)
7   0x568da092c WebCore::HTMLObjectElement::renderWidgetLoadingPlugin() const
8   0x568de198f WebCore::HTMLPlugInElement::pluginWidget(WebCore::HTMLPlugInElement::PluginLoadingPolicy) const
9   0x56763ba00 WebCore::pluginScriptObjectFromPluginViewBase(WebCore::HTMLPlugInElement&amp;, JSC::JSGlobalObject*)
10  0x56763b93b WebCore::pluginScriptObject(JSC::ExecState*, WebCore::JSHTMLElement*)
11  0x56763be94 WebCore::pluginElementCustomGetOwnPropertySlot(WebCore::JSHTMLElement*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
12  0x564a80e26 WebCore::JSHTMLObjectElement::getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
13  0x58902ce3c JSC::JSObject::getNonIndexPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
14  0x58902a93f bool JSC::JSObject::getPropertySlot&lt;false&gt;(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
15  0x58a94b205 JSC::JSValue::getPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;) const
16  0x58a9002ec JSC::JSValue::get(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;) const
17  0x58b5df82f llint_slow_path_get_by_id
18  0x588f99af2 llint_entry
19  0x588f92662 vmEntryToJavaScript
20  0x58b26a4d9 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
21  0x58b26b620 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
22  0x58ba764c7 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
23  0x58ba76a3d 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;)
24  0x58ba777d3 JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
25  0x5675435c6 WebCore::JSExecState::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
26  0x5675fb435 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;)
27  0x568416ffa WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul&gt;, WebCore::EventTarget::EventInvokePhase)
28  0x56840c64c WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase)
29  0x568505c73 WebCore::Node::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase)
30  0x5683cbebe WebCore::EventContext::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) const
31  0x568404fb3 WebCore::dispatchEventInDOM(WebCore::Event&amp;, WebCore::EventPath const&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479946</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-17 12:35:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/46151555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619366</commentid>
    <comment_count>2</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-14 22:32:46 -0800</bug_when>
    <thetext>The assertion is caused by reentrancy in FrameView::updateEmbeddedObjects(). Below is the complete call stack at the crash:

(lldb) bt
* thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
    frame #0: 0x0000000111ad86fe JavaScriptCore`::WTFCrash() at Assertions.cpp:303:5
    frame #1: 0x000000012f4bd2a0 WebCore`WTFCrashWithInfo((null)=3279, (null)=&quot;./page/FrameView.cpp&quot;, (null)=&quot;bool WebCore::FrameView::updateEmbeddedObjects()&quot;, (null)=2542) at Assertions.h:618:5
  * frame #2: 0x000000013770d945 WebCore`WebCore::FrameView::updateEmbeddedObjects(this=0x00006190000e5680) at FrameView.cpp:3279:5
    frame #3: 0x00000001376d7767 WebCore`WebCore::FrameView::updateEmbeddedObjectsTimerFired(this=0x00006190000e5680) at FrameView.cpp:3297:13
    frame #4: 0x000000013770df39 WebCore`WebCore::FrameView::flushAnyPendingPostLayoutTasks(this=0x00006190000e5680) at FrameView.cpp:3306:9
    frame #5: 0x0000000135913166 WebCore`WebCore::Document::updateLayoutIgnorePendingStylesheets(this={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }, runPostLayoutTasks=Synchronously) at Document.cpp:2131:17
    frame #6: 0x000000013651fccc WebCore`WebCore::HTMLObjectElement::renderWidgetLoadingPlugin(this=0x00006150000acd80) const at HTMLObjectElement.cpp:85:16
    frame #7: 0x0000000136541491 WebCore`WebCore::HTMLPlugInElement::pluginWidget(this=0x00006150000acd80, loadPolicy=Load) const at HTMLPlugInElement.cpp:153:76
    frame #8: 0x0000000134da8fce WebCore`WebCore::pluginScriptObjectFromPluginViewBase(pluginElement=0x00006150000acd80, globalObject=0x000061f0000356e8) at JSPluginElementFunctions.cpp:51:42
    frame #9: 0x0000000134da8f0b WebCore`WebCore::pluginScriptObject(lexicalGlobalObject=0x000061f0000356e8, jsHTMLElement=0x000062d000180060) at JSPluginElementFunctions.cpp:84:30
    frame #10: 0x0000000134da9464 WebCore`WebCore::pluginElementCustomGetOwnPropertySlot(element=0x000062d000180060, lexicalGlobalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69be0c0, slot=0x00007ffee69bf220) at JSPluginElementFunctions.cpp:120:30
    frame #11: 0x00000001311aa8a6 WebCore`WebCore::JSHTMLObjectElement::getOwnPropertySlot(object=0x000062d000180060, lexicalGlobalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69be2e0, slot=0x00007ffee69bf220) at JSHTMLObjectElement.cpp:233:9
    frame #12: 0x0000000115eca18d JavaScriptCore`JSC::JSObject::getNonIndexPropertySlot(this=0x000062d000180060, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69be4a0, slot=0x00007ffee69bf220) at JSObjectInlines.h:168:28
    frame #13: 0x0000000115bec260 JavaScriptCore`bool JSC::JSObject::getPropertySlot&lt;false&gt;(this=0x000062d000180060, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69be8a0, slot=0x00007ffee69bf220) at JSObject.h:1428:28
    frame #14: 0x0000000115c1ad64 JavaScriptCore`JSC::JSValue::getPropertySlot(this=0x00007ffee69bf1f0, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69bebe0, slot=0x00007ffee69bf220) const at JSCJSValueInlines.h:925:5
    frame #15: 0x00000001158abd16 JavaScriptCore`JSC::JSValue::get(this=0x00007ffee69bf1f0, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69beea0, slot=0x00007ffee69bf220) const at JSCJSValueInlines.h:882:20
    frame #16: 0x0000000115450acc JavaScriptCore`::llint_slow_path_get_by_id(callFrame=0x00007ffee69bf8d0, pc=0x00006070005f7e1c) at LLIntSlowPaths.cpp:763:32
    frame #17: 0x0000000112aeeb1a JavaScriptCore`llint_entry at LowLevelInterpreter64.asm:97
    frame #18: 0x0000000112b01b65 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:1023
    frame #19: 0x0000000112ae48d2 JavaScriptCore`vmEntryToJavaScript at LowLevelInterpreter64.asm:296
    frame #20: 0x00000001150db707 JavaScriptCore`JSC::JITCode::execute(this=0x0000604000de6a50, vm=0x000062e000018400, protoCallFrame=0x00007ffee69bfe00) at JITCodeInlines.h:38:38
    frame #21: 0x00000001150dc7af JavaScriptCore`JSC::Interpreter::executeCall(this=0x000060200001dd90, lexicalGlobalObject=0x000061f0000356e8, function=0x000062d00011e1a0, callType=JS, callData=0x00007ffee69c0dc0, thisValue=JSValue @ 0x00007ffee69bfc80, args=0x00007ffee69c10a0) at Interpreter.cpp:910:81
    frame #22: 0x000000011596ad55 JavaScriptCore`JSC::call(globalObject=0x000061f0000356e8, functionObject=JSValue @ 0x00007ffee69c0260, callType=JS, callData=0x00007ffee69c0dc0, thisValue=JSValue @ 0x00007ffee69c0280, args=0x00007ffee69c10a0) at CallData.cpp:59:28
    frame #23: 0x000000011596b2d2 JavaScriptCore`JSC::call(globalObject=0x000061f0000356e8, functionObject=JSValue @ 0x00007ffee69c0480, callType=JS, callData=0x00007ffee69c0dc0, thisValue=JSValue @ 0x00007ffee69c04a0, args=0x00007ffee69c10a0, returnedException=0x00007ffee69c1020) at CallData.cpp:66:22
    frame #24: 0x000000011596c05e JavaScriptCore`JSC::profiledCall(globalObject=0x000061f0000356e8, reason=Other, functionObject=JSValue @ 0x00007ffee69c07c0, callType=JS, callData=0x00007ffee69c0dc0, thisValue=JSValue @ 0x00007ffee69c07e0, args=0x00007ffee69c10a0, returnedException=0x00007ffee69c1020) at CallData.cpp:87:12
    frame #25: 0x0000000134c84ec2 WebCore`WebCore::JSExecState::profiledCall(lexicalGlobalObject=0x000061f0000356e8, reason=Other, functionObject=JSValue @ 0x00007ffee69c0a60, callType=JS, callData=0x00007ffee69c0dc0, thisValue=JSValue @ 0x00007ffee69c0a80, args=0x00007ffee69c10a0, returnedException=0x00007ffee69c1020) at JSExecState.h:73:16
    frame #26: 0x0000000134cd31c8 WebCore`WebCore::JSEventListener::handleEvent(this=0x000060b0002d14a0, scriptExecutionContext={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }, event=0x00006080002804a0) at JSEventListener.cpp:180:22
    frame #27: 0x0000000135b939a4 WebCore`WebCore::EventTarget::innerInvokeEventListeners(this=0x000061400046b040, event=0x00006080002804a0, listeners={ size = 1, capacity = 1 }, phase=Bubbling) at EventTarget.cpp:308:40
    frame #28: 0x0000000135b8aa86 WebCore`WebCore::EventTarget::fireEventListeners(this=0x000061400046b040, event=0x00006080002804a0, phase=Bubbling) at EventTarget.cpp:246:9
    frame #29: 0x0000000135ca37c3 WebCore`WebCore::Node::handleLocalEvents(this=0x000061400046b040, event=0x00006080002804a0, phase=Bubbling) at Node.cpp:2358:5
    frame #30: 0x0000000135b619e2 WebCore`WebCore::EventContext::handleLocalEvents(this=0x0000604000de8a50, event=0x00006080002804a0, phase=Bubbling) const at EventContext.cpp:55:17
    frame #31: 0x0000000135b62f0c WebCore`WebCore::dispatchEventInDOM(event=0x00006080002804a0, path=0x00007ffee69c1d40) at EventDispatcher.cpp:100:22
    frame #32: 0x0000000135b62712 WebCore`WebCore::EventDispatcher::dispatchEvent(node=0x000061400046b040, event=0x00006080002804a0) at EventDispatcher.cpp:154:9
    frame #33: 0x0000000135ca381d WebCore`WebCore::Node::dispatchEvent(this=0x000061400046b040, event=0x00006080002804a0) at Node.cpp:2368:5
    frame #34: 0x0000000135ca42f4 WebCore`WebCore::Node::dispatchBeforeLoadEvent(this=0x000061400046b040, sourceURL={ length = 16, contents = &apos;data:text/plain;&apos; }) at Node.cpp:2405:5
    frame #35: 0x0000000136541edf WebCore`WebCore::HTMLPlugInElement::guardedDispatchBeforeLoadEvent(this=0x000061400046b040, sourceURL={ length = 16, contents = &apos;data:text/plain;&apos; }) at HTMLPlugInElement.cpp:140:77
    frame #36: 0x0000000136364546 WebCore`WebCore::HTMLEmbedElement::updateWidget(this=0x000061400046b040, createPlugins=Yes) at HTMLEmbedElement.cpp:175:34
    frame #37: 0x000000013770d4ad WebCore`WebCore::FrameView::updateEmbeddedObject(this=0x00006190000e5680, embeddedObject=0x000061300015e3c0) at FrameView.cpp:3258:27
    frame #38: 0x000000013770da48 WebCore`WebCore::FrameView::updateEmbeddedObjects(this=0x00006190000e5680) at FrameView.cpp:3286:9
    frame #39: 0x00000001376d7767 WebCore`WebCore::FrameView::updateEmbeddedObjectsTimerFired(this=0x00006190000e5680) at FrameView.cpp:3297:13
    frame #40: 0x000000013770df39 WebCore`WebCore::FrameView::flushAnyPendingPostLayoutTasks(this=0x00006190000e5680) at FrameView.cpp:3306:9
    frame #41: 0x0000000135913166 WebCore`WebCore::Document::updateLayoutIgnorePendingStylesheets(this={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }, runPostLayoutTasks=Synchronously) at Document.cpp:2131:17
    frame #42: 0x000000013651fccc WebCore`WebCore::HTMLObjectElement::renderWidgetLoadingPlugin(this=0x00006150000ab700) const at HTMLObjectElement.cpp:85:16
    frame #43: 0x0000000136541491 WebCore`WebCore::HTMLPlugInElement::pluginWidget(this=0x00006150000ab700, loadPolicy=Load) const at HTMLPlugInElement.cpp:153:76
    frame #44: 0x0000000134da8fce WebCore`WebCore::pluginScriptObjectFromPluginViewBase(pluginElement=0x00006150000ab700, globalObject=0x000061f0000356e8) at JSPluginElementFunctions.cpp:51:42
    frame #45: 0x0000000134da8f0b WebCore`WebCore::pluginScriptObject(lexicalGlobalObject=0x000061f0000356e8, jsHTMLElement=0x000062d000180030) at JSPluginElementFunctions.cpp:84:30
    frame #46: 0x0000000134da9464 WebCore`WebCore::pluginElementCustomGetOwnPropertySlot(element=0x000062d000180030, lexicalGlobalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69c29a0, slot=0x00007ffee69c3b00) at JSPluginElementFunctions.cpp:120:30
    frame #47: 0x00000001311aa8a6 WebCore`WebCore::JSHTMLObjectElement::getOwnPropertySlot(object=0x000062d000180030, lexicalGlobalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69c2bc0, slot=0x00007ffee69c3b00) at JSHTMLObjectElement.cpp:233:9
    frame #48: 0x0000000115eca18d JavaScriptCore`JSC::JSObject::getNonIndexPropertySlot(this=0x000062d000180030, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69c2d80, slot=0x00007ffee69c3b00) at JSObjectInlines.h:168:28
    frame #49: 0x0000000115bec260 JavaScriptCore`bool JSC::JSObject::getPropertySlot&lt;false&gt;(this=0x000062d000180030, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69c3180, slot=0x00007ffee69c3b00) at JSObject.h:1428:28
    frame #50: 0x0000000115c1ad64 JavaScriptCore`JSC::JSValue::getPropertySlot(this=0x00007ffee69c3ad0, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69c34c0, slot=0x00007ffee69c3b00) const at JSCJSValueInlines.h:925:5
    frame #51: 0x00000001158abd16 JavaScriptCore`JSC::JSValue::get(this=0x00007ffee69c3ad0, globalObject=0x000061f0000356e8, propertyName=PropertyName @ 0x00007ffee69c3780, slot=0x00007ffee69c3b00) const at JSCJSValueInlines.h:882:20
    frame #52: 0x0000000115450acc JavaScriptCore`::llint_slow_path_get_by_id(callFrame=0x00007ffee69c41b0, pc=0x00006070005f7e1c) at LLIntSlowPaths.cpp:763:32
    frame #53: 0x0000000112aeeb1a JavaScriptCore`llint_entry at LowLevelInterpreter64.asm:97
    frame #54: 0x0000000112b01c08 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:1023
    frame #55: 0x0000000112ae48d2 JavaScriptCore`vmEntryToJavaScript at LowLevelInterpreter64.asm:296
    frame #56: 0x00000001150db707 JavaScriptCore`JSC::JITCode::execute(this=0x0000604000de6a50, vm=0x000062e000018400, protoCallFrame=0x00007ffee69c46e0) at JITCodeInlines.h:38:38
    frame #57: 0x00000001150dc7af JavaScriptCore`JSC::Interpreter::executeCall(this=0x000060200001dd90, lexicalGlobalObject=0x000061f0000356e8, function=0x000062d00011e1a0, callType=JS, callData=0x00007ffee69c56a0, thisValue=JSValue @ 0x00007ffee69c4560, args=0x00007ffee69c5980) at Interpreter.cpp:910:81
    frame #58: 0x000000011596ad55 JavaScriptCore`JSC::call(globalObject=0x000061f0000356e8, functionObject=JSValue @ 0x00007ffee69c4b40, callType=JS, callData=0x00007ffee69c56a0, thisValue=JSValue @ 0x00007ffee69c4b60, args=0x00007ffee69c5980) at CallData.cpp:59:28
    frame #59: 0x000000011596b2d2 JavaScriptCore`JSC::call(globalObject=0x000061f0000356e8, functionObject=JSValue @ 0x00007ffee69c4d60, callType=JS, callData=0x00007ffee69c56a0, thisValue=JSValue @ 0x00007ffee69c4d80, args=0x00007ffee69c5980, returnedException=0x00007ffee69c5900) at CallData.cpp:66:22
    frame #60: 0x000000011596c05e JavaScriptCore`JSC::profiledCall(globalObject=0x000061f0000356e8, reason=Other, functionObject=JSValue @ 0x00007ffee69c50a0, callType=JS, callData=0x00007ffee69c56a0, thisValue=JSValue @ 0x00007ffee69c50c0, args=0x00007ffee69c5980, returnedException=0x00007ffee69c5900) at CallData.cpp:87:12
    frame #61: 0x0000000134c84ec2 WebCore`WebCore::JSExecState::profiledCall(lexicalGlobalObject=0x000061f0000356e8, reason=Other, functionObject=JSValue @ 0x00007ffee69c5340, callType=JS, callData=0x00007ffee69c56a0, thisValue=JSValue @ 0x00007ffee69c5360, args=0x00007ffee69c5980, returnedException=0x00007ffee69c5900) at JSExecState.h:73:16
    frame #62: 0x0000000134cd31c8 WebCore`WebCore::JSEventListener::handleEvent(this=0x000060b0002d14a0, scriptExecutionContext={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }, event=0x000060800027f7a0) at JSEventListener.cpp:180:22
    frame #63: 0x0000000135b939a4 WebCore`WebCore::EventTarget::innerInvokeEventListeners(this=0x000061400046b040, event=0x000060800027f7a0, listeners={ size = 1, capacity = 1 }, phase=Bubbling) at EventTarget.cpp:308:40
    frame #64: 0x0000000135b8aa86 WebCore`WebCore::EventTarget::fireEventListeners(this=0x000061400046b040, event=0x000060800027f7a0, phase=Bubbling) at EventTarget.cpp:246:9
    frame #65: 0x0000000135ca37c3 WebCore`WebCore::Node::handleLocalEvents(this=0x000061400046b040, event=0x000060800027f7a0, phase=Bubbling) at Node.cpp:2358:5
    frame #66: 0x0000000135b619e2 WebCore`WebCore::EventContext::handleLocalEvents(this=0x0000604000de59d0, event=0x000060800027f7a0, phase=Bubbling) const at EventContext.cpp:55:17
    frame #67: 0x0000000135b62f0c WebCore`WebCore::dispatchEventInDOM(event=0x000060800027f7a0, path=0x00007ffee69c6620) at EventDispatcher.cpp:100:22
    frame #68: 0x0000000135b62712 WebCore`WebCore::EventDispatcher::dispatchEvent(node=0x000061400046b040, event=0x000060800027f7a0) at EventDispatcher.cpp:154:9
    frame #69: 0x0000000135ca381d WebCore`WebCore::Node::dispatchEvent(this=0x000061400046b040, event=0x000060800027f7a0) at Node.cpp:2368:5
    frame #70: 0x0000000135ca42f4 WebCore`WebCore::Node::dispatchBeforeLoadEvent(this=0x000061400046b040, sourceURL={ length = 16, contents = &apos;data:text/plain;&apos; }) at Node.cpp:2405:5
    frame #71: 0x0000000136541edf WebCore`WebCore::HTMLPlugInElement::guardedDispatchBeforeLoadEvent(this=0x000061400046b040, sourceURL={ length = 16, contents = &apos;data:text/plain;&apos; }) at HTMLPlugInElement.cpp:140:77
    frame #72: 0x0000000136364546 WebCore`WebCore::HTMLEmbedElement::updateWidget(this=0x000061400046b040, createPlugins=No) at HTMLEmbedElement.cpp:175:34
    frame #73: 0x0000000136549dd4 WebCore`WebCore::HTMLPlugInImageElement::updateAfterStyleResolution(this=0x000061400046b040) at HTMLPlugInImageElement.cpp:298:17
    frame #74: 0x0000000136578cad WebCore`WebCore::HTMLPlugInImageElement::scheduleUpdateForAfterStyleResolution(this=0x00006020000f2078)::$_0::operator()() const at HTMLPlugInImageElement.cpp:276:24
    frame #75: 0x0000000136578769 WebCore`WTF::Detail::CallableWrapper&lt;WebCore::HTMLPlugInImageElement::scheduleUpdateForAfterStyleResolution()::$_0, void&gt;::call(this=0x00006020000f2070) at Function.h:52:39
    frame #76: 0x000000012f4e0002 WebCore`WTF::Function&lt;void ()&gt;::operator(this=0x000060c0005b2700)() const at Function.h:84:35
    frame #77: 0x00000001398a0b6e WebCore`WebCore::Style::PostResolutionCallbackDisabler::~PostResolutionCallbackDisabler(this=0x00007ffee69c6f80) at StyleTreeResolver.cpp:644:17
    frame #78: 0x00000001398a0da5 WebCore`WebCore::Style::PostResolutionCallbackDisabler::~PostResolutionCallbackDisabler(this=0x00007ffee69c6f80) at StyleTreeResolver.cpp:638:1
    frame #79: 0x000000013591997c WebCore`WebCore::Document::resolveStyle(this={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }, type=Rebuild) at Document.cpp:2017:5
    frame #80: 0x000000013591ac03 WebCore`WebCore::Document::updateStyleIfNeeded(this={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }) at Document.cpp:2087:5
    frame #81: 0x0000000135955d7f WebCore`WebCore::Document::finishedParsing(this={ origin = file://, url = file:///Users/jacklee/browser2/56695849/min-56695849-reduction.html, inMainFrame = 1, backForwardCacheState = NotInBackForwardCache }) at Document.cpp:5834:9
    frame #82: 0x0000000136932e98 WebCore`WebCore::HTMLConstructionSite::finishedParsing(this=0x000061200027ace0) at HTMLConstructionSite.cpp:419:16
    frame #83: 0x00000001369babee WebCore`WebCore::HTMLTreeBuilder::finished(this=0x000061200027acc0) at HTMLTreeBuilder.cpp:2843:12
    frame #84: 0x0000000136940e12 WebCore`WebCore::HTMLDocumentParser::end(this=0x0000625000af0100) at HTMLDocumentParser.cpp:430:20
    frame #85: 0x000000013693cee2 WebCore`WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd(this=0x0000625000af0100) at HTMLDocumentParser.cpp:439:5
    frame #86: 0x000000013693cb1f WebCore`WebCore::HTMLDocumentParser::prepareToStopParsing(this=0x0000625000af0100) at HTMLDocumentParser.cpp:144:5
    frame #87: 0x0000000136940f2e WebCore`WebCore::HTMLDocumentParser::attemptToEnd(this=0x0000625000af0100) at HTMLDocumentParser.cpp:451:5
    frame #88: 0x0000000136941064 WebCore`WebCore::HTMLDocumentParser::finish(this=0x0000625000af0100) at HTMLDocumentParser.cpp:479:5
    frame #89: 0x00000001371aaf90 WebCore`WebCore::DocumentWriter::end(this=0x000062000000a110) at DocumentWriter.cpp:288:15
    frame #90: 0x00000001371a8ab2 WebCore`WebCore::DocumentLoader::finishedLoading(this=0x000062000000a080) at DocumentLoader.cpp:446:14
    frame #91: 0x00000001371a81e7 WebCore`WebCore::DocumentLoader::notifyFinished(this=0x000062000000a080, resource=0x000061a000c71a80) at DocumentLoader.cpp:393:9
    frame #92: 0x00000001374af160 WebCore`WebCore::CachedResource::checkNotify(this=0x000061a000c71a80) at CachedResource.cpp:355:17
    frame #93: 0x00000001374a60c8 WebCore`WebCore::CachedResource::finishLoading(this=0x000061a000c71a80, (null)=0x0000606000f8f4e0) at CachedResource.cpp:371:5
    frame #94: 0x00000001374a8838 WebCore`WebCore::CachedRawResource::finishLoading(this=0x000061a000c71a80, data=0x0000606000f8f4e0) at CachedRawResource.cpp:120:21
    frame #95: 0x00000001373b3fa5 WebCore`WebCore::SubresourceLoader::didFinishLoading(this=0x000061b000042180, networkLoadMetrics=0x00007ffee69c8a80) at SubresourceLoader.cpp:701:17
    frame #96: 0x000000013738085f WebCore`WebCore::ResourceLoader::didFinishLoading(this=0x000061b000042180, (null)=0x0000603000284c50) at ResourceLoader.cpp:703:5
    frame #97: 0x000000013a71316c WebCore`-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]::$_7::operator(this=0x00006030002879b8)() at WebCoreResourceHandleAsOperationQueueDelegate.mm:321:29
    frame #98: 0x000000013a712de9 WebCore`WTF::Detail::CallableWrapper&lt;-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]::$_7, void&gt;::call(this=0x00006030002879b0) at Function.h:52:39
    frame #99: 0x0000000111b3a272 JavaScriptCore`WTF::Function&lt;void ()&gt;::operator(this=0x00007ffee69c8d60)() const at Function.h:84:35
    frame #100: 0x0000000111bea9d6 JavaScriptCore`WTF::dispatchFunctionsFromMainThread() at MainThread.cpp:94:9
    frame #101: 0x0000000111bf01f5 JavaScriptCore`::-[JSWTFMainThreadCaller call](self=0x000060200000a910, _cmd=&quot;call&quot;) at MainThreadCocoa.mm:54:5
    frame #102: 0x00007fff33ef128a Foundation`__NSThreadPerformPerform + 254
    frame #103: 0x00007fff317d8b81 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #104: 0x00007fff317d8b20 CoreFoundation`__CFRunLoopDoSource0 + 103
    frame #105: 0x00007fff317bc154 CoreFoundation`__CFRunLoopDoSources0 + 209
    frame #106: 0x00007fff317bb760 CoreFoundation`__CFRunLoopRun + 1272
    frame #107: 0x00007fff317bafe3 CoreFoundation`CFRunLoopRunSpecific + 499
    frame #108: 0x0000000109292e63 DumpRenderTree`runTest(inputLine=&quot;../../../56695849/min-56695849-reduction.html&quot;) at DumpRenderTree.mm:2119:13
    frame #109: 0x000000010928f9ba DumpRenderTree`dumpRenderTree(argc=2, argv=0x00007ffee69ca9d0) at DumpRenderTree.mm:1348:13
    frame #110: 0x000000010929441c DumpRenderTree`DumpRenderTreeMain(argc=2, argv=0x00007ffee69ca9d0) at DumpRenderTree.mm:1457:9
    frame #111: 0x00000001093e4602 DumpRenderTree`main(argc=2, argv=0x00007ffee69ca9d0) at DumpRenderTreeMain.mm:34:12
    frame #112: 0x00007fff68c022e5 libdyld.dylib`start + 1
(lldb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619383</commentid>
    <comment_count>3</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-14 23:17:52 -0800</bug_when>
    <thetext>Without the assertion (in release build), there is no crash. The only issue with recursively calling updateEmbeddedObjectsTimerFired causes the first nullptr embeddedObject (marker) to be flushed by the recursive call, so the update doesn&apos;t stop at the intended marker position, potentially prolong the process and defeat the purpose of putting a marker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619384</commentid>
    <comment_count>4</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-14 23:19:58 -0800</bug_when>
    <thetext>2/14/20, 7:55 AM Alan Bujtas:
Sadly RenderCombineText triggers layout/post layout task running on every style change even with diff = equal (that’s why we end up running flushAnyPendingPostLayoutTasks all over again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619388</commentid>
    <comment_count>5</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-15 00:03:30 -0800</bug_when>
    <thetext>Simon and Alan suggested that we add reentrancy check for FrameView::updateEmbeddedObjects().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619390</commentid>
    <comment_count>6</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-15 00:08:53 -0800</bug_when>
    <thetext>New test case is reported in &lt;rdar://problem/56695849&gt;, reduced by Simon and Alan.

&lt;style&gt;
body {
    -webkit-writing-mode: vertical-lr;
    -webkit-text-combine: horizontal;
}
::selection {
    color: red;
}
&lt;/style&gt;
&lt;script&gt;
    function eventhandler() {
        document.vlinkColor = &quot;red&quot;;
        document.createElement(&quot;object&quot;).style.color = &quot;red&quot;;
    }
&lt;/script&gt;
&lt;embed src=&quot;data:text/plain;&quot; onbeforeload=eventhandler()&gt;foo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619394</commentid>
    <comment_count>7</comment_count>
      <attachid>390859</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-15 00:20:40 -0800</bug_when>
    <thetext>Created attachment 390859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619422</commentid>
    <comment_count>8</comment_count>
      <attachid>390859</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-15 10:27:19 -0800</bug_when>
    <thetext>Comment on attachment 390859
Patch

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

&gt; Source/WebCore/page/FrameView.h:831
&gt;      HashSet&lt;Widget*&gt; m_widgetsInRenderTree;
&gt; +    bool m_inUpdateEmbeddedObjects { false };
&gt;      std::unique_ptr&lt;ListHashSet&lt;RenderEmbeddedObject*&gt;&gt; m_embeddedObjectsToUpdate;

This is introducing 3 bytes of wasted padding. Move the bool up with some other bools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619429</commentid>
    <comment_count>9</comment_count>
      <attachid>390870</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-15 13:17:13 -0800</bug_when>
    <thetext>Created attachment 390870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619430</commentid>
    <comment_count>10</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-15 13:18:46 -0800</bug_when>
    <thetext>Thanks Simon! It&apos;s moved to the bottom of the private member section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619511</commentid>
    <comment_count>11</comment_count>
      <attachid>390870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-16 15:06:55 -0800</bug_when>
    <thetext>Comment on attachment 390870
Patch

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

&gt; Source/WebCore/html/HTMLEmbedElement.cpp:84
&gt; +    if (!view || (!view-&gt;inUpdateEmbeddedObjects() &amp;&amp; !view-&gt;layoutContext().isInLayout() &amp;&amp; !view-&gt;isPainting())) {

Can we put a helper function somewhere so we don’t need to repeat this logic in both HTMLEmbedElement and HTMLObjectElement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619575</commentid>
    <comment_count>12</comment_count>
      <attachid>390900</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-16 21:38:01 -0800</bug_when>
    <thetext>Created attachment 390900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619577</commentid>
    <comment_count>13</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-16 21:39:34 -0800</bug_when>
    <thetext>Thanks, Darin. The common code is moved to the inherited class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619584</commentid>
    <comment_count>14</comment_count>
      <attachid>390903</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-16 22:39:58 -0800</bug_when>
    <thetext>Created attachment 390903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619588</commentid>
    <comment_count>15</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-16 23:15:43 -0800</bug_when>
    <thetext>In function findWidgetRenderer, if the parentNode&apos;s renderer is not a &lt;RenderWidget&gt;, should we continue to search for the next parent?

It is not a problem in this test case. Saw this when I was trying to understand the related functions.

 static inline RenderWidget* findWidgetRenderer(const Node* node)
 {
-    if (!node-&gt;renderer()) {
-        do {
-            node = node-&gt;parentNode();
-        } while (node &amp;&amp; !is&lt;HTMLObjectElement&gt;(*node));
-    }
-
-    if (node &amp;&amp; is&lt;RenderWidget&gt;(node-&gt;renderer()))
-        return downcast&lt;RenderWidget&gt;(node-&gt;renderer());
+    do {
+        node = node-&gt;parentNode();
+    } while (node &amp;&amp; (!is&lt;HTMLObjectElement&gt;(*node) || !node-&gt;renderer() || is&lt;RenderWidget&gt;(node-&gt;renderer())));
 
-    return nullptr;
+    return node? downcast&lt;RenderWidget&gt;(node-&gt;renderer()) : nullptr;
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619800</commentid>
    <comment_count>16</comment_count>
      <attachid>390903</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-17 12:31:18 -0800</bug_when>
    <thetext>Comment on attachment 390903
Patch

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

Looks good

&gt; Source/WebCore/html/HTMLAppletElement.cpp:99
&gt; +    return canEmbedJava()? HTMLPlugInElement::renderWidgetLoadingPlugin() : nullptr;

WebKit coding style: Need a space before the &quot;?&quot; here.

When calling through to &quot;super&quot;, I think it’s usually better style to write the actual base class, HTMLPlugInImageElement, rather than the class that has the function in it skipping a level of inheritance HTMLPlugInElement.

&gt; Source/WebCore/html/HTMLEmbedElement.cpp:85
&gt; +    RenderWidget* widget = HTMLPlugInElement::renderWidgetLoadingPlugin();
&gt; +    
&gt; +    return widget? widget : findWidgetRenderer(this);

Ditto, same two comments here.

&gt; Source/WebCore/html/HTMLPlugInElement.cpp:169
&gt; +    return renderWidget(); // This will return 0 if the renderer is not a RenderWidget.

I think we should say nullptr rather than &quot;0&quot; in this comment. I know we are just moving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619898</commentid>
    <comment_count>17</comment_count>
      <attachid>390985</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-17 14:47:46 -0800</bug_when>
    <thetext>Created attachment 390985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619911</commentid>
    <comment_count>18</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-17 14:56:41 -0800</bug_when>
    <thetext>Darin, Simon, thanks for the great advices! It really helps me learn the good practices here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620518</commentid>
    <comment_count>19</comment_count>
      <attachid>390985</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-18 20:57:34 -0800</bug_when>
    <thetext>Comment on attachment 390985
Patch

Clearing flags on attachment: 390985

Committed r256905: &lt;https://trac.webkit.org/changeset/256905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620519</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-18 20:57:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>354522</attachid>
            <date>2018-11-11 18:28:01 -0800</date>
            <delta_ts>2018-11-11 18:28:01 -0800</delta_ts>
            <desc>Test</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>146</size>
            <attacher name="Renata Hodovan">hodovan</attacher>
            
              <data encoding="base64">PG9iamVjdD4KICAgIDxvYmplY3Q+CiAgICAgICAgPG9iamVjdD5hPC9vYmplY3Q+CiAgICA8L29i
amVjdD4KPG9iamVjdCBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdldC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGV2ZW50LnRhcmdldCkiPjwvb2JqZWN0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390859</attachid>
            <date>2020-02-15 00:20:40 -0800</date>
            <delta_ts>2020-02-15 13:17:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191532-20200215002039.patch</filename>
            <type>text/plain</type>
            <size>8783</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMDFmOThkZDliYTEwZmMzMDkxNzk3ZjNhZWM5YzZm
MDY4NTdiYTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAyLTE1ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6ICFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5jb250YWlucyhudWxscHRyKSBpbiBXZWJD
b3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTMyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjE1MTU1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgcmVlbnRyYW5jeSBwcm90ZWN0aW9uIGZvciBGcmFtZVZpZXc6OnVwZGF0ZUVt
YmVkZGVkT2JqZWN0cygpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC90ZXh0Q29tYmluZS11
cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRl
cldpZGdldExvYWRpbmdQbHVnaW4gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJXaWRn
ZXRMb2FkaW5nUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJXaWRnZXRM
b2FkaW5nUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cyk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAyMC0wMi0xMCAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0NjA1NSk6IERhdGEgZGV0
ZWN0ZWQgVVJMcyBhcmUgbm8gbG9uZ2VyIGJsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5jcHAKaW5kZXggNDQ1MTE2NzNjZDdkNmVhMTczYjg1NmU1ZDdjMGY3MjNmYmI2
ZmIyNi4uZDg2YzYxYmM3M2QzZjk3YzNjOWVjZTFjZjdhOWZkZWM1NDVkZDkzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTk4LDExICs5OCwxNCBAQCBS
ZW5kZXJXaWRnZXQqIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2lu
KCkgY29uc3QKIHsKICAgICBpZiAoIWNhbkVtYmVkSmF2YSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVj
YXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAotICAgIC8vIHdoZW4gSmF2YVNjcmlwdCBjb2Rl
IGFjY2Vzc2VzIHRoZSBwbHVnaW4uCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vMTY4OTM3MDg+IENo
ZWNrIGlmIGRpc3BhdGNoaW5nIGV2ZW50cyBoZXJlIGlzIHNhZmUuCi0gICAgZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlv
dXRUYXNrczo6U3luY2hyb25vdXNseSk7CisgICAgCisgICAgUmVmUHRyPEZyYW1lVmlldz4gdmll
dyA9IGRvY3VtZW50KCkudmlldygpOworICAgIGlmICghdmlldyB8fCAoIXZpZXctPmluVXBkYXRl
RW1iZWRkZWRPYmplY3RzKCkgJiYgIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkg
JiYgIXZpZXctPmlzUGFpbnRpbmcoKSkpIHsKKyAgICAgICAgLy8gTmVlZHMgdG8gbG9hZCB0aGUg
cGx1Z2luIGltbWVkaWF0ZWRseSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAg
ICAgIC8vIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGFjY2Vzc2VzIHRoZSBwbHVnaW4uCisgICAgICAg
IC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVudHMg
aGVyZSBpcyBzYWZlLgorICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5
KTsKKyAgICB9CiAgICAgcmV0dXJuIHJlbmRlcldpZGdldCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCA5MTcwMWUxNDQ0ZWYyODYwODVmNzIxMjQw
YmVmMGFiNmMyNzYxNjEyLi5mYTllMjNhOWVhYzY3MTNjYjIzZmU5MGUwNGUzYTU1ZmNmNDgyYWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJXaWRnZXQqIGZpbmRXaWRnZXRSZW5kZXJlcihjb25z
dCBOb2RlKiBub2RlKQogUmVuZGVyV2lkZ2V0KiBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJXaWRn
ZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0g
ZG9jdW1lbnQoKS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3IHx8ICghdmlldy0+bGF5b3V0Q29udGV4
dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCkgJiYgIXZpZXctPmlzUGFpbnRpbmcoKSkpIHsKKyAg
ICBpZiAoIXZpZXcgfHwgKCF2aWV3LT5pblVwZGF0ZUVtYmVkZGVkT2JqZWN0cygpICYmICF2aWV3
LT5sYXlvdXRDb250ZXh0KCkuaXNJbkxheW91dCgpICYmICF2aWV3LT5pc1BhaW50aW5nKCkpKSB7
CiAgICAgICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVz
ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAogICAgICAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29k
ZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgogICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly8xNjg5Mzcw
OD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZlbnRzIGhlcmUgaXMgc2FmZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggNmZkNDJlMTg2YzgwZjQ5NTgzNzU4
YTE2NTdiNGQyMTg3MmNjNjY5Ny4uMmIxODY3MmRiMjQ2M2UzNWU5NWMyM2FmZmU3OTNkOTUzZjll
MWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTc5
LDEwICs3OSwxMyBAQCBSZWY8SFRNTE9iamVjdEVsZW1lbnQ+IEhUTUxPYmplY3RFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogCiBSZW5kZXJXaWRnZXQqIEhU
TUxPYmplY3RFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKIHsKLSAg
ICAvLyBOZWVkcyB0byBsb2FkIHRoZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQKLSAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0
aGUgcGx1Z2luLgotICAgIC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNw
YXRjaGluZyBldmVudHMgaGVyZSBpcyBzYWZlLgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5
bmNocm9ub3VzbHkpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBkb2N1bWVudCgpLnZp
ZXcoKTsKKyAgICBpZiAoIXZpZXcgfHwgKCF2aWV3LT5pblVwZGF0ZUVtYmVkZGVkT2JqZWN0cygp
ICYmICF2aWV3LT5sYXlvdXRDb250ZXh0KCkuaXNJbkxheW91dCgpICYmICF2aWV3LT5pc1BhaW50
aW5nKCkpKSB7CisgICAgICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVk
bHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorICAgICAgICAvLyB3aGVuIEphdmFT
Y3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgorICAgICAgICAvLyBGSVhNRTogPHJkYXI6
Ly8xNjg5MzcwOD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZlbnRzIGhlcmUgaXMgc2FmZS4KKyAg
ICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9j
dW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25vdXNseSk7CisgICAgfQogICAgIHJl
dHVybiByZW5kZXJXaWRnZXQoKTsgLy8gVGhpcyB3aWxsIHJldHVybiAwIGlmIHRoZSByZW5kZXJl
ciBpcyBub3QgYSBSZW5kZXJXaWRnZXQuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA0MWFhMDhiNzhlODNlMDgwNGQ5NDdkZTA2Y2RiZGJkMDZjOGYyNjUzLi41Njc3MmY4MTMy
MzkzYWVlNjVlNzBiN2VhYTBiODhhNjA0MDY3NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0zMjY5LDYgKzMyNjksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRP
YmplY3QoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogCiBib29sIEZyYW1l
Vmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCkKIHsKKyAgICBTZXRGb3JTY29wZTxib29sPiBp
blVwZGF0ZUVtYmVkZGVkT2JqZWN0cyhtX2luVXBkYXRlRW1iZWRkZWRPYmplY3RzLCB0cnVlKTsK
ICAgICBpZiAobGF5b3V0Q29udGV4dCgpLmlzTGF5b3V0TmVzdGVkKCkgfHwgIW1fZW1iZWRkZWRP
YmplY3RzVG9VcGRhdGUgfHwgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+aXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZDJjYzcw
ZjI1ZmIzYjkzYmZjOTg3NTViNWU4M2E4YThkMDgzZmU2Ni4uYTI3ODZlMDdiOTk2OWNjNjBkM2Jm
NDM0MjI4NzNhODM4ZjA3M2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02NjEsNiAr
NjYxLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb09mZnNl
dFdpdGhBbmltYXRpb24oY29uc3QgU2Nyb2xsT2Zmc2V0JiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5
cGU6OlByb2dyYW1tYXRpYywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBl
ZCk7CiAKKyAgICBib29sIGluVXBkYXRlRW1iZWRkZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4g
bV9pblVwZGF0ZUVtYmVkZGVkT2JqZWN0czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsKICAgICB2
b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgZmlu
YWw7CkBAIC04MjUsNiArODI3LDcgQEAgcHJpdmF0ZToKICAgICBGcmFtZVZpZXdMYXlvdXRDb250
ZXh0IG1fbGF5b3V0Q29udGV4dDsKIAogICAgIEhhc2hTZXQ8V2lkZ2V0Kj4gbV93aWRnZXRzSW5S
ZW5kZXJUcmVlOworICAgIGJvb2wgbV9pblVwZGF0ZUVtYmVkZGVkT2JqZWN0cyB7IGZhbHNlIH07
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+
IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8
Y29uc3QgUmVuZGVyRWxlbWVudCo+PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDll
ZjZhYTQ5OTE4ZmIzMTAwZTAxZWRiZDkyN2ZlZGEzZGI2NjM4N2QuLmJjOTcxOTY1MTlkNmQ0NWJl
YTU2ZGY1ZjdlMWJlZGNjOTQwMjJkZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0x
NSAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJ
T04gRkFJTEVEOiAhbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+Y29udGFpbnMobnVsbHB0cikg
aW4gV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzMgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDYxNTE1NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHJlZW50cmFuY3kgcHJvdGVjdGlvbiBmb3IgRnJhbWVWaWV3Ojp1
cGRhdGVFbWJlZGRlZE9iamVjdHMoKS4KKworICAgICAgICAqIGZhc3QvdGV4dC90ZXh0Q29tYmlu
ZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQuaHRtbDog
QWRkZWQuCisKIDIwMjAtMDItMTAgIEphbWVzIEhvd2FyZCAgPGphbWVzaG93YXJkQG1hYy5jb20+
CiAKICAgICAgICAgU3RhbmRhcmQgZ2FtZXBhZCBtYXBwaW5nIGZvciBHYW1lQ29udHJvbGxlckdh
bWVwYWRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dENvbWJpbmUtdXBk
YXRlLWVtYmVkZGVkT2JqLWFzc2VydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGZkZTI2NDRjZjJkOTAyZDI3ODM1NDNkZWMzMzk0MzFjMTAzMzczMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0Q29tYmluZS11cGRhdGUtZW1i
ZWRkZWRPYmotYXNzZXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACivvv7xUZXN0cyB1cGRh
dGluZyBlbWJlZGRlZCBvYmplY3RzIGluIHRleHQtY29tYmluZSByZW5kZXJpbmcuIFRoZSB0ZXN0
IHBhc3NlcyBpZiBXZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLu+/vApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJl
ZGRlZE9iai1hc3NlcnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0Q29tYmluZS11
cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdlNzkxOWU1YzE1OWU0
MjZkMzI0MTA4NDQ1NDY5Zjg1MmNjY2E3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC90ZXh0Q29tYmluZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWwKQEAg
LTAsMCArMSwxOCBAQAorPHN0eWxlPgorYm9keSB7CisgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6
IHZlcnRpY2FsLWxyOworICAgIC13ZWJraXQtdGV4dC1jb21iaW5lOiBob3Jpem9udGFsOworfQor
OjpzZWxlY3Rpb24geworICAgIGNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIGZ1bmN0aW9uIGV2ZW50aGFuZGxlcigpIHsKKyAgICAgICAgZG9jdW1lbnQudmxpbmtD
b2xvciA9ICJyZWQiOworICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvYmplY3QiKS5z
dHlsZS5jb2xvciA9ICJyZWQiOworICAgIH0KKzwvc2NyaXB0PgorPGVtYmVkIHNyYz0iZGF0YTp0
ZXh0L3BsYWluOyIgb25iZWZvcmVsb2FkPWV2ZW50aGFuZGxlcigpPmZvbzxzcGFuPlRlc3RzIHVw
ZGF0aW5nIGVtYmVkZGVkIG9iamVjdHMgaW4gdGV4dC1jb21iaW5lIHJlbmRlcmluZy4gVGhlIHRl
c3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uPC9z
cGFuPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390870</attachid>
            <date>2020-02-15 13:17:13 -0800</date>
            <delta_ts>2020-02-16 21:37:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191532-20200215131712.patch</filename>
            <type>text/plain</type>
            <size>8760</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMDFmOThkZDliYTEwZmMzMDkxNzk3ZjNhZWM5YzZm
MDY4NTdiYTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAyLTE1ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6ICFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5jb250YWlucyhudWxscHRyKSBpbiBXZWJD
b3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTMyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjE1MTU1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgcmVlbnRyYW5jeSBwcm90ZWN0aW9uIGZvciBGcmFtZVZpZXc6OnVwZGF0ZUVt
YmVkZGVkT2JqZWN0cygpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC90ZXh0Q29tYmluZS11
cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRl
cldpZGdldExvYWRpbmdQbHVnaW4gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJXaWRn
ZXRMb2FkaW5nUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJXaWRnZXRM
b2FkaW5nUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cyk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAyMC0wMi0xMCAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0NjA1NSk6IERhdGEgZGV0
ZWN0ZWQgVVJMcyBhcmUgbm8gbG9uZ2VyIGJsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5jcHAKaW5kZXggNDQ1MTE2NzNjZDdkNmVhMTczYjg1NmU1ZDdjMGY3MjNmYmI2
ZmIyNi4uZDg2YzYxYmM3M2QzZjk3YzNjOWVjZTFjZjdhOWZkZWM1NDVkZDkzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTk4LDExICs5OCwxNCBAQCBS
ZW5kZXJXaWRnZXQqIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2lu
KCkgY29uc3QKIHsKICAgICBpZiAoIWNhbkVtYmVkSmF2YSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVj
YXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAotICAgIC8vIHdoZW4gSmF2YVNjcmlwdCBjb2Rl
IGFjY2Vzc2VzIHRoZSBwbHVnaW4uCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vMTY4OTM3MDg+IENo
ZWNrIGlmIGRpc3BhdGNoaW5nIGV2ZW50cyBoZXJlIGlzIHNhZmUuCi0gICAgZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlv
dXRUYXNrczo6U3luY2hyb25vdXNseSk7CisgICAgCisgICAgUmVmUHRyPEZyYW1lVmlldz4gdmll
dyA9IGRvY3VtZW50KCkudmlldygpOworICAgIGlmICghdmlldyB8fCAoIXZpZXctPmluVXBkYXRl
RW1iZWRkZWRPYmplY3RzKCkgJiYgIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkg
JiYgIXZpZXctPmlzUGFpbnRpbmcoKSkpIHsKKyAgICAgICAgLy8gTmVlZHMgdG8gbG9hZCB0aGUg
cGx1Z2luIGltbWVkaWF0ZWRseSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAg
ICAgIC8vIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGFjY2Vzc2VzIHRoZSBwbHVnaW4uCisgICAgICAg
IC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVudHMg
aGVyZSBpcyBzYWZlLgorICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5
KTsKKyAgICB9CiAgICAgcmV0dXJuIHJlbmRlcldpZGdldCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCA5MTcwMWUxNDQ0ZWYyODYwODVmNzIxMjQw
YmVmMGFiNmMyNzYxNjEyLi5mYTllMjNhOWVhYzY3MTNjYjIzZmU5MGUwNGUzYTU1ZmNmNDgyYWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJXaWRnZXQqIGZpbmRXaWRnZXRSZW5kZXJlcihjb25z
dCBOb2RlKiBub2RlKQogUmVuZGVyV2lkZ2V0KiBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJXaWRn
ZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0g
ZG9jdW1lbnQoKS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3IHx8ICghdmlldy0+bGF5b3V0Q29udGV4
dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCkgJiYgIXZpZXctPmlzUGFpbnRpbmcoKSkpIHsKKyAg
ICBpZiAoIXZpZXcgfHwgKCF2aWV3LT5pblVwZGF0ZUVtYmVkZGVkT2JqZWN0cygpICYmICF2aWV3
LT5sYXlvdXRDb250ZXh0KCkuaXNJbkxheW91dCgpICYmICF2aWV3LT5pc1BhaW50aW5nKCkpKSB7
CiAgICAgICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVz
ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAogICAgICAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29k
ZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgogICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly8xNjg5Mzcw
OD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZlbnRzIGhlcmUgaXMgc2FmZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggNmZkNDJlMTg2YzgwZjQ5NTgzNzU4
YTE2NTdiNGQyMTg3MmNjNjY5Ny4uMmIxODY3MmRiMjQ2M2UzNWU5NWMyM2FmZmU3OTNkOTUzZjll
MWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTc5
LDEwICs3OSwxMyBAQCBSZWY8SFRNTE9iamVjdEVsZW1lbnQ+IEhUTUxPYmplY3RFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogCiBSZW5kZXJXaWRnZXQqIEhU
TUxPYmplY3RFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKIHsKLSAg
ICAvLyBOZWVkcyB0byBsb2FkIHRoZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQKLSAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0
aGUgcGx1Z2luLgotICAgIC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNw
YXRjaGluZyBldmVudHMgaGVyZSBpcyBzYWZlLgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5
bmNocm9ub3VzbHkpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBkb2N1bWVudCgpLnZp
ZXcoKTsKKyAgICBpZiAoIXZpZXcgfHwgKCF2aWV3LT5pblVwZGF0ZUVtYmVkZGVkT2JqZWN0cygp
ICYmICF2aWV3LT5sYXlvdXRDb250ZXh0KCkuaXNJbkxheW91dCgpICYmICF2aWV3LT5pc1BhaW50
aW5nKCkpKSB7CisgICAgICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVk
bHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorICAgICAgICAvLyB3aGVuIEphdmFT
Y3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgorICAgICAgICAvLyBGSVhNRTogPHJkYXI6
Ly8xNjg5MzcwOD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZlbnRzIGhlcmUgaXMgc2FmZS4KKyAg
ICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9j
dW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25vdXNseSk7CisgICAgfQogICAgIHJl
dHVybiByZW5kZXJXaWRnZXQoKTsgLy8gVGhpcyB3aWxsIHJldHVybiAwIGlmIHRoZSByZW5kZXJl
ciBpcyBub3QgYSBSZW5kZXJXaWRnZXQuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA0MWFhMDhiNzhlODNlMDgwNGQ5NDdkZTA2Y2RiZGJkMDZjOGYyNjUzLi41Njc3MmY4MTMy
MzkzYWVlNjVlNzBiN2VhYTBiODhhNjA0MDY3NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0zMjY5LDYgKzMyNjksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRP
YmplY3QoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogCiBib29sIEZyYW1l
Vmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCkKIHsKKyAgICBTZXRGb3JTY29wZTxib29sPiBp
blVwZGF0ZUVtYmVkZGVkT2JqZWN0cyhtX2luVXBkYXRlRW1iZWRkZWRPYmplY3RzLCB0cnVlKTsK
ICAgICBpZiAobGF5b3V0Q29udGV4dCgpLmlzTGF5b3V0TmVzdGVkKCkgfHwgIW1fZW1iZWRkZWRP
YmplY3RzVG9VcGRhdGUgfHwgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+aXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZDJjYzcw
ZjI1ZmIzYjkzYmZjOTg3NTViNWU4M2E4YThkMDgzZmU2Ni4uMzQ2MGYwZWMxMTg4MTMxNWU0YTAw
NTU4Y2M5OTk2NGE0ZDg1NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02NjEsNiAr
NjYxLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb09mZnNl
dFdpdGhBbmltYXRpb24oY29uc3QgU2Nyb2xsT2Zmc2V0JiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5
cGU6OlByb2dyYW1tYXRpYywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBl
ZCk7CiAKKyAgICBib29sIGluVXBkYXRlRW1iZWRkZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4g
bV9pblVwZGF0ZUVtYmVkZGVkT2JqZWN0czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsKICAgICB2
b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgZmlu
YWw7CkBAIC05NDUsNiArOTQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5BdXRvU2l6ZSB7
IGZhbHNlIH07CiAgICAgLy8gVHJ1ZSBpZiBhdXRvc2l6ZSBoYXMgYmVlbiBydW4gc2luY2UgbV9z
aG91bGRBdXRvU2l6ZSB3YXMgc2V0LgogICAgIGJvb2wgbV9kaWRSdW5BdXRvc2l6ZSB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2luVXBkYXRlRW1iZWRkZWRPYmplY3RzIHsgZmFsc2UgfTsKIH07CiAK
IGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291
bnQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZWY2YWE0OTkxOGZiMzEwMGUwMWVkYmQ5
MjdmZWRhM2RiNjYzODdkLi5iYzk3MTk2NTE5ZDZkNDViZWE1NmRmNWY3ZTFiZWRjYzk0MDIyZGU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTUgIEphY2sgTGVlICA8c2hpaGNoaWVo
X2xlZUBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIW1fZW1iZWRkZWRP
YmplY3RzVG9VcGRhdGUtPmNvbnRhaW5zKG51bGxwdHIpIGluIFdlYkNvcmU6OkZyYW1lVmlldzo6
dXBkYXRlRW1iZWRkZWRPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE1MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MTUxNTU1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWVu
dHJhbmN5IHByb3RlY3Rpb24gZm9yIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCku
CisKKyAgICAgICAgKiBmYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFz
c2VydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC90ZXh0Q29tYmlu
ZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAyLTEwICBK
YW1lcyBIb3dhcmQgIDxqYW1lc2hvd2FyZEBtYWMuY29tPgogCiAgICAgICAgIFN0YW5kYXJkIGdh
bWVwYWQgbWFwcGluZyBmb3IgR2FtZUNvbnRyb2xsZXJHYW1lcGFkcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1l
bWJlZGRlZE9iai1hc3NlcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZGUyNjQ0Y2YyZDkw
MmQyNzgzNTQzZGVjMzM5NDMxYzEwMzM3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAor77+8VGVzdHMgdXBkYXRpbmcgZW1iZWRkZWQgb2JqZWN0cyBp
biB0ZXh0LWNvbWJpbmUgcmVuZGVyaW5nLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNu
J3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlvbi7vv7wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC90ZXh0Q29tYmluZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2Vy
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3ZTc5MTllNWMxNTllNDI2ZDMyNDEwODQ0NTQ2OWY4NTJjY2Nh
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dENvbWJpbmUt
dXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxzdHlsZT4K
K2JvZHkgeworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsKKyAgICAtd2Vi
a2l0LXRleHQtY29tYmluZTogaG9yaXpvbnRhbDsKK30KKzo6c2VsZWN0aW9uIHsKKyAgICBjb2xv
cjogcmVkOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBmdW5jdGlvbiBldmVudGhh
bmRsZXIoKSB7CisgICAgICAgIGRvY3VtZW50LnZsaW5rQ29sb3IgPSAicmVkIjsKKyAgICAgICAg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2JqZWN0Iikuc3R5bGUuY29sb3IgPSAicmVkIjsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxlbWJlZCBzcmM9ImRhdGE6dGV4dC9wbGFpbjsiIG9uYmVmb3JlbG9h
ZD1ldmVudGhhbmRsZXIoKT5mb288c3Bhbj5UZXN0cyB1cGRhdGluZyBlbWJlZGRlZCBvYmplY3Rz
IGluIHRleHQtY29tYmluZSByZW5kZXJpbmcuIFRoZSB0ZXN0IHBhc3NlcyBpZiBXZWJLaXQgZG9l
c24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLjwvc3Bhbj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390900</attachid>
            <date>2020-02-16 21:38:01 -0800</date>
            <delta_ts>2020-02-16 22:35:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191532-20200216213800.patch</filename>
            <type>text/plain</type>
            <size>11638</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMTVmNzVhOWY3NDY0ZGEwMTA5NzRkOGUzNjFkMTMz
YTFiMmE0NjNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAyLTE2ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6ICFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5jb250YWlucyhudWxscHRyKSBpbiBXZWJD
b3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTMyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjE1MTU1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgcmVlbnRyYW5jeSBwcm90ZWN0aW9uIGZvciBGcmFtZVZpZXc6OnVwZGF0ZUVt
YmVkZGVkT2JqZWN0cygpLgorICAgICAgICBNb3ZlIHRoZSBjb21tb24gY29kZSBpbiByZW5kZXJX
aWRnZXRMb2FkaW5nUGx1Z2luKCkgdG8gaW5oZXJpdGVkIGNsYXNzLCBIVE1MUGx1Z0luRWxlbWVu
dC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVk
T2JqLWFzc2VydC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5n
UGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdp
biBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQ6OnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4gY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cyk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAyMC0wMi0xMCAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0NjA1NSk6
IERhdGEgZGV0ZWN0ZWQgVVJMcyBhcmUgbm8gbG9uZ2VyIGJsdWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5kZXggNDQ1MTE2NzNjZDdkNmVhMTczYjg1NmU1ZDdj
MGY3MjNmYmI2ZmIyNi4uYzFhODlhOWQxYTBiMTA2M2I1OGI5ZmE3NzA1OTNmM2Q3ZGU4YzQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTk2LDE0ICs5
Niw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIAogUmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0
RWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFj
YW5FbWJlZEphdmEoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBOZWVkcyB0
byBsb2FkIHRoZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQKLSAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgot
ICAgIC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVu
dHMgaGVyZSBpcyBzYWZlLgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkp
OwotICAgIHJldHVybiByZW5kZXJXaWRnZXQoKTsKKyAgICByZXR1cm4gY2FuRW1iZWRKYXZhKCk/
IEhUTUxQbHVnSW5FbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgOiBudWxscHRy
OwogfQogCiB2b2lkIEhUTUxBcHBsZXRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoQ3JlYXRlUGx1Z2lu
cyBjcmVhdGVQbHVnaW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAK
aW5kZXggOTE3MDFlMTQ0NGVmMjg2MDg1ZjcyMTI0MGJlZjBhYjZjMjc2MTYxMi4uZWEyYTMxY2Vm
MTVjZDg0NjA1YzA5NDgxNzFhOTMzMDc1NWUxMWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCkBAIC04MCwxNCArODAsOSBAQCBzdGF0aWMgaW5saW5lIFJlbmRl
cldpZGdldCogZmluZFdpZGdldFJlbmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiAKIFJlbmRlcldp
ZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGRvY3VtZW50KCkudmlldygpOwotICAg
IGlmICghdmlldyB8fCAoIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91
dCgpICYmICF2aWV3LT5pc1BhaW50aW5nKCkpKSB7Ci0gICAgICAgIC8vIE5lZWRzIHRvIGxvYWQg
dGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAot
ICAgICAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgotICAg
ICAgICAvLyBGSVhNRTogPHJkYXI6Ly8xNjg5MzcwOD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZl
bnRzIGhlcmUgaXMgc2FmZS4KLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25v
dXNseSk7Ci0gICAgfQotICAgIHJldHVybiBmaW5kV2lkZ2V0UmVuZGVyZXIodGhpcyk7CisgICAg
UmVuZGVyV2lkZ2V0KiB3aWRnZXQgPSBIVE1MUGx1Z0luRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9h
ZGluZ1BsdWdpbigpOworICAgIAorICAgIHJldHVybiB3aWRnZXQ/IHdpZGdldCA6IGZpbmRXaWRn
ZXRSZW5kZXJlcih0aGlzKTsKIH0KIAogdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCA2ZmQ0MmUxODZjODBm
NDk1ODM3NThhMTY1N2I0ZDIxODcyY2M2Njk3Li45ODVlZGI1M2FiMTM1NDRlNDI5ZDlkY2U2ZTQz
OTg0OThhZTYwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cApAQCAtNzcsMTUgKzc3LDYgQEAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBIVE1MT2JqZWN0RWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1SZW5kZXJXaWRnZXQqIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJXaWRn
ZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKLXsKLSAgICAvLyBOZWVkcyB0byBsb2FkIHRoZSBwbHVn
aW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKLSAgICAvLyB3
aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgotICAgIC8vIEZJWE1FOiA8
cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVudHMgaGVyZSBpcyBzYWZl
LgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERv
Y3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkpOwotICAgIHJldHVybiBy
ZW5kZXJXaWRnZXQoKTsgLy8gVGhpcyB3aWxsIHJldHVybiAwIGlmIHRoZSByZW5kZXJlciBpcyBu
b3QgYSBSZW5kZXJXaWRnZXQuCi19Ci0KIGludCBIVE1MT2JqZWN0RWxlbWVudDo6ZGVmYXVsdFRh
YkluZGV4KCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaAppbmRleCA2MDFkNTIyYTI1NGRlOTU2NTIwNDNkN2MzZjE3MTE4ODQwNWU4
M2RmLi4zMTJlYzc2MTRkOThiYjkyZjFhM2RmMmQ4MjRmZmZmNGU5NzhjNWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC01OSw4ICs1OSw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSFRNTE9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdCBmaW5hbDsKLQogICAgIGludCBkZWZhdWx0VGFiSW5k
ZXgoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNGYwMzJhMWM5ZTZkZmM2MGEyZDY2MjY3YmEyODU2
ZGFkNDNkNGViNy4uNTA5MjEwMmIwNjkyMjQ0MTljYmM0NjIxZWQ0MWFhMjlhY2FiOWZkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE1Nyw2ICsxNTcs
MTggQEAgV2lkZ2V0KiBIVE1MUGx1Z0luRWxlbWVudDo6cGx1Z2luV2lkZ2V0KFBsdWdpbkxvYWRp
bmdQb2xpY3kgbG9hZFBvbGljeSkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyV2lkZ2V0LT53aWRn
ZXQoKTsKIH0KIAorUmVuZGVyV2lkZ2V0KiBIVE1MUGx1Z0luRWxlbWVudDo6cmVuZGVyV2lkZ2V0
TG9hZGluZ1BsdWdpbigpIGNvbnN0Cit7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGRv
Y3VtZW50KCkudmlldygpOworICAgIGlmICghdmlldyB8fCAoIXZpZXctPmluVXBkYXRlRW1iZWRk
ZWRPYmplY3RzKCkgJiYgIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkgJiYgIXZp
ZXctPmlzUGFpbnRpbmcoKSkpIHsKKyAgICAgICAgLy8gTmVlZHMgdG8gbG9hZCB0aGUgcGx1Z2lu
IGltbWVkaWF0ZWRseSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAgICAgIC8v
IHdoZW4gSmF2YVNjcmlwdCBjb2RlIGFjY2Vzc2VzIHRoZSBwbHVnaW4uCisgICAgICAgIC8vIEZJ
WE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVudHMgaGVyZSBp
cyBzYWZlLgorICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlbmRlcldpZGdldCgpOyAvLyBUaGlzIHdpbGwgcmV0dXJuIDAgaWYg
dGhlIHJlbmRlcmVyIGlzIG5vdCBhIFJlbmRlcldpZGdldC4KK30KKwogYm9vbCBIVE1MUGx1Z0lu
RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIgfHwgbmFtZSA9PSBoZWlnaHRB
dHRyIHx8IG5hbWUgPT0gdnNwYWNlQXR0ciB8fCBuYW1lID09IGhzcGFjZUF0dHIgfHwgbmFtZSA9
PSBhbGlnbkF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXgg
MmI4ZWU0MzU4ZTZlMmFjMDNkZDJjZDg0NzAzNzRhNmZmOGVhNTRjNi4uNzIyNWJiNDVkZjY2MjUw
YTM2N2E3MzY2ZjM0OGE2OGY2ODM2MGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaApAQCAtMTA5LDYgKzEwOSw5IEBAIHByb3RlY3RlZDoKICAgICBib29sIGd1YXJk
ZWREaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKICAg
ICBib29sIG1faW5CZWZvcmVMb2FkRXZlbnRIYW5kbGVyOworICAgIAorICAgIC8vIFRoaXMgd2ls
bCBsb2FkIHRoZSBwbHVnaW4gaWYgbmVjZXNzYXJ5LgorICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0
KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBzd2FwUmVuZGVyZXJUaW1lckZpcmVkKCk7CkBAIC0xMTYsOSArMTE5LDYgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpID0gZGVsZXRlOyAvLyBHZW5lcmF0ZSBhIGNvbXBpbGUgZXJyb3IgaWYgc29tZW9uZSBjYWxs
cyB0aGlzIGJ5IG1pc3Rha2UuCiAKLSAgICAvLyBUaGlzIHdpbGwgbG9hZCB0aGUgcGx1Z2luIGlm
IG5lY2Vzc2FyeS4KLSAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGlu
Z1BsdWdpbigpIGNvbnN0ID0gMDsKLQogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0MWFhMDhiNzhl
ODNlMDgwNGQ5NDdkZTA2Y2RiZGJkMDZjOGYyNjUzLi41Njc3MmY4MTMyMzkzYWVlNjVlNzBiN2Vh
YTBiODhhNjA0MDY3NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zMjY5LDYg
KzMyNjksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3QoUmVuZGVyRW1i
ZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogCiBib29sIEZyYW1lVmlldzo6dXBkYXRlRW1i
ZWRkZWRPYmplY3RzKCkKIHsKKyAgICBTZXRGb3JTY29wZTxib29sPiBpblVwZGF0ZUVtYmVkZGVk
T2JqZWN0cyhtX2luVXBkYXRlRW1iZWRkZWRPYmplY3RzLCB0cnVlKTsKICAgICBpZiAobGF5b3V0
Q29udGV4dCgpLmlzTGF5b3V0TmVzdGVkKCkgfHwgIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUg
fHwgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZDJjYzcwZjI1ZmIzYjkzYmZjOTg3
NTViNWU4M2E4YThkMDgzZmU2Ni4uMzQ2MGYwZWMxMTg4MTMxNWU0YTAwNTU4Y2M5OTk2NGE0ZDg1
NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02NjEsNiArNjYxLDggQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24o
Y29uc3QgU2Nyb2xsT2Zmc2V0JiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlByb2dyYW1tYXRp
YywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7CiAKKyAgICBib29s
IGluVXBkYXRlRW1iZWRkZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9pblVwZGF0ZUVtYmVk
ZGVkT2JqZWN0czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3Jv
bGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbENvbnRl
bnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgZmluYWw7CkBAIC05NDUsNiAr
OTQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5BdXRvU2l6ZSB7IGZhbHNlIH07CiAgICAg
Ly8gVHJ1ZSBpZiBhdXRvc2l6ZSBoYXMgYmVlbiBydW4gc2luY2UgbV9zaG91bGRBdXRvU2l6ZSB3
YXMgc2V0LgogICAgIGJvb2wgbV9kaWRSdW5BdXRvc2l6ZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2luVXBkYXRlRW1iZWRkZWRPYmplY3RzIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSB2b2lkIEZy
YW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5ZWY2YWE0OTkxOGZiMzEwMGUwMWVkYmQ5MjdmZWRhM2RiNjYzODdk
Li4zMDczYzM2ZWVmNmExNDliMWRiN2Y4M2UzMGM0ZDRmNzcwMjJkZDExIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjAtMDItMTYgIEphY2sgTGVlICA8c2hpaGNoaWVoX2xlZUBhcHBsZS5jb20+
CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUt
PmNvbnRhaW5zKG51bGxwdHIpIGluIFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRP
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE1MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MTUxNTU1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWVudHJhbmN5IHByb3RlY3Rp
b24gZm9yIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCkuCisgICAgICAgIE1vdmUg
dGhlIGNvbW1vbiBjb2RlIGluIHJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSB0byBpbmhlcml0
ZWQgY2xhc3MsIEhUTUxQbHVnSW5FbGVtZW50LgorCisgICAgICAgICogZmFzdC90ZXh0L3RleHRD
b21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC5o
dG1sOiBBZGRlZC4KKwogMjAyMC0wMi0xMCAgSmFtZXMgSG93YXJkICA8amFtZXNob3dhcmRAbWFj
LmNvbT4KIAogICAgICAgICBTdGFuZGFyZCBnYW1lcGFkIG1hcHBpbmcgZm9yIEdhbWVDb250cm9s
bGVyR2FtZXBhZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0Q29tYmlu
ZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC90ZXh0Q29tYmluZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZmRlMjY0NGNmMmQ5MDJkMjc4MzU0M2RlYzMzOTQzMWMxMDMzNzMwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0
ZS1lbWJlZGRlZE9iai1hc3NlcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK++/vFRlc3Rz
IHVwZGF0aW5nIGVtYmVkZGVkIG9iamVjdHMgaW4gdGV4dC1jb21iaW5lIHJlbmRlcmluZy4gVGhl
IHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24u
77+8CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRl
LWVtYmVkZGVkT2JqLWFzc2VydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21i
aW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2U3OTE5ZTVj
MTU5ZTQyNmQzMjQxMDg0NDU0NjlmODUyY2NjYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQuaHRt
bApAQCAtMCwwICsxLDE4IEBACis8c3R5bGU+Citib2R5IHsKKyAgICAtd2Via2l0LXdyaXRpbmct
bW9kZTogdmVydGljYWwtbHI7CisgICAgLXdlYmtpdC10ZXh0LWNvbWJpbmU6IGhvcml6b250YWw7
Cit9Cis6OnNlbGVjdGlvbiB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgZnVuY3Rpb24gZXZlbnRoYW5kbGVyKCkgeworICAgICAgICBkb2N1bWVudC52
bGlua0NvbG9yID0gInJlZCI7CisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9iamVj
dCIpLnN0eWxlLmNvbG9yID0gInJlZCI7CisgICAgfQorPC9zY3JpcHQ+Cis8ZW1iZWQgc3JjPSJk
YXRhOnRleHQvcGxhaW47IiBvbmJlZm9yZWxvYWQ9ZXZlbnRoYW5kbGVyKCk+Zm9vPHNwYW4+VGVz
dHMgdXBkYXRpbmcgZW1iZWRkZWQgb2JqZWN0cyBpbiB0ZXh0LWNvbWJpbmUgcmVuZGVyaW5nLiBU
aGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlv
bi48L3NwYW4+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390903</attachid>
            <date>2020-02-16 22:39:58 -0800</date>
            <delta_ts>2020-02-17 14:47:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191532-20200216223957.patch</filename>
            <type>text/plain</type>
            <size>11638</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMTVmNzVhOWY3NDY0ZGEwMTA5NzRkOGUzNjFkMTMz
YTFiMmE0NjNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAyLTE2ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6ICFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5jb250YWlucyhudWxscHRyKSBpbiBXZWJD
b3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTMyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjE1MTU1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgcmVlbnRyYW5jeSBwcm90ZWN0aW9uIGZvciBGcmFtZVZpZXc6OnVwZGF0ZUVt
YmVkZGVkT2JqZWN0cygpLgorICAgICAgICBNb3ZlIHRoZSBjb21tb24gY29kZSBpbiByZW5kZXJX
aWRnZXRMb2FkaW5nUGx1Z2luKCkgdG8gaW5oZXJpdGVkIGNsYXNzLCBIVE1MUGx1Z0luRWxlbWVu
dC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVk
T2JqLWFzc2VydC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5n
UGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdp
biBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQ6OnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4gY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cyk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAyMC0wMi0xMCAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0NjA1NSk6
IERhdGEgZGV0ZWN0ZWQgVVJMcyBhcmUgbm8gbG9uZ2VyIGJsdWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5kZXggNDQ1MTE2NzNjZDdkNmVhMTczYjg1NmU1ZDdj
MGY3MjNmYmI2ZmIyNi4uYzFhODlhOWQxYTBiMTA2M2I1OGI5ZmE3NzA1OTNmM2Q3ZGU4YzQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTk2LDE0ICs5
Niw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIAogUmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0
RWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFj
YW5FbWJlZEphdmEoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBOZWVkcyB0
byBsb2FkIHRoZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQKLSAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgot
ICAgIC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVu
dHMgaGVyZSBpcyBzYWZlLgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkp
OwotICAgIHJldHVybiByZW5kZXJXaWRnZXQoKTsKKyAgICByZXR1cm4gY2FuRW1iZWRKYXZhKCk/
IEhUTUxQbHVnSW5FbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgOiBudWxscHRy
OwogfQogCiB2b2lkIEhUTUxBcHBsZXRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoQ3JlYXRlUGx1Z2lu
cyBjcmVhdGVQbHVnaW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAK
aW5kZXggOTE3MDFlMTQ0NGVmMjg2MDg1ZjcyMTI0MGJlZjBhYjZjMjc2MTYxMi4uZWEyYTMxY2Vm
MTVjZDg0NjA1YzA5NDgxNzFhOTMzMDc1NWUxMWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCkBAIC04MCwxNCArODAsOSBAQCBzdGF0aWMgaW5saW5lIFJlbmRl
cldpZGdldCogZmluZFdpZGdldFJlbmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiAKIFJlbmRlcldp
ZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGRvY3VtZW50KCkudmlldygpOwotICAg
IGlmICghdmlldyB8fCAoIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91
dCgpICYmICF2aWV3LT5pc1BhaW50aW5nKCkpKSB7Ci0gICAgICAgIC8vIE5lZWRzIHRvIGxvYWQg
dGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAot
ICAgICAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgotICAg
ICAgICAvLyBGSVhNRTogPHJkYXI6Ly8xNjg5MzcwOD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZl
bnRzIGhlcmUgaXMgc2FmZS4KLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25v
dXNseSk7Ci0gICAgfQotICAgIHJldHVybiBmaW5kV2lkZ2V0UmVuZGVyZXIodGhpcyk7CisgICAg
UmVuZGVyV2lkZ2V0KiB3aWRnZXQgPSBIVE1MUGx1Z0luRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9h
ZGluZ1BsdWdpbigpOworICAgIAorICAgIHJldHVybiB3aWRnZXQ/IHdpZGdldCA6IGZpbmRXaWRn
ZXRSZW5kZXJlcih0aGlzKTsKIH0KIAogdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCA2ZmQ0MmUxODZjODBm
NDk1ODM3NThhMTY1N2I0ZDIxODcyY2M2Njk3Li45ODVlZGI1M2FiMTM1NDRlNDI5ZDlkY2U2ZTQz
OTg0OThhZTYwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cApAQCAtNzcsMTUgKzc3LDYgQEAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBIVE1MT2JqZWN0RWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1SZW5kZXJXaWRnZXQqIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJXaWRn
ZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKLXsKLSAgICAvLyBOZWVkcyB0byBsb2FkIHRoZSBwbHVn
aW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKLSAgICAvLyB3
aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgotICAgIC8vIEZJWE1FOiA8
cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVudHMgaGVyZSBpcyBzYWZl
LgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERv
Y3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkpOwotICAgIHJldHVybiBy
ZW5kZXJXaWRnZXQoKTsgLy8gVGhpcyB3aWxsIHJldHVybiAwIGlmIHRoZSByZW5kZXJlciBpcyBu
b3QgYSBSZW5kZXJXaWRnZXQuCi19Ci0KIGludCBIVE1MT2JqZWN0RWxlbWVudDo6ZGVmYXVsdFRh
YkluZGV4KCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaAppbmRleCA2MDFkNTIyYTI1NGRlOTU2NTIwNDNkN2MzZjE3MTE4ODQwNWU4
M2RmLi4zMTJlYzc2MTRkOThiYjkyZjFhM2RmMmQ4MjRmZmZmNGU5NzhjNWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC01OSw4ICs1OSw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSFRNTE9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdCBmaW5hbDsKLQogICAgIGludCBkZWZhdWx0VGFiSW5k
ZXgoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNGYwMzJhMWM5ZTZkZmM2MGEyZDY2MjY3YmEyODU2
ZGFkNDNkNGViNy4uNTA5MjEwMmIwNjkyMjQ0MTljYmM0NjIxZWQ0MWFhMjlhY2FiOWZkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE1Nyw2ICsxNTcs
MTggQEAgV2lkZ2V0KiBIVE1MUGx1Z0luRWxlbWVudDo6cGx1Z2luV2lkZ2V0KFBsdWdpbkxvYWRp
bmdQb2xpY3kgbG9hZFBvbGljeSkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyV2lkZ2V0LT53aWRn
ZXQoKTsKIH0KIAorUmVuZGVyV2lkZ2V0KiBIVE1MUGx1Z0luRWxlbWVudDo6cmVuZGVyV2lkZ2V0
TG9hZGluZ1BsdWdpbigpIGNvbnN0Cit7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGRv
Y3VtZW50KCkudmlldygpOworICAgIGlmICghdmlldyB8fCAoIXZpZXctPmluVXBkYXRlRW1iZWRk
ZWRPYmplY3RzKCkgJiYgIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkgJiYgIXZp
ZXctPmlzUGFpbnRpbmcoKSkpIHsKKyAgICAgICAgLy8gTmVlZHMgdG8gbG9hZCB0aGUgcGx1Z2lu
IGltbWVkaWF0ZWRseSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAgICAgIC8v
IHdoZW4gSmF2YVNjcmlwdCBjb2RlIGFjY2Vzc2VzIHRoZSBwbHVnaW4uCisgICAgICAgIC8vIEZJ
WE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVudHMgaGVyZSBp
cyBzYWZlLgorICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlbmRlcldpZGdldCgpOyAvLyBUaGlzIHdpbGwgcmV0dXJuIDAgaWYg
dGhlIHJlbmRlcmVyIGlzIG5vdCBhIFJlbmRlcldpZGdldC4KK30KKwogYm9vbCBIVE1MUGx1Z0lu
RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIgfHwgbmFtZSA9PSBoZWlnaHRB
dHRyIHx8IG5hbWUgPT0gdnNwYWNlQXR0ciB8fCBuYW1lID09IGhzcGFjZUF0dHIgfHwgbmFtZSA9
PSBhbGlnbkF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXgg
MmI4ZWU0MzU4ZTZlMmFjMDNkZDJjZDg0NzAzNzRhNmZmOGVhNTRjNi4uNzIyNWJiNDVkZjY2MjUw
YTM2N2E3MzY2ZjM0OGE2OGY2ODM2MGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaApAQCAtMTA5LDYgKzEwOSw5IEBAIHByb3RlY3RlZDoKICAgICBib29sIGd1YXJk
ZWREaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKICAg
ICBib29sIG1faW5CZWZvcmVMb2FkRXZlbnRIYW5kbGVyOworICAgIAorICAgIC8vIFRoaXMgd2ls
bCBsb2FkIHRoZSBwbHVnaW4gaWYgbmVjZXNzYXJ5LgorICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0
KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBzd2FwUmVuZGVyZXJUaW1lckZpcmVkKCk7CkBAIC0xMTYsOSArMTE5LDYgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpID0gZGVsZXRlOyAvLyBHZW5lcmF0ZSBhIGNvbXBpbGUgZXJyb3IgaWYgc29tZW9uZSBjYWxs
cyB0aGlzIGJ5IG1pc3Rha2UuCiAKLSAgICAvLyBUaGlzIHdpbGwgbG9hZCB0aGUgcGx1Z2luIGlm
IG5lY2Vzc2FyeS4KLSAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGlu
Z1BsdWdpbigpIGNvbnN0ID0gMDsKLQogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0MWFhMDhiNzhl
ODNlMDgwNGQ5NDdkZTA2Y2RiZGJkMDZjOGYyNjUzLi41Njc3MmY4MTMyMzkzYWVlNjVlNzBiN2Vh
YTBiODhhNjA0MDY3NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zMjY5LDYg
KzMyNjksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3QoUmVuZGVyRW1i
ZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogCiBib29sIEZyYW1lVmlldzo6dXBkYXRlRW1i
ZWRkZWRPYmplY3RzKCkKIHsKKyAgICBTZXRGb3JTY29wZTxib29sPiBpblVwZGF0ZUVtYmVkZGVk
T2JqZWN0cyhtX2luVXBkYXRlRW1iZWRkZWRPYmplY3RzLCB0cnVlKTsKICAgICBpZiAobGF5b3V0
Q29udGV4dCgpLmlzTGF5b3V0TmVzdGVkKCkgfHwgIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUg
fHwgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZDJjYzcwZjI1ZmIzYjkzYmZjOTg3
NTViNWU4M2E4YThkMDgzZmU2Ni4uMzQ2MGYwZWMxMTg4MTMxNWU0YTAwNTU4Y2M5OTk2NGE0ZDg1
NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02NjEsNiArNjYxLDggQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24o
Y29uc3QgU2Nyb2xsT2Zmc2V0JiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlByb2dyYW1tYXRp
YywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7CiAKKyAgICBib29s
IGluVXBkYXRlRW1iZWRkZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9pblVwZGF0ZUVtYmVk
ZGVkT2JqZWN0czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3Jv
bGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbENvbnRl
bnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgZmluYWw7CkBAIC05NDUsNiAr
OTQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5BdXRvU2l6ZSB7IGZhbHNlIH07CiAgICAg
Ly8gVHJ1ZSBpZiBhdXRvc2l6ZSBoYXMgYmVlbiBydW4gc2luY2UgbV9zaG91bGRBdXRvU2l6ZSB3
YXMgc2V0LgogICAgIGJvb2wgbV9kaWRSdW5BdXRvc2l6ZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2luVXBkYXRlRW1iZWRkZWRPYmplY3RzIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSB2b2lkIEZy
YW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5ZWY2YWE0OTkxOGZiMzEwMGUwMWVkYmQ5MjdmZWRhM2RiNjYzODdk
Li4zMDczYzM2ZWVmNmExNDliMWRiN2Y4M2UzMGM0ZDRmNzcwMjJkZDExIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjAtMDItMTYgIEphY2sgTGVlICA8c2hpaGNoaWVoX2xlZUBhcHBsZS5jb20+
CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUt
PmNvbnRhaW5zKG51bGxwdHIpIGluIFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRP
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE1MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MTUxNTU1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWVudHJhbmN5IHByb3RlY3Rp
b24gZm9yIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzKCkuCisgICAgICAgIE1vdmUg
dGhlIGNvbW1vbiBjb2RlIGluIHJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSB0byBpbmhlcml0
ZWQgY2xhc3MsIEhUTUxQbHVnSW5FbGVtZW50LgorCisgICAgICAgICogZmFzdC90ZXh0L3RleHRD
b21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC5o
dG1sOiBBZGRlZC4KKwogMjAyMC0wMi0xMCAgSmFtZXMgSG93YXJkICA8amFtZXNob3dhcmRAbWFj
LmNvbT4KIAogICAgICAgICBTdGFuZGFyZCBnYW1lcGFkIG1hcHBpbmcgZm9yIEdhbWVDb250cm9s
bGVyR2FtZXBhZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0Q29tYmlu
ZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC90ZXh0Q29tYmluZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZmRlMjY0NGNmMmQ5MDJkMjc4MzU0M2RlYzMzOTQzMWMxMDMzNzMwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0
ZS1lbWJlZGRlZE9iai1hc3NlcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK++/vFRlc3Rz
IHVwZGF0aW5nIGVtYmVkZGVkIG9iamVjdHMgaW4gdGV4dC1jb21iaW5lIHJlbmRlcmluZy4gVGhl
IHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24u
77+8CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRl
LWVtYmVkZGVkT2JqLWFzc2VydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21i
aW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2U3OTE5ZTVj
MTU5ZTQyNmQzMjQxMDg0NDU0NjlmODUyY2NjYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQuaHRt
bApAQCAtMCwwICsxLDE4IEBACis8c3R5bGU+Citib2R5IHsKKyAgICAtd2Via2l0LXdyaXRpbmct
bW9kZTogdmVydGljYWwtbHI7CisgICAgLXdlYmtpdC10ZXh0LWNvbWJpbmU6IGhvcml6b250YWw7
Cit9Cis6OnNlbGVjdGlvbiB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgZnVuY3Rpb24gZXZlbnRoYW5kbGVyKCkgeworICAgICAgICBkb2N1bWVudC52
bGlua0NvbG9yID0gInJlZCI7CisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9iamVj
dCIpLnN0eWxlLmNvbG9yID0gInJlZCI7CisgICAgfQorPC9zY3JpcHQ+Cis8ZW1iZWQgc3JjPSJk
YXRhOnRleHQvcGxhaW47IiBvbmJlZm9yZWxvYWQ9ZXZlbnRoYW5kbGVyKCk+Zm9vPHNwYW4+VGVz
dHMgdXBkYXRpbmcgZW1iZWRkZWQgb2JqZWN0cyBpbiB0ZXh0LWNvbWJpbmUgcmVuZGVyaW5nLiBU
aGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlv
bi48L3NwYW4+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390985</attachid>
            <date>2020-02-17 14:47:46 -0800</date>
            <delta_ts>2020-02-18 20:57:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191532-20200217144745.patch</filename>
            <type>text/plain</type>
            <size>11652</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMTVmNzVhOWY3NDY0ZGEwMTA5NzRkOGUzNjFkMTMz
YTFiMmE0NjNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAyLTE2ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6ICFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5jb250YWlucyhudWxscHRyKSBpbiBXZWJD
b3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTMyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjE1MTU1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgcmVlbnRyYW5jeSBwcm90ZWN0aW9uIGZvciBGcmFtZVZpZXc6OnVwZGF0ZUVt
YmVkZGVkT2JqZWN0cygpLgorICAgICAgICBNb3ZlIHRoZSBjb21tb24gY29kZSBpbiByZW5kZXJX
aWRnZXRMb2FkaW5nUGx1Z2luKCkgdG8gaW5oZXJpdGVkIGNsYXNzLCBIVE1MUGx1Z0luRWxlbWVu
dC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVk
T2JqLWFzc2VydC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5n
UGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdp
biBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQ6OnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4gY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cyk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAyMC0wMi0xMCAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0NjA1NSk6
IERhdGEgZGV0ZWN0ZWQgVVJMcyBhcmUgbm8gbG9uZ2VyIGJsdWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5kZXggNDQ1MTE2NzNjZDdkNmVhMTczYjg1NmU1ZDdj
MGY3MjNmYmI2ZmIyNi4uZjc5ZDE3OTQ5NjU5YzJmM2EzYTA3MGM0YjZiYjhlZDVmMWJlZWM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTk2LDE0ICs5
Niw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKIAogUmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0
RWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFj
YW5FbWJlZEphdmEoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBOZWVkcyB0
byBsb2FkIHRoZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQKLSAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2luLgot
ICAgIC8vIEZJWE1FOiA8cmRhcjovLzE2ODkzNzA4PiBDaGVjayBpZiBkaXNwYXRjaGluZyBldmVu
dHMgaGVyZSBpcyBzYWZlLgotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkp
OwotICAgIHJldHVybiByZW5kZXJXaWRnZXQoKTsKKyAgICByZXR1cm4gY2FuRW1iZWRKYXZhKCkg
PyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgOiBu
dWxscHRyOwogfQogCiB2b2lkIEhUTUxBcHBsZXRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoQ3JlYXRl
UGx1Z2lucyBjcmVhdGVQbHVnaW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHAKaW5kZXggOTE3MDFlMTQ0NGVmMjg2MDg1ZjcyMTI0MGJlZjBhYjZjMjc2MTYxMi4uOGNk
ZjkwMzA5ZjcwYjRkZjI3NTQ4NTliY2YzNDUyNGUwMjE1YzlhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC04MCwxNCArODAsOSBAQCBzdGF0aWMgaW5saW5l
IFJlbmRlcldpZGdldCogZmluZFdpZGdldFJlbmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiAKIFJl
bmRlcldpZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigp
IGNvbnN0CiB7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGRvY3VtZW50KCkudmlldygp
OwotICAgIGlmICghdmlldyB8fCAoIXZpZXctPmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJl
ZUxheW91dCgpICYmICF2aWV3LT5pc1BhaW50aW5nKCkpKSB7Ci0gICAgICAgIC8vIE5lZWRzIHRv
IGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZAotICAgICAgICAvLyB3aGVuIEphdmFTY3JpcHQgY29kZSBhY2Nlc3NlcyB0aGUgcGx1Z2lu
LgotICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly8xNjg5MzcwOD4gQ2hlY2sgaWYgZGlzcGF0Y2hp
bmcgZXZlbnRzIGhlcmUgaXMgc2FmZS4KLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3lu
Y2hyb25vdXNseSk7Ci0gICAgfQotICAgIHJldHVybiBmaW5kV2lkZ2V0UmVuZGVyZXIodGhpcyk7
CisgICAgUmVuZGVyV2lkZ2V0KiB3aWRnZXQgPSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5k
ZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCk7CisKKyAgICByZXR1cm4gd2lkZ2V0ID8gd2lkZ2V0IDog
ZmluZFdpZGdldFJlbmRlcmVyKHRoaXMpOwogfQogCiB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDZmZDQy
ZTE4NmM4MGY0OTU4Mzc1OGExNjU3YjRkMjE4NzJjYzY2OTcuLjk4NWVkYjUzYWIxMzU0NGU0Mjlk
OWRjZTZlNDM5ODQ5OGFlNjAxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCkBAIC03NywxNSArNzcsNiBAQCBSZWY8SFRNTE9iamVjdEVsZW1lbnQ+IEhUTUxP
YmplY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVJlbmRlcldpZGdldCogSFRNTE9iamVjdEVsZW1lbnQ6OnJl
bmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdAotewotICAgIC8vIE5lZWRzIHRvIGxvYWQg
dGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAot
ICAgIC8vIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGFjY2Vzc2VzIHRoZSBwbHVnaW4uCi0gICAgLy8g
RklYTUU6IDxyZGFyOi8vMTY4OTM3MDg+IENoZWNrIGlmIGRpc3BhdGNoaW5nIGV2ZW50cyBoZXJl
IGlzIHNhZmUuCi0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25vdXNseSk7Ci0gICAg
cmV0dXJuIHJlbmRlcldpZGdldCgpOyAvLyBUaGlzIHdpbGwgcmV0dXJuIDAgaWYgdGhlIHJlbmRl
cmVyIGlzIG5vdCBhIFJlbmRlcldpZGdldC4KLX0KLQogaW50IEhUTUxPYmplY3RFbGVtZW50Ojpk
ZWZhdWx0VGFiSW5kZXgoKSBjb25zdAogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDYwMWQ1MjJhMjU0ZGU5NTY1MjA0M2Q3YzNmMTcx
MTg4NDA1ZTgzZGYuLjMxMmVjNzYxNGQ5OGJiOTJmMWEzZGYyZDgyNGZmZmY0ZTk3OGM1YzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTU5LDggKzU5LDYgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAotICAgIFJlbmRlcldpZGdldCog
cmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IGZpbmFsOwotCiAgICAgaW50IGRlZmF1
bHRUYWJJbmRleCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA0ZjAzMmExYzllNmRmYzYwYTJkNjYy
NjdiYTI4NTZkYWQ0M2Q0ZWI3Li5kMjI2ODVkNmJmYjUxNzkyYTdhYmZjYWU5MjFhOTYzMTZkOWE3
ZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMTU3
LDYgKzE1NywxOCBAQCBXaWRnZXQqIEhUTUxQbHVnSW5FbGVtZW50OjpwbHVnaW5XaWRnZXQoUGx1
Z2luTG9hZGluZ1BvbGljeSBsb2FkUG9saWN5KSBjb25zdAogICAgIHJldHVybiByZW5kZXJXaWRn
ZXQtPndpZGdldCgpOwogfQogCitSZW5kZXJXaWRnZXQqIEhUTUxQbHVnSW5FbGVtZW50OjpyZW5k
ZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiB2
aWV3ID0gZG9jdW1lbnQoKS52aWV3KCk7CisgICAgaWYgKCF2aWV3IHx8ICghdmlldy0+aW5VcGRh
dGVFbWJlZGRlZE9iamVjdHMoKSAmJiAhdmlldy0+bGF5b3V0Q29udGV4dCgpLmlzSW5MYXlvdXQo
KSAmJiAhdmlldy0+aXNQYWludGluZygpKSkgeworICAgICAgICAvLyBOZWVkcyB0byBsb2FkIHRo
ZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAg
ICAgICAgLy8gd2hlbiBKYXZhU2NyaXB0IGNvZGUgYWNjZXNzZXMgdGhlIHBsdWdpbi4KKyAgICAg
ICAgLy8gRklYTUU6IDxyZGFyOi8vMTY4OTM3MDg+IENoZWNrIGlmIGRpc3BhdGNoaW5nIGV2ZW50
cyBoZXJlIGlzIHNhZmUuCisgICAgICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3Vz
bHkpOworICAgIH0KKyAgICByZXR1cm4gcmVuZGVyV2lkZ2V0KCk7IC8vIFRoaXMgd2lsbCByZXR1
cm4gbnVsbHB0ciBpZiB0aGUgcmVuZGVyZXIgaXMgbm90IGEgUmVuZGVyV2lkZ2V0LgorfQorCiBi
b29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAgIGlmIChuYW1lID09IHdpZHRoQXR0ciB8fCBu
YW1lID09IGhlaWdodEF0dHIgfHwgbmFtZSA9PSB2c3BhY2VBdHRyIHx8IG5hbWUgPT0gaHNwYWNl
QXR0ciB8fCBuYW1lID09IGFsaWduQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaAppbmRleCAyYjhlZTQzNThlNmUyYWMwM2RkMmNkODQ3MDM3NGE2ZmY4ZWE1NGM2Li43
MjI1YmI0NWRmNjYyNTBhMzY3YTczNjZmMzQ4YTY4ZjY4MzYwZDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0xMDksNiArMTA5LDkgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKIAogICAgIGJvb2wgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRsZXI7CisgICAgCisg
ICAgLy8gVGhpcyB3aWxsIGxvYWQgdGhlIHBsdWdpbiBpZiBuZWNlc3NhcnkuCisgICAgdmlydHVh
bCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHN3YXBSZW5kZXJlclRpbWVyRmlyZWQoKTsKQEAgLTExNiw5ICsxMTks
NiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkgPSBkZWxldGU7IC8vIEdlbmVyYXRlIGEgY29tcGlsZSBlcnJvciBp
ZiBzb21lb25lIGNhbGxzIHRoaXMgYnkgbWlzdGFrZS4KIAotICAgIC8vIFRoaXMgd2lsbCBsb2Fk
IHRoZSBwbHVnaW4gaWYgbmVjZXNzYXJ5LgotICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5k
ZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QgPSAwOwotCiAgICAgYm9vbCBzdXBwb3J0c0Zv
Y3VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5
Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDQxYWEwOGI3OGU4M2UwODA0ZDk0N2RlMDZjZGJkYmQwNmM4ZjI2NTMuLjU2NzcyZjgxMzIz
OTNhZWU2NWU3MGI3ZWFhMGI4OGE2MDQwNjc2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTMyNjksNiArMzI2OSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9i
amVjdChSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCiAKIGJvb2wgRnJhbWVW
aWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogeworICAgIFNldEZvclNjb3BlPGJvb2w+IGlu
VXBkYXRlRW1iZWRkZWRPYmplY3RzKG1faW5VcGRhdGVFbWJlZGRlZE9iamVjdHMsIHRydWUpOwog
ICAgIGlmIChsYXlvdXRDb250ZXh0KCkuaXNMYXlvdXROZXN0ZWQoKSB8fCAhbV9lbWJlZGRlZE9i
amVjdHNUb1VwZGF0ZSB8fCBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlLT5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkMmNjNzBm
MjVmYjNiOTNiZmM5ODc1NWI1ZTgzYThhOGQwODNmZTY2Li4zNDYwZjBlYzExODgxMzE1ZTRhMDA1
NThjYzk5OTY0YTRkODU2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY2MSw2ICs2
NjEsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvT2Zmc2V0
V2l0aEFuaW1hdGlvbihjb25zdCBTY3JvbGxPZmZzZXQmLCBTY3JvbGxUeXBlID0gU2Nyb2xsVHlw
ZTo6UHJvZ3JhbW1hdGljLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVk
KTsKIAorICAgIGJvb2wgaW5VcGRhdGVFbWJlZGRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBt
X2luVXBkYXRlRW1iZWRkZWRPYmplY3RzOyB9CisKIHByb3RlY3RlZDoKICAgICBib29sIHNjcm9s
bENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIGZpbmFsOwogICAgIHZv
aWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBmaW5h
bDsKQEAgLTk0NSw2ICs5NDcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkF1dG9TaXplIHsg
ZmFsc2UgfTsKICAgICAvLyBUcnVlIGlmIGF1dG9zaXplIGhhcyBiZWVuIHJ1biBzaW5jZSBtX3No
b3VsZEF1dG9TaXplIHdhcyBzZXQuCiAgICAgYm9vbCBtX2RpZFJ1bkF1dG9zaXplIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faW5VcGRhdGVFbWJlZGRlZE9iamVjdHMgeyBmYWxzZSB9OwogfTsKIAog
aW5saW5lIHZvaWQgRnJhbWVWaWV3OjppbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5UGl4ZWxDb3Vu
dChjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllZjZhYTQ5OTE4ZmIzMTAwZTAxZWRiZDky
N2ZlZGEzZGI2NjM4N2QuLjMwNzNjMzZlZWY2YTE0OWIxZGI3ZjgzZTMwYzRkNGY3NzAyMmRkMTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMi0xNiAgSmFjayBMZWUgIDxzaGloY2hpZWhf
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiAhbV9lbWJlZGRlZE9i
amVjdHNUb1VwZGF0ZS0+Y29udGFpbnMobnVsbHB0cikgaW4gV2ViQ29yZTo6RnJhbWVWaWV3Ojp1
cGRhdGVFbWJlZGRlZE9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTUzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYxNTE1NTU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHJlZW50
cmFuY3kgcHJvdGVjdGlvbiBmb3IgRnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKS4K
KyAgICAgICAgTW92ZSB0aGUgY29tbW9uIGNvZGUgaW4gcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdp
bigpIHRvIGluaGVyaXRlZCBjbGFzcywgSFRNTFBsdWdJbkVsZW1lbnQuCisKKyAgICAgICAgKiBm
YXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC90ZXh0Q29tYmluZS11cGRhdGUtZW1iZWRk
ZWRPYmotYXNzZXJ0Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAyLTEwICBKYW1lcyBIb3dhcmQgIDxq
YW1lc2hvd2FyZEBtYWMuY29tPgogCiAgICAgICAgIFN0YW5kYXJkIGdhbWVwYWQgbWFwcGluZyBm
b3IgR2FtZUNvbnRyb2xsZXJHYW1lcGFkcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3NlcnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHRDb21iaW5lLXVwZGF0ZS1lbWJlZGRlZE9iai1hc3Nl
cnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZGUyNjQ0Y2YyZDkwMmQyNzgzNTQzZGVjMzM5
NDMxYzEwMzM3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4
dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSBAQAor77+8VGVzdHMgdXBkYXRpbmcgZW1iZWRkZWQgb2JqZWN0cyBpbiB0ZXh0LWNvbWJpbmUg
cmVuZGVyaW5nLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0
IGFuIGFzc2VydGlvbi7vv7wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0
Q29tYmluZS11cGRhdGUtZW1iZWRkZWRPYmotYXNzZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVkT2JqLWFzc2VydC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3ZTc5MTllNWMxNTllNDI2ZDMyNDEwODQ0NTQ2OWY4NTJjY2NhNzYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dENvbWJpbmUtdXBkYXRlLWVtYmVkZGVk
T2JqLWFzc2VydC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxzdHlsZT4KK2JvZHkgeworICAgIC13
ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsKKyAgICAtd2Via2l0LXRleHQtY29tYmlu
ZTogaG9yaXpvbnRhbDsKK30KKzo6c2VsZWN0aW9uIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9z
dHlsZT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBmdW5jdGlvbiBldmVudGhhbmRsZXIoKSB7CisgICAg
ICAgIGRvY3VtZW50LnZsaW5rQ29sb3IgPSAicmVkIjsKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib2JqZWN0Iikuc3R5bGUuY29sb3IgPSAicmVkIjsKKyAgICB9Cis8L3NjcmlwdD4K
KzxlbWJlZCBzcmM9ImRhdGE6dGV4dC9wbGFpbjsiIG9uYmVmb3JlbG9hZD1ldmVudGhhbmRsZXIo
KT5mb288c3Bhbj5UZXN0cyB1cGRhdGluZyBlbWJlZGRlZCBvYmplY3RzIGluIHRleHQtY29tYmlu
ZSByZW5kZXJpbmcuIFRoZSB0ZXN0IHBhc3NlcyBpZiBXZWJLaXQgZG9lc24ndCBjcmFzaCBvciBo
aXQgYW4gYXNzZXJ0aW9uLjwvc3Bhbj4K
</data>

          </attachment>
      

    </bug>

</bugzilla>