<?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>114072</bug_id>
          
          <creation_ts>2013-04-05 16:35:21 -0700</creation_ts>
          <short_desc>Unify the many and varied stack trace mechanisms, and make the result sane.</short_desc>
          <delta_ts>2013-04-09 14:15:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>870131</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-05 16:35:21 -0700</bug_when>
    <thetext>Unify the many and varied stack trace mechanisms, and make the result sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870133</commentid>
    <comment_count>1</comment_count>
      <attachid>196698</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-05 16:40:07 -0700</bug_when>
    <thetext>Created attachment 196698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870143</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-05 16:51:33 -0700</bug_when>
    <thetext>Committed r147818: &lt;http://trac.webkit.org/changeset/147818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870224</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-05 21:53:32 -0700</bug_when>
    <thetext>It seems like this patch caused 7 tests to crash on Mac WK2?
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/8741
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/8742</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870225</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-05 21:54:14 -0700</bug_when>
    <thetext>Sample stack trace:

http://build.webkit.org/results/Apple%20MountainLion%20Release%20WK1%20(Tests)/r147818%20(8742)/plugins/pass-different-npp-struct-crash-log.txt

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010bfee3b6 WebCore::internalAddMessage(WebCore::Page*, WebCore::MessageType, WebCore::MessageLevel, JSC::ExecState*, WTF::PassRefPtr&lt;WebCore::ScriptArguments&gt;, bool, bool) + 310 (ScriptCallFrame.h:52)
1   com.apple.WebCore             	0x000000010bfee786 WebCore::Console::log(JSC::ExecState*, WTF::PassRefPtr&lt;WebCore::ScriptArguments&gt;) + 70 (PassRefPtr.h:68)
2   com.apple.WebCore             	0x000000010c517582 WebCore::jsConsolePrototypeFunctionLog(JSC::ExecState*) + 146 (JSConsole.cpp:211)
3   com.apple.JavaScriptCore      	0x000000010b710790 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 640 (Interpreter.cpp:1105)
4   com.apple.JavaScriptCore      	0x000000010b60ef55 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 69 (CallData.cpp:40)
5   com.apple.WebKit              	0x000000010bc13c83 WebKit::NetscapePluginInstanceProxy::invoke(unsigned int, JSC::Identifier const&amp;, char*, unsigned int, char*&amp;, unsigned int&amp;) + 803 (NetscapePluginInstanceProxy.mm:918)
6   com.apple.WebKit              	0x000000010bc0cd93 WKPCInvoke + 307 (NetscapePluginInstanceProxy.h:79)
7   com.apple.WebKit              	0x000000010bc7a515 _XPCInvoke + 133 (WebKitPluginClientServer.c:1697)
8   com.apple.WebKit              	0x000000010bc7af5a WebKitPluginClient_server + 106 (WebKitPluginClientServer.c:3459)
9   com.apple.WebKit              	0x000000010bc0ba97 WebKit::NetscapePluginHostProxy::processRequests() + 183 (NetscapePluginHostProxy.mm:302)
10  com.apple.WebKit              	0x000000010bc17a3c std::__1::auto_ptr&lt;WebKit::NetscapePluginInstanceProxy::BooleanReply&gt; WebKit::NetscapePluginInstanceProxy::waitForReply&lt;WebKit::NetscapePluginInstanceProxy::BooleanReply&gt;(unsigned int) + 124 (NetscapePluginInstanceProxy.mm:806)
11  com.apple.WebKit              	0x000000010bc10d18 WebKit::NetscapePluginInstanceProxy::resize(CGRect, CGRect) + 120 (memory:1940)
12  com.apple.WebKit              	0x000000010bc5a7b2 -[WebHostedNetscapePluginView updateAndSetWindow] + 674 (WebHostedNetscapePluginView.mm:218)
13  com.apple.WebKit              	0x000000010bc23d39 -[WebBaseNetscapePluginView start] + 313 (WebBaseNetscapePluginView.mm:419)
14  com.apple.WebKit              	0x000000010bc2434b -[WebBaseNetscapePluginView viewDidMoveToWindow] + 171 (WebBaseNetscapePluginView.mm:557)
15  com.apple.AppKit              	0x00007fff89b67317 -[NSView _setWindow:] + 2788
16  com.apple.AppKit              	0x00007fff89b70aa7 -[NSView addSubview:] + 407
17  com.apple.WebKit              	0x000000010bc66c02 -[WebHTMLView addSubview:] + 50 (WebHTMLView.mm:2965)
18  com.apple.WebCore             	0x000000010cac63f1 WebCore::ScrollView::platformAddChild(WebCore::Widget*) + 129 (ScrollViewMac.mm:74)
19  com.apple.WebCore             	0x000000010cac1e16 WebCore::ScrollView::addChild(WTF::PassRefPtr&lt;WebCore::Widget&gt;) + 134 (ScrollView.cpp:77)
20  com.apple.WebCore             	0x000000010ca67b3c WebCore::moveWidgetToParentSoon(WebCore::Widget*, WebCore::FrameView*) + 60 (PassRefPtr.h:68)
21  com.apple.WebCore             	0x000000010ca67aed WebCore::RenderWidget::setWidget(WTF::PassRefPtr&lt;WebCore::Widget&gt;) + 573 (RenderWidget.cpp:214)
22  com.apple.WebCore             	0x000000010c9d04dc WebCore::RenderPart::setWidget(WTF::PassRefPtr&lt;WebCore::Widget&gt;) + 44 (PassRefPtr.h:68)
23  com.apple.WebCore             	0x000000010cb6d76d WebCore::SubframeLoader::loadPlugin(WebCore::HTMLPlugInImageElement*, WebCore::KURL const&amp;, WTF::String const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;, bool) + 461 (PassRefPtr.h:68)
24  com.apple.WebCore             	0x000000010cb6d516 WebCore::SubframeLoader::requestPlugin(WebCore::HTMLPlugInImageElement*, WebCore::KURL const&amp;, WTF::String const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;, bool) + 182 (SubframeLoader.cpp:161)
25  com.apple.WebCore             	0x000000010cb6d9bd WebCore::SubframeLoader::requestObject(WebCore::HTMLPlugInImageElement*, WTF::String const&amp;, WTF::AtomicString const&amp;, WTF::String const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;) + 493 (SubframeLoader.cpp:236)
26  com.apple.WebCore             	0x000000010c354fe2 WebCore::HTMLEmbedElement::updateWidget(WebCore::PluginCreationOption) + 546 (HTMLEmbedElement.cpp:173)
27  com.apple.WebCore             	0x000000010c2ccef6 WebCore::FrameView::updateWidget(WebCore::RenderObject*) + 278 (FrameView.cpp:2605)
28  com.apple.WebCore             	0x000000010c2cd051 WebCore::FrameView::updateWidgets() + 321 (OwnPtr.h:72)
29  com.apple.WebCore             	0x000000010c2c8daf WebCore::FrameView::performPostLayoutTasks() + 399 (FrameView.cpp:2707)
30  com.apple.WebCore             	0x000000010c2c880b WebCore::FrameView::layout(bool) + 2603 (FrameView.cpp:1361)
31  com.apple.WebCore             	0x000000010c0f7b2f WebCore::Document::implicitClose() + 767 (Document.cpp:2521)
32  com.apple.WebCore             	0x000000010c2ac281 WebCore::FrameLoader::checkCompleted() + 337 (FrameLoader.cpp:770)
33  com.apple.WebCore             	0x000000010c2ab03f WebCore::FrameLoader::finishedParsing() + 95 (FrameLoader.cpp:703)
34  com.apple.WebCore             	0x000000010c10096c WebCore::Document::finishedParsing() + 316 (Frame.h:331)
35  com.apple.WebCore             	0x000000010c33f2e8 WebCore::HTMLDocumentParser::prepareToStopParsing() + 168 (HTMLDocumentParser.cpp:755)
36  com.apple.WebCore             	0x000000010c12741d WebCore::DocumentWriter::end() + 61 (RefPtr.h:124)
37  com.apple.WebCore             	0x000000010c113336 WebCore::DocumentLoader::finishedLoading(double) + 358 (ResourceErrorBase.h:42)
38  com.apple.WebCore             	0x000000010bfb0b0d WebCore::CachedResource::checkNotify() + 93 (CachedResource.cpp:379)
39  com.apple.WebCore             	0x000000010bfad8e6 WebCore::CachedRawResource::data(WTF::PassRefPtr&lt;WebCore::ResourceBuffer&gt;, bool) + 454 (PassRefPtr.h:68)
40  com.apple.WebCore             	0x000000010cb70c50 WebCore::SubresourceLoader::didFinishLoading(double) + 128 (PassRefPtr.h:68)
41  com.apple.Foundation          	0x00007fff8def4528 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke_0 + 28
42  com.apple.Foundation          	0x00007fff8def446c -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 227
43  com.apple.Foundation          	0x00007fff8def4368 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 63
44  com.apple.CFNetwork           	0x00007fff85eb05c1 ___delegate_didFinishLoading_block_invoke_0 + 40
45  com.apple.CFNetwork           	0x00007fff85ea2a7a ___withDelegateAsync_block_invoke_0 + 90
46  com.apple.CFNetwork           	0x00007fff85f332ea __block_global_1 + 28
47  com.apple.CoreFoundation      	0x00007fff85af2154 CFArrayApplyFunction + 68
48  com.apple.CFNetwork           	0x00007fff85e937e4 RunloopBlockContext::perform() + 124
49  com.apple.CFNetwork           	0x00007fff85e936bb MultiplexerSource::perform() + 221
50  com.apple.CoreFoundation      	0x00007fff85ad3b31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
51  com.apple.CoreFoundation      	0x00007fff85ad3455 __CFRunLoopDoSources0 + 245
52  com.apple.CoreFoundation      	0x00007fff85af67f5 __CFRunLoopRun + 789
53  com.apple.CoreFoundation      	0x00007fff85af60e2 CFRunLoopRunSpecific + 290
54  com.apple.Foundation          	0x00007fff8df71f5e -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 268
55  DumpRenderTree                	0x000000010b4d362e runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) + 1639 (DumpRenderTree.mm:1374)
56  DumpRenderTree                	0x000000010b4d2dc2 dumpRenderTree(int, char const**) + 1727 (DumpRenderTree.mm:833)
57  DumpRenderTree                	0x000000010b4d3997 main + 86 (DumpRenderTree.mm:926)
58  libdyld.dylib                 	0x00007fff8f31f7e1 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870327</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-06 11:24:06 -0700</bug_when>
    <thetext>Rolled out: https://bugs.webkit.org/show_bug.cgi?id=114094.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870362</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-06 15:46:29 -0700</bug_when>
    <thetext>Committed r147858: &lt;http://trac.webkit.org/changeset/147858&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872080</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-09 14:15:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/13583266&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196698</attachid>
            <date>2013-04-05 16:40:07 -0700</date>
            <delta_ts>2013-04-05 16:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114072-20130405163954.patch</filename>
            <type>text/plain</type>
            <size>29072</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Mzg2ODBmNzkwMjg0Mjg3NzQ5MzhkODgxNzM5MmVhZjM3MjE5ZWI2Li5iMGY3OGViMjAwMDA1MTZh
