<?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>201713</bug_id>
          
          <creation_ts>2019-09-11 22:04:24 -0700</creation_ts>
          <short_desc>ASSERT NOT REACHED in Inspector::InjectedScriptModule::ensureInjected() seen with inspector/heap/getRemoteObject.html</short_desc>
          <delta_ts>2020-04-30 10:20:57 -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>Web Inspector</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210794</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570141</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-11 22:04:24 -0700</bug_when>
    <thetext>The following flaky crash is seen with inspector/heap/getRemoteObject.html:

ERROR: File failed to delete. Error message: Operation not permitted
/Volumes/Data/slave/mojave-debug/build/Source/WTF/wtf/posix/FileSystemPOSIX.cpp(77) : bool WTF::FileSystemImpl::deleteFile(const WTF::String &amp;)
Failed to parse/execute CommandLineAPI!
//# sourceURL=__InjectedScript_CommandLineAPIModuleSource.js?(function(InjectedScriptHost,inspectedGlobalObject,injectedScriptId,injectedScript,{RemoteObject,CommandLineAPI},CommandLineAPIHost){injectedScript._inspectObject=function(object){if(arguments.length===0)?return;let objectId=RemoteObject.create(object);let hints={};switch(RemoteObject.describe(object)){case&quot;Database&quot;:var databaseId=CommandLineAPIHost.databaseId(object);if(databaseId)?hints.databaseId=databaseId;break;case&quot;Storage&quot;:var storageId=CommandLineAPIHost.storageId(object);if(storageId)?hints.domStorageId=InjectedScriptHost.evaluate(&quot;(&quot;+storageId+&quot;)&quot;);break;}?CommandLineAPIHost.inspect(objectId,hints);};CommandLineAPI.getters[&quot;0&quot;]=function(){return CommandLineAPIHost.inspectedObject();};CommandLineAPI.methods[&quot;copy&quot;]=function(object){let string=null;let subtype=RemoteObject.subtype(object);if(subtype===&quot;node&quot;)?string=object.outerHTML;else if(subtype===&quot;regexp&quot;)?string=&quot;&quot;+object;else if(injectedScript.isPrimitiveValue(object))?string=&quot;&quot;+object;else if(typeof object===&quot;symbol&quot;)?string=inspectedGlobalObject.String(object);else if(typeof object===&quot;function&quot;)?string=&quot;&quot;+object;else{try{string=inspectedGlobalObject.JSON.stringify(object,null,&quot;  &quot;);}catch{string=&quot;&quot;+object;}}?CommandLineAPIHost.copyText(string);};CommandLineAPI.methods[&quot;getEventListeners&quot;]=function(target){return CommandLineAPIHost.getEventListeners(target);};function normalizeEventTypes(types){if(types===undefined)?types=[&quot;mouse&quot;,&quot;key&quot;,&quot;touch&quot;,&quot;control&quot;,&quot;abort&quot;,&quot;blur&quot;,&quot;change&quot;,&quot;devicemotion&quot;,&quot;deviceorientation&quot;,&quot;error&quot;,&quot;focus&quot;,&quot;load&quot;,&quot;reset&quot;,&quot;resize&quot;,&quot;scroll&quot;,&quot;search&quot;,&quot;select&quot;,&quot;submit&quot;,&quot;unload&quot;];else if(typeof types===&quot;string&quot;)?types=[types];let result=[];for(let i=0;i&lt;types.length;i++){if(types[i]===&quot;mouse&quot;)?result.push(&quot;click&quot;,&quot;dblclick&quot;,&quot;mousedown&quot;,&quot;mousemove&quot;,&quot;mouseout&quot;,&quot;mouseover&quot;,&quot;mouseup&quot;,&quot;mousewheel&quot;);else if(types[i]===&quot;key&quot;)?result.push(&quot;keydown&quot;,&quot;keypress&quot;,&quot;keyup&quot;,&quot;textInput&quot;);else if(types[i]===&quot;touch&quot;)?result.push(&quot;touchcancel&quot;,&quot;touchend&quot;,&quot;touchmove&quot;,&quot;touchstart&quot;);else if(types[i]===&quot;control&quot;)?result.push(&quot;blur&quot;,&quot;change&quot;,&quot;focus&quot;,&quot;reset&quot;,&quot;resize&quot;,&quot;scroll&quot;,&quot;select&quot;,&quot;submit&quot;,&quot;zoom&quot;);else?result.push(types[i]);}?return result;}?function logEvent(event)?{inspectedGlobalObject.console.log(event.type,event);}?CommandLineAPI.methods[&quot;monitorEvents&quot;]=function(object,types){if(!object||!object.addEventListener||!object.removeEventListener)?return;types=normalizeEventTypes(types);for(let i=0;i&lt;types.length;++i){object.removeEventListener(types[i],logEvent,false);object.addEventListener(types[i],logEvent,false);}};CommandLineAPI.methods[&quot;unmonitorEvents&quot;]=function(object,types){if(!object||!object.addEventListener||!object.removeEventListener)?return;types=normalizeEventTypes(types);for(let i=0;i&lt;types.length;++i)?object.removeEventListener(types[i],logEvent,false);};if(inspectedGlobalObject.document&amp;&amp;inspectedGlobalObject.Node){function canQuerySelectorOnNode(node){return node&amp;&amp;InjectedScriptHost.subtype(node)===&quot;node&quot;&amp;&amp;(node.nodeType===inspectedGlobalObject.Node.ELEMENT_NODE||node.nodeType===inspectedGlobalObject.Node.DOCUMENT_NODE||node.nodeType===inspectedGlobalObject.Node.DOCUMENT_FRAGMENT_NODE);}?CommandLineAPI.methods[&quot;$&quot;]=function(selector,start){if(canQuerySelectorOnNode(start))?return start.querySelector(selector);let result=inspectedGlobalObject.document.querySelector(selector);if(result)?return result;if(selector&amp;&amp;selector[0]!==&quot;#&quot;){result=inspectedGlobalObject.document.getElementById(selector);if(result){inspectedGlobalObject.console.warn(&quot;The console function $() has changed from $=getElementById(id) to $=querySelector(selector). You might try $(\&quot;#%s\&quot;)&quot;,selector);return null;}}?return result;};CommandLineAPI.methods[&quot;$$&quot;]=function(selector,start){if(canQuerySelectorOnNode(start))?return inspectedGlobalObject.Array.from(start.querySelectorAll(selector));return inspectedGlobalObject.Array.from(inspectedGlobalObject.document.querySelectorAll(selector));};CommandLineAPI.methods[&quot;$x&quot;]=function(xpath,context){let doc=(context&amp;&amp;context.ownerDocument)||inspectedGlobalObject.document;let result=doc.evaluate(xpath,context||doc,null,inspectedGlobalObject.XPathResult.ANY_TYPE,null);switch(result.resultType){case inspectedGlobalObject.XPathResult.NUMBER_TYPE:return result.numberValue;case inspectedGlobalObject.XPathResult.STRING_TYPE:return result.stringValue;case inspectedGlobalObject.XPathResult.BOOLEAN_TYPE:return result.booleanValue;}?let nodes=[];let node=null;while(node=result.iterateNext())?nodes.push(node);return nodes;};}?for(let name in CommandLineAPI.methods)?CommandLineAPI.methods[name].toString=function(){return&quot;function &quot;+name+&quot;() { [Command Line API] }&quot;;};})?
SHOULD NEVER BE REACHED
./inspector/InjectedScriptModule.cpp(80) : void Inspector::InjectedScriptModule::ensureInjected(Inspector::InjectedScriptManager *, const Inspector::InjectedScript &amp;)
1   0x1b28d51e9 WTFCrash
2   0x1b28d7f3b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x1b3a213d7 Inspector::InjectedScriptModule::ensureInjected(Inspector::InjectedScriptManager*, Inspector::InjectedScript const&amp;)
4   0x19bd56565 WebCore::CommandLineAPIModule::injectIfNeeded(Inspector::InjectedScriptManager*, Inspector::InjectedScript const&amp;)
5   0x19be4db48 WebCore::WebInjectedScriptManager::didCreateInjectedScript(Inspector::InjectedScript const&amp;)
6   0x1b3a1ff10 Inspector::InjectedScriptManager::injectedScriptFor(JSC::ExecState*)
7   0x1b3af4560 Inspector::InspectorHeapAgent::getRemoteObject(WTF::String&amp;, int, WTF::String const*, WTF::RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject, WTF::DumbPtrTraits&lt;Inspector::Protocol::Runtime::RemoteObject&gt; &gt;&amp;)
8   0x1b3a4393a Inspector::HeapBackendDispatcher::getRemoteObject(long, WTF::RefPtr&lt;WTF::JSONImpl::Object, WTF::DumbPtrTraits&lt;WTF::JSONImpl::Object&gt; &gt;&amp;&amp;)
9   0x1b3a4293b Inspector::HeapBackendDispatcher::dispatch(long, WTF::String const&amp;, WTF::Ref&lt;WTF::JSONImpl::Object, WTF::DumbPtrTraits&lt;WTF::JSONImpl::Object&gt; &gt;&amp;&amp;)
10  0x1b3a2325b Inspector::BackendDispatcher::dispatch(WTF::String const&amp;)
11  0x19bdf434c WebCore::InspectorController::dispatchMessageFromFrontend(WTF::String const&amp;)
12  0x10ea7614c WebKit::WebPageInspectorTarget::sendMessageToTargetBackend(WTF::String const&amp;)
13  0x10ea7699d WebKit::WebPageInspectorTargetController::sendMessageToTargetBackend(WTF::String const&amp;, WTF::String const&amp;)
14  0x10ebb1177 WebKit::WebPage::sendMessageToTargetBackend(WTF::String const&amp;, WTF::String const&amp;)
15  0x10ec36893 void IPC::callMemberFunctionImpl&lt;WebKit::WebPage, void (WebKit::WebPage::*)(WTF::String const&amp;, WTF::String const&amp;), std::__1::tuple&lt;WTF::String, WTF::String&gt;, 0ul, 1ul&gt;(WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::String const&amp;, WTF::String const&amp;), std::__1::tuple&lt;WTF::String, WTF::String&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;)
16  0x10ec367a0 void IPC::callMemberFunction&lt;WebKit::WebPage, void (WebKit::WebPage::*)(WTF::String const&amp;, WTF::String const&amp;), std::__1::tuple&lt;WTF::String, WTF::String&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;WTF::String, WTF::String&gt;&amp;&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::String const&amp;, WTF::String const&amp;))
17  0x10ec1220a void IPC::handleMessage&lt;Messages::WebPage::SendMessageToTargetBackend, WebKit::WebPage, void (WebKit::WebPage::*)(WTF::String const&amp;, WTF::String const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::String const&amp;, WTF::String const&amp;))
18  0x10ec09980 WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
19  0x10ebb8d38 WebKit::WebPage::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
20  0x10d878d09 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
21  0x10e7bd35d WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
22  0x10d8016f9 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
23  0x10d7fabab IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
24  0x10d802203 IPC::Connection::dispatchOneIncomingMessage()
25  0x10d81c7bb IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_7::operator()()
26  0x10d81c6d9 WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_7, void&gt;::call()
27  0x1b2901cfa WTF::Function&lt;void ()&gt;::operator()() const
28  0x1b2972d63 WTF::RunLoop::performWork()
29  0x1b29741fe WTF::RunLoop::performWork(void*)
30  0x7fff3787c683 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
31  0x7fff3787c629 __CFRunLoopDoSource0

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=inspector%2Fheap%2FgetRemoteObject.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570143</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-11 22:04:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/55290349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570151</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-11 22:21:18 -0700</bug_when>
    <thetext>I think for this we have to add debugging to try and catch / log an exception. This must parse... so perhaps it is hitting an exception injecting the command line module source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571532</commentid>
    <comment_count>3</comment_count>
      <attachid>378963</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-17 07:34:24 -0700</bug_when>
    <thetext>Created attachment 378963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571533</commentid>
    <comment_count>4</comment_count>
      <attachid>378963</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-17 07:36:45 -0700</bug_when>
    <thetext>Comment on attachment 378963
Patch

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

&gt; Source/JavaScriptCore/inspector/InjectedScriptManager.cpp:193
&gt; +        WTFLogAlways(&quot;Error when creating injected script: %s&quot;, createResult.error().getString(inspectedExecState).ascii().data());

This doesn&apos;t actually log what the exception is about, and seems to just show an empty string.  JSC folks, am I doing this right?  How does one actually &quot;get&quot; the exception information as a string (e.g. &quot;SyntaxError: ...&quot;)?

&gt; Source/JavaScriptCore/inspector/InjectedScriptModule.cpp:70
&gt; +        WTFLogAlways(&quot;Error when calling &apos;hasInjectedModule&apos;: %s&quot;, hasInjectedModuleResult.error().getString(injectedScript.scriptState()).ascii().data());

Ditto

