<?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>79131</bug_id>
          
          <creation_ts>2012-02-21 11:07:48 -0800</creation_ts>
          <short_desc>Use V8 completion callback API to assert that V8RecursionScope is on the stack whenever invoking script</short_desc>
          <delta_ts>2012-04-03 17:28:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Rafael Weinstein">rafaelw</assigned_to>
          <cc>aa</cc>
    
    <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dslomov</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rafaelw</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561048</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-21 11:07:48 -0800</bug_when>
    <thetext>Use V8 completion callback API to assert that V8RecursionScope is on the stack whenever invoking script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561063</commentid>
    <comment_count>1</comment_count>
      <attachid>128004</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-21 11:19:04 -0800</bug_when>
    <thetext>Created attachment 128004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561095</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-21 11:46:50 -0800</bug_when>
    <thetext>Note: this probably can&apos;t be landed until http://code.google.com/p/chromium/issues/detail?id=105962 is resolved, but I&apos;d like to get some feedback on the approach here (particularly for the inspector changes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561262</commentid>
    <comment_count>3</comment_count>
      <attachid>128004</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 15:12:21 -0800</bug_when>
    <thetext>Comment on attachment 128004
Patch

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

&gt; Source/WebCore/bindings/v8/V8RecursionScope.h:73
&gt; +    class NoPageAuthorScriptWillRun {

I haven&apos;t tracked down all these NDEBUG statements, but it would be good to assert that we actually don&apos;t run any author scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561264</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 15:13:20 -0800</bug_when>
    <thetext>This approach looks pretty reasonable.  It&apos;s going to be tricky to aways get the &quot;page author&quot; bit right, but I think we can manage it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561290</commentid>
    <comment_count>5</comment_count>
      <attachid>128004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-21 15:34:41 -0800</bug_when>
    <thetext>Comment on attachment 128004
Patch

Attachment 128004 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11560280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561321</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-21 16:05:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 128004 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128004&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8RecursionScope.h:73
&gt; &gt; +    class NoPageAuthorScriptWillRun {
&gt; 
&gt; I haven&apos;t tracked down all these NDEBUG statements, but it would be good to assert that we actually don&apos;t run any author scripts.

How might one identify author scripts separately from, say, inspector scripts? The current code assumes that any particular invocation is either one or the other based on its place in the C++ code. But I&apos;d much prefer something more reliable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561338</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 16:14:56 -0800</bug_when>
    <thetext>Hum...  Maybe if you try to create a page author scope inside of a non-page author scope, that should fire an ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561339</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 16:16:16 -0800</bug_when>
    <thetext>My though is that this approach seems somewhat error-prone, and I&apos;m looking for ways to help us not screw this bit up in the future.  If there isn&apos;t a way, that&apos;s ok too but it just means we need to worry about this mechanism more in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561348</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-21 16:18:41 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; My though is that this approach seems somewhat error-prone, and I&apos;m looking for ways to help us not screw this bit up in the future.  If there isn&apos;t a way, that&apos;s ok too but it just means we need to worry about this mechanism more in the future.

Yeah, the trouble is that it itself is trying to fix an error-prone situation (where someone calls out to author script without instantiating a V8RecursionScope).  Currently, there don&apos;t seem to be any such calls, but the purpose of this code would be to have something besides code review preventing new calls from appearing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564530</commentid>
    <comment_count>10</comment_count>
      <attachid>128778</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-24 11:55:11 -0800</bug_when>
    <thetext>Created attachment 128778
Fix release build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564533</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-24 11:57:08 -0800</bug_when>
    <thetext>Pavel, I&apos;d be interested on your thoughts on the changes in ScriptDebugServer.cpp. Does this make any sense to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588441</commentid>
    <comment_count>12</comment_count>
      <attachid>133957</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-26 18:35:27 -0700</bug_when>
    <thetext>Created attachment 133957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588454</commentid>
    <comment_count>13</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-26 18:53:22 -0700</bug_when>
    <thetext>Hey all,

I&apos;ve picked up this patch from Adam &amp; added a bit. I&apos;d like a pre-review from abarth &amp; fishd.

Backing up a bit: the idea here is that there are basically three kinds of script invocations that C++ makes into renderer script contexts.

1) Calling &quot;author&quot; script from a frame
2) Calling &quot;author&quot; script from web workers
3) Calling &quot;internal&quot; script (non-page script -- this is generally setup/teardown work that happens in JS).

With (1), we want to make sure that inspector before/after work is done (instrumenting, etc...)

With (1) &amp; (2) , we need look for end-of-microtask work to do.

With (3),  we *don&apos;t* want to do any supplementary work.

The goal of this patch is require every script invocation to declare its intent (either by calling (effectively through V8Proxy to invoke page script) or by stack allocating an object. If a script invocation is added with one of these, we&apos;d like a debug ASSERT to fail.

No, this isn&apos;t perfect. These &quot;annotations&quot; aren&apos;t asserting anything, they are declaring usage type. If someone uses the wrong type, we won&apos;t get a warning. The goal is just to get anyone adding new invocations to think about what type it is.

Does this make sense?

----

Questions:
-The extension&apos;s system needs to invoke script callbacks of type (1). I&apos;ve added a new call to WebFrame for this, but it&apos;s a bit strange because it bypasses the frame&apos;s scriptController. What&apos;s a better way to do this?

-The WebScriptScope::BypassFinalizationPhase glue object seems a tad unfortunate. Is there a cleaner way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588460</commentid>
    <comment_count>14</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-26 18:57:40 -0700</bug_when>
    <thetext>Also, here&apos;s the beginnings of a patch of what this would look like from the chromium renderer side:

https://chromiumcodereview.appspot.com/9865015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588575</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-26 22:45:58 -0700</bug_when>
    <thetext>&gt; I&apos;d like a pre-review from abarth &amp; fishd.

If I don&apos;t get to this tomorrow morning, please feel free to remind me.  I&apos;m too tired to think about it clearly at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588788</commentid>
    <comment_count>16</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-27 05:09:45 -0700</bug_when>
    <thetext>Sorry for making this more confusing. The sentence above should have read:

&quot;If a script invocation is added WITHOUT one of these, we&apos;d like a debug ASSERT to fail..&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589242</commentid>
    <comment_count>17</comment_count>
      <attachid>133957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 13:59:41 -0700</bug_when>
    <thetext>Comment on attachment 133957
Patch

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

&gt; Source/WebCore/bindings/v8/DateExtension.cpp:93
&gt; +    V8RecursionScope::BypassFinalizationPhase scope;

What does BypassFinalizationPhase mean?  Maybe V8RecursionScope::InternalScript (to borrow a name from Comment #13 )?

&gt; Source/WebKit/chromium/public/platform/WebScriptScope.h:36
&gt; +namespace WebScriptScope {

This shouldn&apos;t be in platform.  It should be up one level in the directory structure.  Platform doesn&apos;t have any notion of script.

&gt; Source/WebKit/chromium/public/platform/WebScriptScope.h:38
&gt; +class BypassFinalizationPhase {

I&apos;m worried that clients of this API won&apos;t understand how to use it correctly.  Why does the embedder know about &quot;finalization phases&quot; or &quot;internal scripts&quot;?  Is this required whenever you call into V8, or only when you call via WebFrame?  Perhaps and enum parameter on executeScriptAndReturnValue and friends would be better?  It depends if you can name things in a way that makes sense to the embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589247</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 14:03:25 -0700</bug_when>
    <thetext>From https://chromiumcodereview.appspot.com/9865015/ it looks like you need to use the recursion scope class whenever you call into V8.  Does this include calls into V8 from the network stack?  What about in single-process mode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589248</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 14:04:22 -0700</bug_when>
    <thetext>It&apos;s unfortunate that everyone who needs to use the V8 API needs to also talk to WebKit.  Is there no way to keep this state in V8 so that folks can interact with V8 without needing to interact with WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589450</commentid>
    <comment_count>20</comment_count>
      <attachid>134169</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-27 16:56:14 -0700</bug_when>
    <thetext>Created attachment 134169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589458</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 17:00:19 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589459</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 17:01:27 -0700</bug_when>
    <thetext>&gt; It&apos;s unfortunate that everyone who needs to use the V8 API needs to also talk to WebKit.

rafaelw and I discussed this aspect of the change.  This only affects folks who interact with v8::Contexts created by WebKit.  It seems reasonably (although perhaps not ideal) that folks who interact with v8::Contexts created by WebKit need to interact further with WebKit when using those contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589464</commentid>
    <comment_count>23</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-27 17:05:05 -0700</bug_when>
    <thetext>Ok. This is ready for a real review. Note a few things:

The assert in WebKit::assertV8RecursionScope isn&apos;t enabled, as this patch is the first step of a three sided patch. Step two will be landing proper chromium usage of WebScriptInvocation &amp; calling through WebFrame::callFunctionAndReturnValue for extension API invocations.

Also, ScriptController:callFunction() doesn&apos;t perform the canExecuteScript check as this would break extension apis who are allowed to make these calls even if (for instance) iframe sandboxing is requested. Also, there&apos;s an outstanding bug (crbug.com/112892) that an extension context which is paused on a breakpoint may interact badly with an extension event or API callback. This needs further investigation as to the proper solution -- and this patch makes the situation no worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589685</commentid>
    <comment_count>24</comment_count>
      <attachid>134169</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-27 23:47:42 -0700</bug_when>
    <thetext>Comment on attachment 134169
Patch

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

So, I have some really minor comments below.  The only one that&apos;s really of any consequence is about ScriptController::callFunction (and the patching WebKit API) being a trap in that it doesn&apos;t check canExecuteScripts.  As written, this seems likely to lead to bugs where we execute JavaScript even if JavaScript is supposed to be disabled.  We probably just need a better name.

Although I&apos;m marking this patch R-, please feel free to land everything in here except the WebKit API changes and ScriptController::callFunction with r=me.  If you&apos;d like to do that, that will simplify the remaining patch.  (You should also feel free to continue to iterate on the full patch if that&apos;s easier for you.)

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:168
&gt; +ScriptValue ScriptController::callFunction(v8::Handle&lt;v8::Function&gt; function,
&gt; +                                                    v8::Handle&lt;v8::Object&gt; receiver,
&gt; +                                                    int argc,
&gt; +                                                    v8::Handle&lt;v8::Value&gt; argv[])

You can just combine this into one line.

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:171
&gt; +    // FIXME: This should probably perform the same checks to canExecuteScripts &amp; isPaused that happen in ScriptController::executeScript.
&gt; +    return ScriptValue(m_proxy-&gt;callFunction(function, receiver, argc, argv));

In the bug you said that we shouldn&apos;t do that because extensions want to execute script in sandboxed iframes.  Should we name this function something that indicates that we&apos;re skilling the canExecuteScripts check?  callFunctionEvenIfScriptsAreDisabled?

&gt; Source/WebCore/bindings/v8/ScriptFunctionCall.cpp:136
&gt; +        V8RecursionScope recursionScope(getScriptExecutionContext());

getScriptExecutionContext() should be called scriptExecutionContext(), but that&apos;s a problem for a future patch to solve.

&gt; Source/WebCore/bindings/v8/V8RecursionScope.h:40
&gt; +// C++ Calls into script contexts which are &quot;owned&quot; by WebKit (initialized in

Calls -&gt; calls

&gt; Source/WebCore/bindings/v8/V8RecursionScope.h:41
&gt; +// WebKit.cpp) must declare their type:

So, this comment isn&apos;t quite right.  The script contexts (i.e., v8::Context) aren&apos;t initialized in WebKit.cpp.  The whole V8 engine is initialized there.  That means this change affects V8 for the whole process.  I still think that&apos;s ok, but we should clarify the comment.

&gt; Source/WebKit/chromium/public/WebFrame.h:284
&gt; +    // Call the function with the given receiver and arguments.
&gt; +    virtual v8::Handle&lt;v8::Value&gt; callFunctionAndReturnValue(
&gt; +        v8::Handle&lt;v8::Function&gt;,
&gt; +        v8::Handle&lt;v8::Object&gt;,
&gt; +        int argc,
&gt; +        v8::Handle&lt;v8::Value&gt; argv[]) = 0;

It&apos;s really unclear that this function skips the canExecuteScripts check, unlike executeScriptAndReturnValue, which seems very similar.  If we find a good name for the ScriptController method, that will likely guide us towards a good name here too.

&gt; Source/WebKit/chromium/public/WebScriptInvocation.h:2
&gt; + * Copyright (C) 2009 Google Inc. All rights reserved.

2009 -&gt; 2012

&gt; Source/WebKit/chromium/public/WebScriptInvocation.h:36
&gt; +namespace WebScriptInvocation {

Is this a common pattern in the WebKit API?  I&apos;m still learning about the idioms of the WebKit API, so we might want to double-check with fishd about what idiom he&apos;d recommend here.

&gt; Source/WebKit/chromium/public/WebScriptInvocation.h:46
&gt; +    Impl* m_impl;

Can we use a WebPrivateOwnPtr to avoid calling delete manually?

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:901
&gt; +                                                              v8::Handle&lt;v8::Object&gt; receiver,
&gt; +                                                              int argc,
&gt; +                                                              v8::Handle&lt;v8::Value&gt; argv[])

Bad indent.

&gt; Source/WebKit/chromium/src/WebScriptInvocation.cpp:48
&gt; +#ifndef NDEBUG
&gt; +class BypassMicrotaskCheckpoint::Impl {
&gt; +public:
&gt; +    Impl() { }
&gt; +    ~Impl() { }
&gt; +    WebCore::V8RecursionScope::BypassMicrotaskCheckpoint m_scope;
&gt; +};
&gt; +#endif

Why not just have BypassMicrotaskCheckpoint::Impl inherit from WebCore::V8RecursionScope::BypassMicrotaskCheckpoint ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590715</commentid>
    <comment_count>25</comment_count>
      <attachid>134466</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-28 18:38:42 -0700</bug_when>
    <thetext>Created attachment 134466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590719</commentid>
    <comment_count>26</comment_count>
      <attachid>134467</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-28 18:41:30 -0700</bug_when>
    <thetext>Created attachment 134467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590733</commentid>
    <comment_count>27</comment_count>
      <attachid>134467</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-28 18:55:11 -0700</bug_when>
    <thetext>Comment on attachment 134467
Patch

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

&gt; Source/WebKit/chromium/public/WebFrame.h:280
&gt; +    // Call the function with the given receiver and arguments, bypassing
&gt; +    // canExecut()

canExecut() &lt;-- Looks like the comment got cut off a bit.

&gt; Source/WebKit/chromium/public/WebFrame.h:285
&gt; +    virtual v8::Handle&lt;v8::Value&gt; callFunctionEvenIfScriptDisabled(
&gt; +        v8::Handle&lt;v8::Function&gt;,
&gt; +        v8::Handle&lt;v8::Object&gt;,
&gt; +        int argc,
&gt; +        v8::Handle&lt;v8::Value&gt; argv[]) = 0;

@fishd: Do you have any thoughts on this function?  The issue is that for WebKit-related v8::Contexts, we need to route function calls through WebKit for two reasons: (1) to avoid confusing the inspector and (2) to make sure we&apos;re correctly running microtasks when the stack unwinds.

The complication that arises is that the extension system sometimes needs to call functions even when script is disabled (e.g., to run content scripts in sandboxed iframes).  Rafael talked this over for a while, and the best we could come up with was this somewhat-goofy sounding name.  Do you think we&apos;re doing the right thing here or is there a better way?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590740</commentid>
    <comment_count>28</comment_count>
      <attachid>134475</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-28 19:01:51 -0700</bug_when>
    <thetext>Created attachment 134475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591279</commentid>
    <comment_count>29</comment_count>
      <attachid>134611</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-29 10:16:18 -0700</bug_when>
    <thetext>Created attachment 134611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591405</commentid>
    <comment_count>30</comment_count>
      <attachid>134611</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-29 12:00:15 -0700</bug_when>
    <thetext>Comment on attachment 134611
Patch

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

&gt; Source/WebKit/chromium/public/WebScriptInvocation.h:38
&gt; +namespace WebScriptInvocation {

nit: nested namespaces are uncommon in the webkit API

how do you plan to use BypassMicrotaskCheckpoint from chromium?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591417</commentid>
    <comment_count>31</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-29 12:09:12 -0700</bug_when>
    <thetext>@fishd: here&apos;s the beginning of the chromium side patch: https://chromiumcodereview.appspot.com/9865015

Also, do you have a suggestion about using nested namespace?  Would a single class (WebScriptInvocationBypassMicrotaskCheckpoint? BypassMicrotaskCheckpoint?) be preferrable? I&apos;m hoping that we won&apos;t ever need to allocate a &quot;naked&quot; WebScriptInvocation (*do* microtask checkpoint), but we may.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591868</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-29 21:42:39 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; @fishd: here&apos;s the beginning of the chromium side patch: https://chromiumcodereview.appspot.com/9865015
&gt; 
&gt; Also, do you have a suggestion about using nested namespace?  Would a single class (WebScriptInvocationBypassMicrotaskCheckpoint? BypassMicrotaskCheckpoint?) be preferrable? I&apos;m hoping that we won&apos;t ever need to allocate a &quot;naked&quot; WebScriptInvocation (*do* microtask checkpoint), but we may.

Sorry for being unclear.  We normally just define a class within a class in cases like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591869</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-29 21:43:32 -0700</bug_when>
    <thetext>One concern I have is that this seems like quite a complicated aspect of V8 DOM bindings to expose to the embedder.  Please document the feature so one doesn&apos;t need to study WebCore to understand what it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592388</commentid>
    <comment_count>34</comment_count>
      <attachid>134858</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-30 12:16:28 -0700</bug_when>
    <thetext>Created attachment 134858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592481</commentid>
    <comment_count>35</comment_count>
      <attachid>134876</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-30 14:03:15 -0700</bug_when>
    <thetext>Created attachment 134876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592482</commentid>
    <comment_count>36</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-30 14:04:19 -0700</bug_when>
    <thetext>API Class now called WebScopedMicrotaskSuppression, per offline discussion with @fishd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592483</commentid>
    <comment_count>37</comment_count>
      <attachid>134877</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-03-30 14:05:37 -0700</bug_when>
    <thetext>Created attachment 134877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593892</commentid>
    <comment_count>38</comment_count>
      <attachid>134877</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-04-02 15:02:04 -0700</bug_when>
    <thetext>Comment on attachment 134877
Patch

I didn&apos;t review all of the WebCore changes in detail.  That&apos;d surely be better
left to someone more familiar with the V8 bindings.


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

&gt; Source/WebKit/chromium/public/WebScopedMicrotaskSuppression.h:32
&gt; +#define WebScopedMicrotaskSuppressionn_h

oops

&gt; Source/WebKit/chromium/public/WebScopedMicrotaskSuppression.h:38
&gt; +// This class wraps V8RecursionScope::BypassMicrotaskCheckpoint. Please

Please considering duplicating some of that information here.  Two reasons:

1- People who hack on WebCore are not necessarily likely to know to fixup comments
in Chromium&apos;s WebKit API headers.

2- People who read Chromium&apos;s WebKit API headers should not need to look into WebCore
to understand the API.

&gt; Source/WebKit/chromium/public/WebScopedMicrotaskSuppression.h:42
&gt; +    WEBKIT_EXPORT WebScopedMicrotaskSuppression();

There is a convention of not exporting constructors and destructors through the API.
Please see WebScopedUserGesture.

&gt; Source/WebKit/chromium/src/WebScopedMicrotaskSuppression.cpp:42
&gt; +    Impl() { }

nit: why bother defining constructor and destructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594654</commentid>
    <comment_count>39</comment_count>
      <attachid>135368</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-03 11:09:57 -0700</bug_when>
    <thetext>Created attachment 135368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594657</commentid>
    <comment_count>40</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-03 11:14:07 -0700</bug_when>
    <thetext>@fishd: All requested changes made. Out of curiosity: why is it desirable to avoid exposing ctors/dtors to the API?

@abarth: Can I get an r+ on the full patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594958</commentid>
    <comment_count>41</comment_count>
      <attachid>135368</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 15:29:36 -0700</bug_when>
    <thetext>Comment on attachment 135368
Patch

The WebCore changes look good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594960</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 15:31:24 -0700</bug_when>
    <thetext>Looks like fishd was happy with the API changes, so I think we&apos;re all set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595054</commentid>
    <comment_count>43</comment_count>
      <attachid>135368</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 17:28:42 -0700</bug_when>
    <thetext>Comment on attachment 135368
Patch

Clearing flags on attachment: 135368

Committed r113111: &lt;http://trac.webkit.org/changeset/113111&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595055</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 17:28:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128004</attachid>
            <date>2012-02-21 11:19:04 -0800</date>
            <delta_ts>2012-02-24 11:55:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120221111902.patch</filename>
            <type>text/plain</type>
            <size>35238</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY4ZmZkZWM3NDkyMjlh
N2NkY2M5MzM2MThhNTc4M2U4ZGFkYTRmMy4uZjQ4MzI2MWUyNjhiYWE4OGI3NGY5NDVkOTRkOWNm
M2Y4MjAzYTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTAyLTIxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0aW9u
IGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRoZSBz
dGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRW5kLW9mLW1pY3JvdGFzayB3b3JrIChjYW5jZWxsaW5nIG91
dHN0YW5kaW5nIElEQiB0cmFuc2FjdGlvbnMsCisgICAgICAgIGRlbGl2ZXJpbmcgRE9NIG11dGF0
aW9ucykgZGVwZW5kIG9uIFY4UmVjdXJzaW9uU2NvcGUgYmVpbmcgb24gdGhlCisgICAgICAgIHN0
YWNrIHdoZW5ldmVyIGEgY2FsbCBpcyBtYWRlIGludG8gc2NyaXB0LiBWOCBwcm92aWRlcyBhIGNv
bXBsZXRpb24KKyAgICAgICAgY2FsbGJhY2sgQVBJIHRoYXQgY291bGQgYmUgdXNlZCB0byBob29r
IHRoZXNlICJlbmQtb2YtbWljcm90YXNrIgorICAgICAgICBldmVudHMsIGJ1dCBpdCB0dXJucyBv
dXQgdGhhdCBXZWJLaXQgY2FsbHMgaW50byBzY3JpcHQgZm9yIHZhcmlvdXMKKyAgICAgICAgcmVh
c29ucyBiZXNpZGVzIHJ1bm5pbmcgc2NyaXB0IGZyb20gdGhlIHBhZ2UuIEZvciBleGFtcGxlLCBj
b25zdHJ1Y3RpbmcKKyAgICAgICAgd3JhcHBlciBvYmplY3RzIGZyb20gZnVuY3Rpb24gdGVtcGxh
dGVzIGNvdW50cyBhcyAicnVubmluZyBzY3JpcHQiLAorICAgICAgICB5ZXQgaXQncyBub3QgYXBw
cm9wcmlhdGUgdG8gcnVuIHRoaXMgY2FsbGJhY2sgZXZlcnkgdGltZSBhIEpTIHdyYXBwZXIKKyAg
ICAgICAgaXMgY29uc3RydWN0ZWQuCisKKyAgICAgICAgSW5zdGVhZCwgdGhpcyBwYXRjaCBtYWtl
cyB1c2Ugb2YgdGhlIFY4IGNvbXBsZXRpb24gY2FsbGJhY2sgbWVjaGFuaXNtCisgICAgICAgIG9u
bHkgaW4gZGVidWcgbW9kZSwgdG8gYXNzZXJ0IHRoYXQgZWl0aGVyIGEgVjhSZWN1cnNpb25TY29w
ZSAod2hlbgorICAgICAgICBjYWxsaW5nIGF1dGhvciBzY3JpcHQpIG9yIGEgVjhSZWN1cnNpb25T
Y29wZTo6Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1bgorICAgICAgICAod2hlbiBjYWxsaW5nIG5v
bi1hdXRob3Igc2NyaXB0KSBpcyBvbiB0aGUgc3RhY2sgd2hlbiBWOCB0aGlua3MgaXQncworICAg
ICAgICBmaW5pc2hlZCBleGVjdXRpbmcgc2NyaXB0LiBUaGlzIHJlcXVpcmVzIGRyb3BwaW5nIE5v
UGFnZUF1dGhvclNjcmlwdFdpbGxSdW4KKyAgICAgICAgb2JqZWN0cyBpbiBhIGJ1bmNoIG9mIHBs
YWNlcywgbW9zdCBub3RhYmx5IHRoZSBJbnNwZWN0b3IuCisgICAgICAgIE5vdGUgdGhhdCBpbiBy
ZWxlYXNlIG1vZGUsIHRoaXMgY2xhc3MgZG9lcyBub3RoaW5nIGFuZCB0aHVzIHNob3VsZCBiZQor
ICAgICAgICBvcHRpbWl6ZWQgYXdheS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGV4aXN0aW5n
IHRlc3RzIGNvdmVyIHRoaXMgY29kZSAod2hlbiBydW4gaW4gZGVidWcgbW9kZSkuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRlbnNp
b246OnNldEFsbG93U2xlZXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFk
ZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oOiBBZGRl
ZC4gRmFjdG9yZWQgb3V0IG9mIFY4QmluZGluZy5oIHRvIGF2b2lkIGFuIGluY2x1ZGUgY3ljbGUu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNhZmVBbGxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxE
ZWJ1Z2dlck1ldGhvZCk6IEZhY3RvcmVkIG91dCBhCisgICAgICAgIGhlbHBlciBtZXRob2QgdGhh
dCB3cmFwcyB2ODo6RnVuY3Rpb246OkNhbGwgd2l0aCBOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVu
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHRE
ZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6
IEFkZGVkIG5ldyByZWN1cnNpb24gY291bnRlcnMgKG9ubHkgcHJlc2VudCBpbiBkZWJ1ZyBidWls
ZHMpLgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmludGVybmFs
U2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRlY3JlbWVudEludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVj
dXJzaW9uU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhS
ZWN1cnNpb25TY29wZTo6cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoVjhSZWN1cnNpb25TY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpwcm9wZXJseVVzZWQpOgor
ICAgICAgICAoTm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpW
OFJlY3Vyc2lvblNjb3BlOjpOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuOjpOb1BhZ2VBdXRob3JT
Y3JpcHRXaWxsUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFn
ZUF1dGhvclNjcmlwdFdpbGxSdW46On5Ob1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20u
Y3BwOgorCiAyMDEyLTAyLTIxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbY3Jhc2hdIHVwb24gc3R5bGUgbW9kaWZpY2F0aW9u
IGFmdGVyIG5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGUyOTg2YWNl
MGE3NWIzMGU1NzU3ZmE3MzQ0NjBjNmRmZGQ5ZTE5Mi4uY2M4NTJkODM0NGI0NWM5NDZlYjYyNTNh
MWNmYjFhNzYxMDEyMDA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0wMi0yMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBVc2UgVjggY29tcGxldGlvbiBjYWxsYmFjayBBUEkgdG8gYXNzZXJ0IHRoYXQgVjhSZWN1
cnNpb25TY29wZSBpcyBvbiB0aGUgc3RhY2sgd2hlbmV2ZXIgaW52b2tpbmcgc2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTEzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYktpdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmFzc2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZSk6IEluIGRlYnVnIGJ1aWxkcywg
YWRkIGFzc2VydFY4UmVjdXJzaW9uU2NvcGUgYXMgYSBWOCBjb21wbGV0aW9uIGNhbGxiYWNrLgor
ICAgICAgICAoV2ViS2l0OjpzaHV0ZG93bik6IFJlbW92ZSB0aGUgY29tcGxldGlvbiBjYWxsYmFj
ay4KKwogMjAxMi0wMi0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIFdlYiBJbnNwZWN0b3I6IHNldCBicmVha3BvaW50L3BhdXNlIGRvZXNu
J3Qgd29yayB3aGVuIHdvcmtlciBpcyBpbiBhIHRpZ2h0IGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDA0
MWY4NjgzNGQ1NzQxN2Q4MDk1YTVmZDE0YjNiODdjY2M4Y2Q0ZDkuLmU0MjQzMGRkOTZlMjMxZmE2
YmIyMjQzYmU0MWM2NzAwYzFjMGNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTM4Nyw2ICsxMzg3LDcg
QEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oIFwKICAgICAgICAgYmluZGluZ3Mv
djgvUmV0YWluZWRPYmplY3RJbmZvLmggXAorICAgICAgICBiaW5kaW5ncy92OC9TYWZlQWxsb2Nh
dGlvbi5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAg
ICBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2NzQ2NGRlZDM3
NDNmYTAxMGUzMmFkZDQ5YWZkZTA3YTRhNjg4OGJmLi4zZmI2ZjhlOGU3NmI2NzU0Y2FhNjJlM2Y3
M2U0OWY4ZGM1OGU3YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjkyLDYgKzE2OTIsNyBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9SZXRhaW5lZE9iamVjdEluZm8uaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2Fm
ZUFsbG9jYXRpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9u
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAppbmRleCAzMzI4MjhiMjJhMzc4
ZDQ5ZWFkMGFkZTcyM2ZhN2I4NGJiOTQ0ZWI4Li4yY2QzMGNjMmE2Yjg5MGNiNDJiZWU3NGViYTIy
OWVlMDljZGFkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRl
RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5z
aW9uLmNwcApAQCAtMzEsOCArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRhdGVFeHRlbnNpb24uaCIKIAotI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOEhp
ZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJl
Y3Vyc2lvblNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODksNiArOTAsNyBA
QCB2b2lkIERhdGVFeHRlbnNpb246OnNldEFsbG93U2xlZXAoYm9vbCBhbGxvdykKIAogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2WzFdOwogICAgIGFyZ3ZbMF0gPSB2ODo6Qm9vbGVhbjo6
TmV3KCFhbGxvdyk7CisgICAgVjhSZWN1cnNpb25TY29wZTo6Tm9QYWdlQXV0aG9yU2NyaXB0V2ls
bFJ1biBzY29wZTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3Qoc2xlZXBGdW5j
dGlvbkhhbmRsZSktPkNhbGwodjg6Ok9iamVjdDo6TmV3KCksIDEsIGFyZ3YpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cAppbmRleCAxOGY3ZGY3ZWU0MjU0MDEwYzFkNzE2MTk3YTRiYjRhNmJmN2M1MDk2Li5mYjY3MjZi
MzkyZWNhZTI3NWY4ZGRmNDMwOTY5MmJiMzdiMzUyMGI0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTAwLDcgKzEwMSwxMSBAQCB2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIs
IFBhZ2UqIHBhZwogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBzaGVsbC0+
Y29udGV4dCgpOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBnZXRTY3JpcHRzRnVuY3Rp
b24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgp
LT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3JpcHRzIikpKTsKICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gYXJndltdID0geyBjb250ZXh0LT5HZXREYXRhKCkgfTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlOwor
ICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1
biBzY29wZTsKKyAgICAgICAgdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rpb24tPkNhbGwobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgfQogICAgIGlmICh2YWx1ZS5Jc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIXZhbHVlLT5Jc1VuZGVmaW5lZCgpICYm
IHZhbHVlLT5Jc0FycmF5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2FmZUFsbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NhZmVBbGxv
Y2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVlZmU4MWNjNTU0MWMwYmNmZjQ3Mzk1NWRlNWI3NzlhOTVj
NjI1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NhZmVB
bGxvY2F0aW9uLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
I2lmbmRlZiBTYWZlQWxsb2NhdGlvbl9oCisjZGVmaW5lIFNhZmVBbGxvY2F0aW9uX2gKKworI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKKworI2lu
Y2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2FmZUFsbG9jYXRp
b24geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5l
d0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPik7CisgICAgc3RhdGljIGlubGluZSB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVt
cGxhdGU+KTsKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdKTsKK307CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlv
bjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uKQoreworICAg
IGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9i
amVjdD4oKTsKKyAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOworICAgIFY4UmVj
dXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4gc2NvcGU7CisgICAgcmV0dXJu
IGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOworfQorCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2Fm
ZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBv
YmplY3RUZW1wbGF0ZSkKK3sKKyAgICBpZiAob2JqZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0b3JNb2Rl
IGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpOb1BhZ2VBdXRob3JTY3Jp
cHRXaWxsUnVuIHNjb3BlOworICAgIHJldHVybiBvYmplY3RUZW1wbGF0ZS0+TmV3SW5zdGFuY2Uo
KTsKK30KKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIGludCBhcmdjLCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBDb25zdHJ1Y3Rvck1vZGUg
Y29uc3RydWN0b3JNb2RlOworICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlw
dFdpbGxSdW4gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZShhcmdjLCBh
cmd2KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2FmZUFsbG9j
YXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCA4ZGU5NTUzN2FkN2YyY2ZkMWFmNjRmODJlOWRhZGZhOGQyN2RjOWRjLi5mMGYy
MTIyMzVmZDM3ZjE1MzJlOTIwZWQ4ZGZkZjNhMDJmNDM1ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjIsNiArNjIsNyBAQAog
I2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhOUE9iamVjdC5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5j
bHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTI0NSw4ICsyNDYsMTAgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBz
b3VyY2UgPSB2ODo6U3RyaW5nOjpOZXcoImlmIChnYykgZ2MoKTsiKTsKICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUgPSB2ODo6U3RyaW5nOjpOZXcoImdjIik7CiAgICAgICAgIHY4
OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShzb3VyY2Us
IG5hbWUpOwotICAgICAgICBpZiAoIXNjcmlwdC5Jc0VtcHR5KCkpCisgICAgICAgIGlmICghc2Ny
aXB0LklzRW1wdHkoKSkgeworICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6Tm9QYWdlQXV0
aG9yU2NyaXB0V2lsbFJ1biBzY29wZTsKICAgICAgICAgICAgIHNjcmlwdC0+UnVuKCk7CisgICAg
ICAgIH0KICAgICB9CiAgICAgdjhDb250ZXh0LkRpc3Bvc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIzYjcx
ZjU4Yjk5ZjAzMmYzOWI2YTY1MDRjODEwZjBlNWI1Li41MTg3YjY4YmM0MmVhZWIwMmQxNjRiODJl
MDQyYTQ1OTZhYmNiMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU3LDYgKzU4LDEz
IEBAIHByaXZhdGU6CiAKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2
ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdj
LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoZnVuY3Rpb25OYW1lKSkpOworICAg
IFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4gc2NvcGU7CisgICAg
cmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3Yp
OworfQorCiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9w
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKERvbnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJl
YWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKQEAgLTEyOSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4
Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6
U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJn
dik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhv
ZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAsIGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5J
bnQzMlZhbHVlKCkpOwogfQogCkBAIC0xNDEsOSArMTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBh
dXNlT24KICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldygic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkludDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZSkgfTsKLSAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDEsIGFyZ3YpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYs
MjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVz
ZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJp
bmc6Ok5ldygic3RlcEludG9TdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2Fs
bChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRo
b2QoInN0ZXBJbnRvU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7
CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAg
ICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE92ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAg
ICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBj
YWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdmVyU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29u
dGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1
bmN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24i
KSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3Rh
dGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAx
LCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwg
YXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBA
IGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBj
b250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6
R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5j
dGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhu
ZXdDb250ZW50KSwgdjhCb29sZWFuKHByZXZpZXcpIH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5
Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHY4cmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KSwgMywgYXJndik7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVi
dWdnZXJNZXRob2QoInNldFNjcmlwdFNvdXJjZSIsIDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRj
aC5IYXNDYXVnaHQoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2Ug
PSB0cnlDYXRjaC5NZXNzYWdlKCk7CiAgICAgICAgIGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBA
IC0yNTUsOSArMjU3LDggQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNl
KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNj
cmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVz
ZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5j
dGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxG
cmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJN
ZXRob2QoImN1cnJlbnRDYWxsRnJhbWUiLCAxLCBhcmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVu
dENhbGxGcmFtZVY4LklzRW1wdHkoKSk7CiAgICAgaWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklz
T2JqZWN0KCkpCkBAIC0zNTUsNiArMzU2LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFu
ZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAg
ICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUg
PSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRp
b25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAg
ICAgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4gc2Nv
cGU7CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
OjpDYXN0KGV4Y2VwdGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwog
ICAgICAgICAgICAgfQogCkBAIC0zODksNiArMzkxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6
Q29udGV4dD4gZGVidWdnZXJDb250ZXh0ID0gdjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKTsK
ICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQp
OwogICAgICAgICBTdHJpbmcgZGVidWdnZXJTY3JpcHRTb3VyY2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oRGVidWdnZXJTY3JpcHRTb3VyY2VfanMpLCBzaXplb2YoRGVidWdnZXJTY3Jp
cHRTb3VyY2VfanMpKTsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6Tm9QYWdlQXV0aG9yU2Ny
aXB0V2lsbFJ1biByZWN1cnNpb25TY29wZTsKICAgICAgICAgbV9kZWJ1Z2dlclNjcmlwdC5zZXQo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5n
KGRlYnVnZ2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZGU4NDY1MTQwMTFl
MTc1MWZkNzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYxMjlkZTBlNDBiZWZhYmIwMTg3YThh
Nzg1NDUxODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlz
cGF0Y2hEaWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAgICAgdm9pZCBlbnN1cmVEZWJ1Z2dl
clNjcmlwdENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxs
RGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1f
cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9kZWJ1
Z2dlclNjcmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
CmluZGV4IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJlOWY5YzUwNjE1M2MuLmY1MTEwODcw
YTYyYjkxOTRkMmUyYzNhNDdhYmExYzlhZWM2YmQyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMzEsMTIgKzMxLDEzIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVj
dXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8djgu
aD4KQEAgLTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpj
YWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFyZ3Nb
aV0gPSBtX2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCks
IGFyZ3MuZ2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB7Cisg
ICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwg
bV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB9CiAgICAgaWYgKCFzY29wZS5z
dWNjZXNzKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApp
bmRleCA0ZmQ2NzJmNDU4MTg0ZDg2ZDJkODI3OWQ2ZTZkYWZlNmQzMzM5OTIyLi5hMDc4NGNkOTQ0
YTI1M2U1Y2FiYTYxZGM0NjYzMGExODVhMmMxZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHAKQEAgLTU1LDYgKzU1LDkgQEAgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIDog
bV9kb21EYXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9k
ZTo6Q3JlYXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQorI2lmbmRlZiBO
REVCVUcKKyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgwKQorI2VuZGlmCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggMGJiNWU5MzZi
Mzc5NzUzZTE3ZGJlOTQ0NTdhNmQ0YTM1ZDBiNjRhZS4uNTNhZTk0NTIxODEyMzI4MDE2NzZmMjQ2
ODYwY2EyYTFiMmE2MmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgK
QEAgLTE1Miw2ICsxNTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJV
RwogICAgICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1f
Z2xvYmFsSGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0K
KyAgICAgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJl
dHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAgICAgICBpbnQgZGVj
cmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQogI2VuZGlmCiAKICAgICBwcml2YXRlOgpAQCAt
MTc3LDYgKzE4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBOREVCVUcKICAg
ICAgICAgR2xvYmFsSGFuZGxlTWFwIG1fZ2xvYmFsSGFuZGxlTWFwOworICAgICAgICBpbnQgbV9p
bnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMjA2LDM4
ICsyMTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9wcmV2aW91czsK
ICAgICB9OwogCi0gICAgY2xhc3MgU2FmZUFsbG9jYXRpb24gewotICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+KTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+KTsKLSAg
ICAgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFy
Z3ZbXSk7Ci0gICAgfTsKLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlv
bjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uKQotICAgIHsK
LSAgICAgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9y
TW9kZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOwotICAgIH0KLQot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IG9iamVjdFRlbXBsYXRlKQotICAgIHsKLSAgICAg
ICAgaWYgKG9iamVjdFRlbXBsYXRlLklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9y
TW9kZTsKLSAgICAgICAgcmV0dXJuIG9iamVjdFRlbXBsYXRlLT5OZXdJbnN0YW5jZSgpOwotICAg
IH0KLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKLSAgICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAg
IENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBmdW5jdGlv
bi0+TmV3SW5zdGFuY2UoYXJnYywgYXJndik7Ci0gICAgfQotCi0KIAogICAgIGVudW0gRXh0ZXJu
YWxNb2RlIHsKICAgICAgICAgRXh0ZXJuYWxpemUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGEyZmNlYjAwNDJjMTg1MjkzZDVlMTk2
ZjkxYWZiZmMzMDAwY2RlMmYuLmQyODYxODNhNzIxNTM1MzllMWNjY2MxMjIyZWE1MTJkNmU1MTA3
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJT
YWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggNGNmM2M5
YTQ2Y2E2ZTAzYzNhODkyZDVjZjY2ZGRkMDA0MjZkYjYzZS4uNzgwZmZkYTUzNjI3YTg0ZTNhYjgz
Y2M5NjAwMTlhNTJjOTgwMjYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUg
IlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNsdWRlICJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA5Nzc1ZDMyYTI0NGZmZmE4NTQ2YThk
OGMwY2QyZGJhMWFjYTBjNTIxLi42ZTI4ZTMyZjI4Njc3OTFhYjAwNjlkZGQ1YjExYTlhZmI4OGJm
ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUu
aCIKIAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEyOSw5ICsxMzAsMTIgQEAg
dm9pZCBWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGNvZGVF
eHRlcm5hbFN0cmluZyA9IHY4RXh0ZXJuYWxTdHJpbmcoY29kZSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6U2NyaXB0PiBzY3JpcHQgPSBWOFByb3h5Ojpjb21waWxlU2NyaXB0KGNvZGVFeHRlcm5hbFN0
cmluZywgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOwogICAgIGlmICghc2NyaXB0LklzRW1wdHko
KSkgewotICAgICAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1bigpIGRpcmVjdGx5IHRvIGF2b2lk
IGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29u
dGV4dCgpLgogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSB3aGVuIHdlIHN0b3Ag
ZG9pbmcgdGhlICd3aXRoJyBoYWNrIGFib3ZlLgotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSA9IHNjcmlwdC0+UnVuKCk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlOworICAgICAgICB7CisgICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpOb1BhZ2VBdXRo
b3JTY3JpcHRXaWxsUnVuIHNjb3BlOworICAgICAgICAgICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigp
OworICAgICAgICB9CiAgICAgICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQodmFsdWUtPklzRnVuY3Rpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhOUE9iamVjdC5jcHAKaW5kZXggZTQzZDI3ZTY0MDlkZWUyNWE4YWVlNzI2OTcwYTQ3ZTUy
NjAwNWQzNC4uZjZkZDFmOGYzNmY0Zjc4OGMxMWQ5OTUyMGRiYWIzYzJlNDAzOGQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVjdC5o
IgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKaW5kZXggNmNm
YmJhYjFlY2U5ZTE5MmFjNGM3MDNiNDFhYTE2NzFmODMzOWE2OC4uYjJhYjRkN2YyNGVkZDM1Y2Ey
NWFkZjdhYjljYzBkOWZhNWU4MzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UmVjdXJzaW9uU2NvcGUuaApAQCAtMzIsMTEgKzMyLDE3IEBACiAjZGVmaW5lIFY4UmVjdXJz
aW9uU2NvcGVfaAogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIAorLy8gRXZlcnkgY2FsbCBpbnRvIFY4IHNjcmlwdCBtdXN0IGhhdmUgZWl0aGVy
IGEgVjhSZWN1cnNpb25TY29wZSBvciBhCisvLyBWOFJlY3Vyc2lvblNjb3BlOjpOb1BhZ2VBdXRo
b3JTY3JpcHRXaWxMUnVuIG9uIHRoZSBzdGFjay4gVGhlIGZvcm1lcgorLy8gaXMgbWVhbnQgZm9y
IHJ1bm5pbmcgYXV0aG9yIHNjcmlwdHMsIHdoaWxlIHRoZSBsYXR0ZXIgc2hvdWxkIGJlIHVzZWQK
Ky8vIHRvIHJ1biAiaW50ZXJuYWwiIHNjcmlwdHMgKGV4YW1wbGVzIG9mIGludGVybmFsIHNjcmlw
dHMgYXJlIHdyYXBwZXIKKy8vIGNvbnN0cnVjdG9ycyBhbmQgaW5zcGVjdG9yIGltcGxlbWVudGF0
aW9uKS4KIGNsYXNzIFY4UmVjdXJzaW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFY4UmVjdXJzaW9uU2NvcGUpOwogcHVibGljOgpAQCAtNTIsNyArNTgsMzQgQEAgcHVibGljOgog
ICAgICAgICAgICAgZGlkTGVhdmVTY3JpcHRDb250ZXh0KG1fY29udGV4dCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIGludCByZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7IH0KKyAgICBzdGF0aWMgaW50IHJl
Y3Vyc2lvbkxldmVsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6Y3VycmVudCgpLT5yZWN1cnNpb25MZXZlbCgpOworICAgIH0KKworI2lmbmRlZiBOREVC
VUcKKyAgICBzdGF0aWMgYm9vbCBwcm9wZXJseVVzZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJlY3Vyc2lvbkxldmVsKCkgPiAwIHx8IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPmludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSA+IDA7CisgICAgfQorI2VuZGlmCisK
KyAgICBjbGFzcyBOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIE5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4oKQorICAgICAgICB7CisjaWZuZGVmIE5ERUJV
RworICAgICAgICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW5jcmVt
ZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpOworI2VuZGlmCisgICAgICAgIH0KKwor
ICAgICAgICB+Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1bigpCisgICAgICAgIHsKKyNpZm5kZWYg
TkRFQlVHCisgICAgICAgICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5k
ZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCk7CisjZW5kaWYKKyAgICAgICAg
fQorICAgIH07CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTGVhdmVTY3JpcHRDb250
ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IGQy
ODQwYmQwODg4MjEwNzU5ZGRiNGFiZWRjMmMzNzE0ZTdjZmMyMmEuLjU5OTBkYzczYWVkMzFjNmZj
M2IzMTUwNmJhMTE4NTY3MGNhNzgzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRX
b3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA0MWFlMDcxNzE1NWU1MTdk
MDkwNjA5YzkxYzk1NDE2MWQ2YjNlNjQ3Li4wNGNkYTk5ZjZlY2Y4MmY4ZDI2Mzc5ZmY5Nzg1ODgw
M2YxYmZiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KQEAgLTY2LDcgKzY3LDExIEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBW
OEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3
CiAgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRv
dyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgpOworICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBzaGFkb3c7CisgICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpOb1BhZ2VB
dXRob3JTY3JpcHRXaWxsUnVuIHNjb3BlOworICAgICAgICBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1
Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3
NzlmNzY1YzhhMy4uZjEwMGNkMWUxYmM3Yzk0M2IzY2Q2NzI5NTM1MWNiMjcyZTMyYWIyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
U3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFt
ZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYgKzk4LDcgQEAgU2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVy
ZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBl
Y3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3Rh
bmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgogICAgIHY4OjpM
b2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNj
cmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlwdFdp
bGxSdW4gcmVjdXJzaW9uU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdiA9IHNjcmlw
dC0+UnVuKCk7CiAgICAgQVNTRVJUKCF2LklzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHYtPklzRnVu
Y3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IDMyZDg3MjY4Y2FiN2VjYmMzZTM3
MDMyNmI5MzkzZWY5NjA0NTkzMmEuLjY0MjE4NTUwMTYyNmZkMmU5Y2Y3ZDMyYWMyYmZlM2FmYmIz
ZjYxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNj
cmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAiVjhTY3JpcHRQcm9maWxlLmgiCiAK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9m
aWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggZmVkZmZmZTg2NDIwYjA2MTlkMTFlOTMwMTUzZDM3YTYx
ZmEyNWU1Yy4uMDU1YzVjMGU3YzA1MDA1MGMzY2U3MTdjMjk2ZjM2NGZhMmUwNGIyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNj
cmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZU5vZGUuaCIKIAor
I2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZU5vZGUu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAppbmRleCA3Nzg1OGM0ZTdiOTcwMWE3ZjkyZDk0YTJj
MGEzYWJmYjQ2ZjBlZTI1Li4xMTY0YWQ1N2Q0MTAxZTBlN2ZiMTQ5OTgyMjY4MmVlOGQ2MzIwOTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxh
dGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgiCkBA
IC04OCw2ICs4OSwxMSBAQCBzdGF0aWMgYm9vbCBnZW5lcmF0ZUVudHJvcHkodW5zaWduZWQgY2hh
ciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGlj
IHZvaWQgYXNzZXJ0VjhSZWN1cnNpb25TY29wZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSB8fCBXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpwcm9wZXJseVVzZWQoKSk7Cit9CisK
IHZvaWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3Vw
cG9ydCkKIHsKICAgICBpbml0aWFsaXplV2l0aG91dFY4KHdlYktpdFBsYXRmb3JtU3VwcG9ydCk7
CkBAIC05Nyw2ICsxMDMsMTAgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9y
dCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAgIFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKIAog
I2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpW
ODo6QWRkQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNl
bmRpZgorCiAgICAgLy8gY3VycmVudFRocmVhZCB3aWxsIGFsd2F5cyBiZSBub24tbnVsbCBpbiBw
cm9kdWN0aW9uLCBidXQgY2FuIGJlIG51bGwgaW4gQ2hyb21pdW0gdW5pdCB0ZXN0cy4KICAgICBp
ZiAoV2ViVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJy
ZW50VGhyZWFkKCkpIHsKICAgICAgICAgQVNTRVJUKCFzX2VuZE9mVGFza1J1bm5lcik7CkBAIC0x
MzcsNiArMTQ3LDEwIEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHZvaWQgc2h1dGRvd24oKQogewogI2lmIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6UmVt
b3ZlQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRp
ZgorCiAgICAgaWYgKHNfZW5kT2ZUYXNrUnVubmVyKSB7CiAgICAgICAgIEFTU0VSVChzX3dlYktp
dFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAgc193ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKS0+cmVtb3ZlVGFza09ic2VydmVyKHNfZW5kT2ZU
YXNrUnVubmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128778</attachid>
            <date>2012-02-24 11:55:11 -0800</date>
            <delta_ts>2012-03-26 18:35:24 -0700</delta_ts>
            <desc>Fix release build</desc>
            <filename>bug-79131-20120224115510.patch</filename>
            <type>text/plain</type>
            <size>35283</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJhOTc2ODBjNzY1Njc5
ZDk2YWJlYWEyNjU4NjkwMzE3Nzg3NDc4OC4uN2YwNDA0ZjdjMDJjZDMxZGRiZDQ3NzM2YzRjZjBh
M2ZiZjM0N2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTAyLTIxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0aW9u
IGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRoZSBz
dGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRW5kLW9mLW1pY3JvdGFzayB3b3JrIChjYW5jZWxsaW5nIG91
dHN0YW5kaW5nIElEQiB0cmFuc2FjdGlvbnMsCisgICAgICAgIGRlbGl2ZXJpbmcgRE9NIG11dGF0
aW9ucykgZGVwZW5kIG9uIFY4UmVjdXJzaW9uU2NvcGUgYmVpbmcgb24gdGhlCisgICAgICAgIHN0
YWNrIHdoZW5ldmVyIGEgY2FsbCBpcyBtYWRlIGludG8gc2NyaXB0LiBWOCBwcm92aWRlcyBhIGNv
bXBsZXRpb24KKyAgICAgICAgY2FsbGJhY2sgQVBJIHRoYXQgY291bGQgYmUgdXNlZCB0byBob29r
IHRoZXNlICJlbmQtb2YtbWljcm90YXNrIgorICAgICAgICBldmVudHMsIGJ1dCBpdCB0dXJucyBv
dXQgdGhhdCBXZWJLaXQgY2FsbHMgaW50byBzY3JpcHQgZm9yIHZhcmlvdXMKKyAgICAgICAgcmVh
c29ucyBiZXNpZGVzIHJ1bm5pbmcgc2NyaXB0IGZyb20gdGhlIHBhZ2UuIEZvciBleGFtcGxlLCBj
b25zdHJ1Y3RpbmcKKyAgICAgICAgd3JhcHBlciBvYmplY3RzIGZyb20gZnVuY3Rpb24gdGVtcGxh
dGVzIGNvdW50cyBhcyAicnVubmluZyBzY3JpcHQiLAorICAgICAgICB5ZXQgaXQncyBub3QgYXBw
cm9wcmlhdGUgdG8gcnVuIHRoaXMgY2FsbGJhY2sgZXZlcnkgdGltZSBhIEpTIHdyYXBwZXIKKyAg
ICAgICAgaXMgY29uc3RydWN0ZWQuCisKKyAgICAgICAgSW5zdGVhZCwgdGhpcyBwYXRjaCBtYWtl
cyB1c2Ugb2YgdGhlIFY4IGNvbXBsZXRpb24gY2FsbGJhY2sgbWVjaGFuaXNtCisgICAgICAgIG9u
bHkgaW4gZGVidWcgbW9kZSwgdG8gYXNzZXJ0IHRoYXQgZWl0aGVyIGEgVjhSZWN1cnNpb25TY29w
ZSAod2hlbgorICAgICAgICBjYWxsaW5nIGF1dGhvciBzY3JpcHQpIG9yIGEgVjhSZWN1cnNpb25T
Y29wZTo6Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1bgorICAgICAgICAod2hlbiBjYWxsaW5nIG5v
bi1hdXRob3Igc2NyaXB0KSBpcyBvbiB0aGUgc3RhY2sgd2hlbiBWOCB0aGlua3MgaXQncworICAg
ICAgICBmaW5pc2hlZCBleGVjdXRpbmcgc2NyaXB0LiBUaGlzIHJlcXVpcmVzIGRyb3BwaW5nIE5v
UGFnZUF1dGhvclNjcmlwdFdpbGxSdW4KKyAgICAgICAgb2JqZWN0cyBpbiBhIGJ1bmNoIG9mIHBs
YWNlcywgbW9zdCBub3RhYmx5IHRoZSBJbnNwZWN0b3IuCisgICAgICAgIE5vdGUgdGhhdCBpbiBy
ZWxlYXNlIG1vZGUsIHRoaXMgY2xhc3MgZG9lcyBub3RoaW5nIGFuZCB0aHVzIHNob3VsZCBiZQor
ICAgICAgICBvcHRpbWl6ZWQgYXdheS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGV4aXN0aW5n
IHRlc3RzIGNvdmVyIHRoaXMgY29kZSAod2hlbiBydW4gaW4gZGVidWcgbW9kZSkuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVFeHRlbnNp
b246OnNldEFsbG93U2xlZXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFk
ZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oOiBBZGRl
ZC4gRmFjdG9yZWQgb3V0IG9mIFY4QmluZGluZy5oIHRvIGF2b2lkIGFuIGluY2x1ZGUgY3ljbGUu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNhZmVBbGxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxE
ZWJ1Z2dlck1ldGhvZCk6IEZhY3RvcmVkIG91dCBhCisgICAgICAgIGhlbHBlciBtZXRob2QgdGhh
dCB3cmFwcyB2ODo6RnVuY3Rpb246OkNhbGwgd2l0aCBOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVu
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHRE
ZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6
IEFkZGVkIG5ldyByZWN1cnNpb24gY291bnRlcnMgKG9ubHkgcHJlc2VudCBpbiBkZWJ1ZyBidWls
ZHMpLgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmludGVybmFs
U2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRlY3JlbWVudEludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVj
dXJzaW9uU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhS
ZWN1cnNpb25TY29wZTo6cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoVjhSZWN1cnNpb25TY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpwcm9wZXJseVVzZWQpOgor
ICAgICAgICAoTm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpW
OFJlY3Vyc2lvblNjb3BlOjpOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuOjpOb1BhZ2VBdXRob3JT
Y3JpcHRXaWxsUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFn
ZUF1dGhvclNjcmlwdFdpbGxSdW46On5Ob1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20u
Y3BwOgorCiAyMDEyLTAyLTI0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERvIG5vdCBzaG93IHNjcmlwdHMgcGFuZWwgbmF2
aWdhdG9yIGF1dG9tYXRpY2FsbHkgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIHNhbWUgdXNlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDE5ZGUzMTkwNTczNjUwOTk4MjdlYjljMTA3OWI3
NzJhNDhkMGZjMy4uYTE5YTFmNTFlNzMzOWY1MGJmOWU4ZDBhOTE3NzhlOTBiYTczOWRkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMi0yMSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgVjggY29tcGxldGlv
biBjYWxsYmFjayBBUEkgdG8gYXNzZXJ0IHRoYXQgVjhSZWN1cnNpb25TY29wZSBpcyBvbiB0aGUg
c3RhY2sgd2hlbmV2ZXIgaW52b2tpbmcgc2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmFzc2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6aW5pdGlhbGl6ZSk6IEluIGRlYnVnIGJ1aWxkcywgYWRkIGFzc2VydFY4UmVjdXJzaW9u
U2NvcGUgYXMgYSBWOCBjb21wbGV0aW9uIGNhbGxiYWNrLgorICAgICAgICAoV2ViS2l0OjpzaHV0
ZG93bik6IFJlbW92ZSB0aGUgY29tcGxldGlvbiBjYWxsYmFjay4KKwogMjAxMi0wMi0yNCAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3
ZWQ6IGNocm9taXVtIGltYWdlIGZvciBpbnNwZWN0b3Igc3RhdHVzIGJhciBidXR0b24gdXBkYXRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCmluZGV4IGE2OWYyNmE5MmQ1OGI3ZjEzOGFmZjk4MWMyNTAwZWEzODhiMGUz
ZDYuLjBmMmIyYTdkYjA1NDY0MTMwNGViMzMwZWExYTZkMzllMTg5ODdhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtMTM5Myw2ICsxMzkzLDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5o
IFwKICAgICAgICAgYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmggXAorICAgICAgICBi
aW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NoZWR1
bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaCBc
CiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBiZjFlODk2NTEyMWMzZDQzMDZlNjMzNWUxZDk4NWM2NWJmZTc4YTVmLi44N2M3
M2RlYTg3YWUzY2UxNjIzODA5Y2RjYmVmMjMwYWRiNDdiZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xNzA1LDYgKzE3MDUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9N
SW5mby5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZE9iamVjdEluZm8uaCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2No
ZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFT
dG9yZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNw
cAppbmRleCAzMzI4MjhiMjJhMzc4ZDQ5ZWFkMGFkZTcyM2ZhN2I4NGJiOTQ0ZWI4Li4yY2QzMGNj
MmE2Yjg5MGNiNDJiZWU3NGViYTIyOWVlMDljZGFkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcApAQCAtMzEsOCArMzEsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVFeHRlbnNpb24uaCIKIAotI2luY2x1ZGUgIlY4UHJv
eHkuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtODksNiArOTAsNyBAQCB2b2lkIERhdGVFeHRlbnNpb246OnNldEFsbG93U2xlZXAo
Ym9vbCBhbGxvdykKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2WzFdOwogICAgIGFy
Z3ZbMF0gPSB2ODo6Qm9vbGVhbjo6TmV3KCFhbGxvdyk7CisgICAgVjhSZWN1cnNpb25TY29wZTo6
Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1biBzY29wZTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj46OkNhc3Qoc2xlZXBGdW5jdGlvbkhhbmRsZSktPkNhbGwodjg6Ok9iamVjdDo6TmV3KCks
IDEsIGFyZ3YpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAxOGY3ZGY3ZWU0MjU0MDEwYzFkNzE2MTk3YTRi
YjRhNmJmN2M1MDk2Li5mYjY3MjZiMzkyZWNhZTI3NWY4ZGRmNDMwOTY5MmJiMzdiMzUyMGI0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOERPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJl
Y3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTAwLDcgKzEw
MSwxMSBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZwogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSBzaGVsbC0+Y29udGV4dCgpOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiBnZXRTY3JpcHRzRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCht
X2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3JpcHRzIikp
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBjb250ZXh0LT5HZXREYXRh
KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlOworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6Tm9Q
YWdlQXV0aG9yU2NyaXB0V2lsbFJ1biBzY29wZTsKKyAgICAgICAgdmFsdWUgPSBnZXRTY3JpcHRz
RnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgfQog
ICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIXZh
bHVlLT5Jc1VuZGVmaW5lZCgpICYmIHZhbHVlLT5Jc0FycmF5KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVlZmU4MWNjNTU0MWMw
YmNmZjQ3Mzk1NWRlNWI3NzlhOTVjNjI1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBTYWZlQWxsb2NhdGlvbl9oCisjZGVmaW5lIFNh
ZmVBbGxvY2F0aW9uX2gKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UmVj
dXJzaW9uU2NvcGUuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2FmZUFsbG9jYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPik7
CisgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+KTsKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBh
cmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKK307CisKK3Y4OjpMb2NhbDx2ODo6
T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IGZ1bmN0aW9uKQoreworICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3Ry
dWN0b3JNb2RlOworICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlwdFdpbGxS
dW4gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOworfQorCit2ODo6
TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKK3sKKyAgICBpZiAob2JqZWN0VGVt
cGxhdGUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7
CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNj
b3BlOjpOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuIHNjb3BlOworICAgIHJldHVybiBvYmplY3RU
ZW1wbGF0ZS0+TmV3SW5zdGFuY2UoKTsKK30KKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVB
bGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24s
IGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIGlmIChmdW5j
dGlvbi5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
KyAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOworICAgIFY4UmVjdXJzaW9uU2Nv
cGU6Ok5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9u
LT5OZXdJbnN0YW5jZShhcmdjLCBhcmd2KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gU2FmZUFsbG9jYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA4ZGU5NTUzN2FkN2YyY2ZkMWFmNjRmODJl
OWRhZGZhOGQyN2RjOWRjLi5mMGYyMTIyMzVmZDM3ZjE1MzJlOTIwZWQ4ZGZkZjNhMDJmNDM1ZjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5j
bHVkZSAiVjhOUE9iamVjdC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJl
Y3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTI0NSw4ICsyNDYs
MTAgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgICAgIHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBzb3VyY2UgPSB2ODo6U3RyaW5nOjpOZXcoImlmIChnYykgZ2Mo
KTsiKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUgPSB2ODo6U3RyaW5nOjpO
ZXcoImdjIik7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNj
cmlwdDo6Q29tcGlsZShzb3VyY2UsIG5hbWUpOwotICAgICAgICBpZiAoIXNjcmlwdC5Jc0VtcHR5
KCkpCisgICAgICAgIGlmICghc2NyaXB0LklzRW1wdHkoKSkgeworICAgICAgICAgICAgVjhSZWN1
cnNpb25TY29wZTo6Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1biBzY29wZTsKICAgICAgICAgICAg
IHNjcmlwdC0+UnVuKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgdjhDb250ZXh0LkRpc3Bvc2Uo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBiNzA1NTIzYjcxZjU4Yjk5ZjAzMmYzOWI2YTY1MDRjODEwZjBlNWI1Li41MTg3
YjY4YmM0MmVhZWIwMmQxNjRiODJlMDQyYTQ1OTZhYmNiMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29w
ZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTU3LDYgKzU4LDEzIEBAIHByaXZhdGU6CiAKIH0KIAordjg6OkxvY2FsPHY4OjpW
YWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQorewor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXco
ZnVuY3Rpb25OYW1lKSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1dGhvclNjcmlw
dFdpbGxSdW4gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3Jp
cHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQorCiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVi
dWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERvbnRQYXVzZU9uRXhj
ZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKQEAgLTEyOSw5ICsx
MzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVi
dWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0
KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKSwgMCwgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3Vs
dCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAsIGFyZ3Yp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQogCkBAIC0xNDEsOSArMTQ4LDgg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24KICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29u
dGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRQYXVzZU9uRXhjZXB0
aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkludDMyOjpO
ZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkgfTsKLSAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1
bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIGNhbGxE
ZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDEsIGFyZ3YpOwogfQog
CiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBh
dXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGlu
dWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkK
IHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlw
dC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcEludG9TdGF0ZW1lbnQiKSkpOwogICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkg
fTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsK
KyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBJbnRvU3RhdGVtZW50IiwgMSwgYXJndik7CiAg
ICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBP
dmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3Qo
bV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE92ZXJTdGF0
ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0
aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdmVyU3RhdGVtZW50
IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5l
dygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0
ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAK
QEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNv
dXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAgaWYgKCFp
c1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6OkNvbnRl
eHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNv
dXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhTdHJpbmco
c291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSwgdjhCb29sZWFuKHByZXZpZXcpIH07CiAK
ICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZShmYWxz
ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwo
bV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywgYXJndik7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoInNldFNjcmlwdFNvdXJjZSIsIDMsIGFy
Z3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewogICAgICAgICB2ODo6TG9jYWw8
djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlDYXRjaC5NZXNzYWdlKCk7CiAgICAgICAgIGlmICgh
bWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUsOSArMjU3LDggQEAgYm9vbCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmlu
ZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkK
IHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxs
RnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0
aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxG
cmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQu
Z2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZy
YW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2QoImN1cnJlbnRDYWxsRnJhbWUiLCAxLCBhcmd2KTsK
IAogICAgIEFTU0VSVCghY3VycmVudENhbGxGcmFtZVY4LklzRW1wdHkoKSk7CiAgICAgaWYgKCFj
dXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0KCkpCkBAIC0zNTUsNiArMzU2LDcgQEAgdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZl
bnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
ZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4
Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRlclZhbHVl
LklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsKICAgICAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok5vUGFnZUF1
dGhvclNjcmlwdFdpbGxSdW4gc2NvcGU7CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGV4Y2VwdGlvbkdldHRlclZhbHVlKS0+Q2FsbChl
dmVudERhdGEsIDAsIGFyZ3YpOwogICAgICAgICAgICAgfQogCkBAIC0zODksNiArMzkxLDcgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpCiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0ID0gdjg6OkRlYnVn
OjpHZXREZWJ1Z0NvbnRleHQoKTsKICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRT
Y29wZShkZWJ1Z2dlckNvbnRleHQpOwogICAgICAgICBTdHJpbmcgZGVidWdnZXJTY3JpcHRTb3Vy
Y2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oRGVidWdnZXJTY3JpcHRTb3VyY2VfanMp
LCBzaXplb2YoRGVidWdnZXJTY3JpcHRTb3VyY2VfanMpKTsKKyAgICAgICAgVjhSZWN1cnNpb25T
Y29wZTo6Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1biByZWN1cnNpb25TY29wZTsKICAgICAgICAg
bV9kZWJ1Z2dlclNjcmlwdC5zZXQodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2Ny
aXB0OjpDb21waWxlKHY4U3RyaW5nKGRlYnVnZ2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmgKaW5kZXggZGU4NDY1MTQwMTFlMTc1MWZkNzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYx
MjlkZTBlNDBiZWZhYmIwMTg3YThhNzg1NDUxODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAg
ICAgdm9pZCBlbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5k
bGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVj
dD4gbV9leGVjdXRpb25TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJl
OWY5YzUwNjE1M2MuLmY1MTEwODcwYTYyYjkxOTRkMmUyYzNhNDdhYmExYzlhZWM2YmQyNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cApAQCAtMzEsMTIgKzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1
ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogCiAjaW5jbHVkZSA8djguaD4KQEAgLTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUg
U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRF
eGNlcHRpb25zKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIGFyZ3NbaV0gPSBtX2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0
LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHJlc3VsdDsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2Nv
cGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rp
b24tPkNhbGwodGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAg
ICB9CiAgICAgaWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA0ZmQ2NzJmNDU4MTg0ZDg2ZDJkODI3OWQ2ZTZkYWZl
NmQzMzM5OTIyLi5hMDc4NGNkOTQ0YTI1M2U1Y2FiYTYxZGM0NjYzMGExODVhMmMxZGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTU1LDYgKzU1LDkgQEAg
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29s
YXRlKiBpc29sYXRlKQogICAgIDogbV9kb21EYXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0
b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3JlYXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNp
b25MZXZlbCgwKQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNp
b25MZXZlbCgwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmgKaW5kZXggMGJiNWU5MzZiMzc5NzUzZTE3ZGJlOTQ0NTdhNmQ0YTM1ZDBiNjRhZS4uNTNh
ZTk0NTIxODEyMzI4MDE2NzZmMjQ2ODYwY2EyYTFiMmE2MmM2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTE1Miw2ICsxNTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhh
bmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGlu
dGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyAgICAgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0
UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZl
bDsgfQorICAgICAgICBpbnQgZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQogI2VuZGlm
CiAKICAgICBwcml2YXRlOgpAQCAtMTc3LDYgKzE4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgR2xvYmFsSGFuZGxlTWFwIG1fZ2xvYmFsSGFuZGxl
TWFwOworICAgICAgICBpbnQgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOwogI2VuZGlm
CiAgICAgfTsKIApAQCAtMjA2LDM4ICsyMTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgbV9wcmV2aW91czsKICAgICB9OwogCi0gICAgY2xhc3MgU2FmZUFsbG9jYXRpb24g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KTsKLSAgICAgICAgc3RhdGlj
IGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
T2JqZWN0VGVtcGxhdGU+KTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7Ci0gICAgfTsKLQotICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IGZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3Ry
dWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJ
bnN0YW5jZSgpOwotICAgIH0KLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2Nh
dGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IG9iamVjdFRl
bXBsYXRlKQotICAgIHsKLSAgICAgICAgaWYgKG9iamVjdFRlbXBsYXRlLklzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3Ry
dWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJuIG9iamVjdFRlbXBsYXRl
LT5OZXdJbnN0YW5jZSgpOwotICAgIH0KLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZl
QWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9u
LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKLSAgICB7Ci0gICAgICAg
IGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7Ci0g
ICAgICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoYXJnYywgYXJndik7Ci0gICAgfQot
Ci0KIAogICAgIGVudW0gRXh0ZXJuYWxNb2RlIHsKICAgICAgICAgRXh0ZXJuYWxpemUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDhk
MTZhMTAzNzY0ODczZWUzNzcwZGI1MmM4MDg5NzQ3NmQ3NGYzN2YuLjk1OGNhMzg3NmIxMDBmZTgw
NjA4NDdiOTkxOTFkMGU0ZWM0NjUzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKaW5kZXggNGNmM2M5YTQ2Y2E2ZTAzYzNhODkyZDVjZjY2ZGRkMDA0MjZkYjYzZS4u
NzgwZmZkYTUzNjI3YTg0ZTNhYjgzY2M5NjAwMTlhNTJjOTgwMjYwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXRIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZh
Y2VzLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTYWZlQWxs
b2NhdGlvbi5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNsdWRlICJWOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA5
Nzc1ZDMyYTI0NGZmZmE4NTQ2YThkOGMwY2QyZGJhMWFjYTBjNTIxLi42ZTI4ZTMyZjI4Njc3OTFh
YjAwNjlkZGQ1YjExYTlhZmI4OGJmZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JsZENvbnRleHRIYW5kbGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
QEAgLTEyOSw5ICsxMzAsMTIgQEAgdm9pZCBWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlz
dGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IGNvZGVFeHRlcm5hbFN0cmluZyA9IHY4RXh0ZXJuYWxTdHJpbmcoY29k
ZSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBWOFByb3h5Ojpjb21waWxl
U2NyaXB0KGNvZGVFeHRlcm5hbFN0cmluZywgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOwogICAg
IGlmICghc2NyaXB0LklzRW1wdHkoKSkgewotICAgICAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1
bigpIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2Nv
cGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgY29kZSB3aGVuIHdlIHN0b3AgZG9pbmcgdGhlICd3aXRoJyBoYWNrIGFib3ZlLgotICAgICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IHNjcmlwdC0+UnVuKCk7CisgICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlOworICAgICAgICB7CisgICAgICAgICAgICBWOFJlY3Vy
c2lvblNjb3BlOjpOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuIHNjb3BlOworICAgICAgICAgICAg
dmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgICAgICB9CiAgICAgICAgIGlmICghdmFsdWUuSXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUtPklzRnVuY3Rpb24oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggZTQzZDI3ZTY0MDlk
ZWUyNWE4YWVlNzI2OTcwYTQ3ZTUyNjAwNWQzNC4uZjZkZDFmOGYzNmY0Zjc4OGMxMWQ5OTUyMGRi
YWIzYzJlNDAzOGQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhO
UE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAj
aW5jbHVkZSAiTlBWOE9iamVjdC5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhU
TUxBcHBsZXRFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFJlY3Vyc2lvblNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vy
c2lvblNjb3BlLmgKaW5kZXggNmNmYmJhYjFlY2U5ZTE5MmFjNGM3MDNiNDFhYTE2NzFmODMzOWE2
OC4uYjJhYjRkN2YyNGVkZDM1Y2EyNWFkZjdhYjljYzBkOWZhNWU4MzY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaApAQCAtMzIsMTEgKzMyLDE3
IEBACiAjZGVmaW5lIFY4UmVjdXJzaW9uU2NvcGVfaAogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAorLy8gRXZlcnkgY2FsbCBpbnRvIFY4IHNj
cmlwdCBtdXN0IGhhdmUgZWl0aGVyIGEgVjhSZWN1cnNpb25TY29wZSBvciBhCisvLyBWOFJlY3Vy
c2lvblNjb3BlOjpOb1BhZ2VBdXRob3JTY3JpcHRXaWxMUnVuIG9uIHRoZSBzdGFjay4gVGhlIGZv
cm1lcgorLy8gaXMgbWVhbnQgZm9yIHJ1bm5pbmcgYXV0aG9yIHNjcmlwdHMsIHdoaWxlIHRoZSBs
YXR0ZXIgc2hvdWxkIGJlIHVzZWQKKy8vIHRvIHJ1biAiaW50ZXJuYWwiIHNjcmlwdHMgKGV4YW1w
bGVzIG9mIGludGVybmFsIHNjcmlwdHMgYXJlIHdyYXBwZXIKKy8vIGNvbnN0cnVjdG9ycyBhbmQg
aW5zcGVjdG9yIGltcGxlbWVudGF0aW9uKS4KIGNsYXNzIFY4UmVjdXJzaW9uU2NvcGUgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFY4UmVjdXJzaW9uU2NvcGUpOwogcHVibGljOgpAQCAtNTIs
NyArNTgsMzQgQEAgcHVibGljOgogICAgICAgICAgICAgZGlkTGVhdmVTY3JpcHRDb250ZXh0KG1f
Y29udGV4dCk7CiAgICAgfQogCi0gICAgc3RhdGljIGludCByZWN1cnNpb25MZXZlbCgpIHsgcmV0
dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7
IH0KKyAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVsKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWN1cnNpb25MZXZlbCgpOwor
ICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0aWMgYm9vbCBwcm9wZXJseVVzZWQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2lvbkxldmVsKCkgPiAwIHx8IFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSA+
IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBjbGFzcyBOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVu
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4oKQorICAg
ICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmN1cnJlbnQoKS0+aW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpOwor
I2VuZGlmCisgICAgICAgIH0KKworICAgICAgICB+Tm9QYWdlQXV0aG9yU2NyaXB0V2lsbFJ1bigp
CisgICAgICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICBWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6Y3VycmVudCgpLT5kZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgZGlkTGVhdmVTY3JpcHRDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHkuY3BwCmluZGV4IGQyODQwYmQwODg4MjEwNzU5ZGRiNGFiZWRjMmMzNzE0ZTdjZmMy
MmEuLjU5OTBkYzczYWVkMzFjNmZjM2IzMTUwNmJhMTE4NTY3MGNhNzgzZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24u
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIu
aCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApp
bmRleCA0MWFlMDcxNzE1NWU1MTdkMDkwNjA5YzkxYzk1NDE2MWQ2YjNlNjQ3Li4wNGNkYTk5ZjZl
Y2Y4MmY4ZDI2Mzc5ZmY5Nzg1ODgwM2YxYmZiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAg
LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUg
IlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNj
b3BlLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTY2LDcgKzY3LDExIEBAIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiB3CiAgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogCi0gICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IHNoYWRvdyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgp
OworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFkb3c7CisgICAgeworICAgICAgICBWOFJl
Y3Vyc2lvblNjb3BlOjpOb1BhZ2VBdXRob3JTY3JpcHRXaWxsUnVuIHNjb3BlOworICAgICAgICBz
aGFkb3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYg
KHNoYWRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4o
KTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1l
bnQ6OmluZm8sIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUz
ODgyYjI0MjBiY2UxM2ZlZGY2MTQ3NzlmNzY1YzhhMy4uZjEwMGNkMWUxYmM3Yzk0M2IzY2Q2NzI5
NTM1MWNiMjcyZTMyYWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYg
Kzk4LDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQg
aWQgYW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3Qu
IFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJl
IEluamVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUg
aW5zcGVjdG9yLgogICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0
OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6
Ok5vUGFnZUF1dGhvclNjcmlwdFdpbGxSdW4gcmVjdXJzaW9uU2NvcGU7CiAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdiA9IHNjcmlwdC0+UnVuKCk7CiAgICAgQVNTRVJUKCF2LklzRW1wdHkoKSk7
CiAgICAgQVNTRVJUKHYtPklzRnVuY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4
IDMyZDg3MjY4Y2FiN2VjYmMzZTM3MDMyNmI5MzkzZWY5NjA0NTkzMmEuLjY0MjE4NTUwMTYyNmZk
MmU5Y2Y3ZDMyYWMyYmZlM2FmYmIzZjYxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAi
VjhTY3JpcHRQcm9maWxlLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJW
OFByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggZmVkZmZmZTg2NDIw
YjA2MTlkMTFlOTMwMTUzZDM3YTYxZmEyNWU1Yy4uMDU1YzVjMGU3YzA1MDA1MGMzY2U3MTdjMjk2
ZjM2NGZhMmUwNGIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2Ny
aXB0UHJvZmlsZU5vZGUuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZU5vZGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJL
aXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAppbmRleCA3Nzg1
OGM0ZTdiOTcwMWE3ZjkyZDk0YTJjMGEzYWJmYjQ2ZjBlZTI1Li4yZDQ4M2I0YTlhMjc2Y2FkOGZj
OGUyMTA3ZjI5YTAzODhhMjgzMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UmVjdXJz
aW9uU2NvcGUuaCIKICNpbmNsdWRlICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmgiCkBAIC04OCw2ICs4OSwxMyBAQCBzdGF0aWMgYm9vbCBnZW5lcmF0
ZUVudHJvcHkodW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorI2lmbmRlZiBOREVCVUcKK3N0YXRpYyB2b2lkIGFzc2VydFY4UmVjdXJz
aW9uU2NvcGUoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgV2ViQ29yZTo6VjhS
ZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKCkpOworfQorI2VuZGlmCisKIHZvaWQgaW5pdGlh
bGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKICAg
ICBpbml0aWFsaXplV2l0aG91dFY4KHdlYktpdFBsYXRmb3JtU3VwcG9ydCk7CkBAIC05Nyw2ICsx
MDUsMTAgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxh
dGZvcm1TdXBwb3J0KQogICAgIFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1
cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKIAogI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6QWRkQ2FsbENv
bXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAg
Ly8gY3VycmVudFRocmVhZCB3aWxsIGFsd2F5cyBiZSBub24tbnVsbCBpbiBwcm9kdWN0aW9uLCBi
dXQgY2FuIGJlIG51bGwgaW4gQ2hyb21pdW0gdW5pdCB0ZXN0cy4KICAgICBpZiAoV2ViVGhyZWFk
KiBjdXJyZW50VGhyZWFkID0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkp
IHsKICAgICAgICAgQVNTRVJUKCFzX2VuZE9mVGFza1J1bm5lcik7CkBAIC0xMzcsNiArMTQ5LDEw
IEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktp
dFBsYXRmb3JtU3VwcG9ydCkKIHZvaWQgc2h1dGRvd24oKQogewogI2lmIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6UmVtb3ZlQ2FsbENvbXBs
ZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgaWYg
KHNfZW5kT2ZUYXNrUnVubmVyKSB7CiAgICAgICAgIEFTU0VSVChzX3dlYktpdFBsYXRmb3JtU3Vw
cG9ydC0+Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQt
PmN1cnJlbnRUaHJlYWQoKS0+cmVtb3ZlVGFza09ic2VydmVyKHNfZW5kT2ZUYXNrUnVubmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133957</attachid>
            <date>2012-03-26 18:35:27 -0700</date>
            <delta_ts>2012-03-27 16:56:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120326183526.patch</filename>
            <type>text/plain</type>
            <size>43918</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY1Mzc5NGM5Mjk1MWEy
NTJkZDY4YzIwNmQwZmZlOWU3OWFlZmJjMi4uZjA5MGU0YzRmYTg4ZDdhZWQ3YjMxOTg0NmVhZjVl
MjEwMzg4ZTI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTAzLTI2ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUV4dGVu
c2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTYWZlQWxsb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6Y29sbGVjdEdhcmJhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpj
YWxsRGVidWdnZXJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcEludG9TdGF0ZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3V0T2ZGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2Ny
aXB0Q29tcGlsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bDo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6aW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZGVjcmVt
ZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVj
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpyZWN1cnNpb25MZXZlbCk6CisgICAgICAgIChW
OFJlY3Vyc2lvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnBy
b3Blcmx5VXNlZCk6CisgICAgICAgIChCeXBhc3NGaW5hbGl6YXRpb25QaGFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NGaW5hbGl6YXRpb25QaGFzZTo6Qnlw
YXNzRmluYWxpemF0aW9uUGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29w
ZTo6QnlwYXNzRmluYWxpemF0aW9uUGhhc2U6On5CeXBhc3NGaW5hbGl6YXRpb25QaGFzZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3Jp
cHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3Vz
dG9tLmNwcDoKKwogMjAxMi0wMy0yNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFNpbXBsaWZ5IHNldHRpbmcgbG9hZGluZyBzdGF0ZSBpbiBEb2N1bWVudExv
YWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwN2E5YzA0MmU1M2RlMDBjZGViOWI2
Yjk5YjE2YmNmODFiM2EwODU5Li4wOGE5ZTA5MDY4NmY3ZDc3ZWNkZDUwMTM2YjlmMjc5OGNmNzVj
NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAz
LTI2ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
VXNlIFY4IGNvbXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9u
U2NvcGUgaXMgb24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgICh2OCk6CisgICAgICAgIChXZWJGcmFt
ZSk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlNjcmlwdFNjb3BlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTY3JpcHRTY29wZSk6CisgICAgICAgIChCeXBhc3NG
aW5hbGl6YXRpb25QaGFzZSk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNhbGxGdW5jdGlv
bkFuZFJldHVyblZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAg
IChXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6YXNzZXJ0VjhSZWN1cnNpb25TY29wZSk6CisgICAgICAg
IChXZWJLaXQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpzaHV0ZG93bik6CisgICAg
ICAgICogc3JjL1dlYlNjcmlwdFNjb3BlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlNjcmlwdFNjb3BlKToKKyAgICAgICAgKEJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlOjpJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0U2NvcGU6OkJ5cGFzc0ZpbmFsaXphdGlv
blBoYXNlOjpJbXBsOjpJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0U2NvcGU6OkJ5
cGFzc0ZpbmFsaXphdGlvblBoYXNlOjpJbXBsOjp+SW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNjcmlwdFNjb3BlOjpCeXBhc3NGaW5hbGl6YXRpb25QaGFzZTo6QnlwYXNzRmluYWxpemF0aW9u
UGhhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRTY29wZTo6QnlwYXNzRmluYWxpemF0
aW9uUGhhc2U6On5CeXBhc3NGaW5hbGl6YXRpb25QaGFzZSk6CisKIDIwMTItMDMtMjYgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTY3JvbGxhYmxlIHBs
dWdpbnMgbm90IHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gU2Nyb2xsaW5nQ29vcmRpbmF0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCmluZGV4IDJjZjM2ZmIwNzRhNjg0MjM2MTk3Y2RlYmQxYTg0OTc0OTU5NTQzMjIuLmRh
OTM4MzYxOTJmOGIzYTQxYzFkOGMyOTljMjllNWM0MTE1YWFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAt
MTQwNSw2ICsxNDA1LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmggXAorICAgICAgICBiaW5kaW5n
cy92OC9TYWZlQWxsb2NhdGlvbi5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0
aW9uLmggXAogICAgICAgICBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAzZDJlZjc5NjBkOGNmYmM5NjIyZDRmZDcxZjNhNzQ1OWE4MzFiOWY0Li5hMDBjNTEwNTNk
MDY2YmE5NmI4MzJjNWZkZmZjOTdjM2M5OGI0M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDY5
LDYgKzIwNjksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZE9iamVjdEluZm8uaCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVk
QWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAppbmRl
eCAzMzI4MjhiMjJhMzc4ZDQ5ZWFkMGFkZTcyM2ZhN2I4NGJiOTQ0ZWI4Li45YTUzNjllZGYzNDE5
NWZlM2NmYWIxOTYyYTcyOGI3OGY4NGRmODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9EYXRlRXh0ZW5zaW9uLmNwcApAQCAtMzEsOCArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRhdGVFeHRlbnNpb24uaCIKIAotI2luY2x1ZGUgIlY4UHJveHkuaCIK
ICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIK
KyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODksNiArOTAsNyBAQCB2b2lkIERhdGVFeHRlbnNpb246OnNldEFsbG93U2xlZXAoYm9vbCBh
bGxvdykKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2WzFdOwogICAgIGFyZ3ZbMF0g
PSB2ODo6Qm9vbGVhbjo6TmV3KCFhbGxvdyk7CisgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNz
RmluYWxpemF0aW9uUGhhc2Ugc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpD
YXN0KHNsZWVwRnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMxZDcxNjE5N2E0YmI0YTZiZjdj
NTA5Ni4uNTMyZTU1YmZiNTFkMTFiYThlMWIwNTRjMzc0MTY3ZDNjZWQyNTA3ZCAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25T
Y29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEwMCw3ICsxMDEsMTEgQEAg
dm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0
U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxs
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc0ZpbmFs
aXphdGlvblBoYXNlIHNjb3BlOworICAgICAgICB2YWx1ZSA9IGdldFNjcmlwdHNGdW5jdGlvbi0+
Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICB9CiAgICAgaWYgKHZh
bHVlLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghdmFsdWUtPklzVW5k
ZWZpbmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2FmZUFsbG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTRlNmJjNTA3OGE1MDhmOGFhMDNhZjMx
YWY0ZDc4NzgzOWVlNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2FmZUFsbG9jYXRpb24uaApAQCAtMCwwICsxLDc3IEBACisvKgorKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjaWZuZGVmIFNhZmVBbGxvY2F0aW9uX2gKKyNkZWZpbmUgU2FmZUFsbG9jYXRp
b25faAorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29w
ZS5oIgorCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
YWZlQWxsb2NhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KTsKKyAgICBzdGF0
aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4pOworICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOworfTsKKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNh
ZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rp
b24pCit7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7
CisgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzRmluYWxpemF0aW9uUGhhc2Ugc2NvcGU7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOworfQorCit2ODo6TG9jYWw8djg6Ok9i
amVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRl
bXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKK3sKKyAgICBpZiAob2JqZWN0VGVtcGxhdGUuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgQ29uc3Ry
dWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NG
aW5hbGl6YXRpb25QaGFzZSBzY29wZTsKKyAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0lu
c3RhbmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQgYXJnYywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0
b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NGaW5h
bGl6YXRpb25QaGFzZSBzY29wZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKGFy
Z2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTYWZl
QWxsb2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDhkZTk1NTM3YWQ3ZjJjZmQxYWY2NGY4MmU5ZGFkZmE4ZDI3ZGM5ZGMu
LjU2OWY4NWJmNmQ5YThlODEzNDg3ZmNhYjE4ZTA3NzQ0NzYxOWQzM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3
IEBACiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOE5QT2JqZWN0
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjQ1LDggKzI0NiwxMCBAQCB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJp
bmc+IHNvdXJjZSA9IHY4OjpTdHJpbmc6Ok5ldygiaWYgKGdjKSBnYygpOyIpOwogICAgICAgICB2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5ldygiZ2MiKTsKICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHNv
dXJjZSwgbmFtZSk7Ci0gICAgICAgIGlmICghc2NyaXB0LklzRW1wdHkoKSkKKyAgICAgICAgaWYg
KCFzY3JpcHQuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBh
c3NGaW5hbGl6YXRpb25QaGFzZSBzY29wZTsKICAgICAgICAgICAgIHNjcmlwdC0+UnVuKCk7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgdjhDb250ZXh0LkRpc3Bvc2UoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIz
YjcxZjU4Yjk5ZjAzMmYzOWI2YTY1MDRjODEwZjBlNWI1Li5iNmViZWRlMzhjMjNkNmI2Mjg3YTNi
ZWI2Nzc1YzIzODdmNTgxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU3LDYgKzU4
LDEzIEBAIHByaXZhdGU6CiAKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBh
cmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVi
dWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoZnVuY3Rpb25OYW1lKSkpOwor
ICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlIHNjb3BlOworICAg
IHJldHVybiBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCBhcmdjLCBhcmd2
KTsKK30KKwogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKCkKICAgICA6IG1f
cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBtX2Jy
ZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpCkBAIC0xMjksOSArMTM3LDggQEAgU2NyaXB0RGVidWdT
ZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlT25F
eGNlcHRpb25zU3QKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKIAotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInBh
dXNlT25FeGNlcHRpb25zU3RhdGUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
W10gPSB7IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDAsIGFy
Z3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRo
b2QoInBhdXNlT25FeGNlcHRpb25zU3RhdGUiLCAwLCBhcmd2KTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHJlc3VsdC0+
SW50MzJWYWx1ZSgpKTsKIH0KIApAQCAtMTQxLDkgKzE0OCw4IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBw
YXVzZU9uCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gc2V0UGF1c2VPbkV4Y2VwdGlvbnNGdW5jdGlvbiA9IHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6
U3RyaW5nOjpOZXcoInNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUiKSkpOwogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpJbnQzMjo6TmV3KHBhdXNlT25FeGNlcHRpb25z
U3RhdGUpIH07Ci0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNGdW5jdGlvbi0+Q2FsbChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUiLCAxLCBhcmd2KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQoYm9vbCBwYXVzZSkKQEAgLTE5MCwyNyArMTk2
LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpzdGVwSW50b1N0YXRlbWVudCgpCiB7CiAgICAgQVNTRVJUKGlzUGF1
c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3Ry
aW5nOjpOZXcoInN0ZXBJbnRvU3RhdGVtZW50IikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRlLmdldCgpIH07Ci0gICAgZnVuY3Rpb24tPkNh
bGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgY2FsbERlYnVnZ2VyTWV0
aG9kKCJzdGVwSW50b1N0YXRlbWVudCIsIDEsIGFyZ3YpOwogICAgIGNvbnRpbnVlUHJvZ3JhbSgp
OwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3ZlclN0YXRlbWVudCgpCiB7CiAg
ICAgQVNTRVJUKGlzUGF1c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5j
dGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInN0ZXBPdmVyU3RhdGVtZW50IikpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRlLmdldCgpIH07Ci0g
ICAgZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAg
Y2FsbERlYnVnZ2VyTWV0aG9kKCJzdGVwT3ZlclN0YXRlbWVudCIsIDEsIGFyZ3YpOwogICAgIGNv
bnRpbnVlUHJvZ3JhbSgpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3V0T2ZG
dW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVi
dWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInN0ZXBPdXRPZkZ1bmN0aW9u
IikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0
YXRlLmdldCgpIH07Ci0gICAgZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwg
MSwgYXJndik7CisgICAgY2FsbERlYnVnZ2VyTWV0aG9kKCJzdGVwT3V0T2ZGdW5jdGlvbiIsIDEs
IGFyZ3YpOwogICAgIGNvbnRpbnVlUHJvZ3JhbSgpOwogfQogCkBAIC0yMjgsMTIgKzIzMSwxMSBA
QCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZQogICAgIGlmICghaXNQYXVzZWQoKSkKICAgICAgICAg
Y29udGV4dFNjb3BlID0gYWRvcHRQdHIobmV3IHY4OjpDb250ZXh0OjpTY29wZSh2ODo6RGVidWc6
OkdldERlYnVnQ29udGV4dCgpKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVu
Y3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzZXRTY3JpcHRTb3VyY2UiKSkpOwogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4U3RyaW5nKHNvdXJjZUlEKSwgdjhTdHJpbmco
bmV3Q29udGVudCksIHY4Qm9vbGVhbihwcmV2aWV3KSB9OwogCiAgICAgdjg6OlRyeUNhdGNoIHRy
eUNhdGNoOwogICAgIHRyeUNhdGNoLlNldFZlcmJvc2UoZmFsc2UpOwotICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2OHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCksIDMsIGFyZ3YpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gY2FsbERl
YnVnZ2VyTWV0aG9kKCJzZXRTY3JpcHRTb3VyY2UiLCAzLCBhcmd2KTsKICAgICBpZiAodHJ5Q2F0
Y2guSGFzQ2F1Z2h0KCkpIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpNZXNzYWdlPiBtZXNzYWdl
ID0gdHJ5Q2F0Y2guTWVzc2FnZSgpOwogICAgICAgICBpZiAoIW1lc3NhZ2UuSXNFbXB0eSgpKQpA
QCAtMjU1LDkgKzI1Nyw4IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJj
ZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiBTY3JpcHRWYWx1ZSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCiB7CiAgICAgQVNTRVJUKGlzUGF1
c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBjdXJyZW50Q2FsbEZyYW1lRnVu
Y3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJjdXJyZW50Q2FsbEZyYW1lIikpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRlLmdldCgpIH07Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1cnJlbnRDYWxsRnJhbWVWOCA9IGN1cnJlbnRDYWxs
RnJhbWVGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY2FsbERlYnVnZ2Vy
TWV0aG9kKCJjdXJyZW50Q2FsbEZyYW1lIiwgMSwgYXJndik7CiAKICAgICBBU1NFUlQoIWN1cnJl
bnRDYWxsRnJhbWVWOC5Jc0VtcHR5KCkpOwogICAgIGlmICghY3VycmVudENhbGxGcmFtZVY4LT5J
c09iamVjdCgpKQpAQCAtMzU1LDYgKzM1Niw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAg
ICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbkdldHRlclZhbHVl
ID0gZXZlbnREYXRhLT5HZXQodjg6OlN0cmluZzo6TmV3KCJleGNlcHRpb24iKSk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFleGNlcHRpb25HZXR0ZXJWYWx1ZS5Jc0VtcHR5KCkgJiYgZXhjZXB0
aW9uR2V0dGVyVmFsdWUtPklzRnVuY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKKyAgICAg
ICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NGaW5hbGl6YXRpb25QaGFzZSBzY29w
ZTsKICAgICAgICAgICAgICAgICBleGNlcHRpb24gPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46
OkNhc3QoZXhjZXB0aW9uR2V0dGVyVmFsdWUpLT5DYWxsKGV2ZW50RGF0YSwgMCwgYXJndik7CiAg
ICAgICAgICAgICB9CiAKQEAgLTM4OSw2ICszOTEsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjplbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCkKICAgICAgICAgdjg6OkxvY2FsPHY4OjpD
b250ZXh0PiBkZWJ1Z2dlckNvbnRleHQgPSB2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpOwog
ICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGRlYnVnZ2VyQ29udGV4dCk7
CiAgICAgICAgIFN0cmluZyBkZWJ1Z2dlclNjcmlwdFNvdXJjZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihEZWJ1Z2dlclNjcmlwdFNvdXJjZV9qcyksIHNpemVvZihEZWJ1Z2dlclNjcmlw
dFNvdXJjZV9qcykpOworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NGaW5hbGl6YXRp
b25QaGFzZSByZWN1cnNpb25TY29wZTsKICAgICAgICAgbV9kZWJ1Z2dlclNjcmlwdC5zZXQodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKGRl
YnVnZ2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZGU4NDY1MTQwMTFlMTc1
MWZkNzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYxMjlkZTBlNDBiZWZhYmIwMTg3YThhNzg1
NDUxODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0
Y2hEaWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAgICAgdm9pZCBlbnN1cmVEZWJ1Z2dlclNj
cmlwdENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVi
dWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dl
clNjcmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmlu
ZGV4IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJlOWY5YzUwNjE1M2MuLmY1MTEwODcwYTYy
YjkxOTRkMmUyYzNhNDdhYmExYzlhZWM2YmQyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMzEsMTIgKzMxLDEzIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAKKyNp
bmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJz
aW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8djguaD4K
QEAgLTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxs
KGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFyZ3NbaV0g
PSBtX2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBy
ZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFy
Z3MuZ2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB7CisgICAg
ICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwgbV9h
cmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB9CiAgICAgaWYgKCFzY29wZS5zdWNj
ZXNzKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRl
eCA3OTg2NzZlMWVlNjllODVhNzM4YjQ1MzI1MjQ5NDgxM2Q1YzI2OGU3Li5mN2RiZTA1OTE4ZWZj
ODNlMjc3NTlmOTEzYzFmZmQ0NTc3NjZjZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6
OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIDogbV9k
b21EYXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6
Q3JlYXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQorI2lmbmRlZiBOREVC
VUcKKyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgwKQorI2VuZGlmCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYmFjZDdlOWFhMjZm
M2Y3NDg2Y2U3OGJkMThjMDQ1OGU4N2EwNjlmNS4uZTU5Y2RkNjRmNzY3NWE0M2Q2ZGM5YWQ0MDhj
MjRhYTI1NGJhN2FlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAg
LTE1Myw2ICsxNTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwog
ICAgICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xv
YmFsSGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2
ZWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyAg
ICAgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVy
biArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAgICAgICBpbnQgZGVjcmVt
ZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9pbnRlcm5hbFNj
cmlwdFJlY3Vyc2lvbkxldmVsOyB9CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CkBAIC0xNzksNiAr
MTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBH
bG9iYWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7CisgICAgICAgIGludCBtX2ludGVybmFs
U2NyaXB0UmVjdXJzaW9uTGV2ZWw7CiAjZW5kaWYKICAgICB9OwogCkBAIC0yMDgsMzggKzIxMyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3ByZXZpb3VzOwogICAgIH07
CiAKLSAgICBjbGFzcyBTYWZlQWxsb2NhdGlvbiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOwotICAgICAgICBz
dGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsK
LSAgICB9OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24pCi0gICAgewotICAgICAg
ICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwot
ICAgICAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0gICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3RUZW1wbGF0ZT4gb2JqZWN0VGVtcGxhdGUpCi0gICAgewotICAgICAgICBpZiAo
b2JqZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwot
ICAgICAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0g
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdKQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3Ry
dWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJ
bnN0YW5jZShhcmdjLCBhcmd2KTsKLSAgICB9Ci0KLQogCiAgICAgZW51bSBFeHRlcm5hbE1vZGUg
ewogICAgICAgICBFeHRlcm5hbGl6ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggZDUxMmQyYTkxOTAxNmVkNzVjMmRjYWIxYzkxNDRj
Y2E2ZDUzZDU4Yi4uOWI1NjExYmZiOTQ0M2YzMTQzOGZjNjJlYmE4OWFhMjZkYzNjYTI5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNhZmVBbGxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCAzMGU3MzA2MTMzNTZl
ZDU2MzNkZDlmM2RmOWVlNTcwNTVhM2UyMjVhLi4zOGU0NDgyM2YxNmQyN2FkNzAzZGYyNzFhMWI2
MTYyNWE1NjNhZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldEhlYWRlcnMuaCIK
ICNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVQ
cm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDYxNjNlYWE5NTg3ZTNmOWIxYWFhY2I4YWE5Yzlj
MGNhY2NmMGNmM2EuLjk3OTIxNzE0NzJmZjc3ZDcwZWM3MGFmYzdhMjY1YWFjZGU5ZTIyY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIu
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIK
ICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhS
ZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTU1LDkgKzE1NiwxMiBAQCB2b2lkIFY4TGF6
eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1bigpIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVy
cm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgp
LgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUg
J3dpdGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUgPSBzY3Jp
cHQtPlJ1bigpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlOworICAgIHsKKyAgICAg
ICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzRmluYWxpemF0aW9uUGhhc2Ugc2NvcGU7CisgICAg
ICAgIHZhbHVlID0gc2NyaXB0LT5SdW4oKTsKKyAgICB9CiAgICAgaWYgKHZhbHVlLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzQsMTAgKzE3OCwxMiBAQCB2b2lkIFY4TGF6eUV2
ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbM10gPSB7
IG5vZGVXcmFwcGVyLCBmb3JtV3JhcHBlciwgZG9jdW1lbnRXcmFwcGVyIH07CiAKLSAgICAvLyBV
c2UgQ2FsbCBkaXJlY3RseSB0byBhdm9pZCBhbiBlcnJvbmVvdXMgY2FsbCB0byBWOFJlY3Vyc2lv
blNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoKS4KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgY29kZSB3aGVuIHdlIHN0b3AgZG9pbmcgdGhlICd3aXRoJyBoYWNrIGFib3ZlLgotICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IGlubmVyVmFsdWUgPSBpbnRlcm1lZGlhdGVGdW5jdGlvbi0+Q2Fs
bCh2OENvbnRleHQtPkdsb2JhbCgpLCAzLCBwYXJhbWV0ZXJzKTsKLQorICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IGlubmVyVmFsdWU7CisgICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpC
eXBhc3NGaW5hbGl6YXRpb25QaGFzZSBzY29wZTsKKyAgICAgICAgaW5uZXJWYWx1ZSA9IGludGVy
bWVkaWF0ZUZ1bmN0aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMp
OworICAgIH0KICAgICBpZiAoaW5uZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgIWlubmVyVmFsdWUtPklz
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuY3BwCmluZGV4IGU0M2QyN2U2NDA5ZGVlMjVhOGFlZTcyNjk3MGE0N2U1MjYw
MDVkMzQuLmY2ZGQxZjhmMzZmNGY3ODhjMTFkOTk1MjBkYmFiM2MyZTQwMzhkMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAK
ICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIk5QVjhPYmplY3QuaCIK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhIVE1MQXBwbGV0RWxlbWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCmluZGV4IDZjZmJi
YWIxZWNlOWUxOTJhYzRjNzAzYjQxYWExNjcxZjgzMzlhNjguLjg2YzIyOThhNjk0YTMwMTQ5NWJh
ODYxN2U0ZmUwMzJjM2RhMzAwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFJlY3Vyc2lvblNjb3BlLmgKQEAgLTMyLDExICszMiwxNyBAQAogI2RlZmluZSBWOFJlY3Vyc2lv
blNjb3BlX2gKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKKy8vIENhbGxzIGludG8gcGFnZSAodXNlcikgc2NyaXB0IHNob3VsZCBhbHdheXMg
Z28gdGhyb3VnaCBWOFByb3h5LCBhcyBhbGwKKy8vIHBhZ2Ugc2NyaXB0IG1heSBuZWVkIHRvIGRv
IGZpbmFsaXphdGlvbiB3b3JrLiAiSW50ZXJuYWwiIFNjcmlwdCBjYWxscworLy8gKHdoaWNoIHNo
b3VsZCBuZXZlciBydW4gcGFnZSBzY3JpcHQpIHNob3VsZCBub3QgZG8gZmluYWxpemF0aW9uIHdv
cmsgYW5kIG11c3QKKy8vIGJlIGRlY2xhcmVkIGJ5IGNyZWF0aW5nIHdpdGggYSBzdGFjay1hbGxv
Y2F0ZWQKKy8vIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlIGF0IHRo
ZSBDKysgY2FsbC1zaXRlLgogY2xhc3MgVjhSZWN1cnNpb25TY29wZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVjhSZWN1cnNpb25TY29wZSk7CiBwdWJsaWM6CkBAIC01Miw3ICs1OCwzNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBkaWRMZWF2ZVNjcmlwdENvbnRleHQobV9jb250ZXh0KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVjdXJzaW9uTGV2ZWwoKTsgfQorICAgIHN0
YXRpYyBpbnQgcmVjdXJzaW9uTGV2ZWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7CisgICAgfQorCisj
aWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBib29sIHByb3Blcmx5VXNlZCgpCisgICAgeworICAg
ICAgICByZXR1cm4gcmVjdXJzaW9uTGV2ZWwoKSA+IDAgfHwgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmN1cnJlbnQoKS0+aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpID4gMDsKKyAgICB9
CisjZW5kaWYKKworICAgIGNsYXNzIEJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIEJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlKCkKKyAgICAgICAgeworI2lmbmRl
ZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCkt
PmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRpZgorICAgICAg
ICB9CisKKyAgICAgICAgfkJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlKCkKKyAgICAgICAgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRpZgorICAg
ICAgICB9CisgICAgfTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRMZWF2ZVNjcmlw
dENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5k
ZXggNTFiZTVjYTgzZjcwNzljNzRhMjQ3ZDMyNTNmMDU1NzdjOGNjODQxNy4uMTYyZDc5NDI4NWZi
YmEzZTgyNTc4MDdhM2EzNTUxZThlODEyMjU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNj
cmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlckNvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDQxYWUwNzE3MTU1
ZTUxN2QwOTA2MDljOTFjOTU0MTYxZDZiM2U2NDcuLjE0ZGFmNzUwMmQ4MTZlYzhiODA2ZDJhZTlk
YmI3NjAxZWVmNjgzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDQsNiArNDQsNyBAQAog
I2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNjYsNyArNjcsMTEgQEAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IHcKICAgICBpZiAoc2hhZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
c2hhZG93ID0gc2hhZG93Q29uc3RydWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHNoYWRvdzsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc0ZpbmFsaXphdGlvblBoYXNlIHNjb3BlOworICAgICAgICBzaGFkb3cgPSBzaGFkb3dDb25z
dHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2
MTQ3NzlmNzY1YzhhMy4uYWU0YWY2NDViMmI2MDU3ZDZiZTEwYmFmZTE3ZjFiOWQ3NzY1ZjI0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5
TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYgKzk4LDcgQEAgU2NyaXB0T2Jq
ZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJl
ZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBl
eHBlY3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGlu
c3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgogICAgIHY4
OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5n
KHNjcmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc0ZpbmFsaXphdGlv
blBoYXNlIHJlY3Vyc2lvblNjb3BlOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3Jp
cHQtPlJ1bigpOwogICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwogICAgIEFTU0VSVCh2LT5Jc0Z1
bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcAppbmRleCAzMmQ4NzI2OGNhYjdlY2JjM2Uz
NzAzMjZiOTM5M2VmOTYwNDU5MzJhLi42NDIxODU1MDE2MjZmZDJlOWNmN2QzMmFjMmJmZTNhZmJi
M2Y2MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
Y3JpcHRQcm9maWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgog
CisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJv
ZmlsZU5vZGVDdXN0b20uY3BwCmluZGV4IGMxMzQwMGVmZTJmYjMyNjk3YWQyM2Q5MzZlMzgzODk3
MjQ0NTZkNzguLjc4ZDkyMTBiZDFlMjU5ZWNjMDE2NjE4NDNmNjAwNTY4NjUzMzgwZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVO
b2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
Y3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKICNpbmNsdWRlICJWOFNjcmlwdFByb2ZpbGVOb2RlLmgiCiAK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVOb2Rl
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGIyY2MyOTg2ZjZjZjBkMmVhN2VmZTA0ZjE4MWQ3Y2E5
M2RiN2Q5MmEuLjQ0NjhjZmUwM2Q5MDEyNTcyZmIzZTQzZDM2NzQ4ZjBiMjA4ODY1ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMzNSw2ICszMzUsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUHJpdmF0ZU93blB0ci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL3BsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9wbGF0Zm9ybS9XZWJSZWN0LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZv
cm0vV2ViU2NyaXB0U2NvcGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9X
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0
Zm9ybS9XZWJTaXplLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViU29j
a2V0U3RyZWFtRXJyb3IuaCcsCkBAIC02NDYsNiArNjQ3LDcgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nv
cGVkVXNlckdlc3R1cmUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcmlwdENvbnRy
b2xsZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcmlwdFNjb3BlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Vh
cmNoYWJsZUZvcm1EYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWUuaAppbmRleCAwZDU0MDZkNTIwNjgyYzk1MDE1NDZiNDA4MjUzMjg1MDk1NWY2YmU1Li5iMDVh
MDFjZTQxMzA2ZjY0MDZkNjVjMjQ5NjFmZWQ3NjQ4YmZmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ0LDYgKzQ0LDggQEAgc3RydWN0IE5QT2JqZWN0
OwogI2lmIFdFQktJVF9VU0lOR19WOAogbmFtZXNwYWNlIHY4IHsKIGNsYXNzIENvbnRleHQ7Citj
bGFzcyBGdW5jdGlvbjsKK2NsYXNzIE9iamVjdDsKIGNsYXNzIFZhbHVlOwogdGVtcGxhdGUgPGNs
YXNzIFQ+IGNsYXNzIEhhbmRsZTsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBMb2NhbDsKQEAg
LTI3NCw2ICsyNzYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGV4ZWN1dGVTY3JpcHRBbmRSZXR1cm5WYWx1ZSgKICAgICAgICAgY29uc3QgV2ViU2NyaXB0
U291cmNlJikgPSAwOwogCisgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4g
cmVjZWl2ZXIgYW5kIGFyZ3VtZW50cy4KKyAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IGNhbGxGdW5jdGlvbkFuZFJldHVyblZhbHVlKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj4sCisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sCisgICAgICAgIGludCBhcmdj
LAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKSA9IDA7CisKICAgICAvLyBS
ZXR1cm5zIHRoZSBWOCBjb250ZXh0IGZvciB0aGlzIGZyYW1lLCBvciBhbiBlbXB0eSBoYW5kbGUg
aWYgdGhlcmUKICAgICAvLyBpcyBub25lLgogICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBtYWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2NyaXB0U2NvcGUuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNjcmlwdFNjb3BlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzM3YzY3MjFiY2U2YTNlNzMyNGEzNjkxZmQxYTcxZDY1MDcwOTM1YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNj
cmlwdFNjb3BlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2NyaXB0U2NvcGVfaAorI2Rl
ZmluZSBXZWJTY3JpcHRTY29wZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2Ug
V2ViU2NyaXB0U2NvcGUgeworCitjbGFzcyBCeXBhc3NGaW5hbGl6YXRpb25QaGFzZSB7CitwdWJs
aWM6CisgICAgQnlwYXNzRmluYWxpemF0aW9uUGhhc2UoKTsKKyAgICB+QnlwYXNzRmluYWxpemF0
aW9uUGhhc2UoKTsKKworcHJpdmF0ZToKKyNpZm5kZWYgTkRFQlVHCisgICAgY2xhc3MgSW1wbDsK
KyAgICBJbXBsKiBtX2ltcGw7CisjZW5kaWYKK307CisKK30KKworfSAvLyBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAz
OTg5N2M4MjM2MmE4MzJjYmUyZjFjOWMxMjUzOGRhYWEyYTc2OGIxLi44MTNlMmI5YWJiYmMxNWI0
YWMwNmVjNDYyOTBlYThmMzJmNGY0NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKQEAgLTg5NCw2ICs4OTQsMTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZVNjcmlwdEFuZFJldHVyblZhbHVlKGNvbnN0IFdlYlNj
cmlwdFMKICAgICByZXR1cm4gbV9mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0
U291cmNlQ29kZShzb3VyY2UuY29kZSwgc291cmNlLnVybCwgcG9zaXRpb24pKS52OFZhbHVlKCk7
CiB9CiAKKy8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBh
cmd1bWVudHMuCit2ODo6TG9jYWw8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNhbGxGdW5jdGlv
bkFuZFJldHVyblZhbHVlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiByZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCit7CisgICAgcmV0dXJuIFY4UHJveHk6Omluc3Ry
dW1lbnRlZENhbGxGdW5jdGlvbihtX2ZyYW1lLCBmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFy
Z3YpOworfQorCiAvLyBSZXR1cm5zIHRoZSBWOCBjb250ZXh0IGZvciB0aGlzIGZyYW1lLCBvciBh
biBlbXB0eSBoYW5kbGUgaWYgdGhlcmUgaXMgbm9uZS4KIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
V2ViRnJhbWVJbXBsOjptYWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggNzAwZjZlYTQwMzdlN2IyOGI5
MGJkYzhmOTQ5OTRjOGFlZTlhMzFmMi4uMzZiZWMwNGZmMGE5YmQ0NTkzODg5YjY5YTA4NzY1YTlk
MzZlNmUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAg
LTExMCw2ICsxMTAsMTEgQEAgcHVibGljOgogI2lmIFdFQktJVF9VU0lOR19WOAogICAgIHZpcnR1
YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4ZWN1dGVTY3JpcHRBbmRSZXR1cm5WYWx1ZSgKICAg
ICAgICAgY29uc3QgV2ViU2NyaXB0U291cmNlJik7CisgICAgdmlydHVhbCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBjYWxsRnVuY3Rpb25BbmRSZXR1cm5WYWx1ZSgKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+LAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LAorICAgICAgICBp
bnQgYXJnYywKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAgICAgdmly
dHVhbCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1haW5Xb3JsZFNjcmlwdENvbnRleHQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVGaWxlU3lzdGVtKFdl
YkZpbGVTeXN0ZW06OlR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViS2l0LmNwcAppbmRleCA3Nzg1OGM0ZTdiOTcwMWE3ZjkyZDk0YTJjMGEzYWJmYjQ2ZjBl
ZTI1Li4yZDQ4M2I0YTlhMjc2Y2FkOGZjOGUyMTA3ZjI5YTAzODhhMjgzMTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXZWJLaXRNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgiCkBAIC04OCw2ICs4OSwx
MyBAQCBzdGF0aWMgYm9vbCBnZW5lcmF0ZUVudHJvcHkodW5zaWduZWQgY2hhciogYnVmZmVyLCBz
aXplX3QgbGVuZ3RoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmbmRlZiBOREVCVUcKK3N0
YXRpYyB2b2lkIGFzc2VydFY4UmVjdXJzaW9uU2NvcGUoKQoreworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkgfHwgV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKCkpOwor
fQorI2VuZGlmCisKIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktp
dFBsYXRmb3JtU3VwcG9ydCkKIHsKICAgICBpbml0aWFsaXplV2l0aG91dFY4KHdlYktpdFBsYXRm
b3JtU3VwcG9ydCk7CkBAIC05Nyw2ICsxMDUsMTAgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBs
YXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAgIFdlYkNvcmU6OlY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3Vy
cmVudCgpKTsKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJV
RworICAgIHY4OjpWODo6QWRkQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lv
blNjb3BlKTsKKyNlbmRpZgorCiAgICAgLy8gY3VycmVudFRocmVhZCB3aWxsIGFsd2F5cyBiZSBu
b24tbnVsbCBpbiBwcm9kdWN0aW9uLCBidXQgY2FuIGJlIG51bGwgaW4gQ2hyb21pdW0gdW5pdCB0
ZXN0cy4KICAgICBpZiAoV2ViVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gd2ViS2l0UGxhdGZvcm1T
dXBwb3J0LT5jdXJyZW50VGhyZWFkKCkpIHsKICAgICAgICAgQVNTRVJUKCFzX2VuZE9mVGFza1J1
bm5lcik7CkBAIC0xMzcsNiArMTQ5LDEwIEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJL
aXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHZvaWQgc2h1dGRvd24o
KQogewogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAg
IHY4OjpWODo6UmVtb3ZlQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNj
b3BlKTsKKyNlbmRpZgorCiAgICAgaWYgKHNfZW5kT2ZUYXNrUnVubmVyKSB7CiAgICAgICAgIEFT
U0VSVChzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAg
c193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKS0+cmVtb3ZlVGFza09ic2Vy
dmVyKHNfZW5kT2ZUYXNrUnVubmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNjcmlwdFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNjcmlwdFNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWIxNjQ0ZDAyMDY2MmIyNzgxZGY2MzAxNjVi
MmIwNDRiMWFlYzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2NyaXB0U2NvcGUuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2NyaXB0U2NvcGUuaCIKKworI2luY2x1ZGUgIlY4
UmVjdXJzaW9uU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCituYW1lc3BhY2UgV2ViU2NyaXB0U2NvcGUgeworCisjaWZuZGVmIE5ERUJVRwor
Y2xhc3MgQnlwYXNzRmluYWxpemF0aW9uUGhhc2U6OkltcGwgeworcHVibGljOgorICAgIEltcGwo
KSB7IH0KKyAgICB+SW1wbCgpIHsgfQorICAgIFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc0ZpbmFsaXphdGlvblBoYXNlIG1fc2NvcGU7Cit9OworI2VuZGlmCisKK0J5cGFzc0ZpbmFs
aXphdGlvblBoYXNlOjpCeXBhc3NGaW5hbGl6YXRpb25QaGFzZSgpCit7CisjaWZuZGVmIE5ERUJV
RworICAgIG1faW1wbCA9IG5ldyBCeXBhc3NGaW5hbGl6YXRpb25QaGFzZTo6SW1wbCgpOworI2Vu
ZGlmCit9CisKK0J5cGFzc0ZpbmFsaXphdGlvblBoYXNlOjp+QnlwYXNzRmluYWxpemF0aW9uUGhh
c2UoKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBkZWxldGUgbV9pbXBsOworI2VuZGlmCit9CisK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134169</attachid>
            <date>2012-03-27 16:56:14 -0700</date>
            <delta_ts>2012-03-28 18:38:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120327165613.patch</filename>
            <type>text/plain</type>
            <size>47396</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M1YjVhYzkzOGYxOGMz
ZGE2MDNlZDA0NzNhNDRiMGJkZmVmMDYzZC4uZTczZmMxMWNlNjdjNjI3Y2M2YmFjYTY0NzIyY2Rl
YzNiNTQ1NTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTAzLTI2ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBFbmQtb2YtbWlj
cm90YXNrIHdvcmsgKGNhbmNlbGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAg
ICAgICAgZGVsaXZlcmluZyBET00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29w
ZSBiZWluZyBvbiB0aGUKKyAgICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50
byBzY3JpcHQuIFY4IHByb3ZpZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkg
dGhhdCBjb3VsZCBiZSB1c2VkIHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAg
ICAgIGV2ZW50cywgYnV0IGl0IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlw
dCBmb3IgdmFyaW91cworICAgICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJv
bSB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9i
amVjdHMgZnJvbSBmdW5jdGlvbiB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIs
CisgICAgICAgIHlldCBpdCdzIG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBl
dmVyeSB0aW1lIGEgSlMgd3JhcHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAg
ICBJbnN0ZWFkLCB0aGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhh
dCBlaXRoZXIgYSBWOFJlY3Vyc2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9y
IHNjcmlwdCkgb3IgYSBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
CisgICAgICAgICh3aGVuIGNhbGxpbmcgbm9uLWF1dGhvciBzY3JpcHQpIGlzIG9uIHRoZSBzdGFj
ayB3aGVuIFY4IHRoaW5rcyBpdCdzCisgICAgICAgIGZpbmlzaGVkIGV4ZWN1dGluZyBzY3JpcHQu
IFRoaXMgcmVxdWlyZXMgZHJvcHBpbmcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludAorICAgICAg
ICBvYmplY3RzIGluIGEgYnVuY2ggb2YgcGxhY2VzLCBtb3N0IG5vdGFibHkgdGhlIEluc3BlY3Rv
ci4KKyAgICAgICAgTm90ZSB0aGF0IGluIHJlbGVhc2UgbW9kZSwgdGhpcyBjbGFzcyBkb2VzIG5v
dGhpbmcgYW5kIHRodXMgc2hvdWxkIGJlCisgICAgICAgIG9wdGltaXplZCBhd2F5LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0czsgZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjb2RlICh3aGVuIHJ1
biBpbiBkZWJ1ZyBtb2RlKS4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NhZmVBbGxvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTYWZlQWxsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTYWZlQWxsb2NhdGlvbjo6bmV3
SW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdEdhcmJhZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjpjYWxsRGVidWdnZXJNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpjdXJyZW50Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmg6CisgICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZl
bCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6aW5jcmVtZW50
SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6ZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOExh
enlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2ZW50TGlzdGVu
ZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpyZWN1
cnNpb25MZXZlbCk6CisgICAgICAgIChWOFJlY3Vyc2lvblNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4UmVjdXJzaW9uU2NvcGU6OnByb3Blcmx5VXNlZCk6CisgICAgICAgIChCeXBhc3NGaW5h
bGl6YXRpb25QaGFzZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBh
c3NGaW5hbGl6YXRpb25QaGFzZTo6QnlwYXNzRmluYWxpemF0aW9uUGhhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6QnlwYXNzRmluYWxpemF0aW9uUGhhc2U6On5CeXBh
c3NGaW5hbGl6YXRpb25QaGFzZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6Oldy
YXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFu
YWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcDoKKwogMjAxMi0wMy0yNyAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZS1sYW5kIHIxMTIyNzc7IHJl
dmVydGluZyBpdCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBmaXhlZCBhbnl0aGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggOThmZmY5NGVhYjMxZjBiMDJhZjhlNjgyODU1YzUyMmZjY2Rm
NTJlMy4uZWIyMzZiZTIxYWZkMDlkMzQ1NzUwOGI0Yjg2NGQ4NDgwN2E5OTFhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wMy0yNiAgUmFmYWVsIFdl
aW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0
aW9uIGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRo
ZSBzdGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9X
ZWJGcmFtZS5oOgorICAgICAgICAodjgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAq
IHB1YmxpYy9wbGF0Zm9ybS9XZWJTY3JpcHRTY29wZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmguCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViU2NyaXB0U2NvcGUpOgorICAgICAgICAoQnlwYXNzRmluYWxpemF0aW9uUGhh
c2UpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjYWxsRnVuY3Rpb25BbmRSZXR1cm5WYWx1
ZSk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBs
KToKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmFzc2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6c2h1dGRvd24pOgorICAgICAgICAqIHNyYy9XZWJT
Y3JpcHRTY29wZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UmVjdXJzaW9uU2NvcGUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTY3JpcHRT
Y29wZSk6CisgICAgICAgIChCeXBhc3NGaW5hbGl6YXRpb25QaGFzZTo6SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNjcmlwdFNjb3BlOjpCeXBhc3NGaW5hbGl6YXRpb25QaGFzZTo6SW1wbDo6
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdFNjb3BlOjpCeXBhc3NGaW5hbGl6YXRp
b25QaGFzZTo6SW1wbDo6fkltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRTY29wZTo6
QnlwYXNzRmluYWxpemF0aW9uUGhhc2U6OkJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0U2NvcGU6OkJ5cGFzc0ZpbmFsaXphdGlvblBoYXNlOjp+Qnlw
YXNzRmluYWxpemF0aW9uUGhhc2UpOgorCiAyMDEyLTAzLTI3ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVuYW1lIG9wYXF1ZUNvbnRl
bnRzUmVnaW9uKCkgdG8gdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggNTEzZGM5ODQ0Mzk2OWE1MDY5NWZhY2U2NjYyZjg3ZTkzMjAyYTkyZC4uOTQ3MzAwMzc1MzUw
MWZhMWYyMGEwOTZlMzJiYzk2NDI2ZGViNWQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xNDA1LDYgKzE0
MDUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5o
IFwKICAgICAgICAgYmluZGluZ3MvdjgvUmV0YWluZWRET01JbmZvLmggXAogICAgICAgICBiaW5k
aW5ncy92OC9SZXRhaW5lZE9iamVjdEluZm8uaCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L1NhZmVB
bGxvY2F0aW9uLmggXAogICAgICAgICBiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5oIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGRkMTQy
MWU0NzkyOGVlYjBmODEyMTYwY2EwZWRlZTJjN2NlODdhMmYuLjViNDVhY2Q2MzIxYWFhM2I2OTQz
NDljOGMyZjkzZWM3MjY5ODM5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwNjQsNiArMjA2NCw3
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRET01JbmZvLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRET01JbmZvLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1JldGFpbmVkT2JqZWN0SW5mby5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92
OC9TYWZlQWxsb2NhdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRB
Y3Rpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwCmluZGV4IDMzMjgyOGIy
MmEzNzhkNDllYWQwYWRlNzIzZmE3Yjg0YmI5NDRlYjguLmI3MmRkZWJkMGVjNTc1OTQzNTkxNGJl
ZTIyMjJlZmQ2MTRkOWExNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RhdGVFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVF
eHRlbnNpb24uY3BwCkBAIC0zMSw4ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRGF0ZUV4dGVuc2lvbi5oIgogCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUg
IlY4UmVjdXJzaW9uU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OSw2ICs5
MCw3IEBAIHZvaWQgRGF0ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcChib29sIGFsbG93KQogCiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbMV07CiAgICAgYXJndlswXSA9IHY4OjpCb29s
ZWFuOjpOZXcoIWFsbG93KTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tD
aGVja3BvaW50IHNjb3BlOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChzbGVl
cEZ1bmN0aW9uSGFuZGxlKS0+Q2FsbCh2ODo6T2JqZWN0OjpOZXcoKSwgMSwgYXJndik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCmluZGV4IDE4ZjdkZjdlZTQyNTQwMTBjMWQ3MTYxOTdhNGJiNGE2YmY3YzUwOTYuLmJl
NDE3ZTRjMjdhMGRhM2Y5NWUyZjJiMzAwODQzNjVhOGIzNjVkZjIgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xMDAsNyArMTAxLDExIEBAIHZvaWQgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0
ZW5lciwgUGFnZSogcGFnCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHNo
ZWxsLT5jb250ZXh0KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGdldFNjcmlwdHNG
dW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQu
Z2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldFNjcmlwdHMiKSkpOwogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IGNvbnRleHQtPkdldERhdGEoKSB9OwotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGdldFNjcmlwdHNGdW5jdGlvbi0+Q2FsbChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWU7CisgICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVj
a3BvaW50IHNjb3BlOworICAgICAgICB2YWx1ZSA9IGdldFNjcmlwdHNGdW5jdGlvbi0+Q2FsbCht
X2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICB9CiAgICAgaWYgKHZhbHVlLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghdmFsdWUtPklzVW5kZWZpbmVk
KCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Fm
ZUFsbG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzcwMDVkOGZmOTJkYTNlNzE2ZjRjYzk0NGJlZGMw
ZDVjYzcwMmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2FmZUFsbG9jYXRpb24uaApAQCAtMCwwICsxLDc3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjaWZuZGVmIFNhZmVBbGxvY2F0aW9uX2gKKyNkZWZpbmUgU2FmZUFsbG9jYXRpb25faAor
CisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgor
CisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTYWZlQWxs
b2NhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KTsKKyAgICBzdGF0aWMgaW5s
aW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4pOworICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5l
d0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10pOworfTsKKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxv
Y2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24pCit7
CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7CisgICAg
VjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0
PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxh
dGU+IG9iamVjdFRlbXBsYXRlKQoreworICAgIGlmIChvYmplY3RUZW1wbGF0ZS5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBDb25zdHJ1Y3Rv
ck1vZGUgY29uc3RydWN0b3JNb2RlOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3Jv
dGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgcmV0dXJuIG9iamVjdFRlbXBsYXRlLT5OZXdJbnN0
YW5jZSgpOworfQorCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCit7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9y
TW9kZSBjb25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90
YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKGFy
Z2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTYWZl
QWxsb2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDhkZTk1NTM3YWQ3ZjJjZmQxYWY2NGY4MmU5ZGFkZmE4ZDI3ZGM5ZGMu
LmEwZTNlZjUxNWY0ZDJhODY1YjdkNjNiOTUyODI2NDUxNjQ1NGRmNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3
IEBACiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOE5QT2JqZWN0
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTYxLDYgKzE2MiwxNSBAQCBib29sIFNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiAgICAgcmV0dXJuIFVzZXJHZXN0
dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAorU2NyaXB0VmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBm
dW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10pCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHBlcmZv
cm0gdGhlIHNhbWUgY2hlY2tzIHRvIGNhbkV4ZWN1dGVTY3JpcHRzICYgaXNQYXVzZWQgdGhhdCBo
YXBwZW4gaW4gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdC4KKyAgICByZXR1cm4gU2Ny
aXB0VmFsdWUobV9wcm94eS0+Y2FsbEZ1bmN0aW9uKGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywg
YXJndikpOworfQorCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdv
cmxkKHVuc2lnbmVkIHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPiYgc291
cmNlcykKIHsKICAgICBtX3Byb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh3b3JsZElELCBz
b3VyY2VzLCAwKTsKQEAgLTI0NSw4ICsyNTUsMTAgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpj
b2xsZWN0R2FyYmFnZSgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzb3VyY2UgPSB2
ODo6U3RyaW5nOjpOZXcoImlmIChnYykgZ2MoKTsiKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUgPSB2ODo6U3RyaW5nOjpOZXcoImdjIik7CiAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShzb3VyY2UsIG5hbWUpOwot
ICAgICAgICBpZiAoIXNjcmlwdC5Jc0VtcHR5KCkpCisgICAgICAgIGlmICghc2NyaXB0LklzRW1w
dHkoKSkgeworICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hl
Y2twb2ludCBzY29wZTsKICAgICAgICAgICAgIHNjcmlwdC0+UnVuKCk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgdjhDb250ZXh0LkRpc3Bvc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA5ZDJlZmRlYjE4ZWRjNTI2NjFhZTk4Yzhj
NjgwODU2Zjc0YzU1ZDBhLi5mYmU3OWIxYWNmOWZmYmI0N2Y5OWUxZDM2YmZkOTUzMTg5MWNiZTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBA
IC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAg
ICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb24odjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYXJndW1lbnQgaXMgYSBKYXZhU2NyaXB0IFVS
TC4KICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYsIFNob3VsZFJl
cGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGI3MDU1MjNi
NzFmNThiOTlmMDMyZjM5YjZhNjUwNGM4MTBmMGU1YjUuLjViN2VjZTRkNGE4N2VjZjQ3ZTFmYmIw
ZTdhNjVmN2FjODE3MzkwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRP
YmplY3QuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEphdmFTY3JpcHRD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTcsNiArNTgs
MTMgQEAgcHJpdmF0ZToKIAogfQogCit2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1Nl
cnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFy
Z2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldyhmdW5jdGlvbk5hbWUpKSk7Cisg
ICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgYXJnYywgYXJn
dik7Cit9CisKIFNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgOiBt
X3BhdXNlT25FeGNlcHRpb25zU3RhdGUoRG9udFBhdXNlT25FeGNlcHRpb25zKQogICAgICwgbV9i
cmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQpAQCAtMTI5LDkgKzEzNyw4IEBAIFNjcmlwdERlYnVn
U2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9u
RXhjZXB0aW9uc1N0CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIHY4OjpDb250ZXh0
OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0
aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJw
YXVzZU9uRXhjZXB0aW9uc1N0YXRlIikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OwotICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAwLCBh
cmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gY2FsbERlYnVnZ2VyTWV0
aG9kKCJwYXVzZU9uRXhjZXB0aW9uc1N0YXRlIiwgMCwgYXJndik7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlPihyZXN1bHQt
PkludDMyVmFsdWUoKSk7CiB9CiAKQEAgLTE0MSw5ICsxNDgsOCBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUg
cGF1c2VPbgogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHNldFBhdXNlT25FeGNlcHRpb25zRnVuY3Rpb24gPSB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6
OlN0cmluZzo6TmV3KCJzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIikpKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SW50MzI6Ok5ldyhwYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKSB9OwotICAgIHNldFBhdXNlT25FeGNlcHRpb25zRnVuY3Rpb24tPkNhbGwobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgY2FsbERlYnVnZ2VyTWV0aG9kKCJzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlIiwgMSwgYXJndik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGJvb2wgcGF1c2UpCkBAIC0xOTAsMjcgKzE5
NiwyNCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0oKQogdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c3RlcEludG9TdGF0ZW1lbnQoKQogewogICAgIEFTU0VSVChpc1Bh
dXNlZCgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0
cmluZzo6TmV3KCJzdGVwSW50b1N0YXRlbWVudCIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwotICAgIGZ1bmN0aW9uLT5D
YWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIGNhbGxEZWJ1Z2dlck1l
dGhvZCgic3RlcEludG9TdGF0ZW1lbnQiLCAxLCBhcmd2KTsKICAgICBjb250aW51ZVByb2dyYW0o
KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQogewog
ICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVu
Y3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwT3ZlclN0YXRlbWVudCIpKSk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9Owot
ICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAg
IGNhbGxEZWJ1Z2dlck1ldGhvZCgic3RlcE92ZXJTdGF0ZW1lbnQiLCAxLCBhcmd2KTsKICAgICBj
b250aW51ZVByb2dyYW0oKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE91dE9m
RnVuY3Rpb24oKQogewogICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwT3V0T2ZGdW5jdGlv
biIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25T
dGF0ZS5nZXQoKSB9OwotICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCks
IDEsIGFyZ3YpOworICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic3RlcE91dE9mRnVuY3Rpb24iLCAx
LCBhcmd2KTsKICAgICBjb250aW51ZVByb2dyYW0oKTsKIH0KIApAQCAtMjI4LDEyICsyMzEsMTEg
QEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYg
c291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKICAgICBpZiAoIWlzUGF1c2VkKCkpCiAgICAgICAg
IGNvbnRleHRTY29wZSA9IGFkb3B0UHRyKG5ldyB2ODo6Q29udGV4dDo6U2NvcGUodjg6OkRlYnVn
OjpHZXREZWJ1Z0NvbnRleHQoKSkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0U2NyaXB0U291cmNlIikpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFN0cmluZyhzb3VyY2VJRCksIHY4U3RyaW5n
KG5ld0NvbnRlbnQpLCB2OEJvb2xlYW4ocHJldmlldykgfTsKIAogICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKICAgICB0cnlDYXRjaC5TZXRWZXJib3NlKGZhbHNlKTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLCAzLCBhcmd2KTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OHJlc3VsdCA9IGNhbGxE
ZWJ1Z2dlck1ldGhvZCgic2V0U2NyaXB0U291cmNlIiwgMywgYXJndik7CiAgICAgaWYgKHRyeUNh
dGNoLkhhc0NhdWdodCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4gbWVzc2Fn
ZSA9IHRyeUNhdGNoLk1lc3NhZ2UoKTsKICAgICAgICAgaWYgKCFtZXNzYWdlLklzRW1wdHkoKSkK
QEAgLTI1NSw5ICsyNTcsOCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZQogU2NyaXB0VmFsdWUg
U2NyaXB0RGVidWdTZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUoKQogewogICAgIEFTU0VSVChpc1Bh
dXNlZCgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gY3VycmVudENhbGxGcmFtZUZ1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY3VycmVudENhbGxGcmFtZSIpKSk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9Owot
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjdXJyZW50Q2Fs
bEZyYW1lRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1cnJlbnRDYWxsRnJhbWVWOCA9IGNhbGxEZWJ1Z2dl
ck1ldGhvZCgiY3VycmVudENhbGxGcmFtZSIsIDEsIGFyZ3YpOwogCiAgICAgQVNTRVJUKCFjdXJy
ZW50Q2FsbEZyYW1lVjguSXNFbXB0eSgpKTsKICAgICBpZiAoIWN1cnJlbnRDYWxsRnJhbWVWOC0+
SXNPYmplY3QoKSkKQEAgLTM1NSw2ICszNTYsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpo
YW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAog
ICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNlcHRpb25HZXR0ZXJWYWx1
ZSA9IGV2ZW50RGF0YS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZXhjZXB0aW9uIikpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uR2V0dGVyVmFsdWUuSXNFbXB0eSgpICYmIGV4Y2Vw
dGlvbkdldHRlclZhbHVlLT5Jc0Z1bmN0aW9uKCkpOwogICAgICAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIH07CisgICAg
ICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBz
Y29wZTsKICAgICAgICAgICAgICAgICBleGNlcHRpb24gPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj46OkNhc3QoZXhjZXB0aW9uR2V0dGVyVmFsdWUpLT5DYWxsKGV2ZW50RGF0YSwgMCwgYXJndik7
CiAgICAgICAgICAgICB9CiAKQEAgLTM4OSw2ICszOTEsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjplbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCkKICAgICAgICAgdjg6OkxvY2FsPHY4
OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQgPSB2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgp
OwogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGRlYnVnZ2VyQ29udGV4
dCk7CiAgICAgICAgIFN0cmluZyBkZWJ1Z2dlclNjcmlwdFNvdXJjZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihEZWJ1Z2dlclNjcmlwdFNvdXJjZV9qcyksIHNpemVvZihEZWJ1Z2dlclNj
cmlwdFNvdXJjZV9qcykpOworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rh
c2tDaGVja3BvaW50IHJlY3Vyc2lvblNjb3BlOwogICAgICAgICBtX2RlYnVnZ2VyU2NyaXB0LnNl
dCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhTdHJp
bmcoZGVidWdnZXJTY3JpcHRTb3VyY2UpKS0+UnVuKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBkZTg0NjUxNDAx
MWUxNzUxZmQ3N2QyMGY5ZDc0YTI1YTA4MzZiZTdjLi5hNGZiNjEyOWRlMGU0MGJlZmFiYjAxODdh
OGE3ODU0NTE4MGI3MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmgKQEAgLTExMyw3ICsxMTMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBk
aXNwYXRjaERpZFBhcnNlU291cmNlKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHNvdXJjZU9iamVjdCk7CiAKICAgICB2b2lkIGVuc3VyZURlYnVn
Z2VyU2NyaXB0Q29tcGlsZWQoKTsKLSAgICAKKworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNh
bGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKKwogICAgIFBhdXNlT25FeGNlcHRpb25zU3RhdGUg
bV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2Rl
YnVnZ2VyU2NyaXB0OwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0YXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggNWM5NmI1NjRlMTM0MjA5Y2Q1Y2EyZDVkYjRlYmU5ZjljNTA2MTUzYy4uZjUxMTA4
NzBhNjJiOTE5NGQyZTJjM2E0N2FiYTFjOWFlYzZiZDI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0zMSwxMiArMzEsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIK
IAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhS
ZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDx2
OC5oPgpAQCAtMTMwLDcgKzEzMSwxMSBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6
OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgYXJn
c1tpXSA9IG1fYXJndW1lbnRzW2ldLnY4VmFsdWUoKTsKIAotICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRoaXNPYmplY3QsIG1fYXJndW1lbnRzLnNpemUo
KSwgYXJncy5nZXQoKSk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0OworICAgIHsK
KyAgICAgICAgVjhSZWN1cnNpb25TY29wZSByZWN1cnNpb25TY29wZShnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOworICAgICAgICByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0
LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAgIH0KICAgICBpZiAoIXNjb3Bl
LnN1Y2Nlc3MoKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1
cm4gU2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CmluZGV4IDc5ODY3NmUxZWU2OWU4NWE3MzhiNDUzMjUyNDk0ODEzZDVjMjY4ZTcuLmY3ZGJlMDU5
MThlZmM4M2UyNzc1OWY5MTNjMWZmZDQ1Nzc2NmNmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNTYsNiArNTYsOSBAQCBWOEJpbmRpbmdQZXJJc29sYXRl
RGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAg
OiBtX2RvbURhdGFTdG9yZSgwKQogICAgICwgbV9jb25zdHJ1Y3Rvck1vZGUoQ29uc3RydWN0b3JN
b2RlOjpDcmVhdGVOZXdPYmplY3QpCiAgICAgLCBtX3JlY3Vyc2lvbkxldmVsKDApCisjaWZuZGVm
IE5ERUJVRworICAgICwgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKDApCisjZW5kaWYK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBiYWNkN2U5
YWEyNmYzZjc0ODZjZTc4YmQxOGMwNDU4ZTg3YTA2OWY1Li5lNTljZGQ2NGY3Njc1YTQzZDZkYzlh
ZDQwOGMyNGFhMjU0YmE3YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aApAQCAtMTUzLDYgKzE1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwKCkgeyByZXR1cm4g
bV9nbG9iYWxIYW5kbGVNYXA7IH0KKworICAgICAgICBpbnQgaW50ZXJuYWxTY3JpcHRSZWN1cnNp
b25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsg
fQorICAgICAgICBpbnQgaW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsg
cmV0dXJuICsrbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisgICAgICAgIGludCBk
ZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gLS1tX2ludGVy
bmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KICNlbmRpZgogCiAgICAgcHJpdmF0ZToKQEAgLTE3
OSw2ICsxODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsKKyAgICAgICAgaW50IG1faW50
ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKICNlbmRpZgogICAgIH07CiAKQEAgLTIwOCwzOCAr
MjEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcHJldmlvdXM7CiAg
ICAgfTsKIAotICAgIGNsYXNzIFNhZmVBbGxvY2F0aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPik7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPik7Ci0gICAg
ICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
W10pOwotICAgIH07Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246
Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbikKLSAgICB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1v
ZGU7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoKTsKLSAgICB9Ci0KLSAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKLSAgICB7Ci0gICAgICAg
IGlmIChvYmplY3RUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1v
ZGU7Ci0gICAgICAgIHJldHVybiBvYmplY3RUZW1wbGF0ZS0+TmV3SW5zdGFuY2UoKTsKLSAgICB9
Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10pCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAgICAgICBD
b25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gZnVuY3Rpb24t
Pk5ld0luc3RhbmNlKGFyZ2MsIGFyZ3YpOwotICAgIH0KLQotCiAKICAgICBlbnVtIEV4dGVybmFs
TW9kZSB7CiAgICAgICAgIEV4dGVybmFsaXplLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCBjNGM2MDU0MGFiOWI2OGE2OTNjZGI2ZmMx
ZTc3ZmYwOTRjNDM0MWE1Li5iN2UzYWQ0OWM1ZGViMGQzYjQ2ODllOWFjZDRhNjNlNDI4NGE5YTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2Fm
ZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA1ZGMxODFi
OTVlNzEzNzcwODQ5ODI3ODBlMDAyM2JhYzUyYTlkZmIuLjIyZjIyNWMyMzE4YWJkMzI2ZDM5Mzlm
Y2U0YjM4YWVkNjE3M2U1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJm
YWNlcy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudEluc3RhbmNlLmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNjE2M2VhYTk1ODdlM2Y5YjFhYWFjYjhh
YTljOWMwY2FjY2YwY2YzYS4uZGU0OTkyY2ZiNjZhMmYxNDdjMGNkYTVmYTMzN2QwYzlkNDYzNmE4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFt
ZS5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRl
ICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCiAK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNTUsOSArMTU2LDEyIEBAIHZvaWQg
VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIENhbGwgdjg6OlNjcmlwdDo6UnVuKCkgZGlyZWN0bHkgdG8gYXZvaWQg
YW4gZXJyb25lb3VzIGNhbGwgdG8gVjhSZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250
ZXh0KCkuCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgd2hlbiB3ZSBzdG9wIGRvaW5n
IHRoZSAnd2l0aCcgaGFjayBhYm92ZS4KLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9
IHNjcmlwdC0+UnVuKCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWU7CisgICAgewor
ICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3Bl
OworICAgICAgICB2YWx1ZSA9IHNjcmlwdC0+UnVuKCk7CisgICAgfQogICAgIGlmICh2YWx1ZS5J
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc0LDEwICsxNzgsMTIgQEAgdm9pZCBW
OExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJz
WzNdID0geyBub2RlV3JhcHBlciwgZm9ybVdyYXBwZXIsIGRvY3VtZW50V3JhcHBlciB9OwogCi0g
ICAgLy8gVXNlIENhbGwgZGlyZWN0bHkgdG8gYXZvaWQgYW4gZXJyb25lb3VzIGNhbGwgdG8gVjhS
ZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KCkuCiAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGNvZGUgd2hlbiB3ZSBzdG9wIGRvaW5nIHRoZSAnd2l0aCcgaGFjayBhYm92ZS4K
LSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbm5lclZhbHVlID0gaW50ZXJtZWRpYXRlRnVuY3Rp
b24tPkNhbGwodjhDb250ZXh0LT5HbG9iYWwoKSwgMywgcGFyYW1ldGVycyk7Ci0KKyAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBpbm5lclZhbHVlOworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25T
Y29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICAgICAgaW5uZXJWYWx1
ZSA9IGludGVybWVkaWF0ZUZ1bmN0aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBh
cmFtZXRlcnMpOworICAgIH0KICAgICBpZiAoaW5uZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgIWlubmVy
VmFsdWUtPklzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IGU0M2QyN2U2NDA5ZGVlMjVhOGFlZTcyNjk3
MGE0N2U1MjYwMDVkMzQuLmY2ZGQxZjhmMzZmNGY3ODhjMTFkOTk1MjBkYmFiM2MyZTQwMzhkMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIk5QVjhP
YmplY3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhIVE1MQXBwbGV0RWxlbWVu
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25T
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCmlu
ZGV4IDNiOWFkNmVjMTFkMDg0ZTdiMTBmZTk1NGU1Y2M1MmY1Njg3ZjJmODguLjVkODIzN2MwNjFm
NzVmODBmNWZhMjI0ZDRjZmIzM2E4MWVmZDI5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKQEAgLTMzLDkgKzMzLDI3IEBACiAKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gQysr
IENhbGxzIGludG8gc2NyaXB0IGNvbnRleHRzIHdoaWNoIGFyZSAib3duZWQiIGJ5IFdlYktpdCAo
aW5pdGlhbGl6ZWQgaW4KKy8vIFdlYktpdC5jcHApIG11c3QgZGVjbGFyZSB0aGVpciB0eXBlOgor
Ly8KKy8vICAgMS4gQ2FsbHMgaW50byBwYWdlL2F1dGhvciBzY3JpcHQgZnJvbSBhIGZyYW1lCisv
LyAgIDIuIENhbGxzIGludG8gcGFnZS9hdXRob3Igc2NyaXB0IGZyb20gYSB3b3JrZXIKKy8vICAg
My4gQ2FsbHMgaW50byBpbnRlcm5hbCBzY3JpcHQgKHR5cGljYWxseSBzZXR1cC90ZWFyZG93biB3
b3JrKQorLy8KKy8vIERlYnVnLXRpbWUgY2hlY2tpbmcgb2YgdGhpcyBpcyBlbmZvcmNlZCB2aWEg
dGhpcyBjbGFzcy4KKy8vCisvLyBDYWxscyBvZiB0eXBlICgxKSBzaG91bGQgZ2VuZXJhbGx5IGdv
IHRocm91Z2ggVjhQcm94eSwgYXMgaW5zcGVjdG9yCisvLyBpbnN0cnVtZW50YXRpb24gaXMgbmVl
ZGVkLiBDYWxscyBvZiB0eXBlICgyKSBzaG91bGQgYWx3YXlzIHN0YWNrLWFsbG9jYXRlIGEKKy8v
IFY4UmVjdXJzaW9uU2NvcGUgaW4gdGhlIHNhbWUgYmxvY2sgYXMgdGhlIGNhbGwgaW50byBzY3Jp
cHQuIENhbGxzIG9mIHR5cGUgKDMpCisvLyBzaG91bGQgc3RhY2sgYWxsb2NhdGUgYSBWOFJlY3Vy
c2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IC0tIHRoaXMKKy8vIHNraXBzIHdv
cmsgdGhhdCBpcyBzcGVjJ2QgdG8gaGFwcGVuIGF0IHRoZSBlbmQgb2YgdGhlIG91dGVyLW1vc3Qg
c2NyaXB0IHN0YWNrCisvLyBmcmFtZSBvZiBjYWxscyBpbnRvIHBhZ2Ugc2NyaXB0OgorLy8KKy8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3BlcmZv
cm0tYS1taWNyb3Rhc2stY2hlY2twb2ludAogY2xhc3MgVjhSZWN1cnNpb25TY29wZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVjhSZWN1cnNpb25TY29wZSk7CiBwdWJsaWM6CkBAIC01MSw3
ICs2OSwzNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVjdXJzaW9uTGV2ZWwoKTsgfQorICAgIHN0
YXRpYyBpbnQgcmVjdXJzaW9uTGV2ZWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7CisgICAgfQorCisj
aWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBib29sIHByb3Blcmx5VXNlZCgpCisgICAgeworICAg
ICAgICByZXR1cm4gcmVjdXJzaW9uTGV2ZWwoKSA+IDAgfHwgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OmN1cnJlbnQoKS0+aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpID4gMDsKKyAgICB9
CisjZW5kaWYKKworICAgIGNsYXNzIEJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCgpCisgICAgICAgIHsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT5pbmNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCk7CisjZW5kaWYKKyAg
ICAgICAgfQorCisgICAgICAgIH5CeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50KCkKKyAgICAgICAg
eworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
dXJyZW50KCktPmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRp
ZgorICAgICAgICB9CisgICAgfTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZExlYXZlU2NyaXB0
Q29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggYmY4ZDJiMzM5Y2MxNWQxNjM4NGUw
NWE1Nzk3NTc2MDhhNmU2M2EwOS4uZjgyYmRkMDdmOWVjMTBmYTNjYWMyYjI5NmUyZDgzNTI5MWY4
ZGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRl
ICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9j
dW1lbnRDdXN0b20uY3BwCmluZGV4IDQxYWUwNzE3MTU1ZTUxN2QwOTA2MDljOTFjOTU0MTYxZDZi
M2U2NDcuLmNhZTY2ODk3MDAyOWFkYzdjY2NmNjlmNzI3ZjJkOWQyMzk5NjlmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1
ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAt
NjYsNyArNjcsMTEgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpXcmFw
SW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICBpZiAoc2hhZG93Q29u
c3RydWN0b3IuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+
KCk7CiAKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hhZG93ID0gc2hhZG93Q29uc3RydWN0
b3ItPk5ld0luc3RhbmNlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRvdzsKKyAg
ICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQg
c2NvcGU7CisgICAgICAgIHNoYWRvdyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgp
OworICAgIH0KICAgICBpZiAoc2hhZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PigpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihzaGFk
b3csICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAppbmRleCA4YmI0MjgxZTM4ODJiMjQyMGJjZTEzZmVkZjYxNDc3OWY3NjVjOGEzLi5hZDVmYjlk
MDFiYmI2MmJhOGQ1NjlmNWE2YjhiYzgxOWJjMWU5NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2lu
Y2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgpAQCAtNDEsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhS
ZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtOTYsNiArOTgsNyBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdQogICAgIC8v
IGluamVjdGVkIHNjcmlwdCBpZCBhbmQgZXhwbGljaXQgcmVmZXJlbmNlIHRvIHRoZSBpbnNwZWN0
ZWQgZ2xvYmFsIG9iamVjdC4gVGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkCiAgICAgLy8gdG8gY3Jl
YXRlIGFuZCBjb25maWd1cmUgSW5qZWN0ZWRTY3JpcHQgaW5zdGFuY2UgdGhhdCBpcyBnb2luZyB0
byBiZSB1c2VkIGJ5IHRoZSBpbnNwZWN0b3IuCiAgICAgdjg6OkxvY2FsPHY4OjpTY3JpcHQ+IHNj
cmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhTdHJpbmcoc2NyaXB0U291cmNlKSk7CisgICAg
VjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCByZWN1cnNpb25TY29w
ZTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2ID0gc2NyaXB0LT5SdW4oKTsKICAgICBBU1NF
UlQoIXYuSXNFbXB0eSgpKTsKICAgICBBU1NFUlQodi0+SXNGdW5jdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmls
ZUN1c3RvbS5jcHAKaW5kZXggMzJkODcyNjhjYWI3ZWNiYzNlMzcwMzI2YjkzOTNlZjk2MDQ1OTMy
YS4uNjQyMTg1NTAxNjI2ZmQyZTljZjdkMzJhYzJiZmUzYWZiYjNmNjEzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmls
ZUN1c3RvbS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICNpbmNsdWRlICJWOFNjcmlwdFByb2ZpbGUuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApp
bmRleCBjMTM0MDBlZmUyZmIzMjY5N2FkMjNkOTM2ZTM4Mzg5NzI0NDU2ZDc4Li43OGQ5MjEwYmQx
ZTI1OWVjYzAxNjYxODQzZjYwMDU2ODY1MzM4MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0
b20uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAjaW5jbHVkZSAiVjhTY3JpcHRQcm9maWxlTm9kZS5oIgogCisjaW5jbHVkZSAiU2FmZUFsbG9j
YXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlTm9kZS5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCBiNGRiM2U0YWI1MjM4Njc0ZjBmY2IxZDdjNTllZGZjYWFjNzg0YTA2Li5hZGNkZjU1MjEw
M2Q2ZmYxNzg4NWFlNjk0YzE1NmEyNDk0NGUwMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0yNDAsNiArMjQwLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjb3Bl
ZFVzZXJHZXN0dXJlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2NyZWVuSW5mby5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaCcsCisgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViU2NyaXB0U291cmNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViU2Nyb2xsYmFyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2Nyb2xsYmFyQ2xp
ZW50LmgnLApAQCAtNjQ0LDYgKzY0NSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJSdW50
aW1lRmVhdHVyZXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0
dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTY3JvbGxiYXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VhcmNoYWJs
ZUZvcm1EYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaApp
bmRleCAwZDU0MDZkNTIwNjgyYzk1MDE1NDZiNDA4MjUzMjg1MDk1NWY2YmU1Li5iNDk2YmVlZjUy
Mjg4Mzg0YTNkYWUxYjYzY2Y2YzVlYzRhYTkzZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lLmgKQEAgLTQ0LDYgKzQ0LDggQEAgc3RydWN0IE5QT2JqZWN0OwogI2lm
IFdFQktJVF9VU0lOR19WOAogbmFtZXNwYWNlIHY4IHsKIGNsYXNzIENvbnRleHQ7CitjbGFzcyBG
dW5jdGlvbjsKK2NsYXNzIE9iamVjdDsKIGNsYXNzIFZhbHVlOwogdGVtcGxhdGUgPGNsYXNzIFQ+
IGNsYXNzIEhhbmRsZTsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBMb2NhbDsKQEAgLTI3NCw2
ICsyNzYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4
ZWN1dGVTY3JpcHRBbmRSZXR1cm5WYWx1ZSgKICAgICAgICAgY29uc3QgV2ViU2NyaXB0U291cmNl
JikgPSAwOwogCisgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcmVjZWl2
ZXIgYW5kIGFyZ3VtZW50cy4KKyAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxs
RnVuY3Rpb25BbmRSZXR1cm5WYWx1ZSgKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
LAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LAorICAgICAgICBpbnQgYXJnYywKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkgPSAwOworCiAgICAgLy8gUmV0dXJu
cyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkgaGFuZGxlIGlmIHRo
ZXJlCiAgICAgLy8gaXMgbm9uZS4KICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzRk
MWM0OGU0MmRlNmJmY2EyOGQ1ZDFhYTM3ZTNhOWQzMzUzMzcwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyaXB0SW52b2NhdGlvbi5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmlwdEludm9jYXRpb25faAorI2RlZmluZSBXZWJTY3Jp
cHRJbnZvY2F0aW9uX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBXZWJTY3Jp
cHRJbnZvY2F0aW9uIHsKKworY2xhc3MgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCB7CitwdWJs
aWM6CisgICAgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCgpOworICAgIH5CeXBhc3NNaWNyb3Rh
c2tDaGVja3BvaW50KCk7CisKK3ByaXZhdGU6CisjaWZuZGVmIE5ERUJVRworICAgIGNsYXNzIElt
cGw7CisgICAgSW1wbCogbV9pbXBsOworI2VuZGlmCit9OworCit9CisKK30gLy8gV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5k
ZXggMzk4OTdjODIzNjJhODMyY2JlMmYxYzljMTI1MzhkYWFhMmE3NjhiMS4uZTdmN2Y5YzhlMGY4
MjRlZDNjODI3NDU5ZWIwOTg4MzIzNzY4YTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC04OTQsNiArODk0LDE1IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBXZWJGcmFtZUltcGw6OmV4ZWN1dGVTY3JpcHRBbmRSZXR1cm5WYWx1ZShjb25zdCBX
ZWJTY3JpcHRTCiAgICAgcmV0dXJuIG1fZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFNj
cmlwdFNvdXJjZUNvZGUoc291cmNlLmNvZGUsIHNvdXJjZS51cmwsIHBvc2l0aW9uKSkudjhWYWx1
ZSgpOwogfQogCisvLyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiByZWNlaXZlciBh
bmQgYXJndW1lbnRzLgordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y2FsbEZ1
bmN0aW9uQW5kUmV0dXJuVmFsdWUodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJnYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+
c2NyaXB0KCktPmNhbGxGdW5jdGlvbihmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3YpLnY4
VmFsdWUoKTsKK30KKwogLy8gUmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwg
b3IgYW4gZW1wdHkgaGFuZGxlIGlmIHRoZXJlIGlzIG5vbmUuCiB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IFdlYkZyYW1lSW1wbDo6bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDcwMGY2ZWE0MDM3ZTdi
MjhiOTBiZGM4Zjk0OTk0YzhhZWU5YTMxZjIuLjAxZGU3NGYwNTkzZGY5M2Q5YmRmOTQzOGE1OWMx
MzQ1OGU4YThhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5o
CkBAIC0xMTAsNiArMTEwLDExIEBAIHB1YmxpYzoKICNpZiBXRUJLSVRfVVNJTkdfVjgKICAgICB2
aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUo
CiAgICAgICAgIGNvbnN0IFdlYlNjcmlwdFNvdXJjZSYpOworICAgIHZpcnR1YWwgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNhbGxGdW5jdGlvbkFuZFJldHVyblZhbHVlKAorICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4sCisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sCisgICAg
ICAgIGludCBhcmdjLAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKICAg
ICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0
ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJLaXQuY3BwCmluZGV4IDc3ODU4YzRlN2I5NzAxYTdmOTJkOTRhMmMwYTNhYmZi
NDZmMGVlMjUuLjI0NzZjNzljZWQ5NWYyMWVjOWEyZmUxYjY2NzMzY2I4MjkzNjQ1ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKQEAgLTg4LDYg
Kzg5LDE0IEBAIHN0YXRpYyBib29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZm
ZXIsIHNpemVfdCBsZW5ndGgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWZuZGVmIE5ERUJV
Rworc3RhdGljIHZvaWQgYXNzZXJ0VjhSZWN1cnNpb25TY29wZSgpCit7CisgICAgLy8gRklYTUU6
IEVuYWJsZSB3aGVuIGNocm9taXVtIHVzYWdlIG9mIFdlYlNjcmlwdEludm9jYXRpb24gaGFzIGxh
bmRlZC4KKyAgICAvLyBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8IFdlYkNvcmU6OlY4UmVjdXJz
aW9uU2NvcGU6OnByb3Blcmx5VXNlZCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUo
V2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB7CiAgICAgaW5p
dGlhbGl6ZVdpdGhvdXRWOCh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOwpAQCAtOTcsNiArMTA2LDEw
IEBAIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3Jt
U3VwcG9ydCkKICAgICBXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5p
dGlhbGl6ZWQodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7CiAKICNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorI2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OkFkZENhbGxDb21wbGV0
ZWRDYWxsYmFjaygmYXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIC8vIGN1
cnJlbnRUaHJlYWQgd2lsbCBhbHdheXMgYmUgbm9uLW51bGwgaW4gcHJvZHVjdGlvbiwgYnV0IGNh
biBiZSBudWxsIGluIENocm9taXVtIHVuaXQgdGVzdHMuCiAgICAgaWYgKFdlYlRocmVhZCogY3Vy
cmVudFRocmVhZCA9IHdlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKSB7CiAg
ICAgICAgIEFTU0VSVCghc19lbmRPZlRhc2tSdW5uZXIpOwpAQCAtMTM3LDYgKzE1MCwxMCBAQCB2
b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQpCiB2b2lkIHNodXRkb3duKCkKIHsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorI2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OlJlbW92ZUNhbGxDb21wbGV0ZWRD
YWxsYmFjaygmYXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIGlmIChzX2Vu
ZE9mVGFza1J1bm5lcikgewogICAgICAgICBBU1NFUlQoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQt
PmN1cnJlbnRUaHJlYWQoKSk7CiAgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJy
ZW50VGhyZWFkKCktPnJlbW92ZVRhc2tPYnNlcnZlcihzX2VuZE9mVGFza1J1bm5lcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdEludm9jYXRpb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4NzdmNGYzZTY3OWVlY2JjNDMxOTNiMDU0ZmNjYTUzZTkzOTQzNTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRJbnZvY2F0
aW9uLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlNjcmlwdEludm9jYXRpb24uaCIKKworI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIK
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3Bh
Y2UgV2ViU2NyaXB0SW52b2NhdGlvbiB7CisKKyNpZm5kZWYgTkRFQlVHCitjbGFzcyBCeXBhc3NN
aWNyb3Rhc2tDaGVja3BvaW50OjpJbXBsIHsKK3B1YmxpYzoKKyAgICBJbXBsKCkgeyB9CisgICAg
fkltcGwoKSB7IH0KKyAgICBXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rh
c2tDaGVja3BvaW50IG1fc2NvcGU7Cit9OworI2VuZGlmCisKK0J5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQ6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQoKQoreworI2lmbmRlZiBOREVCVUcKKyAg
ICBtX2ltcGwgPSBuZXcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6SW1wbCgpOworI2VuZGlm
Cit9CisKK0J5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQ6On5CeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50KCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgZGVsZXRlIG1faW1wbDsKKyNlbmRpZgorfQor
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134466</attachid>
            <date>2012-03-28 18:38:42 -0700</date>
            <delta_ts>2012-03-28 18:41:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120328183841.patch</filename>
            <type>text/plain</type>
            <size>38632</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJkNmMzNzg5NTEwNThm
ODI2MTJhNWVlMmRlMTQ2ZjJhMzI1ZWQ0Zi4uMDJmN2MyMzRkNzhiNzA5MzhkMWNjZjJiZWMxMzIx
N2NmMmM1Zjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTI4ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBFbmQtb2YtbWlj
cm90YXNrIHdvcmsgKGNhbmNlbGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAg
ICAgICAgZGVsaXZlcmluZyBET00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29w
ZSBiZWluZyBvbiB0aGUKKyAgICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50
byBzY3JpcHQuIFY4IHByb3ZpZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkg
dGhhdCBjb3VsZCBiZSB1c2VkIHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAg
ICAgIGV2ZW50cywgYnV0IGl0IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlw
dCBmb3IgdmFyaW91cworICAgICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJv
bSB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9i
amVjdHMgZnJvbSBmdW5jdGlvbiB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIs
CisgICAgICAgIHlldCBpdCdzIG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBl
dmVyeSB0aW1lIGEgSlMgd3JhcHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAg
ICBJbnN0ZWFkLCB0aGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhh
dCBlaXRoZXIgYSBWOFJlY3Vyc2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9y
IHNjcmlwdCkgb3IgYSBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
CisgICAgICAgICh3aGVuIGNhbGxpbmcgbm9uLWF1dGhvciBzY3JpcHQpIGlzIG9uIHRoZSBzdGFj
ayB3aGVuIFY4IHRoaW5rcyBpdCdzCisgICAgICAgIGZpbmlzaGVkIGV4ZWN1dGluZyBzY3JpcHQu
IFRoaXMgcmVxdWlyZXMgZHJvcHBpbmcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludAorICAgICAg
ICBvYmplY3RzIGluIGEgYnVuY2ggb2YgcGxhY2VzLCBtb3N0IG5vdGFibHkgdGhlIEluc3BlY3Rv
ci4KKyAgICAgICAgTm90ZSB0aGF0IGluIHJlbGVhc2UgbW9kZSwgdGhpcyBjbGFzcyBkb2VzIG5v
dGhpbmcgYW5kIHRodXMgc2hvdWxkIGJlCisgICAgICAgIG9wdGltaXplZCBhd2F5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsg
ZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjb2RlICh3aGVuIHJ1biBpbiBkZWJ1ZyBtb2RlKS4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDoKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNyZW1l
bnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0
ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnJl
Y3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKToKKyAgICAgICAgKEJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50Ojp+QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
RG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcDoKKwogMjAxMi0wMy0y
OCAgVmljdG9yIENhcmJ1bmUgIDx2Y2FyYnVuZUBhZG9iZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
ZCBwYXJ0aWN1bGFyIHJlbmRlcmluZyBmb3IgdGhlIHZvbHVtZSBzbGlkZXIgYW5kIHVzZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTczYWZjZmQ4OGE3ZDBiMzI0Yjk5NzQxZWNmNTIz
MDNjMGQzNDRmNS4uNzE0YjJkOTE5MmE3N2FjY2YyNDFhOWI4MTc5MDhiYjM0NDY0Mjc2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0yOCAgUmFm
YWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBj
b21wbGV0aW9uIGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlz
IG9uIHRoZSBzdGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAodjgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAg
ICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6
CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBsKToK
KyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OmFzc2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6c2h1dGRvd24pOgorCiAyMDEyLTAzLTI4ICBCaWxsIEJ1
ZGdlICA8YmJ1ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NvY2lhdGVkVVJMTG9hZGVy
IGRvZXMgbm90IHN1cHBvcnQgQ3Jvc3MgT3JpZ2luIFJlZGlyZWN0cyB3aGVuIHVzaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmZjRkYWUyNWY0NmRhNjJiYjJmMDdiNmZmNTU1Nzk3MmY0ZjE1ZjRhLi4yODJl
YjFkNjI4OTI1YjI4MzM0NzYyNWMzOTI2MzIzZjA4ZWE5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE0
MDcsNiArMTQwNyw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmggXAogICAgICAgICBiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L1JldGFpbmVkT2JqZWN0SW5mby5oIFwKKyAgICAgICAgYmluZGluZ3Mv
djgvU2FmZUFsbG9jYXRpb24uaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlv
bi5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogICAgICAg
ICBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggMWVlMGVjNzIyOTJiZGE1OGQ5ZWY1OTY2NjYxNjU0NDEyYThhOWQ0NC4uYmRmZWQ4YjVhM2Vh
YjAwMWVhN2YzZjMwNmZjZjE4YzI0OTM0ZjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjA2Niw2
ICsyMDY2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmgnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nj
aGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFj
dGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKaW5kZXgg
MzMyODI4YjIyYTM3OGQ0OWVhZDBhZGU3MjNmYTdiODRiYjk0NGViOC4uYjcyZGRlYmQwZWM1NzU5
NDM1OTE0YmVlMjIyMmVmZDYxNGQ5YTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGF0ZUV4dGVuc2lvbi5jcHAKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAj
aW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisj
aW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg5LDYgKzkwLDcgQEAgdm9pZCBEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKGJvb2wgYWxs
b3cpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBhcmd2WzBdID0g
djg6OkJvb2xlYW46Ok5ldyghYWxsb3cpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpD
YXN0KHNsZWVwRnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMxZDcxNjE5N2E0YmI0YTZiZjdj
NTA5Ni4uYmU0MTdlNGMyN2EwZGEzZjk1ZTJmMmIzMDA4NDM2NWE4YjM2NWRmMiAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25T
Y29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEwMCw3ICsxMDEsMTEgQEAg
dm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0
U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxs
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3Jv
dGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgICAgIHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9u
LT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIH0KICAgICBpZiAo
dmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCF2YWx1ZS0+SXNV
bmRlZmluZWQoKSAmJiB2YWx1ZS0+SXNBcnJheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOGRlOTU1MzdhZDdmMmNmZDFhZjY0
ZjgyZTlkYWRmYThkMjdkYzlkYy4uY2YxZTk4YWExZTNkYTVjMjIwZDk3M2U3NjViZjdiZmEwM2Zl
NzU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlY4TlBPYmplY3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xNjEsNiAr
MTYyLDEyIEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkK
ICAgICByZXR1cm4gVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
OwogfQogCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25FdmVuSWZT
Y3JpcHREaXNhYmxlZCh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBwZXJmb3JtIHRo
ZSBzYW1lIGlzUGF1c2VkIGNoZWNrIHRoYXQgaGFwcGVucyBpbiBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlU2NyaXB0LgorICAgIHJldHVybiBTY3JpcHRWYWx1ZShtX3Byb3h5LT5jYWxsRnVuY3Rp
b24oZnVuY3Rpb24sIHJlY2VpdmVyLCBhcmdjLCBhcmd2KSk7Cit9CisKIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgY29uc3Qg
VmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+JiBzb3VyY2VzKQogewogICAgIG1fcHJveHktPmV2YWx1
YXRlSW5Jc29sYXRlZFdvcmxkKHdvcmxkSUQsIHNvdXJjZXMsIDApOwpAQCAtMjQ1LDggKzI1Miwx
MCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpTdHJpbmc+IHNvdXJjZSA9IHY4OjpTdHJpbmc6Ok5ldygiaWYgKGdjKSBnYygp
OyIpOwogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5l
dygiZ2MiKTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2Ny
aXB0OjpDb21waWxlKHNvdXJjZSwgbmFtZSk7Ci0gICAgICAgIGlmICghc2NyaXB0LklzRW1wdHko
KSkKKyAgICAgICAgaWYgKCFzY3JpcHQuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICBWOFJlY3Vy
c2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOwogICAgICAgICAgICAg
c2NyaXB0LT5SdW4oKTsKKyAgICAgICAgfQogICAgIH0KICAgICB2OENvbnRleHQuRGlzcG9zZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IDlkMmVmZGViMThlZGM1MjY2MWFlOThjOGM2ODA4NTZmNzRjNTVkMGEuLjc0M2IxMmJkYjc0
NzNiODllODQ4MmM3OWJkOTM4MGM3ZGE0MTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogCiAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbkV2
ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAg
Ym9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBTaG91bGRSZXBsYWNlRG9j
dW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
ID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIzYjcxZjU4Yjk5
ZjAzMmYzOWI2YTY1MDRjODEwZjBlNWI1Li41YjdlY2U0ZDRhODdlY2Y0N2UxZmJiMGU3YTY1Zjdh
YzgxNzM5MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhKYXZhU2NyaXB0Q2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU3LDYgKzU4LDEzIEBAIHBy
aXZhdGU6CiAKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNh
bGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3Jp
cHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoZnVuY3Rpb25OYW1lKSkpOworICAgIFY4UmVj
dXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgcmV0dXJu
IGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQor
CiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKERvbnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2lu
dHNBY3RpdmF0ZWQodHJ1ZSkKQEAgLTEyOSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlv
bnNTdAogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUg
Y29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNh
c3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVz
dWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAsIGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
Y3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZh
bHVlKCkpOwogfQogCkBAIC0xNDEsOSArMTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24K
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6
Ok5ldygic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkludDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkg
fTsKLSAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3Jp
cHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSIsIDEsIGFyZ3YpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpz
ZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5l
dygic3RlcEludG9TdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0
ZXBJbnRvU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAK
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NF
UlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0
KHY4OjpTdHJpbmc6Ok5ldygic3RlcE92ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5j
dGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVi
dWdnZXJNZXRob2QoInN0ZXBPdmVyU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQ
cm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9u
KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwog
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0
KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2
KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7
CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCBjb25zdCBTdHJpbmcmIG5lCiAgICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0
U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVi
dWdDb250ZXh0KCkpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdl
dCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250
ZW50KSwgdjhCb29sZWFuKHByZXZpZXcpIH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4cmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywg
YXJndik7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJN
ZXRob2QoInNldFNjcmlwdFNvdXJjZSIsIDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXND
YXVnaHQoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlD
YXRjaC5NZXNzYWdlKCk7CiAgICAgICAgIGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUs
OSArMjU3LDggQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0
IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERl
YnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1
bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2Qo
ImN1cnJlbnRDYWxsRnJhbWUiLCAxLCBhcmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxG
cmFtZVY4LklzRW1wdHkoKSk7CiAgICAgaWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0
KCkpCkBAIC0zNTUsNiArMzU2LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhE
ZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVu
dERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0
ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAg
ICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CiAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0
KGV4Y2VwdGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwogICAgICAg
ICAgICAgfQogCkBAIC0zODksNiArMzkxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZW5z
dXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gZGVidWdnZXJDb250ZXh0ID0gdjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKTsKICAgICAg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwogICAg
ICAgICBTdHJpbmcgZGVidWdnZXJTY3JpcHRTb3VyY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oRGVidWdnZXJTY3JpcHRTb3VyY2VfanMpLCBzaXplb2YoRGVidWdnZXJTY3JpcHRTb3Vy
Y2VfanMpKTsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2tw
b2ludCByZWN1cnNpb25TY29wZTsKICAgICAgICAgbV9kZWJ1Z2dlclNjcmlwdC5zZXQodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKGRlYnVn
Z2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZGU4NDY1MTQwMTFlMTc1MWZk
NzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYxMjlkZTBlNDBiZWZhYmIwMTg3YThhNzg1NDUx
ODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hE
aWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAgICAgdm9pZCBlbnN1cmVEZWJ1Z2dlclNjcmlw
dENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVidWdn
ZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNj
cmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4
IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJlOWY5YzUwNjE1M2MuLmY1MTEwODcwYTYyYjkx
OTRkMmUyYzNhNDdhYmExYzlhZWM2YmQyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMzEsMTIgKzMxLDEzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAKKyNpbmNs
dWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCiAjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9u
U2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8djguaD4KQEAg
LTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJv
b2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFyZ3NbaV0gPSBt
X2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1
bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3Mu
Z2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB7CisgICAgICAg
IFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwgbV9hcmd1
bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB9CiAgICAgaWYgKCFzY29wZS5zdWNjZXNz
KCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIFNjcmlw
dFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA3
OTg2NzZlMWVlNjllODVhNzM4YjQ1MzI1MjQ5NDgxM2Q1YzI2OGU3Li5mN2RiZTA1OTE4ZWZjODNl
Mjc3NTlmOTEzYzFmZmQ0NTc3NjZjZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIDogbV9kb21E
YXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3Jl
YXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQorI2lmbmRlZiBOREVCVUcK
KyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgwKQorI2VuZGlmCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYmFjZDdlOWFhMjZmM2Y3
NDg2Y2U3OGJkMThjMDQ1OGU4N2EwNjlmNS4uZTU5Y2RkNjRmNzY3NWE0M2Q2ZGM5YWQ0MDhjMjRh
YTI1NGJhN2FlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTE1
Myw2ICsxNTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xvYmFs
SGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyAgICAg
ICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiAr
K21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAgICAgICBpbnQgZGVjcmVtZW50
SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9pbnRlcm5hbFNjcmlw
dFJlY3Vyc2lvbkxldmVsOyB9CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CkBAIC0xNzksNiArMTgz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBHbG9i
YWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7CisgICAgICAgIGludCBtX2ludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWw7CiAjZW5kaWYKICAgICB9OwogCkBAIC0yMDgsMzggKzIxMyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3ByZXZpb3VzOwogICAgIH07CiAK
LSAgICBjbGFzcyBTYWZlQWxsb2NhdGlvbiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
aW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBu
ZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOwotICAgICAgICBzdGF0
aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKLSAg
ICB9OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24pCi0gICAgewotICAgICAgICBp
ZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAg
ICAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0gICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4gb2JqZWN0VGVtcGxhdGUpCi0gICAgewotICAgICAgICBpZiAob2Jq
ZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAg
ICAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0gICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdKQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3RydWN0
b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0
YW5jZShhcmdjLCBhcmd2KTsKLSAgICB9Ci0KLQogCiAgICAgZW51bSBFeHRlcm5hbE1vZGUgewog
ICAgICAgICBFeHRlcm5hbGl6ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKaW5kZXggYzRjNjA1NDBhYjliNjhhNjkzY2RiNmZjMWU3N2ZmMDk0
YzQzNDFhNS4uYjdlM2FkNDljNWRlYjBkM2I0Njg5ZTlhY2Q0YTYzZTQyODRhOWEwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCAwNWRjMTgxYjk1ZTcxMzc3
MDg0OTgyNzgwZTAwMjNiYWM1MmE5ZGZiLi4yMmYyMjVjMjMxOGFiZDMyNmQzOTM5ZmNlNGIzOGFl
ZDYxNzNlNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0
YW5jZS5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9w
ZXJ0eVNldC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6
eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDYxNjNlYWE5NTg3ZTNmOWIxYWFhY2I4YWE5YzljMGNh
Y2NmMGNmM2EuLmRlNDk5MmNmYjY2YTJmMTQ3YzBjZGE1ZmEzMzdkMGM5ZDQ2MzZhODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3Bw
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNp
bmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1
cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogCiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTU1LDkgKzE1NiwxMiBAQCB2b2lkIFY4TGF6eUV2
ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1bigpIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9u
ZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dp
dGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUgPSBzY3JpcHQt
PlJ1bigpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlOworICAgIHsKKyAgICAgICAg
VjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICAg
ICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBpZiAodmFsdWUuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEyIEBAIHZvaWQgVjhMYXp5RXZl
bnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1szXSA9IHsg
bm9kZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBwZXIgfTsKIAotICAgIC8vIFVz
ZSBDYWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9u
U2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVkaWF0ZUZ1bmN0aW9uLT5DYWxs
KHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwotCisgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgICAgIGlubmVyVmFsdWUgPSBpbnRl
cm1lZGlhdGVGdW5jdGlvbi0+Q2FsbCh2OENvbnRleHQtPkdsb2JhbCgpLCAzLCBwYXJhbWV0ZXJz
KTsKKyAgICB9CiAgICAgaWYgKGlubmVyVmFsdWUuSXNFbXB0eSgpIHx8ICFpbm5lclZhbHVlLT5J
c0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QT2JqZWN0LmNwcAppbmRleCBlNDNkMjdlNjQwOWRlZTI1YThhZWU3MjY5NzBhNDdlNTI2
MDA1ZDM0Li5mNmRkMWY4ZjM2ZjRmNzg4YzExZDk5NTIwZGJhYjNjMmU0MDM4ZDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAog
CiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0Lmgi
CisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4SFRNTEFwcGxldEVsZW1lbnQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaAppbmRleCAzYjlh
ZDZlYzExZDA4NGU3YjEwZmU5NTRlNWNjNTJmNTY4N2YyZjg4Li42ZTM2MTkzNzJmMjY5MmFjODMx
MjQyZWQ0ZTVmOGQxYzcxNGJjNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhSZWN1cnNpb25TY29wZS5oCkBAIC0zMyw5ICszMywyNyBAQAogCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEMrKyBjYWxscyBp
bnRvIHNjcmlwdCBjb250ZXh0cyB3aGljaCBhcmUgIm93bmVkIiBieSBXZWJLaXQgKGNyZWF0ZWQg
aW4gYQorLy8gcHJvY2VzcyB3aGVyZSBXZWJLaXQuY3BwIGluaXRpYWxpemVzIHY4KSBtdXN0IGRl
Y2xhcmUgdGhlaXIgdHlwZToKKy8vCisvLyAgIDEuIENhbGxzIGludG8gcGFnZS9hdXRob3Igc2Ny
aXB0IGZyb20gYSBmcmFtZQorLy8gICAyLiBDYWxscyBpbnRvIHBhZ2UvYXV0aG9yIHNjcmlwdCBm
cm9tIGEgd29ya2VyCisvLyAgIDMuIENhbGxzIGludG8gaW50ZXJuYWwgc2NyaXB0ICh0eXBpY2Fs
bHkgc2V0dXAvdGVhcmRvd24gd29yaykKKy8vCisvLyBEZWJ1Zy10aW1lIGNoZWNraW5nIG9mIHRo
aXMgaXMgZW5mb3JjZWQgdmlhIHRoaXMgY2xhc3MuCisvLworLy8gQ2FsbHMgb2YgdHlwZSAoMSkg
c2hvdWxkIGdlbmVyYWxseSBnbyB0aHJvdWdoIFY4UHJveHksIGFzIGluc3BlY3RvcgorLy8gaW5z
dHJ1bWVudGF0aW9uIGlzIG5lZWRlZC4gQ2FsbHMgb2YgdHlwZSAoMikgc2hvdWxkIGFsd2F5cyBz
dGFjay1hbGxvY2F0ZSBhCisvLyBWOFJlY3Vyc2lvblNjb3BlIGluIHRoZSBzYW1lIGJsb2NrIGFz
IHRoZSBjYWxsIGludG8gc2NyaXB0LiBDYWxscyBvZiB0eXBlICgzKQorLy8gc2hvdWxkIHN0YWNr
IGFsbG9jYXRlIGEgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCAt
LSB0aGlzCisvLyBza2lwcyB3b3JrIHRoYXQgaXMgc3BlYydkIHRvIGhhcHBlbiBhdCB0aGUgZW5k
IG9mIHRoZSBvdXRlci1tb3N0IHNjcmlwdCBzdGFjaworLy8gZnJhbWUgb2YgY2FsbHMgaW50byBw
YWdlIHNjcmlwdDoKKy8vCisvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrLyNwZXJmb3JtLWEtbWljcm90YXNrLWNoZWNrcG9pbnQKIGNsYXNzIFY4UmVj
dXJzaW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFY4UmVjdXJzaW9uU2NvcGUp
OwogcHVibGljOgpAQCAtNTEsNyArNjksMzQgQEAgcHVibGljOgogICAgICAgICAgICAgZGlkTGVh
dmVTY3JpcHRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIGludCByZWN1cnNpb25MZXZl
bCgpIHsgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lv
bkxldmVsKCk7IH0KKyAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVsKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWN1cnNpb25M
ZXZlbCgpOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0aWMgYm9vbCBwcm9wZXJs
eVVzZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2lvbkxldmVsKCkgPiAwIHx8IFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSA+IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBjbGFzcyBCeXBhc3NNaWNyb3Rhc2tD
aGVja3BvaW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJ5cGFzc01pY3JvdGFza0NoZWNrcG9p
bnQoKQorICAgICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbCgpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICB+QnlwYXNzTWljcm90YXNrQ2hl
Y2twb2ludCgpCisgICAgICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5kZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vy
c2lvbkxldmVsKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IGJm
OGQyYjMzOWNjMTVkMTYzODRlMDVhNTc5NzU3NjA4YTZlNjNhMDkuLmY4MmJkZDA3ZjllYzEwZmEz
Y2FjMmIyOTZlMmQ4MzUyOTFmOGRkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRX
b3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA0MWFlMDcxNzE1NWU1MTdk
MDkwNjA5YzkxYzk1NDE2MWQ2YjNlNjQ3Li5jYWU2Njg5NzAwMjlhZGM3Y2NjZjY5ZjcyN2YyZDlk
MjM5OTY5ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KQEAgLTY2LDcgKzY3LDExIEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBW
OEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3
CiAgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRv
dyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgpOworICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBzaGFkb3c7CisgICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NN
aWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgICAgICBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1
Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3
NzlmNzY1YzhhMy4uYWQ1ZmI5ZDAxYmJiNjJiYThkNTY5ZjVhNmI4YmM4MTliYzFlOTU2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
U3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFt
ZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYgKzk4LDcgQEAgU2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVy
ZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBl
Y3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3Rh
bmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgogICAgIHY4OjpM
b2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNj
cmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQgcmVjdXJzaW9uU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdiA9IHNjcmlw
dC0+UnVuKCk7CiAgICAgQVNTRVJUKCF2LklzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHYtPklzRnVu
Y3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IDMyZDg3MjY4Y2FiN2VjYmMzZTM3
MDMyNmI5MzkzZWY5NjA0NTkzMmEuLjY0MjE4NTUwMTYyNmZkMmU5Y2Y3ZDMyYWMyYmZlM2FmYmIz
ZjYxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNj
cmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAiVjhTY3JpcHRQcm9maWxlLmgiCiAK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9m
aWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggYzEzNDAwZWZlMmZiMzI2OTdhZDIzZDkzNmUzODM4OTcy
NDQ1NmQ3OC4uNzhkOTIxMGJkMWUyNTllY2MwMTY2MTg0M2Y2MDA1Njg2NTMzODBmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNj
cmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZU5vZGUuaCIKIAor
I2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZU5vZGUu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKaW5kZXggYjAzNWM3MGViYzc1ZjIwNWI2MzAzYWU3Y2U2MTQyZGU0
ZThiZGU4Zi4uYmY5NmM2M2RmNmVhY2JhZTQxYzFhMjA5ZDkwZTY5ZWZjYTc1YjFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjQzLDYgKzI0Myw3IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRD
b250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2NyaXB0SW52b2NhdGlv
bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmlwdFNvdXJjZS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlNjcm9sbGJhci5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNjcm9sbGJhckNsaWVudC5oJywKQEAgLTY0OSw2ICs2NTAsNyBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Ny
aXB0Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU2NyaXB0SW52b2Nh
dGlvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lLmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5NTAxNTQ2YjQwODI1MzI4NTA5
NTVmNmJlNS4uMjczZjM1ZjJmYmMyN2Y0ZTliY2MwOTQ4ZTQyMTI5NDk5YzU2N2Y2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBAIC00NCw2ICs0NCw4IEBAIHN0
cnVjdCBOUE9iamVjdDsKICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5hbWVzcGFjZSB2OCB7CiBjbGFz
cyBDb250ZXh0OworY2xhc3MgRnVuY3Rpb247CitjbGFzcyBPYmplY3Q7CiBjbGFzcyBWYWx1ZTsK
IHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xh
c3MgTG9jYWw7CkBAIC0yNzQsNiArMjc2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNv
bnN0IFdlYlNjcmlwdFNvdXJjZSYpID0gMDsKIAorICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdp
dGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZworICAgIC8vIGNh
bkV4ZWN1dCgpCisgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwKKyAgICAgICAgaW50IGFyZ2MsCisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pID0gMDsKKwogICAgIC8vIFJldHVybnMg
dGhlIFY4IGNvbnRleHQgZm9yIHRoaXMgZnJhbWUsIG9yIGFuIGVtcHR5IGhhbmRsZSBpZiB0aGVy
ZQogICAgIC8vIGlzIG5vbmUuCiAgICAgdmlydHVhbCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1h
aW5Xb3JsZFNjcmlwdENvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAzOTg5N2M4MjM2MmE4MzJjYmUyZjFjOWMxMjUz
OGRhYWEyYTc2OGIxLi40ODNhNzcwY2ZhYmI1MGI5NDAwNWY1Y2VhZmUwZWNkNDdkZmMyZTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTg5NCw2
ICs4OTQsMTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZVNj
cmlwdEFuZFJldHVyblZhbHVlKGNvbnN0IFdlYlNjcmlwdFMKICAgICByZXR1cm4gbV9mcmFtZS0+
c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzb3VyY2UuY29kZSwgc291
cmNlLnVybCwgcG9zaXRpb24pKS52OFZhbHVlKCk7CiB9CiAKKy8vIENhbGwgdGhlIGZ1bmN0aW9u
IHdpdGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZyBjYW5FeGVj
dXRlU2NyaXB0cy4KK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNhbGxGdW5j
dGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10p
Cit7CisgICAgcmV0dXJuIG1fZnJhbWUtPnNjcmlwdCgpLT5jYWxsRnVuY3Rpb25FdmVuSWZTY3Jp
cHREaXNhYmxlZChmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3YpLnY4VmFsdWUoKTsKK30K
KwogLy8gUmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkg
aGFuZGxlIGlmIHRoZXJlIGlzIG5vbmUuCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdlYkZyYW1l
SW1wbDo6bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDcwMGY2ZWE0MDM3ZTdiMjhiOTBiZGM4Zjk0
OTk0YzhhZWU5YTMxZjIuLjljODZkNzUxNGFjMDBlYTVmMWRiYjgxNzc5YjNjYTM1ODE2ZjM2NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0xMTAsNiAr
MTEwLDExIEBAIHB1YmxpYzoKICNpZiBXRUJLSVRfVVNJTkdfVjgKICAgICB2aXJ0dWFsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNv
bnN0IFdlYlNjcmlwdFNvdXJjZSYpOworICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKAorICAgICAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4sCisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sCisgICAgICAgIGlu
dCBhcmdjLAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKICAgICB2aXJ0
dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2Vi
RmlsZVN5c3RlbTo6VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJLaXQuY3BwCmluZGV4IDc3ODU4YzRlN2I5NzAxYTdmOTJkOTRhMmMwYTNhYmZiNDZmMGVl
MjUuLjIwMmNlZTc1ODU3ODJhMDAxNWY0NDEyYmVkZTY1MDhkZDY4NTcwYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldlYktpdE11dGF0
aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKQEAgLTg4LDYgKzg5LDE0
IEBAIHN0YXRpYyBib29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNp
emVfdCBsZW5ndGgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWZuZGVmIE5ERUJVRworc3Rh
dGljIHZvaWQgYXNzZXJ0VjhSZWN1cnNpb25TY29wZSgpCit7CisgICAgLy8gRklYTUU6IEVuYWJs
ZSB3aGVuIGNocm9taXVtIHVzYWdlIG9mIFdlYlNjcmlwdEludm9jYXRpb24gaGFzIGxhbmRlZC4K
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8IFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6
OnByb3Blcmx5VXNlZCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxh
dGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB7CiAgICAgaW5pdGlhbGl6ZVdp
dGhvdXRWOCh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOwpAQCAtOTcsNiArMTA2LDEwIEBAIHZvaWQg
aW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkK
ICAgICBXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQo
djg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJW
RVJTKQorI2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OkFkZENhbGxDb21wbGV0ZWRDYWxsYmFj
aygmYXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIC8vIGN1cnJlbnRUaHJl
YWQgd2lsbCBhbHdheXMgYmUgbm9uLW51bGwgaW4gcHJvZHVjdGlvbiwgYnV0IGNhbiBiZSBudWxs
IGluIENocm9taXVtIHVuaXQgdGVzdHMuCiAgICAgaWYgKFdlYlRocmVhZCogY3VycmVudFRocmVh
ZCA9IHdlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKSB7CiAgICAgICAgIEFT
U0VSVCghc19lbmRPZlRhc2tSdW5uZXIpOwpAQCAtMTM3LDYgKzE1MCwxMCBAQCB2b2lkIGluaXRp
YWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQpCiB2b2lkIHNodXRkb3duKCkKIHsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQor
I2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OlJlbW92ZUNhbGxDb21wbGV0ZWRDYWxsYmFjaygm
YXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIGlmIChzX2VuZE9mVGFza1J1
bm5lcikgewogICAgICAgICBBU1NFUlQoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRU
aHJlYWQoKSk7CiAgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFk
KCktPnJlbW92ZVRhc2tPYnNlcnZlcihzX2VuZE9mVGFza1J1bm5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134467</attachid>
            <date>2012-03-28 18:41:30 -0700</date>
            <delta_ts>2012-03-28 19:01:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120328184129.patch</filename>
            <type>text/plain</type>
            <size>38635</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJkNmMzNzg5NTEwNThm
ODI2MTJhNWVlMmRlMTQ2ZjJhMzI1ZWQ0Zi4uMDJmN2MyMzRkNzhiNzA5MzhkMWNjZjJiZWMxMzIx
N2NmMmM1Zjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTI4ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBFbmQtb2YtbWlj
cm90YXNrIHdvcmsgKGNhbmNlbGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAg
ICAgICAgZGVsaXZlcmluZyBET00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29w
ZSBiZWluZyBvbiB0aGUKKyAgICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50
byBzY3JpcHQuIFY4IHByb3ZpZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkg
dGhhdCBjb3VsZCBiZSB1c2VkIHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAg
ICAgIGV2ZW50cywgYnV0IGl0IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlw
dCBmb3IgdmFyaW91cworICAgICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJv
bSB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9i
amVjdHMgZnJvbSBmdW5jdGlvbiB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIs
CisgICAgICAgIHlldCBpdCdzIG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBl
dmVyeSB0aW1lIGEgSlMgd3JhcHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAg
ICBJbnN0ZWFkLCB0aGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhh
dCBlaXRoZXIgYSBWOFJlY3Vyc2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9y
IHNjcmlwdCkgb3IgYSBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
CisgICAgICAgICh3aGVuIGNhbGxpbmcgbm9uLWF1dGhvciBzY3JpcHQpIGlzIG9uIHRoZSBzdGFj
ayB3aGVuIFY4IHRoaW5rcyBpdCdzCisgICAgICAgIGZpbmlzaGVkIGV4ZWN1dGluZyBzY3JpcHQu
IFRoaXMgcmVxdWlyZXMgZHJvcHBpbmcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludAorICAgICAg
ICBvYmplY3RzIGluIGEgYnVuY2ggb2YgcGxhY2VzLCBtb3N0IG5vdGFibHkgdGhlIEluc3BlY3Rv
ci4KKyAgICAgICAgTm90ZSB0aGF0IGluIHJlbGVhc2UgbW9kZSwgdGhpcyBjbGFzcyBkb2VzIG5v
dGhpbmcgYW5kIHRodXMgc2hvdWxkIGJlCisgICAgICAgIG9wdGltaXplZCBhd2F5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsg
ZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjb2RlICh3aGVuIHJ1biBpbiBkZWJ1ZyBtb2RlKS4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDoKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNyZW1l
bnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0
ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnJl
Y3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKToKKyAgICAgICAgKEJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50Ojp+QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
RG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcDoKKwogMjAxMi0wMy0y
OCAgVmljdG9yIENhcmJ1bmUgIDx2Y2FyYnVuZUBhZG9iZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
ZCBwYXJ0aWN1bGFyIHJlbmRlcmluZyBmb3IgdGhlIHZvbHVtZSBzbGlkZXIgYW5kIHVzZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTczYWZjZmQ4OGE3ZDBiMzI0Yjk5NzQxZWNmNTIz
MDNjMGQzNDRmNS4uNzE0YjJkOTE5MmE3N2FjY2YyNDFhOWI4MTc5MDhiYjM0NDY0Mjc2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0yOCAgUmFm
YWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBj
b21wbGV0aW9uIGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlz
IG9uIHRoZSBzdGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAodjgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAg
ICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6
CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBsKToK
KyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OmFzc2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6c2h1dGRvd24pOgorCiAyMDEyLTAzLTI4ICBCaWxsIEJ1
ZGdlICA8YmJ1ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NvY2lhdGVkVVJMTG9hZGVy
IGRvZXMgbm90IHN1cHBvcnQgQ3Jvc3MgT3JpZ2luIFJlZGlyZWN0cyB3aGVuIHVzaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCBmZjRkYWUyNWY0NmRhNjJiYjJmMDdiNmZmNTU1Nzk3MmY0ZjE1ZjRhLi4yODJl
YjFkNjI4OTI1YjI4MzM0NzYyNWMzOTI2MzIzZjA4ZWE5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE0
MDcsNiArMTQwNyw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmggXAogICAgICAgICBiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L1JldGFpbmVkT2JqZWN0SW5mby5oIFwKKyAgICAgICAgYmluZGluZ3Mv
djgvU2FmZUFsbG9jYXRpb24uaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlv
bi5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogICAgICAg
ICBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggMWVlMGVjNzIyOTJiZGE1OGQ5ZWY1OTY2NjYxNjU0NDEyYThhOWQ0NC4uYmRmZWQ4YjVhM2Vh
YjAwMWVhN2YzZjMwNmZjZjE4YzI0OTM0ZjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjA2Niw2
ICsyMDY2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmgnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nj
aGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFj
dGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKaW5kZXgg
MzMyODI4YjIyYTM3OGQ0OWVhZDBhZGU3MjNmYTdiODRiYjk0NGViOC4uYjcyZGRlYmQwZWM1NzU5
NDM1OTE0YmVlMjIyMmVmZDYxNGQ5YTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGF0ZUV4dGVuc2lvbi5jcHAKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAj
aW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisj
aW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg5LDYgKzkwLDcgQEAgdm9pZCBEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKGJvb2wgYWxs
b3cpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBhcmd2WzBdID0g
djg6OkJvb2xlYW46Ok5ldyghYWxsb3cpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpD
YXN0KHNsZWVwRnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMxZDcxNjE5N2E0YmI0YTZiZjdj
NTA5Ni4uYmU0MTdlNGMyN2EwZGEzZjk1ZTJmMmIzMDA4NDM2NWE4YjM2NWRmMiAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25T
Y29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEwMCw3ICsxMDEsMTEgQEAg
dm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0
U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxs
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3Jv
dGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgICAgIHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9u
LT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIH0KICAgICBpZiAo
dmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCF2YWx1ZS0+SXNV
bmRlZmluZWQoKSAmJiB2YWx1ZS0+SXNBcnJheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOGRlOTU1MzdhZDdmMmNmZDFhZjY0
ZjgyZTlkYWRmYThkMjdkYzlkYy4uY2YxZTk4YWExZTNkYTVjMjIwZDk3M2U3NjViZjdiZmEwM2Zl
NzU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgog
I2luY2x1ZGUgIlY4TlBPYmplY3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xNjEsNiAr
MTYyLDEyIEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkK
ICAgICByZXR1cm4gVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
OwogfQogCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25FdmVuSWZT
Y3JpcHREaXNhYmxlZCh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBwZXJmb3JtIHRo
ZSBzYW1lIGlzUGF1c2VkIGNoZWNrIHRoYXQgaGFwcGVucyBpbiBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlU2NyaXB0LgorICAgIHJldHVybiBTY3JpcHRWYWx1ZShtX3Byb3h5LT5jYWxsRnVuY3Rp
b24oZnVuY3Rpb24sIHJlY2VpdmVyLCBhcmdjLCBhcmd2KSk7Cit9CisKIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgY29uc3Qg
VmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+JiBzb3VyY2VzKQogewogICAgIG1fcHJveHktPmV2YWx1
YXRlSW5Jc29sYXRlZFdvcmxkKHdvcmxkSUQsIHNvdXJjZXMsIDApOwpAQCAtMjQ1LDggKzI1Miwx
MCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpTdHJpbmc+IHNvdXJjZSA9IHY4OjpTdHJpbmc6Ok5ldygiaWYgKGdjKSBnYygp
OyIpOwogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5l
dygiZ2MiKTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2Ny
aXB0OjpDb21waWxlKHNvdXJjZSwgbmFtZSk7Ci0gICAgICAgIGlmICghc2NyaXB0LklzRW1wdHko
KSkKKyAgICAgICAgaWYgKCFzY3JpcHQuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICBWOFJlY3Vy
c2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOwogICAgICAgICAgICAg
c2NyaXB0LT5SdW4oKTsKKyAgICAgICAgfQogICAgIH0KICAgICB2OENvbnRleHQuRGlzcG9zZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IDlkMmVmZGViMThlZGM1MjY2MWFlOThjOGM2ODA4NTZmNzRjNTVkMGEuLjc0M2IxMmJkYjc0
NzNiODllODQ4MmM3OWJkOTM4MGM3ZGE0MTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogCiAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbkV2
ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAg
Ym9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBTaG91bGRSZXBsYWNlRG9j
dW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
ID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIzYjcxZjU4Yjk5
ZjAzMmYzOWI2YTY1MDRjODEwZjBlNWI1Li41YjdlY2U0ZDRhODdlY2Y0N2UxZmJiMGU3YTY1Zjdh
YzgxNzM5MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhKYXZhU2NyaXB0Q2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU3LDYgKzU4LDEzIEBAIHBy
aXZhdGU6CiAKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNh
bGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3Jp
cHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoZnVuY3Rpb25OYW1lKSkpOworICAgIFY4UmVj
dXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgcmV0dXJu
IGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQor
CiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKERvbnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2lu
dHNBY3RpdmF0ZWQodHJ1ZSkKQEAgLTEyOSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlv
bnNTdAogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUg
Y29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNh
c3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVz
dWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAsIGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
Y3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZh
bHVlKCkpOwogfQogCkBAIC0xNDEsOSArMTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24K
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6
Ok5ldygic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkludDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkg
fTsKLSAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3Jp
cHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSIsIDEsIGFyZ3YpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpz
ZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5l
dygic3RlcEludG9TdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0
ZXBJbnRvU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAK
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NF
UlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0
KHY4OjpTdHJpbmc6Ok5ldygic3RlcE92ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5j
dGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVi
dWdnZXJNZXRob2QoInN0ZXBPdmVyU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQ
cm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9u
KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwog
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0
KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2
KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7
CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCBjb25zdCBTdHJpbmcmIG5lCiAgICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0
U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVi
dWdDb250ZXh0KCkpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdl
dCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250
ZW50KSwgdjhCb29sZWFuKHByZXZpZXcpIH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4cmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywg
YXJndik7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJN
ZXRob2QoInNldFNjcmlwdFNvdXJjZSIsIDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXND
YXVnaHQoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlD
YXRjaC5NZXNzYWdlKCk7CiAgICAgICAgIGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUs
OSArMjU3LDggQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0
IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERl
YnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1
bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2Qo
ImN1cnJlbnRDYWxsRnJhbWUiLCAxLCBhcmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxG
cmFtZVY4LklzRW1wdHkoKSk7CiAgICAgaWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0
KCkpCkBAIC0zNTUsNiArMzU2LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhE
ZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVu
dERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0
ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAg
ICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CiAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0
KGV4Y2VwdGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwogICAgICAg
ICAgICAgfQogCkBAIC0zODksNiArMzkxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZW5z
dXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gZGVidWdnZXJDb250ZXh0ID0gdjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKTsKICAgICAg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwogICAg
ICAgICBTdHJpbmcgZGVidWdnZXJTY3JpcHRTb3VyY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oRGVidWdnZXJTY3JpcHRTb3VyY2VfanMpLCBzaXplb2YoRGVidWdnZXJTY3JpcHRTb3Vy
Y2VfanMpKTsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2tw
b2ludCByZWN1cnNpb25TY29wZTsKICAgICAgICAgbV9kZWJ1Z2dlclNjcmlwdC5zZXQodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKGRlYnVn
Z2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZGU4NDY1MTQwMTFlMTc1MWZk
NzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYxMjlkZTBlNDBiZWZhYmIwMTg3YThhNzg1NDUx
ODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hE
aWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAgICAgdm9pZCBlbnN1cmVEZWJ1Z2dlclNjcmlw
dENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVidWdn
ZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNj
cmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4
IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJlOWY5YzUwNjE1M2MuLmY1MTEwODcwYTYyYjkx
OTRkMmUyYzNhNDdhYmExYzlhZWM2YmQyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMzEsMTIgKzMxLDEzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAKKyNpbmNs
dWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCiAjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9u
U2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSA8djguaD4KQEAg
LTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJv
b2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zKQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFyZ3NbaV0gPSBt
X2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1
bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3Mu
Z2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB7CisgICAgICAg
IFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwgbV9hcmd1
bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB9CiAgICAgaWYgKCFzY29wZS5zdWNjZXNz
KCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIFNjcmlw
dFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA3
OTg2NzZlMWVlNjllODVhNzM4YjQ1MzI1MjQ5NDgxM2Q1YzI2OGU3Li5mN2RiZTA1OTE4ZWZjODNl
Mjc3NTlmOTEzYzFmZmQ0NTc3NjZjZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIDogbV9kb21E
YXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3Jl
YXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQorI2lmbmRlZiBOREVCVUcK
KyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgwKQorI2VuZGlmCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYmFjZDdlOWFhMjZmM2Y3
NDg2Y2U3OGJkMThjMDQ1OGU4N2EwNjlmNS4uZTU5Y2RkNjRmNzY3NWE0M2Q2ZGM5YWQ0MDhjMjRh
YTI1NGJhN2FlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTE1
Myw2ICsxNTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xvYmFs
SGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyAgICAg
ICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiAr
K21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAgICAgICBpbnQgZGVjcmVtZW50
SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIC0tbV9pbnRlcm5hbFNjcmlw
dFJlY3Vyc2lvbkxldmVsOyB9CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CkBAIC0xNzksNiArMTgz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBHbG9i
YWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7CisgICAgICAgIGludCBtX2ludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWw7CiAjZW5kaWYKICAgICB9OwogCkBAIC0yMDgsMzggKzIxMyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3ByZXZpb3VzOwogICAgIH07CiAK
LSAgICBjbGFzcyBTYWZlQWxsb2NhdGlvbiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
aW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBu
ZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOwotICAgICAgICBzdGF0
aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKLSAg
ICB9OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24pCi0gICAgewotICAgICAgICBp
ZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAg
ICAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0gICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4gb2JqZWN0VGVtcGxhdGUpCi0gICAgewotICAgICAgICBpZiAob2Jq
ZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAg
ICAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3RhbmNlKCk7Ci0gICAgfQotCi0gICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdKQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3RydWN0
b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0
YW5jZShhcmdjLCBhcmd2KTsKLSAgICB9Ci0KLQogCiAgICAgZW51bSBFeHRlcm5hbE1vZGUgewog
ICAgICAgICBFeHRlcm5hbGl6ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKaW5kZXggYzRjNjA1NDBhYjliNjhhNjkzY2RiNmZjMWU3N2ZmMDk0
YzQzNDFhNS4uYjdlM2FkNDljNWRlYjBkM2I0Njg5ZTlhY2Q0YTYzZTQyODRhOWEwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCAwNWRjMTgxYjk1ZTcxMzc3
MDg0OTgyNzgwZTAwMjNiYWM1MmE5ZGZiLi4yMmYyMjVjMjMxOGFiZDMyNmQzOTM5ZmNlNGIzOGFl
ZDYxNzNlNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0
YW5jZS5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9w
ZXJ0eVNldC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6
eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDYxNjNlYWE5NTg3ZTNmOWIxYWFhY2I4YWE5YzljMGNh
Y2NmMGNmM2EuLmRlNDk5MmNmYjY2YTJmMTQ3YzBjZGE1ZmEzMzdkMGM5ZDQ2MzZhODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3Bw
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNp
bmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1
cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogCiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTU1LDkgKzE1NiwxMiBAQCB2b2lkIFY4TGF6eUV2
ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1bigpIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9u
ZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dp
dGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUgPSBzY3JpcHQt
PlJ1bigpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlOworICAgIHsKKyAgICAgICAg
VjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICAg
ICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBpZiAodmFsdWUuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEyIEBAIHZvaWQgVjhMYXp5RXZl
bnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1szXSA9IHsg
bm9kZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBwZXIgfTsKIAotICAgIC8vIFVz
ZSBDYWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9u
U2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVkaWF0ZUZ1bmN0aW9uLT5DYWxs
KHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwotCisgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgICAgIGlubmVyVmFsdWUgPSBpbnRl
cm1lZGlhdGVGdW5jdGlvbi0+Q2FsbCh2OENvbnRleHQtPkdsb2JhbCgpLCAzLCBwYXJhbWV0ZXJz
KTsKKyAgICB9CiAgICAgaWYgKGlubmVyVmFsdWUuSXNFbXB0eSgpIHx8ICFpbm5lclZhbHVlLT5J
c0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QT2JqZWN0LmNwcAppbmRleCBlNDNkMjdlNjQwOWRlZTI1YThhZWU3MjY5NzBhNDdlNTI2
MDA1ZDM0Li5mNmRkMWY4ZjM2ZjRmNzg4YzExZDk5NTIwZGJhYjNjMmU0MDM4ZDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAog
CiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0Lmgi
CisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4SFRNTEFwcGxldEVsZW1lbnQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaAppbmRleCAzYjlh
ZDZlYzExZDA4NGU3YjEwZmU5NTRlNWNjNTJmNTY4N2YyZjg4Li42ZTM2MTkzNzJmMjY5MmFjODMx
MjQyZWQ0ZTVmOGQxYzcxNGJjNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhSZWN1cnNpb25TY29wZS5oCkBAIC0zMyw5ICszMywyNyBAQAogCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEMrKyBjYWxscyBp
bnRvIHNjcmlwdCBjb250ZXh0cyB3aGljaCBhcmUgIm93bmVkIiBieSBXZWJLaXQgKGNyZWF0ZWQg
aW4gYQorLy8gcHJvY2VzcyB3aGVyZSBXZWJLaXQuY3BwIGluaXRpYWxpemVzIHY4KSBtdXN0IGRl
Y2xhcmUgdGhlaXIgdHlwZToKKy8vCisvLyAgIDEuIENhbGxzIGludG8gcGFnZS9hdXRob3Igc2Ny
aXB0IGZyb20gYSBmcmFtZQorLy8gICAyLiBDYWxscyBpbnRvIHBhZ2UvYXV0aG9yIHNjcmlwdCBm
cm9tIGEgd29ya2VyCisvLyAgIDMuIENhbGxzIGludG8gaW50ZXJuYWwgc2NyaXB0ICh0eXBpY2Fs
bHkgc2V0dXAvdGVhcmRvd24gd29yaykKKy8vCisvLyBEZWJ1Zy10aW1lIGNoZWNraW5nIG9mIHRo
aXMgaXMgZW5mb3JjZWQgdmlhIHRoaXMgY2xhc3MuCisvLworLy8gQ2FsbHMgb2YgdHlwZSAoMSkg
c2hvdWxkIGdlbmVyYWxseSBnbyB0aHJvdWdoIFY4UHJveHksIGFzIGluc3BlY3RvcgorLy8gaW5z
dHJ1bWVudGF0aW9uIGlzIG5lZWRlZC4gQ2FsbHMgb2YgdHlwZSAoMikgc2hvdWxkIGFsd2F5cyBz
dGFjay1hbGxvY2F0ZSBhCisvLyBWOFJlY3Vyc2lvblNjb3BlIGluIHRoZSBzYW1lIGJsb2NrIGFz
IHRoZSBjYWxsIGludG8gc2NyaXB0LiBDYWxscyBvZiB0eXBlICgzKQorLy8gc2hvdWxkIHN0YWNr
IGFsbG9jYXRlIGEgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCAt
LSB0aGlzCisvLyBza2lwcyB3b3JrIHRoYXQgaXMgc3BlYydkIHRvIGhhcHBlbiBhdCB0aGUgZW5k
IG9mIHRoZSBvdXRlci1tb3N0IHNjcmlwdCBzdGFjaworLy8gZnJhbWUgb2YgY2FsbHMgaW50byBw
YWdlIHNjcmlwdDoKKy8vCisvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrLyNwZXJmb3JtLWEtbWljcm90YXNrLWNoZWNrcG9pbnQKIGNsYXNzIFY4UmVj
dXJzaW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFY4UmVjdXJzaW9uU2NvcGUp
OwogcHVibGljOgpAQCAtNTEsNyArNjksMzQgQEAgcHVibGljOgogICAgICAgICAgICAgZGlkTGVh
dmVTY3JpcHRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIGludCByZWN1cnNpb25MZXZl
bCgpIHsgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lv
bkxldmVsKCk7IH0KKyAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVsKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWN1cnNpb25M
ZXZlbCgpOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0aWMgYm9vbCBwcm9wZXJs
eVVzZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2lvbkxldmVsKCkgPiAwIHx8IFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSA+IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBjbGFzcyBCeXBhc3NNaWNyb3Rhc2tD
aGVja3BvaW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJ5cGFzc01pY3JvdGFza0NoZWNrcG9p
bnQoKQorICAgICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbCgpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICB+QnlwYXNzTWljcm90YXNrQ2hl
Y2twb2ludCgpCisgICAgICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5kZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vy
c2lvbkxldmVsKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IGJm
OGQyYjMzOWNjMTVkMTYzODRlMDVhNTc5NzU3NjA4YTZlNjNhMDkuLmY4MmJkZDA3ZjllYzEwZmEz
Y2FjMmIyOTZlMmQ4MzUyOTFmOGRkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRX
b3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA0MWFlMDcxNzE1NWU1MTdk
MDkwNjA5YzkxYzk1NDE2MWQ2YjNlNjQ3Li5jYWU2Njg5NzAwMjlhZGM3Y2NjZjY5ZjcyN2YyZDlk
MjM5OTY5ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KQEAgLTY2LDcgKzY3LDExIEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBW
OEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3
CiAgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRv
dyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgpOworICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBzaGFkb3c7CisgICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NN
aWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgICAgICBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1
Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3
NzlmNzY1YzhhMy4uYWQ1ZmI5ZDAxYmJiNjJiYThkNTY5ZjVhNmI4YmM4MTliYzFlOTU2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
U3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFt
ZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYgKzk4LDcgQEAgU2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVy
ZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBl
Y3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3Rh
bmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgogICAgIHY4OjpM
b2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNj
cmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQgcmVjdXJzaW9uU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdiA9IHNjcmlw
dC0+UnVuKCk7CiAgICAgQVNTRVJUKCF2LklzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHYtPklzRnVu
Y3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IDMyZDg3MjY4Y2FiN2VjYmMzZTM3
MDMyNmI5MzkzZWY5NjA0NTkzMmEuLjY0MjE4NTUwMTYyNmZkMmU5Y2Y3ZDMyYWMyYmZlM2FmYmIz
ZjYxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNj
cmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAiVjhTY3JpcHRQcm9maWxlLmgiCiAK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9m
aWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggYzEzNDAwZWZlMmZiMzI2OTdhZDIzZDkzNmUzODM4OTcy
NDQ1NmQ3OC4uNzhkOTIxMGJkMWUyNTllY2MwMTY2MTg0M2Y2MDA1Njg2NTMzODBmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNj
cmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZU5vZGUuaCIKIAor
I2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZU5vZGUu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKaW5kZXggYjAzNWM3MGViYzc1ZjIwNWI2MzAzYWU3Y2U2MTQyZGU0
ZThiZGU4Zi4uYmY5NmM2M2RmNmVhY2JhZTQxYzFhMjA5ZDkwZTY5ZWZjYTc1YjFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjQzLDYgKzI0Myw3IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRD
b250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2NyaXB0SW52b2NhdGlv
bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmlwdFNvdXJjZS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlNjcm9sbGJhci5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNjcm9sbGJhckNsaWVudC5oJywKQEAgLTY0OSw2ICs2NTAsNyBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Ny
aXB0Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU2NyaXB0SW52b2Nh
dGlvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lLmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5NTAxNTQ2YjQwODI1MzI4NTA5
NTVmNmJlNS4uMjczZjM1ZjJmYmMyN2Y0ZTliY2MwOTQ4ZTQyMTI5NDk5YzU2N2Y2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBAIC00NCw2ICs0NCw4IEBAIHN0
cnVjdCBOUE9iamVjdDsKICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5hbWVzcGFjZSB2OCB7CiBjbGFz
cyBDb250ZXh0OworY2xhc3MgRnVuY3Rpb247CitjbGFzcyBPYmplY3Q7CiBjbGFzcyBWYWx1ZTsK
IHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xh
c3MgTG9jYWw7CkBAIC0yNzQsNiArMjc2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNv
bnN0IFdlYlNjcmlwdFNvdXJjZSYpID0gMDsKIAorICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdp
dGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZworICAgIC8vIGNh
bkV4ZWN1dCgpCisgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwKKyAgICAgICAgaW50IGFyZ2MsCisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pID0gMDsKKwogICAgIC8vIFJldHVybnMg
dGhlIFY4IGNvbnRleHQgZm9yIHRoaXMgZnJhbWUsIG9yIGFuIGVtcHR5IGhhbmRsZSBpZiB0aGVy
ZQogICAgIC8vIGlzIG5vbmUuCiAgICAgdmlydHVhbCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1h
aW5Xb3JsZFNjcmlwdENvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAzOTg5N2M4MjM2MmE4MzJjYmUyZjFjOWMxMjUz
OGRhYWEyYTc2OGIxLi40ODNhNzcwY2ZhYmI1MGI5NDAwNWY1Y2VhZmUwZWNkNDdkZmMyZTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTg5NCw2
ICs4OTQsMTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZVNj
cmlwdEFuZFJldHVyblZhbHVlKGNvbnN0IFdlYlNjcmlwdFMKICAgICByZXR1cm4gbV9mcmFtZS0+
c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzb3VyY2UuY29kZSwgc291
cmNlLnVybCwgcG9zaXRpb24pKS52OFZhbHVlKCk7CiB9CiAKKy8vIENhbGwgdGhlIGZ1bmN0aW9u
IHdpdGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZyBjYW5FeGVj
dXRlU2NyaXB0cy4KK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNhbGxGdW5j
dGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10p
Cit7CisgICAgcmV0dXJuIG1fZnJhbWUtPnNjcmlwdCgpLT5jYWxsRnVuY3Rpb25FdmVuSWZTY3Jp
cHREaXNhYmxlZChmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3YpLnY4VmFsdWUoKTsKK30K
KwogLy8gUmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkg
aGFuZGxlIGlmIHRoZXJlIGlzIG5vbmUuCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdlYkZyYW1l
SW1wbDo6bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDcwMGY2ZWE0MDM3ZTdiMjhiOTBiZGM4Zjk0
OTk0YzhhZWU5YTMxZjIuLjljODZkNzUxNGFjMDBlYTVmMWRiYjgxNzc5YjNjYTM1ODE2ZjM2NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0xMTAsNiAr
MTEwLDExIEBAIHB1YmxpYzoKICNpZiBXRUJLSVRfVVNJTkdfVjgKICAgICB2aXJ0dWFsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNv
bnN0IFdlYlNjcmlwdFNvdXJjZSYpOworICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKAorICAgICAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4sCisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sCisgICAgICAgIGlu
dCBhcmdjLAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKICAgICB2aXJ0
dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2Vi
RmlsZVN5c3RlbTo6VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJLaXQuY3BwCmluZGV4IDc3ODU4YzRlN2I5NzAxYTdmOTJkOTRhMmMwYTNhYmZiNDZmMGVl
MjUuLjI0NzZjNzljZWQ5NWYyMWVjOWEyZmUxYjY2NzMzY2I4MjkzNjQ1ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldlYktpdE11dGF0
aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKQEAgLTg4LDYgKzg5LDE0
IEBAIHN0YXRpYyBib29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNp
emVfdCBsZW5ndGgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWZuZGVmIE5ERUJVRworc3Rh
dGljIHZvaWQgYXNzZXJ0VjhSZWN1cnNpb25TY29wZSgpCit7CisgICAgLy8gRklYTUU6IEVuYWJs
ZSB3aGVuIGNocm9taXVtIHVzYWdlIG9mIFdlYlNjcmlwdEludm9jYXRpb24gaGFzIGxhbmRlZC4K
KyAgICAvLyBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8IFdlYkNvcmU6OlY4UmVjdXJzaW9uU2Nv
cGU6OnByb3Blcmx5VXNlZCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoV2ViS2l0
UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB7CiAgICAgaW5pdGlhbGl6
ZVdpdGhvdXRWOCh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOwpAQCAtOTcsNiArMTA2LDEwIEBAIHZv
aWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9y
dCkKICAgICBXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6
ZWQodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorI2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OkFkZENhbGxDb21wbGV0ZWRDYWxs
YmFjaygmYXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIC8vIGN1cnJlbnRU
aHJlYWQgd2lsbCBhbHdheXMgYmUgbm9uLW51bGwgaW4gcHJvZHVjdGlvbiwgYnV0IGNhbiBiZSBu
dWxsIGluIENocm9taXVtIHVuaXQgdGVzdHMuCiAgICAgaWYgKFdlYlRocmVhZCogY3VycmVudFRo
cmVhZCA9IHdlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKSB7CiAgICAgICAg
IEFTU0VSVCghc19lbmRPZlRhc2tSdW5uZXIpOwpAQCAtMTM3LDYgKzE1MCwxMCBAQCB2b2lkIGlu
aXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1
cHBvcnQpCiB2b2lkIHNodXRkb3duKCkKIHsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJT
KQorI2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OlJlbW92ZUNhbGxDb21wbGV0ZWRDYWxsYmFj
aygmYXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIGlmIChzX2VuZE9mVGFz
a1J1bm5lcikgewogICAgICAgICBBU1NFUlQoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJl
bnRUaHJlYWQoKSk7CiAgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhy
ZWFkKCktPnJlbW92ZVRhc2tPYnNlcnZlcihzX2VuZE9mVGFza1J1bm5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134475</attachid>
            <date>2012-03-28 19:01:51 -0700</date>
            <delta_ts>2012-03-29 10:16:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120328190150.patch</filename>
            <type>text/plain</type>
            <size>46806</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRkMWQ5MGVmMjllMWYy
N2IxNWIxZmZmYTFiNjVhNjQ0YTc2NDFlMi4uNDczM2RjNDI3ZTU4ZjBjNDMzOTQwYjZhZGEzOThi
M2FlNDRmNzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTI4ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBFbmQtb2YtbWlj
cm90YXNrIHdvcmsgKGNhbmNlbGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAg
ICAgICAgZGVsaXZlcmluZyBET00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29w
ZSBiZWluZyBvbiB0aGUKKyAgICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50
byBzY3JpcHQuIFY4IHByb3ZpZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkg
dGhhdCBjb3VsZCBiZSB1c2VkIHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAg
ICAgIGV2ZW50cywgYnV0IGl0IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlw
dCBmb3IgdmFyaW91cworICAgICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJv
bSB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9i
amVjdHMgZnJvbSBmdW5jdGlvbiB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIs
CisgICAgICAgIHlldCBpdCdzIG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBl
dmVyeSB0aW1lIGEgSlMgd3JhcHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAg
ICBJbnN0ZWFkLCB0aGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhh
dCBlaXRoZXIgYSBWOFJlY3Vyc2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9y
IHNjcmlwdCkgb3IgYSBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
CisgICAgICAgICh3aGVuIGNhbGxpbmcgbm9uLWF1dGhvciBzY3JpcHQpIGlzIG9uIHRoZSBzdGFj
ayB3aGVuIFY4IHRoaW5rcyBpdCdzCisgICAgICAgIGZpbmlzaGVkIGV4ZWN1dGluZyBzY3JpcHQu
IFRoaXMgcmVxdWlyZXMgZHJvcHBpbmcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludAorICAgICAg
ICBvYmplY3RzIGluIGEgYnVuY2ggb2YgcGxhY2VzLCBtb3N0IG5vdGFibHkgdGhlIEluc3BlY3Rv
ci4KKyAgICAgICAgTm90ZSB0aGF0IGluIHJlbGVhc2UgbW9kZSwgdGhpcyBjbGFzcyBkb2VzIG5v
dGhpbmcgYW5kIHRodXMgc2hvdWxkIGJlCisgICAgICAgIG9wdGltaXplZCBhd2F5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsg
ZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjb2RlICh3aGVuIHJ1biBpbiBkZWJ1ZyBtb2RlKS4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDoKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNyZW1l
bnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0
ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnJl
Y3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKToKKyAgICAgICAgKEJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50Ojp+QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
RG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcDoKKwogMjAxMi0wMy0y
OCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBkb24ndCBleHBvc2UgSURCRGF0YWJhc2VFcnJvciB0byBzY3JpcHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggOTczYWZjZmQ4OGE3ZDBiMzI0Yjk5NzQxZWNmNTIzMDNjMGQzNDRm
NS4uNzE0YjJkOTE5MmE3N2FjY2YyNDFhOWI4MTc5MDhiYjM0NDY0Mjc2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0yOCAgUmFmYWVsIFdlaW5z
dGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0aW9u
IGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRoZSBz
dGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZS5oOgorICAgICAgICAodjgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVJbXBsOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6CisgICAgICAg
ICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmFz
c2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYktpdDo6c2h1dGRvd24pOgorCiAyMDEyLTAzLTI4ICBCaWxsIEJ1ZGdlICA8YmJ1
ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyIGRvZXMgbm90
IHN1cHBvcnQgQ3Jvc3MgT3JpZ2luIFJlZGlyZWN0cyB3aGVuIHVzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCBmZjRkYWUyNWY0NmRhNjJiYjJmMDdiNmZmNTU1Nzk3MmY0ZjE1ZjRhLi4yODJlYjFkNjI4OTI1
YjI4MzM0NzYyNWMzOTI2MzIzZjA4ZWE5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE0MDcsNiArMTQw
Nyw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgg
XAogICAgICAgICBiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L1JldGFpbmVkT2JqZWN0SW5mby5oIFwKKyAgICAgICAgYmluZGluZ3MvdjgvU2FmZUFs
bG9jYXRpb24uaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogICAgICAgICBiaW5kaW5n
cy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGNlNDJk
ZDFhZTJhMGM1MzM3YjRhOTY3YTZiY2JhODI2YTVjM2FiYi4uYTQ0YTYzYTY2YmMxMGVjZmRmMGU3
YzMyOWRhYjA2Zjc2ZDA5MjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjA2NSw2ICsyMDY1LDcg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1NhZmVBbGxvY2F0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFj
dGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKaW5kZXggMzMyODI4YjIy
YTM3OGQ0OWVhZDBhZGU3MjNmYTdiODRiYjk0NGViOC4uYjcyZGRlYmQwZWM1NzU5NDM1OTE0YmVl
MjIyMmVmZDYxNGQ5YTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RGF0ZUV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5jcHAKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAi
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg5LDYgKzkw
LDcgQEAgdm9pZCBEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKGJvb2wgYWxsb3cpCiAKICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBhcmd2WzBdID0gdjg6OkJvb2xl
YW46Ok5ldyghYWxsb3cpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0No
ZWNrcG9pbnQgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHNsZWVw
RnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMxZDcxNjE5N2E0YmI0YTZiZjdjNTA5Ni4uYmU0
MTdlNGMyN2EwZGEzZjk1ZTJmMmIzMDA4NDM2NWE4YjM2NWRmMiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEwMCw3ICsxMDEsMTEgQEAgdm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gc2hl
bGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0c0Z1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQgc2NvcGU7CisgICAgICAgIHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIH0KICAgICBpZiAodmFsdWUuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCF2YWx1ZS0+SXNVbmRlZmluZWQo
KSAmJiB2YWx1ZS0+SXNBcnJheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TYWZl
QWxsb2NhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNzAwNWQ4ZmY5MmRhM2U3MTZmNGNjOTQ0YmVkYzBk
NWNjNzAyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
YWZlQWxsb2NhdGlvbi5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKyNpZm5kZWYgU2FmZUFsbG9jYXRpb25faAorI2RlZmluZSBTYWZlQWxsb2NhdGlvbl9oCisK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCisK
KyNpbmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNhZmVBbGxv
Y2F0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4pOworICAgIHN0YXRpYyBpbmxp
bmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dFRlbXBsYXRlPik7CisgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSk7Cit9OworCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9j
YXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbikKK3sK
KyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBW
OFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgIHJl
dHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoKTsKK30KKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+
IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gb2JqZWN0VGVtcGxhdGUpCit7CisgICAgaWYgKG9iamVjdFRlbXBsYXRlLklzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9y
TW9kZSBjb25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90
YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3Rh
bmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQgYXJnYywgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0b3JN
b2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rh
c2tDaGVja3BvaW50IHNjb3BlOworICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoYXJn
YywgYXJndik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNhZmVB
bGxvY2F0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggOGRlOTU1MzdhZDdmMmNmZDFhZjY0ZjgyZTlkYWRmYThkMjdkYzlkYy4u
Y2YxZTk4YWExZTNkYTVjMjIwZDk3M2U3NjViZjdiZmEwM2ZlNzU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTYyLDYgKzYyLDcg
QEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4TlBPYmplY3Qu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgog
I2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xNjEsNiArMTYyLDEyIEBAIGJvb2wgU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKICAgICByZXR1cm4gVXNlckdlc3R1
cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogfQogCitTY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCh2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2
ZXIsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBwZXJmb3JtIHRoZSBzYW1lIGlzUGF1c2VkIGNoZWNr
IHRoYXQgaGFwcGVucyBpbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0LgorICAgIHJl
dHVybiBTY3JpcHRWYWx1ZShtX3Byb3h5LT5jYWxsRnVuY3Rpb24oZnVuY3Rpb24sIHJlY2VpdmVy
LCBhcmdjLCBhcmd2KSk7Cit9CisKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklz
b2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgY29uc3QgVmVjdG9yPFNjcmlwdFNvdXJjZUNv
ZGU+JiBzb3VyY2VzKQogewogICAgIG1fcHJveHktPmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKHdv
cmxkSUQsIHNvdXJjZXMsIDApOwpAQCAtMjQ1LDggKzI1MiwxMCBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNv
dXJjZSA9IHY4OjpTdHJpbmc6Ok5ldygiaWYgKGdjKSBnYygpOyIpOwogICAgICAgICB2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5ldygiZ2MiKTsKICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHNvdXJjZSwg
bmFtZSk7Ci0gICAgICAgIGlmICghc2NyaXB0LklzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFzY3Jp
cHQuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNy
b3Rhc2tDaGVja3BvaW50IHNjb3BlOwogICAgICAgICAgICAgc2NyaXB0LT5SdW4oKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICB2OENvbnRleHQuRGlzcG9zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDlkMmVmZGViMThlZGM1MjY2
MWFlOThjOGM2ODA4NTZmNzRjNTVkMGEuLjc0M2IxMmJkYjc0NzNiODllODQ4MmM3OWJkOTM4MGM3
ZGE0MTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogCiAgICAgU2NyaXB0VmFsdWUgZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAgICAgU2NyaXB0VmFsdWUgZXhlY3V0
ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFs
c2UpOworICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgaW50IGFyZ2Ms
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2Ny
aXB0VVJMKGNvbnN0IEtVUkwmLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwg
c2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERl
YnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIzYjcxZjU4Yjk5ZjAzMmYzOWI2YTY1MDRjODEwZjBl
NWI1Li5hOGYyYzA0MzcwNjc0ZGRlNmNhMmE4ZDZlNDMwZWZkM2VjMjU1NjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiVjhSZWN1
cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTU3LDYgKzU4LDEzIEBAIHByaXZhdGU6CiAKIH0KIAordjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdKQoreworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3Ry
aW5nOjpOZXcoZnVuY3Rpb25OYW1lKSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVi
dWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQorCiBTY3JpcHREZWJ1Z1NlcnZlcjo6
U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERvbnRQ
YXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKQEAg
LTEyOSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwo
bV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIs
IDAsIGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQogCkBAIC0xNDEs
OSArMTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24KICAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6Okdl
dERlYnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRQYXVz
ZU9uRXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9k
ZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6
OkludDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkgfTsKLSAgICBzZXRQYXVzZU9uRXhj
ZXB0aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwor
ICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDEsIGFy
Z3YpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVu
dChib29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3Rh
dGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcEludG9TdGF0ZW1lbnQi
KSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3Rh
dGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAx
LCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBJbnRvU3RhdGVtZW50IiwgMSwg
YXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3Rl
cE92ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2Vy
U2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdmVy
U3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNQ
YXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+
Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJN
ZXRob2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFt
KCk7CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAg
ICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcg
djg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNl
dFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
djhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSwgdjhCb29sZWFuKHByZXZp
ZXcpIH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVy
Ym9zZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gZnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywgYXJndik7CisgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoInNldFNjcmlwdFNvdXJj
ZSIsIDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewogICAgICAgICB2
ODo6TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlDYXRjaC5NZXNzYWdlKCk7CiAgICAg
ICAgIGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUsOSArMjU3LDggQEAgYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2Fs
bEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1
cnJlbnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3Vy
cmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJy
ZW50Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2QoImN1cnJlbnRDYWxsRnJhbWUiLCAx
LCBhcmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxGcmFtZVY4LklzRW1wdHkoKSk7CiAg
ICAgaWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0KCkpCkBAIC0zNTUsNiArMzU2LDcg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpE
ZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5n
OjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdl
dHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigp
KTsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6
OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGV4Y2VwdGlvbkdldHRlclZhbHVl
KS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwogICAgICAgICAgICAgfQogCkBAIC0zODksNiAr
MzkxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21w
aWxlZCgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0ID0g
djg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKTsKICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwogICAgICAgICBTdHJpbmcgZGVidWdnZXJT
Y3JpcHRTb3VyY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oRGVidWdnZXJTY3JpcHRT
b3VyY2VfanMpLCBzaXplb2YoRGVidWdnZXJTY3JpcHRTb3VyY2VfanMpKTsKKyAgICAgICAgVjhS
ZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY3BwZTsKICAgICAgICAg
bV9kZWJ1Z2dlclNjcmlwdC5zZXQodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2Ny
aXB0OjpDb21waWxlKHY4U3RyaW5nKGRlYnVnZ2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmgKaW5kZXggZGU4NDY1MTQwMTFlMTc1MWZkNzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYx
MjlkZTBlNDBiZWZhYmIwMTg3YThhNzg1NDUxODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAg
ICAgdm9pZCBlbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5k
bGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVj
dD4gbV9leGVjdXRpb25TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJl
OWY5YzUwNjE1M2MuLjA2ZjU1YTk5M2FmOWE2ZGY0M2NhNDRjYjNjMDU1MjU3NTliMTQ2MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cApAQCAtMzEsMTIgKzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1
ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogCiAjaW5jbHVkZSA8djguaD4KQEAgLTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUg
U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRF
eGNlcHRpb25zKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIGFyZ3NbaV0gPSBtX2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0
LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHJlc3VsdDsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgc2NvcGUoZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwo
dGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB9CiAgICAg
aWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcAppbmRleCA3OTg2NzZlMWVlNjllODVhNzM4YjQ1MzI1MjQ5NDgxM2Q1YzI2OGU3
Li5mN2RiZTA1OTE4ZWZjODNlMjc3NTlmOTEzYzFmZmQ0NTc3NjZjZjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29s
YXRlKQogICAgIDogbV9kb21EYXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENv
bnN0cnVjdG9yTW9kZTo6Q3JlYXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgw
KQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgw
KQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5k
ZXggYmFjZDdlOWFhMjZmM2Y3NDg2Y2U3OGJkMThjMDQ1OGU4N2EwNjlmNS4uZTU5Y2RkNjRmNzY3
NWE0M2Q2ZGM5YWQ0MDhjMjRhYTI1NGJhN2FlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKQEAgLTE1Myw2ICsxNTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgp
IHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJz
aW9uTGV2ZWw7IH0KKyAgICAgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSB7IHJldHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAg
ICAgICBpbnQgZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJu
IC0tbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CiAjZW5kaWYKIAogICAgIHByaXZh
dGU6CkBAIC0xNzksNiArMTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5E
RUJVRwogICAgICAgICBHbG9iYWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7CisgICAgICAg
IGludCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7CiAjZW5kaWYKICAgICB9OwogCkBA
IC0yMDgsMzggKzIxMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3By
ZXZpb3VzOwogICAgIH07CiAKLSAgICBjbGFzcyBTYWZlQWxsb2NhdGlvbiB7Ci0gICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdKTsKLSAgICB9OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVB
bGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24p
Ci0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29u
c3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKCk7Ci0g
ICAgfQotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gb2JqZWN0VGVtcGxhdGUpCi0gICAg
ewotICAgICAgICBpZiAob2JqZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29u
c3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3RhbmNl
KCk7Ci0gICAgfQotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpu
ZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIGludCBhcmdjLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9u
LklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
LSAgICAgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uLT5OZXdJbnN0YW5jZShhcmdjLCBhcmd2KTsKLSAgICB9Ci0KLQogCiAgICAgZW51
bSBFeHRlcm5hbE1vZGUgewogICAgICAgICBFeHRlcm5hbGl6ZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggYzRjNjA1NDBhYjliNjhh
NjkzY2RiNmZjMWU3N2ZmMDk0YzQzNDFhNS4uYjdlM2FkNDljNWRlYjBkM2I0Njg5ZTlhY2Q0YTYz
ZTQyODRhOWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2lu
Y2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRl
eCAwNWRjMTgxYjk1ZTcxMzc3MDg0OTgyNzgwZTAwMjNiYWM1MmE5ZGZiLi4yMmYyMjVjMjMxOGFi
ZDMyNmQzOTM5ZmNlNGIzOGFlZDYxNzNlNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRh
cmdldEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIlNWR0VsZW1lbnRJbnN0YW5jZS5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDYxNjNlYWE5NTg3ZTNm
OWIxYWFhY2I4YWE5YzljMGNhY2NmMGNmM2EuLmRlNDk5MmNmYjY2YTJmMTQ3YzBjZGE1ZmEzMzdk
MGM5ZDQ2MzZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6
eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6
eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhh
bmRsZS5oIgogCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTU1LDkgKzE1Niwx
MiBAQCB2b2lkIFY4TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1bigpIGRpcmVjdGx5
IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZl
U2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ug
c3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
OworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2tw
b2ludCBzY29wZTsKKyAgICAgICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBp
ZiAodmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEy
IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cGFyYW1ldGVyc1szXSA9IHsgbm9kZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBw
ZXIgfTsKIAotICAgIC8vIFVzZSBDYWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBj
YWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhh
Y2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVk
aWF0ZUZ1bmN0aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwot
CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4
UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgICAg
IGlubmVyVmFsdWUgPSBpbnRlcm1lZGlhdGVGdW5jdGlvbi0+Q2FsbCh2OENvbnRleHQtPkdsb2Jh
bCgpLCAzLCBwYXJhbWV0ZXJzKTsKKyAgICB9CiAgICAgaWYgKGlubmVyVmFsdWUuSXNFbXB0eSgp
IHx8ICFpbm5lclZhbHVlLT5Jc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCBlNDNkMjdlNjQwOWRlZTI1
YThhZWU3MjY5NzBhNDdlNTI2MDA1ZDM0Li5mNmRkMWY4ZjM2ZjRmNzg4YzExZDk5NTIwZGJhYjNj
MmU0MDM4ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJOUFY4T2JqZWN0LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4SFRNTEFw
cGxldEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UmVjdXJzaW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9u
U2NvcGUuaAppbmRleCAzYjlhZDZlYzExZDA4NGU3YjEwZmU5NTRlNWNjNTJmNTY4N2YyZjg4Li42
ZTM2MTkzNzJmMjY5MmFjODMxMjQyZWQ0ZTVmOGQxYzcxNGJjNWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCkBAIC0zMyw5ICszMywyNyBAQAog
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKy8vIEMrKyBjYWxscyBpbnRvIHNjcmlwdCBjb250ZXh0cyB3aGljaCBhcmUgIm93bmVkIiBi
eSBXZWJLaXQgKGNyZWF0ZWQgaW4gYQorLy8gcHJvY2VzcyB3aGVyZSBXZWJLaXQuY3BwIGluaXRp
YWxpemVzIHY4KSBtdXN0IGRlY2xhcmUgdGhlaXIgdHlwZToKKy8vCisvLyAgIDEuIENhbGxzIGlu
dG8gcGFnZS9hdXRob3Igc2NyaXB0IGZyb20gYSBmcmFtZQorLy8gICAyLiBDYWxscyBpbnRvIHBh
Z2UvYXV0aG9yIHNjcmlwdCBmcm9tIGEgd29ya2VyCisvLyAgIDMuIENhbGxzIGludG8gaW50ZXJu
YWwgc2NyaXB0ICh0eXBpY2FsbHkgc2V0dXAvdGVhcmRvd24gd29yaykKKy8vCisvLyBEZWJ1Zy10
aW1lIGNoZWNraW5nIG9mIHRoaXMgaXMgZW5mb3JjZWQgdmlhIHRoaXMgY2xhc3MuCisvLworLy8g
Q2FsbHMgb2YgdHlwZSAoMSkgc2hvdWxkIGdlbmVyYWxseSBnbyB0aHJvdWdoIFY4UHJveHksIGFz
IGluc3BlY3RvcgorLy8gaW5zdHJ1bWVudGF0aW9uIGlzIG5lZWRlZC4gQ2FsbHMgb2YgdHlwZSAo
Mikgc2hvdWxkIGFsd2F5cyBzdGFjay1hbGxvY2F0ZSBhCisvLyBWOFJlY3Vyc2lvblNjb3BlIGlu
IHRoZSBzYW1lIGJsb2NrIGFzIHRoZSBjYWxsIGludG8gc2NyaXB0LiBDYWxscyBvZiB0eXBlICgz
KQorLy8gc2hvdWxkIHN0YWNrIGFsbG9jYXRlIGEgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWlj
cm90YXNrQ2hlY2twb2ludCAtLSB0aGlzCisvLyBza2lwcyB3b3JrIHRoYXQgaXMgc3BlYydkIHRv
IGhhcHBlbiBhdCB0aGUgZW5kIG9mIHRoZSBvdXRlci1tb3N0IHNjcmlwdCBzdGFjaworLy8gZnJh
bWUgb2YgY2FsbHMgaW50byBwYWdlIHNjcmlwdDoKKy8vCisvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwZXJmb3JtLWEtbWljcm90YXNrLWNoZWNr
cG9pbnQKIGNsYXNzIFY4UmVjdXJzaW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFY4UmVjdXJzaW9uU2NvcGUpOwogcHVibGljOgpAQCAtNTEsNyArNjksMzQgQEAgcHVibGljOgog
ICAgICAgICAgICAgZGlkTGVhdmVTY3JpcHRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGludCByZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
dXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7IH0KKyAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxl
dmVsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT5yZWN1cnNpb25MZXZlbCgpOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBz
dGF0aWMgYm9vbCBwcm9wZXJseVVzZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2lv
bkxldmVsKCkgPiAwIHx8IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmludGVy
bmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSA+IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBjbGFz
cyBCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJ5cGFz
c01pY3JvdGFza0NoZWNrcG9pbnQoKQorICAgICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAg
ICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW5jcmVtZW50SW50ZXJu
YWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICB+
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCgpCisgICAgICAgIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5kZWNyZW1lbnRJ
bnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuY3BwCmluZGV4IGJmOGQyYjMzOWNjMTVkMTYzODRlMDVhNTc5NzU3NjA4YTZlNjNhMDku
LmY4MmJkZDA3ZjllYzEwZmEzY2FjMmIyOTZlMmQ4MzUyOTFmOGRkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRl
eCA0MWFlMDcxNzE1NWU1MTdkMDkwNjA5YzkxYzk1NDE2MWQ2YjNlNjQ3Li5jYWU2Njg5NzAwMjlh
ZGM3Y2NjZjY5ZjcyN2YyZDlkMjM5OTY5ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4
Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3Bl
LmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTY2LDcgKzY3LDExIEBAIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiB3CiAgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogCi0gICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHNoYWRvdyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgpOwor
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFkb3c7CisgICAgeworICAgICAgICBWOFJlY3Vy
c2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgICAgICBzaGFk
b3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYgKHNo
YWRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
ICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6
OmluZm8sIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgy
YjI0MjBiY2UxM2ZlZGY2MTQ3NzlmNzY1YzhhMy4uYWQ1ZmI5ZDAxYmJiNjJiYThkNTY5ZjVhNmI4
YmM4MTliYzFlOTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJW
OEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYgKzk4
LDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQg
YW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRo
ZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIElu
amVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5z
cGVjdG9yLgogICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpD
b21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgcmVjdXJzaW9uU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdiA9IHNjcmlwdC0+UnVuKCk7CiAgICAgQVNTRVJUKCF2LklzRW1wdHkoKSk7CiAg
ICAgQVNTRVJUKHYtPklzRnVuY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IDMy
ZDg3MjY4Y2FiN2VjYmMzZTM3MDMyNmI5MzkzZWY5NjA0NTkzMmEuLjY0MjE4NTUwMTYyNmZkMmU5
Y2Y3ZDMyYWMyYmZlM2FmYmIzZjYxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAiVjhT
Y3JpcHRQcm9maWxlLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
Y3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggYzEzNDAwZWZlMmZiMzI2
OTdhZDIzZDkzNmUzODM4OTcyNDQ1NmQ3OC4uNzhkOTIxMGJkMWUyNTllY2MwMTY2MTg0M2Y2MDA1
Njg2NTMzODBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0
UHJvZmlsZU5vZGUuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZU5vZGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJW
OFByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjAzNWM3MGViYzc1ZjIw
NWI2MzAzYWU3Y2U2MTQyZGU0ZThiZGU4Zi4uYmY5NmM2M2RmNmVhY2JhZTQxYzFhMjA5ZDkwZTY5
ZWZjYTc1YjFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjQzLDYgKzI0Myw3
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViU2NyaXB0SW52b2NhdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmlw
dFNvdXJjZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcm9sbGJhci5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNjcm9sbGJhckNsaWVudC5oJywKQEAgLTY0OSw2ICs2
NTAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViU2NyaXB0SW52b2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Ny
b2xsYmFySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5
NTAxNTQ2YjQwODI1MzI4NTA5NTVmNmJlNS4uMTlhN2MzNzAyOWM1N2FkZGM5OGU2NzE2YTgwNmFh
MWMwMDI5MmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBA
IC00NCw2ICs0NCw4IEBAIHN0cnVjdCBOUE9iamVjdDsKICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5h
bWVzcGFjZSB2OCB7CiBjbGFzcyBDb250ZXh0OworY2xhc3MgRnVuY3Rpb247CitjbGFzcyBPYmpl
Y3Q7CiBjbGFzcyBWYWx1ZTsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTG9jYWw7CkBAIC0yNzQsNiArMjc2LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJu
VmFsdWUoCiAgICAgICAgIGNvbnN0IFdlYlNjcmlwdFNvdXJjZSYpID0gMDsKIAorICAgIC8vIENh
bGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5
cGFzc2luZworICAgIC8vIGNhbkV4ZWN1dGUoKS4KKyAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCgKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+LAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LAorICAg
ICAgICBpbnQgYXJnYywKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkgPSAw
OworCiAgICAgLy8gUmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4g
ZW1wdHkgaGFuZGxlIGlmIHRoZXJlCiAgICAgLy8gaXMgbm9uZS4KICAgICB2aXJ0dWFsIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MTA1NDIxNDI1ZTQ2ZjRiMzEwNDAwOWQ2NjMwNDYwMjc3NDUyNzM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyaXB0
SW52b2NhdGlvbi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmlwdEludm9jYXRpb25f
aAorI2RlZmluZSBXZWJTY3JpcHRJbnZvY2F0aW9uX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlByaXZhdGVPd25QdHIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBXZWJT
Y3JpcHRJbnZvY2F0aW9uIHsKKworY2xhc3MgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCB7Citw
dWJsaWM6CisgICAgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCgpOworICAgIH5CeXBhc3NNaWNy
b3Rhc2tDaGVja3BvaW50KCk7CisKK3ByaXZhdGU6CisjaWZuZGVmIE5ERUJVRworICAgIGNsYXNz
IEltcGw7CisgICAgV2ViUHJpdmF0ZU93blB0cjxJbXA+IG1faW1wbDsKKyNlbmRpZgorfTsKKwor
fQorCit9IC8vIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCmluZGV4IDM5ODk3YzgyMzYyYTgzMmNiZTJmMWM5YzEyNTM4ZGFhYTJh
NzY4YjEuLjQ4M2E3NzBjZmFiYjUwYjk0MDA1ZjVjZWFmZTBlY2Q0N2RmYzJlODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtODk0LDYgKzg5NCwx
NSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJhbWVJbXBsOjpleGVjdXRlU2NyaXB0QW5k
UmV0dXJuVmFsdWUoY29uc3QgV2ViU2NyaXB0UwogICAgIHJldHVybiBtX2ZyYW1lLT5zY3JpcHQo
KS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNvdXJjZS5jb2RlLCBzb3VyY2UudXJs
LCBwb3NpdGlvbikpLnY4VmFsdWUoKTsKIH0KIAorLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0
aGUgZ2l2ZW4gcmVjZWl2ZXIgYW5kIGFyZ3VtZW50cywgYnlwYXNzaW5nIGNhbkV4ZWN1dGVTY3Jp
cHRzLgordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y2FsbEZ1bmN0aW9uRXZl
bklmU2NyaXB0RGlzYWJsZWQodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiByZWNlaXZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBhcmdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAg
ICByZXR1cm4gbV9mcmFtZS0+c2NyaXB0KCktPmNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2Fi
bGVkKGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywgYXJndikudjhWYWx1ZSgpOworfQorCiAvLyBS
ZXR1cm5zIHRoZSBWOCBjb250ZXh0IGZvciB0aGlzIGZyYW1lLCBvciBhbiBlbXB0eSBoYW5kbGUg
aWYgdGhlcmUgaXMgbm9uZS4KIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gV2ViRnJhbWVJbXBsOjpt
YWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggNzAwZjZlYTQwMzdlN2IyOGI5MGJkYzhmOTQ5OTRjOGFl
ZTlhMzFmMi4uOWM4NmQ3NTE0YWMwMGVhNWYxZGJiODE3NzliM2NhMzU4MTZmMzY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTExMCw2ICsxMTAsMTEg
QEAgcHVibGljOgogI2lmIFdFQktJVF9VU0lOR19WOAogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGV4ZWN1dGVTY3JpcHRBbmRSZXR1cm5WYWx1ZSgKICAgICAgICAgY29uc3QgV2Vi
U2NyaXB0U291cmNlJik7CisgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEZ1
bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiwKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwKKyAgICAgICAgaW50IGFyZ2Ms
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogICAgIHZpcnR1YWwgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlRmlsZVN5c3RlbShXZWJGaWxlU3lz
dGVtOjpUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktp
dC5jcHAKaW5kZXggNzc4NThjNGU3Yjk3MDFhN2Y5MmQ5NGEyYzBhM2FiZmI0NmYwZWUyNS4uMjQ3
NmM3OWNlZDk1ZjIxZWM5YTJmZTFiNjY3MzNjYjgyOTM2NDVkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJLaXQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgpAQCAtODgsNiArODksMTQgQEAgc3Rh
dGljIGJvb2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxl
bmd0aCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgdm9p
ZCBhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKCkKK3sKKyAgICAvLyBGSVhNRTogRW5hYmxlIHdoZW4g
Y2hyb21pdW0gdXNhZ2Ugb2YgV2ViU2NyaXB0SW52b2NhdGlvbiBoYXMgbGFuZGVkLgorICAgIC8v
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJv
cGVybHlVc2VkKCkpOworfQorI2VuZGlmCisKIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKICAgICBpbml0aWFsaXplV2l0aG91
dFY4KHdlYktpdFBsYXRmb3JtU3VwcG9ydCk7CkBAIC05Nyw2ICsxMDYsMTAgQEAgdm9pZCBpbml0
aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAg
IFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6
SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
CisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6QWRkQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZh
c3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgLy8gY3VycmVudFRocmVhZCB3
aWxsIGFsd2F5cyBiZSBub24tbnVsbCBpbiBwcm9kdWN0aW9uLCBidXQgY2FuIGJlIG51bGwgaW4g
Q2hyb21pdW0gdW5pdCB0ZXN0cy4KICAgICBpZiAoV2ViVGhyZWFkKiBjdXJyZW50VGhyZWFkID0g
d2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkpIHsKICAgICAgICAgQVNTRVJU
KCFzX2VuZE9mVGFza1J1bm5lcik7CkBAIC0xMzcsNiArMTUwLDEwIEBAIHZvaWQgaW5pdGlhbGl6
ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkK
IHZvaWQgc2h1dGRvd24oKQogewogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZu
ZGVmIE5ERUJVRworICAgIHY4OjpWODo6UmVtb3ZlQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3Nl
cnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgaWYgKHNfZW5kT2ZUYXNrUnVubmVy
KSB7CiAgICAgICAgIEFTU0VSVChzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVh
ZCgpKTsKICAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKS0+
cmVtb3ZlVGFza09ic2VydmVyKHNfZW5kT2ZUYXNrUnVubmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdEludm9jYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0SW52b2NhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Nm
OWU2NzJlZWNiMzIxZjFmNTExMWM3YWJjODFmZDAwZTgwM2NkZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdEludm9jYXRpb24uY3BwCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2NyaXB0SW52
b2NhdGlvbi5oIgorCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBXZWJTY3JpcHRJ
bnZvY2F0aW9uIHsKKworI2lmbmRlZiBOREVCVUcKK2NsYXNzIEJ5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQ6OkltcGwgOiBwdWJsaWMgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hl
Y2twb2ludCB7CitwdWJsaWM6CisgICAgSW1wbCgpIHsgfQorICAgIH5JbXBsKCkgeyB9Cit9Owor
I2VuZGlmCisKK0J5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQ6OkJ5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQoKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBtX2ltcGwucmVzZXQobmV3IEJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQ6OkltcGwoKSk7CisjZW5kaWYKK30KKworQnlwYXNzTWljcm90YXNr
Q2hlY2twb2ludDo6fkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQoKQoreworI2lmbmRlZiBOREVC
VUcKKyAgICBtX2ltcGwucmVzZXQoMCk7CisjZW5kaWYKK30KKworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134611</attachid>
            <date>2012-03-29 10:16:18 -0700</date>
            <delta_ts>2012-03-30 12:16:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120329101615.patch</filename>
            <type>text/plain</type>
            <size>46816</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRkMWQ5MGVmMjllMWYy
N2IxNWIxZmZmYTFiNjVhNjQ0YTc2NDFlMi4uNDczM2RjNDI3ZTU4ZjBjNDMzOTQwYjZhZGEzOThi
M2FlNDRmNzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTI4ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBFbmQtb2YtbWlj
cm90YXNrIHdvcmsgKGNhbmNlbGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAg
ICAgICAgZGVsaXZlcmluZyBET00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29w
ZSBiZWluZyBvbiB0aGUKKyAgICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50
byBzY3JpcHQuIFY4IHByb3ZpZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkg
dGhhdCBjb3VsZCBiZSB1c2VkIHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAg
ICAgIGV2ZW50cywgYnV0IGl0IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlw
dCBmb3IgdmFyaW91cworICAgICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJv
bSB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9i
amVjdHMgZnJvbSBmdW5jdGlvbiB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIs
CisgICAgICAgIHlldCBpdCdzIG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBl
dmVyeSB0aW1lIGEgSlMgd3JhcHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAg
ICBJbnN0ZWFkLCB0aGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhh
dCBlaXRoZXIgYSBWOFJlY3Vyc2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9y
IHNjcmlwdCkgb3IgYSBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
CisgICAgICAgICh3aGVuIGNhbGxpbmcgbm9uLWF1dGhvciBzY3JpcHQpIGlzIG9uIHRoZSBzdGFj
ayB3aGVuIFY4IHRoaW5rcyBpdCdzCisgICAgICAgIGZpbmlzaGVkIGV4ZWN1dGluZyBzY3JpcHQu
IFRoaXMgcmVxdWlyZXMgZHJvcHBpbmcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludAorICAgICAg
ICBvYmplY3RzIGluIGEgYnVuY2ggb2YgcGxhY2VzLCBtb3N0IG5vdGFibHkgdGhlIEluc3BlY3Rv
ci4KKyAgICAgICAgTm90ZSB0aGF0IGluIHJlbGVhc2UgbW9kZSwgdGhpcyBjbGFzcyBkb2VzIG5v
dGhpbmcgYW5kIHRodXMgc2hvdWxkIGJlCisgICAgICAgIG9wdGltaXplZCBhd2F5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsg
ZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjb2RlICh3aGVuIHJ1biBpbiBkZWJ1ZyBtb2RlKS4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDoKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNyZW1l
bnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0
ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnJl
Y3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKToKKyAgICAgICAgKEJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50Ojp+QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
RG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcDoKKwogMjAxMi0wMy0y
OCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBkb24ndCBleHBvc2UgSURCRGF0YWJhc2VFcnJvciB0byBzY3JpcHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggOTczYWZjZmQ4OGE3ZDBiMzI0Yjk5NzQxZWNmNTIzMDNjMGQzNDRm
NS4uNzE0YjJkOTE5MmE3N2FjY2YyNDFhOWI4MTc5MDhiYjM0NDY0Mjc2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0yOCAgUmFmYWVsIFdlaW5z
dGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0aW9u
IGNhbGxiYWNrIEFQSSB0byBhc3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRoZSBz
dGFjayB3aGVuZXZlciBpbnZva2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZS5oOgorICAgICAgICAodjgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVJbXBsOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6CisgICAgICAg
ICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmFz
c2VydFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYktpdDo6c2h1dGRvd24pOgorCiAyMDEyLTAzLTI4ICBCaWxsIEJ1ZGdlICA8YmJ1
ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyIGRvZXMgbm90
IHN1cHBvcnQgQ3Jvc3MgT3JpZ2luIFJlZGlyZWN0cyB3aGVuIHVzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCBmZjRkYWUyNWY0NmRhNjJiYjJmMDdiNmZmNTU1Nzk3MmY0ZjE1ZjRhLi4yODJlYjFkNjI4OTI1
YjI4MzM0NzYyNWMzOTI2MzIzZjA4ZWE5ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE0MDcsNiArMTQw
Nyw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgg
XAogICAgICAgICBiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L1JldGFpbmVkT2JqZWN0SW5mby5oIFwKKyAgICAgICAgYmluZGluZ3MvdjgvU2FmZUFs
bG9jYXRpb24uaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmggXAogICAgICAgICBiaW5kaW5n
cy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGNlNDJk
ZDFhZTJhMGM1MzM3YjRhOTY3YTZiY2JhODI2YTVjM2FiYi4uYTQ0YTYzYTY2YmMxMGVjZmRmMGU3
YzMyOWRhYjA2Zjc2ZDA5MjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjA2NSw2ICsyMDY1LDcg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZERPTUluZm8uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZvLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1NhZmVBbGxvY2F0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFj
dGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAKaW5kZXggMzMyODI4YjIy
YTM3OGQ0OWVhZDBhZGU3MjNmYTdiODRiYjk0NGViOC4uYjcyZGRlYmQwZWM1NzU5NDM1OTE0YmVl
MjIyMmVmZDYxNGQ5YTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RGF0ZUV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4
dGVuc2lvbi5jcHAKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAi
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg5LDYgKzkw
LDcgQEAgdm9pZCBEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVwKGJvb2wgYWxsb3cpCiAKICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndlsxXTsKICAgICBhcmd2WzBdID0gdjg6OkJvb2xl
YW46Ok5ldyghYWxsb3cpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0No
ZWNrcG9pbnQgc2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHNsZWVw
RnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMxZDcxNjE5N2E0YmI0YTZiZjdjNTA5Ni4uYmU0
MTdlNGMyN2EwZGEzZjk1ZTJmMmIzMDA4NDM2NWE4YjM2NWRmMiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEwMCw3ICsxMDEsMTEgQEAgdm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gc2hl
bGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0c0Z1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNr
cG9pbnQgc2NvcGU7CisgICAgICAgIHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIH0KICAgICBpZiAodmFsdWUuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCF2YWx1ZS0+SXNVbmRlZmluZWQo
KSAmJiB2YWx1ZS0+SXNBcnJheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TYWZl
QWxsb2NhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNzAwNWQ4ZmY5MmRhM2U3MTZmNGNjOTQ0YmVkYzBk
NWNjNzAyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
YWZlQWxsb2NhdGlvbi5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKyNpZm5kZWYgU2FmZUFsbG9jYXRpb25faAorI2RlZmluZSBTYWZlQWxsb2NhdGlvbl9oCisK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCisK
KyNpbmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNhZmVBbGxv
Y2F0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4pOworICAgIHN0YXRpYyBpbmxp
bmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dFRlbXBsYXRlPik7CisgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSk7Cit9OworCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9j
YXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbikKK3sK
KyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBW
OFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgIHJl
dHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoKTsKK30KKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+
IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gb2JqZWN0VGVtcGxhdGUpCit7CisgICAgaWYgKG9iamVjdFRlbXBsYXRlLklzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9y
TW9kZSBjb25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90
YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3Rh
bmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQgYXJnYywgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0b3JN
b2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rh
c2tDaGVja3BvaW50IHNjb3BlOworICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoYXJn
YywgYXJndik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNhZmVB
bGxvY2F0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggOGRlOTU1MzdhZDdmMmNmZDFhZjY0ZjgyZTlkYWRmYThkMjdkYzlkYy4u
Y2YxZTk4YWExZTNkYTVjMjIwZDk3M2U3NjViZjdiZmEwM2ZlNzU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTYyLDYgKzYyLDcg
QEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4TlBPYmplY3Qu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgog
I2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xNjEsNiArMTYyLDEyIEBAIGJvb2wgU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKICAgICByZXR1cm4gVXNlckdlc3R1
cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogfQogCitTY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCh2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2
ZXIsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQoreworICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBwZXJmb3JtIHRoZSBzYW1lIGlzUGF1c2VkIGNoZWNr
IHRoYXQgaGFwcGVucyBpbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0LgorICAgIHJl
dHVybiBTY3JpcHRWYWx1ZShtX3Byb3h5LT5jYWxsRnVuY3Rpb24oZnVuY3Rpb24sIHJlY2VpdmVy
LCBhcmdjLCBhcmd2KSk7Cit9CisKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklz
b2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgY29uc3QgVmVjdG9yPFNjcmlwdFNvdXJjZUNv
ZGU+JiBzb3VyY2VzKQogewogICAgIG1fcHJveHktPmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKHdv
cmxkSUQsIHNvdXJjZXMsIDApOwpAQCAtMjQ1LDggKzI1MiwxMCBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNv
dXJjZSA9IHY4OjpTdHJpbmc6Ok5ldygiaWYgKGdjKSBnYygpOyIpOwogICAgICAgICB2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5ldygiZ2MiKTsKICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHNvdXJjZSwg
bmFtZSk7Ci0gICAgICAgIGlmICghc2NyaXB0LklzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFzY3Jp
cHQuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNy
b3Rhc2tDaGVja3BvaW50IHNjb3BlOwogICAgICAgICAgICAgc2NyaXB0LT5SdW4oKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICB2OENvbnRleHQuRGlzcG9zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDlkMmVmZGViMThlZGM1MjY2
MWFlOThjOGM2ODA4NTZmNzRjNTVkMGEuLjc0M2IxMmJkYjc0NzNiODllODQ4MmM3OWJkOTM4MGM3
ZGE0MTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogCiAgICAgU2NyaXB0VmFsdWUgZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAgICAgU2NyaXB0VmFsdWUgZXhlY3V0
ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFs
c2UpOworICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgaW50IGFyZ2Ms
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2Ny
aXB0VVJMKGNvbnN0IEtVUkwmLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwg
c2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERl
YnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIzYjcxZjU4Yjk5ZjAzMmYzOWI2YTY1MDRjODEwZjBl
NWI1Li5hOGYyYzA0MzcwNjc0ZGRlNmNhMmE4ZDZlNDMwZWZkM2VjMjU1NjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiVjhSZWN1
cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTU3LDYgKzU4LDEzIEBAIHByaXZhdGU6CiAKIH0KIAordjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdKQoreworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3Ry
aW5nOjpOZXcoZnVuY3Rpb25OYW1lKSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVi
dWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQorCiBTY3JpcHREZWJ1Z1NlcnZlcjo6
U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERvbnRQ
YXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKQEAg
LTEyOSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwo
bV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIs
IDAsIGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQogCkBAIC0xNDEs
OSArMTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24KICAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6Okdl
dERlYnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRQYXVz
ZU9uRXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9k
ZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6
OkludDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkgfTsKLSAgICBzZXRQYXVzZU9uRXhj
ZXB0aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwor
ICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDEsIGFy
Z3YpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVu
dChib29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3Rh
dGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcEludG9TdGF0ZW1lbnQi
KSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3Rh
dGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAx
LCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBJbnRvU3RhdGVtZW50IiwgMSwg
YXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3Rl
cE92ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2Vy
U2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdmVy
U3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNQ
YXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+
Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJN
ZXRob2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFt
KCk7CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAg
ICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcg
djg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNl
dFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
djhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSwgdjhCb29sZWFuKHByZXZp
ZXcpIH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVy
Ym9zZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gZnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywgYXJndik7CisgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoInNldFNjcmlwdFNvdXJj
ZSIsIDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewogICAgICAgICB2
ODo6TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlDYXRjaC5NZXNzYWdlKCk7CiAgICAg
ICAgIGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUsOSArMjU3LDggQEAgYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2Fs
bEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1
cnJlbnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3Vy
cmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJy
ZW50Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2QoImN1cnJlbnRDYWxsRnJhbWUiLCAx
LCBhcmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxGcmFtZVY4LklzRW1wdHkoKSk7CiAg
ICAgaWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0KCkpCkBAIC0zNTUsNiArMzU2LDcg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpE
ZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5n
OjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdl
dHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigp
KTsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6
OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGV4Y2VwdGlvbkdldHRlclZhbHVl
KS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwogICAgICAgICAgICAgfQogCkBAIC0zODksNiAr
MzkxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21w
aWxlZCgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0ID0g
djg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKTsKICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwogICAgICAgICBTdHJpbmcgZGVidWdnZXJT
Y3JpcHRTb3VyY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oRGVidWdnZXJTY3JpcHRT
b3VyY2VfanMpLCBzaXplb2YoRGVidWdnZXJTY3JpcHRTb3VyY2VfanMpKTsKKyAgICAgICAgVjhS
ZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY3BwZTsKICAgICAgICAg
bV9kZWJ1Z2dlclNjcmlwdC5zZXQodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2ODo6U2Ny
aXB0OjpDb21waWxlKHY4U3RyaW5nKGRlYnVnZ2VyU2NyaXB0U291cmNlKSktPlJ1bigpKSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmgKaW5kZXggZGU4NDY1MTQwMTFlMTc1MWZkNzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uYTRmYjYx
MjlkZTBlNDBiZWZhYmIwMTg3YThhNzg1NDUxODBiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMTMsNyArMTEzLDkgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAg
ICAgdm9pZCBlbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CisKICAgICBQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5k
bGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVj
dD4gbV9leGVjdXRpb25TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDVjOTZiNTY0ZTEzNDIwOWNkNWNhMmQ1ZGI0ZWJl
OWY5YzUwNjE1M2MuLjA2ZjU1YTk5M2FmOWE2ZGY0M2NhNDRjYjNjMDU1MjU3NTliMTQ2MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cApAQCAtMzEsMTIgKzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1
ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogCiAjaW5jbHVkZSA8djguaD4KQEAgLTEzMCw3ICsxMzEsMTEgQEAgU2NyaXB0VmFsdWUg
U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRF
eGNlcHRpb25zKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIGFyZ3NbaV0gPSBtX2FyZ3VtZW50c1tpXS52OFZhbHVlKCk7CiAKLSAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlzT2JqZWN0
LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHJlc3VsdDsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgc2NvcGUoZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwo
dGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB9CiAgICAg
aWYgKCFzY29wZS5zdWNjZXNzKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcAppbmRleCA3OTg2NzZlMWVlNjllODVhNzM4YjQ1MzI1MjQ5NDgxM2Q1YzI2OGU3
Li5mN2RiZTA1OTE4ZWZjODNlMjc3NTlmOTEzYzFmZmQ0NTc3NjZjZjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29s
YXRlKQogICAgIDogbV9kb21EYXRhU3RvcmUoMCkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENv
bnN0cnVjdG9yTW9kZTo6Q3JlYXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgw
KQorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgw
KQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5k
ZXggYmFjZDdlOWFhMjZmM2Y3NDg2Y2U3OGJkMThjMDQ1OGU4N2EwNjlmNS4uZTU5Y2RkNjRmNzY3
NWE0M2Q2ZGM5YWQ0MDhjMjRhYTI1NGJhN2FlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKQEAgLTE1Myw2ICsxNTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgp
IHsgcmV0dXJuIG1fZ2xvYmFsSGFuZGxlTWFwOyB9CisKKyAgICAgICAgaW50IGludGVybmFsU2Ny
aXB0UmVjdXJzaW9uTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsU2NyaXB0UmVjdXJz
aW9uTGV2ZWw7IH0KKyAgICAgICAgaW50IGluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKSB7IHJldHVybiArK21faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsgfQorICAg
ICAgICBpbnQgZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJu
IC0tbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CiAjZW5kaWYKIAogICAgIHByaXZh
dGU6CkBAIC0xNzksNiArMTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWZuZGVmIE5E
RUJVRwogICAgICAgICBHbG9iYWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7CisgICAgICAg
IGludCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7CiAjZW5kaWYKICAgICB9OwogCkBA
IC0yMDgsMzggKzIxMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3By
ZXZpb3VzOwogICAgIH07CiAKLSAgICBjbGFzcyBTYWZlQWxsb2NhdGlvbiB7Ci0gICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4pOwotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdKTsKLSAgICB9OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVB
bGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24p
Ci0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29u
c3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKCk7Ci0g
ICAgfQotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gb2JqZWN0VGVtcGxhdGUpCi0gICAg
ewotICAgICAgICBpZiAob2JqZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29u
c3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gb2JqZWN0VGVtcGxhdGUtPk5ld0luc3RhbmNl
KCk7Ci0gICAgfQotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpu
ZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24sIGludCBhcmdjLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKQotICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9u
LklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
LSAgICAgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uLT5OZXdJbnN0YW5jZShhcmdjLCBhcmd2KTsKLSAgICB9Ci0KLQogCiAgICAgZW51
bSBFeHRlcm5hbE1vZGUgewogICAgICAgICBFeHRlcm5hbGl6ZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggYzRjNjA1NDBhYjliNjhh
NjkzY2RiNmZjMWU3N2ZmMDk0YzQzNDFhNS4uYjdlM2FkNDljNWRlYjBkM2I0Njg5ZTlhY2Q0YTYz
ZTQyODRhOWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2lu
Y2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRl
eCAwNWRjMTgxYjk1ZTcxMzc3MDg0OTgyNzgwZTAwMjNiYWM1MmE5ZGZiLi4yMmYyMjVjMjMxOGFi
ZDMyNmQzOTM5ZmNlNGIzOGFlZDYxNzNlNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRh
cmdldEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIlNWR0VsZW1lbnRJbnN0YW5jZS5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDYxNjNlYWE5NTg3ZTNm
OWIxYWFhY2I4YWE5YzljMGNhY2NmMGNmM2EuLmRlNDk5MmNmYjY2YTJmMTQ3YzBjZGE1ZmEzMzdk
MGM5ZDQ2MzZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6
eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6
eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhh
bmRsZS5oIgogCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTU1LDkgKzE1Niwx
MiBAQCB2b2lkIFY4TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsIHY4OjpTY3JpcHQ6OlJ1bigpIGRpcmVjdGx5
IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZl
U2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ug
c3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
OworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2tw
b2ludCBzY29wZTsKKyAgICAgICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBp
ZiAodmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEy
IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cGFyYW1ldGVyc1szXSA9IHsgbm9kZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBw
ZXIgfTsKIAotICAgIC8vIFVzZSBDYWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBj
YWxsIHRvIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhh
Y2sgYWJvdmUuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVk
aWF0ZUZ1bmN0aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwot
CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4
UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAgICAg
IGlubmVyVmFsdWUgPSBpbnRlcm1lZGlhdGVGdW5jdGlvbi0+Q2FsbCh2OENvbnRleHQtPkdsb2Jh
bCgpLCAzLCBwYXJhbWV0ZXJzKTsKKyAgICB9CiAgICAgaWYgKGlubmVyVmFsdWUuSXNFbXB0eSgp
IHx8ICFpbm5lclZhbHVlLT5Jc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCBlNDNkMjdlNjQwOWRlZTI1
YThhZWU3MjY5NzBhNDdlNTI2MDA1ZDM0Li5mNmRkMWY4ZjM2ZjRmNzg4YzExZDk5NTIwZGJhYjNj
MmU0MDM4ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJOUFY4T2JqZWN0LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4SFRNTEFw
cGxldEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UmVjdXJzaW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9u
U2NvcGUuaAppbmRleCAzYjlhZDZlYzExZDA4NGU3YjEwZmU5NTRlNWNjNTJmNTY4N2YyZjg4Li42
ZTM2MTkzNzJmMjY5MmFjODMxMjQyZWQ0ZTVmOGQxYzcxNGJjNWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCkBAIC0zMyw5ICszMywyNyBAQAog
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKy8vIEMrKyBjYWxscyBpbnRvIHNjcmlwdCBjb250ZXh0cyB3aGljaCBhcmUgIm93bmVkIiBi
eSBXZWJLaXQgKGNyZWF0ZWQgaW4gYQorLy8gcHJvY2VzcyB3aGVyZSBXZWJLaXQuY3BwIGluaXRp
YWxpemVzIHY4KSBtdXN0IGRlY2xhcmUgdGhlaXIgdHlwZToKKy8vCisvLyAgIDEuIENhbGxzIGlu
dG8gcGFnZS9hdXRob3Igc2NyaXB0IGZyb20gYSBmcmFtZQorLy8gICAyLiBDYWxscyBpbnRvIHBh
Z2UvYXV0aG9yIHNjcmlwdCBmcm9tIGEgd29ya2VyCisvLyAgIDMuIENhbGxzIGludG8gaW50ZXJu
YWwgc2NyaXB0ICh0eXBpY2FsbHkgc2V0dXAvdGVhcmRvd24gd29yaykKKy8vCisvLyBEZWJ1Zy10
aW1lIGNoZWNraW5nIG9mIHRoaXMgaXMgZW5mb3JjZWQgdmlhIHRoaXMgY2xhc3MuCisvLworLy8g
Q2FsbHMgb2YgdHlwZSAoMSkgc2hvdWxkIGdlbmVyYWxseSBnbyB0aHJvdWdoIFY4UHJveHksIGFz
IGluc3BlY3RvcgorLy8gaW5zdHJ1bWVudGF0aW9uIGlzIG5lZWRlZC4gQ2FsbHMgb2YgdHlwZSAo
Mikgc2hvdWxkIGFsd2F5cyBzdGFjay1hbGxvY2F0ZSBhCisvLyBWOFJlY3Vyc2lvblNjb3BlIGlu
IHRoZSBzYW1lIGJsb2NrIGFzIHRoZSBjYWxsIGludG8gc2NyaXB0LiBDYWxscyBvZiB0eXBlICgz
KQorLy8gc2hvdWxkIHN0YWNrIGFsbG9jYXRlIGEgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWlj
cm90YXNrQ2hlY2twb2ludCAtLSB0aGlzCisvLyBza2lwcyB3b3JrIHRoYXQgaXMgc3BlYydkIHRv
IGhhcHBlbiBhdCB0aGUgZW5kIG9mIHRoZSBvdXRlci1tb3N0IHNjcmlwdCBzdGFjaworLy8gZnJh
bWUgb2YgY2FsbHMgaW50byBwYWdlIHNjcmlwdDoKKy8vCisvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwZXJmb3JtLWEtbWljcm90YXNrLWNoZWNr
cG9pbnQKIGNsYXNzIFY4UmVjdXJzaW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFY4UmVjdXJzaW9uU2NvcGUpOwogcHVibGljOgpAQCAtNTEsNyArNjksMzQgQEAgcHVibGljOgog
ICAgICAgICAgICAgZGlkTGVhdmVTY3JpcHRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGludCByZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
dXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7IH0KKyAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxl
dmVsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT5yZWN1cnNpb25MZXZlbCgpOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBz
dGF0aWMgYm9vbCBwcm9wZXJseVVzZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2lv
bkxldmVsKCkgPiAwIHx8IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmludGVy
bmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSA+IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBjbGFz
cyBCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJ5cGFz
c01pY3JvdGFza0NoZWNrcG9pbnQoKQorICAgICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAg
ICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW5jcmVtZW50SW50ZXJu
YWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICB+
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCgpCisgICAgICAgIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5kZWNyZW1lbnRJ
bnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH07
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuY3BwCmluZGV4IGJmOGQyYjMzOWNjMTVkMTYzODRlMDVhNTc5NzU3NjA4YTZlNjNhMDku
LmY4MmJkZDA3ZjllYzEwZmEzY2FjMmIyOTZlMmQ4MzUyOTFmOGRkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRl
eCA0MWFlMDcxNzE1NWU1MTdkMDkwNjA5YzkxYzk1NDE2MWQ2YjNlNjQ3Li5jYWU2Njg5NzAwMjlh
ZGM3Y2NjZjY5ZjcyN2YyZDlkMjM5OTY5ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4
Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3Bl
LmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTY2LDcgKzY3LDExIEBAIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiB3CiAgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogCi0gICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHNoYWRvdyA9IHNoYWRvd0NvbnN0cnVjdG9yLT5OZXdJbnN0YW5jZSgpOwor
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFkb3c7CisgICAgeworICAgICAgICBWOFJlY3Vy
c2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgICAgICBzaGFk
b3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAgaWYgKHNo
YWRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
ICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6
OmluZm8sIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgy
YjI0MjBiY2UxM2ZlZGY2MTQ3NzlmNzY1YzhhMy4uYWQ1ZmI5ZDAxYmJiNjJiYThkNTY5ZjVhNmI4
YmM4MTliYzFlOTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJW
OEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDYgKzk4
LDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQg
YW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRo
ZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIElu
amVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5z
cGVjdG9yLgogICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpD
b21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgcmVjdXJzaW9uU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdiA9IHNjcmlwdC0+UnVuKCk7CiAgICAgQVNTRVJUKCF2LklzRW1wdHkoKSk7CiAg
ICAgQVNTRVJUKHYtPklzRnVuY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IDMy
ZDg3MjY4Y2FiN2VjYmMzZTM3MDMyNmI5MzkzZWY5NjA0NTkzMmEuLjY0MjE4NTUwMTYyNmZkMmU5
Y2Y3ZDMyYWMyYmZlM2FmYmIzZjYxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAiVjhT
Y3JpcHRQcm9maWxlLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
Y3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggYzEzNDAwZWZlMmZiMzI2
OTdhZDIzZDkzNmUzODM4OTcyNDQ1NmQ3OC4uNzhkOTIxMGJkMWUyNTllY2MwMTY2MTg0M2Y2MDA1
Njg2NTMzODBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0
UHJvZmlsZU5vZGUuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZU5vZGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJW
OFByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjAzNWM3MGViYzc1ZjIw
NWI2MzAzYWU3Y2U2MTQyZGU0ZThiZGU4Zi4uYmY5NmM2M2RmNmVhY2JhZTQxYzFhMjA5ZDkwZTY5
ZWZjYTc1YjFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjQzLDYgKzI0Myw3
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViU2NyaXB0SW52b2NhdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmlw
dFNvdXJjZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcm9sbGJhci5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNjcm9sbGJhckNsaWVudC5oJywKQEAgLTY0OSw2ICs2
NTAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViU2NyaXB0SW52b2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Ny
b2xsYmFySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5
NTAxNTQ2YjQwODI1MzI4NTA5NTVmNmJlNS4uMTlhN2MzNzAyOWM1N2FkZGM5OGU2NzE2YTgwNmFh
MWMwMDI5MmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBA
IC00NCw2ICs0NCw4IEBAIHN0cnVjdCBOUE9iamVjdDsKICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5h
bWVzcGFjZSB2OCB7CiBjbGFzcyBDb250ZXh0OworY2xhc3MgRnVuY3Rpb247CitjbGFzcyBPYmpl
Y3Q7CiBjbGFzcyBWYWx1ZTsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTG9jYWw7CkBAIC0yNzQsNiArMjc2LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJu
VmFsdWUoCiAgICAgICAgIGNvbnN0IFdlYlNjcmlwdFNvdXJjZSYpID0gMDsKIAorICAgIC8vIENh
bGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5
cGFzc2luZworICAgIC8vIGNhbkV4ZWN1dGUoKS4KKyAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCgKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+LAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LAorICAg
ICAgICBpbnQgYXJnYywKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkgPSAw
OworCiAgICAgLy8gUmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4g
ZW1wdHkgaGFuZGxlIGlmIHRoZXJlCiAgICAgLy8gaXMgbm9uZS4KICAgICB2aXJ0dWFsIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMzg2MTU2ZGQ4NmY3YWZhNGVlYTJkYTc5M2U2MDJjZTBkOGJkOWRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyaXB0
SW52b2NhdGlvbi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmlwdEludm9jYXRpb25f
aAorI2RlZmluZSBXZWJTY3JpcHRJbnZvY2F0aW9uX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlByaXZhdGVPd25QdHIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBXZWJT
Y3JpcHRJbnZvY2F0aW9uIHsKKworY2xhc3MgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCB7Citw
dWJsaWM6CisgICAgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCgpOworICAgIH5CeXBhc3NNaWNy
b3Rhc2tDaGVja3BvaW50KCk7CisKK3ByaXZhdGU6CisjaWZuZGVmIE5ERUJVRworICAgIGNsYXNz
IEltcGw7CisgICAgV2ViUHJpdmF0ZU93blB0cjxJbXBsPiBtX2ltcGw7CisjZW5kaWYKK307CisK
K30KKworfSAvLyBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAppbmRleCAzOTg5N2M4MjM2MmE4MzJjYmUyZjFjOWMxMjUzOGRhYWEy
YTc2OGIxLi40ODNhNzcwY2ZhYmI1MGI5NDAwNWY1Y2VhZmUwZWNkNDdkZmMyZTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTg5NCw2ICs4OTQs
MTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZVNjcmlwdEFu
ZFJldHVyblZhbHVlKGNvbnN0IFdlYlNjcmlwdFMKICAgICByZXR1cm4gbV9mcmFtZS0+c2NyaXB0
KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzb3VyY2UuY29kZSwgc291cmNlLnVy
bCwgcG9zaXRpb24pKS52OFZhbHVlKCk7CiB9CiAKKy8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGgg
dGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZyBjYW5FeGVjdXRlU2Ny
aXB0cy4KK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNhbGxGdW5jdGlvbkV2
ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgYXJnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCit7Cisg
ICAgcmV0dXJuIG1fZnJhbWUtPnNjcmlwdCgpLT5jYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNh
YmxlZChmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3YpLnY4VmFsdWUoKTsKK30KKwogLy8g
UmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkgaGFuZGxl
IGlmIHRoZXJlIGlzIG5vbmUuCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdlYkZyYW1lSW1wbDo6
bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDcwMGY2ZWE0MDM3ZTdiMjhiOTBiZGM4Zjk0OTk0Yzhh
ZWU5YTMxZjIuLjljODZkNzUxNGFjMDBlYTVmMWRiYjgxNzc5YjNjYTM1ODE2ZjM2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0xMTAsNiArMTEwLDEx
IEBAIHB1YmxpYzoKICNpZiBXRUJLSVRfVVNJTkdfVjgKICAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNvbnN0IFdl
YlNjcmlwdFNvdXJjZSYpOworICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhbGxG
dW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj4sCisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sCisgICAgICAgIGludCBhcmdj
LAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKICAgICB2aXJ0dWFsIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmlsZVN5
c3RlbTo6VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJL
aXQuY3BwCmluZGV4IDc3ODU4YzRlN2I5NzAxYTdmOTJkOTRhMmMwYTNhYmZiNDZmMGVlMjUuLjI0
NzZjNzljZWQ5NWYyMWVjOWEyZmUxYjY2NzMzY2I4MjkzNjQ1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisj
aW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNp
bmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKQEAgLTg4LDYgKzg5LDE0IEBAIHN0
YXRpYyBib29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBs
ZW5ndGgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZv
aWQgYXNzZXJ0VjhSZWN1cnNpb25TY29wZSgpCit7CisgICAgLy8gRklYTUU6IEVuYWJsZSB3aGVu
IGNocm9taXVtIHVzYWdlIG9mIFdlYlNjcmlwdEludm9jYXRpb24gaGFzIGxhbmRlZC4KKyAgICAv
LyBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8IFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnBy
b3Blcmx5VXNlZCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxhdGZv
cm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB7CiAgICAgaW5pdGlhbGl6ZVdpdGhv
dXRWOCh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOwpAQCAtOTcsNiArMTA2LDEwIEBAIHZvaWQgaW5p
dGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKICAg
ICBXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQodjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJT
KQorI2lmbmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OkFkZENhbGxDb21wbGV0ZWRDYWxsYmFjaygm
YXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIC8vIGN1cnJlbnRUaHJlYWQg
d2lsbCBhbHdheXMgYmUgbm9uLW51bGwgaW4gcHJvZHVjdGlvbiwgYnV0IGNhbiBiZSBudWxsIGlu
IENocm9taXVtIHVuaXQgdGVzdHMuCiAgICAgaWYgKFdlYlRocmVhZCogY3VycmVudFRocmVhZCA9
IHdlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKSB7CiAgICAgICAgIEFTU0VS
VCghc19lbmRPZlRhc2tSdW5uZXIpOwpAQCAtMTM3LDYgKzE1MCwxMCBAQCB2b2lkIGluaXRpYWxp
emVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQp
CiB2b2lkIHNodXRkb3duKCkKIHsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lm
bmRlZiBOREVCVUcKKyAgICB2ODo6Vjg6OlJlbW92ZUNhbGxDb21wbGV0ZWRDYWxsYmFjaygmYXNz
ZXJ0VjhSZWN1cnNpb25TY29wZSk7CisjZW5kaWYKKwogICAgIGlmIChzX2VuZE9mVGFza1J1bm5l
cikgewogICAgICAgICBBU1NFUlQoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJl
YWQoKSk7CiAgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkt
PnJlbW92ZVRhc2tPYnNlcnZlcihzX2VuZE9mVGFza1J1bm5lcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdEludm9jYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4
ODdmYzllYmE2ZmIzOTRlZjBhN2VlNjEyZDM4NzI4YzgyOTY5OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmNwcApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNjcmlwdElu
dm9jYXRpb24uaCIKKworI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgV2ViU2NyaXB0
SW52b2NhdGlvbiB7CisKKyNpZm5kZWYgTkRFQlVHCitjbGFzcyBCeXBhc3NNaWNyb3Rhc2tDaGVj
a3BvaW50OjpJbXBsIDogcHVibGljIFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQgeworcHVibGljOgorICAgIEltcGwoKSB7IH0KKyAgICB+SW1wbCgp
IHsgfQorfTsKKyNlbmRpZgorCitCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50OjpCeXBhc3NNaWNy
b3Rhc2tDaGVja3BvaW50KCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgbV9pbXBsLnJlc2V0KG5l
dyBCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50OjpJbXBsKCkpOworI2VuZGlmCit9CisKK0J5cGFz
c01pY3JvdGFza0NoZWNrcG9pbnQ6On5CeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50KCkKK3sKKyNp
Zm5kZWYgTkRFQlVHCisgICAgbV9pbXBsLnJlc2V0KDApOworI2VuZGlmCit9CisKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134858</attachid>
            <date>2012-03-30 12:16:28 -0700</date>
            <delta_ts>2012-03-30 14:03:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120330121627.patch</filename>
            <type>text/plain</type>
            <size>47049</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM1MTgyNGNmNWI3ZDU5
N2YxOTg2MGE0NmM0NDZjNDExMGYyZWU2MC4uYTdiNDRkOTBmOWI5MjA2MWE0ODY5NGI4ZWQ5YjRk
N2E3ZmU4OWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTI4ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBFbmQtb2YtbWlj
cm90YXNrIHdvcmsgKGNhbmNlbGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAg
ICAgICAgZGVsaXZlcmluZyBET00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29w
ZSBiZWluZyBvbiB0aGUKKyAgICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50
byBzY3JpcHQuIFY4IHByb3ZpZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkg
dGhhdCBjb3VsZCBiZSB1c2VkIHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAg
ICAgIGV2ZW50cywgYnV0IGl0IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlw
dCBmb3IgdmFyaW91cworICAgICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJv
bSB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9i
amVjdHMgZnJvbSBmdW5jdGlvbiB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIs
CisgICAgICAgIHlldCBpdCdzIG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBl
dmVyeSB0aW1lIGEgSlMgd3JhcHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAg
ICBJbnN0ZWFkLCB0aGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhh
dCBlaXRoZXIgYSBWOFJlY3Vyc2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9y
IHNjcmlwdCkgb3IgYSBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
CisgICAgICAgICh3aGVuIGNhbGxpbmcgbm9uLWF1dGhvciBzY3JpcHQpIGlzIG9uIHRoZSBzdGFj
ayB3aGVuIFY4IHRoaW5rcyBpdCdzCisgICAgICAgIGZpbmlzaGVkIGV4ZWN1dGluZyBzY3JpcHQu
IFRoaXMgcmVxdWlyZXMgZHJvcHBpbmcgQnlwYXNzTWljcm90YXNrQ2hlY2twb2ludAorICAgICAg
ICBvYmplY3RzIGluIGEgYnVuY2ggb2YgcGxhY2VzLCBtb3N0IG5vdGFibHkgdGhlIEluc3BlY3Rv
ci4KKyAgICAgICAgTm90ZSB0aGF0IGluIHJlbGVhc2UgbW9kZSwgdGhpcyBjbGFzcyBkb2VzIG5v
dGhpbmcgYW5kIHRodXMgc2hvdWxkIGJlCisgICAgICAgIG9wdGltaXplZCBhd2F5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsg
ZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjb2RlICh3aGVuIHJ1biBpbiBkZWJ1ZyBtb2RlKS4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZUV4dGVuc2lvbjo6c2V0QWxsb3dTbGVlcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9u
RXZlbklmU2NyaXB0RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDoKKyAgICAgICAgKFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjppbmNyZW1l
bnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhOjpkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0
ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnJl
Y3Vyc2lvbkxldmVsKToKKyAgICAgICAgKFY4UmVjdXJzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKToKKyAgICAgICAgKEJ5cGFzc01p
Y3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50Ojp+QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
RG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcDoKKwogMjAxMi0wMy0z
MCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3cg
YSBzY3JvbGxpbmcgaW5kaWNhdG9yIGxpZ2h0IHdoZW4gY29tcG9zaXRpbmcgYm9yZGVycyBhcmUg
dHVybmVkIG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRiZGM5MWE2YmEzYzhlNzll
MzEwOGQ3MDBiNGNiZjNkZjlhZjA3MWUuLmZkOTE3NGI5MDZmM2ZkOTI4M2EzYWI2NTIwMjA2Mjk4
N2RlZTc4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTItMDMtMjggIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBVc2UgVjggY29tcGxldGlvbiBjYWxsYmFjayBBUEkgdG8gYXNzZXJ0IHRoYXQgVjhSZWN1
cnNpb25TY29wZSBpcyBvbiB0aGUgc3RhY2sgd2hlbmV2ZXIgaW52b2tpbmcgc2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTEzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKHY4KToKKyAgICAgICAgKFdl
YkZyYW1lKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2FsbEZ1bmN0aW9uRXZlbklmU2Ny
aXB0RGlzYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdl
YkZyYW1lSW1wbCk6CisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0Ojphc3NlcnRWOFJlY3Vyc2lvblNjb3BlKToKKyAgICAgICAgKFdl
YktpdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OnNodXRkb3duKToKKwogMjAxMi0w
My0zMCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIEZsYWt5IGFuaW1hdGlvbiB1bml0IHRlc3QgQ0NMYXllclRyZWVIb3N0VGVzdFN5bmNo
cm9uaXplQW5pbWF0aW9uU3RhcnRUaW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNjA0YTBlNDdlOGQ4ZDFi
NmYzMTg2MzQyZjYwMTYxMzQyMmUxY2JjYS4uYTAwYjhlODAwYWVlMmZlOTE1NGRhNjI1NTEwN2Nl
MjVhYzFlNTM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xNDA1LDYgKzE0MDUsNyBAQCB2OCB7CiAgICAg
ICAgIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvUmV0YWluZWRET01JbmZvLmggXAogICAgICAgICBiaW5kaW5ncy92OC9SZXRhaW5lZE9i
amVjdEluZm8uaCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L1NhZmVBbGxvY2F0aW9uLmggXAogICAg
ICAgICBiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4
L1Njb3BlZERPTURhdGFTdG9yZS5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDdmMWMzYzZiNDc0YzA2OTc4YWM1OWQw
ZTU3OGIzNjc4MTIwODQxNWEuLmE5ZmQ5ODE0MDEyOGQ4ZmRiNTc5MzU3Mzk3NDdkMDM3ZDk4Njc5
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwNjUsNiArMjA2NSw3IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvUmV0YWluZWRET01JbmZvLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvUmV0YWluZWRET01JbmZvLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVk
T2JqZWN0SW5mby5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwCmluZGV4IDMzMjgyOGIyMmEzNzhkNDllYWQwYWRlNzIz
ZmE3Yjg0YmI5NDRlYjguLmI3MmRkZWJkMGVjNTc1OTQzNTkxNGJlZTIyMjJlZmQ2MTRkOWExNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RhdGVFeHRlbnNpb24uY3BwCkBAIC0z
MSw4ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGF0ZUV4dGVuc2lv
bi5oIgogCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlO
YW1lLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OSw2ICs5MCw3IEBAIHZvaWQgRGF0ZUV4
dGVuc2lvbjo6c2V0QWxsb3dTbGVlcChib29sIGFsbG93KQogCiAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbMV07CiAgICAgYXJndlswXSA9IHY4OjpCb29sZWFuOjpOZXcoIWFsbG93KTsK
KyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOwog
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChzbGVlcEZ1bmN0aW9uSGFuZGxlKS0+
Q2FsbCh2ODo6T2JqZWN0OjpOZXcoKSwgMSwgYXJndik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDE4Zjdk
ZjdlZTQyNTQwMTBjMWQ3MTYxOTdhNGJiNGE2YmY3YzUwOTYuLmJlNDE3ZTRjMjdhMGRhM2Y5NWUy
ZjJiMzAwODQzNjVhOGIzNjVkZjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CkBAIC0xMDAsNyArMTAxLDExIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnCiAg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHNoZWxsLT5jb250ZXh0KCk7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGdldFNjcmlwdHNGdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3Ry
aW5nOjpOZXcoImdldFNjcmlwdHMiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
W10gPSB7IGNvbnRleHQtPkdldERhdGEoKSB9OwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSA9IGdldFNjcmlwdHNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAx
LCBhcmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWU7CisgICAgeworICAgICAg
ICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAg
ICAgICB2YWx1ZSA9IGdldFNjcmlwdHNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLCAxLCBhcmd2KTsKKyAgICB9CiAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVCghdmFsdWUtPklzVW5kZWZpbmVkKCkgJiYgdmFsdWUtPklzQXJy
YXkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TYWZlQWxsb2Nh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzcwMDVkOGZmOTJkYTNlNzE2ZjRjYzk0NGJlZGMwZDVjYzcwMmY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApA
QCAtMCwwICsxLDc3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0
OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFNhZmVB
bGxvY2F0aW9uX2gKKyNkZWZpbmUgU2FmZUFsbG9jYXRpb25faAorCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgorCisjaW5jbHVkZSA8djguaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTYWZlQWxsb2NhdGlvbiB7CitwdWJsaWM6
CisgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+KTsKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOworICAg
IHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10p
OworfTsKKwordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24pCit7CisgICAgaWYgKGZ1bmN0aW9u
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAg
IENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6
QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPk5l
d0luc3RhbmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6
bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IG9iamVjdFRlbXBsYXRl
KQoreworICAgIGlmIChvYmplY3RUZW1wbGF0ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JN
b2RlOworICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2Nv
cGU7CisgICAgcmV0dXJuIG9iamVjdFRlbXBsYXRlLT5OZXdJbnN0YW5jZSgpOworfQorCit2ODo6
TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10pCit7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1v
ZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBzY29w
ZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKGFyZ2MsIGFyZ3YpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTYWZlQWxsb2NhdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDhk
ZTk1NTM3YWQ3ZjJjZmQxYWY2NGY4MmU5ZGFkZmE4ZDI3ZGM5ZGMuLmNmMWU5OGFhMWUzZGE1YzIy
MGQ5NzNlNzY1YmY3YmZhMDNmZTc1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVjhJ
c29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOE5QT2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXaWRnZXQu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMTYxLDYgKzE2MiwxMiBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpCiAgICAgcmV0dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAorU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6
Y2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IGZ1bmN0aW9uLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlY2VpdmVyLCBpbnQgYXJnYywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgcGVyZm9ybSB0aGUgc2FtZSBpc1BhdXNlZCBjaGVjayB0aGF0IGhhcHBlbnMgaW4g
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdC4KKyAgICByZXR1cm4gU2NyaXB0VmFsdWUo
bV9wcm94eS0+Y2FsbEZ1bmN0aW9uKGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywgYXJndikpOwor
fQorCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKHVuc2ln
bmVkIHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPiYgc291cmNlcykKIHsK
ICAgICBtX3Byb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh3b3JsZElELCBzb3VyY2VzLCAw
KTsKQEAgLTI0NSw4ICsyNTIsMTAgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2Fy
YmFnZSgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBzb3VyY2UgPSB2ODo6U3RyaW5n
OjpOZXcoImlmIChnYykgZ2MoKTsiKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUgPSB2ODo6U3RyaW5nOjpOZXcoImdjIik7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlw
dD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShzb3VyY2UsIG5hbWUpOwotICAgICAgICBp
ZiAoIXNjcmlwdC5Jc0VtcHR5KCkpCisgICAgICAgIGlmICghc2NyaXB0LklzRW1wdHkoKSkgewor
ICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludCBz
Y29wZTsKICAgICAgICAgICAgIHNjcmlwdC0+UnVuKCk7CisgICAgICAgIH0KICAgICB9CiAgICAg
djhDb250ZXh0LkRpc3Bvc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuaAppbmRleCA5ZDJlZmRlYjE4ZWRjNTI2NjFhZTk4YzhjNjgwODU2Zjc0
YzU1ZDBhLi43NDNiMTJiZGI3NDczYjg5ZTg0ODJjNzliZDkzODBjN2RhNDE1NzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC03Myw2ICs3
Myw3IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOwogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBTY3JpcHRW
YWx1ZSBjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCh2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEph
dmFTY3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJM
JiwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1
bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5k
ZXggYjcwNTUyM2I3MWY1OGI5OWYwMzJmMzliNmE2NTA0YzgxMGYwZTViNS4uYThmMmMwNDM3MDY3
NGRkZTZjYTJhOGQ2ZTQzMGVmZDNlYzI1NTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4
SmF2YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC01Nyw2ICs1OCwxMyBAQCBwcml2YXRlOgogCiB9CiAKK3Y4OjpMb2NhbDx2ODo6VmFsdWU+IFNj
cmlwdERlYnVnU2VydmVyOjpjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6
Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KGZ1bmN0aW9u
TmFtZSkpKTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
IHNjb3BlOworICAgIHJldHVybiBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgp
LCBhcmdjLCBhcmd2KTsKK30KKwogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVy
KCkKICAgICA6IG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMp
CiAgICAgLCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpCkBAIC0xMjksOSArMTM3LDggQEAg
U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgU2NyaXB0RGVidWdTZXJ2
ZXI6OnBhdXNlT25FeGNlcHRpb25zU3QKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4
dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3Ry
aW5nOjpOZXcoInBhdXNlT25FeGNlcHRpb25zU3RhdGUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIH07Ci0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQu
Z2V0KCksIDAsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBjYWxs
RGVidWdnZXJNZXRob2QoInBhdXNlT25FeGNlcHRpb25zU3RhdGUiLCAwLCBhcmd2KTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3Rh
dGU+KHJlc3VsdC0+SW50MzJWYWx1ZSgpKTsKIH0KIApAQCAtMTQxLDkgKzE0OCw4IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSBwYXVzZU9uCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIHY4OjpD
b250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7
CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gc2V0UGF1c2VPbkV4Y2VwdGlvbnNGdW5j
dGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUiKSkpOwog
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpJbnQzMjo6TmV3KHBhdXNl
T25FeGNlcHRpb25zU3RhdGUpIH07Ci0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNGdW5jdGlvbi0+
Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJN
ZXRob2QoInNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUiLCAxLCBhcmd2KTsKIH0KIAogdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQoYm9vbCBwYXVzZSkKQEAg
LTE5MCwyNyArMTk2LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3Jh
bSgpCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzdGVwSW50b1N0YXRlbWVudCgpCiB7CiAgICAg
QVNTRVJUKGlzUGF1c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlv
biA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCkt
PkdldCh2ODo6U3RyaW5nOjpOZXcoInN0ZXBJbnRvU3RhdGVtZW50IikpKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRlLmdldCgpIH07Ci0gICAg
ZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgY2Fs
bERlYnVnZ2VyTWV0aG9kKCJzdGVwSW50b1N0YXRlbWVudCIsIDEsIGFyZ3YpOwogICAgIGNvbnRp
bnVlUHJvZ3JhbSgpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3ZlclN0YXRl
bWVudCgpCiB7CiAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInN0ZXBPdmVyU3RhdGVtZW50Iikp
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRl
LmdldCgpIH07Ci0gICAgZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwg
YXJndik7CisgICAgY2FsbERlYnVnZ2VyTWV0aG9kKCJzdGVwT3ZlclN0YXRlbWVudCIsIDEsIGFy
Z3YpOwogICAgIGNvbnRpbnVlUHJvZ3JhbSgpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpzdGVwT3V0T2ZGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwotICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInN0ZXBP
dXRPZkZ1bmN0aW9uIikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBt
X2V4ZWN1dGlvblN0YXRlLmdldCgpIH07Ci0gICAgZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgY2FsbERlYnVnZ2VyTWV0aG9kKCJzdGVwT3V0T2ZG
dW5jdGlvbiIsIDEsIGFyZ3YpOwogICAgIGNvbnRpbnVlUHJvZ3JhbSgpOwogfQogCkBAIC0yMjgs
MTIgKzIzMSwxMSBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZQogICAgIGlmICghaXNQYXVzZWQo
KSkKICAgICAgICAgY29udGV4dFNjb3BlID0gYWRvcHRQdHIobmV3IHY4OjpDb250ZXh0OjpTY29w
ZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzZXRTY3JpcHRTb3VyY2UiKSkp
OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4U3RyaW5nKHNvdXJjZUlE
KSwgdjhTdHJpbmcobmV3Q29udGVudCksIHY4Qm9vbGVhbihwcmV2aWV3KSB9OwogCiAgICAgdjg6
OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgIHRyeUNhdGNoLlNldFZlcmJvc2UoZmFsc2UpOwotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIDMsIGFyZ3YpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVz
dWx0ID0gY2FsbERlYnVnZ2VyTWV0aG9kKCJzZXRTY3JpcHRTb3VyY2UiLCAzLCBhcmd2KTsKICAg
ICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpNZXNz
YWdlPiBtZXNzYWdlID0gdHJ5Q2F0Y2guTWVzc2FnZSgpOwogICAgICAgICBpZiAoIW1lc3NhZ2Uu
SXNFbXB0eSgpKQpAQCAtMjU1LDkgKzI1Nyw4IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiBT
Y3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCiB7CiAgICAg
QVNTRVJUKGlzUGF1c2VkKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBjdXJyZW50
Q2FsbEZyYW1lRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJjdXJyZW50Q2FsbEZyYW1lIikp
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRl
LmdldCgpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1cnJlbnRDYWxsRnJhbWVWOCA9
IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAx
LCBhcmd2KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0g
Y2FsbERlYnVnZ2VyTWV0aG9kKCJjdXJyZW50Q2FsbEZyYW1lIiwgMSwgYXJndik7CiAKICAgICBB
U1NFUlQoIWN1cnJlbnRDYWxsRnJhbWVWOC5Jc0VtcHR5KCkpOwogICAgIGlmICghY3VycmVudENh
bGxGcmFtZVY4LT5Jc09iamVjdCgpKQpAQCAtMzU1LDYgKzM1Niw3IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWls
cyYgZXZlbnRECiAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlv
bkdldHRlclZhbHVlID0gZXZlbnREYXRhLT5HZXQodjg6OlN0cmluZzo6TmV3KCJleGNlcHRpb24i
KSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFleGNlcHRpb25HZXR0ZXJWYWx1ZS5Jc0VtcHR5
KCkgJiYgZXhjZXB0aW9uR2V0dGVyVmFsdWUtPklzRnVuY3Rpb24oKSk7CiAgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCkgfTsKKyAgICAgICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tD
aGVja3BvaW50IHNjb3BlOwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPjo6Q2FzdChleGNlcHRpb25HZXR0ZXJWYWx1ZSktPkNhbGwoZXZlbnREYXRh
LCAwLCBhcmd2KTsKICAgICAgICAgICAgIH0KIApAQCAtMzg5LDYgKzM5MSw3IEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKQogICAgICAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1Zzo6R2V0RGVi
dWdDb250ZXh0KCk7CiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoZGVi
dWdnZXJDb250ZXh0KTsKICAgICAgICAgU3RyaW5nIGRlYnVnZ2VyU2NyaXB0U291cmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KERlYnVnZ2VyU2NyaXB0U291cmNlX2pzKSwgc2l6ZW9m
KERlYnVnZ2VyU2NyaXB0U291cmNlX2pzKSk7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6OkJ5
cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NwcGU7CiAgICAgICAgIG1fZGVidWdnZXJTY3JpcHQu
c2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qodjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0
cmluZyhkZWJ1Z2dlclNjcmlwdFNvdXJjZSkpLT5SdW4oKSkpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGRlODQ2NTE0
MDExZTE3NTFmZDc3ZDIwZjlkNzRhMjVhMDgzNmJlN2MuLmE0ZmI2MTI5ZGUwZTQwYmVmYWJiMDE4
N2E4YTc4NTQ1MTgwYjcwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuaApAQCAtMTEzLDcgKzExMyw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gc291cmNlT2JqZWN0KTsKIAogICAgIHZvaWQgZW5zdXJlRGVi
dWdnZXJTY3JpcHRDb21waWxlZCgpOwotICAgIAorCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
Y2FsbERlYnVnZ2VyTWV0aG9kKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFyZ2MsIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOworCiAgICAgUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGU7CiAgICAgT3duSGFuZGxlPHY4OjpPYmplY3Q+IG1f
ZGVidWdnZXJTY3JpcHQ7CiAgICAgT3duSGFuZGxlPHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3Rh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcAppbmRleCA1Yzk2YjU2NGUxMzQyMDljZDVjYTJkNWRiNGViZTlmOWM1MDYxNTNjLi4wNmY1
NWE5OTNhZjlhNmRmNDNjYTQ0Y2IzYzA1NTI1NzU5YjE0NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTMxLDEyICszMSwx
MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgogCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRTY29wZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJW
OFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUg
PHY4Lmg+CkBAIC0xMzAsNyArMTMxLDExIEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2Fs
bDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucykKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICBh
cmdzW2ldID0gbV9hcmd1bWVudHNbaV0udjhWYWx1ZSgpOwogCi0gICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwodGhpc09iamVjdCwgbV9hcmd1bWVudHMuc2l6
ZSgpLCBhcmdzLmdldCgpKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7CisgICAg
eworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIHNjb3BlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRoaXNPYmplY3QsIG1fYXJn
dW1lbnRzLnNpemUoKSwgYXJncy5nZXQoKSk7CisgICAgfQogICAgIGlmICghc2NvcGUuc3VjY2Vz
cygpKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgIHJldHVybiBTY3Jp
cHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXgg
Nzk4Njc2ZTFlZTY5ZTg1YTczOGI0NTMyNTI0OTQ4MTNkNWMyNjhlNy4uZjdkYmUwNTkxOGVmYzgz
ZTI3NzU5ZjkxM2MxZmZkNDU3NzY2Y2Y0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCkBAIC01Niw2ICs1Niw5IEBAIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICA6IG1fZG9t
RGF0YVN0b3JlKDApCiAgICAgLCBtX2NvbnN0cnVjdG9yTW9kZShDb25zdHJ1Y3Rvck1vZGU6OkNy
ZWF0ZU5ld09iamVjdCkKICAgICAsIG1fcmVjdXJzaW9uTGV2ZWwoMCkKKyNpZm5kZWYgTkRFQlVH
CisgICAgLCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoMCkKKyNlbmRpZgogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDg0ZmYyMzczYWIyODZj
YjBmZTdmNjU0M2QwMTc3MmQ0NzQ0MzViYWIuLmU3Nzc2NWY2YmRmNGZkZWIyMGQ0N2MyYWRhYTYw
N2FiMjBkM2ZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0x
NTMsNiArMTUzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBOREVCVUcKICAg
ICAgICAgR2xvYmFsSGFuZGxlTWFwJiBnbG9iYWxIYW5kbGVNYXAoKSB7IHJldHVybiBtX2dsb2Jh
bEhhbmRsZU1hcDsgfQorCisgICAgICAgIGludCBpbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisgICAg
ICAgIGludCBpbmNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4g
KyttX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KKyAgICAgICAgaW50IGRlY3JlbWVu
dEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVybiAtLW1faW50ZXJuYWxTY3Jp
cHRSZWN1cnNpb25MZXZlbDsgfQogI2VuZGlmCiAKICAgICBwcml2YXRlOgpAQCAtMTc5LDYgKzE4
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgR2xv
YmFsSGFuZGxlTWFwIG1fZ2xvYmFsSGFuZGxlTWFwOworICAgICAgICBpbnQgbV9pbnRlcm5hbFNj
cmlwdFJlY3Vyc2lvbkxldmVsOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMjA4LDM4ICsyMTMsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9wcmV2aW91czsKICAgICB9Owog
Ci0gICAgY2xhc3MgU2FmZUFsbG9jYXRpb24gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+KTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+KTsKLSAgICAgICAgc3Rh
dGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7Ci0g
ICAgfTsKLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAg
aWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6
Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOwotICAgIH0KLQotICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6T2JqZWN0VGVtcGxhdGU+IG9iamVjdFRlbXBsYXRlKQotICAgIHsKLSAgICAgICAgaWYgKG9i
amVjdFRlbXBsYXRlLklzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6
Ok9iamVjdD4oKTsKLSAgICAgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKLSAg
ICAgICAgcmV0dXJuIG9iamVjdFRlbXBsYXRlLT5OZXdJbnN0YW5jZSgpOwotICAgIH0KLQotICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGFyZ3ZbXSkKLSAgICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAg
ICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVj
dG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5z
dGFuY2UoYXJnYywgYXJndik7Ci0gICAgfQotCi0KIAogICAgIGVudW0gRXh0ZXJuYWxNb2RlIHsK
ICAgICAgICAgRXh0ZXJuYWxpemUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGM0YzYwNTQwYWI5YjY4YTY5M2NkYjZmYzFlNzdmZjA5
NGM0MzQxYTUuLmI3ZTNhZDQ5YzVkZWIwZDNiNDY4OWU5YWNkNGE2M2U0Mjg0YTlhMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMDVkYzE4MWI5NWU3MTM3
NzA4NDk4Mjc4MGUwMDIzYmFjNTJhOWRmYi4uMjJmMjI1YzIzMThhYmQzMjZkMzkzOWZjZTRiMzhh
ZWQ2MTczZTVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5z
dGFuY2UuaCIKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydHlTZXQuaCIKICNpbmNsdWRlICJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExh
enlFdmVudExpc3RlbmVyLmNwcAppbmRleCA2MTYzZWFhOTU4N2UzZjliMWFhYWNiOGFhOWM5YzBj
YWNjZjBjZjNhLi5kZTQ5OTJjZmI2NmEyZjE0N2MwY2RhNWZhMzM3ZDBjOWQ0NjM2YTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAj
aW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVj
dXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKIAogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTE1NSw5ICsxNTYsMTIgQEAgdm9pZCBWOExhenlF
dmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICBpZiAoc2NyaXB0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gQ2FsbCB2ODo6U2NyaXB0OjpSdW4oKSBkaXJlY3RseSB0byBhdm9pZCBhbiBlcnJv
bmVvdXMgY2FsbCB0byBWOFJlY3Vyc2lvblNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoKS4K
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSB3aGVuIHdlIHN0b3AgZG9pbmcgdGhlICd3
aXRoJyBoYWNrIGFib3ZlLgotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlID0gc2NyaXB0
LT5SdW4oKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAg
IFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQgc2NvcGU7CisgICAg
ICAgIHZhbHVlID0gc2NyaXB0LT5SdW4oKTsKKyAgICB9CiAgICAgaWYgKHZhbHVlLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzQsMTAgKzE3OCwxMiBAQCB2b2lkIFY4TGF6eUV2
ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbM10gPSB7
IG5vZGVXcmFwcGVyLCBmb3JtV3JhcHBlciwgZG9jdW1lbnRXcmFwcGVyIH07CiAKLSAgICAvLyBV
c2UgQ2FsbCBkaXJlY3RseSB0byBhdm9pZCBhbiBlcnJvbmVvdXMgY2FsbCB0byBWOFJlY3Vyc2lv
blNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoKS4KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgY29kZSB3aGVuIHdlIHN0b3AgZG9pbmcgdGhlICd3aXRoJyBoYWNrIGFib3ZlLgotICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IGlubmVyVmFsdWUgPSBpbnRlcm1lZGlhdGVGdW5jdGlvbi0+Q2Fs
bCh2OENvbnRleHQtPkdsb2JhbCgpLCAzLCBwYXJhbWV0ZXJzKTsKLQorICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IGlubmVyVmFsdWU7CisgICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpC
eXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHNjb3BlOworICAgICAgICBpbm5lclZhbHVlID0gaW50
ZXJtZWRpYXRlRnVuY3Rpb24tPkNhbGwodjhDb250ZXh0LT5HbG9iYWwoKSwgMywgcGFyYW1ldGVy
cyk7CisgICAgfQogICAgIGlmIChpbm5lclZhbHVlLklzRW1wdHkoKSB8fCAhaW5uZXJWYWx1ZS0+
SXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhOUE9iamVjdC5jcHAKaW5kZXggZTQzZDI3ZTY0MDlkZWUyNWE4YWVlNzI2OTcwYTQ3ZTUy
NjAwNWQzNC4uZjZkZDFmOGYzNmY0Zjc4OGMxMWQ5OTUyMGRiYWIzYzJlNDAzOGQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVjdC5o
IgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKaW5kZXggM2I5
YWQ2ZWMxMWQwODRlN2IxMGZlOTU0ZTVjYzUyZjU2ODdmMmY4OC4uNmUzNjE5MzcyZjI2OTJhYzgz
MTI0MmVkNGU1ZjhkMWM3MTRiYzVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UmVjdXJzaW9uU2NvcGUuaApAQCAtMzMsOSArMzMsMjcgQEAKIAogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBDKysgY2FsbHMg
aW50byBzY3JpcHQgY29udGV4dHMgd2hpY2ggYXJlICJvd25lZCIgYnkgV2ViS2l0IChjcmVhdGVk
IGluIGEKKy8vIHByb2Nlc3Mgd2hlcmUgV2ViS2l0LmNwcCBpbml0aWFsaXplcyB2OCkgbXVzdCBk
ZWNsYXJlIHRoZWlyIHR5cGU6CisvLworLy8gICAxLiBDYWxscyBpbnRvIHBhZ2UvYXV0aG9yIHNj
cmlwdCBmcm9tIGEgZnJhbWUKKy8vICAgMi4gQ2FsbHMgaW50byBwYWdlL2F1dGhvciBzY3JpcHQg
ZnJvbSBhIHdvcmtlcgorLy8gICAzLiBDYWxscyBpbnRvIGludGVybmFsIHNjcmlwdCAodHlwaWNh
bGx5IHNldHVwL3RlYXJkb3duIHdvcmspCisvLworLy8gRGVidWctdGltZSBjaGVja2luZyBvZiB0
aGlzIGlzIGVuZm9yY2VkIHZpYSB0aGlzIGNsYXNzLgorLy8KKy8vIENhbGxzIG9mIHR5cGUgKDEp
IHNob3VsZCBnZW5lcmFsbHkgZ28gdGhyb3VnaCBWOFByb3h5LCBhcyBpbnNwZWN0b3IKKy8vIGlu
c3RydW1lbnRhdGlvbiBpcyBuZWVkZWQuIENhbGxzIG9mIHR5cGUgKDIpIHNob3VsZCBhbHdheXMg
c3RhY2stYWxsb2NhdGUgYQorLy8gVjhSZWN1cnNpb25TY29wZSBpbiB0aGUgc2FtZSBibG9jayBh
cyB0aGUgY2FsbCBpbnRvIHNjcmlwdC4gQ2FsbHMgb2YgdHlwZSAoMykKKy8vIHNob3VsZCBzdGFj
ayBhbGxvY2F0ZSBhIFY4UmVjdXJzaW9uU2NvcGU6OkJ5cGFzc01pY3JvdGFza0NoZWNrcG9pbnQg
LS0gdGhpcworLy8gc2tpcHMgd29yayB0aGF0IGlzIHNwZWMnZCB0byBoYXBwZW4gYXQgdGhlIGVu
ZCBvZiB0aGUgb3V0ZXItbW9zdCBzY3JpcHQgc3RhY2sKKy8vIGZyYW1lIG9mIGNhbGxzIGludG8g
cGFnZSBzY3JpcHQ6CisvLworLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jcGVyZm9ybS1hLW1pY3JvdGFzay1jaGVja3BvaW50CiBjbGFzcyBWOFJl
Y3Vyc2lvblNjb3BlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWOFJlY3Vyc2lvblNjb3Bl
KTsKIHB1YmxpYzoKQEAgLTUxLDcgKzY5LDM0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRpZExl
YXZlU2NyaXB0Q29udGV4dCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBpbnQgcmVjdXJzaW9uTGV2
ZWwoKSB7IHJldHVybiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5yZWN1cnNp
b25MZXZlbCgpOyB9CisgICAgc3RhdGljIGludCByZWN1cnNpb25MZXZlbCgpCisgICAgeworICAg
ICAgICByZXR1cm4gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVjdXJzaW9u
TGV2ZWwoKTsKKyAgICB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgc3RhdGljIGJvb2wgcHJvcGVy
bHlVc2VkKCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWN1cnNpb25MZXZlbCgpID4gMCB8fCBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5pbnRlcm5hbFNjcmlwdFJlY3Vyc2lv
bkxldmVsKCkgPiAwOworICAgIH0KKyNlbmRpZgorCisgICAgY2xhc3MgQnlwYXNzTWljcm90YXNr
Q2hlY2twb2ludCB7CisgICAgcHVibGljOgorICAgICAgICBCeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50KCkKKyAgICAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwoKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgfkJ5cGFzc01pY3JvdGFza0No
ZWNrcG9pbnQoKQorICAgICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1
cnNpb25MZXZlbCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9OwogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkTGVhdmVTY3JpcHRDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCBi
ZjhkMmIzMzljYzE1ZDE2Mzg0ZTA1YTU3OTc1NzYwOGE2ZTYzYTA5Li5mODJiZGQwN2Y5ZWMxMGZh
M2NhYzJiMjk2ZTJkODM1MjkxZjhkZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKIAogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyQ29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNDFhZTA3MTcxNTVlNTE3
ZDA5MDYwOWM5MWM5NTQxNjFkNmIzZTY0Ny4uY2FlNjY4OTcwMDI5YWRjN2NjY2Y2OWY3MjdmMmQ5
ZDIzOTk2OWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CkBAIC02Niw3ICs2NywxMSBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4g
dwogICAgIGlmIChzaGFkb3dDb25zdHJ1Y3Rvci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKIAotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFk
b3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gc2hhZG93OworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNz
TWljcm90YXNrQ2hlY2twb2ludCBzY29wZTsKKyAgICAgICAgc2hhZG93ID0gc2hhZG93Q29uc3Ry
dWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgfQogICAgIGlmIChzaGFkb3cuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKHNoYWRvdywgJlY4SFRNTERvY3VtZW50OjppbmZvLCBpbXBsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDhiYjQyODFlMzg4MmIyNDIwYmNlMTNmZWRmNjE0
Nzc5Zjc2NWM4YTMuLmFkNWZiOWQwMWJiYjYyYmE4ZDU2OWY1YTZiOGJjODE5YmMxZTk1NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Z1N0YXRlLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5h
bWUuaCIKICNpbmNsdWRlICJWOEluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Niw2ICs5OCw3IEBAIFNjcmlwdE9iamVj
dCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc2NyaXB0U291CiAgICAgLy8gaW5qZWN0ZWQgc2NyaXB0IGlkIGFuZCBleHBsaWNpdCByZWZl
cmVuY2UgdG8gdGhlIGluc3BlY3RlZCBnbG9iYWwgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZXhw
ZWN0ZWQKICAgICAvLyB0byBjcmVhdGUgYW5kIGNvbmZpZ3VyZSBJbmplY3RlZFNjcmlwdCBpbnN0
YW5jZSB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgYnkgdGhlIGluc3BlY3Rvci4KICAgICB2ODo6
TG9jYWw8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhz
Y3JpcHRTb3VyY2UpKTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVj
a3BvaW50IHJlY3Vyc2lvblNjb3BlOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3Jp
cHQtPlJ1bigpOwogICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwogICAgIEFTU0VSVCh2LT5Jc0Z1
bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcAppbmRleCAzMmQ4NzI2OGNhYjdlY2JjM2Uz
NzAzMjZiOTM5M2VmOTYwNDU5MzJhLi42NDIxODU1MDE2MjZmZDJlOWNmN2QzMmFjMmJmZTNhZmJi
M2Y2MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
Y3JpcHRQcm9maWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgog
CisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJv
ZmlsZU5vZGVDdXN0b20uY3BwCmluZGV4IGMxMzQwMGVmZTJmYjMyNjk3YWQyM2Q5MzZlMzgzODk3
MjQ0NTZkNzguLjc4ZDkyMTBiZDFlMjU5ZWNjMDE2NjE4NDNmNjAwNTY4NjUzMzgwZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVO
b2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
Y3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKICNpbmNsdWRlICJWOFNjcmlwdFByb2ZpbGVOb2RlLmgiCiAK
KyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVOb2Rl
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGIwMzVjNzBlYmM3NWYyMDViNjMwM2FlN2NlNjE0MmRl
NGU4YmRlOGYuLmJmOTZjNjNkZjZlYWNiYWU0MWMxYTIwOWQ5MGU2OWVmY2E3NWIxYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI0Myw2ICsyNDMsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViU2NvcGVkVXNlckdlc3R1cmUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTY3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2NyaXB0
Q29udHJvbGxlci5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjcmlwdEludm9jYXRp
b24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRTb3VyY2UuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTY3JvbGxiYXJDbGllbnQuaCcsCkBAIC02NDksNiArNjUwLDcgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViU2NvcGVkVXNlckdlc3R1cmUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNj
cmlwdENvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcmlwdEludm9j
YXRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IDBkNTQwNmQ1MjA2ODJjOTUwMTU0NmI0MDgyNTMyODUw
OTU1ZjZiZTUuLjE5YTdjMzcwMjljNTdhZGRjOThlNjcxNmE4MDZhYTFjMDAyOTJlYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaApAQCAtNDQsNiArNDQsOCBAQCBz
dHJ1Y3QgTlBPYmplY3Q7CiAjaWYgV0VCS0lUX1VTSU5HX1Y4CiBuYW1lc3BhY2UgdjggewogY2xh
c3MgQ29udGV4dDsKK2NsYXNzIEZ1bmN0aW9uOworY2xhc3MgT2JqZWN0OwogY2xhc3MgVmFsdWU7
CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOwogdGVtcGxhdGUgPGNsYXNzIFQ+IGNs
YXNzIExvY2FsOwpAQCAtMjc0LDYgKzI3NiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZXhlY3V0ZVNjcmlwdEFuZFJldHVyblZhbHVlKAogICAgICAgICBj
b25zdCBXZWJTY3JpcHRTb3VyY2UmKSA9IDA7CiAKKyAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB3
aXRoIHRoZSBnaXZlbiByZWNlaXZlciBhbmQgYXJndW1lbnRzLCBieXBhc3NpbmcKKyAgICAvLyBj
YW5FeGVjdXRlKCkuCisgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEZ1bmN0
aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiwKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwKKyAgICAgICAgaW50IGFyZ2MsCisg
ICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pID0gMDsKKwogICAgIC8vIFJldHVy
bnMgdGhlIFY4IGNvbnRleHQgZm9yIHRoaXMgZnJhbWUsIG9yIGFuIGVtcHR5IGhhbmRsZSBpZiB0
aGVyZQogICAgIC8vIGlzIG5vbmUuCiAgICAgdmlydHVhbCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IG1haW5Xb3JsZFNjcmlwdENvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhi
Mzg5ZjgwYmZkZjUyZDM3NDM3NzM5MDM3MmEwNGNlNmZmOTYwNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdEludm9jYXRpb24uaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJTY3JpcHRJbnZvY2F0aW9uX2gKKyNkZWZpbmUgV2ViU2Ny
aXB0SW52b2NhdGlvbl9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlT3duUHRyLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTY3JpcHRJbnZvY2F0aW9uIHsKKwor
cHVibGljOgorICAgIC8vIFRoaXMgY2xhc3Mgd3JhcHMgVjhSZWN1cnNpb25TY29wZTo6QnlwYXNz
TWljcm90YXNrQ2hlY2twb2ludC4gUGxlYXNlCisgICAgLy8gc2VlIFY4UmVjdXJzaW9uU2NvcGUu
aCBmb3IgY29ycmVjdCB1c2FnZS4KKyAgICBjbGFzcyBCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdFQktJVF9FWFBPUlQgQnlwYXNzTWljcm90YXNrQ2hl
Y2twb2ludCgpOworICAgICAgICBXRUJLSVRfRVhQT1JUIH5CeXBhc3NNaWNyb3Rhc2tDaGVja3Bv
aW50KCk7CisKKyAgICBwcml2YXRlOgorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgY2xhc3MgSW1w
bDsKKyAgICAgICAgV2ViUHJpdmF0ZU93blB0cjxJbXBsPiBtX2ltcGw7CisjZW5kaWYKKyAgICB9
OworfTsKKworfSAvLyBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAzZDQzYzFmNTk0NDc3OTdkMDRjZjRkODQ4ZTIzNGZm
ODI1NmUyY2JiLi42OTM4OWRkOTQ5ZjNlZDk2N2VlNzMwODgwNjAxN2NhZjg5YjJjN2FkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTg5NSw2ICs4
OTUsMTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZVNjcmlw
dEFuZFJldHVyblZhbHVlKGNvbnN0IFdlYlNjcmlwdFMKICAgICByZXR1cm4gbV9mcmFtZS0+c2Ny
aXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzb3VyY2UuY29kZSwgc291cmNl
LnVybCwgcG9zaXRpb24pKS52OFZhbHVlKCk7CiB9CiAKKy8vIENhbGwgdGhlIGZ1bmN0aW9uIHdp
dGggdGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZyBjYW5FeGVjdXRl
U2NyaXB0cy4KK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNhbGxGdW5jdGlv
bkV2ZW5JZlNjcmlwdERpc2FibGVkKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVjZWl2ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYXJnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCit7
CisgICAgcmV0dXJuIG1fZnJhbWUtPnNjcmlwdCgpLT5jYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHRE
aXNhYmxlZChmdW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3YpLnY4VmFsdWUoKTsKK30KKwog
Ly8gUmV0dXJucyB0aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkgaGFu
ZGxlIGlmIHRoZXJlIGlzIG5vbmUuCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdlYkZyYW1lSW1w
bDo6bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDcwMGY2ZWE0MDM3ZTdiMjhiOTBiZGM4Zjk0OTk0
YzhhZWU5YTMxZjIuLjljODZkNzUxNGFjMDBlYTVmMWRiYjgxNzc5YjNjYTM1ODE2ZjM2NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0xMTAsNiArMTEw
LDExIEBAIHB1YmxpYzoKICNpZiBXRUJLSVRfVVNJTkdfVjgKICAgICB2aXJ0dWFsIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNvbnN0
IFdlYlNjcmlwdFNvdXJjZSYpOworICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNh
bGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4sCisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sCisgICAgICAgIGludCBh
cmdjLAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKICAgICB2aXJ0dWFs
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmls
ZVN5c3RlbTo6VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJLaXQuY3BwCmluZGV4IGRjYzk4ZGMwODU4NzI5ZDM1ZDU4YmMyNGIyMzY1NmIwNzU3MDU5NzIu
Ljc0MDYzZmNmZWU4OTU1YTBhNjUxYTg1ZTIzNWMyOGJhNTllNzE1YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldlYktpdE11dGF0aW9u
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKICNpbmNs
dWRlICJXZWJTb2NrZXQuaCIKQEAgLTg4LDYgKzg5LDE0IEBAIHN0YXRpYyBib29sIGdlbmVyYXRl
RW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgYXNzZXJ0VjhSZWN1cnNp
b25TY29wZSgpCit7CisgICAgLy8gRklYTUU6IEVuYWJsZSB3aGVuIGNocm9taXVtIHVzYWdlIG9m
IFdlYlNjcmlwdEludm9jYXRpb24gaGFzIGxhbmRlZC4KKyAgICAvLyBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpIHx8IFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnByb3Blcmx5VXNlZCgpKTsKK30K
KyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQpCiB7CiAgICAgaW5pdGlhbGl6ZVdpdGhvdXRWOCh3ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQpOwpAQCAtOTcsNiArMTA2LDEwIEBAIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKICAgICBXZWJDb3JlOjpWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6ZW5zdXJlSW5pdGlhbGl6ZWQodjg6Oklzb2xhdGU6OkdldEN1cnJl
bnQoKSk7CiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmbmRlZiBOREVCVUcK
KyAgICB2ODo6Vjg6OkFkZENhbGxDb21wbGV0ZWRDYWxsYmFjaygmYXNzZXJ0VjhSZWN1cnNpb25T
Y29wZSk7CisjZW5kaWYKKwogICAgIC8vIGN1cnJlbnRUaHJlYWQgd2lsbCBhbHdheXMgYmUgbm9u
LW51bGwgaW4gcHJvZHVjdGlvbiwgYnV0IGNhbiBiZSBudWxsIGluIENocm9taXVtIHVuaXQgdGVz
dHMuCiAgICAgaWYgKFdlYlRocmVhZCogY3VycmVudFRocmVhZCA9IHdlYktpdFBsYXRmb3JtU3Vw
cG9ydC0+Y3VycmVudFRocmVhZCgpKSB7CiAgICAgICAgIEFTU0VSVCghc19lbmRPZlRhc2tSdW5u
ZXIpOwpAQCAtMTM4LDYgKzE1MSwxMCBAQCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0
UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB2b2lkIHNodXRkb3duKCkK
IHsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorI2lmbmRlZiBOREVCVUcKKyAgICB2
ODo6Vjg6OlJlbW92ZUNhbGxDb21wbGV0ZWRDYWxsYmFjaygmYXNzZXJ0VjhSZWN1cnNpb25TY29w
ZSk7CisjZW5kaWYKKwogICAgIGlmIChzX2VuZE9mVGFza1J1bm5lcikgewogICAgICAgICBBU1NF
UlQoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKSk7CiAgICAgICAgIHNf
d2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCktPnJlbW92ZVRhc2tPYnNlcnZl
cihzX2VuZE9mVGFza1J1bm5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNjcmlwdEludm9jYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMDA4ZmE4MjUzZjllZTExMGI2
NDdmNGRlNTg0NWJiNWNiNDk0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTY3JpcHRJbnZvY2F0aW9uLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNjcmlwdEludm9jYXRpb24uaCIKKworI2lu
Y2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisjaWZuZGVmIE5ERUJVRworY2xhc3MgV2ViU2NyaXB0SW52b2Nh
dGlvbjo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpW
OFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50IHsKK3B1YmxpYzoKKyAg
ICBJbXBsKCkgeyB9CisgICAgfkltcGwoKSB7IH0KK307CisjZW5kaWYKKworV2ViU2NyaXB0SW52
b2NhdGlvbjo6QnlwYXNzTWljcm90YXNrQ2hlY2twb2ludDo6QnlwYXNzTWljcm90YXNrQ2hlY2tw
b2ludCgpCit7CisjaWZuZGVmIE5ERUJVRworICAgIG1faW1wbC5yZXNldChuZXcgQnlwYXNzTWlj
cm90YXNrQ2hlY2twb2ludDo6SW1wbCgpKTsKKyNlbmRpZgorfQorCitXZWJTY3JpcHRJbnZvY2F0
aW9uOjpCeXBhc3NNaWNyb3Rhc2tDaGVja3BvaW50Ojp+QnlwYXNzTWljcm90YXNrQ2hlY2twb2lu
dCgpCit7CisjaWZuZGVmIE5ERUJVRworICAgIG1faW1wbC5yZXNldCgwKTsKKyNlbmRpZgorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134876</attachid>
            <date>2012-03-30 14:03:15 -0700</date>
            <delta_ts>2012-03-30 14:05:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120330140314.patch</filename>
            <type>text/plain</type>
            <size>47613</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJiZDBiZTVjM2Q2OWY4
NmJkN2Q3MGM2OGI4NWZlZDg2YmI3NTE1MS4uNWFjNTBlZWM4Yjg5NWZhZGZlNWQwNTE4OWMyY2I2
MmIyZDk5ZTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTAzLTMwICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmQtb2YtbWljcm90YXNrIHdvcmsgKGNhbmNl
bGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAgICAgICAgZGVsaXZlcmluZyBE
T00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29wZSBiZWluZyBvbiB0aGUKKyAg
ICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50byBzY3JpcHQuIFY4IHByb3Zp
ZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkgdGhhdCBjb3VsZCBiZSB1c2Vk
IHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAgICAgIGV2ZW50cywgYnV0IGl0
IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlwdCBmb3IgdmFyaW91cworICAg
ICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJvbSB0aGUgcGFnZS4gRm9yIGV4
YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9iamVjdHMgZnJvbSBmdW5jdGlv
biB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIsCisgICAgICAgIHlldCBpdCdz
IG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBldmVyeSB0aW1lIGEgSlMgd3Jh
cHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAgICBJbnN0ZWFkLCB0aGlzIHBh
dGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxsYmFjayBtZWNoYW5pc20KKyAg
ICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhhdCBlaXRoZXIgYSBWOFJlY3Vy
c2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9yIHNjcmlwdCkgb3IgYSBWOFJl
Y3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbgorICAgICAgICAod2hlbiBjYWxsaW5n
IG5vbi1hdXRob3Igc2NyaXB0KSBpcyBvbiB0aGUgc3RhY2sgd2hlbiBWOCB0aGlua3MgaXQncwor
ICAgICAgICBmaW5pc2hlZCBleGVjdXRpbmcgc2NyaXB0LiBUaGlzIHJlcXVpcmVzIGRyb3BwaW5n
IE1pY3JvdGFza1N1cHByZXNzaW9uCisgICAgICAgIG9iamVjdHMgaW4gYSBidW5jaCBvZiBwbGFj
ZXMsIG1vc3Qgbm90YWJseSB0aGUgSW5zcGVjdG9yLgorICAgICAgICBOb3RlIHRoYXQgaW4gcmVs
ZWFzZSBtb2RlLCB0aGlzIGNsYXNzIGRvZXMgbm90aGluZyBhbmQgdGh1cyBzaG91bGQgYmUKKyAg
ICAgICAgb3B0aW1pemVkIGF3YXkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0
ZXN0cyBoYXZlIGFwcHJvcHJpYXRlIGNvdmVyYWdlLgorCisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVw
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFNhZmVBbGxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNhZmVB
bGxvY2F0aW9uOjpuZXdJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVu
Y3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNl
T25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpzdGVwT3ZlclN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjplbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oOgorICAgICAgICAoVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmludGVybmFsU2NyaXB0UmVjdXJz
aW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6Omlu
Y3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExhenlFdmVu
dExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29w
ZTo6cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoVjhSZWN1cnNpb25TY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpwcm9wZXJseVVzZWQpOgorICAgICAgICAoTWlj
cm90YXNrU3VwcHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
TWljcm90YXNrU3VwcHJlc3Npb246Ok1pY3JvdGFza1N1cHByZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uOjp+TWljcm90YXNr
U3VwcHJlc3Npb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFk
b3dPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNy
ZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3Jp
cHRQcm9maWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3Jp
cHRQcm9maWxlTm9kZUN1c3RvbS5jcHA6CisKIDIwMTItMDMtMzAgIE1hcmsgUGlsZ3JpbSAgPHBp
bGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9OIHNob3VsZCBiZSBpbXBs
ZW1lbnRlZCBhcyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
Mzg4OTU3MzE3ZjYzNDhmMTY3ZWEzNmVmNjkzMmM4YmY2YzA5ZDAyZS4uNDRjZWUzNTNiZjJiYTVh
NjMxOWRkMGViN2E0ZDJhMGQ3ZmI1ZDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNSBAQAorMjAxMi0wMy0zMCAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0aW9uIGNhbGxiYWNrIEFQSSB0byBh
c3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRoZSBzdGFjayB3aGVuZXZlciBpbnZv
a2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAo
djgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHB1YmxpYy9XZWJTY29wZWRNaWNy
b3Rhc2tTdXBwcmVzc2lvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFJlY3Vyc2lvblNjb3BlLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Nv
cGVkTWljcm90YXNrU3VwcHJlc3Npb24pOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjYWxs
RnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1w
bC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmFzc2VydFY4UmVjdXJzaW9uU2Nv
cGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6c2h1
dGRvd24pOgorICAgICAgICAqIHNyYy9XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbi5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUu
aC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVz
c2lvbjo6SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNz
aW9uOjpJbXBsOjpJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NvcGVkTWljcm90YXNrU3Vw
cHJlc3Npb246OkltcGw6On5JbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NvcGVkTWljcm90
YXNrU3VwcHJlc3Npb246OldlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb246On5XZWJTY29wZWRNaWNyb3Rh
c2tTdXBwcmVzc2lvbik6CisKIDIwMTItMDMtMzAgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9OIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBh
cyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDYwNGEwZTQ3ZThkOGQxYjZmMzE4NjM0
MmY2MDE2MTM0MjJlMWNiY2EuLmEwMGI4ZTgwMGFlZTJmZTkxNTRkYTYyNTUxMDdjZTI1YWMxZTUz
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMTQwNSw2ICsxNDA1LDcgQEAgdjggewogICAgICAgICBiaW5k
aW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Jl
dGFpbmVkRE9NSW5mby5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZv
LmggXAorICAgICAgICBiaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIFwKICAgICAgICAgYmlu
ZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5kaW5ncy92OC9TY29wZWRE
T01EYXRhU3RvcmUuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3ZjFjM2M2YjQ3NGMwNjk3OGFjNTlkMGU1NzhiMzY3
ODEyMDg0MTVhLi5hOWZkOTgxNDAxMjhkOGZkYjU3OTM1NzM5NzQ3ZDAzN2Q5ODY3OTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yMDY1LDYgKzIwNjUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFp
bmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZE9iamVjdElu
Zm8uaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Njb3BlZERPTURhdGFTdG9yZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
YXRlRXh0ZW5zaW9uLmNwcAppbmRleCAzMzI4MjhiMjJhMzc4ZDQ5ZWFkMGFkZTcyM2ZhN2I4NGJi
OTQ0ZWI4Li5jYTM2M2MyZWZmMWQ4MzllMjhmNmE2NjhlODEwMjM4N2MxMzY0MjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcApAQCAtMzEsOCArMzEs
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVFeHRlbnNpb24uaCIKIAot
I2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODksNiArOTAsNyBAQCB2b2lkIERhdGVFeHRlbnNpb246
OnNldEFsbG93U2xlZXAoYm9vbCBhbGxvdykKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2WzFdOwogICAgIGFyZ3ZbMF0gPSB2ODo6Qm9vbGVhbjo6TmV3KCFhbGxvdyk7CisgICAgVjhS
ZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHNsZWVwRnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmpl
Y3Q6Ok5ldygpLCAxLCBhcmd2KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMx
ZDcxNjE5N2E0YmI0YTZiZjdjNTA5Ni4uZDlkOTdlN2I2Zjc3YzM0ZDAzNDljYmE5YzhmMDE4ZjM3
ZGU0YmU0NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5j
bHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTEwMCw3ICsxMDEsMTEgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0
U2NyaXB0cyIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4
dC0+R2V0RGF0YSgpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2Ny
aXB0c0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9u
U2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAgICB2YWx1ZSA9IGdldFNj
cmlwdHNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAg
ICB9CiAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VS
VCghdmFsdWUtPklzVW5kZWZpbmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2IzNGFlYmYz
YWE4YmNkN2E0ODlkYjVlOGU1ZmJhNjVlNzgwMzBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApAQCAtMCwwICsxLDc3IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlv
bi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFNhZmVBbGxvY2F0aW9uX2gKKyNkZWZp
bmUgU2FmZUFsbG9jYXRpb25faAorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgorCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTYWZlQWxsb2NhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGlu
ZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+KTsKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOworICAgIHN0YXRpYyBpbmxpbmUgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwg
aW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOworfTsKKwordjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gZnVuY3Rpb24pCit7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9yTW9kZSBj
b25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Np
b24gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOworfQorCit2ODo6
TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKK3sKKyAgICBpZiAob2JqZWN0VGVt
cGxhdGUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7
CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNj
b3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICByZXR1cm4gb2JqZWN0VGVtcGxh
dGUtPk5ld0luc3RhbmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2Nh
dGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQg
YXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICBpZiAoZnVuY3Rpb24u
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAg
Q29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpN
aWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3Rh
bmNlKGFyZ2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTYWZlQWxsb2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IDhkZTk1NTM3YWQ3ZjJjZmQxYWY2NGY4MmU5ZGFkZmE4ZDI3
ZGM5ZGMuLmMzODQyNWU3YTNiZmM4N2RhOGNkZjhjZjMyMmEyZTNiZjM4MWYzMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2
ICs2Miw3IEBACiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOE5Q
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTYxLDYgKzE2MiwxMiBAQCBib29s
IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiAgICAgcmV0dXJuIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAorU2NyaXB0
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQo
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHJlY2VpdmVyLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgcGVyZm9ybSB0aGUgc2FtZSBpc1BhdXNl
ZCBjaGVjayB0aGF0IGhhcHBlbnMgaW4gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdC4K
KyAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9wcm94eS0+Y2FsbEZ1bmN0aW9uKGZ1bmN0aW9uLCBy
ZWNlaXZlciwgYXJnYywgYXJndikpOworfQorCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRT
b3VyY2VDb2RlPiYgc291cmNlcykKIHsKICAgICBtX3Byb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRX
b3JsZCh3b3JsZElELCBzb3VyY2VzLCAwKTsKQEAgLTI0NSw4ICsyNTIsMTAgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBzb3VyY2UgPSB2ODo6U3RyaW5nOjpOZXcoImlmIChnYykgZ2MoKTsiKTsKICAgICAgICAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUgPSB2ODo6U3RyaW5nOjpOZXcoImdjIik7CiAgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShz
b3VyY2UsIG5hbWUpOwotICAgICAgICBpZiAoIXNjcmlwdC5Jc0VtcHR5KCkpCisgICAgICAgIGlm
ICghc2NyaXB0LklzRW1wdHkoKSkgeworICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6TWlj
cm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAgICAgICAgICAgICBzY3JpcHQtPlJ1bigpOworICAg
ICAgICB9CiAgICAgfQogICAgIHY4Q29udGV4dC5EaXNwb3NlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOWQyZWZkZWIxOGVkYzUy
NjYxYWU5OGM4YzY4MDg1NmY3NGM1NWQwYS4uNzQzYjEyYmRiNzQ3M2I4OWU4NDgyYzc5YmQ5Mzgw
YzdkYTQxNTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKICAgICBTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBm
YWxzZSk7CisgICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQo
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBpbnQgYXJn
Yywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgYXJndW1lbnQgaXMgYSBKYXZhU2NyaXB0IFVSTC4KICAgICBib29sIGV4ZWN1dGVJZkphdmFT
Y3JpcHRVUkwoY29uc3QgS1VSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGI3MDU1MjNiNzFmNThiOTlmMDMyZjM5YjZhNjUwNGM4MTBm
MGU1YjUuLmNkMzBjNjRhZTcxOGRlZjg5OGJhOWEwNTMyMjc5MWExODQ0YjJmMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJWOFJl
Y3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNTcsNiArNTgsMTMgQEAgcHJpdmF0ZToKIAogfQogCit2ODo6
TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldyhmdW5jdGlvbk5hbWUpKSk7CisgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90
YXNrU3VwcHJlc3Npb24gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQorCiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2Ny
aXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERvbnRQYXVz
ZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKQEAgLTEy
OSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6
R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkg
fTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9k
ZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAs
IGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQogCkBAIC0xNDEsOSAr
MTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24KICAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERl
YnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRQYXVzZU9u
RXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6Oklu
dDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkgfTsKLSAgICBzZXRQYXVzZU9uRXhjZXB0
aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAg
IGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDEsIGFyZ3Yp
OwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChi
b29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVt
ZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcEludG9TdGF0ZW1lbnQiKSkp
OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUu
Z2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBh
cmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBJbnRvU3RhdGVtZW50IiwgMSwgYXJn
dik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46
OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE92
ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1f
ZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2Ny
aXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdmVyU3Rh
dGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNQYXVz
ZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJp
bmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2Fs
bChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRo
b2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7
CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNj
cmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAg
aWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6
OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNj
cmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhT
dHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSwgdjhCb29sZWFuKHByZXZpZXcp
IH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9z
ZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gZnVuY3Rpb24t
PkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywgYXJndik7CisgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoInNldFNjcmlwdFNvdXJjZSIs
IDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewogICAgICAgICB2ODo6
TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlDYXRjaC5NZXNzYWdlKCk7CiAgICAgICAg
IGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUsOSArMjU3LDggQEAgYm9vbCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0
IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZy
YW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1cnJl
bnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1f
ZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVu
dENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJT
Y3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50
Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2QoImN1cnJlbnRDYWxsRnJhbWUiLCAxLCBh
cmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxGcmFtZVY4LklzRW1wdHkoKSk7CiAgICAg
aWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0KCkpCkBAIC0zNTUsNiArMzU2LDcgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1
Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpO
ZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRl
clZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsK
ICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1p
Y3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChleGNlcHRpb25HZXR0ZXJWYWx1ZSktPkNhbGwo
ZXZlbnREYXRhLCAwLCBhcmd2KTsKICAgICAgICAgICAgIH0KIApAQCAtMzg5LDYgKzM5MSw3IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKQog
ICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCk7CiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0
U2NvcGUoZGVidWdnZXJDb250ZXh0KTsKICAgICAgICAgU3RyaW5nIGRlYnVnZ2VyU2NyaXB0U291
cmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KERlYnVnZ2VyU2NyaXB0U291cmNlX2pz
KSwgc2l6ZW9mKERlYnVnZ2VyU2NyaXB0U291cmNlX2pzKSk7CisgICAgICAgIFY4UmVjdXJzaW9u
U2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwogICAgICAgICBtX2Rl
YnVnZ2VyU2NyaXB0LnNldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4OjpTY3JpcHQ6
OkNvbXBpbGUodjhTdHJpbmcoZGVidWdnZXJTY3JpcHRTb3VyY2UpKS0+UnVuKCkpKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApp
bmRleCBkZTg0NjUxNDAxMWUxNzUxZmQ3N2QyMGY5ZDc0YTI1YTA4MzZiZTdjLi5hNGZiNjEyOWRl
MGU0MGJlZmFiYjAxODdhOGE3ODU0NTE4MGI3MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTExMyw3ICsxMTMsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNlKFNjcmlwdERlYnVnTGlzdGVuZXIq
IGxpc3RlbmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNvdXJjZU9iamVjdCk7CiAKICAgICB2
b2lkIGVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKTsKLSAgICAKKworICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IGNhbGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKKwogICAgIFBhdXNlT25F
eGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgIE93bkhhbmRsZTx2
ODo6T2JqZWN0PiBtX2RlYnVnZ2VyU2NyaXB0OwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBt
X2V4ZWN1dGlvblN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggNWM5NmI1NjRlMTM0MjA5Y2Q1Y2EyZDVkYjRlYmU5Zjlj
NTA2MTUzYy4uMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1OWIxNDYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBA
IC0zMSwxMiArMzEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCi0KICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgi
CiAKICNpbmNsdWRlIDx2OC5oPgpAQCAtMTMwLDcgKzEzMSwxMSBAQCBTY3JpcHRWYWx1ZSBTY3Jp
cHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJlcG9ydEV4Y2Vw
dGlvbnMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsr
aSkKICAgICAgICAgYXJnc1tpXSA9IG1fYXJndW1lbnRzW2ldLnY4VmFsdWUoKTsKIAotICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRoaXNPYmplY3QsIG1f
YXJndW1lbnRzLnNpemUoKSwgYXJncy5nZXQoKSk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
cmVzdWx0OworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29wZShnZXRTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlz
T2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAgIH0KICAgICBpZiAo
IXNjb3BlLnN1Y2Nlc3MoKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwCmluZGV4IDc5ODY3NmUxZWU2OWU4NWE3MzhiNDUzMjUyNDk0ODEzZDVjMjY4ZTcuLmY3
ZGJlMDU5MThlZmM4M2UyNzc1OWY5MTNjMWZmZDQ1Nzc2NmNmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNTYsNiArNTYsOSBAQCBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiAgICAgOiBtX2RvbURhdGFTdG9yZSgwKQogICAgICwgbV9jb25zdHJ1Y3Rvck1vZGUoQ29uc3Ry
dWN0b3JNb2RlOjpDcmVhdGVOZXdPYmplY3QpCiAgICAgLCBtX3JlY3Vyc2lvbkxldmVsKDApCisj
aWZuZGVmIE5ERUJVRworICAgICwgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKDApCisj
ZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA4
NGZmMjM3M2FiMjg2Y2IwZmU3ZjY1NDNkMDE3NzJkNDc0NDM1YmFiLi5lNzc3NjVmNmJkZjRmZGVi
MjBkNDdjMmFkYWE2MDdhYjIwZDNmY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuaApAQCAtMTUzLDYgKzE1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwKCkgeyBy
ZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0KKworICAgICAgICBpbnQgaW50ZXJuYWxTY3JpcHRS
ZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbDsgfQorICAgICAgICBpbnQgaW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZl
bCgpIHsgcmV0dXJuICsrbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisgICAgICAg
IGludCBkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gLS1t
X2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KICNlbmRpZgogCiAgICAgcHJpdmF0ZToK
QEAgLTE3OSw2ICsxODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsKKyAgICAgICAgaW50
IG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKICNlbmRpZgogICAgIH07CiAKQEAgLTIw
OCwzOCArMjEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcHJldmlv
dXM7CiAgICAgfTsKIAotICAgIGNsYXNzIFNhZmVBbGxvY2F0aW9uIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPik7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPik7
Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10pOwotICAgIH07Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9j
YXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbikKLSAg
ICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1
Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoKTsKLSAgICB9
Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChvYmplY3RUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1
Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBvYmplY3RUZW1wbGF0ZS0+TmV3SW5zdGFuY2UoKTsK
LSAgICB9Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb24uSXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAg
ICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gZnVu
Y3Rpb24tPk5ld0luc3RhbmNlKGFyZ2MsIGFyZ3YpOwotICAgIH0KLQotCiAKICAgICBlbnVtIEV4
dGVybmFsTW9kZSB7CiAgICAgICAgIEV4dGVybmFsaXplLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCBjNGM2MDU0MGFiOWI2OGE2OTNj
ZGI2ZmMxZTc3ZmYwOTRjNDM0MWE1Li5iN2UzYWQ0OWM1ZGViMGQzYjQ2ODllOWFjZDRhNjNlNDI4
NGE5YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA1
ZGMxODFiOTVlNzEzNzcwODQ5ODI3ODBlMDAyM2JhYzUyYTlkZmIuLjIyZjIyNWMyMzE4YWJkMzI2
ZDM5MzlmY2U0YjM4YWVkNjE3M2U1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudEluc3RhbmNlLmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNjE2M2VhYTk1ODdlM2Y5YjFh
YWFjYjhhYTljOWMwY2FjY2YwY2YzYS4uNDhkN2QzMGY4ZDNhYzk2MzZjM2RhZDZmMTAwZWMzYjAz
MjlmMTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZl
bnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZl
bnRMaXN0ZW5lci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3Bl
cnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNp
bmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxl
LmgiCiAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNTUsOSArMTU2LDEyIEBA
IHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIENhbGwgdjg6OlNjcmlwdDo6UnVuKCkgZGlyZWN0bHkgdG8g
YXZvaWQgYW4gZXJyb25lb3VzIGNhbGwgdG8gVjhSZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3Jp
cHRDb250ZXh0KCkuCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgd2hlbiB3ZSBzdG9w
IGRvaW5nIHRoZSAnd2l0aCcgaGFjayBhYm92ZS4KLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSA9IHNjcmlwdC0+UnVuKCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWU7Cisg
ICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29w
ZTsKKyAgICAgICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBpZiAodmFsdWUu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEyIEBAIHZvaWQg
VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVy
c1szXSA9IHsgbm9kZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBwZXIgfTsKIAot
ICAgIC8vIFVzZSBDYWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4
UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUu
Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVkaWF0ZUZ1bmN0
aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwotCisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9u
U2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAgICBpbm5lclZhbHVlID0g
aW50ZXJtZWRpYXRlRnVuY3Rpb24tPkNhbGwodjhDb250ZXh0LT5HbG9iYWwoKSwgMywgcGFyYW1l
dGVycyk7CisgICAgfQogICAgIGlmIChpbm5lclZhbHVlLklzRW1wdHkoKSB8fCAhaW5uZXJWYWx1
ZS0+SXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggZTQzZDI3ZTY0MDlkZWUyNWE4YWVlNzI2OTcwYTQ3
ZTUyNjAwNWQzNC4uZjZkZDFmOGYzNmY0Zjc4OGMxMWQ5OTUyMGRiYWIzYzJlNDAzOGQwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKIAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVj
dC5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKaW5kZXgg
M2I5YWQ2ZWMxMWQwODRlN2IxMGZlOTU0ZTVjYzUyZjU2ODdmMmY4OC4uMGU3NzZlMWVhYWU1MWY5
YjgyMGMyNGQwM2I2NWQ1YmU4NDlhMWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaApAQCAtMzMsOSArMzMsMjcgQEAKIAogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBDKysgY2Fs
bHMgaW50byBzY3JpcHQgY29udGV4dHMgd2hpY2ggYXJlICJvd25lZCIgYnkgV2ViS2l0IChjcmVh
dGVkIGluIGEKKy8vIHByb2Nlc3Mgd2hlcmUgV2ViS2l0LmNwcCBpbml0aWFsaXplcyB2OCkgbXVz
dCBkZWNsYXJlIHRoZWlyIHR5cGU6CisvLworLy8gICAxLiBDYWxscyBpbnRvIHBhZ2UvYXV0aG9y
IHNjcmlwdCBmcm9tIGEgZnJhbWUKKy8vICAgMi4gQ2FsbHMgaW50byBwYWdlL2F1dGhvciBzY3Jp
cHQgZnJvbSBhIHdvcmtlcgorLy8gICAzLiBDYWxscyBpbnRvIGludGVybmFsIHNjcmlwdCAodHlw
aWNhbGx5IHNldHVwL3RlYXJkb3duIHdvcmspCisvLworLy8gRGVidWctdGltZSBjaGVja2luZyBv
ZiB0aGlzIGlzIGVuZm9yY2VkIHZpYSB0aGlzIGNsYXNzLgorLy8KKy8vIENhbGxzIG9mIHR5cGUg
KDEpIHNob3VsZCBnZW5lcmFsbHkgZ28gdGhyb3VnaCBWOFByb3h5LCBhcyBpbnNwZWN0b3IKKy8v
IGluc3RydW1lbnRhdGlvbiBpcyBuZWVkZWQuIENhbGxzIG9mIHR5cGUgKDIpIHNob3VsZCBhbHdh
eXMgc3RhY2stYWxsb2NhdGUgYQorLy8gVjhSZWN1cnNpb25TY29wZSBpbiB0aGUgc2FtZSBibG9j
ayBhcyB0aGUgY2FsbCBpbnRvIHNjcmlwdC4gQ2FsbHMgb2YgdHlwZSAoMykKKy8vIHNob3VsZCBz
dGFjayBhbGxvY2F0ZSBhIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIC0t
IHRoaXMKKy8vIHNraXBzIHdvcmsgdGhhdCBpcyBzcGVjJ2QgdG8gaGFwcGVuIGF0IHRoZSBlbmQg
b2YgdGhlIG91dGVyLW1vc3Qgc2NyaXB0IHN0YWNrCisvLyBmcmFtZSBvZiBjYWxscyBpbnRvIHBh
Z2Ugc2NyaXB0OgorLy8KKy8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvI3BlcmZvcm0tYS1taWNyb3Rhc2stY2hlY2twb2ludAogY2xhc3MgVjhSZWN1
cnNpb25TY29wZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVjhSZWN1cnNpb25TY29wZSk7
CiBwdWJsaWM6CkBAIC01MSw3ICs2OSwzNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkaWRMZWF2
ZVNjcmlwdENvbnRleHQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVs
KCkgeyByZXR1cm4gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVjdXJzaW9u
TGV2ZWwoKTsgfQorICAgIHN0YXRpYyBpbnQgcmVjdXJzaW9uTGV2ZWwoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxl
dmVsKCk7CisgICAgfQorCisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBib29sIHByb3Blcmx5
VXNlZCgpCisgICAgeworICAgICAgICByZXR1cm4gcmVjdXJzaW9uTGV2ZWwoKSA+IDAgfHwgVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbCgpID4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIGNsYXNzIE1pY3JvdGFza1N1cHByZXNz
aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE1pY3JvdGFza1N1cHByZXNzaW9uKCkKKyAgICAg
ICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNl
bmRpZgorICAgICAgICB9CisKKyAgICAgICAgfk1pY3JvdGFza1N1cHByZXNzaW9uKCkKKyAgICAg
ICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNl
bmRpZgorICAgICAgICB9CisgICAgfTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZExlYXZlU2Ny
aXB0Q29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggYmY4ZDJiMzM5Y2MxNWQxNjM4
NGUwNWE1Nzk3NTc2MDhhNmU2M2EwOS4uZjgyYmRkMDdmOWVjMTBmYTNjYWMyYjI5NmUyZDgzNTI5
MWY4ZGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNs
dWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDQxYWUwNzE3MTU1ZTUxN2QwOTA2MDljOTFjOTU0MTYx
ZDZiM2U2NDcuLjRjZjFiY2EwOTE1ZjA0ZWI4M2EyOTQyMjZmM2I5MmQ3YjkwNjdhZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlY4SXNvbGF0ZWRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpA
QCAtNjYsNyArNjcsMTEgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpX
cmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICBpZiAoc2hhZG93
Q29uc3RydWN0b3IuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+KCk7CiAKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hhZG93ID0gc2hhZG93Q29uc3Ry
dWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRvdzsK
KyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNj
b3BlOworICAgICAgICBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsK
KyAgICB9CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6Ok9iamVjdD4oKTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93
LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAK
aW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3NzlmNzY1YzhhMy4uN2Q5NDkzZjcz
YWE5MGMzZDI1ZTJhODUyNjNhODljYjA2NzcyYzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNs
dWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVj
dXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTk2LDYgKzk4LDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBp
bmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVk
IGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0
ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8g
YmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgogICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3Jp
cHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworICAgIFY4
UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwogICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigpOwogICAgIEFTU0VSVCghdi5J
c0VtcHR5KCkpOwogICAgIEFTU0VSVCh2LT5Jc0Z1bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9t
LmNwcAppbmRleCAzMmQ4NzI2OGNhYjdlY2JjM2UzNzAzMjZiOTM5M2VmOTYwNDU5MzJhLi42NDIx
ODU1MDE2MjZmZDJlOWNmN2QzMmFjMmJmZTNhZmJiM2Y2MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9t
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
I2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgogCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24u
aCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCmluZGV4IGMx
MzQwMGVmZTJmYjMyNjk3YWQyM2Q5MzZlMzgzODk3MjQ0NTZkNzguLjc4ZDkyMTBiZDFlMjU5ZWNj
MDE2NjE4NDNmNjAwNTY4NjUzMzgwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICNpbmNs
dWRlICJWOFNjcmlwdFByb2ZpbGVOb2RlLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5o
IgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVOb2RlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGIw
MzVjNzBlYmM3NWYyMDViNjMwM2FlN2NlNjE0MmRlNGU4YmRlOGYuLmZjNzJjNWI5NWI4ZDVlYThl
ZDhmZjAzYWZjMjIzYzgyMDcwOTg3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTI0MCw2ICsyNDAsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVmZXJyZXJQb2xp
Y3kuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU2NvcGVkVXNlckdlc3R1cmUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
U2NyaXB0Q29udHJvbGxlci5oJywKQEAgLTY0Nyw2ICs2NDgsNyBAQAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViUmFuZ2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lLmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5NTAxNTQ2YjQwODI1MzI4NTA5NTVm
NmJlNS4uMTlhN2MzNzAyOWM1N2FkZGM5OGU2NzE2YTgwNmFhMWMwMDI5MmViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBAIC00NCw2ICs0NCw4IEBAIHN0cnVj
dCBOUE9iamVjdDsKICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5hbWVzcGFjZSB2OCB7CiBjbGFzcyBD
b250ZXh0OworY2xhc3MgRnVuY3Rpb247CitjbGFzcyBPYmplY3Q7CiBjbGFzcyBWYWx1ZTsKIHRl
bXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mg
TG9jYWw7CkBAIC0yNzQsNiArMjc2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNvbnN0
IFdlYlNjcmlwdFNvdXJjZSYpID0gMDsKIAorICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGgg
dGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZworICAgIC8vIGNhbkV4
ZWN1dGUoKS4KKyAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxsRnVuY3Rpb25F
dmVuSWZTY3JpcHREaXNhYmxlZCgKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LAor
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LAorICAgICAgICBpbnQgYXJnYywKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkgPSAwOworCiAgICAgLy8gUmV0dXJucyB0
aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkgaGFuZGxlIGlmIHRoZXJl
CiAgICAgLy8gaXMgbm9uZS4KICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFp
bldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5YWI4Yzk5YmUwYmU4NzlmN2NhMmI2YzE4NzVhZmY3ZjIwMjg5YTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY29wZWRN
aWNyb3Rhc2tTdXBwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjb3BlZE1p
Y3JvdGFza1N1cHByZXNzaW9uX2gKKyNkZWZpbmUgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Np
b25uX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVPd25QdHIuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKKy8vIFRoaXMgY2xhc3Mgd3JhcHMgVjhSZWN1cnNpb25TY29wZTo6Qnlw
YXNzTWljcm90YXNrQ2hlY2twb2ludC4gUGxlYXNlCisvLyBzZWUgVjhSZWN1cnNpb25TY29wZS5o
IGZvciBjb3JyZWN0IHVzYWdlLgorY2xhc3MgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24g
eworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Np
b24oKTsKKyAgICBXRUJLSVRfRVhQT1JUIH5XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbigp
OworCitwcml2YXRlOgorI2lmbmRlZiBOREVCVUcKKyAgICBjbGFzcyBJbXBsOworICAgIFdlYlBy
aXZhdGVPd25QdHI8SW1wbD4gbV9pbXBsOworI2VuZGlmCit9OworCit9IC8vIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4
IDNkNDNjMWY1OTQ0Nzc5N2QwNGNmNGQ4NDhlMjM0ZmY4MjU2ZTJjYmIuLjY5Mzg5ZGQ5NDlmM2Vk
OTY3ZWU3MzA4ODA2MDE3Y2FmODliMmM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtODk1LDYgKzg5NSwxNSBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gV2ViRnJhbWVJbXBsOjpleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoY29uc3QgV2Vi
U2NyaXB0UwogICAgIHJldHVybiBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNvdXJjZS5jb2RlLCBzb3VyY2UudXJsLCBwb3NpdGlvbikpLnY4VmFsdWUo
KTsKIH0KIAorLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcmVjZWl2ZXIgYW5k
IGFyZ3VtZW50cywgYnlwYXNzaW5nIGNhbkV4ZWN1dGVTY3JpcHRzLgordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQodjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiByZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+c2Ny
aXB0KCktPmNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKGZ1bmN0aW9uLCByZWNlaXZl
ciwgYXJnYywgYXJndikudjhWYWx1ZSgpOworfQorCiAvLyBSZXR1cm5zIHRoZSBWOCBjb250ZXh0
IGZvciB0aGlzIGZyYW1lLCBvciBhbiBlbXB0eSBoYW5kbGUgaWYgdGhlcmUgaXMgbm9uZS4KIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gV2ViRnJhbWVJbXBsOjptYWluV29ybGRTY3JpcHRDb250ZXh0
KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5k
ZXggNzAwZjZlYTQwMzdlN2IyOGI5MGJkYzhmOTQ5OTRjOGFlZTlhMzFmMi4uOWM4NmQ3NTE0YWMw
MGVhNWYxZGJiODE3NzliM2NhMzU4MTZmMzY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgKQEAgLTExMCw2ICsxMTAsMTEgQEAgcHVibGljOgogI2lmIFdFQktJ
VF9VU0lOR19WOAogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4ZWN1dGVTY3Jp
cHRBbmRSZXR1cm5WYWx1ZSgKICAgICAgICAgY29uc3QgV2ViU2NyaXB0U291cmNlJik7CisgICAg
dmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlz
YWJsZWQoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwKKyAgICAgICAgaW50IGFyZ2MsCisgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10pOwogICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBt
YWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY3JlYXRlRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggZGNjOThkYzA4
NTg3MjlkMzVkNThiYzI0YjIzNjU2YjA3NTcwNTk3Mi4uYTliN2FiMDY5YzVhOWI5NWRhYmZiZWRi
NmFkZGFkMzExZjk2YmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNj
b3BlLmgiCiAjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIldl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpAQCAtODgs
NiArODksMTQgQEAgc3RhdGljIGJvb2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IGxlbmd0aCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZm5kZWYgTkRF
QlVHCitzdGF0aWMgdm9pZCBhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKCkKK3sKKyAgICAvLyBGSVhN
RTogRW5hYmxlIHdoZW4gY2hyb21pdW0gdXNhZ2Ugb2YgV2ViU2NyaXB0SW52b2NhdGlvbiBoYXMg
bGFuZGVkLgorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgV2ViQ29yZTo6VjhSZWN1cnNp
b25TY29wZTo6cHJvcGVybHlVc2VkKCkpOworfQorI2VuZGlmCisKIHZvaWQgaW5pdGlhbGl6ZShX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKICAgICBpbml0
aWFsaXplV2l0aG91dFY4KHdlYktpdFBsYXRmb3JtU3VwcG9ydCk7CkBAIC05Nyw2ICsxMDYsMTAg
QEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KQogICAgIFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0
aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKIAogI2lmIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6QWRkQ2FsbENvbXBsZXRl
ZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgLy8gY3Vy
cmVudFRocmVhZCB3aWxsIGFsd2F5cyBiZSBub24tbnVsbCBpbiBwcm9kdWN0aW9uLCBidXQgY2Fu
IGJlIG51bGwgaW4gQ2hyb21pdW0gdW5pdCB0ZXN0cy4KICAgICBpZiAoV2ViVGhyZWFkKiBjdXJy
ZW50VGhyZWFkID0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkpIHsKICAg
ICAgICAgQVNTRVJUKCFzX2VuZE9mVGFza1J1bm5lcik7CkBAIC0xMzgsNiArMTUxLDEwIEBAIHZv
aWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRm
b3JtU3VwcG9ydCkKIHZvaWQgc2h1dGRvd24oKQogewogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6UmVtb3ZlQ2FsbENvbXBsZXRlZENh
bGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgaWYgKHNfZW5k
T2ZUYXNrUnVubmVyKSB7CiAgICAgICAgIEFTU0VSVChzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+
Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJl
bnRUaHJlYWQoKS0+cmVtb3ZlVGFza09ic2VydmVyKHNfZW5kT2ZUYXNrUnVubmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1cHBy
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjb3BlZE1pY3JvdGFz
a1N1cHByZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDFjYmI4NDk0ZDI3NWRjYWM4MTkwODZiMDk5
NWYzYzRmMzBiYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24uY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Np
b24uaCIKKworI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWZuZGVmIE5ERUJVRworY2xhc3MgV2Vi
U2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb246OkltcGwgOiBwdWJsaWMgV2ViQ29yZTo6VjhSZWN1
cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24geworcHVibGljOgorICAgIEltcGwoKSB7
IH0KKyAgICB+SW1wbCgpIHsgfQorfTsKKyNlbmRpZgorCitXZWJTY29wZWRNaWNyb3Rhc2tTdXBw
cmVzc2lvbjo6V2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24oKQoreworI2lmbmRlZiBOREVC
VUcKKyAgICBtX2ltcGwucmVzZXQobmV3IEltcGwoKSk7CisjZW5kaWYKK30KKworV2ViU2NvcGVk
TWljcm90YXNrU3VwcHJlc3Npb246On5XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbigpCit7
CisjaWZuZGVmIE5ERUJVRworICAgIG1faW1wbC5yZXNldCgwKTsKKyNlbmRpZgorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134877</attachid>
            <date>2012-03-30 14:05:37 -0700</date>
            <delta_ts>2012-04-03 11:09:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120330140536.patch</filename>
            <type>text/plain</type>
            <size>47616</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJiZDBiZTVjM2Q2OWY4
NmJkN2Q3MGM2OGI4NWZlZDg2YmI3NTE1MS4uNWFjNTBlZWM4Yjg5NWZhZGZlNWQwNTE4OWMyY2I2
MmIyZDk5ZTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTAzLTMwICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmQtb2YtbWljcm90YXNrIHdvcmsgKGNhbmNl
bGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAgICAgICAgZGVsaXZlcmluZyBE
T00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29wZSBiZWluZyBvbiB0aGUKKyAg
ICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50byBzY3JpcHQuIFY4IHByb3Zp
ZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkgdGhhdCBjb3VsZCBiZSB1c2Vk
IHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAgICAgIGV2ZW50cywgYnV0IGl0
IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlwdCBmb3IgdmFyaW91cworICAg
ICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJvbSB0aGUgcGFnZS4gRm9yIGV4
YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9iamVjdHMgZnJvbSBmdW5jdGlv
biB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIsCisgICAgICAgIHlldCBpdCdz
IG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBldmVyeSB0aW1lIGEgSlMgd3Jh
cHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAgICBJbnN0ZWFkLCB0aGlzIHBh
dGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxsYmFjayBtZWNoYW5pc20KKyAg
ICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhhdCBlaXRoZXIgYSBWOFJlY3Vy
c2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9yIHNjcmlwdCkgb3IgYSBWOFJl
Y3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbgorICAgICAgICAod2hlbiBjYWxsaW5n
IG5vbi1hdXRob3Igc2NyaXB0KSBpcyBvbiB0aGUgc3RhY2sgd2hlbiBWOCB0aGlua3MgaXQncwor
ICAgICAgICBmaW5pc2hlZCBleGVjdXRpbmcgc2NyaXB0LiBUaGlzIHJlcXVpcmVzIGRyb3BwaW5n
IE1pY3JvdGFza1N1cHByZXNzaW9uCisgICAgICAgIG9iamVjdHMgaW4gYSBidW5jaCBvZiBwbGFj
ZXMsIG1vc3Qgbm90YWJseSB0aGUgSW5zcGVjdG9yLgorICAgICAgICBOb3RlIHRoYXQgaW4gcmVs
ZWFzZSBtb2RlLCB0aGlzIGNsYXNzIGRvZXMgbm90aGluZyBhbmQgdGh1cyBzaG91bGQgYmUKKyAg
ICAgICAgb3B0aW1pemVkIGF3YXkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0
ZXN0cyBoYXZlIGFwcHJvcHJpYXRlIGNvdmVyYWdlLgorCisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVw
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFNhZmVBbGxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNhZmVB
bGxvY2F0aW9uOjpuZXdJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVu
Y3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNl
T25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpzdGVwT3ZlclN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjplbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oOgorICAgICAgICAoVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmludGVybmFsU2NyaXB0UmVjdXJz
aW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6Omlu
Y3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExhenlFdmVu
dExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29w
ZTo6cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoVjhSZWN1cnNpb25TY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpwcm9wZXJseVVzZWQpOgorICAgICAgICAoTWlj
cm90YXNrU3VwcHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6
TWljcm90YXNrU3VwcHJlc3Npb246Ok1pY3JvdGFza1N1cHByZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uOjp+TWljcm90YXNr
U3VwcHJlc3Npb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFk
b3dPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNy
ZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3Jp
cHRQcm9maWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3Jp
cHRQcm9maWxlTm9kZUN1c3RvbS5jcHA6CisKIDIwMTItMDMtMzAgIE1hcmsgUGlsZ3JpbSAgPHBp
bGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9OIHNob3VsZCBiZSBpbXBs
ZW1lbnRlZCBhcyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
Mzg4OTU3MzE3ZjYzNDhmMTY3ZWEzNmVmNjkzMmM4YmY2YzA5ZDAyZS4uNDRjZWUzNTNiZjJiYTVh
NjMxOWRkMGViN2E0ZDJhMGQ3ZmI1ZDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNSBAQAorMjAxMi0wMy0zMCAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFVzZSBWOCBjb21wbGV0aW9uIGNhbGxiYWNrIEFQSSB0byBh
c3NlcnQgdGhhdCBWOFJlY3Vyc2lvblNjb3BlIGlzIG9uIHRoZSBzdGFjayB3aGVuZXZlciBpbnZv
a2luZyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAo
djgpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHB1YmxpYy9XZWJTY29wZWRNaWNy
b3Rhc2tTdXBwcmVzc2lvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFJlY3Vyc2lvblNjb3BlLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Nv
cGVkTWljcm90YXNrU3VwcHJlc3Npb24pOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjYWxs
RnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1w
bC5oOgorICAgICAgICAoV2ViRnJhbWVJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmFzc2VydFY4UmVjdXJzaW9uU2Nv
cGUpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6c2h1
dGRvd24pOgorICAgICAgICAqIHNyYy9XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbi5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUu
aC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVz
c2lvbjo6SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNz
aW9uOjpJbXBsOjpJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NvcGVkTWljcm90YXNrU3Vw
cHJlc3Npb246OkltcGw6On5JbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NvcGVkTWljcm90
YXNrU3VwcHJlc3Npb246OldlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb246On5XZWJTY29wZWRNaWNyb3Rh
c2tTdXBwcmVzc2lvbik6CisKIDIwMTItMDMtMzAgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEdFT0xPQ0FUSU9OIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBh
cyBQYWdlIFN1cHBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDYwNGEwZTQ3ZThkOGQxYjZmMzE4NjM0
MmY2MDE2MTM0MjJlMWNiY2EuLmEwMGI4ZTgwMGFlZTJmZTkxNTRkYTYyNTUxMDdjZTI1YWMxZTUz
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMTQwNSw2ICsxNDA1LDcgQEAgdjggewogICAgICAgICBiaW5k
aW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Jl
dGFpbmVkRE9NSW5mby5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvUmV0YWluZWRPYmplY3RJbmZv
LmggXAorICAgICAgICBiaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIFwKICAgICAgICAgYmlu
ZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5kaW5ncy92OC9TY29wZWRE
T01EYXRhU3RvcmUuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3ZjFjM2M2YjQ3NGMwNjk3OGFjNTlkMGU1NzhiMzY3
ODEyMDg0MTVhLi5hOWZkOTgxNDAxMjhkOGZkYjU3OTM1NzM5NzQ3ZDAzN2Q5ODY3OTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yMDY1LDYgKzIwNjUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFp
bmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZE9iamVjdElu
Zm8uaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Njb3BlZERPTURhdGFTdG9yZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
YXRlRXh0ZW5zaW9uLmNwcAppbmRleCAzMzI4MjhiMjJhMzc4ZDQ5ZWFkMGFkZTcyM2ZhN2I4NGJi
OTQ0ZWI4Li5jYTM2M2MyZWZmMWQ4MzllMjhmNmE2NjhlODEwMjM4N2MxMzY0MjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcApAQCAtMzEsOCArMzEs
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVFeHRlbnNpb24uaCIKIAot
I2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODksNiArOTAsNyBAQCB2b2lkIERhdGVFeHRlbnNpb246
OnNldEFsbG93U2xlZXAoYm9vbCBhbGxvdykKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2WzFdOwogICAgIGFyZ3ZbMF0gPSB2ODo6Qm9vbGVhbjo6TmV3KCFhbGxvdyk7CisgICAgVjhS
ZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHNsZWVwRnVuY3Rpb25IYW5kbGUpLT5DYWxsKHY4OjpPYmpl
Y3Q6Ok5ldygpLCAxLCBhcmd2KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMThmN2RmN2VlNDI1NDAxMGMx
ZDcxNjE5N2E0YmI0YTZiZjdjNTA5Ni4uZDlkOTdlN2I2Zjc3YzM0ZDAzNDljYmE5YzhmMDE4ZjM3
ZGU0YmU0NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5j
bHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTEwMCw3ICsxMDEsMTEgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICB2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0
U2NyaXB0cyIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4
dC0+R2V0RGF0YSgpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2Ny
aXB0c0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9u
U2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAgICB2YWx1ZSA9IGdldFNj
cmlwdHNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAg
ICB9CiAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VS
VCghdmFsdWUtPklzVW5kZWZpbmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2IzNGFlYmYz
YWE4YmNkN2E0ODlkYjVlOGU1ZmJhNjVlNzgwMzBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApAQCAtMCwwICsxLDc3IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlv
bi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFNhZmVBbGxvY2F0aW9uX2gKKyNkZWZp
bmUgU2FmZUFsbG9jYXRpb25faAorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgorCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTYWZlQWxsb2NhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGlu
ZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+KTsKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBuZXdJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOworICAgIHN0YXRpYyBpbmxpbmUgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwg
aW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOworfTsKKwordjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gZnVuY3Rpb24pCit7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0cnVjdG9yTW9kZSBj
b25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Np
b24gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgpOworfQorCit2ODo6
TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKK3sKKyAgICBpZiAob2JqZWN0VGVt
cGxhdGUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7
CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNj
b3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICByZXR1cm4gb2JqZWN0VGVtcGxh
dGUtPk5ld0luc3RhbmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBTYWZlQWxsb2Nh
dGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBpbnQg
YXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICBpZiAoZnVuY3Rpb24u
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAg
Q29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpN
aWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3Rh
bmNlKGFyZ2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTYWZlQWxsb2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IDhkZTk1NTM3YWQ3ZjJjZmQxYWY2NGY4MmU5ZGFkZmE4ZDI3
ZGM5ZGMuLmMzODQyNWU3YTNiZmM4N2RhOGNkZjhjZjMyMmEyZTNiZjM4MWYzMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2
ICs2Miw3IEBACiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJWOE5Q
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTYxLDYgKzE2MiwxMiBAQCBib29s
IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiAgICAgcmV0dXJuIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAorU2NyaXB0
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQo
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHJlY2VpdmVyLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgcGVyZm9ybSB0aGUgc2FtZSBpc1BhdXNl
ZCBjaGVjayB0aGF0IGhhcHBlbnMgaW4gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdC4K
KyAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9wcm94eS0+Y2FsbEZ1bmN0aW9uKGZ1bmN0aW9uLCBy
ZWNlaXZlciwgYXJnYywgYXJndikpOworfQorCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRT
b3VyY2VDb2RlPiYgc291cmNlcykKIHsKICAgICBtX3Byb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRX
b3JsZCh3b3JsZElELCBzb3VyY2VzLCAwKTsKQEAgLTI0NSw4ICsyNTIsMTAgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBzb3VyY2UgPSB2ODo6U3RyaW5nOjpOZXcoImlmIChnYykgZ2MoKTsiKTsKICAgICAgICAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUgPSB2ODo6U3RyaW5nOjpOZXcoImdjIik7CiAgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShz
b3VyY2UsIG5hbWUpOwotICAgICAgICBpZiAoIXNjcmlwdC5Jc0VtcHR5KCkpCisgICAgICAgIGlm
ICghc2NyaXB0LklzRW1wdHkoKSkgeworICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6TWlj
cm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAgICAgICAgICAgICBzY3JpcHQtPlJ1bigpOworICAg
ICAgICB9CiAgICAgfQogICAgIHY4Q29udGV4dC5EaXNwb3NlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOWQyZWZkZWIxOGVkYzUy
NjYxYWU5OGM4YzY4MDg1NmY3NGM1NWQwYS4uNzQzYjEyYmRiNzQ3M2I4OWU4NDgyYzc5YmQ5Mzgw
YzdkYTQxNTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKICAgICBTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBm
YWxzZSk7CisgICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQo
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBpbnQgYXJn
Yywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgYXJndW1lbnQgaXMgYSBKYXZhU2NyaXB0IFVSTC4KICAgICBib29sIGV4ZWN1dGVJZkphdmFT
Y3JpcHRVUkwoY29uc3QgS1VSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGI3MDU1MjNiNzFmNThiOTlmMDMyZjM5YjZhNjUwNGM4MTBm
MGU1YjUuLmNkMzBjNjRhZTcxOGRlZjg5OGJhOWEwNTMyMjc5MWExODQ0YjJmMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJWOFJl
Y3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNTcsNiArNTgsMTMgQEAgcHJpdmF0ZToKIAogfQogCit2ODo6
TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldyhmdW5jdGlvbk5hbWUpKSk7CisgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90
YXNrU3VwcHJlc3Npb24gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQorCiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2Ny
aXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERvbnRQYXVz
ZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKQEAgLTEy
OSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6
R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkg
fTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwobV9k
ZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAs
IGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQogCkBAIC0xNDEsOSAr
MTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24KICAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERl
YnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRQYXVzZU9u
RXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6Oklu
dDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkgfTsKLSAgICBzZXRQYXVzZU9uRXhjZXB0
aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAg
IGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDEsIGFyZ3Yp
OwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChi
b29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVt
ZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcEludG9TdGF0ZW1lbnQiKSkp
OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUu
Z2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBh
cmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBJbnRvU3RhdGVtZW50IiwgMSwgYXJn
dik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46
OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE92
ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1f
ZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2Ny
aXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBPdmVyU3Rh
dGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNQYXVz
ZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJp
bmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2Fs
bChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRo
b2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7
CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNj
cmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAg
aWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6
OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNj
cmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhT
dHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSwgdjhCb29sZWFuKHByZXZpZXcp
IH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9z
ZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gZnVuY3Rpb24t
PkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywgYXJndik7CisgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoInNldFNjcmlwdFNvdXJjZSIs
IDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewogICAgICAgICB2ODo6
TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlDYXRjaC5NZXNzYWdlKCk7CiAgICAgICAg
IGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUsOSArMjU3LDggQEAgYm9vbCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0
IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZy
YW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1cnJl
bnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1f
ZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVu
dENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJT
Y3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50
Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2QoImN1cnJlbnRDYWxsRnJhbWUiLCAxLCBh
cmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxGcmFtZVY4LklzRW1wdHkoKSk7CiAgICAg
aWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0KCkpCkBAIC0zNTUsNiArMzU2LDcgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1
Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpO
ZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRl
clZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsK
ICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1p
Y3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChleGNlcHRpb25HZXR0ZXJWYWx1ZSktPkNhbGwo
ZXZlbnREYXRhLCAwLCBhcmd2KTsKICAgICAgICAgICAgIH0KIApAQCAtMzg5LDYgKzM5MSw3IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKQog
ICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCk7CiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0
U2NvcGUoZGVidWdnZXJDb250ZXh0KTsKICAgICAgICAgU3RyaW5nIGRlYnVnZ2VyU2NyaXB0U291
cmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KERlYnVnZ2VyU2NyaXB0U291cmNlX2pz
KSwgc2l6ZW9mKERlYnVnZ2VyU2NyaXB0U291cmNlX2pzKSk7CisgICAgICAgIFY4UmVjdXJzaW9u
U2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwogICAgICAgICBtX2Rl
YnVnZ2VyU2NyaXB0LnNldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4OjpTY3JpcHQ6
OkNvbXBpbGUodjhTdHJpbmcoZGVidWdnZXJTY3JpcHRTb3VyY2UpKS0+UnVuKCkpKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApp
bmRleCBkZTg0NjUxNDAxMWUxNzUxZmQ3N2QyMGY5ZDc0YTI1YTA4MzZiZTdjLi5hNGZiNjEyOWRl
MGU0MGJlZmFiYjAxODdhOGE3ODU0NTE4MGI3MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTExMyw3ICsxMTMsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNlKFNjcmlwdERlYnVnTGlzdGVuZXIq
IGxpc3RlbmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNvdXJjZU9iamVjdCk7CiAKICAgICB2
b2lkIGVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKTsKLSAgICAKKworICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IGNhbGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKKwogICAgIFBhdXNlT25F
eGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgIE93bkhhbmRsZTx2
ODo6T2JqZWN0PiBtX2RlYnVnZ2VyU2NyaXB0OwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBt
X2V4ZWN1dGlvblN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggNWM5NmI1NjRlMTM0MjA5Y2Q1Y2EyZDVkYjRlYmU5Zjlj
NTA2MTUzYy4uMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1OWIxNDYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBA
IC0zMSwxMiArMzEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCi0KICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgi
CiAKICNpbmNsdWRlIDx2OC5oPgpAQCAtMTMwLDcgKzEzMSwxMSBAQCBTY3JpcHRWYWx1ZSBTY3Jp
cHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJlcG9ydEV4Y2Vw
dGlvbnMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsr
aSkKICAgICAgICAgYXJnc1tpXSA9IG1fYXJndW1lbnRzW2ldLnY4VmFsdWUoKTsKIAotICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRoaXNPYmplY3QsIG1f
YXJndW1lbnRzLnNpemUoKSwgYXJncy5nZXQoKSk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
cmVzdWx0OworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29wZShnZXRTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbCh0aGlz
T2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAgIH0KICAgICBpZiAo
IXNjb3BlLnN1Y2Nlc3MoKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwCmluZGV4IDc5ODY3NmUxZWU2OWU4NWE3MzhiNDUzMjUyNDk0ODEzZDVjMjY4ZTcuLmY3
ZGJlMDU5MThlZmM4M2UyNzc1OWY5MTNjMWZmZDQ1Nzc2NmNmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNTYsNiArNTYsOSBAQCBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiAgICAgOiBtX2RvbURhdGFTdG9yZSgwKQogICAgICwgbV9jb25zdHJ1Y3Rvck1vZGUoQ29uc3Ry
dWN0b3JNb2RlOjpDcmVhdGVOZXdPYmplY3QpCiAgICAgLCBtX3JlY3Vyc2lvbkxldmVsKDApCisj
aWZuZGVmIE5ERUJVRworICAgICwgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKDApCisj
ZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA4
NGZmMjM3M2FiMjg2Y2IwZmU3ZjY1NDNkMDE3NzJkNDc0NDM1YmFiLi5lNzc3NjVmNmJkZjRmZGVi
MjBkNDdjMmFkYWE2MDdhYjIwZDNmY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuaApAQCAtMTUzLDYgKzE1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwKCkgeyBy
ZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0KKworICAgICAgICBpbnQgaW50ZXJuYWxTY3JpcHRS
ZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbDsgfQorICAgICAgICBpbnQgaW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZl
bCgpIHsgcmV0dXJuICsrbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsOyB9CisgICAgICAg
IGludCBkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gLS1t
X2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KICNlbmRpZgogCiAgICAgcHJpdmF0ZToK
QEAgLTE3OSw2ICsxODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsKKyAgICAgICAgaW50
IG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKICNlbmRpZgogICAgIH07CiAKQEAgLTIw
OCwzOCArMjEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcHJldmlv
dXM7CiAgICAgfTsKIAotICAgIGNsYXNzIFNhZmVBbGxvY2F0aW9uIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPik7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPik7
Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10pOwotICAgIH07Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9j
YXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbikKLSAg
ICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1
Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFuY2UoKTsKLSAgICB9
Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChvYmplY3RUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9yTW9kZSBjb25zdHJ1
Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBvYmplY3RUZW1wbGF0ZS0+TmV3SW5zdGFuY2UoKTsK
LSAgICB9Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgaW50IGFyZ2MsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCi0gICAgewotICAgICAgICBpZiAoZnVuY3Rpb24uSXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwotICAg
ICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAgICAgICByZXR1cm4gZnVu
Y3Rpb24tPk5ld0luc3RhbmNlKGFyZ2MsIGFyZ3YpOwotICAgIH0KLQotCiAKICAgICBlbnVtIEV4
dGVybmFsTW9kZSB7CiAgICAgICAgIEV4dGVybmFsaXplLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCBjNGM2MDU0MGFiOWI2OGE2OTNj
ZGI2ZmMxZTc3ZmYwOTRjNDM0MWE1Li5iN2UzYWQ0OWM1ZGViMGQzYjQ2ODllOWFjZDRhNjNlNDI4
NGE5YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
YWdlR3JvdXAuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA1
ZGMxODFiOTVlNzEzNzcwODQ5ODI3ODBlMDAyM2JhYzUyYTlkZmIuLjIyZjIyNWMyMzE4YWJkMzI2
ZDM5MzlmY2U0YjM4YWVkNjE3M2U1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudEluc3RhbmNlLmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNjE2M2VhYTk1ODdlM2Y5YjFh
YWFjYjhhYTljOWMwY2FjY2YwY2YzYS4uNDhkN2QzMGY4ZDNhYzk2MzZjM2RhZDZmMTAwZWMzYjAz
MjlmMTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZl
bnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZl
bnRMaXN0ZW5lci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3Bl
cnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNp
bmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxl
LmgiCiAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNTUsOSArMTU2LDEyIEBA
IHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIENhbGwgdjg6OlNjcmlwdDo6UnVuKCkgZGlyZWN0bHkgdG8g
YXZvaWQgYW4gZXJyb25lb3VzIGNhbGwgdG8gVjhSZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3Jp
cHRDb250ZXh0KCkuCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgd2hlbiB3ZSBzdG9w
IGRvaW5nIHRoZSAnd2l0aCcgaGFjayBhYm92ZS4KLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSA9IHNjcmlwdC0+UnVuKCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWU7Cisg
ICAgeworICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29w
ZTsKKyAgICAgICAgdmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBpZiAodmFsdWUu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEyIEBAIHZvaWQg
VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVy
c1szXSA9IHsgbm9kZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBwZXIgfTsKIAot
ICAgIC8vIFVzZSBDYWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4
UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBjb2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUu
Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVkaWF0ZUZ1bmN0
aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwotCisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9u
U2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAgICBpbm5lclZhbHVlID0g
aW50ZXJtZWRpYXRlRnVuY3Rpb24tPkNhbGwodjhDb250ZXh0LT5HbG9iYWwoKSwgMywgcGFyYW1l
dGVycyk7CisgICAgfQogICAgIGlmIChpbm5lclZhbHVlLklzRW1wdHkoKSB8fCAhaW5uZXJWYWx1
ZS0+SXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggZTQzZDI3ZTY0MDlkZWUyNWE4YWVlNzI2OTcwYTQ3
ZTUyNjAwNWQzNC4uZjZkZDFmOGYzNmY0Zjc4OGMxMWQ5OTUyMGRiYWIzYzJlNDAzOGQwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKIAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVj
dC5oIgorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKaW5kZXgg
M2I5YWQ2ZWMxMWQwODRlN2IxMGZlOTU0ZTVjYzUyZjU2ODdmMmY4OC4uMGU3NzZlMWVhYWU1MWY5
YjgyMGMyNGQwM2I2NWQ1YmU4NDlhMWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaApAQCAtMzMsOSArMzMsMjcgQEAKIAogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBDKysgY2Fs
bHMgaW50byBzY3JpcHQgY29udGV4dHMgd2hpY2ggYXJlICJvd25lZCIgYnkgV2ViS2l0IChjcmVh
dGVkIGluIGEKKy8vIHByb2Nlc3Mgd2hlcmUgV2ViS2l0LmNwcCBpbml0aWFsaXplcyB2OCkgbXVz
dCBkZWNsYXJlIHRoZWlyIHR5cGU6CisvLworLy8gICAxLiBDYWxscyBpbnRvIHBhZ2UvYXV0aG9y
IHNjcmlwdCBmcm9tIGEgZnJhbWUKKy8vICAgMi4gQ2FsbHMgaW50byBwYWdlL2F1dGhvciBzY3Jp
cHQgZnJvbSBhIHdvcmtlcgorLy8gICAzLiBDYWxscyBpbnRvIGludGVybmFsIHNjcmlwdCAodHlw
aWNhbGx5IHNldHVwL3RlYXJkb3duIHdvcmspCisvLworLy8gRGVidWctdGltZSBjaGVja2luZyBv
ZiB0aGlzIGlzIGVuZm9yY2VkIHZpYSB0aGlzIGNsYXNzLgorLy8KKy8vIENhbGxzIG9mIHR5cGUg
KDEpIHNob3VsZCBnZW5lcmFsbHkgZ28gdGhyb3VnaCBWOFByb3h5LCBhcyBpbnNwZWN0b3IKKy8v
IGluc3RydW1lbnRhdGlvbiBpcyBuZWVkZWQuIENhbGxzIG9mIHR5cGUgKDIpIHNob3VsZCBhbHdh
eXMgc3RhY2stYWxsb2NhdGUgYQorLy8gVjhSZWN1cnNpb25TY29wZSBpbiB0aGUgc2FtZSBibG9j
ayBhcyB0aGUgY2FsbCBpbnRvIHNjcmlwdC4gQ2FsbHMgb2YgdHlwZSAoMykKKy8vIHNob3VsZCBz
dGFjayBhbGxvY2F0ZSBhIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIC0t
IHRoaXMKKy8vIHNraXBzIHdvcmsgdGhhdCBpcyBzcGVjJ2QgdG8gaGFwcGVuIGF0IHRoZSBlbmQg
b2YgdGhlIG91dGVyLW1vc3Qgc2NyaXB0IHN0YWNrCisvLyBmcmFtZSBvZiBjYWxscyBpbnRvIHBh
Z2Ugc2NyaXB0OgorLy8KKy8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvI3BlcmZvcm0tYS1taWNyb3Rhc2stY2hlY2twb2ludAogY2xhc3MgVjhSZWN1
cnNpb25TY29wZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVjhSZWN1cnNpb25TY29wZSk7
CiBwdWJsaWM6CkBAIC01MSw3ICs2OSwzNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkaWRMZWF2
ZVNjcmlwdENvbnRleHQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVs
KCkgeyByZXR1cm4gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVjdXJzaW9u
TGV2ZWwoKTsgfQorICAgIHN0YXRpYyBpbnQgcmVjdXJzaW9uTGV2ZWwoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxl
dmVsKCk7CisgICAgfQorCisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBib29sIHByb3Blcmx5
VXNlZCgpCisgICAgeworICAgICAgICByZXR1cm4gcmVjdXJzaW9uTGV2ZWwoKSA+IDAgfHwgVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25M
ZXZlbCgpID4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIGNsYXNzIE1pY3JvdGFza1N1cHByZXNz
aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE1pY3JvdGFza1N1cHByZXNzaW9uKCkKKyAgICAg
ICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNl
bmRpZgorICAgICAgICB9CisKKyAgICAgICAgfk1pY3JvdGFza1N1cHByZXNzaW9uKCkKKyAgICAg
ICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNl
bmRpZgorICAgICAgICB9CisgICAgfTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZExlYXZlU2Ny
aXB0Q29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggYmY4ZDJiMzM5Y2MxNWQxNjM4
NGUwNWE1Nzk3NTc2MDhhNmU2M2EwOS4uZjgyYmRkMDdmOWVjMTBmYTNjYWMyYjI5NmUyZDgzNTI5
MWY4ZGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNs
dWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDQxYWUwNzE3MTU1ZTUxN2QwOTA2MDljOTFjOTU0MTYx
ZDZiM2U2NDcuLjRjZjFiY2EwOTE1ZjA0ZWI4M2EyOTQyMjZmM2I5MmQ3YjkwNjdhZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlY4SXNvbGF0ZWRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpA
QCAtNjYsNyArNjcsMTEgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpX
cmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICBpZiAoc2hhZG93
Q29uc3RydWN0b3IuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+KCk7CiAKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hhZG93ID0gc2hhZG93Q29uc3Ry
dWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRvdzsK
KyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNj
b3BlOworICAgICAgICBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsK
KyAgICB9CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6Ok9iamVjdD4oKTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93
LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAK
aW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3NzlmNzY1YzhhMy4uN2Q5NDkzZjcz
YWE5MGMzZDI1ZTJhODUyNjNhODljYjA2NzcyYzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNs
dWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVj
dXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTk2LDYgKzk4LDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBp
bmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVk
IGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0
ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8g
YmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgogICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3Jp
cHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworICAgIFY4
UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwogICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigpOwogICAgIEFTU0VSVCghdi5J
c0VtcHR5KCkpOwogICAgIEFTU0VSVCh2LT5Jc0Z1bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9t
LmNwcAppbmRleCAzMmQ4NzI2OGNhYjdlY2JjM2UzNzAzMjZiOTM5M2VmOTYwNDU5MzJhLi42NDIx
ODU1MDE2MjZmZDJlOWNmN2QzMmFjMmJmZTNhZmJiM2Y2MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9t
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
I2luY2x1ZGUgIlY4U2NyaXB0UHJvZmlsZS5oIgogCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24u
aCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCmluZGV4IGMx
MzQwMGVmZTJmYjMyNjk3YWQyM2Q5MzZlMzgzODk3MjQ0NTZkNzguLjc4ZDkyMTBiZDFlMjU5ZWNj
MDE2NjE4NDNmNjAwNTY4NjUzMzgwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICNpbmNs
dWRlICJWOFNjcmlwdFByb2ZpbGVOb2RlLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5o
IgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVOb2RlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGIw
MzVjNzBlYmM3NWYyMDViNjMwM2FlN2NlNjE0MmRlNGU4YmRlOGYuLmZjNzJjNWI5NWI4ZDVlYThl
ZDhmZjAzYWZjMjIzYzgyMDcwOTg3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTI0MCw2ICsyNDAsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVmZXJyZXJQb2xp
Y3kuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU2NvcGVkVXNlckdlc3R1cmUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
U2NyaXB0Q29udHJvbGxlci5oJywKQEAgLTY0Nyw2ICs2NDgsNyBAQAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViUmFuZ2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lLmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5NTAxNTQ2YjQwODI1MzI4NTA5NTVm
NmJlNS4uMTlhN2MzNzAyOWM1N2FkZGM5OGU2NzE2YTgwNmFhMWMwMDI5MmViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBAIC00NCw2ICs0NCw4IEBAIHN0cnVj
dCBOUE9iamVjdDsKICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5hbWVzcGFjZSB2OCB7CiBjbGFzcyBD
b250ZXh0OworY2xhc3MgRnVuY3Rpb247CitjbGFzcyBPYmplY3Q7CiBjbGFzcyBWYWx1ZTsKIHRl
bXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mg
TG9jYWw7CkBAIC0yNzQsNiArMjc2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNvbnN0
IFdlYlNjcmlwdFNvdXJjZSYpID0gMDsKIAorICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGgg
dGhlIGdpdmVuIHJlY2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZworICAgIC8vIGNhbkV4
ZWN1dGUoKS4KKyAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxsRnVuY3Rpb25F
dmVuSWZTY3JpcHREaXNhYmxlZCgKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LAor
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LAorICAgICAgICBpbnQgYXJnYywKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkgPSAwOworCiAgICAgLy8gUmV0dXJucyB0
aGUgVjggY29udGV4dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkgaGFuZGxlIGlmIHRoZXJl
CiAgICAgLy8gaXMgbm9uZS4KICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFp
bldvcmxkU2NyaXB0Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5YWI4Yzk5YmUwYmU4NzlmN2NhMmI2YzE4NzVhZmY3ZjIwMjg5YTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY29wZWRN
aWNyb3Rhc2tTdXBwcmVzc2lvbi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjb3BlZE1p
Y3JvdGFza1N1cHByZXNzaW9uX2gKKyNkZWZpbmUgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Np
b25uX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVPd25QdHIuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKKy8vIFRoaXMgY2xhc3Mgd3JhcHMgVjhSZWN1cnNpb25TY29wZTo6Qnlw
YXNzTWljcm90YXNrQ2hlY2twb2ludC4gUGxlYXNlCisvLyBzZWUgVjhSZWN1cnNpb25TY29wZS5o
IGZvciBjb3JyZWN0IHVzYWdlLgorY2xhc3MgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24g
eworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Np
b24oKTsKKyAgICBXRUJLSVRfRVhQT1JUIH5XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbigp
OworCitwcml2YXRlOgorI2lmbmRlZiBOREVCVUcKKyAgICBjbGFzcyBJbXBsOworICAgIFdlYlBy
aXZhdGVPd25QdHI8SW1wbD4gbV9pbXBsOworI2VuZGlmCit9OworCit9IC8vIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4
IDNkNDNjMWY1OTQ0Nzc5N2QwNGNmNGQ4NDhlMjM0ZmY4MjU2ZTJjYmIuLjY5Mzg5ZGQ5NDlmM2Vk
OTY3ZWU3MzA4ODA2MDE3Y2FmODliMmM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtODk1LDYgKzg5NSwxNSBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gV2ViRnJhbWVJbXBsOjpleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoY29uc3QgV2Vi
U2NyaXB0UwogICAgIHJldHVybiBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNvdXJjZS5jb2RlLCBzb3VyY2UudXJsLCBwb3NpdGlvbikpLnY4VmFsdWUo
KTsKIH0KIAorLy8gQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcmVjZWl2ZXIgYW5k
IGFyZ3VtZW50cywgYnlwYXNzaW5nIGNhbkV4ZWN1dGVTY3JpcHRzLgordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQodjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiByZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+c2Ny
aXB0KCktPmNhbGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKGZ1bmN0aW9uLCByZWNlaXZl
ciwgYXJnYywgYXJndikudjhWYWx1ZSgpOworfQorCiAvLyBSZXR1cm5zIHRoZSBWOCBjb250ZXh0
IGZvciB0aGlzIGZyYW1lLCBvciBhbiBlbXB0eSBoYW5kbGUgaWYgdGhlcmUgaXMgbm9uZS4KIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gV2ViRnJhbWVJbXBsOjptYWluV29ybGRTY3JpcHRDb250ZXh0
KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5k
ZXggNzAwZjZlYTQwMzdlN2IyOGI5MGJkYzhmOTQ5OTRjOGFlZTlhMzFmMi4uOWM4NmQ3NTE0YWMw
MGVhNWYxZGJiODE3NzliM2NhMzU4MTZmMzY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgKQEAgLTExMCw2ICsxMTAsMTEgQEAgcHVibGljOgogI2lmIFdFQktJ
VF9VU0lOR19WOAogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4ZWN1dGVTY3Jp
cHRBbmRSZXR1cm5WYWx1ZSgKICAgICAgICAgY29uc3QgV2ViU2NyaXB0U291cmNlJik7CisgICAg
dmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlz
YWJsZWQoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwKKyAgICAgICAgaW50IGFyZ2MsCisgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10pOwogICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBt
YWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY3JlYXRlRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggZGNjOThkYzA4
NTg3MjlkMzVkNThiYzI0YjIzNjU2YjA3NTcwNTk3Mi4uNzQwNjNmY2ZlZTg5NTVhMGE2NTFhODVl
MjM1YzI4YmE1OWU3MTViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNj
b3BlLmgiCiAjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIldl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpAQCAtODgs
NiArODksMTQgQEAgc3RhdGljIGJvb2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IGxlbmd0aCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZm5kZWYgTkRF
QlVHCitzdGF0aWMgdm9pZCBhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKCkKK3sKKyAgICAvLyBGSVhN
RTogRW5hYmxlIHdoZW4gY2hyb21pdW0gdXNhZ2Ugb2YgV2ViU2NyaXB0SW52b2NhdGlvbiBoYXMg
bGFuZGVkLgorICAgIC8vIEFTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgV2ViQ29yZTo6VjhSZWN1
cnNpb25TY29wZTo6cHJvcGVybHlVc2VkKCkpOworfQorI2VuZGlmCisKIHZvaWQgaW5pdGlhbGl6
ZShXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKICAgICBp
bml0aWFsaXplV2l0aG91dFY4KHdlYktpdFBsYXRmb3JtU3VwcG9ydCk7CkBAIC05Nyw2ICsxMDYs
MTAgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KQogICAgIFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJ
bml0aWFsaXplZCh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKIAogI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6QWRkQ2FsbENvbXBs
ZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgLy8g
Y3VycmVudFRocmVhZCB3aWxsIGFsd2F5cyBiZSBub24tbnVsbCBpbiBwcm9kdWN0aW9uLCBidXQg
Y2FuIGJlIG51bGwgaW4gQ2hyb21pdW0gdW5pdCB0ZXN0cy4KICAgICBpZiAoV2ViVGhyZWFkKiBj
dXJyZW50VGhyZWFkID0gd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkpIHsK
ICAgICAgICAgQVNTRVJUKCFzX2VuZE9mVGFza1J1bm5lcik7CkBAIC0xMzgsNiArMTUxLDEwIEBA
IHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBs
YXRmb3JtU3VwcG9ydCkKIHZvaWQgc2h1dGRvd24oKQogewogI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCisjaWZuZGVmIE5ERUJVRworICAgIHY4OjpWODo6UmVtb3ZlQ2FsbENvbXBsZXRl
ZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgaWYgKHNf
ZW5kT2ZUYXNrUnVubmVyKSB7CiAgICAgICAgIEFTU0VSVChzX3dlYktpdFBsYXRmb3JtU3VwcG9y
dC0+Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1
cnJlbnRUaHJlYWQoKS0+cmVtb3ZlVGFza09ic2VydmVyKHNfZW5kT2ZUYXNrUnVubmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1
cHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjb3BlZE1pY3Jv
dGFza1N1cHByZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDFjYmI4NDk0ZDI3NWRjYWM4MTkwODZi
MDk5NWYzYzRmMzBiYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24uY3BwCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2NvcGVkTWljcm90YXNrU3VwcHJl
c3Npb24uaCIKKworI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWZuZGVmIE5ERUJVRworY2xhc3Mg
V2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb246OkltcGwgOiBwdWJsaWMgV2ViQ29yZTo6VjhS
ZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24geworcHVibGljOgorICAgIEltcGwo
KSB7IH0KKyAgICB+SW1wbCgpIHsgfQorfTsKKyNlbmRpZgorCitXZWJTY29wZWRNaWNyb3Rhc2tT
dXBwcmVzc2lvbjo6V2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24oKQoreworI2lmbmRlZiBO
REVCVUcKKyAgICBtX2ltcGwucmVzZXQobmV3IEltcGwoKSk7CisjZW5kaWYKK30KKworV2ViU2Nv
cGVkTWljcm90YXNrU3VwcHJlc3Npb246On5XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbigp
Cit7CisjaWZuZGVmIE5ERUJVRworICAgIG1faW1wbC5yZXNldCgwKTsKKyNlbmRpZgorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135368</attachid>
            <date>2012-04-03 11:09:57 -0700</date>
            <delta_ts>2012-04-03 17:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79131-20120403110956.patch</filename>
            <type>text/plain</type>
            <size>47689</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYyZDg0NWQ0NjQwNDI4
ZDU3MGE3Yjk3YTE3MmJkNmI4MzVmYmQxOS4uZDEwNjQzMTRjOWM4YjRkYTdlYjAxMmZkYjlmNTky
ZTU1YTdiYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTA0LTAzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNv
bXBsZXRpb24gY2FsbGJhY2sgQVBJIHRvIGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMg
b24gdGhlIHN0YWNrIHdoZW5ldmVyIGludm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmQtb2YtbWljcm90YXNrIHdvcmsgKGNhbmNl
bGxpbmcgb3V0c3RhbmRpbmcgSURCIHRyYW5zYWN0aW9ucywKKyAgICAgICAgZGVsaXZlcmluZyBE
T00gbXV0YXRpb25zKSBkZXBlbmQgb24gVjhSZWN1cnNpb25TY29wZSBiZWluZyBvbiB0aGUKKyAg
ICAgICAgc3RhY2sgd2hlbmV2ZXIgYSBjYWxsIGlzIG1hZGUgaW50byBzY3JpcHQuIFY4IHByb3Zp
ZGVzIGEgY29tcGxldGlvbgorICAgICAgICBjYWxsYmFjayBBUEkgdGhhdCBjb3VsZCBiZSB1c2Vk
IHRvIGhvb2sgdGhlc2UgImVuZC1vZi1taWNyb3Rhc2siCisgICAgICAgIGV2ZW50cywgYnV0IGl0
IHR1cm5zIG91dCB0aGF0IFdlYktpdCBjYWxscyBpbnRvIHNjcmlwdCBmb3IgdmFyaW91cworICAg
ICAgICByZWFzb25zIGJlc2lkZXMgcnVubmluZyBzY3JpcHQgZnJvbSB0aGUgcGFnZS4gRm9yIGV4
YW1wbGUsIGNvbnN0cnVjdGluZworICAgICAgICB3cmFwcGVyIG9iamVjdHMgZnJvbSBmdW5jdGlv
biB0ZW1wbGF0ZXMgY291bnRzIGFzICJydW5uaW5nIHNjcmlwdCIsCisgICAgICAgIHlldCBpdCdz
IG5vdCBhcHByb3ByaWF0ZSB0byBydW4gdGhpcyBjYWxsYmFjayBldmVyeSB0aW1lIGEgSlMgd3Jh
cHBlcgorICAgICAgICBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAgICBJbnN0ZWFkLCB0aGlzIHBh
dGNoIG1ha2VzIHVzZSBvZiB0aGUgVjggY29tcGxldGlvbiBjYWxsYmFjayBtZWNoYW5pc20KKyAg
ICAgICAgb25seSBpbiBkZWJ1ZyBtb2RlLCB0byBhc3NlcnQgdGhhdCBlaXRoZXIgYSBWOFJlY3Vy
c2lvblNjb3BlICh3aGVuCisgICAgICAgIGNhbGxpbmcgYXV0aG9yIHNjcmlwdCkgb3IgYSBWOFJl
Y3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbgorICAgICAgICAod2hlbiBjYWxsaW5n
IG5vbi1hdXRob3Igc2NyaXB0KSBpcyBvbiB0aGUgc3RhY2sgd2hlbiBWOCB0aGlua3MgaXQncwor
ICAgICAgICBmaW5pc2hlZCBleGVjdXRpbmcgc2NyaXB0LiBUaGlzIHJlcXVpcmVzIGRyb3BwaW5n
IE1pY3JvdGFza1N1cHByZXNzaW9uCisgICAgICAgIG9iamVjdHMgaW4gYSBidW5jaCBvZiBwbGFj
ZXMsIG1vc3Qgbm90YWJseSB0aGUgSW5zcGVjdG9yLgorICAgICAgICBOb3RlIHRoYXQgaW4gcmVs
ZWFzZSBtb2RlLCB0aGlzIGNsYXNzIGRvZXMgbm90aGluZyBhbmQgdGh1cyBzaG91bGQgYmUKKyAg
ICAgICAgb3B0aW1pemVkIGF3YXkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGluZyB0
ZXN0cyBoYXZlIGFwcHJvcHJpYXRlIGNvdmVyYWdlLgorCisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGF0ZUV4dGVu
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlRXh0ZW5zaW9uOjpzZXRBbGxvd1NsZWVw
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHREaXNhYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNv
bGxlY3RHYXJiYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6
CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
Y2FsbERlYnVnZ2VyTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3ZlclN0YXRlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE91dE9mRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjplbnN1cmVEZWJ1Z2dlclNj
cmlwdENvbXBpbGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5o
OgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRGdW5jdGlvbkNh
bGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURh
dGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9u
TGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmRlY3Jl
bWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmpl
Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6cmVjdXJzaW9uTGV2ZWwpOgorICAgICAgICAo
VjhSZWN1cnNpb25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpw
cm9wZXJseVVzZWQpOgorICAgICAgICAoTWljcm90YXNrU3VwcHJlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb246Ok1pY3JvdGFz
a1N1cHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6Ok1pY3Jv
dGFza1N1cHByZXNzaW9uOjp+TWljcm90YXNrU3VwcHJlc3Npb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHA6CisKIDIw
MTItMDQtMDMgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0Q2hlY2tpbmcoKSB0byBHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCBhYzFlYTBmODkwNDQzYjAxODc0YWM3NTA0NDVkNDU2YTA0OThhYWMyLi5kMjc3ZWVlYmU1M2Ji
NzNhMWNkYjU2MGE0ZDNiZjBlMGJlNjY2M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTAzICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIFY4IGNvbXBsZXRpb24gY2FsbGJhY2sgQVBJIHRv
IGFzc2VydCB0aGF0IFY4UmVjdXJzaW9uU2NvcGUgaXMgb24gdGhlIHN0YWNrIHdoZW5ldmVyIGlu
dm9raW5nIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzkxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAg
ICh2OCk6CisgICAgICAgIChXZWJGcmFtZSk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNh
bGxGdW5jdGlvbkV2ZW5JZlNjcmlwdERpc2FibGVkKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmg6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJLaXQuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6YXNzZXJ0VjhSZWN1cnNpb25T
Y29wZSk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0Ojpz
aHV0ZG93bik6CisKIDIwMTItMDQtMDMgIEJvbGluIEhzdSAgPGJoc3VAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbQ2hyb21pdW1dIEFkZCBjbGljayBjb3VudCBhbmQgbW9kaWZpZXJzIHRvIHRoZSBm
YWN0b3J5IG1ldGhvZCBvZiBtb3VzZSBldmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDUwZTUxNjUxNjkz
ZGQ1NzFmNTczYjgxYjQ0NDQyZDk1YmE2NTYzMjAuLjUwOGFjMTQ2Zjc0N2NiY2QyODAyYzU2ODM0
M2QxNzgzYTY3OWIzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTQwNyw2ICsxNDA3LDcgQEAgdjggewog
ICAgICAgICBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oIFwKICAgICAgICAgYmluZGluZ3MvdjgvUmV0YWlu
ZWRPYmplY3RJbmZvLmggXAorICAgICAgICBiaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5oIFwK
ICAgICAgICAgYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5kaW5n
cy92OC9TY29wZWRET01EYXRhU3RvcmUuaCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1NjcmlwdENh
Y2hlZEZyYW1lRGF0YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiYTQ2MzBkYjllZDdmYTY0ZjRm
MmNhNzJkMTdhNGYwMWFmNTcxMGNiLi40ZDU2ZDNjZGUwZWRlY2M2NGU4MDUxYjZhY2NmNjgyZDgx
M2Q3ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDgyLDYgKzIwODIsNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRh
aW5lZE9iamVjdEluZm8uaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRp
b24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcAppbmRleCAzMzI4MjhiMjJhMzc4ZDQ5ZWFkMGFk
ZTcyM2ZhN2I4NGJiOTQ0ZWI4Li5jYTM2M2MyZWZmMWQ4MzllMjhmNmE2NjhlODEwMjM4N2MxMzY0
MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EYXRlRXh0ZW5zaW9uLmNwcApA
QCAtMzEsOCArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVFeHRl
bnNpb24uaCIKIAotI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3Bl
cnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNj
b3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODksNiArOTAsNyBAQCB2b2lkIERh
dGVFeHRlbnNpb246OnNldEFsbG93U2xlZXAoYm9vbCBhbGxvdykKIAogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2WzFdOwogICAgIGFyZ3ZbMF0gPSB2ODo6Qm9vbGVhbjo6TmV3KCFhbGxv
dyk7CisgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHNsZWVwRnVuY3Rpb25IYW5kbGUpLT5D
YWxsKHY4OjpPYmplY3Q6Ok5ldygpLCAxLCBhcmd2KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMThmN2Rm
N2VlNDI1NDAxMGMxZDcxNjE5N2E0YmI0YTZiZjdjNTA5Ni4uZDlkOTdlN2I2Zjc3YzM0ZDAzNDlj
YmE5YzhmMDE4ZjM3ZGU0YmU0NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTEwMCw3ICsxMDEsMTEgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAg
ICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJp
bmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEs
IGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZTsKKyAgICB7CisgICAgICAg
IFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAgICB2
YWx1ZSA9IGdldFNjcmlwdHNGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAx
LCBhcmd2KTsKKyAgICB9CiAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIEFTU0VSVCghdmFsdWUtPklzVW5kZWZpbmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TYWZlQWxsb2NhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jM2IzNGFlYmYzYWE4YmNkN2E0ODlkYjVlOGU1ZmJhNjVlNzgwMzBiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2FmZUFsbG9jYXRpb24uaApAQCAtMCww
ICsxLDc3IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgor
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisq
IGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFNhZmVBbGxvY2F0
aW9uX2gKKyNkZWZpbmUgU2FmZUFsbG9jYXRpb25faAorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgorCisjaW5jbHVkZSA8djguaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTYWZlQWxsb2NhdGlvbiB7CitwdWJsaWM6CisgICAg
c3RhdGljIGlubGluZSB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbmV3SW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+KTsKKyAgICBzdGF0aWMgaW5saW5lIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBuZXdJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4pOworICAgIHN0YXRp
YyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOworfTsK
Kwordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24pCit7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIENvbnN0
cnVjdG9yTW9kZSBjb25zdHJ1Y3Rvck1vZGU7CisgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90
YXNrU3VwcHJlc3Npb24gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5OZXdJbnN0YW5jZSgp
OworfQorCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0ZSkKK3sKKyAgICBp
ZiAob2JqZWN0VGVtcGxhdGUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpPYmplY3Q+KCk7CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBW
OFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICByZXR1cm4g
b2JqZWN0VGVtcGxhdGUtPk5ld0luc3RhbmNlKCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0
PiBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1
bmN0aW9uLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKK3sKKyAgICBp
ZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+KCk7CisgICAgQ29uc3RydWN0b3JNb2RlIGNvbnN0cnVjdG9yTW9kZTsKKyAgICBWOFJlY3Vy
c2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICByZXR1cm4gZnVuY3Rp
b24tPk5ld0luc3RhbmNlKGFyZ2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBTYWZlQWxsb2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDhkZTk1NTM3YWQ3ZjJjZmQxYWY2NGY4
MmU5ZGFkZmE4ZDI3ZGM5ZGMuLmMzODQyNWU3YTNiZmM4N2RhOGNkZjhjZjMyMmEyZTNiZjM4MWYz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNp
bmNsdWRlICJWOE5QT2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4
UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTYxLDYgKzE2
MiwxMiBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiAg
ICAgcmV0dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsK
IH0KIAorU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uRXZlbklmU2Ny
aXB0RGlzYWJsZWQodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHJlY2VpdmVyLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFy
Z3ZbXSkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgcGVyZm9ybSB0aGUg
c2FtZSBpc1BhdXNlZCBjaGVjayB0aGF0IGhhcHBlbnMgaW4gU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdC4KKyAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9wcm94eS0+Y2FsbEZ1bmN0aW9u
KGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywgYXJndikpOworfQorCiB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIGNvbnN0IFZl
Y3RvcjxTY3JpcHRTb3VyY2VDb2RlPiYgc291cmNlcykKIHsKICAgICBtX3Byb3h5LT5ldmFsdWF0
ZUluSXNvbGF0ZWRXb3JsZCh3b3JsZElELCBzb3VyY2VzLCAwKTsKQEAgLTI0NSw4ICsyNTIsMTAg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgICAgIHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBzb3VyY2UgPSB2ODo6U3RyaW5nOjpOZXcoImlmIChnYykgZ2MoKTsi
KTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUgPSB2ODo6U3RyaW5nOjpOZXco
ImdjIik7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlw
dDo6Q29tcGlsZShzb3VyY2UsIG5hbWUpOwotICAgICAgICBpZiAoIXNjcmlwdC5Jc0VtcHR5KCkp
CisgICAgICAgIGlmICghc2NyaXB0LklzRW1wdHkoKSkgeworICAgICAgICAgICAgVjhSZWN1cnNp
b25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAgICAgICAgICAgICBzY3JpcHQt
PlJ1bigpOworICAgICAgICB9CiAgICAgfQogICAgIHY4Q29udGV4dC5EaXNwb3NlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOWQy
ZWZkZWIxOGVkYzUyNjYxYWU5OGM4YzY4MDg1NmY3NGM1NWQwYS4uNzQzYjEyYmRiNzQ3M2I4OWU4
NDgyYzc5YmQ5MzgwYzdkYTQxNTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICAgICBTY3Jp
cHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKICAgICBTY3Jp
cHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUgPSBmYWxzZSk7CisgICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uRXZlbklmU2Ny
aXB0RGlzYWJsZWQodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgYXJndW1lbnQgaXMgYSBKYXZhU2NyaXB0IFVSTC4KICAgICBib29sIGV4
ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElm
SmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGI3MDU1MjNiNzFmNThiOTlmMDMyZjM5
YjZhNjUwNGM4MTBmMGU1YjUuLmNkMzBjNjRhZTcxOGRlZjg5OGJhOWEwNTMyMjc5MWExODQ0YjJm
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTcsNiArNTgsMTMgQEAgcHJpdmF0ZToK
IAogfQogCit2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVn
Z2VyTWV0aG9kKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldyhmdW5jdGlvbk5hbWUpKSk7CisgICAgVjhSZWN1cnNpb25T
Y29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5D
YWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3YpOworfQorCiBTY3JpcHREZWJ1
Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKERvbnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQo
dHJ1ZSkKQEAgLTEyOSw5ICsxMzcsOCBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3Bl
KHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CisgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSIsIDAsIGFyZ3YpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1Nl
cnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQog
CkBAIC0xNDEsOSArMTQ4LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT24KICAgICB2ODo6SGFu
ZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6
RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBzZXRQYXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46
OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSA9IHsgdjg6OkludDMyOjpOZXcocGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSkgfTsKLSAgICBzZXRQ
YXVzZU9uRXhjZXB0aW9uc0Z1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEs
IGFyZ3YpOworICAgIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSIsIDEsIGFyZ3YpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4
dFN0YXRlbWVudChib29sIHBhdXNlKQpAQCAtMTkwLDI3ICsxOTYsMjQgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKCkKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0
ZXBJbnRvU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNh
c3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcEludG9T
dGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhl
Y3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0
LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2QoInN0ZXBJbnRvU3RhdGVt
ZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQo
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6
Ok5ldygic3RlcE92ZXJTdGF0ZW1lbnQiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBmdW5jdGlvbi0+Q2FsbCht
X2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxsRGVidWdnZXJNZXRob2Qo
InN0ZXBPdmVyU3RhdGVtZW50IiwgMSwgYXJndik7CiAgICAgY29udGludWVQcm9ncmFtKCk7CiB9
CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKIHsKICAgICBB
U1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9u
ID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+
R2V0KHY4OjpTdHJpbmc6Ok5ldygic3RlcE91dE9mRnVuY3Rpb24iKSkpOwogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICBm
dW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICBjYWxs
RGVidWdnZXJNZXRob2QoInN0ZXBPdXRPZkZ1bmN0aW9uIiwgMSwgYXJndik7CiAgICAgY29udGlu
dWVQcm9ncmFtKCk7CiB9CiAKQEAgLTIyOCwxMiArMjMxLDExIEBAIGJvb2wgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJp
bmcmIG5lCiAgICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9w
dFB0cihuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkp
KTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5n
OjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFy
Z3ZbXSA9IHsgdjhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSwgdjhCb29s
ZWFuKHByZXZpZXcpIH07CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdHJ5Q2F0
Y2guU2V0VmVyYm9zZShmYWxzZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cmVzdWx0
ID0gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMywgYXJndik7CisgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoInNldFNj
cmlwdFNvdXJjZSIsIDMsIGFyZ3YpOwogICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewog
ICAgICAgICB2ODo6TG9jYWw8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UgPSB0cnlDYXRjaC5NZXNzYWdl
KCk7CiAgICAgICAgIGlmICghbWVzc2FnZS5Jc0VtcHR5KCkpCkBAIC0yNTUsOSArMjU3LDggQEAg
Ym9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpj
dXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5n
OjpOZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKLSAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxs
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjYWxsRGVidWdnZXJNZXRob2QoImN1cnJlbnRDYWxs
RnJhbWUiLCAxLCBhcmd2KTsKIAogICAgIEFTU0VSVCghY3VycmVudENhbGxGcmFtZVY4LklzRW1w
dHkoKSk7CiAgICAgaWYgKCFjdXJyZW50Q2FsbEZyYW1lVjgtPklzT2JqZWN0KCkpCkBAIC0zNTUs
NiArMzU2LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNv
bnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2
ODo6U3RyaW5nOjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWV4
Y2VwdGlvbkdldHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNG
dW5jdGlvbigpKTsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltd
ID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgICAgICAgICAgICAgIFY4UmVjdXJz
aW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOwogICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbiA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChleGNlcHRpb25HZXR0ZXJW
YWx1ZSktPkNhbGwoZXZlbnREYXRhLCAwLCBhcmd2KTsKICAgICAgICAgICAgIH0KIApAQCAtMzg5
LDYgKzM5MSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmVuc3VyZURlYnVnZ2VyU2NyaXB0
Q29tcGlsZWQoKQogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4
dCA9IHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCk7CiAgICAgICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBjb250ZXh0U2NvcGUoZGVidWdnZXJDb250ZXh0KTsKICAgICAgICAgU3RyaW5nIGRlYnVn
Z2VyU2NyaXB0U291cmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KERlYnVnZ2VyU2Ny
aXB0U291cmNlX2pzKSwgc2l6ZW9mKERlYnVnZ2VyU2NyaXB0U291cmNlX2pzKSk7CisgICAgICAg
IFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwog
ICAgICAgICBtX2RlYnVnZ2VyU2NyaXB0LnNldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhTdHJpbmcoZGVidWdnZXJTY3JpcHRTb3VyY2UpKS0+UnVu
KCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAppbmRleCBkZTg0NjUxNDAxMWUxNzUxZmQ3N2QyMGY5ZDc0YTI1YTA4MzZiZTdj
Li5hNGZiNjEyOWRlMGU0MGJlZmFiYjAxODdhOGE3ODU0NTE4MGI3MDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTExMyw3ICsxMTMs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNlKFNjcmlwdERl
YnVnTGlzdGVuZXIqIGxpc3RlbmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNvdXJjZU9iamVj
dCk7CiAKICAgICB2b2lkIGVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKTsKLSAgICAKKwor
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxEZWJ1Z2dlck1ldGhvZChjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdKTsKKwog
ICAgIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAg
IE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2RlYnVnZ2VyU2NyaXB0OwogICAgIE93bkhhbmRsZTx2
ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggNWM5NmI1NjRlMTM0MjA5Y2Q1Y2Ey
ZDVkYjRlYmU5ZjljNTA2MTUzYy4uMDZmNTVhOTkzYWY5YTZkZjQzY2E0NGNiM2MwNTUyNTc1OWIx
NDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCkBAIC0zMSwxMiArMzEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKIAorI2luY2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4
VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDx2OC5oPgpAQCAtMTMwLDcgKzEzMSwxMSBAQCBTY3Jp
cHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29s
IHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50
cy5zaXplKCk7ICsraSkKICAgICAgICAgYXJnc1tpXSA9IG1fYXJndW1lbnRzW2ldLnY4VmFsdWUo
KTsKIAotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHRo
aXNPYmplY3QsIG1fYXJndW1lbnRzLnNpemUoKSwgYXJncy5nZXQoKSk7CisgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gcmVzdWx0OworICAgIHsKKyAgICAgICAgVjhSZWN1cnNpb25TY29wZSBzY29w
ZShnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICByZXN1bHQgPSBmdW5jdGlv
bi0+Q2FsbCh0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cy5zaXplKCksIGFyZ3MuZ2V0KCkpOworICAg
IH0KICAgICBpZiAoIXNjb3BlLnN1Y2Nlc3MoKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0
cnVlOwogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDc5ODY3NmUxZWU2OWU4NWE3MzhiNDUzMjUyNDk0ODEz
ZDVjMjY4ZTcuLmY3ZGJlMDU5MThlZmM4M2UyNzc1OWY5MTNjMWZmZDQ1Nzc2NmNmNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNTYsNiArNTYsOSBAQCBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiAgICAgOiBtX2RvbURhdGFTdG9yZSgwKQogICAgICwgbV9jb25zdHJ1Y3Rv
ck1vZGUoQ29uc3RydWN0b3JNb2RlOjpDcmVhdGVOZXdPYmplY3QpCiAgICAgLCBtX3JlY3Vyc2lv
bkxldmVsKDApCisjaWZuZGVmIE5ERUJVRworICAgICwgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lv
bkxldmVsKDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCA4NGZmMjM3M2FiMjg2Y2IwZmU3ZjY1NDNkMDE3NzJkNDc0NDM1YmFiLi5lNzc3
NjVmNmJkZjRmZGViMjBkNDdjMmFkYWE2MDdhYjIwZDNmY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMTUzLDYgKzE1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFu
ZGxlTWFwKCkgeyByZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0KKworICAgICAgICBpbnQgaW50
ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTY3Jp
cHRSZWN1cnNpb25MZXZlbDsgfQorICAgICAgICBpbnQgaW5jcmVtZW50SW50ZXJuYWxTY3JpcHRS
ZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuICsrbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVs
OyB9CisgICAgICAgIGludCBkZWNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCkg
eyByZXR1cm4gLS1tX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWw7IH0KICNlbmRpZgogCiAg
ICAgcHJpdmF0ZToKQEAgLTE3OSw2ICsxODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsK
KyAgICAgICAgaW50IG1faW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbDsKICNlbmRpZgogICAg
IH07CiAKQEAgLTIwOCwzOCArMjEzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIG1fcHJldmlvdXM7CiAgICAgfTsKIAotICAgIGNsYXNzIFNhZmVBbGxvY2F0aW9uIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5l
d0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPik7Ci0gICAgICAgIHN0YXRpYyBpbmxp
bmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dFRlbXBsYXRlPik7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmd2W10pOwotICAgIH07Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBm
dW5jdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9y
TW9kZSBjb25zdHJ1Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbi0+TmV3SW5zdGFu
Y2UoKTsKLSAgICB9Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9jYXRpb246
Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBvYmplY3RUZW1wbGF0
ZSkKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgICAgIENvbnN0cnVjdG9y
TW9kZSBjb25zdHJ1Y3Rvck1vZGU7Ci0gICAgICAgIHJldHVybiBvYmplY3RUZW1wbGF0ZS0+TmV3
SW5zdGFuY2UoKTsKLSAgICB9Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2FmZUFsbG9j
YXRpb246Om5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgaW50
IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCi0gICAgewotICAgICAgICBpZiAo
ZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PigpOwotICAgICAgICBDb25zdHJ1Y3Rvck1vZGUgY29uc3RydWN0b3JNb2RlOwotICAgICAg
ICByZXR1cm4gZnVuY3Rpb24tPk5ld0luc3RhbmNlKGFyZ2MsIGFyZ3YpOwotICAgIH0KLQotCiAK
ICAgICBlbnVtIEV4dGVybmFsTW9kZSB7CiAgICAgICAgIEV4dGVybmFsaXplLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCBkNTEyZDJh
OTE5MDE2ZWQ3NWMyZGNhYjFjOTE0NGNjYTZkNTNkNThiLi45YjU2MTFiZmI5NDQzZjMxNDM4ZmM2
MmViYTg5YWEyNmRjM2NhMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0UHJvZmlsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCmluZGV4IDMwZTczMDYxMzM1NmVkNTYzM2RkOWYzZGY5ZWU1NzA1NWEzZTIyNWEuLjhjZTY0
ZGJkN2Y3ZWEzY2YwMGNiZjRiOGQ0ZjBiZWQyNWQ1MTI2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0SGVhZGVycy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudElu
c3RhbmNlLmgiCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVBy
b3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhM
YXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNjE2M2VhYTk1ODdlM2Y5YjFhYWFjYjhhYTljOWMw
Y2FjY2YwY2YzYS4uNDhkN2QzMGY4ZDNhYzk2MzZjM2RhZDZmMTAwZWMzYjAzMjlmMTM2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgog
I2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJl
Y3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCiAKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNTUsOSArMTU2LDEyIEBAIHZvaWQgVjhMYXp5
RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIC8vIENhbGwgdjg6OlNjcmlwdDo6UnVuKCkgZGlyZWN0bHkgdG8gYXZvaWQgYW4gZXJy
b25lb3VzIGNhbGwgdG8gVjhSZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KCku
CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgd2hlbiB3ZSBzdG9wIGRvaW5nIHRoZSAn
d2l0aCcgaGFjayBhYm92ZS4KLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IHNjcmlw
dC0+UnVuKCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWU7CisgICAgeworICAgICAg
ICBWOFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiBzY29wZTsKKyAgICAgICAg
dmFsdWUgPSBzY3JpcHQtPlJ1bigpOworICAgIH0KICAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTE3NCwxMCArMTc4LDEyIEBAIHZvaWQgVjhMYXp5RXZlbnRM
aXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1szXSA9IHsgbm9k
ZVdyYXBwZXIsIGZvcm1XcmFwcGVyLCBkb2N1bWVudFdyYXBwZXIgfTsKIAotICAgIC8vIFVzZSBD
YWxsIGRpcmVjdGx5IHRvIGF2b2lkIGFuIGVycm9uZW91cyBjYWxsIHRvIFY4UmVjdXJzaW9uU2Nv
cGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpLgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBj
b2RlIHdoZW4gd2Ugc3RvcCBkb2luZyB0aGUgJ3dpdGgnIGhhY2sgYWJvdmUuCi0gICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gaW5uZXJWYWx1ZSA9IGludGVybWVkaWF0ZUZ1bmN0aW9uLT5DYWxsKHY4
Q29udGV4dC0+R2xvYmFsKCksIDMsIHBhcmFtZXRlcnMpOwotCisgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gaW5uZXJWYWx1ZTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3Jv
dGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAgICBpbm5lclZhbHVlID0gaW50ZXJtZWRpYXRl
RnVuY3Rpb24tPkNhbGwodjhDb250ZXh0LT5HbG9iYWwoKSwgMywgcGFyYW1ldGVycyk7CisgICAg
fQogICAgIGlmIChpbm5lclZhbHVlLklzRW1wdHkoKSB8fCAhaW5uZXJWYWx1ZS0+SXNGdW5jdGlv
bigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHAKaW5kZXggZTQzZDI3ZTY0MDlkZWUyNWE4YWVlNzI2OTcwYTQ3ZTUyNjAwNWQzNC4u
ZjZkZDFmOGYzNmY0Zjc4OGMxMWQ5OTUyMGRiYWIzYzJlNDAzOGQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVjdC5oIgorI2luY2x1
ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmgKaW5kZXggM2I5YWQ2ZWMxMWQw
ODRlN2IxMGZlOTU0ZTVjYzUyZjU2ODdmMmY4OC4uMGU3NzZlMWVhYWU1MWY5YjgyMGMyNGQwM2I2
NWQ1YmU4NDlhMWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhS
ZWN1cnNpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJz
aW9uU2NvcGUuaApAQCAtMzMsOSArMzMsMjcgQEAKIAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBDKysgY2FsbHMgaW50byBzY3Jp
cHQgY29udGV4dHMgd2hpY2ggYXJlICJvd25lZCIgYnkgV2ViS2l0IChjcmVhdGVkIGluIGEKKy8v
IHByb2Nlc3Mgd2hlcmUgV2ViS2l0LmNwcCBpbml0aWFsaXplcyB2OCkgbXVzdCBkZWNsYXJlIHRo
ZWlyIHR5cGU6CisvLworLy8gICAxLiBDYWxscyBpbnRvIHBhZ2UvYXV0aG9yIHNjcmlwdCBmcm9t
IGEgZnJhbWUKKy8vICAgMi4gQ2FsbHMgaW50byBwYWdlL2F1dGhvciBzY3JpcHQgZnJvbSBhIHdv
cmtlcgorLy8gICAzLiBDYWxscyBpbnRvIGludGVybmFsIHNjcmlwdCAodHlwaWNhbGx5IHNldHVw
L3RlYXJkb3duIHdvcmspCisvLworLy8gRGVidWctdGltZSBjaGVja2luZyBvZiB0aGlzIGlzIGVu
Zm9yY2VkIHZpYSB0aGlzIGNsYXNzLgorLy8KKy8vIENhbGxzIG9mIHR5cGUgKDEpIHNob3VsZCBn
ZW5lcmFsbHkgZ28gdGhyb3VnaCBWOFByb3h5LCBhcyBpbnNwZWN0b3IKKy8vIGluc3RydW1lbnRh
dGlvbiBpcyBuZWVkZWQuIENhbGxzIG9mIHR5cGUgKDIpIHNob3VsZCBhbHdheXMgc3RhY2stYWxs
b2NhdGUgYQorLy8gVjhSZWN1cnNpb25TY29wZSBpbiB0aGUgc2FtZSBibG9jayBhcyB0aGUgY2Fs
bCBpbnRvIHNjcmlwdC4gQ2FsbHMgb2YgdHlwZSAoMykKKy8vIHNob3VsZCBzdGFjayBhbGxvY2F0
ZSBhIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIC0tIHRoaXMKKy8vIHNr
aXBzIHdvcmsgdGhhdCBpcyBzcGVjJ2QgdG8gaGFwcGVuIGF0IHRoZSBlbmQgb2YgdGhlIG91dGVy
LW1vc3Qgc2NyaXB0IHN0YWNrCisvLyBmcmFtZSBvZiBjYWxscyBpbnRvIHBhZ2Ugc2NyaXB0Ogor
Ly8KKy8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I3BlcmZvcm0tYS1taWNyb3Rhc2stY2hlY2twb2ludAogY2xhc3MgVjhSZWN1cnNpb25TY29wZSB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVjhSZWN1cnNpb25TY29wZSk7CiBwdWJsaWM6CkBA
IC01MSw3ICs2OSwzNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkaWRMZWF2ZVNjcmlwdENvbnRl
eHQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgaW50IHJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4g
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+cmVjdXJzaW9uTGV2ZWwoKTsgfQor
ICAgIHN0YXRpYyBpbnQgcmVjdXJzaW9uTGV2ZWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnJlY3Vyc2lvbkxldmVsKCk7CisgICAg
fQorCisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBib29sIHByb3Blcmx5VXNlZCgpCisgICAg
eworICAgICAgICByZXR1cm4gcmVjdXJzaW9uTGV2ZWwoKSA+IDAgfHwgVjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmN1cnJlbnQoKS0+aW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpID4gMDsK
KyAgICB9CisjZW5kaWYKKworICAgIGNsYXNzIE1pY3JvdGFza1N1cHByZXNzaW9uIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIE1pY3JvdGFza1N1cHByZXNzaW9uKCkKKyAgICAgICAgeworI2lmbmRl
ZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCkt
PmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRpZgorICAgICAg
ICB9CisKKyAgICAgICAgfk1pY3JvdGFza1N1cHByZXNzaW9uKCkKKyAgICAgICAgeworI2lmbmRl
ZiBOREVCVUcKKyAgICAgICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCkt
PmRlY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRpZgorICAgICAg
ICB9CisgICAgfTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZExlYXZlU2NyaXB0Q29udGV4dCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggNTFiZTVjYTgzZjcwNzljNzRhMjQ3ZDMyNTNmMDU1
NzdjOGNjODQxNy4uMTYyZDc5NDI4NWZiYmEzZTgyNTc4MDdhM2EzNTUxZThlODEyMjU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJTYWZlQWxs
b2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IDQxYWUwNzE3MTU1ZTUxN2QwOTA2MDljOTFjOTU0MTYxZDZiM2U2NDcuLjRj
ZjFiY2EwOTE1ZjA0ZWI4M2EyOTQyMjZmM2I5MmQ3YjkwNjdhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAj
aW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVj
dXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNjYsNyArNjcs
MTEgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dP
YmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICBpZiAoc2hhZG93Q29uc3RydWN0b3Iu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAKLSAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hhZG93ID0gc2hhZG93Q29uc3RydWN0b3ItPk5ld0lu
c3RhbmNlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNoYWRvdzsKKyAgICB7CisgICAg
ICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHNjb3BlOworICAgICAg
ICBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICB9CiAgICAg
aWYgKHNoYWRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVj
dD4oKTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9j
dW1lbnQ6OmluZm8sIGltcGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4
MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3NzlmNzY1YzhhMy4uN2Q5NDkzZjczYWE5MGMzZDI1ZTJh
ODUyNjNhODljYjA2NzcyYzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTYWZlQWxs
b2NhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUu
aCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2
LDYgKzk4LDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBpbmplY3RlZCBzY3Jp
cHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmpl
Y3QuIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmln
dXJlIEluamVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0
aGUgaW5zcGVjdG9yLgogICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2Ny
aXB0OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworICAgIFY4UmVjdXJzaW9uU2Nv
cGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwogICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigpOwogICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwog
ICAgIEFTU0VSVCh2LT5Jc0Z1bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcAppbmRleCAz
MmQ4NzI2OGNhYjdlY2JjM2UzNzAzMjZiOTM5M2VmOTYwNDU5MzJhLi42NDIxODU1MDE2MjZmZDJl
OWNmN2QzMmFjMmJmZTNhZmJiM2Y2MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogI2luY2x1ZGUgIlY4
U2NyaXB0UHJvZmlsZS5oIgogCisjaW5jbHVkZSAiU2FmZUFsbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCmluZGV4IGMxMzQwMGVmZTJmYjMy
Njk3YWQyM2Q5MzZlMzgzODk3MjQ0NTZkNzguLjc4ZDkyMTBiZDFlMjU5ZWNjMDE2NjE4NDNmNjAw
NTY4NjUzMzgwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICNpbmNsdWRlICJWOFNjcmlw
dFByb2ZpbGVOb2RlLmgiCiAKKyNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdFByb2ZpbGVOb2RlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGUwMmEyM2NhNjExOTE2
Yzk1NWFiMTlmZmUyODhiZjNjZjU5MzQxYjMuLmUwMGZmNTJiNTYzMDM4MDM4MThkY2E1Zjk2OWQ3
MjdiMmMyZGZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTIyOCw2ICsyMjgs
NyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVmZXJyZXJQb2xpY3kuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViU2NvcGVkVXNlckdlc3R1cmUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJTY3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2NyaXB0Q29udHJv
bGxlci5oJywKQEAgLTYxNiw2ICs2MTcsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUmFu
Z2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U2Nyb2xsYmFySW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
LmgKaW5kZXggMGQ1NDA2ZDUyMDY4MmM5NTAxNTQ2YjQwODI1MzI4NTA5NTVmNmJlNS4uMTlhN2Mz
NzAyOWM1N2FkZGM5OGU2NzE2YTgwNmFhMWMwMDI5MmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZS5oCkBAIC00NCw2ICs0NCw4IEBAIHN0cnVjdCBOUE9iamVjdDsK
ICNpZiBXRUJLSVRfVVNJTkdfVjgKIG5hbWVzcGFjZSB2OCB7CiBjbGFzcyBDb250ZXh0OworY2xh
c3MgRnVuY3Rpb247CitjbGFzcyBPYmplY3Q7CiBjbGFzcyBWYWx1ZTsKIHRlbXBsYXRlIDxjbGFz
cyBUPiBjbGFzcyBIYW5kbGU7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTG9jYWw7CkBAIC0y
NzQsNiArMjc2LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBleGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoCiAgICAgICAgIGNvbnN0IFdlYlNjcmlwdFNv
dXJjZSYpID0gMDsKIAorICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHJl
Y2VpdmVyIGFuZCBhcmd1bWVudHMsIGJ5cGFzc2luZworICAgIC8vIGNhbkV4ZWN1dGUoKS4KKyAg
ICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxsRnVuY3Rpb25FdmVuSWZTY3JpcHRE
aXNhYmxlZCgKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LAorICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LAorICAgICAgICBpbnQgYXJnYywKKyAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSkgPSAwOworCiAgICAgLy8gUmV0dXJucyB0aGUgVjggY29udGV4
dCBmb3IgdGhpcyBmcmFtZSwgb3IgYW4gZW1wdHkgaGFuZGxlIGlmIHRoZXJlCiAgICAgLy8gaXMg
bm9uZS4KICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkU2NyaXB0
Q29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTY29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgyNmRiNjk1NWE4NmVmN2NjYzk0YjgxODUwMzUwNTE1NDFlZDBkOGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY29wZWRNaWNyb3Rhc2tTdXBw
cmVzc2lvbi5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjb3BlZE1pY3JvdGFza1N1cHBy
ZXNzaW9uX2gKKyNkZWZpbmUgV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb25faAorCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZU93blB0ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gVGhpcyBjbGFzcyB3cmFwcyBWOFJlY3Vyc2lvblNjb3BlOjpCeXBhc3NNaWNyb3Rhc2tD
aGVja3BvaW50LiBQbGVhc2UKKy8vIHNlZSBWOFJlY3Vyc2lvblNjb3BlLmggZm9yIGZ1bGwgdXNh
Z2UuIFNob3J0IHN0b3J5OiBFbWJlZGRlciBjYWxscyBpbnRvCisvLyBzY3JpcHQgY29udGV4dHMg
d2hpY2ggYWxzbyBob3N0IHBhZ2Ugc2NyaXB0IG11c3QgZG8gb25lIG9mIHR3byB0aGluZ3M6Cisv
LworLy8gICAxLiBJZiB0aGUgY2FsbCBtYXkgY2F1c2UgYW55IHBhZ2UvYXV0aG9yIHNjcmlwdCB0
byBydW4sIGl0IG11c3QgYmUKKy8vICAgICAgY2FwdHVyZWQgZm9yIHByZS9wb3N0IHdvcmsgKGUu
Zy4gaW5zcGVjdG9yIGluc3RydW1lbnRhdGlvbi9taWNyb3Rhc2sKKy8vICAgICAgZGVsaXZlcnkp
IGFuZCB0aHVzIGJlIGludm9rZWQgdGhyb3VnaCBXZWJGcmFtZSAoZS5nLiBleGVjdXRlU2NyaXB0
KiwKKy8vICAgICAgY2FsbEZ1bmN0aW9uKikuCisvLyAgIDIuIElmIHRoZSBjYWxsIHdpbGwgbm90
IGNhdXNlIGFueSBwYWdlL2F1dGhvciBzY3JpcHQgdG8gcnVuLCB0aGUgY2FsbAorLy8gICAgICBz
aG91bGQgYmUgbWFkZSBkaXJlY3RseSB2aWEgdGhlIHY4IGNvbnRleHQsIGJ1dCB0aGUgY2FsbHNp
dGUgbXVzdCBiZQorLy8gICAgICBhY2NvbXBhbmllZCBieSBhIHN0YWNrIGFsbG9jYXRlZCBXZWJT
Y29wZWRNaWNyb3Rhc2tTdXBwcmVzc2lvbiwgZS5nLjoKKy8vCisvLyAgICAgICAgLi4uCisvLyAg
ICAgICAgeworLy8gICAgICAgICAgICBXZWJLaXQ6OldlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNz
aW9uIHN1cHByZXNzaW9uOworLy8gICAgICAgICAgICBmdW5jLT5DYWxsKGdsb2JhbCwgYXJndiwg
YXJncyk7CisvLyAgICAgICAgfQorLy8gICAgICAgIC4uLgorLy8KK2NsYXNzIFdlYlNjb3BlZE1p
Y3JvdGFza1N1cHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBXZWJTY29wZWRNaWNyb3Rhc2tTdXBw
cmVzc2lvbigpIHsgaW5pdGlhbGl6ZSgpOyB9CisgICAgfldlYlNjb3BlZE1pY3JvdGFza1N1cHBy
ZXNzaW9uKCkgeyByZXNldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGluaXRpYWxpemUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKworI2lmbmRl
ZiBOREVCVUcKKyAgICBjbGFzcyBJbXBsOworICAgIFdlYlByaXZhdGVPd25QdHI8SW1wbD4gbV9p
bXBsOworI2VuZGlmCit9OworCit9IC8vIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDBlNThhYTE4OWFhZmM1MmYzMzUz
YTgwMzIyZTg4YTg4MmVhNTI3ZWEuLjgxM2M5ZDcwNzQzMzljNDg3ZTRiMjRmZWY4ZmNmNTE1ZDNi
ZDJhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApA
QCAtODk2LDYgKzg5NiwxNSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJhbWVJbXBsOjpl
eGVjdXRlU2NyaXB0QW5kUmV0dXJuVmFsdWUoY29uc3QgV2ViU2NyaXB0UwogICAgIHJldHVybiBt
X2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNvdXJjZS5j
b2RlLCBzb3VyY2UudXJsLCBwb3NpdGlvbikpLnY4VmFsdWUoKTsKIH0KIAorLy8gQ2FsbCB0aGUg
ZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcmVjZWl2ZXIgYW5kIGFyZ3VtZW50cywgYnlwYXNzaW5n
IGNhbkV4ZWN1dGVTY3JpcHRzLgordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6
Y2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IGZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiByZWNlaXZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBhcmdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFyZ3ZbXSkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+c2NyaXB0KCktPmNhbGxGdW5jdGlvbkV2
ZW5JZlNjcmlwdERpc2FibGVkKGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywgYXJndikudjhWYWx1
ZSgpOworfQorCiAvLyBSZXR1cm5zIHRoZSBWOCBjb250ZXh0IGZvciB0aGlzIGZyYW1lLCBvciBh
biBlbXB0eSBoYW5kbGUgaWYgdGhlcmUgaXMgbm9uZS4KIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
V2ViRnJhbWVJbXBsOjptYWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggNzAwZjZlYTQwMzdlN2IyOGI5
MGJkYzhmOTQ5OTRjOGFlZTlhMzFmMi4uOWM4NmQ3NTE0YWMwMGVhNWYxZGJiODE3NzliM2NhMzU4
MTZmMzY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAg
LTExMCw2ICsxMTAsMTEgQEAgcHVibGljOgogI2lmIFdFQktJVF9VU0lOR19WOAogICAgIHZpcnR1
YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4ZWN1dGVTY3JpcHRBbmRSZXR1cm5WYWx1ZSgKICAg
ICAgICAgY29uc3QgV2ViU2NyaXB0U291cmNlJik7CisgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY2FsbEZ1bmN0aW9uRXZlbklmU2NyaXB0RGlzYWJsZWQoCisgICAgICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPiwKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwKKyAg
ICAgICAgaW50IGFyZ2MsCisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwog
ICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRTY3JpcHRDb250ZXh0
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlRmlsZVN5
c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggZGNjOThkYzA4NTg3MjlkMzVkNThiYzI0YjIzNjU2
YjA3NTcwNTk3Mi4uNzQwNjNmY2ZlZTg5NTVhMGE2NTFhODVlMjM1YzI4YmE1OWU3MTViZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0TXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpAQCAtODgsNiArODksMTQgQEAgc3RhdGljIGJv
b2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgdm9pZCBhc3Nl
cnRWOFJlY3Vyc2lvblNjb3BlKCkKK3sKKyAgICAvLyBGSVhNRTogRW5hYmxlIHdoZW4gY2hyb21p
dW0gdXNhZ2Ugb2YgV2ViU2NyaXB0SW52b2NhdGlvbiBoYXMgbGFuZGVkLgorICAgIC8vIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkgfHwgV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6cHJvcGVybHlV
c2VkKCkpOworfQorI2VuZGlmCisKIHZvaWQgaW5pdGlhbGl6ZShXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKICAgICBpbml0aWFsaXplV2l0aG91dFY4KHdl
YktpdFBsYXRmb3JtU3VwcG9ydCk7CkBAIC05Nyw2ICsxMDYsMTAgQEAgdm9pZCBpbml0aWFsaXpl
KFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0KQogICAgIFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpKTsKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZu
ZGVmIE5ERUJVRworICAgIHY4OjpWODo6QWRkQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRW
OFJlY3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgLy8gY3VycmVudFRocmVhZCB3aWxsIGFs
d2F5cyBiZSBub24tbnVsbCBpbiBwcm9kdWN0aW9uLCBidXQgY2FuIGJlIG51bGwgaW4gQ2hyb21p
dW0gdW5pdCB0ZXN0cy4KICAgICBpZiAoV2ViVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gd2ViS2l0
UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50VGhyZWFkKCkpIHsKICAgICAgICAgQVNTRVJUKCFzX2Vu
ZE9mVGFza1J1bm5lcik7CkBAIC0xMzgsNiArMTUxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZVdpdGhv
dXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHZvaWQg
c2h1dGRvd24oKQogewogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisjaWZuZGVmIE5E
RUJVRworICAgIHY4OjpWODo6UmVtb3ZlQ2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJl
Y3Vyc2lvblNjb3BlKTsKKyNlbmRpZgorCiAgICAgaWYgKHNfZW5kT2ZUYXNrUnVubmVyKSB7CiAg
ICAgICAgIEFTU0VSVChzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVhZCgpKTsK
ICAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaHJlYWQoKS0+cmVtb3Zl
VGFza09ic2VydmVyKHNfZW5kT2ZUYXNrUnVubmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjb3BlZE1pY3JvdGFza1N1cHByZXNzaW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZDE2NWMxODljNDc0Y2RhZDEwMTI2YTFlNzdkNDZiYjhkMWNkOTU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2NvcGVkTWljcm90
YXNrU3VwcHJlc3Npb24uY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24uaCIKKworI2luY2x1ZGUg
IlY4UmVjdXJzaW9uU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjaWZuZGVmIE5ERUJVRworY2xhc3MgV2ViU2NvcGVkTWljcm90YXNrU3Vw
cHJlc3Npb246OkltcGwgOiBwdWJsaWMgV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6TWljcm90
YXNrU3VwcHJlc3Npb24geyB9OworI2VuZGlmCisKK3ZvaWQgV2ViU2NvcGVkTWljcm90YXNrU3Vw
cHJlc3Npb246OmluaXRpYWxpemUoKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBtX2ltcGwucmVz
ZXQobmV3IEltcGwoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTY29wZWRNaWNyb3Rhc2tTdXBw
cmVzc2lvbjo6cmVzZXQoKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBtX2ltcGwucmVzZXQoMCk7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>