ZmViN2U2MWVjYzJhMWIzZGQ1MmVmM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxMy0wNC0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFVuaWZ5IHRoZSBtYW55IGFuZCB2YXJpZWQgc3RhY2sgdHJhY2UgbWVjaGFuaXNt
cywgYW5kIG1ha2UgdGhlIHJlc3VsdCBzYW5lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZXMgSlNDOjpTdGFja0ZyYW1lIHJlY29yZCB0aGUgYnl0
ZWNvZGUgb2Zmc2V0IGFuZCBvdGhlciBuZWNlc3NhcnkgZGF0YQorICAgICAgICByYXRoZXIgdGhh
biByZXF1aXJpbmcgdXMgdG8gcGVyZm9ybSBlYWdlciBldmFsdWF0aW9uIG9mIHRoZSBsaW5lIG51
bWJlciwgZXRjLgorICAgICAgICBUaGVuIHJlbW92ZSBtb3N0IG9mIHRoZSB1c2VycyBvZiByZXRy
aWV2ZUxhc3RDYWxsZXIsIGFzIG1vc3Qgb2YgdGhlbSB3ZXJlCisgICAgICAgIHVzaW5nIGl0IHRv
IGNyZWF0ZSBhIHN0YWNrIHRyYWNlIGluIGEgZmFpcmx5IGluY29tcGxldGUgYW5kIGluZWZmaWNp
ZW50IHdheS4KKworICAgICAgICBTdGFja0ZyYW1lIG5vdyBhbHNvIGhhcyBhIGNvdXBsZSBvZiBo
ZWxwZXJzIHRvIGdldCB0aGUgbGluZSBhbmQgY29sdW1uIGluZm8uCisKKyAgICAgICAgKiBBUEkv
SlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2spOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2lu
ZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OmdldEJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEZyYW1l
KToKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbGVySW5mbyk6CisgICAgICAgIChKU0M6OlN0YWNrRnJh
bWU6OmxpbmUpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpjb2x1bW4pOgorICAgICAgICAo
SlNDOjpTdGFja0ZyYW1lOjpleHByZXNzaW9uSW5mbyk6CisgICAgICAgIChKU0M6OlN0YWNrRnJh
bWU6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2Up
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlQ2FsbGVyRnJvbVZNQ29kZSk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKFN0YWNrRnJhbWUp
OgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgor
ICAgICAgICAoSlNDOjp0aHJvd0Vycm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0
YS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkR5bmFtaWNHbG9iYWxP
YmplY3RTY29wZTo6RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKToKKwogMjAxMy0wNC0wNCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgcHJldGVuZGlu
ZyB0aGF0IHN0YXRlbWVudHMgcmV0dXJuIGEgdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNzY4MzhjNWRm
OWY4NzdmNzUyY2YzN2Y3Y2RhZmM5NTRjOWFlYTEzLi4yOTY2MzNkYjQ0YTgwYWI5NTZmOWIyODk0
NzE0OTI0ZDUwNmViNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDQtMDUg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSB0aGUgbWFu
eSBhbmQgdmFyaWVkIHN0YWNrIHRyYWNlIG1lY2hhbmlzbXMsIGFuZCBtYWtlIHRoZSByZXN1bHQg
c2FuZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
dyB0aGF0IHdlJ3ZlIGZsZXNoZWQgb3V0IHRoZSBTdGFja0ZyYW1lcyBmcm9tIEludGVycHJldGVy
OjpnZXRTdGFja1RyYWNlCisgICAgICAgIFdlYkNvcmUgY2FuIGp1c3QgYXNrIHVzIGZvciBhIHN0
YWNrIHRyYWNlIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyBpdHMgb3duCisgICAgICAgIHN0YWNr
IHdhbGtpbmcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayk6CisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDYWxsRnJhbWU6OmlzRXF1YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuaDoKKyAgICAgICAgKFNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDYWxsRnJhbWU6OmNvbHVtbk51bWJlcik6CisKIDIwMTMtMDQtMDQgIENocmlzdG9waGUgRHVt
ZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtDYWlyb10gU3RvcCBw
YXNzaW5nIHJhdyBwb2ludGVycyB0byBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAyMTA0ZWEzMjEyNzQxMWJhNmJl
NTEwYWFmMTViMDM5M2U2N2E5ZWI1Li5iYzIxODc2NzFmM2QxMjY4MjczNTMyOGVjMTU1YmNhOWJi
NzAwZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VQcm92
aWRlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTE3NSw1MSArMTc2LDM4IEBAIEpTU3RyaW5nUmVm
IEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBtYXhT
dGFja1NpemUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOwotCi0gICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGV4ZWM7Ci0gICAg
U3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICBpZiAoZXhlYy0+Y2FsbGVlKCkpIHsKLSAgICAgICAg
aWYgKGFzT2JqZWN0KGV4ZWMtPmNhbGxlZSgpKS0+aW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246
OnNfaW5mbykpIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGFzSW50ZXJuYWxGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPm5hbWUoZXhlYyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiMwICIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1l
KTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKCkgIik7Ci0gICAgICAgICAg
ICBjb3VudCsrOwotICAgICAgICB9Ci0gICAgfQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZSk7Ci0gICAgICAgIGludCBzaWduZWRMaW5lTnVtYmVy
OwotICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICAgICAgU3RyaW5nIHVybFN0cmluZzsK
LSAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tU
cmFjZTsKKyAgICBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSgmZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdGFja1RyYWNlLCBtYXhTdGFja1NpemUpOwogCi0gICAgICAgIGV4ZWMtPmludGVycHJldGVy
KCktPnJldHJpZXZlTGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJj
ZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKLQotICAgICAgICBpZiAoZnVuY3Rpb24pCi0gICAg
ICAgICAgICBmdW5jdGlvbk5hbWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKS0+bmFt
ZShleGVjKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrVHJhY2Uuc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgU3RyaW5nIHVybFN0cmluZzsKKyAgICAgICAgU3RyaW5nIGZ1bmN0aW9u
TmFtZTsKKyAgICAgICAgU3RhY2tGcmFtZSYgZnJhbWUgPSBzdGFja1RyYWNlW2ldOworICAgICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gZnJhbWUuY2FsbGVlLmdldCgpOworICAgICAgICBpZiAoZnJh
bWUuY2FsbGVlKQorICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gZnJhbWUuZnJpZW5kbHlGdW5j
dGlvbk5hbWUoZXhlYyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gQ2FsbGVyIGlz
IHVua25vd24sIGJ1dCBpZiBmcmFtZSBpcyBlbXB0eSB3ZSBzaG91bGQgc3RpbGwgYWRkIHRoZSBm
cmFtZSwgYmVjYXVzZQogICAgICAgICAgICAgLy8gc29tZXRoaW5nIGNhbGxlZCB1cywgYW5kIGdh
dmUgdXMgYXJndW1lbnRzLgotICAgICAgICAgICAgaWYgKGNvdW50KQorICAgICAgICAgICAgaWYg
KGkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQg
bGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAw
OworICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gZnJhbWUubGluZSgpOwogICAgICAgICBp
ZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGNvdW50KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaSk7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZSk7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKCkgYXQgIik7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHVybFN0cmluZyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOwotICAgICAgICBpZiAoIWZ1bmN0
aW9uIHx8ICsrY291bnQgPT0gbWF4U3RhY2tTaXplKQorICAgICAgICBpZiAoZnJhbWUuY29kZVR5
cGUgIT0gU3RhY2tGcmFtZU5hdGl2ZUNvZGUpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCc6Jyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoIWZ1bmN0aW9uKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICB9CiAgICAgcmV0
dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoYnVpbGRlci50b1N0cmluZygpKS5sZWFrUmVmKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDcxMTBmODU3ZDY5OWFhZjM1Zjc2NmFlNWI0NTA0MGU3
YjA5ZDcwNGUuLjRhZTdmYjI4NDdmMjljZmIyYTc4MGVmOWU1MzQxYmE2MDVjNWVlOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCkBAIC0yMDU1LDYgKzIwNTUsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBp
bgogICAgIGlmICghbV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKGNoYXJQb3NpdGlvbiwgMCwgMCk7CiAgICAgZW1p
dE9wY29kZShvcF9kZWJ1Zyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lE
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDk4Y2FhNWZl
NDdhMjU3ZmJmZjc4Y2I0MmY3MDY3ZmRkYzA2MDRmMWYuLmY5ZmVmOWZmYWMzYmY2NGJmODQ5NWI3
OGU4ODNhYWRmMmM3ZTFjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEludGVycHJldGVyOjpT
dGFja1BvbGljeTo6U3RhY2tQb2xpY3koSW50ZXJwcmV0ZXImIGludGVycHJldGVyLCBjb25zdCBT
dGFja0JvdW5kCiB9CiAKIAotc3RhdGljIENhbGxGcmFtZSogZ2V0Q2FsbGVySW5mbyhKU0dsb2Jh
bERhdGEqLCBDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIHVuc2lnbmVkJiBieXRlY29kZU9m
ZnNldCwgQ29kZUJsb2NrKiYgY2FsbGVyT3V0KTsKK3N0YXRpYyBDYWxsRnJhbWUqIGdldENhbGxl
ckluZm8oSlNHbG9iYWxEYXRhKiwgQ2FsbEZyYW1lKiwgdW5zaWduZWQmIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqJiBjYWxsZXJPdXQpOwogCiAvLyBSZXR1cm5zIHRoZSBkZXB0aCBvZiB0aGUg
c2NvcGUgY2hhaW4gd2l0aGluIGEgZ2l2ZW4gY2FsbCBmcmFtZS4KIHN0YXRpYyBpbnQgZGVwdGgo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTU2NvcGUqIHNjKQpAQCAtNDIyLDggKzQyMiw5IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAjZW5k
aWYKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7CiAgICAgaW50IGxpbmUgPSAwOwot
ICAgIENvZGVCbG9jayogdW51c2VkQ2FsbGVyQ29kZUJsb2NrID0gMDsKLSAgICBnZXRDYWxsZXJJ
bmZvKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLCBsaW5lLCBieXRlY29kZU9m
ZnNldCwgdW51c2VkQ2FsbGVyQ29kZUJsb2NrKTsKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVC
bG9jayA9IDA7CisgICAgZ2V0Q2FsbGVySW5mbygmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNh
bGxGcmFtZSwgYnl0ZWNvZGVPZmZzZXQsIGNhbGxlckNvZGVCbG9jayk7CisgICAgbGluZSA9IGNh
bGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KTsKICAgICBkYXRhTG9nRigiW1JldHVyblZQQ10gICAgICAgICAgICAgICAgfCAlMTBwIHwgJWQg
KGxpbmUgJWQpXG4iLCBpdCwgYnl0ZWNvZGVPZmZzZXQsIGxpbmUpOwogICAgICsraXQ7CiAgICAg
ZGF0YUxvZ0YoIltDb2RlQmxvY2tdICAgICAgICAgICAgICAgIHwgJTEwcCB8ICVwIFxuIiwgaXQs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpOwpAQCAtNTA3LDggKzUwOCw3IEBAIE5FVkVSX0lOTElO
RSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1lKiYgY2FsbEZyYW1l
LCBKU1ZhbHVlIGV4CiAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkudG9wQ2FsbEZyYW1lID0g
Y2FsbGVyRnJhbWU7CiAgICAgaWYgKGNhbGxlckZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IHVudXNlZExpbmVOdW1iZXIgPSAwOwot
ICAgIGNhbGxGcmFtZSA9IGdldENhbGxlckluZm8oJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBj
YWxsRnJhbWUsIHVudXNlZExpbmVOdW1iZXIsIGJ5dGVjb2RlT2Zmc2V0LCBjb2RlQmxvY2spOwor
ICAgIGNhbGxGcmFtZSA9IGdldENhbGxlckluZm8oJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBj
YWxsRnJhbWUsIGJ5dGVjb2RlT2Zmc2V0LCBjb2RlQmxvY2spOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC01NjQsMjcgKzU2NCwyNSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9y
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgZXhj
ZXB0aW9uLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
Pm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsKIH0KIAotc3RhdGljIGlu
dCBnZXRMaW5lTnVtYmVyRm9yQ2FsbEZyYW1lKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitzdGF0aWMgdW5zaWduZWQgZ2V0Qnl0ZWNvZGVPZmZzZXRGb3JD
YWxsRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdsb2Jh
bERhdGEpOwogICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZs
YWcoKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiAtMTsKLSNpZiBFTkFCTEUoSklU
KSB8fCBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICBpZiAoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKQotICAg
ICAgICByZXR1cm4gY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLT5jb2RlT3JpZ2luKGNhbGxGcmFtZS0+Y29kZU9yaWdpbkluZGV4Rm9yREZHKCkpLmJ5dGVj
b2RlSW5kZXgpOworICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5jb2RlT3JpZ2luKGNhbGxGcmFt
ZS0+Y29kZU9yaWdpbkluZGV4Rm9yREZHKCkpLmJ5dGVjb2RlSW5kZXg7CiAjZW5kaWYKLSAgICBy
ZXR1cm4gY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5i
eXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSk7CisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Ynl0
ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCk7CiAjZW5kaWYKIH0KIAotc3RhdGljIENhbGxGcmFt
ZSogZ2V0Q2FsbGVySW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIsIHVuc2lnbmVkJiBieXRlY29kZU9mZnNldCwgQ29kZUJs
b2NrKiYgY2FsbGVyKQorc3RhdGljIENhbGxGcmFtZSogZ2V0Q2FsbGVySW5mbyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCYgYnl0ZWNvZGVP
ZmZzZXQsIENvZGVCbG9jayomIGNhbGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbERh
dGEsIGdsb2JhbERhdGEpOwogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gMDsKLSAgICBsaW5lTnVtYmVy
ID0gLTE7CiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOwog
ICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpID8gY2Fs
bEZyYW1lLT50cnVlQ2FsbGVyRnJhbWUoKSA6IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+cmVt
b3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsKICAgICBib29sIGNhbGxmcmFtZUlzSG9zdCA9IGNhbGxl
ckZyYW1lLT5hZGRIb3N0Q2FsbEZyYW1lRmxhZygpID09IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUo
KTsKQEAgLTY1NCw3ICs2NTIsNiBAQCBzdGF0aWMgQ2FsbEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCiAKICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsZXJDb2RlQmxvY2spOwogICAgIGNhbGxlciA9IGNhbGxlckNvZGVCbG9j
azsKLSAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIHJldHVybiBjYWxsZXJGcmFtZTsKIH0KIApA
QCAtNjgwLDQ5ICs2NzcsOTUgQEAgc3RhdGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0Zy
YW1lQ29kZVR5cGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIFN0YWNrRnJhbWVH
bG9iYWxDb2RlOwogfQogCi12b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzKQordW5zaWduZWQg
U3RhY2tGcmFtZTo6bGluZSgpCit7CisgICAgcmV0dXJuIGNvZGVCbG9jayA/IGNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSArIGxpbmVPZmZzZXQg
OiAwOworfQorCit1bnNpZ25lZCBTdGFja0ZyYW1lOjpjb2x1bW4oKQoreworICAgIGlmICghY29k
ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaW50IGRpdm90ID0gMDsKKyAgICBpbnQgdW51c2Vk
U3RhcnRPZmZzZXQgPSAwOworICAgIGludCB1bnVzZWRFbmRPZmZzZXQgPSAwOworICAgIGV4cHJl
c3Npb25JbmZvKGRpdm90LCB1bnVzZWRTdGFydE9mZnNldCwgdW51c2VkRW5kT2Zmc2V0KTsKKyAg
ICByZXR1cm4gY29kZS0+Y2hhclBvc2l0aW9uVG9Db2x1bW5OdW1iZXIoZGl2b3QpOworfQorCit2
b2lkIFN0YWNrRnJhbWU6OmV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZz
ZXQsIGludCYgZW5kT2Zmc2V0KQoreworICAgIGNvZGVCbG9jay0+ZXhwcmVzc2lvblJhbmdlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KTsKKyAgICBkaXZvdCArPSBzdGFydE9mZnNldDsKK30KKworU3RyaW5nIFN0YWNrRnJhbWU6
OnRvU3RyaW5nKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFN0cmluZ0J1aWxkZXIgdHJh
Y2VCdWlsZDsKKyAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gZnJpZW5kbHlGdW5jdGlvbk5hbWUo
Y2FsbEZyYW1lKTsKKyAgICBTdHJpbmcgc291cmNlVVJMID0gZnJpZW5kbHlTb3VyY2VVUkwoKTsK
KyAgICB0cmFjZUJ1aWxkLmFwcGVuZChmdW5jdGlvbk5hbWUpOworICAgIGlmICghc291cmNlVVJM
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZCgnQCcpOworICAgICAgICB0cmFjZUJ1aWxkLmFwcGVu
ZChzb3VyY2VVUkwpOworICAgICAgICBpZiAoY29kZVR5cGUgIT0gU3RhY2tGcmFtZU5hdGl2ZUNv
ZGUpIHsKKyAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jyk7CisgICAgICAgICAgICB0
cmFjZUJ1aWxkLmFwcGVuZE51bWJlcihsaW5lKCkpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOworfQorCit2b2lkIEludGVycHJldGVy
OjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVmVjdG9yPFN0YWNrRnJh
bWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplKQogewogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxh
ZygpOwogICAgIGlmICghY2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkpIAogICAgICAgICByZXR1cm47Ci0gICAgaW50IGxpbmUgPSBnZXRMaW5lTnVtYmVyRm9y
Q2FsbEZyYW1lKGdsb2JhbERhdGEsIGNhbGxGcmFtZSk7Ci0KKyAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IGdldEJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CiAgICAg
Y2FsbEZyYW1lID0gY2FsbEZyYW1lLT50cnVlQ2FsbEZyYW1lRnJvbVZNQ29kZSgpOworICAgIENv
ZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKIAotICAg
IHdoaWxlIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lICE9IENhbGxGcmFtZTo6bm9DYWxsZXIoKSkg
eworICAgIHdoaWxlIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lICE9IENhbGxGcmFtZTo6bm9DYWxs
ZXIoKSAmJiBtYXhTdGFja1NpemUtLSkgewogICAgICAgICBTdHJpbmcgc291cmNlVVJMOwotICAg
ICAgICBpZiAoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgeworICAgICAgICBpZiAoY2FsbGVyQ29k
ZUJsb2NrKSB7CiAgICAgICAgICAgICBzb3VyY2VVUkwgPSBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZy
YW1lKGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxKU09i
amVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBnZXRTdGFja0ZyYW1lQ29k
ZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigqZ2xvYmFsRGF0YSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpLCBsaW5lLCBzb3VyY2VVUkx9
OworICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geworICAgICAgICAgICAgICAgIFN0cm9uZzxK
U09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLAorICAgICAgICAgICAg
ICAgIGdldFN0YWNrRnJhbWVDb2RlVHlwZShjYWxsRnJhbWUpLAorICAgICAgICAgICAgICAgIFN0
cm9uZzxFeGVjdXRhYmxlQmFzZT4oKmdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCkpLAorICAgICAgICAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4o
Kmdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSksCisgICAg
ICAgICAgICAgICAgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKSwKKyAgICAgICAgICAgICAgICBj
YWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5saW5lTm8oKSwKKyAgICAgICAgICAg
ICAgICBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZU9mZnNldCgpLAorICAgICAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIHNvdXJjZVVSTAorICAgICAgICAgICAgfTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCpnbG9iYWxEYXRhLCBjYWxs
RnJhbWUtPmNhbGxlZSgpKSwgU3RhY2tGcmFtZU5hdGl2ZUNvZGUsIFN0cm9uZzxFeGVjdXRhYmxl
QmFzZT4oKSwgLTEsIFN0cmluZygpfTsKKyAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9IHsgU3Ry
b25nPEpTT2JqZWN0PigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jYWxsZWUoKSksIFN0YWNrRnJh
bWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+KCksIFN0cm9uZzxVbmxpbmtlZENv
ZGVCbG9jaz4oKSwgMCwgMCwgMCwgMCwgU3RyaW5nKCl9OwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQocyk7CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgdW51c2VkQnl0ZWNvZGVPZmZz
ZXQgPSAwOwotICAgICAgICBDb2RlQmxvY2sqIHVudXNlZENhbGxlckNvZGVCbG9jayA9IDA7Ci0g
ICAgICAgIGNhbGxGcmFtZSA9IGdldENhbGxlckluZm8oZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBs
aW5lLCB1bnVzZWRCeXRlY29kZU9mZnNldCwgdW51c2VkQ2FsbGVyQ29kZUJsb2NrKTsKKyAgICAg
ICAgY2FsbEZyYW1lID0gZ2V0Q2FsbGVySW5mbyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGJ5dGVj
b2RlT2Zmc2V0LCBjYWxsZXJDb2RlQmxvY2spOwogICAgIH0KIH0KIAotdm9pZCBJbnRlcnByZXRl
cjo6YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVj
dCogZXJyb3IpCit2b2lkIEludGVycHJldGVyOjphZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXJyb3IpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwogICAgIEFTU0VSVChjYWxsRnJh
bWUgPT0gZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lIHx8IGNhbGxGcmFtZSA9PSBjYWxsRnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpIHx8IGNhbGxGcmFtZSA9PSBjYWxs
RnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKLSAgICBpZiAoZXJy
b3ItPmhhc1Byb3BlcnR5KGNhbGxGcmFtZSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c3Rh
Y2spKQotICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFj
ZTsKICAgICBnZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgc3RhY2tUcmFj
ZSk7CiAgICAgCi0gICAgaWYgKHN0YWNrVHJhY2UuaXNFbXB0eSgpKQorICAgIGlmIChzdGFja1Ry
YWNlLmlzRW1wdHkoKSB8fCAhZXJyb3IuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorICAgIEpTT2JqZWN0KiBlcnJvck9iamVjdCA9IGFzT2JqZWN0KGVycm9yKTsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gMDsKICAgICBpZiAoaXNUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKGVycm9yKSB8fCBpc0ludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGVy
cm9yKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9i
amVjdDsKICAgICBlbHNlCi0gICAgICAgIGdsb2JhbE9iamVjdCA9IGVycm9yLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZXJyb3JPYmplY3QtPmdsb2JhbE9iamVjdCgp
OwogCiAgICAgLy8gRklYTUU6IEpTU3RyaW5nSm9pbmVyIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50
IHRoYW4gU3RyaW5nQnVpbGRlciBoZXJlLgogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKQEAg
LTczMSw4ICs3NzQsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6YWRkU3RhY2tUcmFjZUlmTmVjZXNz
YXJ5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZXJyb3IKICAgICAgICAgaWYgKGkg
IT0gc3RhY2tUcmFjZS5zaXplKCkgLSAxKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7CiAgICAgfQotICAgIAotICAgIGVycm9yLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPnN0YWNrLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBidWlsZGVy
LnRvU3RyaW5nKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworCisgICAgaWYgKGVycm9yT2Jq
ZWN0LT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPnN0
YWNrKSkKKyAgICAgICAgcmV0dXJuOworICAgIGVycm9yT2JqZWN0LT5wdXREaXJlY3QoKmdsb2Jh
bERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPnN0YWNrLCBqc1N0cmluZyhnbG9iYWxE
YXRhLCBidWlsZGVyLnRvU3RyaW5nKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogfQogCiBO
RVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxs
RnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCkKQEAgLTEzNzUsMTAgKzE0MjAsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpy
ZXRyaWV2ZUNhbGxlckZyb21WTUNvZGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24q
CiAgICAgaWYgKCFmdW5jdGlvbkNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
ICAgIAotICAgIGludCBsaW5lTnVtYmVyOwogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Owog
ICAgIENvZGVCbG9jayogdW51c2VkQ2FsbGVyQ29kZUJsb2NrID0gMDsKLSAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gZ2V0Q2FsbGVySW5mbygmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGZ1
bmN0aW9uQ2FsbEZyYW1lLCBsaW5lTnVtYmVyLCBieXRlY29kZU9mZnNldCwgdW51c2VkQ2FsbGVy
Q29kZUJsb2NrKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZ2V0Q2FsbGVySW5mbygm
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uQ2FsbEZyYW1lLCBieXRlY29kZU9mZnNl
dCwgdW51c2VkQ2FsbGVyQ29kZUJsb2NrKTsKICAgICBpZiAoIWNhbGxlckZyYW1lKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAgICAgSlNWYWx1ZSBjYWxsZXIgPSBjYWxsZXJGcmFtZS0+Y2Fs
bGVlKCk7CkBAIC0xMzg4LDcgKzE0MzIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpyZXRyaWV2
ZUNhbGxlckZyb21WTUNvZGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qCiAgICAg
Ly8gU2tpcCBvdmVyIGZ1bmN0aW9uIGJpbmRpbmdzLgogICAgIEFTU0VSVChjYWxsZXIuaXNPYmpl
Y3QoKSk7CiAgICAgd2hpbGUgKGFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKCZKU0JvdW5kRnVu
Y3Rpb246OnNfaW5mbykpIHsKLSAgICAgICAgY2FsbGVyRnJhbWUgPSBnZXRDYWxsZXJJbmZvKCZj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbGVyRnJhbWUsIGxpbmVOdW1iZXIsIGJ5dGVjb2Rl
T2Zmc2V0LCB1bnVzZWRDYWxsZXJDb2RlQmxvY2spOworICAgICAgICBjYWxsZXJGcmFtZSA9IGdl
dENhbGxlckluZm8oJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsZXJGcmFtZSwgYnl0ZWNv
ZGVPZmZzZXQsIHVudXNlZENhbGxlckNvZGVCbG9jayk7CiAgICAgICAgIGlmICghY2FsbGVyRnJh
bWUpCiAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgICAgIGNhbGxlciA9IGNhbGxl
ckZyYW1lLT5jYWxsZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKaW5kZXggN2Y5Mzg1NDNiYjRiMjkzYTQxOWE4YWYwZmUzNzk4Y2ViZDQx
ZTgwMS4uYWQzMzc1ZTAwNzAxZWJjZDI4NDFmNDI3YmIxYjk0NWRhY2MyOGViNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTc5LDI1
ICs3OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBjYWxs
ZWU7CiAgICAgICAgIFN0YWNrRnJhbWVDb2RlVHlwZSBjb2RlVHlwZTsKICAgICAgICAgU3Ryb25n
PEV4ZWN1dGFibGVCYXNlPiBleGVjdXRhYmxlOwotICAgICAgICBpbnQgbGluZTsKKyAgICAgICAg
U3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPiBjb2RlQmxvY2s7CisgICAgICAgIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4gY29kZTsKKyAgICAgICAgaW50IGxpbmVPZmZzZXQ7CisgICAgICAgIHVuc2ln
bmVkIGNoYXJhY3Rlck9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7CiAg
ICAgICAgIFN0cmluZyBzb3VyY2VVUkw7Ci0gICAgICAgIFN0cmluZyB0b1N0cmluZyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRl
ciB0cmFjZUJ1aWxkOwotICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IGZyaWVuZGx5
RnVuY3Rpb25OYW1lKGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICBTdHJpbmcgc291cmNlVVJMID0g
ZnJpZW5kbHlTb3VyY2VVUkwoKTsKLSAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIHRyYWNlQnVpbGQuYXBwZW5kKCdAJyk7Ci0gICAgICAgICAgICAgICAgdHJhY2VCdWlsZC5h
cHBlbmQoc291cmNlVVJMKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZSA+IC0xKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHRyYWNlQnVpbGQuYXBwZW5kTnVtYmVyKGxpbmUpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1w
bCgpOwotICAgICAgICB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmlu
ZyhDYWxsRnJhbWUqKTsKICAgICAgICAgU3RyaW5nIGZyaWVuZGx5U291cmNlVVJMKCkgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgU3RyaW5nIHRyYWNlTGluZTsKQEAgLTEzNywxMCArMTI1
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
dHJhY2VMaW5lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKICAgICAgICAg
fQotICAgICAgICB1bnNpZ25lZCBmcmllbmRseUxpbmVOdW1iZXIoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbGluZSA+IC0xID8gbGluZSA6IDA7Ci0gICAgICAgIH0KKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbGluZSgpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB1bnNpZ25lZCBjb2x1bW4oKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBleHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVu
ZE9mZnNldCk7CiAgICAgfTsKIAogICAgIGNsYXNzIFRvcENhbGxGcmFtZVNldHRlciB7CkBAIC0y
MzIsOCArMjE5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5k
bGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFt
ZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4p
OwogICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUqLCBT
dGFja0ZyYW1lQ29kZVR5cGUsIGNvbnN0IFN0cmluZyYsIGludCk7Ci0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgVmVjdG9y
PFN0YWNrRnJhbWU+JiByZXN1bHRzKTsKLSAgICAgICAgc3RhdGljIHZvaWQgYWRkU3RhY2tUcmFj
ZUlmTmVjZXNzYXJ5KENhbGxGcmFtZSosIEpTT2JqZWN0KiBlcnJvcik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgVmVj
dG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNr
VHJhY2VJZk5lY2Vzc2FyeShDYWxsRnJhbWUqLCBKU1ZhbHVlIGVycm9yKTsKIAogICAgICAgICB2
b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIHZvaWQgc3RhcnRT
YW1wbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDY4
NTU4NDRmOWFlN2UyM2ZlMTA2YjNjMjNhZTE2Yjg5YmFlMDQwMDUuLjdlYjEwMTA5OTgwYWY5OGE0
ZjA1MmYxMDFmMDZhYTM4NmYyMTZhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAKQEAgLTE1NSw4ICsxNTUsNyBAQCBib29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKIAogSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKLSAgICBpZiAoZXJyb3IuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgYXNPYmplY3QoZXJyb3IpKTsKKyAgICBJbnRlcnBy
ZXRlcjo6YWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5KGV4ZWMsIGVycm9yKTsKICAgICBleGVjLT5n
bG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gZXJyb3I7CiAgICAgcmV0dXJuIGVycm9yOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAzMzdiMGNi
NmU1ZGNmOWU2ZTBlMGFmYTUxNDViYjAzNGQ2ZmU0NmYxLi5kMTRhMjRjYTI4NjMzNmUxYTMxMmEw
M2EzOWYzMzgzN2M3MDc5MDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRl
ckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1NpbXBsZVN0YXRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CkBAIC04MSw2ICs4Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVy
OwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CisgICAgc3RydWN0IFN0YWNrRnJhbWU7
CiAgICAgY2xhc3MgU3RyaW5naWZpZXI7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogI2lmIEVOQUJM
RShSRUdFWFBfVFJBQ0lORykKQEAgLTMyOCw2ICszMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVGVybWluYXRvciB0ZXJtaW5hdG9yOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
OworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gZXhjZXB0aW9uU3RhY2s7CiAK
ICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOwogICAgICAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDg1
ZDg4YzE2NjcyYzcxMzI4Mzk5YmMxNWU3MGI1NzI1MGJhYzkzNy4uNjMyYjFhN2JjMmI3NmE5ZTI3
MWNhZTJmYzkxMmZkMmYzZTQzYWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTk3LDYgKzU5Nyw4IEBAIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZTo6RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNHCiAgICAgICAgIC8vIHRvIG9ic2VydmUgdGltZSB6b25lIGNoYW5nZXMuCiAg
ICAgICAgIGdsb2JhbERhdGEucmVzZXREYXRlQ2FjaGUoKTsKICAgICB9CisgICAgLy8gQ2xlYXIg
dGhlIGV4Y2VwdGlvbiBzdGFjayBiZXR3ZWVuIGVudHJpZXMKKyAgICBnbG9iYWxEYXRhLmV4Y2Vw
dGlvblN0YWNrID0gUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+KCk7CiB9CiAKIHZvaWQgc2xv
d1ZhbGlkYXRlQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRl
eCAyNjAwYzMzMTAzZWE4OTZlZjUwOGFkZGViMzBjY2FiNjM4OGRhNTg3Li5hMjZlYTYzZTJjODU4
ZGE2ZmVmYTczMzA0ZDBkMzY0M2RiNTQ3OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtNTgsMTggKzU4LDE1
IEBAIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soc2l6
ZV90IG1heFN0YWNrU2l6ZSwgYm9vbCBlbXB0CiAgICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4g
ZnJhbWVzOwogICAgIGlmIChKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6Y3VycmVudFN0YXRlKCkpIHsKICAgICAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNr
VHJhY2U7Ci0gICAgICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZleGVjLT5nbG9iYWxE
YXRhKCksIHN0YWNrVHJhY2UpOwotICAgICAgICBmb3IgKFZlY3RvcjxTdGFja0ZyYW1lPjo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IHN0YWNrVHJhY2UuYmVnaW4oKTsgaXRlciA8IHN0YWNrVHJhY2Uu
ZW5kKCk7IGl0ZXIrKykgewotICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJh
bWUoaXRlci0+ZnJpZW5kbHlGdW5jdGlvbk5hbWUoZXhlYyksIGl0ZXItPmZyaWVuZGx5U291cmNl
VVJMKCksIGl0ZXItPmZyaWVuZGx5TGluZU51bWJlcigpKSk7Ci0gICAgICAgICAgICBpZiAoZnJh
bWVzLnNpemUoKSA+PSBtYXhTdGFja1NpemUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KKyAgICAgICAgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoJmV4ZWMtPmdsb2JhbERh
dGEoKSwgc3RhY2tUcmFjZSwgbWF4U3RhY2tTaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdGFja1RyYWNlLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZnJhbWVzLmFwcGVu
ZChTY3JpcHRDYWxsRnJhbWUoc3RhY2tUcmFjZVtpXS5mcmllbmRseUZ1bmN0aW9uTmFtZShleGVj
KSwgc3RhY2tUcmFjZVtpXS5mcmllbmRseVNvdXJjZVVSTCgpLCBzdGFja1RyYWNlW2ldLmxpbmUo
KSwgc3RhY2tUcmFjZVtpXS5jb2x1bW4oKSkpOwogICAgIH0KICAgICBpZiAoZnJhbWVzLmlzRW1w
dHkoKSAmJiAhZW1wdHlJc0FsbG93ZWQpIHsKICAgICAgICAgLy8gTm8gZnJhbWVzIGZvdW5kLiBJ
dCBtYXkgaGFwcGVuIGluIHRoZSBjYXNlIHdoZXJlCiAgICAgICAgIC8vIGEgYm91bmQgZnVuY3Rp
b24gaXMgY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgZm9yIGV4YW1wbGUuCiAgICAgICAgIC8vIEZh
bGxiYWNrIHRvIHNldHRpbmcgbGluZU51bWJlciB0byAwLCBhbmQgc291cmNlIGFuZCBmdW5jdGlv
biBuYW1lIHRvICJ1bmRlZmluZWQiLgotICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxG
cmFtZSgidW5kZWZpbmVkIiwgInVuZGVmaW5lZCIsIDApKTsKKyAgICAgICAgZnJhbWVzLmFwcGVu
ZChTY3JpcHRDYWxsRnJhbWUoInVuZGVmaW5lZCIsICJ1bmRlZmluZWQiLCAwLCAwKSk7CiAgICAg
fQogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShmcmFtZXMpOwogfQpAQCAtNzcs
MzAgKzc0LDE4IEBAIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxs
U3RhY2soc2l6ZV90IG1heFN0YWNrU2l6ZSwgYm9vbCBlbXB0CiBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgbWF4U3RhY2tTaXplKQogewogICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IGZyYW1lczsK
LSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGV4ZWM7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7Ci0gICAgICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwot
ICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICAgICAgU3RyaW5nIHVybFN0cmluZzsKLSAg
ICAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKLQotICAgICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5y
ZXRyaWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwg
dXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0gICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7Ci0gICAg
ICAgIGlmIChmdW5jdGlvbikKLSAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oZnVuY3Rpb24pLT5uYW1lKGV4ZWMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIENhbGxlciBpcyB1bmtub3duLCBidXQgaWYgZnJhbWVzIGlzIGVtcHR5IHdlIHNob3Vs
ZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNhdXNlCi0gICAgICAgICAgICAvLyBzb21ldGhpbmcg
Y2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1bWVudHMuCi0gICAgICAgICAgICBpZiAoIWZyYW1l
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
dW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVO
dW1iZXIgOiAwOwotICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShmdW5jdGlv
bk5hbWUsIHVybFN0cmluZywgbGluZU51bWJlcikpOwotICAgICAgICBpZiAoIWZ1bmN0aW9uIHx8
IGZyYW1lcy5zaXplKCkgPT0gbWF4U3RhY2tTaXplKQorICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBz
dGFja1RyYWNlOworICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZleGVjLT5nbG9iYWxE
YXRhKCksIHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSArIDEpOworICAgIGZvciAoc2l6ZV90IGkg
PSAxOyBpIDwgc3RhY2tUcmFjZS5zaXplKCk7IGkrKykgeworICAgICAgICAvLyBUaGlzIGVhcmx5
IGV4aXQgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIG91ciBvbGQgYmVoYXZpb3VyCisgICAgICAg
IC8vIGJ1dCB0aGUgc3RhY2sgdHJhY2Ugd2UgcHJvZHVjZSBub3cgaXMgY29tcGxldGUgYW5kIGhh
bmRsZXMgYWxsCisgICAgICAgIC8vIHdheXMgaW4gd2hpY2ggY29kZSBtYXkgYmUgcnVubmluZwor
ICAgICAgICBpZiAoIXN0YWNrVHJhY2VbaV0uY2FsbGVlICYmIGZyYW1lcy5zaXplKCkpCiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZSgpOworICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gc3RhY2tUcmFjZVtpXS5mcmllbmRs
eUZ1bmN0aW9uTmFtZShleGVjKTsKKyAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJh
bWUoZnVuY3Rpb25OYW1lLCBzdGFja1RyYWNlW2ldLnNvdXJjZVVSTCwgc3RhY2tUcmFjZVtpXS5s
aW5lKCksIHN0YWNrVHJhY2VbaV0uY29sdW1uKCkpKTsKICAgICB9CisKICAgICByZXR1cm4gU2Ny
aXB0Q2FsbFN0YWNrOjpjcmVhdGUoZnJhbWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCAxMTRjMjRkOTMzMDA1YTA3ZDI5OTg5NmUz
YzI0ZWFmYmY2ODI0NGM2Li4xYWJiZDc1OGJjY2FiMDY1MzMwMDcwOTMwZDYyYzExZDE1MGNmZWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAt
NTMsNyArNTMsOCBAQCBib29sIFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25zdCBTY3JpcHRD
YWxsRnJhbWUmIG8pIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnVuY3Rpb25OYW1lID09IG8ubV9m
dW5jdGlvbk5hbWUKICAgICAgICAgJiYgbV9zY3JpcHROYW1lID09IG8ubV9zY3JpcHROYW1lCi0g
ICAgICAgICYmIG1fbGluZU51bWJlciA9PSBvLm1fbGluZU51bWJlcjsKKyAgICAgICAgJiYgbV9s
aW5lTnVtYmVyID09IG8ubV9saW5lTnVtYmVyCisgICAgICAgICYmIG1fY29sdW1uID09IG8ubV9j
b2x1bW47CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5oCmluZGV4IDkxNTQxMDRmYzk0OGQ2OGQ4MTI5MjdhMTRjNjhh
NjNjZTExN2Y0YmEuLjY3ZjBkMzYxMWExYzQ3NGQ4ZWFkMmU2MjE0YTlhZGQ5NjlkZmNkYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTQ0LDEyICs0
NCwxMyBAQCBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAKIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAg
ewogcHVibGljOgotICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25l
ZCBjb2x1bW4gPSAwKTsKKyAgICBTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5z
aWduZWQgY29sdW1uKTsKICAgICB+U2NyaXB0Q2FsbEZyYW1lKCk7CiAKICAgICBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdE5hbWU7IH0K
ICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9
CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW47IH0K
IAogICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY4MGNkM2I1
NDFmZWI5NjYxZTgwZDc0ZjVlZGJmNmZmYTZmZWQ1ZjYuLjYxMDdmYjlhNGE4YmY5M2YwZjU1MWYw
NmYzYjhhNWM1ZDJkNGIzYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNC0wNSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSBtYW55IGFuZCB2YXJpZWQgc3Rh
Y2sgdHJhY2UgbWVjaGFuaXNtcywgYW5kIG1ha2UgdGhlIHJlc3VsdCBzYW5lLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNvbW1hbmRsaW5lIGpz
YyBleGVjdXRhYmxlIG5vIGxvbmdlciByZXF1aXJlcyBhcmd1bWVudHMsIHNvCisgICAgICAgIEkn
dmUgbWFkZSBydW4tanNjIHdvcmsgd2l0aG91dCB0aGVtLgorCisgICAgICAgICogU2NyaXB0cy9y
dW4tanNjOgorCiAyMDEzLTA0LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEZpeCB3ZWJraXRweSB0ZXN0cyBhZnRlciByMTQ3Njc4LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjCmluZGV4IGU1MzQx
YzFkMzc4NjY5ZmM3NDhiMTcwZjRmOGJkMDg2YTdkZmM3NTMuLjgyOTQzYzBhMTg3NzBmNTYxYjQ1
YTZlZjUzMWE0MzE1N2ZmNTBjMjggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYwor
KysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MKQEAgLTQyLDcgKzQyLDYgQEAgbXkgJGNvdW50ID0g
MTsKIG15ICR2ZXJib3NlID0gMDsKIEdldE9wdGlvbnMoImNvdW50fGM9aSIgPT4gXCRjb3VudCwK
ICAgICAgICAgICAgInZlcmJvc2V8diIgPT4gXCR2ZXJib3NlKTsKLWRpZSAiJHVzYWdlXG4iIGlm
IChAQVJHViA8IDEpOwogCiBteSAkanNjID0ganNjUHJvZHVjdERpcigpIC4gIi9qc2MgQEFSR1Yi
OwogJGpzYyAuPSAiIDI+ICIgLiBGaWxlOjpTcGVjLT5kZXZudWxsKCkgdW5sZXNzICR2ZXJib3Nl
Owo=
</data>
<flag name="review"
          id="218821"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>