&gt; Source/JavaScriptCore/inspector/InjectedScriptModule.cpp:80
&gt; +            WTFLogAlways(&quot;Error when calling &apos;injectModule&apos;: %s&quot;, injectModuleResult.error().getString(injectedScript.scriptState()).ascii().data());

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571604</commentid>
    <comment_count>5</comment_count>
      <attachid>378963</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-17 11:48:43 -0700</bug_when>
    <thetext>Comment on attachment 378963
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/InjectedScriptManager.cpp:193
&gt;&gt; +        WTFLogAlways(&quot;Error when creating injected script: %s&quot;, createResult.error().getString(inspectedExecState).ascii().data());
&gt; 
&gt; This doesn&apos;t actually log what the exception is about, and seems to just show an empty string.  JSC folks, am I doing this right?  How does one actually &quot;get&quot; the exception information as a string (e.g. &quot;SyntaxError: ...&quot;)?

I think you can try and get the JSValue to a JSC::Exception:

    auto* exception = jsDynamicCast&lt;JSC::Exception*&gt;(vm, exceptionValue);

Then something that takes an Exception and gets value out of it is `JSGlobalObjectInspectorController::reportAPIException` which does a toString of the `exception-&gt;value()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571817</commentid>
    <comment_count>6</comment_count>
      <attachid>379019</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-17 22:06:03 -0700</bug_when>
    <thetext>Created attachment 379019
Patch

This logs the error text, as well as the line/column (which defaults to 0:0) and the full source text (since it&apos;s minified, meaning line/column won&apos;t match the original source).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571970</commentid>
    <comment_count>7</comment_count>
      <attachid>379019</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-18 11:32:53 -0700</bug_when>
    <thetext>Comment on attachment 379019
Patch

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

r=me

&gt; Source/JavaScriptCore/inspector/InjectedScriptModule.cpp:75
&gt; +        WTFLogAlways(&quot;Error when calling &apos;hasInjectedModule&apos; for &apos;%s&apos;: %s (%d:%d)\n&quot;, name().ascii().data(), hasInjectedModuleResult.error().value().toWTFString(injectedScript.scriptState()).ascii().data(), line, column);

Why do we use `ascii().data()` instead of `utf8().data()`? That would at least have newlines.

&gt; Source/JavaScriptCore/runtime/Exception.h:63
&gt; +    JS_EXPORT_PRIVATE ~Exception();

Weird. Was this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572292</commentid>
    <comment_count>8</comment_count>
      <attachid>379113</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-19 01:30:04 -0700</bug_when>
    <thetext>Created attachment 379113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572293</commentid>
    <comment_count>9</comment_count>
      <attachid>379019</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-19 01:30:39 -0700</bug_when>
    <thetext>Comment on attachment 379019
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/InjectedScriptModule.cpp:75
&gt;&gt; +        WTFLogAlways(&quot;Error when calling &apos;hasInjectedModule&apos; for &apos;%s&apos;: %s (%d:%d)\n&quot;, name().ascii().data(), hasInjectedModuleResult.error().value().toWTFString(injectedScript.scriptState()).ascii().data(), line, column);
&gt; 
&gt; Why do we use `ascii().data()` instead of `utf8().data()`? That would at least have newlines.

I was using what was there previously.  We should totally use that instead :)

&gt;&gt; Source/JavaScriptCore/runtime/Exception.h:63
&gt;&gt; +    JS_EXPORT_PRIVATE ~Exception();
&gt; 
&gt; Weird. Was this needed?

Yeah, I got linker errors without this when compiling WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572313</commentid>
    <comment_count>10</comment_count>
      <attachid>379113</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-19 03:56:07 -0700</bug_when>
    <thetext>Comment on attachment 379113
Patch

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

&gt; Source/JavaScriptCore/inspector/InjectedScriptManager.cpp:146
&gt; +Expected&lt;JSC::JSObject*, Exception&gt; InjectedScriptManager::createInjectedScript(const String&amp; source, ExecState* scriptState, int id)

This is wrong.  Exception is a cell, and you should never pass a cell by value.  This is why you needed to export the destructor.  You shouldn&apos;t need to do that.  The destructor should only be called by the GC when there are no more references to this cell.  Can you return Expected&lt;JSObject*, NakedPtr&lt;Exception&gt;&gt; instead?

BTW, I don&apos;t think you need to specify the JSC:: namespace for JSObject here.  You don&apos;t have a another definition of JSObject, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572358</commentid>
    <comment_count>11</comment_count>
      <attachid>379134</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-19 08:09:27 -0700</bug_when>
    <thetext>Created attachment 379134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572693</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 01:27:32 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 379134:

inspector/canvas/resolveContext-bitmaprenderer.html bug 202038 (author: drousso@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572694</commentid>
    <comment_count>13</comment_count>
      <attachid>379134</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 01:28:15 -0700</bug_when>
    <thetext>Comment on attachment 379134
Patch

Clearing flags on attachment: 379134

Committed r250124: &lt;https://trac.webkit.org/changeset/250124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572695</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 01:28:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378963</attachid>
            <date>2019-09-17 07:34:24 -0700</date>
            <delta_ts>2019-09-17 22:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201713-20190917233422.patch</filename>
            <type>text/plain</type>
            <size>21612</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlN2NiY2U5MjhiNmNhY2FmYTlmZGZiYzY3NjM3
YjY2NWNmNWNiYTkuLjRlN2NmMGZmNzAxNzhiN2IyZDIwZTQ0YzY0ODU2MWE2N2JhOWRhYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA5LTE3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlQgTk9UIFJFQUNI
RUQgaW4gSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoKSBz
ZWVuIHdpdGggaW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0Lmh0bWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcxMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTUyOTAzNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwb3NlIHRoZSBgRXhjZXB0aW9uYCBvYmplY3QgYnkgbGV2ZXJhZ2lu
ZyBhbiBgRXhwZWN0ZWRgIG9mIGBKU1ZhbHVlYCBhcyB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAg
IGluc3RlYWQgb2YgdXNpbmcgYSByZWZlcmVuY2VkIGBib29sYCAod2hpY2ggd291bGRuJ3QgaW5j
bHVkZSBhbnkgb2YgdGhlIGV4Y2VwdGlvbidzIGluZm8pLgorCisgICAgICAgICogYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmg6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMgY29uc3QpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCBjb25zdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUgY29uc3QpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkIGNvbnN0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbCk6CisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbi5oOgorCiAyMDE5LTA5LTE2ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdhc20gU3RyZWFtaW5nUGFyc2VyIHNob3VsZCB2YWxpZGF0ZSB0
aGF0IG51bWJlciBvZiBmdW5jdGlvbnMgbWF0Y2hlcyBudW1iZXIgb2YgZGVjbGFyYXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCmluZGV4IDI2OWVmZTU2OGM0YzFlYTkzMTQ1MWVmMzYyNTgxZDVjYzA3MTM0MTcuLjcy
MGY3ZGM0MjJmMGU3MmMzYmJhNzQzMjE1Mjc4MDgxM2UwZjdjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWMKIHsKIH0KIAotSlNWYWx1ZSBT
Y3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRXhwZWN0ZWQ8SlNW
YWx1ZSwgRXhjZXB0aW9uPiBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogewogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gbV90aGlzT2JqZWN0LmpzT2JqZWN0KCk7CiAKQEAgLTExMSwxMCAr
MTExLDggQEAgSlNWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0
aW9uKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBtX25hbWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7Ci0gICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfQorICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgqc2NvcGUuZXhjZXB0aW9uKCkpOwogCiAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24s
IGNhbGxEYXRhKTsKQEAgLTEzMCwxNyArMTI4LDEyIEBAIEpTVmFsdWUgU2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIAogICAgIGlmIChleGNlcHRpb24pIHsKICAg
ICAgICAgLy8gRG8gbm90IHRyZWF0IGEgdGVybWluYXRlZCBleGVjdXRpb24gZXhjZXB0aW9uIGFz
IGhhdmluZyBhbiBleGNlcHRpb24uIEp1c3QgdHJlYXQgaXQgYXMgYW4gZW1wdHkgcmVzdWx0Lgot
ICAgICAgICBoYWRFeGNlcHRpb24gPSAhaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZt
LCBleGNlcHRpb24pOworICAgICAgICBpZiAoIWlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bih2bSwgZXhjZXB0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgqZXhj
ZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKLXsKLSAgICBi
b29sIGhhZEV4Y2VwdGlvbjsKLSAgICByZXR1cm4gY2FsbChoYWRFeGNlcHRpb24pOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggMWE3YTUzNzZiNTc0YTUxMWI4Mzcz
NjhkN2QyY2M1ZWM4N2JiMWE4Yi4uYTU3ZWE2NzdiZDhlZDk5MDA5MjE3ZWFkZWIzZjI1OTExM2U0
Y2YyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuaApAQCAtMzIsNyArMzIsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzAsOCArNzIsNyBAQCBjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3Vt
ZW50SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpTY3JpcHRG
dW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRh
JiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBh
cmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mKTsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwo
Y29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlw
dEZ1bmN0aW9uQ2FsbEhhbmRsZXIgaGFuZGxlciA9IG51bGxwdHIpOwotICAgIEpTQzo6SlNWYWx1
ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0gICAgSlNDOjpKU1ZhbHVlIGNhbGwoKTsKKyAg
ICBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIEpTQzo6RXhjZXB0aW9uPiBjYWxsKCk7CiAKIHByb3Rl
Y3RlZDoKICAgICBTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyIG1fY2FsbEhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmlu
ZGV4IDgyZTE1NTNiOThhZmI1N2I1MDYzNjkzMzhkMWYwNTQ0MjQyY2I1MGQuLjZhMTZlOGQ5NTQ1
MDY0MGVhYzc1NWQzZmVkYzEwZTNiZTUxMzA4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0yNTAsMTIgKzI1MCwxMiBA
QCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVj
dGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFtZXMiX3Ms
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwotICAgIGF1dG8gY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIGlmICghY2FsbEZyYW1lc1Zh
bHVlKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChm
dW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxSZXN1bHQpOworICAgIGlmICghY2FsbFJlc3VsdCB8
fCAhY2FsbFJlc3VsdC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwotICAgIEFTU0VSVCghaGFkRXhj
ZXB0aW9uKTsKLSAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIGNhbGxGcmFtZXNWYWx1ZSk7CisKKyAgICBSZWZQdHI8SlNPTjo6
VmFsdWU+IHJlc3VsdCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGNhbGxSZXN1
bHQudmFsdWUoKSk7CiAgICAgaWYgKHJlc3VsdC0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBl
OjpBcnJheSkKICAgICAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkp
LnJlbGVhc2VOb25OdWxsKCk7CiAKQEAgLTI3MSwxMyArMjcxLDEyIEBAIFJlZlB0cjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6
OkpTVmFsdWUKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaGFzQWNjZXNzVG9JbnNw
ZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2Vu
ZXJhdGVQcmV2aWV3KTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYXV0
byByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0
aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAgIGlmICghY2FsbFJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBy
ZXN1bHRPYmplY3Q7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgq
c2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CisgICAgYm9vbCBjYXN0
U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbFJlc3VsdC52
YWx1ZSgpKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RT
dWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7
CkBAIC0yOTEsMTYgKzI5MCwxNSBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09OU3RyaW5nKGNvbnN0IFN0cgogICAgIHdyYXBG
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwogCi0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKLSAgICBhdXRvIGV2YWxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
d3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIGlmIChoYWRFeGNlcHRpb24pCisgICAg
YXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlv
bik7CisgICAgaWYgKCFjYWxsUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGlmIChldmFsUmVzdWx0LmlzTnVsbCgpKQorICAgIGlmIChjYWxsUmVzdWx0LnZhbHVlKCkuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPEpTT046Ok9iamVj
dD4gcmVzdWx0T2JqZWN0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIGV2YWxSZXN1bHQpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwor
ICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCks
IGNhbGxSZXN1bHQudmFsdWUoKSktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CiAgICAgQVNTRVJU
X1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiBCaW5k
aW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChy
ZXN1bHRPYmplY3QpOwpAQCAtMzE3LDEzICszMTUsMTIgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoSlNDOjpKU1ZhbHVl
IHQKICAgICBlbHNlCiAgICAgICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb2x1bW5z
KTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYXV0byByID0gY2FsbEZ1
bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBp
ZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAgIGlmICghY2FsbFJlc3VsdCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXN1bHRPYmplY3Q7
Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUo
KSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0g
dG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbFJlc3VsdC52YWx1ZSgpKS0+YXNP
YmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNh
c3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CkBAIC0zMzUsMTMg
KzMzMiwxMiBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVj
dGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUoSlNDOjpKU1ZhbAogICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInByZXZp
ZXdWYWx1ZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUpOwogCi0gICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIGlmIChoYWRFeGNlcHRpb24p
CisgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBG
dW5jdGlvbik7CisgICAgaWYgKCFjYWxsUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJlc3VsdE9iamVjdDsKLSAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCByKS0+YXNPYmplY3Qo
cmVzdWx0T2JqZWN0KTsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVl
KCpzY3JpcHRTdGF0ZSgpLCBjYWxsUmVzdWx0LnZhbHVlKCkpLT5hc09iamVjdChyZXN1bHRPYmpl
Y3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAK
ICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmll
dz46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CkBAIC0zODMsMTEgKzM3OSwxMSBAQCBKU0M6
OkpTVmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQpIGNvbnN0CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCJfcywgaW5zcGVjdG9yRW52
aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChvYmplY3RJZCk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAg
IGF1dG8gcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24s
IGhhZEV4Y2VwdGlvbik7Ci0gICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwotCi0gICAgcmV0dXJu
IHJlc3VsdFZhbHVlOworICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxSZXN1bHQpOworICAgIGlmICghY2Fs
bFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gY2FsbFJlc3VsdC52YWx1
ZSgpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0T2JqZWN0KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKQEAgLTQxMSw5ICs0MDcsOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNl
T2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJyZWxlYXNlT2JqZWN0R3JvdXAiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSk7CiAgICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVj
dEdyb3VwKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgY2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBB
U1NFUlQoIWhhZEV4Y2VwdGlvbik7CisgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlvbik7CisgICAgQVNTRVJUX1VOVVNFRChjYWxs
UmVzdWx0LCBjYWxsUmVzdWx0KTsKIH0KIAogSlNDOjpKU1ZhbHVlIEluamVjdGVkU2NyaXB0Ojph
cnJheUZyb21WZWN0b3IoVmVjdG9yPEpTQzo6SlNWYWx1ZT4mJiB2ZWN0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAK
aW5kZXggM2QyZGNhZTZiZDM0NmZlNDEzM2RhYTBmMGNmNmU2ZDU3MmY1NGFjYS4uMWQ2YTY0MWY3
OGI1M2M5M2NhNzVkYWExNTU5YzRiMzkwZTI1MjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtNzAsMTEg
KzcwLDExIEBAIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRC
YXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3Q7CiB9CiAKLUpTQzo6SlNWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1
bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0CitFeHBlY3RlZDxKU0M6OkpTVmFsdWUs
IEpTQzo6RXhjZXB0aW9uPiBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uKSBjb25zdAog
ewogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKTsKICAgICBKU0M6OkRlYnVnZ2VyRXZhbEVuYWJsZXIgZXZhbEVuYWJs
ZXIoc2NyaXB0U3RhdGUpOwotICAgIHJldHVybiBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7
CisgICAgcmV0dXJuIGZ1bmN0aW9uLmNhbGwoKTsKIH0KIAogUmVmPEpTT046OlZhbHVlPiBJbmpl
Y3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYg
ZnVuY3Rpb24pCkBAIC04MiwxNCArODIsMTEgQEAgUmVmPEpTT046OlZhbHVlPiBJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnUKICAg
ICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFoYXNBY2Nlc3NUb0luc3BlY3RlZFNjcmlwdFN0YXRlKCkp
CiAgICAgICAgIHJldHVybiBKU09OOjpWYWx1ZTo6bnVsbCgpOwogCi0gICAgYm9vbCBoYWRFeGNl
cHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHJlc3VsdEpTVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0KLSAgICBBU1NFUlQoIWhhZEV4
Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlvbikKKyAgICBhdXRvIHJlc3VsdCA9IGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEg
Y2FsbC4iKTsKIAotICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0SlNPTlZhbHVlID0gdG9J
bnNwZWN0b3JWYWx1ZSgqbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCByZXN1
bHRKU1ZhbHVlKTsKKyAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdEpTT05WYWx1ZSA9IHRv
SW5zcGVjdG9yVmFsdWUoKm1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSwgcmVz
dWx0LnZhbHVlKCkpOwogICAgIGlmICghcmVzdWx0SlNPTlZhbHVlKQogICAgICAgICByZXR1cm4g
SlNPTjo6VmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCJPYmplY3QgaGFzIHRvbyBsb25nIHJlZmVy
ZW5jZSBjaGFpbiAobXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gIiwgSlNPTjo6VmFsdWU6Om1heERl
cHRoLCAnKScpKTsKIApAQCAtMTI5LDEyICsxMjYsMTEgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJh
c2U6Om1ha2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlv
biwKIAogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZShqc0Z1bmN0aW9u
KSk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGF1dG8gcmVzdWx0SlNW
YWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9u
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdEpTVmFsdWUsIHJlc3VsdEpTVmFsdWUuaXNVbmRl
ZmluZWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
ZnVuY3Rpb24pOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpKTsKIAotICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhj
ZXB0aW9uKSB7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgLy8gU2luY2UgYGNhbGxiYWNrYCBpcyBtb3ZlZCBhYm92ZSwgd2UgY2FuJ3QgY2FsbCBpdCBp
ZiB0aGVyZSdzIGFuIGV4Y2VwdGlvbiB3aGlsZSB0cnlpbmcgdG8KICAgICAgICAgLy8gZXhlY3V0
ZSB0aGUgYEpTTmF0aXZlU3RkRnVuY3Rpb25gIGluc2lkZSBJbmplY3RlZFNjcmlwdFNvdXJjZS5q
cy4KICAgICAgICAganNGdW5jdGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9u
KCkobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaAppbmRleCAyMjZlODFiYmRlM2ZlODhjNGUwOTcwZDU0MWMwMWRm
ZWZiYWRkODU0Li4wNjRkNGYxZTcwM2ZkNTcxZmNmYmY4NWIzMDZmMDU5MWI4ZTA3YTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmgKQEAgLTMxLDkgKzMxLDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNp
bmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY0LDcgKzY2
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0
ZSgpIGNvbnN0OwogCiAgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpIGNvbnN0OwotICAgIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhj
ZXB0aW9uKSBjb25zdDsKKyAgICBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIEpTQzo6RXhjZXB0aW9u
PiBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsJikgY29uc3Q7CiAgICAgUmVmPEpTT046OlZhbHVlPiBtYWtlQ2FsbChEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwmKTsKICAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyYs
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0T2JqZWN0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3du
LCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKICAgICB2b2lkIG1ha2VBc3luY0Nh
bGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgQXN5bmNDYWxsQ2FsbGJhY2smJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKaW5kZXggNzZkOTg4Y2Q1ZDQ1MjVjZWZjYjBkMGM5ODg5MjdmNDcw
YmI5YTlhOS4uMzJhNGE3NjE3YzY4NTZiODg3ZDA5NGQzYzczYWNjM2VlM2RhNDBmNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFN0cmluZyBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0U291cmNlKCkKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNpemVvZihJbmplY3Rl
ZFNjcmlwdFNvdXJjZV9qcykpOwogfQogCi1KU0M6OkpTT2JqZWN0KiBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCitFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgRXhjZXB0
aW9uPiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCiB7CiAgICAgVk0m
IHZtID0gc2NyaXB0U3RhdGUtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAt
MTU3LDcgKzE1Nyw3IEBAIEpTQzo6SlNPYmplY3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsCiAgICAgSW5zcGVjdG9yRXZh
bHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5k
bGVyKCk7CiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKHNjcmlw
dFN0YXRlLCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25FeGNlcHRpb24p
OwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhKTsKQEAgLTE4OCwxNCArMTg4LDE3IEBAIElu
amVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoRXhl
Y1N0YXRlKiBpbnNwZWN0ZWRFeGVjCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwog
CiAgICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihpbnNwZWN0ZWRFeGVjU3RhdGUpOwot
ICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmpl
Y3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlkKTsKLSAgICBpZiAoIWlu
amVjdGVkU2NyaXB0T2JqZWN0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHBh
cnNlL2V4ZWN1dGUgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMhIik7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkuYXNjaWkoKS5kYXRhKCkpOworICAg
IGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRT
b3VyY2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7CisgICAgaWYgKCFjcmVhdGVSZXN1bHQp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNyZWF0aW5nIGluamVjdGVkIHNj
cmlwdDogJXMiLCBjcmVhdGVSZXN1bHQuZXJyb3IoKS5nZXRTdHJpbmcoaW5zcGVjdGVkRXhlY1N0
YXRlKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBJbmplY3RlZFNjcmlwdCBy
ZXN1bHQoeyBpbnNwZWN0ZWRFeGVjU3RhdGUsIGluamVjdGVkU2NyaXB0T2JqZWN0IH0sICZtX2Vu
dmlyb25tZW50KTsKKyAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoeyBpbnNwZWN0ZWRFeGVjU3Rh
dGUsIGNyZWF0ZVJlc3VsdC52YWx1ZSgpIH0sICZtX2Vudmlyb25tZW50KTsKICAgICBtX2lkVG9J
bmplY3RlZFNjcmlwdC5zZXQoaWQsIHJlc3VsdCk7CiAgICAgZGlkQ3JlYXRlSW5qZWN0ZWRTY3Jp
cHQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggM2Y5OTlj
Y2Y4ZjljNDlhMTg1ZGQxY2I5NGNmN2Q5NmFhZjk5ODJiYy4uNzFmMzA0NjdmNmVhNGMyYWQxODQw
MjFjZTZjNmVkNzk5ZjYwN2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0yOSw4ICsyOSwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Myw3ICs3
NSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRT
b3VyY2UoKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBpbnQgaWQpOworICAgIEV4cGVjdGVkPEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAogICAgIEluc3BlY3Rv
ckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+
IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCBmNzg0NjdmODI4Yzlm
MDhhZTYzMGM1N2IyOTZhYjIwZGJmNjRmNDIwLi45YTNiNWM2NTlkMDAwNWIxMzVkYzQwMTUwZjRl
YTIwYWM1MzA2OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNjQsMTkgKzY0LDIwIEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGluamVjdGVk
U2NyaXB0LnNjcmlwdFN0YXRlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaGFzSW5q
ZWN0ZWRNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1l
bnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KG5hbWUoKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHJlc3Vs
dFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAo
aGFkRXhjZXB0aW9uIHx8ICFyZXN1bHRWYWx1ZSB8fCAhcmVzdWx0VmFsdWUuaXNCb29sZWFuKCkg
fHwgIXJlc3VsdFZhbHVlLmFzQm9vbGVhbigpKSB7CisgICAgYXV0byBoYXNJbmplY3RlZE1vZHVs
ZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbik7CisgICAgQVNTRVJUKGhhc0luamVjdGVkTW9kdWxlUmVzdWx0KTsKKyAgICBpZiAoIWhh
c0luamVjdGVkTW9kdWxlUmVzdWx0KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hl
biBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZSc6ICVzIiwgaGFzSW5qZWN0ZWRNb2R1bGVSZXN1
bHQuZXJyb3IoKS5nZXRTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KyAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwg
IWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJpbmplY3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFu
YWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgp
KSk7Ci0gICAgICAgIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgICAgICByZXN1bHRWYWx1ZSA9
IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFk
RXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbikgewotICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJGYWlsZWQgdG8gcGFyc2UvZXhlY3V0ZSAlcyEiLCBuYW1lKCkuYXNjaWkoKS5k
YXRhKCkpOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2Ny
aXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgICAgIGlmICgh
aW5qZWN0TW9kdWxlUmVzdWx0KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdo
ZW4gY2FsbGluZyAnaW5qZWN0TW9kdWxlJzogJXMiLCBpbmplY3RNb2R1bGVSZXN1bHQuZXJyb3Io
KS5nZXRTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSkuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgKaW5kZXggYThj
NzE4MDBjM2M4NTVkYTJlZjFkNWEyMjZhMzNkZTQxNWUzYWIwOS4uNTNkNTNkMDA1YjFhZGY0YzBh
ZTUzOTEwNzM1ZDU0ODkyMzJmNDg2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlkTm90aWZ5
SW5zcGVjdG9yT2ZUaHJvdygpIGNvbnN0IHsgcmV0dXJuIG1fZGlkTm90aWZ5SW5zcGVjdG9yT2ZU
aHJvdzsgfQogICAgIHZvaWQgc2V0RGlkTm90aWZ5SW5zcGVjdG9yT2ZUaHJvdygpIHsgbV9kaWRO
b3RpZnlJbnNwZWN0b3JPZlRocm93ID0gdHJ1ZTsgfQogCi0gICAgfkV4Y2VwdGlvbigpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIH5FeGNlcHRpb24oKTsKIAogcHJpdmF0ZToKICAgICBFeGNlcHRp
b24oVk0mKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379019</attachid>
            <date>2019-09-17 22:06:03 -0700</date>
            <delta_ts>2019-09-19 01:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201713-20190918140602.patch</filename>
            <type>text/plain</type>
            <size>22534</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlN2NiY2U5MjhiNmNhY2FmYTlmZGZiYzY3NjM3
YjY2NWNmNWNiYTkuLjRlN2NmMGZmNzAxNzhiN2IyZDIwZTQ0YzY0ODU2MWE2N2JhOWRhYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA5LTE3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlQgTk9UIFJFQUNI
RUQgaW4gSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoKSBz
ZWVuIHdpdGggaW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0Lmh0bWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcxMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTUyOTAzNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwb3NlIHRoZSBgRXhjZXB0aW9uYCBvYmplY3QgYnkgbGV2ZXJhZ2lu
ZyBhbiBgRXhwZWN0ZWRgIG9mIGBKU1ZhbHVlYCBhcyB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAg
IGluc3RlYWQgb2YgdXNpbmcgYSByZWZlcmVuY2VkIGBib29sYCAod2hpY2ggd291bGRuJ3QgaW5j
bHVkZSBhbnkgb2YgdGhlIGV4Y2VwdGlvbidzIGluZm8pLgorCisgICAgICAgICogYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmg6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMgY29uc3QpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCBjb25zdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUgY29uc3QpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkIGNvbnN0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbCk6CisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbi5oOgorCiAyMDE5LTA5LTE2ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdhc20gU3RyZWFtaW5nUGFyc2VyIHNob3VsZCB2YWxpZGF0ZSB0
aGF0IG51bWJlciBvZiBmdW5jdGlvbnMgbWF0Y2hlcyBudW1iZXIgb2YgZGVjbGFyYXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwCmluZGV4IDI2OWVmZTU2OGM0YzFlYTkzMTQ1MWVmMzYyNTgxZDVjYzA3MTM0MTcuLjcy
MGY3ZGM0MjJmMGU3MmMzYmJhNzQzMjE1Mjc4MDgxM2UwZjdjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWMKIHsKIH0KIAotSlNWYWx1ZSBT
Y3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRXhwZWN0ZWQ8SlNW
YWx1ZSwgRXhjZXB0aW9uPiBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogewogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gbV90aGlzT2JqZWN0LmpzT2JqZWN0KCk7CiAKQEAgLTExMSwxMCAr
MTExLDggQEAgSlNWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0
aW9uKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBtX25hbWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7Ci0gICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfQorICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgqc2NvcGUuZXhjZXB0aW9uKCkpOwogCiAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24s
IGNhbGxEYXRhKTsKQEAgLTEzMCwxNyArMTI4LDEyIEBAIEpTVmFsdWUgU2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIAogICAgIGlmIChleGNlcHRpb24pIHsKICAg
ICAgICAgLy8gRG8gbm90IHRyZWF0IGEgdGVybWluYXRlZCBleGVjdXRpb24gZXhjZXB0aW9uIGFz
IGhhdmluZyBhbiBleGNlcHRpb24uIEp1c3QgdHJlYXQgaXQgYXMgYW4gZW1wdHkgcmVzdWx0Lgot
ICAgICAgICBoYWRFeGNlcHRpb24gPSAhaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZt
LCBleGNlcHRpb24pOworICAgICAgICBpZiAoIWlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bih2bSwgZXhjZXB0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgqZXhj
ZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKLXsKLSAgICBi
b29sIGhhZEV4Y2VwdGlvbjsKLSAgICByZXR1cm4gY2FsbChoYWRFeGNlcHRpb24pOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggMWE3YTUzNzZiNTc0YTUxMWI4Mzcz
NjhkN2QyY2M1ZWM4N2JiMWE4Yi4uYTU3ZWE2NzdiZDhlZDk5MDA5MjE3ZWFkZWIzZjI1OTExM2U0
Y2YyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuaApAQCAtMzIsNyArMzIsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzAsOCArNzIsNyBAQCBjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3Vt
ZW50SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpTY3JpcHRG
dW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRh
JiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBh
cmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mKTsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwo
Y29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlw
dEZ1bmN0aW9uQ2FsbEhhbmRsZXIgaGFuZGxlciA9IG51bGxwdHIpOwotICAgIEpTQzo6SlNWYWx1
ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0gICAgSlNDOjpKU1ZhbHVlIGNhbGwoKTsKKyAg
ICBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIEpTQzo6RXhjZXB0aW9uPiBjYWxsKCk7CiAKIHByb3Rl
Y3RlZDoKICAgICBTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyIG1fY2FsbEhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmlu
ZGV4IDgyZTE1NTNiOThhZmI1N2I1MDYzNjkzMzhkMWYwNTQ0MjQyY2I1MGQuLjZhMTZlOGQ5NTQ1
MDY0MGVhYzc1NWQzZmVkYzEwZTNiZTUxMzA4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0yNTAsMTIgKzI1MCwxMiBA
QCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVj
dGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFtZXMiX3Ms
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwotICAgIGF1dG8gY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIGlmICghY2FsbEZyYW1lc1Zh
bHVlKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChm
dW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxSZXN1bHQpOworICAgIGlmICghY2FsbFJlc3VsdCB8
fCAhY2FsbFJlc3VsdC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwotICAgIEFTU0VSVCghaGFkRXhj
ZXB0aW9uKTsKLSAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIGNhbGxGcmFtZXNWYWx1ZSk7CisKKyAgICBSZWZQdHI8SlNPTjo6
VmFsdWU+IHJlc3VsdCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGNhbGxSZXN1
bHQudmFsdWUoKSk7CiAgICAgaWYgKHJlc3VsdC0+dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBl
OjpBcnJheSkKICAgICAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkp
LnJlbGVhc2VOb25OdWxsKCk7CiAKQEAgLTI3MSwxMyArMjcxLDEyIEBAIFJlZlB0cjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6
OkpTVmFsdWUKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaGFzQWNjZXNzVG9JbnNw
ZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2Vu
ZXJhdGVQcmV2aWV3KTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYXV0
byByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0
aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAgIGlmICghY2FsbFJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBy
ZXN1bHRPYmplY3Q7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgq
c2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CisgICAgYm9vbCBjYXN0
U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbFJlc3VsdC52
YWx1ZSgpKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RT
dWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7
CkBAIC0yOTEsMTYgKzI5MCwxNSBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09OU3RyaW5nKGNvbnN0IFN0cgogICAgIHdyYXBG
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwogCi0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKLSAgICBhdXRvIGV2YWxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
d3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIGlmIChoYWRFeGNlcHRpb24pCisgICAg
YXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlv
bik7CisgICAgaWYgKCFjYWxsUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGlmIChldmFsUmVzdWx0LmlzTnVsbCgpKQorICAgIGlmIChjYWxsUmVzdWx0LnZhbHVlKCkuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPEpTT046Ok9iamVj
dD4gcmVzdWx0T2JqZWN0OwotICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIGV2YWxSZXN1bHQpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwor
ICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCks
IGNhbGxSZXN1bHQudmFsdWUoKSktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CiAgICAgQVNTRVJU
X1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiBCaW5k
aW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChy
ZXN1bHRPYmplY3QpOwpAQCAtMzE3LDEzICszMTUsMTIgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoSlNDOjpKU1ZhbHVl
IHQKICAgICBlbHNlCiAgICAgICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb2x1bW5z
KTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYXV0byByID0gY2FsbEZ1
bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBp
ZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAgIGlmICghY2FsbFJlc3VsdCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXN1bHRPYmplY3Q7
Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUo
KSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0g
dG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgY2FsbFJlc3VsdC52YWx1ZSgpKS0+YXNP
YmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNh
c3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CkBAIC0zMzUsMTMg
KzMzMiwxMiBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVj
dGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUoSlNDOjpKU1ZhbAogICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInByZXZp
ZXdWYWx1ZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUpOwogCi0gICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIGlmIChoYWRFeGNlcHRpb24p
CisgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBG
dW5jdGlvbik7CisgICAgaWYgKCFjYWxsUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJlc3VsdE9iamVjdDsKLSAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCByKS0+YXNPYmplY3Qo
cmVzdWx0T2JqZWN0KTsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVl
KCpzY3JpcHRTdGF0ZSgpLCBjYWxsUmVzdWx0LnZhbHVlKCkpLT5hc09iamVjdChyZXN1bHRPYmpl
Y3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAK
ICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmll
dz46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CkBAIC0zODMsMTEgKzM3OSwxMSBAQCBKU0M6
OkpTVmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQpIGNvbnN0CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCJfcywgaW5zcGVjdG9yRW52
aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChvYmplY3RJZCk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAg
IGF1dG8gcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24s
IGhhZEV4Y2VwdGlvbik7Ci0gICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwotCi0gICAgcmV0dXJu
IHJlc3VsdFZhbHVlOworICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxSZXN1bHQpOworICAgIGlmICghY2Fs
bFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gY2FsbFJlc3VsdC52YWx1
ZSgpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0T2JqZWN0KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKQEAgLTQxMSw5ICs0MDcsOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNl
T2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJyZWxlYXNlT2JqZWN0R3JvdXAiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSk7CiAgICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVj
dEdyb3VwKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgY2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBB
U1NFUlQoIWhhZEV4Y2VwdGlvbik7CisgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlvbik7CisgICAgQVNTRVJUX1VOVVNFRChjYWxs
UmVzdWx0LCBjYWxsUmVzdWx0KTsKIH0KIAogSlNDOjpKU1ZhbHVlIEluamVjdGVkU2NyaXB0Ojph
cnJheUZyb21WZWN0b3IoVmVjdG9yPEpTQzo6SlNWYWx1ZT4mJiB2ZWN0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAK
aW5kZXggM2QyZGNhZTZiZDM0NmZlNDEzM2RhYTBmMGNmNmU2ZDU3MmY1NGFjYS4uMWQ2YTY0MWY3
OGI1M2M5M2NhNzVkYWExNTU5YzRiMzkwZTI1MjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtNzAsMTEg
KzcwLDExIEBAIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRC
YXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3Q7CiB9CiAKLUpTQzo6SlNWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1
bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0CitFeHBlY3RlZDxKU0M6OkpTVmFsdWUs
IEpTQzo6RXhjZXB0aW9uPiBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uKSBjb25zdAog
ewogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKTsKICAgICBKU0M6OkRlYnVnZ2VyRXZhbEVuYWJsZXIgZXZhbEVuYWJs
ZXIoc2NyaXB0U3RhdGUpOwotICAgIHJldHVybiBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7
CisgICAgcmV0dXJuIGZ1bmN0aW9uLmNhbGwoKTsKIH0KIAogUmVmPEpTT046OlZhbHVlPiBJbmpl
Y3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYg
ZnVuY3Rpb24pCkBAIC04MiwxNCArODIsMTEgQEAgUmVmPEpTT046OlZhbHVlPiBJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnUKICAg
ICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFoYXNBY2Nlc3NUb0luc3BlY3RlZFNjcmlwdFN0YXRlKCkp
CiAgICAgICAgIHJldHVybiBKU09OOjpWYWx1ZTo6bnVsbCgpOwogCi0gICAgYm9vbCBoYWRFeGNl
cHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHJlc3VsdEpTVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0KLSAgICBBU1NFUlQoIWhhZEV4
Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlvbikKKyAgICBhdXRvIHJlc3VsdCA9IGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEg
Y2FsbC4iKTsKIAotICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0SlNPTlZhbHVlID0gdG9J
bnNwZWN0b3JWYWx1ZSgqbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCByZXN1
bHRKU1ZhbHVlKTsKKyAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdEpTT05WYWx1ZSA9IHRv
SW5zcGVjdG9yVmFsdWUoKm1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSwgcmVz
dWx0LnZhbHVlKCkpOwogICAgIGlmICghcmVzdWx0SlNPTlZhbHVlKQogICAgICAgICByZXR1cm4g
SlNPTjo6VmFsdWU6OmNyZWF0ZShtYWtlU3RyaW5nKCJPYmplY3QgaGFzIHRvbyBsb25nIHJlZmVy
ZW5jZSBjaGFpbiAobXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gIiwgSlNPTjo6VmFsdWU6Om1heERl
cHRoLCAnKScpKTsKIApAQCAtMTI5LDEyICsxMjYsMTEgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJh
c2U6Om1ha2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlv
biwKIAogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZShqc0Z1bmN0aW9u
KSk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGF1dG8gcmVzdWx0SlNW
YWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9u
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdEpTVmFsdWUsIHJlc3VsdEpTVmFsdWUuaXNVbmRl
ZmluZWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
ZnVuY3Rpb24pOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpKTsKIAotICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhj
ZXB0aW9uKSB7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgLy8gU2luY2UgYGNhbGxiYWNrYCBpcyBtb3ZlZCBhYm92ZSwgd2UgY2FuJ3QgY2FsbCBpdCBp
ZiB0aGVyZSdzIGFuIGV4Y2VwdGlvbiB3aGlsZSB0cnlpbmcgdG8KICAgICAgICAgLy8gZXhlY3V0
ZSB0aGUgYEpTTmF0aXZlU3RkRnVuY3Rpb25gIGluc2lkZSBJbmplY3RlZFNjcmlwdFNvdXJjZS5q
cy4KICAgICAgICAganNGdW5jdGlvbi0+bmF0aXZlU3RkRnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9u
KCkobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaAppbmRleCAyMjZlODFiYmRlM2ZlODhjNGUwOTcwZDU0MWMwMWRm
ZWZiYWRkODU0Li4wNjRkNGYxZTcwM2ZkNTcxZmNmYmY4NWIzMDZmMDU5MWI4ZTA3YTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmgKQEAgLTMxLDkgKzMxLDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNp
bmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY0LDcgKzY2
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0
ZSgpIGNvbnN0OwogCiAgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpIGNvbnN0OwotICAgIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhj
ZXB0aW9uKSBjb25zdDsKKyAgICBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIEpTQzo6RXhjZXB0aW9u
PiBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsJikgY29uc3Q7CiAgICAgUmVmPEpTT046OlZhbHVlPiBtYWtlQ2FsbChEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwmKTsKICAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyYs
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0T2JqZWN0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3du
LCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKICAgICB2b2lkIG1ha2VBc3luY0Nh
bGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgQXN5bmNDYWxsQ2FsbGJhY2smJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKaW5kZXggNzZkOTg4Y2Q1ZDQ1MjVjZWZjYjBkMGM5ODg5MjdmNDcw
YmI5YTlhOS4uZmYwOGRkMjYwZGYyZWQzZmNhYTVmNGZlZmY4MTZiZWY3M2Y1OGRmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFN0cmluZyBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0U291cmNlKCkKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNpemVvZihJbmplY3Rl
ZFNjcmlwdFNvdXJjZV9qcykpOwogfQogCi1KU0M6OkpTT2JqZWN0KiBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCitFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgRXhjZXB0
aW9uPiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCiB7CiAgICAgVk0m
IHZtID0gc2NyaXB0U3RhdGUtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAt
MTU3LDcgKzE1Nyw3IEBAIEpTQzo6SlNPYmplY3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsCiAgICAgSW5zcGVjdG9yRXZh
bHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5k
bGVyKCk7CiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKHNjcmlw
dFN0YXRlLCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25FeGNlcHRpb24p
OwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCpldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEodm0sIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhKTsKQEAgLTE4OCwxNCArMTg4LDI0IEBAIElu
amVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoRXhl
Y1N0YXRlKiBpbnNwZWN0ZWRFeGVjCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwog
CiAgICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihpbnNwZWN0ZWRFeGVjU3RhdGUpOwot
ICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmpl
Y3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlkKTsKLSAgICBpZiAoIWlu
amVjdGVkU2NyaXB0T2JqZWN0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHBh
cnNlL2V4ZWN1dGUgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMhIik7CisgICAgYXV0byBjcmVhdGVS
ZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNw
ZWN0ZWRFeGVjU3RhdGUsIGlkKTsKKyAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgeworICAgICAgICB1
bnNpZ25lZCBsaW5lID0gMDsKKyAgICAgICAgdW5zaWduZWQgY29sdW1uID0gMDsKKyAgICAgICAg
YXV0byYgc3RhY2sgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKS5zdGFjaygpOworICAgICAgICBpZiAo
c3RhY2suc2l6ZSgpID4gMCkKKyAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29s
dW1uKGxpbmUsIGNvbHVtbik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjcmVh
dGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDolZClcbiIsIGNyZWF0ZVJlc3VsdC5lcnJvcigp
LnZhbHVlKCkudG9XVEZTdHJpbmcoaW5zcGVjdGVkRXhlY1N0YXRlKS5hc2NpaSgpLmRhdGEoKSwg
bGluZSwgY29sdW1uKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3Jp
cHRTb3VyY2UoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKICAgICAg
ICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0g
ICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KHsgaW5zcGVjdGVkRXhlY1N0YXRlLCBpbmplY3RlZFNj
cmlwdE9iamVjdCB9LCAmbV9lbnZpcm9ubWVudCk7CisgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0
KHsgaW5zcGVjdGVkRXhlY1N0YXRlLCBjcmVhdGVSZXN1bHQudmFsdWUoKSB9LCAmbV9lbnZpcm9u
bWVudCk7CiAgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGlkLCByZXN1bHQpOwogICAgIGRp
ZENyZWF0ZUluamVjdGVkU2NyaXB0KHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oCmluZGV4IDNmOTk5Y2NmOGY5YzQ5YTE4NWRkMWNiOTRjZjdkOTZhYWY5OTgyYmMuLjcx
ZjMwNDY3ZjZlYTRjMmFkMTg0MDIxY2U2YzZlZDc5OWY2MDdhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApA
QCAtMjksOCArMjksMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb24u
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckVudmly
b25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNzMsNyArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0gICAgSlNDOjpKU09iamVjdCogY3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlk
KTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24+IGNyZWF0ZUlu
amVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBp
ZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAgICBSZWY8
SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
aW5kZXggZjc4NDY3ZjgyOGM5ZjA4YWU2MzBjNTdiMjk2YWIyMGRiZjY0ZjQyMC4uYzBiMWEzNzlm
YzYxMjJmNGU1MzRlYjZjZGY5Y2U1YmMzMzJhZTViMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKQEAgLTY0
LDE4ICs2NCwzMSBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpKTsKICAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImhhc0luamVjdGVkTW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIt
Pmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7Ci0gICAgYXV0byByZXN1bHRWYWx1ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBBU1NFUlQoIWhhZEV4
Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCAhcmVzdWx0VmFsdWUgfHwgIXJlc3Vs
dFZhbHVlLmlzQm9vbGVhbigpIHx8ICFyZXN1bHRWYWx1ZS5hc0Jvb2xlYW4oKSkgeworICAgIGF1
dG8gaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOworICAgIEFTU0VSVChoYXNJbmplY3RlZE1vZHVsZVJl
c3VsdCk7CisgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdCkgeworICAgICAgICB1bnNp
Z25lZCBsaW5lID0gMDsKKyAgICAgICAgdW5zaWduZWQgY29sdW1uID0gMDsKKyAgICAgICAgYXV0
byYgc3RhY2sgPSBoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC5lcnJvcigpLnN0YWNrKCk7CisgICAg
ICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQorICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxp
bmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3
aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwg
bmFtZSgpLmFzY2lpKCkuZGF0YSgpLCBoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC5lcnJvcigpLnZh
bHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSkuYXNjaWkoKS5k
YXRhKCksIGxpbmUsIGNvbHVtbik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJj
ZSgpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9v
bGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7
CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxl
cigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAgICAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRTY3JpcHQuc2Ny
aXB0U3RhdGUoKSkpOwotICAgICAgICBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICAgICAgcmVz
dWx0VmFsdWUgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVu
Y3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChoYWRFeGNlcHRpb24pIHsKLSAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHBhcnNlL2V4ZWN1dGUgJXMhIiwgbmFtZSgp
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgYXV0byBpbmplY3RNb2R1bGVSZXN1bHQgPSBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOworICAgICAg
ICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgeworICAgICAgICAgICAgdW5zaWduZWQgbGluZSA9
IDA7CisgICAgICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSAwOworICAgICAgICAgICAgYXV0byYg
c3RhY2sgPSBpbmplY3RNb2R1bGVSZXN1bHQuZXJyb3IoKS5zdGFjaygpOworICAgICAgICAgICAg
aWYgKHN0YWNrLnNpemUoKSA+IDApCisgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxp
bmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJy
b3Igd2hlbiBjYWxsaW5nICdpbmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBu
YW1lKCkuYXNjaWkoKS5kYXRhKCksIGluamVjdE1vZHVsZVJlc3VsdC5lcnJvcigpLnZhbHVlKCku
dG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSkuYXNjaWkoKS5kYXRhKCks
IGxpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2Uo
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5o
CmluZGV4IGE4YzcxODAwYzNjODU1ZGEyZWYxZDVhMjI2YTMzZGU0MTVlM2FiMDkuLjUzZDUzZDAw
NWIxYWRmNGMwYWU1MzkxMDczNWQ1NDg5MjMyZjQ4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGRpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3coKSBjb25zdCB7IHJldHVybiBtX2RpZE5vdGlmeUlu
c3BlY3Rvck9mVGhyb3c7IH0KICAgICB2b2lkIHNldERpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3co
KSB7IG1fZGlkTm90aWZ5SW5zcGVjdG9yT2ZUaHJvdyA9IHRydWU7IH0KIAotICAgIH5FeGNlcHRp
b24oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+RXhjZXB0aW9uKCk7CiAKIHByaXZhdGU6CiAg
ICAgRXhjZXB0aW9uKFZNJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379113</attachid>
            <date>2019-09-19 01:30:04 -0700</date>
            <delta_ts>2019-09-19 08:09:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201713-20190919173003.patch</filename>
            <type>text/plain</type>
            <size>22648</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDljMzgxMGUwYmM0ODk2NDg2NmY0MjJjNmI2MWY3
ZTM3N2Q1YWUzMDAuLjg4OTNhMGU5YmNiODJmYmYyMDQ4YjgxNjFhNjM1MmMzYmU4MTI1YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA5LTE4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlQgTk9UIFJFQUNI
RUQgaW4gSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoKSBz
ZWVuIHdpdGggaW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0Lmh0bWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcxMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTUyOTAzNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29y
YXJvLgorCisgICAgICAgIEV4cG9zZSB0aGUgYEV4Y2VwdGlvbmAgb2JqZWN0IGJ5IGxldmVyYWdp
bmcgYW4gYEV4cGVjdGVkYCBvZiBgSlNWYWx1ZWAgYXMgdGhlIHJldHVybiB2YWx1ZQorICAgICAg
ICBpbnN0ZWFkIG9mIHVzaW5nIGEgcmVmZXJlbmNlZCBgYm9vbGAgKHdoaWNoIHdvdWxkbid0IGlu
Y2x1ZGUgYW55IG9mIHRoZSBleGNlcHRpb24ncyBpbmZvKS4KKworICAgICAgICAqIGJpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwp
OgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QgY29uc3QpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcEpTT05TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZSBjb25zdCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZCBjb25zdCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXApOgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCBjb25zdCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VBc3luY0NhbGwpOgorCisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorCisgICAgICAgICogcnVudGlt
ZS9FeGNlcHRpb24uaDoKKwogMjAxOS0wOS0xOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQmV0dGVyIGhhbmRsaW5nIGZvciBsYXJn
ZSBhcnJheXMgYW5kIGNvbGxlY3Rpb25zIGluIE9iamVjdCBUcmVlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCAy
NjllZmU1NjhjNGMxZWE5MzE0NTFlZjM2MjU4MWQ1Y2MwNzEzNDE3Li43MjBmN2RjNDIyZjBlNzJj
M2JiYTc0MzIxNTI3ODA4MTNlMGY3Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBA
IFNjcmlwdEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCYgdGhpc09iamVjCiB7CiB9CiAKLUpTVmFsdWUgU2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKK0V4cGVjdGVkPEpTVmFsdWUsIEV4Y2VwdGlv
bj4gU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IG1fdGhpc09iamVjdC5qc09iamVjdCgpOwogCkBAIC0xMTEsMTAgKzExMSw4IEBAIEpTVmFs
dWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9u
ID0gdGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9u
YW1lKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBo
YWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KKyAgICBpZiAo
VU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoKnNjb3BlLmV4Y2VwdGlvbigpKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBjYWxsRGF0YSk7CkBA
IC0xMzAsMTcgKzEyOCwxMiBAQCBKU1ZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbChib29s
JiBoYWRFeGNlcHRpb24pCiAKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIC8vIERvIG5v
dCB0cmVhdCBhIHRlcm1pbmF0ZWQgZXhlY3V0aW9uIGV4Y2VwdGlvbiBhcyBoYXZpbmcgYW4gZXhj
ZXB0aW9uLiBKdXN0IHRyZWF0IGl0IGFzIGFuIGVtcHR5IHJlc3VsdC4KLSAgICAgICAgaGFkRXhj
ZXB0aW9uID0gIWlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgaWYgKCFpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIGV4Y2VwdGlv
bikpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKmV4Y2VwdGlvbik7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDOjpK
U1ZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCi17Ci0gICAgYm9vbCBoYWRFeGNlcHRp
b247Ci0gICAgcmV0dXJuIGNhbGwoaGFkRXhjZXB0aW9uKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
RGVwcmVjYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5oCmluZGV4IDFhN2E1Mzc2YjU3NGE1MTFiODM3MzY4ZDdkMmNjNWVjODdi
YjFhOGIuLmE1N2VhNjc3YmQ4ZWQ5OTAwOTIxN2VhZGViM2YyNTkxMTNlNGNmMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgK
QEAgLTMyLDcgKzMyLDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTcwLDggKzcyLDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
U2NyaXB0RnVuY3Rpb25DYWxsIDogcHVibGljIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqU2NyaXB0RnVuY3Rpb25DYWxsSGFu
ZGxlcikoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
SlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+Jik7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9i
amVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5jdGlvbkNhbGxI
YW5kbGVyIGhhbmRsZXIgPSBudWxscHRyKTsKLSAgICBKU0M6OkpTVmFsdWUgY2FsbChib29sJiBo
YWRFeGNlcHRpb24pOwotICAgIEpTQzo6SlNWYWx1ZSBjYWxsKCk7CisgICAgRXhwZWN0ZWQ8SlND
OjpKU1ZhbHVlLCBKU0M6OkV4Y2VwdGlvbj4gY2FsbCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsSGFuZGxlciBtX2NhbGxIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA0ZjYwMTI5ZTUz
OWE4ZWZiYzU2ZDMxMjcwZTUyODJkZTBiZmNlZTE5Li5iYTM1ZmRhZDMxYTI5NTkyYTQ1NTgwNDUx
MTY5MTQ0MzA1YjA3MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMjYzLDEyICsyNjMsMTIgQEAgUmVmPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3Jh
cENhbGxGcmFtZXMKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIl9zLCBpbnNwZWN0b3JFbnZp
cm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGNhbGxGcmFtZXMpOwogCi0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAg
ICBhdXRvIGNhbGxGcmFtZXNWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoIWNhbGxGcmFtZXNWYWx1ZSkKKyAgICBhdXRv
IGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOworICAg
IEFTU0VSVChjYWxsUmVzdWx0KTsKKyAgICBpZiAoIWNhbGxSZXN1bHQgfHwgIWNhbGxSZXN1bHQu
dmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKLSAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7Ci0gICAg
UmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0
ZSgpLCBjYWxsRnJhbWVzVmFsdWUpOworCisgICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQg
PSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBjYWxsUmVzdWx0LnZhbHVlKCkpOwog
ICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBKU09OOjpWYWx1ZTo6VHlwZTo6QXJyYXkpCiAgICAg
ICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKS5yZWxlYXNlTm9uTnVs
bCgpOwogCkBAIC0yODQsMTMgKzI4NCwxMiBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlCiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhhc0FjY2Vzc1RvSW5zcGVjdGVkU2NyaXB0U3Rh
dGUoKSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdlbmVyYXRlUHJldmlldyk7
CiAKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGF1dG8gciA9IGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgaWYg
KGhhZEV4Y2VwdGlvbikKKyAgICBhdXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQod3JhcEZ1bmN0aW9uKTsKKyAgICBpZiAoIWNhbGxSZXN1bHQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcmVzdWx0T2JqZWN0Owot
ICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCks
IHIpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRv
SW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGNhbGxSZXN1bHQudmFsdWUoKSktPmFzT2Jq
ZWN0KHJlc3VsdE9iamVjdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0
U3VjY2VlZGVkKTsKIAogICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOwpAQCAtMzA0LDE2ICsz
MDMsMTUgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVk
U2NyaXB0Ojp3cmFwSlNPTlN0cmluZyhjb25zdCBTdHIKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoZ3JvdXBOYW1lKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2Vu
ZXJhdGVQcmV2aWV3KTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYXV0
byBldmFsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2FsbFJlc3Vs
dCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAgIGlmICgh
Y2FsbFJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoZXZhbFJlc3Vs
dC5pc051bGwoKSkKKyAgICBpZiAoY2FsbFJlc3VsdC52YWx1ZSgpLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJlc3VsdE9iamVj
dDsKLSAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0
ZSgpLCBldmFsUmVzdWx0KS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKKyAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBjYWxsUmVzdWx0LnZh
bHVlKCkpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1
Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0KTsK
QEAgLTMzMCwxMyArMzI4LDEyIEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNWYWx1ZSB0CiAgICAgZWxzZQog
ICAgICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29sdW1ucyk7CiAKLSAgICBib29s
IGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGF1dG8gciA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlv
bikKKyAgICBhdXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3Jh
cEZ1bmN0aW9uKTsKKyAgICBpZiAoIWNhbGxSZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcmVzdWx0T2JqZWN0OwotICAgIGJvb2wgY2Fz
dFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIHIpLT5hc09iamVj
dChyZXN1bHRPYmplY3QpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIGNhbGxSZXN1bHQudmFsdWUoKSktPmFzT2JqZWN0KHJlc3VsdE9i
amVjdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsK
IAogICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOwpAQCAtMzQ4LDEzICszNDUsMTIgQEAgUmVm
UHRyPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJl
dmlld1ZhbHVlKEpTQzo6SlNWYWwKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
d3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJwcmV2aWV3VmFsdWUiX3MsIGlu
c3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgd3JhcEZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7Ci0gICAgYXV0byByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2Fs
bFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAg
IGlmICghY2FsbFJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiByZXN1bHRPYmplY3Q7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9J
bnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7
CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUo
KSwgY2FsbFJlc3VsdC52YWx1ZSgpKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NF
UlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIEJp
bmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+OjpydW50aW1lQ2Fz
dChyZXN1bHRPYmplY3QpOwpAQCAtMzk2LDExICszOTIsMTEgQEAgSlNDOjpKU1ZhbHVlIEluamVj
dGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAog
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0
SWQpOwogCi0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHJlc3VsdFZh
bHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24p
OwotICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLQotICAgIHJldHVybiByZXN1bHRWYWx1ZTsK
KyAgICBhdXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24pOworICAgIEFTU0VSVChjYWxsUmVzdWx0KTsKKyAgICBpZiAoIWNhbGxSZXN1bHQpCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGNhbGxSZXN1bHQudmFsdWUoKTsKIH0KIAogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUpCkBAIC00
MjQsOSArNDIwLDggQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVj
dEdyb3VwIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAKLSAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5h
YmxlZChyZWxlYXNlRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgQVNTRVJUKCFoYWRFeGNl
cHRpb24pOworICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxl
ZChyZWxlYXNlRnVuY3Rpb24pOworICAgIEFTU0VSVF9VTlVTRUQoY2FsbFJlc3VsdCwgY2FsbFJl
c3VsdCk7CiB9CiAKIEpTQzo6SlNWYWx1ZSBJbmplY3RlZFNjcmlwdDo6YXJyYXlGcm9tVmVjdG9y
KFZlY3RvcjxKU0M6OkpTVmFsdWU+JiYgdmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IDNkMmRjYWU2
YmQzNDZmZTQxMzNkYWEwZjBjZjZlNmQ1NzJmNTRhY2EuLjFkNmE2NDFmNzhiNTNjOTNjYTc1ZGFh
MTU1OWM0YjM5MGUyNTIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTcwLDExICs3MCwxMSBAQCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFzZTo6aW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Owog
fQogCi1KU0M6OkpTVmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYg
aGFkRXhjZXB0aW9uKSBjb25zdAorRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBKU0M6OkV4Y2VwdGlv
bj4gSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCk7CiAgICAgSlNDOjpEZWJ1Z2dlckV2YWxFbmFibGVyIGV2YWxFbmFibGVyKHNjcmlwdFN0YXRl
KTsKLSAgICByZXR1cm4gZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOworICAgIHJldHVybiBm
dW5jdGlvbi5jYWxsKCk7CiB9CiAKIFJlZjxKU09OOjpWYWx1ZT4gSW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uKQpAQCAt
ODIsMTQgKzgyLDExIEBAIFJlZjxKU09OOjpWYWx1ZT4gSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
Q2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1CiAgICAgaWYgKGhhc05vVmFs
dWUoKSB8fCAhaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKQogICAgICAgICByZXR1
cm4gSlNPTjo6VmFsdWU6Om51bGwoKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
Ci0gICAgYXV0byByZXN1bHRKU1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotCi0gICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwotICAg
IGlmIChoYWRFeGNlcHRpb24pCisgICAgYXV0byByZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoZnVuY3Rpb24pOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7CiAKLSAg
ICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdEpTT05WYWx1ZSA9IHRvSW5zcGVjdG9yVmFsdWUo
Km1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSwgcmVzdWx0SlNWYWx1ZSk7Cisg
ICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVl
KCptX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCksIHJlc3VsdC52YWx1ZSgpKTsK
ICAgICBpZiAoIXJlc3VsdEpTT05WYWx1ZSkKICAgICAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpj
cmVhdGUobWFrZVN0cmluZygiT2JqZWN0IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4gKG11
c3Qgbm90IGJlIGxvbmdlciB0aGFuICIsIEpTT046OlZhbHVlOjptYXhEZXB0aCwgJyknKSk7CiAK
QEAgLTEyOSwxMiArMTI2LDExIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmND
YWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiAKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoanNGdW5jdGlvbikpOwogCi0gICAgYm9v
bCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHJlc3VsdEpTVmFsdWUgPSBjYWxsRnVu
Y3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHRKU1ZhbHVlLCByZXN1bHRKU1ZhbHVlLmlzVW5kZWZpbmVkKCkpOworICAg
IGF1dG8gcmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnZhbHVlKCkuaXNVbmRlZmluZWQoKSk7CiAK
LSAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlvbikgeworICAg
IEFTU0VSVChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIC8vIFNpbmNlIGBj
YWxsYmFja2AgaXMgbW92ZWQgYWJvdmUsIHdlIGNhbid0IGNhbGwgaXQgaWYgdGhlcmUncyBhbiBl
eGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGBKU05hdGl2
ZVN0ZEZ1bmN0aW9uYCBpbnNpZGUgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCiAgICAgICAgIGpz
RnVuY3Rpb24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5jdGlvbigpKG51bGxwdHIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmgKaW5kZXggMjI2ZTgxYmJkZTNmZTg4YzRlMDk3MGQ1NDFjMDFkZmVmYmFkZDg1NC4uMDY0
ZDRmMWU3MDNmZDU3MWZjZmJmODViMzA2ZjA1OTFiOGUwN2E0NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCkBAIC0zMSw5
ICszMSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9j
b2xPYmplY3RzLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02NCw3ICs2Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGhhc0FjY2Vzc1RvSW5zcGVjdGVkU2NyaXB0U3RhdGUoKSBjb25zdDsKIAog
ICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSBjb25zdDsKLSAgICBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7
CisgICAgRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBKU0M6OkV4Y2VwdGlvbj4gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYpIGNvbnN0Owog
ICAgIFJlZjxKU09OOjpWYWx1ZT4gbWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsJik7CiAgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcmLCBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdE9iamVjdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCk7CiAgICAgdm9pZCBtYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIEFzeW5jQ2FsbENhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwCmluZGV4IDc2ZDk4OGNkNWQ0NTI1Y2VmY2IwZDBjOTg4OTI3ZjQ3MGJiOWE5YTkuLmQ5YTZi
Y2MyYTQ2ZmI5YmE2ZWI3ZmUwNzdkMjQ4YjdjNzE3MDc1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3Rl
ZFNjcmlwdFNvdXJjZSgpCiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2Vf
anMpKTsKIH0KIAotSlNDOjpKU09iamVjdCogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJ
bmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgaW50IGlkKQorRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIEV4Y2VwdGlvbj4gSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwg
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IHNjcmlwdFN0
YXRlLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBKU0M6OkpTT2JqZWN0KiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2Ny
aXB0KGNvbnN0IFN0cmluZyYgc291cmNlLAogICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBl
dmFsdWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwogICAgIEpT
VmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFuZGxlcihzY3JpcHRTdGF0ZSwgc291cmNl
Q29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZh
bHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgqZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlv
blZhbHVlLCBjYWxsRGF0YSk7CkBAIC0xODgsMTQgKzE4OCwyNCBAQCBJbmplY3RlZFNjcmlwdCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEV4ZWNTdGF0ZSogaW5zcGVj
dGVkRXhlYwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgIGludCBpZCA9
IGluamVjdGVkU2NyaXB0SWRGb3IoaW5zcGVjdGVkRXhlY1N0YXRlKTsKLSAgICBhdXRvIGluamVj
dGVkU2NyaXB0T2JqZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdE9i
amVjdCkgewotICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBwYXJzZS9leGVjdXRlIElu
amVjdGVkU2NyaXB0U291cmNlLmpzISIpOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBp
bmplY3RlZFNjcmlwdFNvdXJjZSgpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBhdXRvIGNyZWF0ZVJl
c3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3Bl
Y3RlZEV4ZWNTdGF0ZSwgaWQpOworICAgIGlmICghY3JlYXRlUmVzdWx0KSB7CisgICAgICAgIHVu
c2lnbmVkIGxpbmUgPSAwOworICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSAwOworICAgICAgICBh
dXRvJiBzdGFjayA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpLnN0YWNrKCk7CisgICAgICAgIGlmIChz
dGFjay5zaXplKCkgPiAwKQorICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1
bW4obGluZSwgY29sdW1uKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNyZWF0
aW5nIGluamVjdGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgY3JlYXRlUmVzdWx0LmVycm9yKCku
dmFsdWUoKS50b1dURlN0cmluZyhpbnNwZWN0ZWRFeGVjU3RhdGUpLnV0ZjgoKS5kYXRhKCksIGxp
bmUsIGNvbHVtbik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0
U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBJ
bmplY3RlZFNjcmlwdCByZXN1bHQoeyBpbnNwZWN0ZWRFeGVjU3RhdGUsIGluamVjdGVkU2NyaXB0
T2JqZWN0IH0sICZtX2Vudmlyb25tZW50KTsKKyAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoeyBp
bnNwZWN0ZWRFeGVjU3RhdGUsIGNyZWF0ZVJlc3VsdC52YWx1ZSgpIH0sICZtX2Vudmlyb25tZW50
KTsKICAgICBtX2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaWQsIHJlc3VsdCk7CiAgICAgZGlkQ3Jl
YXRlSW5qZWN0ZWRTY3JpcHQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgKaW5kZXggM2Y5OTljY2Y4ZjljNDlhMTg1ZGQxY2I5NGNmN2Q5NmFhZjk5ODJiYy4uNzFmMzA0
NjdmNmVhNGMyYWQxODQwMjFjZTZjNmVkNzk5ZjYwN2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0y
OSw4ICsyOSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03Myw3ICs3NSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcg
aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBpbnQgaWQpOwor
ICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbj4gY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsK
IAogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmpl
Y3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRl
eCBmNzg0NjdmODI4YzlmMDhhZTYzMGM1N2IyOTZhYjIwZGJmNjRmNDIwLi41YjViZDY5N2NiNmI1
YzFkMWJhZjJiOWUwNjlmZTc4M2M1MDBiNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNjQsMTkg
KzY0LDMyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAiaGFzSW5qZWN0ZWRNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsK
LSAgICBhdXRvIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIEFTU0VSVCghaGFkRXhjZXB0
aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uIHx8ICFyZXN1bHRWYWx1ZSB8fCAhcmVzdWx0VmFs
dWUuaXNCb29sZWFuKCkgfHwgIXJlc3VsdFZhbHVlLmFzQm9vbGVhbigpKSB7CisgICAgYXV0byBo
YXNJbmplY3RlZE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgQVNTRVJUKGhhc0luamVjdGVkTW9kdWxlUmVzdWx0
KTsKKyAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0KSB7CisgICAgICAgIHVuc2lnbmVk
IGxpbmUgPSAwOworICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSAwOworICAgICAgICBhdXRvJiBz
dGFjayA9IGhhc0luamVjdGVkTW9kdWxlUmVzdWx0LmVycm9yKCkuc3RhY2soKTsKKyAgICAgICAg
aWYgKHN0YWNrLnNpemUoKSA+IDApCisgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4g
Y2FsbGluZyAnaGFzSW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1l
KCkudXRmOCgpLmRhdGEoKSwgaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQuZXJyb3IoKS52YWx1ZSgp
LnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCkpLnV0ZjgoKS5kYXRhKCks
IGxpbmUsIGNvbHVtbik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkg
fHwgIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbmplY3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0
TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwog
ICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0
ZSgpKSk7Ci0gICAgICAgIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgICAgICByZXN1bHRWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbikgewotICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gcGFyc2UvZXhlY3V0ZSAlcyEiLCBuYW1lKCkuYXNjaWko
KS5kYXRhKCkpOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVk
U2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgICAgIGlm
ICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMDsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbiA9IDA7CisgICAgICAgICAgICBhdXRvJiBzdGFj
ayA9IGluamVjdE1vZHVsZVJlc3VsdC5lcnJvcigpLnN0YWNrKCk7CisgICAgICAgICAgICBpZiAo
c3RhY2suc2l6ZSgpID4gMCkKKyAgICAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3
aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUo
KS51dGY4KCkuZGF0YSgpLCBpbmplY3RNb2R1bGVSZXN1bHQuZXJyb3IoKS52YWx1ZSgpLnRvV1RG
U3RyaW5nKGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUs
IGNvbHVtbik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5o
CmluZGV4IGM3MTk0NGMxOTdhMWExZjViM2Y4YjNhMTdkMDU5MmRjZThhN2ZjMTcuLmY2ZWUxZjli
ZTI0ZmI0MGY1MmVmY2EyN2VkMjA5ZTU5Y2I5NWFhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGRpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3coKSBjb25zdCB7IHJldHVybiBtX2RpZE5vdGlmeUlu
c3BlY3Rvck9mVGhyb3c7IH0KICAgICB2b2lkIHNldERpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3co
KSB7IG1fZGlkTm90aWZ5SW5zcGVjdG9yT2ZUaHJvdyA9IHRydWU7IH0KIAotICAgIH5FeGNlcHRp
b24oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+RXhjZXB0aW9uKCk7CiAKIHByaXZhdGU6CiAg
ICAgRXhjZXB0aW9uKFZNJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379134</attachid>
            <date>2019-09-19 08:09:27 -0700</date>
            <delta_ts>2019-09-20 01:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201713-20190920000925.patch</filename>
            <type>text/plain</type>
            <size>22310</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDljMzgxMGUwYmM0ODk2NDg2NmY0MjJjNmI2MWY3
ZTM3N2Q1YWUzMDAuLjQ3YmViZjMzNjU1Y2JiNjNjNmIwZDQ2OWM1ODVmOGQyN2Q0NDgzNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTA5LTE5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlQgTk9UIFJFQUNI
RUQgaW4gSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoKSBz
ZWVuIHdpdGggaW5zcGVjdG9yL2hlYXAvZ2V0UmVtb3RlT2JqZWN0Lmh0bWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcxMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTUyOTAzNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29y
YXJvLgorCisgICAgICAgIEV4cG9zZSB0aGUgYEV4Y2VwdGlvbmAgb2JqZWN0IGJ5IGxldmVyYWdp
bmcgYW4gYEV4cGVjdGVkYCBvZiBgSlNWYWx1ZWAgYXMgdGhlIHJldHVybiB2YWx1ZQorICAgICAg
ICBpbnN0ZWFkIG9mIHVzaW5nIGEgcmVmZXJlbmNlZCBgYm9vbGAgKHdoaWNoIHdvdWxkbid0IGlu
Y2x1ZGUgYW55IG9mIHRoZSBleGNlcHRpb24ncyBpbmZvKS4KKworICAgICAgICAqIGJpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwp
OgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QgY29uc3QpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcEpTT05TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlIGNvbnN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZSBjb25zdCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZCBjb25zdCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXApOgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCBjb25zdCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VBc3luY0NhbGwpOgorCisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorCiAyMDE5LTA5LTE4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBC
ZXR0ZXIgaGFuZGxpbmcgZm9yIGxhcmdlIGFycmF5cyBhbmQgY29sbGVjdGlvbnMgaW4gT2JqZWN0
IFRyZWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwCmluZGV4IDI2OWVmZTU2OGM0YzFlYTkzMTQ1MWVmMzYyNTgxZDVjYzA3
MTM0MTcuLjg3MjMwMDkyZTc0MjZhNjhjYTE0NWY3YjJkZDhkNDcxYTM5ZWUyYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlv
bkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWMKIHsKIH0KIAot
SlNWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRXhw
ZWN0ZWQ8SlNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gU2NyaXB0RnVuY3Rpb25DYWxsOjpj
YWxsKCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5qc09iamVj
dCgpOwogCkBAIC0xMTEsMTAgKzExMSw4IEBAIEpTVmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpj
YWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1fZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbV9uYW1lKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAg
ICAgICByZXR1cm4geyB9OwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpOwog
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YSh2bSwgZnVuY3Rpb24sIGNhbGxEYXRhKTsKQEAgLTEzMCwxNyArMTI4LDEyIEBAIEpTVmFs
dWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIAogICAgIGlm
IChleGNlcHRpb24pIHsKICAgICAgICAgLy8gRG8gbm90IHRyZWF0IGEgdGVybWluYXRlZCBleGVj
dXRpb24gZXhjZXB0aW9uIGFzIGhhdmluZyBhbiBleGNlcHRpb24uIEp1c3QgdHJlYXQgaXQgYXMg
YW4gZW1wdHkgcmVzdWx0LgotICAgICAgICBoYWRFeGNlcHRpb24gPSAhaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pOworICAgICAgICBpZiAoIWlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhjZXB0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6
OmNhbGwoKQotewotICAgIGJvb2wgaGFkRXhjZXB0aW9uOwotICAgIHJldHVybiBjYWxsKGhhZEV4
Y2VwdGlvbik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAppbmRleCAxYTdh
NTM3NmI1NzRhNTExYjgzNzM2OGQ3ZDJjYzVlYzg3YmIxYThiLi42MTQxNGI4YmZmNzRlNTU3YzM1
ZmZlZmIzNjQ4MmI5M2YxM2JmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCkBAIC0zMiw3ICszMiw5IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03MCw4ICs3
Miw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1Ymxp
YyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6
SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNv
bnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYpOwogICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0cik7
Ci0gICAgSlNDOjpKU1ZhbHVlIGNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKTsKLSAgICBKU0M6OkpT
VmFsdWUgY2FsbCgpOworICAgIEV4cGVjdGVkPEpTQzo6SlNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+PiBjYWxsKCk7CiAKIHByb3RlY3RlZDoKICAgICBTY3JpcHRGdW5jdGlvbkNhbGxI
YW5kbGVyIG1fY2FsbEhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDRmNjAxMjllNTM5YThlZmJjNTZkMzEyNzBl
NTI4MmRlMGJmY2VlMTkuLmJhMzVmZGFkMzFhMjk1OTJhNDU1ODA0NTExNjkxNDQzMDViMDczMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCkBAIC0yNjMsMTIgKzI2MywxMiBAQCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcwogICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAid3JhcENhbGxGcmFtZXMiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1l
cyk7CiAKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGF1dG8gY2FsbEZyYW1l
c1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRp
b24pOwotICAgIGlmICghY2FsbEZyYW1lc1ZhbHVlKQorICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgQVNTRVJUKGNhbGxSZXN1
bHQpOworICAgIGlmICghY2FsbFJlc3VsdCB8fCAhY2FsbFJlc3VsdC52YWx1ZSgpKQogICAgICAg
ICByZXR1cm4gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNy
ZWF0ZSgpOwotICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLSAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHJlc3VsdCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGNhbGxGcmFtZXNW
YWx1ZSk7CisKKyAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IHRvSW5zcGVjdG9yVmFs
dWUoKnNjcmlwdFN0YXRlKCksIGNhbGxSZXN1bHQudmFsdWUoKSk7CiAgICAgaWYgKHJlc3VsdC0+
dHlwZSgpID09IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSkKICAgICAgICAgcmV0dXJuIEJpbmRp
bmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+Ojpy
dW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpLnJlbGVhc2VOb25OdWxsKCk7CiAKQEAgLTI4NCwx
MyArMjg0LDEyIEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcE9iamVjdChKU0M6OkpTVmFsdWUKICAgICB3cmFwRnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKICAgICB3cmFw
RnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3KTsKIAotICAgIGJvb2wgaGFk
RXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYXV0byByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQor
ICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVu
Y3Rpb24pOworICAgIGlmICghY2FsbFJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXN1bHRPYmplY3Q7Ci0gICAgYm9vbCBjYXN0U3Vj
Y2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJl
c3VsdE9iamVjdCk7CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgq
c2NyaXB0U3RhdGUoKSwgY2FsbFJlc3VsdC52YWx1ZSgpKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0
KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAg
ICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7CkBAIC0zMDQsMTYgKzMwMywxNSBAQCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09O
U3RyaW5nKGNvbnN0IFN0cgogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5h
bWUpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwog
Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIGV2YWxSZXN1bHQgPSBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwot
ICAgIGlmIChoYWRFeGNlcHRpb24pCisgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbik7CisgICAgaWYgKCFjYWxsUmVzdWx0KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChldmFsUmVzdWx0LmlzTnVsbCgpKQorICAg
IGlmIChjYWxsUmVzdWx0LnZhbHVlKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcmVzdWx0T2JqZWN0OwotICAgIGJvb2wgY2Fz
dFN1Y2NlZWRlZCA9IHRvSW5zcGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGV2YWxSZXN1bHQp
LT5hc09iamVjdChyZXN1bHRPYmplY3QpOworICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHRvSW5z
cGVjdG9yVmFsdWUoKnNjcmlwdFN0YXRlKCksIGNhbGxSZXN1bHQudmFsdWUoKSktPmFzT2JqZWN0
KHJlc3VsdE9iamVjdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3Vj
Y2VlZGVkKTsKIAogICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmplY3QpOwpAQCAtMzMwLDEzICszMjgs
MTIgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHQKICAgICBlbHNlCiAgICAgICAgIHdyYXBGdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChjb2x1bW5zKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7Ci0gICAgYXV0byByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGF1dG8gY2Fs
bFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOworICAg
IGlmICghY2FsbFJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiByZXN1bHRPYmplY3Q7Ci0gICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9J
bnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUoKSwgciktPmFzT2JqZWN0KHJlc3VsdE9iamVjdCk7
CisgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdG9JbnNwZWN0b3JWYWx1ZSgqc2NyaXB0U3RhdGUo
KSwgY2FsbFJlc3VsdC52YWx1ZSgpKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKICAgICBBU1NF
UlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogCiAgICAgcmV0dXJuIEJp
bmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0
KHJlc3VsdE9iamVjdCk7CkBAIC0zNDgsMTMgKzM0NSwxMiBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1
bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2aWV3VmFsdWUoSlNDOjpK
U1ZhbAogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgInByZXZpZXdWYWx1ZSJfcywgaW5zcGVjdG9yRW52aXJvbm1l
bnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQodmFsdWUpOwogCi0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRv
IHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRp
b24pOwotICAgIGlmIChoYWRFeGNlcHRpb24pCisgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1
bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbik7CisgICAgaWYgKCFjYWxsUmVzdWx0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJl
c3VsdE9iamVjdDsKLSAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpz
Y3JpcHRTdGF0ZSgpLCByKS0+YXNPYmplY3QocmVzdWx0T2JqZWN0KTsKKyAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSB0b0luc3BlY3RvclZhbHVlKCpzY3JpcHRTdGF0ZSgpLCBjYWxsUmVzdWx0LnZh
bHVlKCkpLT5hc09iamVjdChyZXN1bHRPYmplY3QpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1
Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAKICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxQcm90
b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdCk7
CkBAIC0zOTYsMTEgKzM5MiwxMSBAQCBKU0M6OkpTVmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRP
YmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5k
T2JqZWN0QnlJZCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxl
cigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKLSAgICBib29s
IGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIGF1dG8gcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgQVNTRVJUKCFo
YWRFeGNlcHRpb24pOwotCi0gICAgcmV0dXJuIHJlc3VsdFZhbHVlOworICAgIGF1dG8gY2FsbFJl
c3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CisgICAgQVNTRVJU
KGNhbGxSZXN1bHQpOworICAgIGlmICghY2FsbFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICByZXR1cm4gY2FsbFJlc3VsdC52YWx1ZSgpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0
OjppbnNwZWN0T2JqZWN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKQEAgLTQyNCw5ICs0MjAsOCBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCkKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiX3MsIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgcmVsZWFzZUZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0
aW9uID0gZmFsc2U7Ci0gICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CisgICAgYXV0
byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlv
bik7CisgICAgQVNTRVJUX1VOVVNFRChjYWxsUmVzdWx0LCBjYWxsUmVzdWx0KTsKIH0KIAogSlND
OjpKU1ZhbHVlIEluamVjdGVkU2NyaXB0OjphcnJheUZyb21WZWN0b3IoVmVjdG9yPEpTQzo6SlNW
YWx1ZT4mJiB2ZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5kZXggM2QyZGNhZTZiZDM0NmZlNDEzM2RhYTBm
MGNmNmU2ZDU3MmY1NGFjYS4uNTY4YmNhYmM2YjI5YjdlODQ2NDllODE2Y2U5NGE3MWMwM2FkMzk2
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcApAQCAtNzAsMTEgKzcwLDExIEBAIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiB9CiAKLUpTQzo6SlNWYWx1
ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNv
bnN0CitFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gSW5q
ZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUgPSBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7CiAg
ICAgSlNDOjpEZWJ1Z2dlckV2YWxFbmFibGVyIGV2YWxFbmFibGVyKHNjcmlwdFN0YXRlKTsKLSAg
ICByZXR1cm4gZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOworICAgIHJldHVybiBmdW5jdGlv
bi5jYWxsKCk7CiB9CiAKIFJlZjxKU09OOjpWYWx1ZT4gSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
Q2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uKQpAQCAtODIsMTQg
KzgyLDExIEBAIFJlZjxKU09OOjpWYWx1ZT4gSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1CiAgICAgaWYgKGhhc05vVmFsdWUoKSB8
fCAhaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKQogICAgICAgICByZXR1cm4gSlNP
Tjo6VmFsdWU6Om51bGwoKTsKIAotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAg
YXV0byByZXN1bHRKU1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9u
LCBoYWRFeGNlcHRpb24pOwotCi0gICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwotICAgIGlmICho
YWRFeGNlcHRpb24pCisgICAgYXV0byByZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoZnVuY3Rpb24pOworICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gSlNPTjo6VmFs
dWU6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7CiAKLSAgICBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHJlc3VsdEpTT05WYWx1ZSA9IHRvSW5zcGVjdG9yVmFsdWUoKm1faW5q
ZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSwgcmVzdWx0SlNWYWx1ZSk7CisgICAgUmVm
UHRyPEpTT046OlZhbHVlPiByZXN1bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVlKCptX2lu
amVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCksIHJlc3VsdC52YWx1ZSgpKTsKICAgICBp
ZiAoIXJlc3VsdEpTT05WYWx1ZSkKICAgICAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpjcmVhdGUo
bWFrZVN0cmluZygiT2JqZWN0IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4gKG11c3Qgbm90
IGJlIGxvbmdlciB0aGFuICIsIEpTT046OlZhbHVlOjptYXhEZXB0aCwgJyknKSk7CiAKQEAgLTEy
OSwxMiArMTI2LDExIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiAKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoanNGdW5jdGlvbikpOwogCi0gICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRvIHJlc3VsdEpTVmFsdWUgPSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHRKU1ZhbHVlLCByZXN1bHRKU1ZhbHVlLmlzVW5kZWZpbmVkKCkpOworICAgIGF1dG8g
cmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnZhbHVlKCkuaXNVbmRlZmluZWQoKSk7CiAKLSAgICBB
U1NFUlQoIWhhZEV4Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlvbikgeworICAgIEFTU0VS
VChyZXN1bHQpOworICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIC8vIFNpbmNlIGBjYWxsYmFj
a2AgaXMgbW92ZWQgYWJvdmUsIHdlIGNhbid0IGNhbGwgaXQgaWYgdGhlcmUncyBhbiBleGNlcHRp
b24gd2hpbGUgdHJ5aW5nIHRvCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGBKU05hdGl2ZVN0ZEZ1
bmN0aW9uYCBpbnNpZGUgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCiAgICAgICAgIGpzRnVuY3Rp
b24tPm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpLT5mdW5jdGlvbigpKG51bGxwdHIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgK
aW5kZXggMjI2ZTgxYmJkZTNmZTg4YzRlMDk3MGQ1NDFjMDFkZmVmYmFkZDg1NC4uZTJmYjg0NWFh
ZWJiNDE5YWE5MjZjMGQ2NmViNzVhM2NjMmVhN2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCkBAIC0zMSwxMSArMzEs
MTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sT2Jq
ZWN0cy5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3Rl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL05ha2VkUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CkBAIC02NCw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIGhhc0FjY2Vzc1RvSW5zcGVjdGVkU2NyaXB0U3RhdGUoKSBjb25zdDsKIAogICAgIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsK
LSAgICBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7CisgICAgRXhw
ZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmKSBjb25zdDsK
ICAgICBSZWY8SlNPTjo6VmFsdWU+IG1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCYpOwogICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nJiwgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+JiByZXN1bHRPYmplY3QsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGlu
dD4mIHNhdmVkUmVzdWx0SW5kZXgpOwogICAgIHZvaWQgbWFrZUFzeW5jQ2FsbChEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBBc3luY0NhbGxDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAppbmRleCA3NmQ5ODhjZDVkNDUyNWNlZmNiMGQwYzk4ODkyN2Y0NzBiYjlhOWE5Li43NWY2
ZDBjMDNiMmMyMjFkYWNmMjZjZGM3MjM2Y2I2MjU3MThjZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CkBAIC0xNDMsNyArMTQzLDcgQEAgU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0
ZWRTY3JpcHRTb3VyY2UoKQogICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNl
X2pzKSk7CiB9CiAKLUpTQzo6SlNPYmplY3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRl
SW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGludCBpZCkKK0V4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZSwgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IHNj
cmlwdFN0YXRlLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBKU0M6OkpTT2JqZWN0KiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVj
dGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLAogICAgIEluc3BlY3RvckV2YWx1YXRlSGFu
ZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwog
ICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFuZGxlcihzY3JpcHRTdGF0ZSwg
c291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAogICAgIENhbGxE
YXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1
bmN0aW9uVmFsdWUsIGNhbGxEYXRhKTsKQEAgLTE4OCwxNCArMTg4LDI3IEBAIEluamVjdGVkU2Ny
aXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoRXhlY1N0YXRlKiBp
bnNwZWN0ZWRFeGVjCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50
IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihpbnNwZWN0ZWRFeGVjU3RhdGUpOwotICAgIGF1dG8g
aW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlw
dFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlkKTsKLSAgICBpZiAoIWluamVjdGVkU2Ny
aXB0T2JqZWN0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHBhcnNlL2V4ZWN1
dGUgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMhIik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNc
biIsIGluamVjdGVkU2NyaXB0U291cmNlKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIGF1dG8gY3Jl
YXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwg
aW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7CisgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKKyAgICAg
ICAgYXV0byYgZXJyb3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgQVNTRVJUKGVy
cm9yKTsKKworICAgICAgICB1bnNpZ25lZCBsaW5lID0gMDsKKyAgICAgICAgdW5zaWduZWQgY29s
dW1uID0gMDsKKyAgICAgICAgYXV0byYgc3RhY2sgPSBlcnJvci0+c3RhY2soKTsKKyAgICAgICAg
aWYgKHN0YWNrLnNpemUoKSA+IDApCisgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4g
Y3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50
b1dURlN0cmluZyhpbnNwZWN0ZWRFeGVjU3RhdGUpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVt
bik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBJbmplY3RlZFNj
cmlwdCByZXN1bHQoeyBpbnNwZWN0ZWRFeGVjU3RhdGUsIGluamVjdGVkU2NyaXB0T2JqZWN0IH0s
ICZtX2Vudmlyb25tZW50KTsKKyAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoeyBpbnNwZWN0ZWRF
eGVjU3RhdGUsIGNyZWF0ZVJlc3VsdC52YWx1ZSgpIH0sICZtX2Vudmlyb25tZW50KTsKICAgICBt
X2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaWQsIHJlc3VsdCk7CiAgICAgZGlkQ3JlYXRlSW5qZWN0
ZWRTY3JpcHQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXgg
M2Y5OTljY2Y4ZjljNDlhMTg1ZGQxY2I5NGNmN2Q5NmFhZjk5ODJiYy4uN2UyMDM5OWM4YTczZjFi
YThmOWQxNDBhNGU4NjA0NDg0MGY2Y2M5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0yOSwxMCArMjks
MTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCisj
aW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OYWtlZFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTczLDcgKzc2LDcg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJj
ZSgpOwotICAgIEpTQzo6SlNPYmplY3QqIGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpK
U09iamVjdCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAogICAgIElu
c3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlw
dEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCBmNzg0Njdm
ODI4YzlmMDhhZTYzMGM1N2IyOTZhYjIwZGJmNjRmNDIwLi41YzljNDYzMTFlNmIzZGZiYTdlYzNm
MzYyMDAzN2I4ZTAyNTM2MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNjQsMTkgKzY0LDM2IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGlu
amVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
aGFzSW5qZWN0ZWRNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG5hbWUoKSk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBhdXRv
IHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLSAg
ICBpZiAoaGFkRXhjZXB0aW9uIHx8ICFyZXN1bHRWYWx1ZSB8fCAhcmVzdWx0VmFsdWUuaXNCb29s
ZWFuKCkgfHwgIXJlc3VsdFZhbHVlLmFzQm9vbGVhbigpKSB7CisgICAgYXV0byBoYXNJbmplY3Rl
ZE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxl
ZChmdW5jdGlvbik7CisgICAgQVNTRVJUKGhhc0luamVjdGVkTW9kdWxlUmVzdWx0KTsKKyAgICBp
ZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0KSB7CisgICAgICAgIGF1dG8mIGVycm9yID0gaGFz
SW5qZWN0ZWRNb2R1bGVSZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgQVNTRVJUKGVycm9yKTsKKyAg
ICAgICAgdW5zaWduZWQgbGluZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGNvbHVtbiA9IDA7Cisg
ICAgICAgIGF1dG8mIHN0YWNrID0gZXJyb3ItPnN0YWNrKCk7CisgICAgICAgIGlmIChzdGFjay5z
aXplKCkgPiAwKQorICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGlu
ZSwgY29sdW1uKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hh
c0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0LnNjcmlwdFN0
YXRlKCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0
LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCku
YXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbmplY3RNb2R1
bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5j
dGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1l
KCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmpl
Y3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpKSk7Ci0gICAgICAgIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwotICAgICAgICByZXN1bHRWYWx1ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2Vw
dGlvbikgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gcGFyc2UvZXhlY3V0
ZSAlcyEiLCBuYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCIlc1xuIiwgc291cmNlKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBhdXRvIGluamVjdE1v
ZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChm
dW5jdGlvbik7CisgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7CisgICAgICAgICAg
ICBhdXRvJiBlcnJvciA9IGluamVjdE1vZHVsZVJlc3VsdC5lcnJvcigpOworICAgICAgICAgICAg
QVNTRVJUKGVycm9yKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOworICAgICAgICAg
ICAgdW5zaWduZWQgY29sdW1uID0gMDsKKyAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gZXJyb3It
PnN0YWNrKCk7CisgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKKyAgICAgICAgICAg
ICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOworICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9y
ICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUo
KS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpKS51dGY4KCkuZGF0YSgp
LCBsaW5lLCBjb2x1bW4pOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNl
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>