<?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>225409</bug_id>
          
          <creation_ts>2021-05-05 13:15:38 -0700</creation_ts>
          <short_desc>[iOS] UI process hangs when showing a modal JavaScript dialog while focusing an input field</short_desc>
          <delta_ts>2021-05-06 09:54:23 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1757067</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 13:15:38 -0700</bug_when>
    <thetext>Reproduction:

1. Go to https://whsieh.github.io/examples/focus-navigate on an iPhone or iPad.
2. Tap the top input field</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757071</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 13:20:32 -0700</bug_when>
    <thetext>rdar://76792407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757100</commentid>
    <comment_count>2</comment_count>
      <attachid>427805</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 14:17:40 -0700</bug_when>
    <thetext>Created attachment 427805
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757114</commentid>
    <comment_count>3</comment_count>
      <attachid>427805</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-05 14:52:45 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

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

&gt; Source/WebKit/ChangeLog:37
&gt; +        Make a slight adjustment here so that `waitForMessage` bails if one of the messages we&apos;re dispatching underneath
&gt; +        `SyncMessageState::dispatchMessages` is the message we happen to be waiting for anyways. In this case, it&apos;s
&gt; +        necessary in order for the preemptive `WebPageProxy::HandleAutocorrectionContext` message sent by the web
&gt; +        process to unblock the UI process, which is waiting for a `WebPageProxy::HandleAutocorrectionContext` response.

This part could use a careful Chris review, but does not seem outrageous (once Wenson explained to me that MessageName is now unique across receivers, which I missed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757117</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 14:58:19 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #3)
&gt; Comment on attachment 427805 [details]
&gt; For EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427805&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:37
&gt; &gt; +        Make a slight adjustment here so that `waitForMessage` bails if one of the messages we&apos;re dispatching underneath
&gt; &gt; +        `SyncMessageState::dispatchMessages` is the message we happen to be waiting for anyways. In this case, it&apos;s
&gt; &gt; +        necessary in order for the preemptive `WebPageProxy::HandleAutocorrectionContext` message sent by the web
&gt; &gt; +        process to unblock the UI process, which is waiting for a `WebPageProxy::HandleAutocorrectionContext` response.
&gt; 
&gt; This part could use a careful Chris review, but does not seem outrageous
&gt; (once Wenson explained to me that MessageName is now unique across
&gt; receivers, which I missed).

I don&apos;t object to the IPC change, I think it makes sense. However, I find the way it is currently implemented to be a bit confusing. Could you please give me a bit to come up with a proposal before landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757118</commentid>
    <comment_count>5</comment_count>
      <attachid>427805</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-05 14:59:00 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

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

r=me as well, nice fix!

&gt; Source/WebKit/UIProcess/PageClient.h:339
&gt; +    virtual void runModalJavaScriptDialog(Function&lt;void()&gt;&amp;&amp; callback) { callback(); }

`CompletionHandler`?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5709
&gt; +    pageClient().runModalJavaScriptDialog([this, protectedThis = makeRef(*this), reply = WTFMove(reply), frameInfo = WTFMove(frameInfo), frame = WTFMove(frame), message]() mutable {

Rather than have `protectedThis`, should we just `makeWeakPtr(*this)` here?  Or are we not doing that on the assumption that most of the time this will not be called in response to keyboard activity?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757133</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 15:32:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Tim Horton from comment #3)
&gt; &gt; Comment on attachment 427805 [details]
&gt; &gt; For EWS
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=427805&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:37
&gt; &gt; &gt; +        Make a slight adjustment here so that `waitForMessage` bails if one of the messages we&apos;re dispatching underneath
&gt; &gt; &gt; +        `SyncMessageState::dispatchMessages` is the message we happen to be waiting for anyways. In this case, it&apos;s
&gt; &gt; &gt; +        necessary in order for the preemptive `WebPageProxy::HandleAutocorrectionContext` message sent by the web
&gt; &gt; &gt; +        process to unblock the UI process, which is waiting for a `WebPageProxy::HandleAutocorrectionContext` response.
&gt; &gt; 
&gt; &gt; This part could use a careful Chris review, but does not seem outrageous
&gt; &gt; (once Wenson explained to me that MessageName is now unique across
&gt; &gt; receivers, which I missed).
&gt; 
&gt; I don&apos;t object to the IPC change, I think it makes sense. However, I find
&gt; the way it is currently implemented to be a bit confusing. Could you please
&gt; give me a bit to come up with a proposal before landing?

Followed-up on Slack with Tim and Wenson.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757135</commentid>
    <comment_count>7</comment_count>
      <attachid>427805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-05 15:35:52 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

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

&gt; Source/WebKit/Platform/IPC/Connection.cpp:74
&gt; +enum class DispatchedWaitingForMessage : bool { No, Yes };

This doesn’t seem like straightforward language. There’s a message name that we are watching for. I would not say we are &quot;waiting for&quot; it inside the dispatchMessages function, since that function doesn’t stop dispatching messages when we see it. It’s the next level up that does that. Also, &quot;message we are waiting for&quot; and &quot;waiting for message&quot; do not seem to mean the same thing; an existing bit of confusing terminology.

I might name this something like &quot;saw expected message&quot;. We should follow the rule that first we think through how we would say this to another person and then try to name it after that.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:97
&gt; +    DispatchedWaitingForMessage dispatchMessages(Optional&lt;MessageName&gt; waitingForMessageName = WTF::nullopt);

Maybe this is the &quot;expected message name&quot;?

&gt; Source/WebKit/Platform/IPC/Connection.cpp:215
&gt; +        if (waitingForMessageName &amp;&amp; messageToDispatch.message-&gt;messageName() == *waitingForMessageName)

The way the Optional class works, and how it defines ==, I think you can just write this:

    if (messageToDispatch.message-&gt;messageName() == waitingForMessageName)

And if we were using plain booleans instead of enumerations, we could write:

    dispatchedWaitingForMessage |= messageToDispatch.message-&gt;messageName() == waitingForMessageName;

But maybe &quot;expected&quot; instead of &quot;waiting for&quot;?

We can convert the boolean into the unambiguous enumeration at the return statement, and still get the important clarity at the call site. Here inside the function I think the boolean should be just fine.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:584
&gt; +            m_waitingForMessage = nullptr;

At this level, it is the message we are waiting for, so the name is not as obviously wrong, but &quot;m_waitingForMessage&quot; is still not a great name.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5716
&gt; +    pageClient().runModalJavaScriptDialog([this, protectedThis = makeRef(*this), reply = WTFMove(reply), frameInfo = WTFMove(frameInfo), frame = WTFMove(frame), message]() mutable {
&gt; +        m_isRunningModalJavaScriptDialog = true;
&gt; +        m_uiClient-&gt;runJavaScriptAlert(*this, message, frame.get(), WTFMove(frameInfo), [reply = WTFMove(reply), weakThis = makeWeakPtr(*this)]() mutable {
&gt; +            if (auto strongThis = makeRefPtr(weakThis.get()))
&gt; +                strongThis-&gt;m_isRunningModalJavaScriptDialog = false;
&gt; +            reply();
&gt; +        });
&gt; +    });

I think we can refactor this so the code is shared among the three JavaScript dialog types, instead of the tricky idiom being written out three times. There should be one function call here, with just one lambda. The code to set and then clear m_isRunningModalJavaScriptDialog should be in that single helper instead of related thrice. While it’s OK to land it like this, it’s not hard to refactor it to be more like that.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2599
&gt; +    if (!m_focusedElement)
&gt; +        return;
&gt; +
&gt; +    if (!m_focusedElement-&gt;hasEditableStyle() &amp;&amp; !is&lt;HTMLTextFormControlElement&gt;(*m_focusedElement))
&gt; +        return;
&gt; +
&gt; +    send(Messages::WebPageProxy::HandleAutocorrectionContext(autocorrectionContext()));

If ever a function needed a &quot;why&quot; comment, this is the one. We avoid a synchronous hang by proactively sending this, which is so non-obvious! But it works. And even better, we have a test that covers it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757143</commentid>
    <comment_count>8</comment_count>
      <attachid>427805</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 15:47:33 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

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

&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:74
&gt;&gt; +enum class DispatchedWaitingForMessage : bool { No, Yes };
&gt; 
&gt; This doesn’t seem like straightforward language. There’s a message name that we are watching for. I would not say we are &quot;waiting for&quot; it inside the dispatchMessages function, since that function doesn’t stop dispatching messages when we see it. It’s the next level up that does that. Also, &quot;message we are waiting for&quot; and &quot;waiting for message&quot; do not seem to mean the same thing; an existing bit of confusing terminology.
&gt; 
&gt; I might name this something like &quot;saw expected message&quot;. We should follow the rule that first we think through how we would say this to another person and then try to name it after that.

I had a hard time understanding the naming of this enum.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:197
&gt; +DispatchedWaitingForMessage Connection::SyncMessageState::dispatchMessages(Optional&lt;MessageName&gt; waitingForMessageName)

The naming is confusing here and I really wish Connection::SyncMessageState::dispatchMessages() did not have to know about the &quot;waitFor&quot; logic, especially in its declaration. My proposal is to pass a `Function&lt;void(MessageName, uint64_t destinationID)&gt;` that can be called willDispatchMessage or didDispatchMessage depending on when you call it.
Then the design is a bit more generic and the naming is not difficult.

&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:215
&gt;&gt; +        if (waitingForMessageName &amp;&amp; messageToDispatch.message-&gt;messageName() == *waitingForMessageName)
&gt; 
&gt; The way the Optional class works, and how it defines ==, I think you can just write this:
&gt; 
&gt;     if (messageToDispatch.message-&gt;messageName() == waitingForMessageName)
&gt; 
&gt; And if we were using plain booleans instead of enumerations, we could write:
&gt; 
&gt;     dispatchedWaitingForMessage |= messageToDispatch.message-&gt;messageName() == waitingForMessageName;
&gt; 
&gt; But maybe &quot;expected&quot; instead of &quot;waiting for&quot;?
&gt; 
&gt; We can convert the boolean into the unambiguous enumeration at the return statement, and still get the important clarity at the call site. Here inside the function I think the boolean should be just fine.

Note that this needs to check the destinationID in addition to the MessageName to make sure they match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757144</commentid>
    <comment_count>9</comment_count>
      <attachid>427805</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 15:47:51 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

r- because of the missing destinationID check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757145</commentid>
    <comment_count>10</comment_count>
      <attachid>427805</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 15:48:15 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

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

&gt;&gt;&gt;&gt; Source/WebKit/ChangeLog:37
&gt;&gt;&gt;&gt; +        process to unblock the UI process, which is waiting for a `WebPageProxy::HandleAutocorrectionContext` response.
&gt;&gt;&gt; 
&gt;&gt;&gt; This part could use a careful Chris review, but does not seem outrageous (once Wenson explained to me that MessageName is now unique across receivers, which I missed).
&gt;&gt; 
&gt;&gt; I don&apos;t object to the IPC change, I think it makes sense. However, I find the way it is currently implemented to be a bit confusing. Could you please give me a bit to come up with a proposal before landing?
&gt; 
&gt; Followed-up on Slack with Tim and Wenson.

👍🏻

I&apos;m changing dispatchMessages to `void dispatchMessages(Function&lt;void(MessageName, uint64_t)&gt;&amp;&amp; willDispatchMessage)`, instead of passing back an enum and taking an optional &quot;waitForMessage&quot; name.

&gt;&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:74
&gt;&gt;&gt; +enum class DispatchedWaitingForMessage : bool { No, Yes };
&gt;&gt; 
&gt;&gt; This doesn’t seem like straightforward language. There’s a message name that we are watching for. I would not say we are &quot;waiting for&quot; it inside the dispatchMessages function, since that function doesn’t stop dispatching messages when we see it. It’s the next level up that does that. Also, &quot;message we are waiting for&quot; and &quot;waiting for message&quot; do not seem to mean the same thing; an existing bit of confusing terminology.
&gt;&gt; 
&gt;&gt; I might name this something like &quot;saw expected message&quot;. We should follow the rule that first we think through how we would say this to another person and then try to name it after that.
&gt; 
&gt; I had a hard time understanding the naming of this enum.

Ah, so I&apos;m removed this enum altogether (and am using a slightly different approach) after some discussion with Chris and Tim.

&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:97
&gt;&gt; +    DispatchedWaitingForMessage dispatchMessages(Optional&lt;MessageName&gt; waitingForMessageName = WTF::nullopt);
&gt; 
&gt; Maybe this is the &quot;expected message name&quot;?

(I&apos;ve removed this argument as well)

&gt;&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:215
&gt;&gt;&gt; +        if (waitingForMessageName &amp;&amp; messageToDispatch.message-&gt;messageName() == *waitingForMessageName)
&gt;&gt; 
&gt;&gt; The way the Optional class works, and how it defines ==, I think you can just write this:
&gt;&gt; 
&gt;&gt;     if (messageToDispatch.message-&gt;messageName() == waitingForMessageName)
&gt;&gt; 
&gt;&gt; And if we were using plain booleans instead of enumerations, we could write:
&gt;&gt; 
&gt;&gt;     dispatchedWaitingForMessage |= messageToDispatch.message-&gt;messageName() == waitingForMessageName;
&gt;&gt; 
&gt;&gt; But maybe &quot;expected&quot; instead of &quot;waiting for&quot;?
&gt;&gt; 
&gt;&gt; We can convert the boolean into the unambiguous enumeration at the return statement, and still get the important clarity at the call site. Here inside the function I think the boolean should be just fine.
&gt; 
&gt; Note that this needs to check the destinationID in addition to the MessageName to make sure they match.

Ah, so this code has been removed in the new version as well; that said, I can employ the `|=` trick in my new version.

&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:584
&gt;&gt; +            m_waitingForMessage = nullptr;
&gt; 
&gt; At this level, it is the message we are waiting for, so the name is not as obviously wrong, but &quot;m_waitingForMessage&quot; is still not a great name.

Yeah, I&apos;m always a tiny bit confused by the names around here when I venture into this code. Perhaps `m_messageToWaitFor`? (It&apos;s a minor grammar error to end with a preposition, but for the sake of clarity it may be an improvement).

I&apos;ll think I&apos;ll tackle this separately.

&gt;&gt; Source/WebKit/UIProcess/PageClient.h:339
&gt;&gt; +    virtual void runModalJavaScriptDialog(Function&lt;void()&gt;&amp;&amp; callback) { callback(); }
&gt; 
&gt; `CompletionHandler`?

👍🏻

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5709
&gt;&gt; +    pageClient().runModalJavaScriptDialog([this, protectedThis = makeRef(*this), reply = WTFMove(reply), frameInfo = WTFMove(frameInfo), frame = WTFMove(frame), message]() mutable {
&gt; 
&gt; Rather than have `protectedThis`, should we just `makeWeakPtr(*this)` here?  Or are we not doing that on the assumption that most of the time this will not be called in response to keyboard activity?

👍🏻

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5716
&gt;&gt; +    });
&gt; 
&gt; I think we can refactor this so the code is shared among the three JavaScript dialog types, instead of the tricky idiom being written out three times. There should be one function call here, with just one lambda. The code to set and then clear m_isRunningModalJavaScriptDialog should be in that single helper instead of related thrice. While it’s OK to land it like this, it’s not hard to refactor it to be more like that.

Hm…so I actually tried to factor this out into a separate helper method, but got stuck trying to make it work with templates for each of the reply types. But I suppose you&apos;re suggesting the helper function could just take a single lambda and just manage the `m_isRunningModalJavaScriptDialog` member? I&apos;ll see if I can factor it out that way in this patch before I land.

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2599
&gt;&gt; +    send(Messages::WebPageProxy::HandleAutocorrectionContext(autocorrectionContext()));
&gt; 
&gt; If ever a function needed a &quot;why&quot; comment, this is the one. We avoid a synchronous hang by proactively sending this, which is so non-obvious! But it works. And even better, we have a test that covers it.

Good point! Added a comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757152</commentid>
    <comment_count>11</comment_count>
      <attachid>427805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-05 16:11:01 -0700</bug_when>
    <thetext>Comment on attachment 427805
For EWS

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5716
&gt;&gt;&gt; +    });
&gt;&gt; 
&gt;&gt; I think we can refactor this so the code is shared among the three JavaScript dialog types, instead of the tricky idiom being written out three times. There should be one function call here, with just one lambda. The code to set and then clear m_isRunningModalJavaScriptDialog should be in that single helper instead of related thrice. While it’s OK to land it like this, it’s not hard to refactor it to be more like that.
&gt; 
&gt; Hm…so I actually tried to factor this out into a separate helper method, but got stuck trying to make it work with templates for each of the reply types. But I suppose you&apos;re suggesting the helper function could just take a single lambda and just manage the `m_isRunningModalJavaScriptDialog` member? I&apos;ll see if I can factor it out that way in this patch before I land.

Yes, that’s exactly my suggestion. There are other options too, but I think this most purely follows the &quot;capture what’s different, then call the function that does everything else” pattern. It seems that what’s different can be a function for these three cases. And since this isn’t general purpose some of the arguments could be passed to the function; doesn’t have to be all done with captures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757168</commentid>
    <comment_count>12</comment_count>
      <attachid>427818</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 16:41:56 -0700</bug_when>
    <thetext>Created attachment 427818
Address feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757173</commentid>
    <comment_count>13</comment_count>
      <attachid>427818</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 16:48:39 -0700</bug_when>
    <thetext>Comment on attachment 427818
Address feedback

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

IPC changes look good to me with a nit.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:573
&gt; +        bool foundMessageToWaitFor = false;

I would name this wasMessageToWaitForAlreadyDispatched or something similar. &quot;found&quot; is a bit unclear in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757174</commentid>
    <comment_count>14</comment_count>
      <attachid>427821</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 16:50:35 -0700</bug_when>
    <thetext>Created attachment 427821
Rename a variable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757175</commentid>
    <comment_count>15</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 16:54:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Comment on attachment 427818 [details]
&gt; Address feedback
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427818&amp;action=review
&gt; 
&gt; IPC changes look good to me with a nit.
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:573
&gt; &gt; +        bool foundMessageToWaitFor = false;
&gt; 
&gt; I would name this wasMessageToWaitForAlreadyDispatched or something similar.
&gt; &quot;found&quot; is a bit unclear in this context.

Makes sense! Renamed to `wasMessageToWaitForAlreadyDispatched`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757207</commentid>
    <comment_count>16</comment_count>
      <attachid>427821</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-05 18:18:03 -0700</bug_when>
    <thetext>Comment on attachment 427821
Rename a variable

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5703
&gt; +        runDialogCallback(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = WTFMove(weakThis)]() mutable {

We should pass *protectedThis in as one of the arguments here so the caller doesn’t have to capture weakThis. Also, we should pass frame.get() instead of passing frame as an rvalue reference since the client just needs to turn around and pass it.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5728
&gt; +        auto protectedThis = makeRefPtr(weakThis.get());
&gt; +        if (!protectedThis)
&gt; +            return;

This code isn’t needed any more, because runModalJavaScriptDialog already does this check. If it had passed us a reference to the WebPageProxy we could just use that.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5730
&gt; +        protectedThis-&gt;m_uiClient-&gt;runJavaScriptAlert(*protectedThis, message, frame.get(), WTFMove(frameInfo), [reply = WTFMove(reply), weakThis = WTFMove(weakThis), completion = WTFMove(completion)]() mutable {

No need to capture weakThis here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757212</commentid>
    <comment_count>17</comment_count>
      <attachid>427836</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 18:35:23 -0700</bug_when>
    <thetext>Created attachment 427836
More minor adjustments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757213</commentid>
    <comment_count>18</comment_count>
      <attachid>427821</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-05 18:35:46 -0700</bug_when>
    <thetext>Comment on attachment 427821
Rename a variable

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5703
&gt;&gt; +        runDialogCallback(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = WTFMove(weakThis)]() mutable {
&gt; 
&gt; We should pass *protectedThis in as one of the arguments here so the caller doesn’t have to capture weakThis. Also, we should pass frame.get() instead of passing frame as an rvalue reference since the client just needs to turn around and pass it.

👍🏻

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5728
&gt;&gt; +            return;
&gt; 
&gt; This code isn’t needed any more, because runModalJavaScriptDialog already does this check. If it had passed us a reference to the WebPageProxy we could just use that.

Good point — changed to the latter.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5730
&gt;&gt; +        protectedThis-&gt;m_uiClient-&gt;runJavaScriptAlert(*protectedThis, message, frame.get(), WTFMove(frameInfo), [reply = WTFMove(reply), weakThis = WTFMove(weakThis), completion = WTFMove(completion)]() mutable {
&gt; 
&gt; No need to capture weakThis here.

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757430</commentid>
    <comment_count>19</comment_count>
      <attachid>427836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-06 09:01:58 -0700</bug_when>
    <thetext>Comment on attachment 427836
More minor adjustments

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5725
&gt; +    runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = makeWeakPtr(*this), reply = WTFMove(reply)](WebPageProxy&amp; page, WebFrameProxy* frame, FrameInfoData&amp;&amp; frameInfo, const String&amp; message, CompletionHandler&lt;void()&gt;&amp;&amp; completion) mutable {

Still unnecessarily capturing weakThis here. Should delete that.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5748
&gt; +    runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = makeWeakPtr(*this), reply = WTFMove(reply)](WebPageProxy&amp; page, WebFrameProxy* frame, FrameInfoData&amp;&amp; frameInfo, const String&amp; message, CompletionHandler&lt;void()&gt;&amp;&amp; completion) mutable {

Ditto.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5771
&gt; +    runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = makeWeakPtr(*this), reply = WTFMove(reply), defaultValue](WebPageProxy&amp; page, WebFrameProxy* frame, FrameInfoData&amp;&amp; frameInfo, const String&amp; message, CompletionHandler&lt;void()&gt;&amp;&amp; completion) mutable {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757431</commentid>
    <comment_count>20</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-06 09:05:56 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #19)
&gt; Comment on attachment 427836 [details]
&gt; More minor adjustments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427836&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5725
&gt; &gt; +    runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = makeWeakPtr(*this), reply = WTFMove(reply)](WebPageProxy&amp; page, WebFrameProxy* frame, FrameInfoData&amp;&amp; frameInfo, const String&amp; message, CompletionHandler&lt;void()&gt;&amp;&amp; completion) mutable {
&gt; 
&gt; Still unnecessarily capturing weakThis here. Should delete that.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5748
&gt; &gt; +    runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = makeWeakPtr(*this), reply = WTFMove(reply)](WebPageProxy&amp; page, WebFrameProxy* frame, FrameInfoData&amp;&amp; frameInfo, const String&amp; message, CompletionHandler&lt;void()&gt;&amp;&amp; completion) mutable {
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5771
&gt; &gt; +    runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [weakThis = makeWeakPtr(*this), reply = WTFMove(reply), defaultValue](WebPageProxy&amp; page, WebFrameProxy* frame, FrameInfoData&amp;&amp; frameInfo, const String&amp; message, CompletionHandler&lt;void()&gt;&amp;&amp; completion) mutable {
&gt; 
&gt; Ditto.

Fixed! (I forgot that I could delete those as well after plumbing the `WebPageProxy` through completion handlers).

Thank you for the reviews!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757433</commentid>
    <comment_count>21</comment_count>
      <attachid>427890</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-06 09:09:10 -0700</bug_when>
    <thetext>Created attachment 427890
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757436</commentid>
    <comment_count>22</comment_count>
      <attachid>427836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-06 09:13:12 -0700</bug_when>
    <thetext>Comment on attachment 427836
More minor adjustments

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

&gt; Source/WebKit/Platform/IPC/Connection.cpp:574
&gt; +        bool wasMessageToWaitForAlreadyDispatched = false;
&gt;          // Handle any messages that are blocked on a response from us.

I’d reverse these two lines to make the code slightly more readable. I think the definition of the boolean fits in well with 3 lines below that set it while dispatching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757437</commentid>
    <comment_count>23</comment_count>
      <attachid>427892</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-06 09:14:39 -0700</bug_when>
    <thetext>Created attachment 427892
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757472</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-06 09:54:20 -0700</bug_when>
    <thetext>Committed r277097 (237399@main): &lt;https://commits.webkit.org/237399@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427892.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427805</attachid>
            <date>2021-05-05 14:17:40 -0700</date>
            <delta_ts>2021-05-05 15:48:27 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-225409-20210505141740.patch</filename>
            <type>text/plain</type>
            <size>26488</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhNTdkYTQ0YWFlYjVmNjRm
YjUxM2Y4ZWE2YTA5MmFlZDFlMzhkZDEuLjkzOThmODE2MDNhNTI3YjY2ZmY5OWM2NTdmNDMwNzJl
MThkYjc4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMjEtMDUtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBmb2N1
c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNpZGVyIHRoZSBzY2VuYXJp
byB3aGVyZSBhbiBpbnB1dCBmaWVsZCBoYXMgYSBmb2N1cyBldmVudCBoYW5kbGVyIHRoYXQgc2hv
d3MgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyAoZS5nLgorICAgICAgICBjb25maXJtLCBhbGVy
dCwgcHJvbXB0KS4gV2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluIHRo
aXMgc2NlbmFyaW86CisKKyAgICAgICAgKFdFQikgICBUaGUgdGV4dCBmaWVsZCBpcyBmb2N1c2Vk
LCBhbmQgc2VuZHMgV2ViUGFnZVByb3h5OjpFbGVtZW50RGlkRm9jdXMuIEEgbW9kYWwgZGlhbG9n
IGlzIHRoZW4gdHJpZ2dlcmVkIGJ5CisgICAgICAgICAgICAgICAgc2NyaXB0IGluc2lkZSB0aGUg
Zm9jdXMgZXZlbnQgaGFuZGxlciwgc2VuZGluZyBhIG1lc3NhZ2UgbGlrZSBXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICAoVUkpICAgIFRoZSBVSSBwcm9jZXNzIHJl
Y2VpdmVzIFdlYlBhZ2VQcm94eTo6RWxlbWVudERpZEZvY3VzLCBhbmQgY2FsbHMgYC1yZWxvYWRJ
bnB1dFZpZXdzYCB3aGlsZSBzaG93aW5nIHRoZQorICAgICAgICAgICAgICAgIGtleWJvYXJkLiBV
SUtpdCBtYXkgdGhlbiBjYWxsIGJhY2sgaW50byBgLXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHRXaXRoQ29tcGxldGlvbkhhbmRsZXI6YCwgd2hpY2gKKyAgICAgICAgICAgICAgICB0cmlnZ2Vy
cyBzeW5jIElQQyBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vzcy4gV2hpbGUgd2FpdGluZyB0byByZWNl
aXZlIGEgcmVzcG9uc2UgbWVzc2FnZSwgd2UgcmVjZWl2ZSBhbmQKKyAgICAgICAgICAgICAgICBk
aXNwYXRjaCBXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICBBdCB0
aGlzIHBvaW50LCB0aGUgVUkgcHJvY2VzcyBpcyBzdGlsbCB3YWl0aW5nIGZvciBhIEhhbmRsZUF1
dG9jb3JyZWN0aW9uQ29udGV4dCByZXNwb25zZSBJUEMgbWVzc2FnZSwgYnV0IHRoZQorICAgICAg
ICB3ZWIgcHJvY2VzcyBpcyBibG9ja2VkIG9uIGEgcmVzcG9uc2UgdG8gdGhlIG1vZGFsIEphdmFT
Y3JpcHQgZGlhbG9nOyBzaW5jZSBib3RoIHByb2Nlc3NlcyBhcmUgYmxvY2tlZCBvbiBlYWNoCisg
ICAgICAgIG90aGVyLCB3ZSdyZSBub3cgaW4gZGVhZGxvY2suCisKKyAgICAgICAgVG8gbWl0aWdh
dGUgdGhpcywgd2UgY2FuIHByZWVtcHRpdmVseSBzZW5kIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQg
ZGF0YSByaWdodCBiZWZvcmUgd2UncmUgYWJvdXQgdG8gc3luY2hyb25vdXNseQorICAgICAgICBi
bG9jayBpbiB0aGUgd2ViIHByb2Nlc3Mgb24gYSBtb2RhbCBkaWFsb2cuIEluIHRoZSBVSSBwcm9j
ZXNzLCB3ZSB1c2UgdGhpcyBhdXRvY29ycmVjdGlvbiBjb250ZXh0IG9iamVjdCB0bworICAgICAg
ICBpbW1lZGlhdGVseSBzdG9wIHN5bmN3YWl0aW5nIGZvciBhIEhhbmRsZUF1dG9jb3JyZWN0aW9u
Q29udGV4dCByZXNwb25zZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
VGVzdDogZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwK
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKworICAgICAgICBNYWtlIGEgc2xp
Z2h0IGFkanVzdG1lbnQgaGVyZSBzbyB0aGF0IGB3YWl0Rm9yTWVzc2FnZWAgYmFpbHMgaWYgb25l
IG9mIHRoZSBtZXNzYWdlcyB3ZSdyZSBkaXNwYXRjaGluZyB1bmRlcm5lYXRoCisgICAgICAgIGBT
eW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzYCBpcyB0aGUgbWVzc2FnZSB3ZSBoYXBw
ZW4gdG8gYmUgd2FpdGluZyBmb3IgYW55d2F5cy4gSW4gdGhpcyBjYXNlLCBpdCdzCisgICAgICAg
IG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhlIHByZWVtcHRpdmUgYFdlYlBhZ2VQcm94eTo6SGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCBtZXNzYWdlIHNlbnQgYnkgdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIHRvIHVuYmxvY2sgdGhlIFVJIHByb2Nlc3MsIHdoaWNoIGlzIHdhaXRpbmcgZm9y
IGEgYFdlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCByZXNwb25zZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnQ6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dFByb21wdCk6CisKKyAgICAgICAgV3JhcCBjYWxscyB0byBgcnVuSmF2YVNjcmlwdChBbGVydHxD
b25maXJtfFByb21wdClgIHVuZGVybmVhdGggYSBuZXcgcGFnZSBjbGllbnQgbWV0aG9kIHRoYXQg
dGFrZXMgYSBibG9jaywKKyAgICAgICAgYHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZ2AuIFNlZSBg
LVtXS0NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzpdYCBiZWxvdyBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVl
c3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisKKyAgICAg
ICAgQXZvaWQgYmxvY2tpbmcgb24gdGhlIHdlYiBwcm9jZXNzIGlmIGl0J3Mgd2FpdGluZyBvbiBh
IG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIGFueXdheXM7IGp1c3QgdXNlIHRoZSBsYXN0CisgICAg
ICAgIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgd2UgcmVjZWl2ZWQgZnJvbSB0aGUgd2ViIHByb2Nl
c3MgKHdoaWNoIHdlIGtub3cgbXVzdCd2ZSBiZWVuIHNlbnQgcmlnaHQgYmVmb3JlIHNob3dpbmcK
KyAgICAgICAgdGhlIG1vZGFsIGRpYWxvZyBhbnl3YXlzKS4KKworICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzpdKToKKworICAgICAgICBJbiB0aGUgY2Fz
ZSB3aGVyZSB3ZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVzZW50aW5nIHRoZSBrZXlib2FyZCAo
b3IgVUNCKSBvbiBpT1MgYWZ0ZXIgZm9jdXNpbmcgYW4gaW5wdXQgZmllbGQsCisgICAgICAgIGF2
b2lkIGltbWVkaWF0ZWx5IGFsbG93aW5nIHRoZSBjbGllbnQgdG8gc2hvdyBhbnkgbW9kYWwgVUkg
dW50aWwgd2UncmUgZG9uZSBtYW5hZ2luZyBrZXlib2FyZCBsb2dpYyBpbiBXZWJLaXQuCisgICAg
ICAgIFdpdGhvdXQgdGhpcyBhZGp1c3RtZW50LCB3ZSdsbCBlbmQgdXAgdHJ5aW5nIHRvIHByZXNl
bnQgdGhlIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIGluIHRoZSBtaWRkbGUgb2YgVUlLaXQncwor
ICAgICAgICBjYWxsIHRvIGAtcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0
aW9uSGFuZGxlcjpgLCB3aGljaCB0aGVuIGNhdXNlcyBVSUtpdCB0byB0aHJvdyBhbiBleGNlcHRp
b24KKyAgICAgICAgdW5kZXJuZWF0aCBrZXlib2FyZCBjb2RlLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNO
b2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnByZXBh
cmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIHBy
ZWVtcHRpdmVseSBjb21wdXRlIGFuZCBzZW5kIGBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHRgIGRh
dGEgdG8gdGhlIFVJIHByb2Nlc3Mgb24gaU9TLCBpbiB0aGUgY2FzZQorICAgICAgICB3aGVyZSB3
ZSdyZSBhYm91dCB0byBzaG93IGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgYW5kIHRoZXJlIGlz
IGFuIGVkaXRhYmxlIGZvY3VzZWQgZWxlbWVudC4gV2hpbGUgdGhlIG1vZGFsCisgICAgICAgIGRp
YWxvZyBpcyBzaG93biwgd2UnbGwgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gaW1tZWRpYXRlbHkg
cmVzcG9uZCB0byBVSUtpdCdzIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgcmVxdWVzdHMsCisgICAg
ICAgIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGJsb2NrIG9uIHJlc3BvbnNlcyBmcm9tIHRoZSB3ZWIg
cHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlw
dERpYWxvZyk6CisKIDIwMjEtMDUtMDMgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIENyYXNoIHdoZW4gdGFwcGluZyBmaWVsZHMgb24gY3ljbGUu
dHJhdmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IGQ3
ODYyZmI1YzA0ODcwNmNlNTg5M2ZiYzdmNzMyZTdjNTQ4NTUyNGYuLjJhYjE5OGYyZDdmOWE3OTY1
YjhjZDIyY2FjNWUzMDUyYTRiNDAwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCkBAIC03MSw2ICs3MSw4IEBAIHN0cnVjdCBDb25uZWN0aW9uOjpXYWl0Rm9y
TWVzc2FnZVN0YXRlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlcjsKIH07
CiAKK2VudW0gY2xhc3MgRGlzcGF0Y2hlZFdhaXRpbmdGb3JNZXNzYWdlIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKKwogY2xhc3MgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFN5bmNNZXNzYWdlU3RhdGUmIHNpbmdsZXRvbigpOwpAQCAtOTIsNyArOTQsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsKIAogICAgIC8vIERpc3BhdGNoIHBlbmRpbmcgc3lu
YyBtZXNzYWdlcy4KLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMoKTsKKyAgICBEaXNwYXRjaGVk
V2FpdGluZ0Zvck1lc3NhZ2UgZGlzcGF0Y2hNZXNzYWdlcyhPcHRpb25hbDxNZXNzYWdlTmFtZT4g
d2FpdGluZ0Zvck1lc3NhZ2VOYW1lID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIEFkZCBtYXRj
aGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVl
LgogICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VS
ZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwpAQCAt
MTkyLDcgKzE5NCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdl
cygpCitEaXNwYXRjaGVkV2FpdGluZ0Zvck1lc3NhZ2UgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VT
dGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhPcHRpb25hbDxNZXNzYWdlTmFtZT4gd2FpdGluZ0Zvck1l
c3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIwNiw4
ICsyMDgsMTYgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1l
c3NhZ2VzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHdoaWxlICghbV9tZXNzYWdlc0JlaW5n
RGlzcGF0Y2hlZC5pc0VtcHR5KCkpCi0gICAgICAgIG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQu
dGFrZUZpcnN0KCkuZGlzcGF0Y2goKTsKKyAgICBhdXRvIGRpc3BhdGNoZWRXYWl0aW5nRm9yTWVz
c2FnZSA9IERpc3BhdGNoZWRXYWl0aW5nRm9yTWVzc2FnZTo6Tm87CisKKyAgICB3aGlsZSAoIW1f
bWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gbWVzc2Fn
ZVRvRGlzcGF0Y2ggPSBtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLnRha2VGaXJzdCgpOworICAg
ICAgICBpZiAod2FpdGluZ0Zvck1lc3NhZ2VOYW1lICYmIG1lc3NhZ2VUb0Rpc3BhdGNoLm1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCkgPT0gKndhaXRpbmdGb3JNZXNzYWdlTmFtZSkKKyAgICAgICAgICAg
IGRpc3BhdGNoZWRXYWl0aW5nRm9yTWVzc2FnZSA9IERpc3BhdGNoZWRXYWl0aW5nRm9yTWVzc2Fn
ZTo6WWVzOworICAgICAgICBtZXNzYWdlVG9EaXNwYXRjaC5kaXNwYXRjaCgpOworICAgIH0KKwor
ICAgIHJldHVybiBkaXNwYXRjaGVkV2FpdGluZ0Zvck1lc3NhZ2U7CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1
bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpA
QCAtNTY3LDEwICs1NzcsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW4KICAgICAvLyBOb3cg
d2FpdCBmb3IgaXQgdG8gYmUgc2V0LgogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIEhh
bmRsZSBhbnkgbWVzc2FnZXMgdGhhdCBhcmUgYmxvY2tlZCBvbiBhIHJlc3BvbnNlIGZyb20gdXMu
Ci0gICAgICAgIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMo
KTsKLQorICAgICAgICBhdXRvIGRpc3BhdGNoZWRXYWl0aW5nRm9yTWVzc2FnZSA9IFN5bmNNZXNz
YWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMobWVzc2FnZU5hbWUpOwogICAg
ICAgICBMb2NrZXIgbG9jayB7IG1fd2FpdEZvck1lc3NhZ2VNdXRleCB9OwogCisgICAgICAgIGlm
IChkaXNwYXRjaGVkV2FpdGluZ0Zvck1lc3NhZ2UgPT0gRGlzcGF0Y2hlZFdhaXRpbmdGb3JNZXNz
YWdlOjpZZXMpIHsKKyAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UgPSBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBpZiAobV93YWl0aW5nRm9y
TWVzc2FnZS0+ZGVjb2RlcikgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gV1RGTW92ZSht
X3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1l
c3NhZ2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDcw
YzZiYjZkNjRiMjVmY2U5ZjIzMWZiY2U3MDhjMDUxNWZiNzM3ODkuLmJhOTFhNGM5YzYxNGE2Y2Nm
MzE3ZGQ5NjljYTQzZDU3YTE5ZmE0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0z
MzUsNiArMzM2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN5bnRo
ZXRpY0NsaWNrKCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWxKYXZh
U2NyaXB0RGlhbG9nKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9
CisKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihM
YXllckhvc3RpbmdDb250ZXh0SUQpIHsgfQogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI4OGY2MDgyZThmZGFlMGM4
Nzk2N2M4ZTYyMTA1ZDdiYTFhOWQ4ZTUuLmZkYjVjZTEyZjEzMDQxMjg1Zjg5NjE2ZjAwMGRjNWNj
YzQ5Mzg4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NTY5Myw3ICs1NjkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZSgpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJh
bWVJRCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKSk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGV4
aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkoKTsKQEAgLTU3MDUsMTIgKzU3MDUsMjAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYmIGYKICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0g
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAg
IGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAg
IH0KLSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQoKnRoaXMsIG1lc3NhZ2UsIGZy
YW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVwbHkpKTsKKworICAgIHBhZ2VDbGll
bnQoKS5ydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgZnJhbWVJbmZvID0gV1RGTW92ZShm
cmFtZUluZm8pLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpLCBtZXNzYWdlXSgpIG11dGFibGUgewor
ICAgICAgICBtX2lzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyA9IHRydWU7CisgICAgICAg
IG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCgqdGhpcywgbWVzc2FnZSwgZnJhbWUuZ2V0
KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGF1dG8g
c3Ryb25nVGhpcyA9IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpKQorICAgICAgICAgICAgICAg
IHN0cm9uZ1RoaXMtPm1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nID0gZmFsc2U7Cisg
ICAgICAgICAgICByZXBseSgpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJh
bWVJRCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKSk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGV4
aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkoKTsKQEAgLTU3MjMsMTIgKzU3MzEsMTkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJiYKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hv
d0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkph
dmFTY3JpcHRDb25maXJtKCp0aGlzLCBtZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8p
LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgcGFnZUNsaWVudCgpLnJ1bk1vZGFsSmF2YVNjcmlwdERp
YWxvZyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXBseSA9IFdURk1v
dmUocmVwbHkpLCBmcmFtZUluZm8gPSBXVEZNb3ZlKGZyYW1lSW5mbyksIGZyYW1lID0gV1RGTW92
ZShmcmFtZSksIG1lc3NhZ2VdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faXNSdW5uaW5nTW9kYWxK
YXZhU2NyaXB0RGlhbG9nID0gdHJ1ZTsKKyAgICAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlw
dENvbmZpcm0oKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLmdldCgpLCBXVEZNb3ZlKGZyYW1lSW5mbyks
IFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0o
Ym9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGF1dG8gc3Ryb25nVGhpcyA9
IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHN0cm9uZ1RoaXMt
Pm1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nID0gZmFsc2U7CisgICAgICAgICAgICBy
ZXBseShyZXN1bHQpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0ciht
X3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgZnJhbWUpOwogCiAgICAgZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVseSgpOwpAQCAtNTc0MSw3
ICs1NzU2LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICAgICAgICAgIGF1dG9tYXRp
b25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAg
IG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRW
YWx1ZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkpOworICAgIHBh
Z2VDbGllbnQoKS5ydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgZnJhbWVJbmZvID0gV1RG
TW92ZShmcmFtZUluZm8pLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpLCBkZWZhdWx0VmFsdWUsIG1l
c3NhZ2VdKCkgbXV0YWJsZSB7CisgICAgICAgIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlh
bG9nID0gdHJ1ZTsKKyAgICAgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21wdCgqdGhp
cywgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZS5nZXQoKSwgV1RGTW92ZShmcmFtZUluZm8p
LCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KGF1dG8mIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoYXV0byBzdHJvbmdUaGlz
ID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSkpCisgICAgICAgICAgICAgICAgc3Ryb25nVGhp
cy0+bV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2cgPSBmYWxzZTsKKyAgICAgICAgICAg
IHJlcGx5KHJlc3VsdCk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNmMjE5NjFjMmYwMTg1YzJiMDk2NzRlZDY2YzNmYTcx
YzQ5MzJiMjMuLjlhZjgwMDY3NWQzYTU4NDQyNzk1ZGUwYTM1MjNiYTlkNDIxM2JjODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTI4LDYgKzE5MjgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb2NvYVZpZXcoV0tXZWJWaWV3ICopOwogI2VuZGlmCiAKKyAg
ICBib29sIGlzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZygpIGNvbnN0IHsgcmV0dXJuIG1f
aXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTMwMDcsNiAr
MzAwOSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3Vu
dGVyIHsgMCB9OwogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2cgeyBmYWxzZSB9
OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTZkMTg1YzkwMTNkMTkwNzU1YzUzNjE5YWVjMWJi
MjQyM2IxNjEzOC4uNjVlYzUzYzdkZWI4ODkxZjgwYWE5NTA4ODUxNGM5ZWI2ZTgxOGFmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAg
LTI0NCw2ICsyNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNNZWFu
aW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgZmluYWw7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHJ1
bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spIGZpbmFs
OworCiAgICAgdm9pZCBkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKICAgICB2
b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBjNGMz
YTNjZjZkYTcwYWQzN2Y1MzdiOGVkMDEzNmQ0NmMwOTQ1MTNkLi4wZWRlMWU5NWNiYmUyZTE3YzM0
ZjNlNGJkMTVmMWI0ZTdkMjA3YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0xMDAwLDYgKzEwMDAsMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6aGFuZGxlQXN5bmNocm9ub3VzQ2FuY2VsYWJsZVNjcm9sbEV2ZW50KFVJU2Ny
b2xsVmlldyAqc2Nyb2wKIH0KICNlbmRpZgogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpydW5Nb2Rh
bEphdmFTY3JpcHREaWFsb2coRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIFtt
X2NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzpXVEZNb3ZlKGNhbGxiYWNrKV07
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAppbmRleCBhYTIxOGUzMGMyNjVjMDc5MjU4MWEzNDFlY2VmZDBmMGFh
MDU3MzE5Li5hMTMzZGU2NzA5ZWNiOTIzYjA0Y2JhYzNhZmJiMTZmZDRhNjEyNmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCkBAIC02Miw2ICs2Miw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNp
bXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL09wdGlvblNldC5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CkBAIC00MzEsNiAr
NDMyLDcgQEAgZW51bSBjbGFzcyBQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbiA6IGJvb2wgewog
ICAgIE5TSW50ZWdlciBfc3VwcHJlc3NOb25FZGl0YWJsZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlv
bkNvdW50OwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZSk+IF9kb21QYXN0ZVJlcXVlc3RIYW5kbGVyOwogICAgIEJsb2NrUHRyPHZvaWQo
VUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqKT4gX3BlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRl
eHRIYW5kbGVyOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gX3BlbmRpbmdSdW5Nb2RhbEphdmFTY3Jp
cHREaWFsb2dDYWxsYmFjazsKIAogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IF9hZGRpdGlv
bmFsQ29udGV4dEZvclN0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKIApAQCAtNjM5LDYgKzY0MSw3
IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRF
TlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChCT09MKWVuc3VyZVBvc2l0aW9uSW5mb3Jt
YXRpb25Jc1VwVG9EYXRlOihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0KXJl
cXVlc3Q7CiAKIC0gKHZvaWQpZG9BZnRlckVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0Vs
ZW1lbnQ6KGRpc3BhdGNoX2Jsb2NrX3QpYmxvY2s7CistICh2b2lkKXJ1bk1vZGFsSmF2YVNjcmlw
dERpYWxvZzooRnVuY3Rpb248dm9pZCgpPiYmKWNhbGxiYWNrOwogCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIC0gKHZvaWQpX2RpZENoYW5nZURyYWdJbnRlcmFjdGlvblBvbGljeTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IGFlMzk1YjlmZDM2ZDgzMjJhYzI1OGU5NDgyM2U2YjI5YmQwMzNjODkuLjY2
ZTQ0NTliYTE0N2Q5YzBjOTFiMmRjZDY0YTk2YzNmZjBiMDM1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtMTM0LDYgKzEzNCw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Nj
b3BlLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2Jq
Q1B0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CkBAIC00NTA3LDcgKzQ1
MDgsNyBAQCAtICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tBdXRvY29ycgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKF9kb21QYXN0ZVJlcXVlc3RIYW5kbGVyKSB7CisgICAgaWYgKF9wYWdlLT5pc1J1
bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2coKSB8fCBfZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcikg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0
b2NvcnJlY3Rpb25Db250ZXh0V2l0aFdlYkNvbnRleHQ6X2xhc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHRdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1MzUsNiArNDUzNiwxNCBAQCAtICh2
b2lkKV9oYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQ6KGNvbnN0IFdlYktpdDo6V2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0JiljbwogICAgIFtzZWxmIF9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rp
b25Db250ZXh0SGFuZGxlcjpbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25D
b250ZXh0V2l0aFdlYkNvbnRleHQ6Y29udGV4dF1dOwogfQogCistICh2b2lkKXJ1bk1vZGFsSmF2
YVNjcmlwdERpYWxvZzooRnVuY3Rpb248dm9pZCgpPiYmKWNhbGxiYWNrCit7CisgICAgaWYgKF9p
c0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZCkKKyAgICAgICAgX3BlbmRpbmdSdW5Nb2RhbEph
dmFTY3JpcHREaWFsb2dDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIGVsc2UKKyAg
ICAgICAgY2FsbGJhY2soKTsKK30KKwogLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JNYWluRnJhbWUKIHsKICAgICAvLyBSZXNldCB0aGUgZG91YmxlIHRhcCBnZXN0dXJlIHJlY29n
bml6ZXIgdG8gcHJldmVudCBhbnkgZG91YmxlIGNsaWNrIHRoYXQgaXMgaW4gdGhlIHByb2Nlc3Mg
b2YgYmVpbmcgcmVjb2duaXplZC4KQEAgLTYxNjYsNiArNjE3NSwxMSBAQCAtICh2b2lkKV9lbGVt
ZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5m
b3JtYXRpb24gdQogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzQ2hhbmdpbmdGb2N1c0ZvclNjb3Bl
IHsgX2lzQ2hhbmdpbmdGb2N1cywgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQgfTsKICAgICBTZXRG
b3JTY29wZTxCT09MPiBpc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZEZvclNjb3BlIHsgX2lz
Rm9jdXNpbmdFbGVtZW50V2l0aEtleWJvYXJkLCBbc2VsZiBfc2hvdWxkU2hvd0tleWJvYXJkRm9y
RWxlbWVudDppbmZvcm1hdGlvbl0gfTsKIAorICAgIGF1dG8gcnVuTW9kYWxKYXZhU2NyaXB0RGlh
bG9nQ2FsbGJhY2tJZk5lZWRlZCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBzdGQ6OmV4Y2hhbmdlKF9wZW5kaW5nUnVuTW9kYWxKYXZhU2NyaXB0RGlh
bG9nQ2FsbGJhY2ssIHsgfSkpCisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOworCiAg
ICAgYXV0byBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6ZXhjaGFuZ2UoX2lucHV0Vmll
d1VwZGF0ZURlZmVycmVyLCBudWxscHRyKTsKIAogICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0
ZUZvY3VzID0gX2lzQ2hhbmdpbmdGb2N1c1VzaW5nQWNjZXNzb3J5VGFiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAppbmRleCBmYzg2ZTBlOTUxZGUxNTkyNDdhN2E0OGVmZjg5ODk5NjFjODFlMTdkLi5k
OTg5YTM2YmFjM2ZkZDdhZTJlMzA3NjliYzU5YzJlN2E5NzYxYjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcApAQCAtNDU2LDYgKzQ1Niw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZh
U2NyaXB0QWxlcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGFsZXJ0VGV4dCkKIAogICAg
IC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVV
SUNsaWVudCgpLndpbGxSdW5KYXZhU2NyaXB0QWxlcnQoJm1fcGFnZSwgYWxlcnRUZXh0LCB3ZWJG
cmFtZSk7CisgICAgbV9wYWdlLnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZygpOwog
CiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKICAgICBJ
UEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENT
Y29wZTsKQEAgLTQ3Myw2ICs0NzQsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAgICAv
LyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVjdGVkQnVuZGxlVUlD
bGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oJm1fcGFnZSwgbWVzc2FnZSwgd2ViRnJh
bWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKTsKIAog
ICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAgICAgSVBD
OjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2Nv
cGU7CkBAIC00OTQsNiArNDk2LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRQcm9tcHQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGMKIAogICAgIC8v
IE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNs
aWVudCgpLndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KCZtX3BhZ2UsIG1lc3NhZ2UsIGRlZmF1bHRW
YWx1ZSwgd2ViRnJhbWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHRE
aWFsb2coKTsKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJs
ZXI7CiAgICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNo
cm9ub3VzSVBDU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggYzczNTcyMzkxM2JiMzA1YzE4ZTgxOWJlYzQwOGNmMTc3MjAyMWNkNS4uYmM1MmJk
ZWUzN2Q4ZWM0ODJhNzkwZjA4YzI5NjViZTBmMDFjMTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIGRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2
ZW50KCk7CisgICAgdm9pZCBwcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKTsKIAog
cHJpdmF0ZToKICAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjMzNyw2ICsyMzM4LDcgQEAgcHJpdmF0ZToKIGlubGlu
ZSB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtV2lsbFBlcmZvcm1FZGl0aW5nQ29tbWFuZCgpIHsgfQog
aW5saW5lIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNv
bnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSB2b2lk
IFdlYlBhZ2U6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KCkgeyB9
CitpbmxpbmUgdm9pZCBXZWJQYWdlOjpwcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2co
KSB7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTg0MDI4OTlj
YmI4NzU0OGVmMzM4NjNhMDdmZDAwZmE2MmRlZjliZS4uNWQxMjNmYTY2NmFiMGYyMjE5MGVlOGFj
MjgyZTFmNzQwYmMyZTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI1ODgsNiArMjU4OCwxNyBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGF1dG9jb3JyZWN0aW9uQ29u
dGV4dCgpKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0
RGlhbG9nKCkKK3sKKyAgICBpZiAoIW1fZm9jdXNlZEVsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghbV9mb2N1c2VkRWxlbWVudC0+aGFzRWRpdGFibGVTdHlsZSgpICYmICFpczxI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKm1fZm9jdXNlZEVsZW1lbnQpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOworfQorCiBzdGF0aWMgSFRN
TEFuY2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBkcmFnIGNvbnRyb2xs
ZXIgdGhhdCBzdXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBhbiBIVE1MQW5jaG9y
RWxlbWVudC4gV2h5IGlzIHRoaXMgZGlmZmVyZW50PwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGViNzEyNTFjYjE0NjhkOWQy
NTBmYTE0YzU4ZTFhNzhhYTUwYmFmMWUuLjFiNmZmN2RlNmMxMTA3MTUyNDlhOGM4NDZmNGJkNzBm
OGUyMjZjMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0wNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVSSBwcm9jZXNzIGhh
bmdzIHdoZW4gc2hvd2luZyBhIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIHdoaWxlIGZvY3VzaW5n
IGFuIGlucHV0IGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU0MDkKKyAgICAgICAgcmRhcjovLzc2NzkyNDA3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdGhhdCBl
eGVyY2lzZXMgdGhlIGRlYWRsb2NrLiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBmYWlsLCB0aGlzIHRl
c3Qgd2lsbCB0aW1lIG91dC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFs
LWFsZXJ0LWR1cmluZy1mb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy5odG1sOiBBZGRlZC4KKwog
MjAyMS0wNS0wMyAgUm9iZXJ0IEplbm5lciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAg
WyBtYWNPUy9pT1MgRGVidWcgXSBodHRwL3dwdC9jcnlwdG8vdW53cmFwLXJzYS1rZXktY3Jhc2gu
YW55Lmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQt
ZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTU3NTk5ZTcyOWRjMTE1MTM4
NjI1YTRjZDczYTI2ZmUzNGZlNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDExIEBACitBTEVSVDogVGhpcyBpcyBhIG1vZGFsIGFsZXJ0LgorVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFsZXJ0IHdoaWxlIGZvY3VzaW5nIGFu
IGVkaXRhYmxlIGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFwcGxpY2F0aW9uIHByb2Nlc3MgdG8g
aGFuZy4gVG8gdmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRleHQgZmllbGQgYWJvdmUsIGFuZCBj
aGVjayB0aGF0IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHByZXNlbnRlZCB3aXRoIG5vIHNpZ25p
ZmljYW50IGRlbGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGRvbmVTaG93aW5nQWxlcnQgYmVjYW1lIHRydWUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmlu
Zy1mb2N1cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MTM2YjRhZDk1ODk5NTcyZDM4ZWY1ODcwN2U2YmI2
NzE4MGFmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mv
c2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13
aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBo
dG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAw
OworfQorCitpbnB1dCB7CisgICAgZm9udC1zaXplOiAyMHB4OworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPGlucHV0IHBsYWNlaG9sZGVyPSJUYXAgdG8gc2hvdyBhbiBhbGVydCIgdHlw
ZT0idGV4dCI+PC9pbnB1dD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5zZXRTaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5
KHRydWUpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2RvbmVTaG93aW5nQWxlcnQgPSBmYWxz
ZTsKKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFsZXJ0IHdo
aWxlIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFwcGxpY2F0
aW9uIHByb2Nlc3MgdG8gaGFuZy4gVG8gdmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRleHQgZmll
bGQgYWJvdmUsIGFuZCBjaGVjayB0aGF0IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHByZXNlbnRl
ZCB3aXRoIG5vIHNpZ25pZmljYW50IGRlbGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZykuIik7CisK
KyAgICB0ZXh0RmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOworICAgIHRl
eHRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsICgpID0+IHsKKyAgICAgICAgYWxlcnQo
IlRoaXMgaXMgYSBtb2RhbCBhbGVydC4iKTsKKyAgICAgICAgZG9uZVNob3dpbmdBbGVydCA9IHRy
dWU7CisgICAgfSk7CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQodGV4dEZpZWxkKTsKKyAg
ICBzaG91bGRCZWNvbWVFcXVhbCgiZG9uZVNob3dpbmdBbGVydCIsICJ0cnVlIiwgZmluaXNoSlNU
ZXN0KTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="448533"
          type_id="1"
          status="-"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="448545"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427818</attachid>
            <date>2021-05-05 16:41:56 -0700</date>
            <delta_ts>2021-05-05 16:50:33 -0700</delta_ts>
            <desc>Address feedback</desc>
            <filename>bug-225409-20210505164155.patch</filename>
            <type>text/plain</type>
            <size>28486</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhNTdkYTQ0YWFlYjVmNjRm
YjUxM2Y4ZWE2YTA5MmFlZDFlMzhkZDEuLjIzMWZmNWQ4OTMyNTZlNzFiMTg0YzA4YmFkNTFhNDEx
ZGQ4YWRhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBmb2N1
c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNpZGVyIHRoZSBzY2VuYXJp
byB3aGVyZSBhbiBpbnB1dCBmaWVsZCBoYXMgYSBmb2N1cyBldmVudCBoYW5kbGVyIHRoYXQgc2hv
d3MgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyAoZS5nLgorICAgICAgICBjb25maXJtLCBhbGVy
dCwgcHJvbXB0KS4gV2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluIHRo
aXMgc2NlbmFyaW86CisKKyAgICAgICAgKFdFQikgICBUaGUgdGV4dCBmaWVsZCBpcyBmb2N1c2Vk
LCBhbmQgc2VuZHMgV2ViUGFnZVByb3h5OjpFbGVtZW50RGlkRm9jdXMuIEEgbW9kYWwgZGlhbG9n
IGlzIHRoZW4gdHJpZ2dlcmVkIGJ5CisgICAgICAgICAgICAgICAgc2NyaXB0IGluc2lkZSB0aGUg
Zm9jdXMgZXZlbnQgaGFuZGxlciwgc2VuZGluZyBhIG1lc3NhZ2UgbGlrZSBXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICAoVUkpICAgIFRoZSBVSSBwcm9jZXNzIHJl
Y2VpdmVzIFdlYlBhZ2VQcm94eTo6RWxlbWVudERpZEZvY3VzLCBhbmQgY2FsbHMgYC1yZWxvYWRJ
bnB1dFZpZXdzYCB3aGlsZSBzaG93aW5nIHRoZQorICAgICAgICAgICAgICAgIGtleWJvYXJkLiBV
SUtpdCBtYXkgdGhlbiBjYWxsIGJhY2sgaW50byBgLXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHRXaXRoQ29tcGxldGlvbkhhbmRsZXI6YCwgd2hpY2gKKyAgICAgICAgICAgICAgICB0cmlnZ2Vy
cyBzeW5jIElQQyBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vzcy4gV2hpbGUgd2FpdGluZyB0byByZWNl
aXZlIGEgcmVzcG9uc2UgbWVzc2FnZSwgd2UgcmVjZWl2ZSBhbmQKKyAgICAgICAgICAgICAgICBk
aXNwYXRjaCBXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICBBdCB0
aGlzIHBvaW50LCB0aGUgVUkgcHJvY2VzcyBpcyBzdGlsbCB3YWl0aW5nIGZvciBhIEhhbmRsZUF1
dG9jb3JyZWN0aW9uQ29udGV4dCByZXNwb25zZSBJUEMgbWVzc2FnZSwgYnV0IHRoZQorICAgICAg
ICB3ZWIgcHJvY2VzcyBpcyBibG9ja2VkIG9uIGEgcmVzcG9uc2UgdG8gdGhlIG1vZGFsIEphdmFT
Y3JpcHQgZGlhbG9nOyBzaW5jZSBib3RoIHByb2Nlc3NlcyBhcmUgYmxvY2tlZCBvbiBlYWNoCisg
ICAgICAgIG90aGVyLCB3ZSdyZSBub3cgaW4gZGVhZGxvY2suCisKKyAgICAgICAgVG8gbWl0aWdh
dGUgdGhpcywgd2UgY2FuIHByZWVtcHRpdmVseSBzZW5kIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQg
ZGF0YSByaWdodCBiZWZvcmUgd2UncmUgYWJvdXQgdG8gc3luY2hyb25vdXNseQorICAgICAgICBi
bG9jayBpbiB0aGUgd2ViIHByb2Nlc3Mgb24gYSBtb2RhbCBkaWFsb2cuIEluIHRoZSBVSSBwcm9j
ZXNzLCB3ZSB1c2UgdGhpcyBhdXRvY29ycmVjdGlvbiBjb250ZXh0IG9iamVjdCB0bworICAgICAg
ICBpbW1lZGlhdGVseSBzdG9wIHN5bmN3YWl0aW5nIGZvciBhIEhhbmRsZUF1dG9jb3JyZWN0aW9u
Q29udGV4dCByZXNwb25zZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
VGVzdDogZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwK
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKworICAgICAgICBNYWtlIGEgc2xp
Z2h0IGFkanVzdG1lbnQgaGVyZSBzbyB0aGF0IGB3YWl0Rm9yTWVzc2FnZWAgYmFpbHMgaWYgb25l
IG9mIHRoZSBtZXNzYWdlcyB3ZSdyZSBkaXNwYXRjaGluZyB1bmRlcm5lYXRoCisgICAgICAgIGBT
eW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzYCBpcyB0aGUgbWVzc2FnZSB3ZSBoYXBw
ZW4gdG8gYmUgd2FpdGluZyBmb3IgYW55d2F5cy4gSW4gdGhpcyBjYXNlLCBpdCdzCisgICAgICAg
IG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhlIHByZWVtcHRpdmUgYFdlYlBhZ2VQcm94eTo6SGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCBtZXNzYWdlIHNlbnQgYnkgdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIHRvIHVuYmxvY2sgdGhlIFVJIHByb2Nlc3MsIHdoaWNoIGlzIHdhaXRpbmcgZm9y
IGEgYFdlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCByZXNwb25zZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnQ6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KToKKworICAgICAgICBXcmFwIGNhbGxzIHRvIGBydW5KYXZhU2NyaXB0KEFsZXJ0
fENvbmZpcm18UHJvbXB0KWAgdW5kZXJuZWF0aCBhIG5ldyBwYWdlIGNsaWVudCBtZXRob2QgdGhh
dCB0YWtlcyBhIGJsb2NrLAorICAgICAgICBgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nYC4gU2Vl
IGAtW1dLQ29udGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOl1gIGJlbG93IGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKworICAg
ICAgICBBdm9pZCBibG9ja2luZyBvbiB0aGUgd2ViIHByb2Nlc3MgaWYgaXQncyB3YWl0aW5nIG9u
IGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgYW55d2F5czsganVzdCB1c2UgdGhlIGxhc3QKKyAg
ICAgICAgYXV0b2NvcnJlY3Rpb24gY29udGV4dCB3ZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWIgcHJv
Y2VzcyAod2hpY2ggd2Uga25vdyBtdXN0J3ZlIGJlZW4gc2VudCByaWdodCBiZWZvcmUgc2hvd2lu
ZworICAgICAgICB0aGUgbW9kYWwgZGlhbG9nIGFueXdheXMpLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOl0pOgorCisgICAgICAgIEluIHRoZSBj
YXNlIHdoZXJlIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIHByZXNlbnRpbmcgdGhlIGtleWJvYXJk
IChvciBVQ0IpIG9uIGlPUyBhZnRlciBmb2N1c2luZyBhbiBpbnB1dCBmaWVsZCwKKyAgICAgICAg
YXZvaWQgaW1tZWRpYXRlbHkgYWxsb3dpbmcgdGhlIGNsaWVudCB0byBzaG93IGFueSBtb2RhbCBV
SSB1bnRpbCB3ZSdyZSBkb25lIG1hbmFnaW5nIGtleWJvYXJkIGxvZ2ljIGluIFdlYktpdC4KKyAg
ICAgICAgV2l0aG91dCB0aGlzIGFkanVzdG1lbnQsIHdlJ2xsIGVuZCB1cCB0cnlpbmcgdG8gcHJl
c2VudCB0aGUgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgaW4gdGhlIG1pZGRsZSBvZiBVSUtpdCdz
CisgICAgICAgIGNhbGwgdG8gYC1yZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBs
ZXRpb25IYW5kbGVyOmAsIHdoaWNoIHRoZW4gY2F1c2VzIFVJS2l0IHRvIHRocm93IGFuIGV4Y2Vw
dGlvbgorICAgICAgICB1bmRlcm5lYXRoIGtleWJvYXJkIGNvZGUuCisKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91
c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJl
cGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKToKKworICAgICAgICBBZGQgbG9naWMgdG8g
cHJlZW1wdGl2ZWx5IGNvbXB1dGUgYW5kIHNlbmQgYFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dGAg
ZGF0YSB0byB0aGUgVUkgcHJvY2VzcyBvbiBpT1MsIGluIHRoZSBjYXNlCisgICAgICAgIHdoZXJl
IHdlJ3JlIGFib3V0IHRvIHNob3cgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyBhbmQgdGhlcmUg
aXMgYW4gZWRpdGFibGUgZm9jdXNlZCBlbGVtZW50LiBXaGlsZSB0aGUgbW9kYWwKKyAgICAgICAg
ZGlhbG9nIGlzIHNob3duLCB3ZSdsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBpbW1lZGlhdGVs
eSByZXNwb25kIHRvIFVJS2l0J3MgYXV0b2NvcnJlY3Rpb24gY29udGV4dCByZXF1ZXN0cywKKyAg
ICAgICAgaW5zdGVhZCBvZiB0cnlpbmcgdG8gYmxvY2sgb24gcmVzcG9uc2VzIGZyb20gdGhlIHdl
YiBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nKToKKwogMjAyMS0wNS0wMyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggd2hlbiB0YXBwaW5nIGZpZWxkcyBvbiBjeWNs
ZS50cmF2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZDc4NjJmYjVjMDQ4NzA2Y2U1ODkzZmJjN2Y3MzJlN2M1NDg1NTI0Zi4uNjg4OTM4NmZmNmNlNDBm
MjBhNDk0NDIwNzk5NzAzYmUyZGNkZDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7
CiAKICAgICAvLyBEaXNwYXRjaCBwZW5kaW5nIHN5bmMgbWVzc2FnZXMuCi0gICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VzKCk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQo
TWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAog
ICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLgogICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVj
dGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZGlzcGF0Y2hNZXNzYWdlcygpCit2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdWludDY0X3QpPiYmIHdp
bGxEaXNwYXRjaE1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMjA2LDggKzIwNiwxMiBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgd2hpbGUgKCFtX21lc3Nh
Z2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZXNzYWdlc0JlaW5nRGlz
cGF0Y2hlZC50YWtlRmlyc3QoKS5kaXNwYXRjaCgpOworICAgIHdoaWxlICghbV9tZXNzYWdlc0Jl
aW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlVG9EaXNwYXRj
aCA9IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICh3
aWxsRGlzcGF0Y2hNZXNzYWdlKQorICAgICAgICAgICAgd2lsbERpc3BhdGNoTWVzc2FnZShtZXNz
YWdlVG9EaXNwYXRjaC5tZXNzYWdlLT5tZXNzYWdlTmFtZSgpLCBtZXNzYWdlVG9EaXNwYXRjaC5t
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBtZXNzYWdlVG9EaXNwYXRjaC5kaXNw
YXRjaCgpOworICAgIH0KIH0KIAogdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpk
aXNwYXRjaE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC01NjYsMTEgKzU3MCwxOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbgogCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0IHRvIGJlIHNldC4K
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBib29sIGZvdW5kTWVzc2FnZVRvV2FpdEZvciA9
IGZhbHNlOwogICAgICAgICAvLyBIYW5kbGUgYW55IG1lc3NhZ2VzIHRoYXQgYXJlIGJsb2NrZWQg
b24gYSByZXNwb25zZSBmcm9tIHVzLgotICAgICAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0
b24oKS5kaXNwYXRjaE1lc3NhZ2VzKCk7CisgICAgICAgIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmds
ZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMoWyZdKGF1dG8gbmFtZU9mTWVzc2FnZVRvRGlzcGF0Y2gs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uT2ZNZXNzYWdlVG9EaXNwYXRjaCkgeworICAgICAgICAgICAg
Zm91bmRNZXNzYWdlVG9XYWl0Rm9yIHw9IG1lc3NhZ2VOYW1lID09IG5hbWVPZk1lc3NhZ2VUb0Rp
c3BhdGNoICYmIGRlc3RpbmF0aW9uSUQgPT0gZGVzdGluYXRpb25PZk1lc3NhZ2VUb0Rpc3BhdGNo
OworICAgICAgICB9KTsKIAogICAgICAgICBMb2NrZXIgbG9jayB7IG1fd2FpdEZvck1lc3NhZ2VN
dXRleCB9OwogCisgICAgICAgIGlmIChmb3VuZE1lc3NhZ2VUb1dhaXRGb3IpIHsKKyAgICAgICAg
ICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcikgewog
ICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gV1RGTW92ZShtX3dhaXRpbmdGb3JNZXNzYWdlLT5k
ZWNvZGVyKTsKICAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDcwYzZiYjZkNjRiMjVmY2U5ZjIzMWZi
Y2U3MDhjMDUxNWZiNzM3ODkuLmI0MWQ4NDU2MDk3ZmZjYjY5MTBkNTkzOTkzYzZmNzZjMmI5ZWRl
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMzNSw2ICszMzUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3ludGhldGljQ2xpY2soKSA9
IDA7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2co
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKCk7IH0KKwog
I2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVy
SG9zdGluZ0NvbnRleHRJRCkgeyB9CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjg4ZjYwODJlOGZkYWUwYzg3OTY3
YzhlNjIxMDVkN2JhMWE5ZDhlNS4uMzVlYjk3MzQ0MmUwZjliMTMwYWU1OWViM2UxZWI3Yjk4YTI5
NmMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xOTIs
NiArMTkyLDcgQEAKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCkBAIC01NjkxLDkgKzU2OTIsMjQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlUGFnZSgpCiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coUmVmUHRyPFdlYkZyYW1lUHJv
eHk+JiYgZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBmcmFt
ZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPiYmIHJ1bkRpYWxvZ0NhbGxiYWNrKQoreworICAgIHBh
Z2VDbGllbnQoKS5ydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBmcmFtZUluZm8gPSBXVEZNb3ZlKGZyYW1lSW5mbyksIGZyYW1lID0gV1RGTW92
ZShmcmFtZSksIG1lc3NhZ2UsIHJ1bkRpYWxvZ0NhbGxiYWNrID0gV1RGTW92ZShydW5EaWFsb2dD
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIod2Vha1RoaXMuZ2V0KCkpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9pc1J1bm5pbmdNb2Rh
bEphdmFTY3JpcHREaWFsb2cgPSB0cnVlOworICAgICAgICBydW5EaWFsb2dDYWxsYmFjayhXVEZN
b3ZlKGZyYW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgpKSkKKyAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX2lzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyA9IGZhbHNlOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRB
bGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBhdXRvIGZyYW1lID0gbWFr
ZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVseSgpOwpA
QCAtNTcwNSwxMiArNTcyMSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZgogICAgICAgICBp
ZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRv
bWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93
SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRBbGVydCgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RG
TW92ZShyZXBseSkpOworCisgICAgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFdURk1vdmUoZnJh
bWUpLCBXVEZNb3ZlKGZyYW1lSW5mbyksIG1lc3NhZ2UsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYg
ZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pIG11dGFibGUgeworICAgICAg
ICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCgqcHJvdGVjdGVkVGhp
cywgbWVzc2FnZSwgZnJhbWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RG
TW92ZShyZXBseSksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkoKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCkpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAg
ICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC01NzIzLDEyICs1NzQ5LDIxIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2ls
bFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3VpQ2xpZW50LT5y
dW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgV1RGTW92ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhXVEZN
b3ZlKGZyYW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJlZlB0cjxXZWJGcmFtZVBy
b3h5PiYmIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7
CisgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqcHJv
dGVjdGVkVGhpcywgbWVzc2FnZSwgZnJhbWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgW3Jl
cGx5ID0gV1RGTW92ZShyZXBseSksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICByZXBseShyZXN1bHQpOworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAg
ICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgZXhp
dEZ1bGxzY3JlZW5JbW1lZGlhdGVseSgpOwpAQCAtNTc0MSw3ICs1Nzc2LDE2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0ph
dmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRQcm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxv
ZyhXVEZNb3ZlKGZyYW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIGRlZmF1bHRWYWx1
ZV0oUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb24pIG11dGFibGUgeworICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fdWlDbGllbnQtPnJ1bkph
dmFTY3JpcHRQcm9tcHQoKnByb3RlY3RlZFRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJh
bWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIHdl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pXShhdXRvJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkocmVzdWx0KTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2YyMTk2MWMyZjAxODVjMmIwOTY3
NGVkNjZjM2ZhNzFjNDkzMmIyMy4uZjlhNmNjMzdmNGFkOTIyOTk1Y2VjMGQyNjMwYTNlMGY3Yzk0
NWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5MjgsNiAr
MTkyOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvY29hVmlldyhXS1dlYlZpZXcgKik7CiAj
ZW5kaWYKIAorICAgIGJvb2wgaXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2c7IH0KKwogcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpA
QCAtMjQ3Miw2ICsyNDc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkVXBkYXRlRWRpdG9y
U3RhdGUoY29uc3QgRWRpdG9yU3RhdGUmIG9sZEVkaXRvclN0YXRlLCBjb25zdCBFZGl0b3JTdGF0
ZSYgbmV3RWRpdG9yU3RhdGUpOwogCisgICAgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2co
UmVmUHRyPFdlYkZyYW1lUHJveHk+JiYsIEZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmLCBG
cmFtZUluZm9EYXRhJiYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik+JiYpOworCiAgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2Vha1B0cjxQYWdlQ2xpZW50PiBt
X3BhZ2VDbGllbnQ7CkBAIC0zMDA3LDYgKzMwMTEsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBt
X3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAogICAgIGJvb2wgbV9sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSdW5uaW5nTW9kYWxK
YXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2ZDE4
NWM5MDEzZDE5MDc1NWM1MzYxOWFlYzFiYjI0MjNiMTYxMzguLjNmYmUxYjE3ZmY2NjA0NDllOTkz
ZWY3ZThhZmMwYmEwMDI0ZmQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yNDQsNiArMjQ0LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygp
IG92ZXJyaWRlOwogCisgICAgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKwogICAgIHZvaWQgZGlkQ2hhbmdl
QmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggYzRjM2EzY2Y2ZGE3MGFkMzdmNTM3YjhlZDAx
MzZkNDZjMDk0NTEzZC4uNDBiNzYyMzYzOWZmYWQ0MWI0NDI0NjhlYjJlMTgxYWEzNGYwMTY1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQpAQCAtMTAwMCw2ICsxMDAwLDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUFzeW5j
aHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKnNjcm9sCiB9CiAjZW5k
aWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBbbV9jb250ZW50VmlldyBy
dW5Nb2RhbEphdmFTY3JpcHREaWFsb2c6V1RGTW92ZShjYWxsYmFjayldOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKaW5kZXggYWEyMThlMzBjMjY1YzA3OTI1ODFhMzQxZWNlZmQwZjBhYTA1NzMxOS4uODg2YWU3
NWU2N2I1NmFlYjM4Mzc4NGY1OTZjOWQ4ZjcyOTEyNTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNjIs
NiArNjIsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvRnVu
Y3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25TZXQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgpAQCAtNDMxLDYgKzQzMiw3IEBAIGVudW0g
Y2xhc3MgUHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24gOiBib29sIHsKICAgICBOU0ludGVnZXIg
X3N1cHByZXNzTm9uRWRpdGFibGVTaW5nbGVUYXBUZXh0SW50ZXJhY3Rpb25Db3VudDsKICAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiBf
ZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcjsKICAgICBCbG9ja1B0cjx2b2lkKFVJV0tBdXRvY29ycmVj
dGlvbkNvbnRleHQgKik+IF9wZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IF9wZW5kaW5nUnVuTW9kYWxKYXZhU2NyaXB0RGlh
bG9nQ2FsbGJhY2s7CiAKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBfYWRkaXRpb25hbENv
bnRleHRGb3JTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2U7CiAKQEAgLTYzOSw2ICs2NDEsNyBAQCBG
T1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklF
V19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAoQk9PTCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9u
SXNVcFRvRGF0ZTooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0
OwogCiAtICh2b2lkKWRvQWZ0ZXJFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50
OihkaXNwYXRjaF9ibG9ja190KWJsb2NrOworLSAodm9pZClydW5Nb2RhbEphdmFTY3JpcHREaWFs
b2c6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljYWxsYmFjazsKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnSW50ZXJhY3Rpb25Qb2xpY3k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCBhZTM5NWI5ZmQzNmQ4MzIyYWMyNThlOTQ4MjNlNmIyOWJkMDMzYzg5
Li43ZjY1OWI1OTRkNTY0MWQ4OTliYmFiNGJiZGY2OTMwMjY0NmI4NDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTEzNCw2ICsxMzQsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgpAQCAtNDUwNyw3
ICs0NTA4LDcgQEAgLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2NvcnIKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChfZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcikgeworICAgIGlmIChfcGFnZS0+
aXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCkgfHwgX2RvbVBhc3RlUmVxdWVzdEhhbmRs
ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0
IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhXZWJDb250ZXh0Ol9sYXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0XSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NTM1LDYgKzQ1MzYsMTQgQEAg
LSAodm9pZClfaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Oihjb25zdCBXZWJLaXQ6OldlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dCYpY28KICAgICBbc2VsZiBfaW52b2tlUGVuZGluZ0F1dG9jb3Jy
ZWN0aW9uQ29udGV4dEhhbmRsZXI6W1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0
aW9uQ29udGV4dFdpdGhXZWJDb250ZXh0OmNvbnRleHRdXTsKIH0KIAorLSAodm9pZClydW5Nb2Rh
bEphdmFTY3JpcHREaWFsb2c6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljYWxsYmFjawor
eworICAgIGlmIChfaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmQpCisgICAgICAgIF9wZW5k
aW5nUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsK
KyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrKCk7Cit9CisKIC0gKHZvaWQpX2RpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lCiB7CiAgICAgLy8gUmVzZXQgdGhlIGRvdWJsZSB0YXAg
Z2VzdHVyZSByZWNvZ25pemVyIHRvIHByZXZlbnQgYW55IGRvdWJsZSBjbGljayB0aGF0IGlzIGlu
IHRoZSBwcm9jZXNzIG9mIGJlaW5nIHJlY29nbml6ZWQuCkBAIC02MTY2LDYgKzYxNzUsMTEgQEAg
LSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0NoYW5naW5n
Rm9jdXNGb3JTY29wZSB7IF9pc0NoYW5naW5nRm9jdXMsIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50
IH07CiAgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmRG
b3JTY29wZSB7IF9pc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZCwgW3NlbGYgX3Nob3VsZFNo
b3dLZXlib2FyZEZvckVsZW1lbnQ6aW5mb3JtYXRpb25dIH07CiAKKyAgICBhdXRvIHJ1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZ0NhbGxiYWNrSWZOZWVkZWQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Cisg
ICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShfcGVuZGluZ1J1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZ0NhbGxiYWNrLCB7IH0pKQorICAgICAgICAgICAgY2FsbGJhY2soKTsK
KyAgICB9KTsKKwogICAgIGF1dG8gaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6OmV4Y2hh
bmdlKF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciwgbnVsbHB0cik7CiAKICAgICBfZGlkQWNjZXNz
b3J5VGFiSW5pdGlhdGVGb2N1cyA9IF9pc0NoYW5naW5nRm9jdXNVc2luZ0FjY2Vzc29yeVRhYjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZmM4NmUwZTk1MWRlMTU5MjQ3YTdhNDhlZmY4OTg5
OTYxYzgxZTE3ZC4uZDk4OWEzNmJhYzNmZGQ3YWUyZTMwNzY5YmM1OWMyZTdhOTc2MWI0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQ1Niw2ICs0NTYsNyBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBhbGVy
dFRleHQpCiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmlu
amVjdGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KCZtX3BhZ2UsIGFs
ZXJ0VGV4dCwgd2ViRnJhbWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3Jp
cHREaWFsb2coKTsKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlz
YWJsZXI7CiAgICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5
bmNocm9ub3VzSVBDU2NvcGU7CkBAIC00NzMsNiArNDc0LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGll
bnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1fcGFnZS5pbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKCZtX3BhZ2UsIG1l
c3NhZ2UsIHdlYkZyYW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0
RGlhbG9nKCk7CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2Fi
bGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5j
aHJvbm91c0lQQ1Njb3BlOwpAQCAtNDk0LDYgKzQ5Niw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50
OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjCiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVj
dGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdFByb21wdCgmbV9wYWdlLCBtZXNz
YWdlLCBkZWZhdWx0VmFsdWUsIHdlYkZyYW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKCk7CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0Rl
dGVjdGlvbkRpc2FibGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1
bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3MzU3MjM5MTNiYjMwNWMxOGU4MTliZWM0MDhjZjE3NzIw
MjFjZDUuLmJjNTJiZGVlMzdkOGVjNDgyYTc5MGYwOGMyOTY1YmUwZjAxYzExOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDYsNiArMTQ0Niw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURv
d25Pck1vdXNlVXBFdmVudCgpOworICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0
RGlhbG9nKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTIzMzcsNiArMjMzOCw3IEBAIHBy
aXZhdGU6CiBpbmxpbmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0Nv
bW1hbmQoKSB7IH0KIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JF
ZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiBpbmxpbmUgdm9pZCBXZWJQYWdlOjpkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNl
VXBFdmVudCgpIHsgfQoraW5saW5lIHZvaWQgV2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZh
U2NyaXB0RGlhbG9nKCkgeyB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IDU4NDAyODk5Y2JiODc1NDhlZjMzODYzYTA3ZmQwMGZhNjJkZWY5YmUuLmM1YTkzNjcxMWI3
YjI2MDhjODdlYjhmZjY3NzM0Y2E4N2RkMzk0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNTg4LDYgKzI1ODgsMjEg
QEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChhdXRv
Y29ycmVjdGlvbkNvbnRleHQoKSkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnByZXBhcmVUb1J1bk1v
ZGFsSmF2YVNjcmlwdERpYWxvZygpCit7CisgICAgaWYgKCFtX2ZvY3VzZWRFbGVtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fZm9jdXNlZEVsZW1lbnQtPmhhc0VkaXRhYmxlU3R5
bGUoKSAmJiAhaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCptX2ZvY3VzZWRFbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2hlbiBhIG1vZGFsIGRpYWxvZyBpcyBwcmVz
ZW50ZWQgd2hpbGUgYW4gZWRpdGFibGUgZWxlbWVudCBpcyBmb2N1c2VkLCBVSUtpdCB3aWxsIGF0
dGVtcHQgdG8gcmVxdWVzdCBhCisgICAgLy8gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LCB3aGlj
aCB0cmlnZ2VycyBzeW5jaHJvbm91cyBJUEMgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MsIHJlc3Vs
dGluZyBpbiBkZWFkbG9jay4KKyAgICAvLyBUbyBhdm9pZCB0aGlzIGRlYWRsb2NrLCB3ZSBwcmVl
bXB0aXZlbHkgY29tcHV0ZSBhbmQgc2VuZCBhdXRvY29ycmVjdGlvbiBjb250ZXh0IGRhdGEgdG8g
dGhlIFVJIHByb2Nlc3MsCisgICAgLy8gc3VjaCB0aGF0IHRoZSBVSSBwcm9jZXNzIGNhbiBpbW1l
ZGlhdGVseSByZXNwb25kIHRvIFVJS2l0IHdpdGhvdXQgc3luY2hyb25vdXMgSVBDIHRvIHRoZSB3
ZWIgcHJvY2Vzcy4KKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9j
b3JyZWN0aW9uQ29udGV4dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOworfQorCiBzdGF0aWMg
SFRNTEFuY2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogewogICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBkcmFnIGNvbnRy
b2xsZXIgdGhhdCBzdXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBhbiBIVE1MQW5j
aG9yRWxlbWVudC4gV2h5IGlzIHRoaXMgZGlmZmVyZW50PwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGViNzEyNTFjYjE0Njhk
OWQyNTBmYTE0YzU4ZTFhNzhhYTUwYmFmMWUuLjFiNmZmN2RlNmMxMTA3MTUyNDlhOGM4NDZmNGJk
NzBmOGUyMjZjMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0wNSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVSSBwcm9jZXNz
IGhhbmdzIHdoZW4gc2hvd2luZyBhIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIHdoaWxlIGZvY3Vz
aW5nIGFuIGlucHV0IGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU0MDkKKyAgICAgICAgcmRhcjovLzc2NzkyNDA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdGhh
dCBleGVyY2lzZXMgdGhlIGRlYWRsb2NrLiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBmYWlsLCB0aGlz
IHRlc3Qgd2lsbCB0aW1lIG91dC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9zaG93LW1v
ZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy5odG1sOiBBZGRlZC4K
KwogMjAyMS0wNS0wMyAgUm9iZXJ0IEplbm5lciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgWyBtYWNPUy9pT1MgRGVidWcgXSBodHRwL3dwdC9jcnlwdG8vdW53cmFwLXJzYS1rZXktY3Jh
c2guYW55Lmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxl
cnQtZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTU3NTk5ZTcyOWRjMTE1
MTM4NjI1YTRjZDczYTI2ZmUzNGZlNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDExIEBACitBTEVSVDogVGhpcyBpcyBhIG1vZGFsIGFsZXJ0LgorVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFsZXJ0IHdoaWxlIGZvY3VzaW5n
IGFuIGVkaXRhYmxlIGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFwcGxpY2F0aW9uIHByb2Nlc3Mg
dG8gaGFuZy4gVG8gdmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRleHQgZmllbGQgYWJvdmUsIGFu
ZCBjaGVjayB0aGF0IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHByZXNlbnRlZCB3aXRoIG5vIHNp
Z25pZmljYW50IGRlbGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZykuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRvbmVTaG93aW5nQWxlcnQgYmVjYW1lIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9j
dXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1
cmluZy1mb2N1cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MTM2YjRhZDk1ODk5NTcyZDM4ZWY1ODcwN2U2
YmI2NzE4MGFmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9p
b3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8
IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdw
b3J0PXRydWUgaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5
LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2lu
OiAwOworfQorCitpbnB1dCB7CisgICAgZm9udC1zaXplOiAyMHB4OworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGlucHV0IHBsYWNlaG9sZGVyPSJUYXAgdG8gc2hvdyBhbiBhbGVydCIg
dHlwZT0idGV4dCI+PC9pbnB1dD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5zZXRTaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91
c2x5KHRydWUpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2RvbmVTaG93aW5nQWxlcnQgPSBm
YWxzZTsKKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFsZXJ0
IHdoaWxlIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFwcGxp
Y2F0aW9uIHByb2Nlc3MgdG8gaGFuZy4gVG8gdmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRleHQg
ZmllbGQgYWJvdmUsIGFuZCBjaGVjayB0aGF0IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHByZXNl
bnRlZCB3aXRoIG5vIHNpZ25pZmljYW50IGRlbGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZykuIik7
CisKKyAgICB0ZXh0RmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOworICAg
IHRleHRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsICgpID0+IHsKKyAgICAgICAgYWxl
cnQoIlRoaXMgaXMgYSBtb2RhbCBhbGVydC4iKTsKKyAgICAgICAgZG9uZVNob3dpbmdBbGVydCA9
IHRydWU7CisgICAgfSk7CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQodGV4dEZpZWxkKTsK
KyAgICBzaG91bGRCZWNvbWVFcXVhbCgiZG9uZVNob3dpbmdBbGVydCIsICJ0cnVlIiwgZmluaXNo
SlNUZXN0KTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427821</attachid>
            <date>2021-05-05 16:50:35 -0700</date>
            <delta_ts>2021-05-05 18:35:21 -0700</delta_ts>
            <desc>Rename a variable</desc>
            <filename>bug-225409-20210505165034.patch</filename>
            <type>text/plain</type>
            <size>28531</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhNTdkYTQ0YWFlYjVmNjRm
YjUxM2Y4ZWE2YTA5MmFlZDFlMzhkZDEuLjIzMWZmNWQ4OTMyNTZlNzFiMTg0YzA4YmFkNTFhNDEx
ZGQ4YWRhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBmb2N1
c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNpZGVyIHRoZSBzY2VuYXJp
byB3aGVyZSBhbiBpbnB1dCBmaWVsZCBoYXMgYSBmb2N1cyBldmVudCBoYW5kbGVyIHRoYXQgc2hv
d3MgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyAoZS5nLgorICAgICAgICBjb25maXJtLCBhbGVy
dCwgcHJvbXB0KS4gV2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluIHRo
aXMgc2NlbmFyaW86CisKKyAgICAgICAgKFdFQikgICBUaGUgdGV4dCBmaWVsZCBpcyBmb2N1c2Vk
LCBhbmQgc2VuZHMgV2ViUGFnZVByb3h5OjpFbGVtZW50RGlkRm9jdXMuIEEgbW9kYWwgZGlhbG9n
IGlzIHRoZW4gdHJpZ2dlcmVkIGJ5CisgICAgICAgICAgICAgICAgc2NyaXB0IGluc2lkZSB0aGUg
Zm9jdXMgZXZlbnQgaGFuZGxlciwgc2VuZGluZyBhIG1lc3NhZ2UgbGlrZSBXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICAoVUkpICAgIFRoZSBVSSBwcm9jZXNzIHJl
Y2VpdmVzIFdlYlBhZ2VQcm94eTo6RWxlbWVudERpZEZvY3VzLCBhbmQgY2FsbHMgYC1yZWxvYWRJ
bnB1dFZpZXdzYCB3aGlsZSBzaG93aW5nIHRoZQorICAgICAgICAgICAgICAgIGtleWJvYXJkLiBV
SUtpdCBtYXkgdGhlbiBjYWxsIGJhY2sgaW50byBgLXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHRXaXRoQ29tcGxldGlvbkhhbmRsZXI6YCwgd2hpY2gKKyAgICAgICAgICAgICAgICB0cmlnZ2Vy
cyBzeW5jIElQQyBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vzcy4gV2hpbGUgd2FpdGluZyB0byByZWNl
aXZlIGEgcmVzcG9uc2UgbWVzc2FnZSwgd2UgcmVjZWl2ZSBhbmQKKyAgICAgICAgICAgICAgICBk
aXNwYXRjaCBXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICBBdCB0
aGlzIHBvaW50LCB0aGUgVUkgcHJvY2VzcyBpcyBzdGlsbCB3YWl0aW5nIGZvciBhIEhhbmRsZUF1
dG9jb3JyZWN0aW9uQ29udGV4dCByZXNwb25zZSBJUEMgbWVzc2FnZSwgYnV0IHRoZQorICAgICAg
ICB3ZWIgcHJvY2VzcyBpcyBibG9ja2VkIG9uIGEgcmVzcG9uc2UgdG8gdGhlIG1vZGFsIEphdmFT
Y3JpcHQgZGlhbG9nOyBzaW5jZSBib3RoIHByb2Nlc3NlcyBhcmUgYmxvY2tlZCBvbiBlYWNoCisg
ICAgICAgIG90aGVyLCB3ZSdyZSBub3cgaW4gZGVhZGxvY2suCisKKyAgICAgICAgVG8gbWl0aWdh
dGUgdGhpcywgd2UgY2FuIHByZWVtcHRpdmVseSBzZW5kIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQg
ZGF0YSByaWdodCBiZWZvcmUgd2UncmUgYWJvdXQgdG8gc3luY2hyb25vdXNseQorICAgICAgICBi
bG9jayBpbiB0aGUgd2ViIHByb2Nlc3Mgb24gYSBtb2RhbCBkaWFsb2cuIEluIHRoZSBVSSBwcm9j
ZXNzLCB3ZSB1c2UgdGhpcyBhdXRvY29ycmVjdGlvbiBjb250ZXh0IG9iamVjdCB0bworICAgICAg
ICBpbW1lZGlhdGVseSBzdG9wIHN5bmN3YWl0aW5nIGZvciBhIEhhbmRsZUF1dG9jb3JyZWN0aW9u
Q29udGV4dCByZXNwb25zZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
VGVzdDogZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwK
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKworICAgICAgICBNYWtlIGEgc2xp
Z2h0IGFkanVzdG1lbnQgaGVyZSBzbyB0aGF0IGB3YWl0Rm9yTWVzc2FnZWAgYmFpbHMgaWYgb25l
IG9mIHRoZSBtZXNzYWdlcyB3ZSdyZSBkaXNwYXRjaGluZyB1bmRlcm5lYXRoCisgICAgICAgIGBT
eW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzYCBpcyB0aGUgbWVzc2FnZSB3ZSBoYXBw
ZW4gdG8gYmUgd2FpdGluZyBmb3IgYW55d2F5cy4gSW4gdGhpcyBjYXNlLCBpdCdzCisgICAgICAg
IG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhlIHByZWVtcHRpdmUgYFdlYlBhZ2VQcm94eTo6SGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCBtZXNzYWdlIHNlbnQgYnkgdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIHRvIHVuYmxvY2sgdGhlIFVJIHByb2Nlc3MsIHdoaWNoIGlzIHdhaXRpbmcgZm9y
IGEgYFdlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCByZXNwb25zZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnQ6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KToKKworICAgICAgICBXcmFwIGNhbGxzIHRvIGBydW5KYXZhU2NyaXB0KEFsZXJ0
fENvbmZpcm18UHJvbXB0KWAgdW5kZXJuZWF0aCBhIG5ldyBwYWdlIGNsaWVudCBtZXRob2QgdGhh
dCB0YWtlcyBhIGJsb2NrLAorICAgICAgICBgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nYC4gU2Vl
IGAtW1dLQ29udGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOl1gIGJlbG93IGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKworICAg
ICAgICBBdm9pZCBibG9ja2luZyBvbiB0aGUgd2ViIHByb2Nlc3MgaWYgaXQncyB3YWl0aW5nIG9u
IGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgYW55d2F5czsganVzdCB1c2UgdGhlIGxhc3QKKyAg
ICAgICAgYXV0b2NvcnJlY3Rpb24gY29udGV4dCB3ZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWIgcHJv
Y2VzcyAod2hpY2ggd2Uga25vdyBtdXN0J3ZlIGJlZW4gc2VudCByaWdodCBiZWZvcmUgc2hvd2lu
ZworICAgICAgICB0aGUgbW9kYWwgZGlhbG9nIGFueXdheXMpLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOl0pOgorCisgICAgICAgIEluIHRoZSBj
YXNlIHdoZXJlIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIHByZXNlbnRpbmcgdGhlIGtleWJvYXJk
IChvciBVQ0IpIG9uIGlPUyBhZnRlciBmb2N1c2luZyBhbiBpbnB1dCBmaWVsZCwKKyAgICAgICAg
YXZvaWQgaW1tZWRpYXRlbHkgYWxsb3dpbmcgdGhlIGNsaWVudCB0byBzaG93IGFueSBtb2RhbCBV
SSB1bnRpbCB3ZSdyZSBkb25lIG1hbmFnaW5nIGtleWJvYXJkIGxvZ2ljIGluIFdlYktpdC4KKyAg
ICAgICAgV2l0aG91dCB0aGlzIGFkanVzdG1lbnQsIHdlJ2xsIGVuZCB1cCB0cnlpbmcgdG8gcHJl
c2VudCB0aGUgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgaW4gdGhlIG1pZGRsZSBvZiBVSUtpdCdz
CisgICAgICAgIGNhbGwgdG8gYC1yZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBs
ZXRpb25IYW5kbGVyOmAsIHdoaWNoIHRoZW4gY2F1c2VzIFVJS2l0IHRvIHRocm93IGFuIGV4Y2Vw
dGlvbgorICAgICAgICB1bmRlcm5lYXRoIGtleWJvYXJkIGNvZGUuCisKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91
c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJl
cGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKToKKworICAgICAgICBBZGQgbG9naWMgdG8g
cHJlZW1wdGl2ZWx5IGNvbXB1dGUgYW5kIHNlbmQgYFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dGAg
ZGF0YSB0byB0aGUgVUkgcHJvY2VzcyBvbiBpT1MsIGluIHRoZSBjYXNlCisgICAgICAgIHdoZXJl
IHdlJ3JlIGFib3V0IHRvIHNob3cgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyBhbmQgdGhlcmUg
aXMgYW4gZWRpdGFibGUgZm9jdXNlZCBlbGVtZW50LiBXaGlsZSB0aGUgbW9kYWwKKyAgICAgICAg
ZGlhbG9nIGlzIHNob3duLCB3ZSdsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBpbW1lZGlhdGVs
eSByZXNwb25kIHRvIFVJS2l0J3MgYXV0b2NvcnJlY3Rpb24gY29udGV4dCByZXF1ZXN0cywKKyAg
ICAgICAgaW5zdGVhZCBvZiB0cnlpbmcgdG8gYmxvY2sgb24gcmVzcG9uc2VzIGZyb20gdGhlIHdl
YiBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nKToKKwogMjAyMS0wNS0wMyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggd2hlbiB0YXBwaW5nIGZpZWxkcyBvbiBjeWNs
ZS50cmF2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZDc4NjJmYjVjMDQ4NzA2Y2U1ODkzZmJjN2Y3MzJlN2M1NDg1NTI0Zi4uNDA3YWZiYjFhY2M0YzUx
ZGUwZmEwYjI0YzMwNGM3OTM1OGE5ODExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7
CiAKICAgICAvLyBEaXNwYXRjaCBwZW5kaW5nIHN5bmMgbWVzc2FnZXMuCi0gICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VzKCk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQo
TWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAog
ICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLgogICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVj
dGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZGlzcGF0Y2hNZXNzYWdlcygpCit2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdWludDY0X3QpPiYmIHdp
bGxEaXNwYXRjaE1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMjA2LDggKzIwNiwxMiBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgd2hpbGUgKCFtX21lc3Nh
Z2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZXNzYWdlc0JlaW5nRGlz
cGF0Y2hlZC50YWtlRmlyc3QoKS5kaXNwYXRjaCgpOworICAgIHdoaWxlICghbV9tZXNzYWdlc0Jl
aW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlVG9EaXNwYXRj
aCA9IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICh3
aWxsRGlzcGF0Y2hNZXNzYWdlKQorICAgICAgICAgICAgd2lsbERpc3BhdGNoTWVzc2FnZShtZXNz
YWdlVG9EaXNwYXRjaC5tZXNzYWdlLT5tZXNzYWdlTmFtZSgpLCBtZXNzYWdlVG9EaXNwYXRjaC5t
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBtZXNzYWdlVG9EaXNwYXRjaC5kaXNw
YXRjaCgpOworICAgIH0KIH0KIAogdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpk
aXNwYXRjaE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC01NjYsMTEgKzU3MCwxOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbgogCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0IHRvIGJlIHNldC4K
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBib29sIHdhc01lc3NhZ2VUb1dhaXRGb3JBbHJl
YWR5RGlzcGF0Y2hlZCA9IGZhbHNlOwogICAgICAgICAvLyBIYW5kbGUgYW55IG1lc3NhZ2VzIHRo
YXQgYXJlIGJsb2NrZWQgb24gYSByZXNwb25zZSBmcm9tIHVzLgotICAgICAgICBTeW5jTWVzc2Fn
ZVN0YXRlOjpzaW5nbGV0b24oKS5kaXNwYXRjaE1lc3NhZ2VzKCk7CisgICAgICAgIFN5bmNNZXNz
YWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMoWyZdKGF1dG8gbmFtZU9mTWVz
c2FnZVRvRGlzcGF0Y2gsIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2ZNZXNzYWdlVG9EaXNwYXRjaCkg
eworICAgICAgICAgICAgd2FzTWVzc2FnZVRvV2FpdEZvckFscmVhZHlEaXNwYXRjaGVkIHw9IG1l
c3NhZ2VOYW1lID09IG5hbWVPZk1lc3NhZ2VUb0Rpc3BhdGNoICYmIGRlc3RpbmF0aW9uSUQgPT0g
ZGVzdGluYXRpb25PZk1lc3NhZ2VUb0Rpc3BhdGNoOworICAgICAgICB9KTsKIAogICAgICAgICBM
b2NrZXIgbG9jayB7IG1fd2FpdEZvck1lc3NhZ2VNdXRleCB9OwogCisgICAgICAgIGlmICh3YXNN
ZXNzYWdlVG9XYWl0Rm9yQWxyZWFkeURpc3BhdGNoZWQpIHsKKyAgICAgICAgICAgIG1fd2FpdGlu
Z0Zvck1lc3NhZ2UgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgewogICAgICAgICAgICAg
YXV0byBkZWNvZGVyID0gV1RGTW92ZShtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAg
ICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IDcwYzZiYjZkNjRiMjVmY2U5ZjIzMWZiY2U3MDhjMDUxNWZi
NzM3ODkuLmI0MWQ4NDU2MDk3ZmZjYjY5MTBkNTkzOTkzYzZmNzZjMmI5ZWRlMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMzNSw2ICszMzUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3ludGhldGljQ2xpY2soKSA9IDA7CiAjZW5kaWYK
IAorICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKCk7IH0KKwogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVDb250
ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRl
eHRJRCkgeyB9CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjg4ZjYwODJlOGZkYWUwYzg3OTY3YzhlNjIxMDVkN2Jh
MWE5ZDhlNS4uMzVlYjk3MzQ0MmUwZjliMTMwYWU1OWViM2UxZWI3Yjk4YTI5NmMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xOTIsNiArMTkyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgogCkBAIC01NjkxLDkgKzU2OTIsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFn
ZSgpCiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgZnJhbWUs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBmcmFtZSwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpPiYmIHJ1bkRpYWxvZ0NhbGxiYWNrKQoreworICAgIHBhZ2VDbGllbnQoKS5y
dW5Nb2RhbEphdmFTY3JpcHREaWFsb2coW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBm
cmFtZUluZm8gPSBXVEZNb3ZlKGZyYW1lSW5mbyksIGZyYW1lID0gV1RGTW92ZShmcmFtZSksIG1l
c3NhZ2UsIHJ1bkRpYWxvZ0NhbGxiYWNrID0gV1RGTW92ZShydW5EaWFsb2dDYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1Ro
aXMuZ2V0KCkpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHRE
aWFsb2cgPSB0cnVlOworICAgICAgICBydW5EaWFsb2dDYWxsYmFjayhXVEZNb3ZlKGZyYW1lKSwg
V1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHdlYWtUaGlzLmdldCgpKSkKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X2lzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyA9IGZhbHNlOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
ZnJhbWUpOwogCiAgICAgZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVseSgpOwpAQCAtNTcwNSwxMiAr
NTcyMSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZgogICAgICAgICBpZiAoYXV0byogYXV0
b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lv
bigpKQogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERp
YWxvZygqdGhpcyk7CiAgICAgfQotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCgq
dGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkp
OworCisgICAgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFdURk1vdmUoZnJhbWUpLCBXVEZNb3Zl
KGZyYW1lSW5mbyksIG1lc3NhZ2UsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVw
bHkgPSBXVEZNb3ZlKHJlcGx5KV0oUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgZnJhbWUsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pIG11dGFibGUgeworICAgICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByb3RlY3RlZFRoaXMt
Pm1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCgqcHJvdGVjdGVkVGhpcywgbWVzc2FnZSwg
ZnJhbWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSks
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBs
ZXRpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkoKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb24oKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0g
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwor
ICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkp
OwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBleGl0RnVsbHNj
cmVlbkltbWVkaWF0ZWx5KCk7CkBAIC01NzIzLDEyICs1NzQ5LDIxIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmCiAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2Ny
aXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAgICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0
Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92
ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhXVEZNb3ZlKGZyYW1lKSwg
V1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIGZyYW1l
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7CisgICAgICAgIGlm
ICghcHJvdGVjdGVkVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqcHJvdGVjdGVkVGhpcywg
bWVzc2FnZSwgZnJhbWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92
ZShyZXBseSksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBs
eShyZXN1bHQpOworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICB9KTsKKyAgICB9
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBh
dXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKICAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgZXhpdEZ1bGxzY3JlZW5J
bW1lZGlhdGVseSgpOwpAQCAtNTc0MSw3ICs1Nzc2LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFs
b2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQo
KnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwg
V1RGTW92ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhXVEZNb3ZlKGZy
YW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIGRlZmF1bHRWYWx1ZV0oUmVmUHRyPFdl
YkZyYW1lUHJveHk+JiYgZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pIG11
dGFibGUgeworICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlz
LmdldCgpKTsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9t
cHQoKnByb3RlY3RlZFRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUuZ2V0KCksIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXShhdXRvJiBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkocmVzdWx0KTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb24oKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2YyMTk2MWMyZjAxODVjMmIwOTY3NGVkNjZjM2ZhNzFj
NDkzMmIyMy4uZjlhNmNjMzdmNGFkOTIyOTk1Y2VjMGQyNjMwYTNlMGY3Yzk0NWMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5MjgsNiArMTkyOCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvY29hVmlldyhXS1dlYlZpZXcgKik7CiAjZW5kaWYKIAorICAg
IGJvb2wgaXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCkgY29uc3QgeyByZXR1cm4gbV9p
c1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2c7IH0KKwogcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjQ3Miw2ICsy
NDc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkVXBkYXRlRWRpdG9yU3RhdGUoY29uc3Qg
RWRpdG9yU3RhdGUmIG9sZEVkaXRvclN0YXRlLCBjb25zdCBFZGl0b3JTdGF0ZSYgbmV3RWRpdG9y
U3RhdGUpOwogCisgICAgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coUmVmUHRyPFdlYkZy
YW1lUHJveHk+JiYsIEZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmLCBGcmFtZUluZm9EYXRh
JiYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+JiYpOworCiAg
ICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2Vha1B0cjxQYWdlQ2xpZW50PiBtX3BhZ2VDbGllbnQ7
CkBAIC0zMDA3LDYgKzMwMTEsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRp
YVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlh
bG9nIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2ZDE4NWM5MDEzZDE5MDc1
NWM1MzYxOWFlYzFiYjI0MjNiMTYxMzguLjNmYmUxYjE3ZmY2NjA0NDllOTkzZWY3ZThhZmMwYmEw
MDI0ZmQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC0yNDQsNiArMjQ0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE5vdEhh
bmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
IGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpIG92ZXJyaWRlOwog
CisgICAgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKwogICAgIHZvaWQgZGlkQ2hhbmdlQmFja2dyb3VuZENv
bG9yKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggYzRjM2EzY2Y2ZGE3MGFkMzdmNTM3YjhlZDAxMzZkNDZjMDk0NTEz
ZC4uNDBiNzYyMzYzOWZmYWQ0MWI0NDI0NjhlYjJlMTgxYWEzNGYwMTY1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTAwMCw2
ICsxMDAwLDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUFzeW5jaHJvbm91c0NhbmNl
bGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKnNjcm9sCiB9CiAjZW5kaWYKIAordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBbbV9jb250ZW50VmlldyBydW5Nb2RhbEphdmFT
Y3JpcHREaWFsb2c6V1RGTW92ZShjYWxsYmFjayldOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggYWEy
MThlMzBjMjY1YzA3OTI1ODFhMzQxZWNlZmQwZjBhYTA1NzMxOS4uODg2YWU3NWU2N2I1NmFlYjM4
Mzc4NGY1OTZjOWQ4ZjcyOTEyNTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNjIsNiArNjIsNyBAQAog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNp
bXBvcnQgPHd0Zi9PcHRpb25TZXQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgpAQCAtNDMxLDYgKzQzMiw3IEBAIGVudW0gY2xhc3MgUHJvY2Vl
ZFdpdGhJbWFnZUV4dHJhY3Rpb24gOiBib29sIHsKICAgICBOU0ludGVnZXIgX3N1cHByZXNzTm9u
RWRpdGFibGVTaW5nbGVUYXBUZXh0SW50ZXJhY3Rpb25Db3VudDsKICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiBfZG9tUGFzdGVSZXF1
ZXN0SGFuZGxlcjsKICAgICBCbG9ja1B0cjx2b2lkKFVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHQg
Kik+IF9wZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+IF9wZW5kaW5nUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nQ2FsbGJhY2s7
CiAKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBfYWRkaXRpb25hbENvbnRleHRGb3JTdHJv
bmdQYXNzd29yZEFzc2lzdGFuY2U7CiAKQEAgLTYzOSw2ICs2NDEsNyBAQCBGT1JfRUFDSF9QUklW
QVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9S
X1dFQl9WSUVXKQogLSAoQk9PTCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZToo
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0OwogCiAtICh2b2lk
KWRvQWZ0ZXJFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50OihkaXNwYXRjaF9i
bG9ja190KWJsb2NrOworLSAodm9pZClydW5Nb2RhbEphdmFTY3JpcHREaWFsb2c6KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiljYWxsYmFjazsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnSW50ZXJhY3Rpb25Qb2xpY3k7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCBhZTM5NWI5ZmQzNmQ4MzIyYWMyNThlOTQ4MjNlNmIyOWJkMDMzYzg5Li43ZjY1OWI1OTRk
NTY0MWQ4OTliYmFiNGJiZGY2OTMwMjY0NmI4NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTEzNCw2
ICsxMzQsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9u
YWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgog
I2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgpAQCAtNDUwNyw3ICs0NTA4LDcgQEAg
LSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShVSVdLQXV0b2NvcnIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChfZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcikgeworICAgIGlmIChfcGFnZS0+aXNSdW5uaW5nTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKCkgfHwgX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXIpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0
aW9uQ29udGV4dFdpdGhXZWJDb250ZXh0Ol9sYXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0XSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NTM1LDYgKzQ1MzYsMTQgQEAgLSAodm9pZClfaGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Oihjb25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dCYpY28KICAgICBbc2VsZiBfaW52b2tlUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4
dEhhbmRsZXI6W1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdp
dGhXZWJDb250ZXh0OmNvbnRleHRdXTsKIH0KIAorLSAodm9pZClydW5Nb2RhbEphdmFTY3JpcHRE
aWFsb2c6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljYWxsYmFjaworeworICAgIGlmIChf
aXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmQpCisgICAgICAgIF9wZW5kaW5nUnVuTW9kYWxK
YXZhU2NyaXB0RGlhbG9nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGxiYWNrKCk7Cit9CisKIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yTWFpbkZyYW1lCiB7CiAgICAgLy8gUmVzZXQgdGhlIGRvdWJsZSB0YXAgZ2VzdHVyZSByZWNv
Z25pemVyIHRvIHByZXZlbnQgYW55IGRvdWJsZSBjbGljayB0aGF0IGlzIGluIHRoZSBwcm9jZXNz
IG9mIGJlaW5nIHJlY29nbml6ZWQuCkBAIC02MTY2LDYgKzYxNzUsMTEgQEAgLSAodm9pZClfZWxl
bWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWlu
Zm9ybWF0aW9uIHUKICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0NoYW5naW5nRm9jdXNGb3JTY29w
ZSB7IF9pc0NoYW5naW5nRm9jdXMsIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50IH07CiAgICAgU2V0
Rm9yU2NvcGU8Qk9PTD4gaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmRGb3JTY29wZSB7IF9p
c0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZCwgW3NlbGYgX3Nob3VsZFNob3dLZXlib2FyZEZv
ckVsZW1lbnQ6aW5mb3JtYXRpb25dIH07CiAKKyAgICBhdXRvIHJ1bk1vZGFsSmF2YVNjcmlwdERp
YWxvZ0NhbGxiYWNrSWZOZWVkZWQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGlmIChh
dXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShfcGVuZGluZ1J1bk1vZGFsSmF2YVNjcmlwdERp
YWxvZ0NhbGxiYWNrLCB7IH0pKQorICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKKwog
ICAgIGF1dG8gaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6OmV4Y2hhbmdlKF9pbnB1dFZp
ZXdVcGRhdGVEZWZlcnJlciwgbnVsbHB0cik7CiAKICAgICBfZGlkQWNjZXNzb3J5VGFiSW5pdGlh
dGVGb2N1cyA9IF9pc0NoYW5naW5nRm9jdXNVc2luZ0FjY2Vzc29yeVRhYjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggZmM4NmUwZTk1MWRlMTU5MjQ3YTdhNDhlZmY4OTg5OTYxYzgxZTE3ZC4u
ZDk4OWEzNmJhYzNmZGQ3YWUyZTMwNzY5YmM1OWMyZTdhOTc2MWI0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTQ1Niw2ICs0NTYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2
YVNjcmlwdEFsZXJ0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBhbGVydFRleHQpCiAKICAg
ICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVjdGVkQnVuZGxl
VUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KCZtX3BhZ2UsIGFsZXJ0VGV4dCwgd2Vi
RnJhbWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKTsK
IAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAgICAg
SVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNocm9ub3VzSVBD
U2NvcGU7CkBAIC00NzMsNiArNDc0LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAg
Ly8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKCZtX3BhZ2UsIG1lc3NhZ2UsIHdlYkZy
YW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7CiAK
ICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogICAgIElQ
Qzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Nj
b3BlOwpAQCAtNDk0LDYgKzQ5Niw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjCiAKICAgICAv
LyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVjdGVkQnVuZGxlVUlD
bGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdFByb21wdCgmbV9wYWdlLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUsIHdlYkZyYW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0
RGlhbG9nKCk7CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2Fi
bGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5j
aHJvbm91c0lQQ1Njb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IGM3MzU3MjM5MTNiYjMwNWMxOGU4MTliZWM0MDhjZjE3NzIwMjFjZDUuLmJjNTJi
ZGVlMzdkOGVjNDgyYTc5MGYwOGMyOTY1YmUwZjAxYzExOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgdm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBF
dmVudCgpOworICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7CiAK
IHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTIzMzcsNiArMjMzOCw3IEBAIHByaXZhdGU6CiBpbmxp
bmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKSB7IH0K
IGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShj
b25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgdm9p
ZCBXZWJQYWdlOjpkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpIHsg
fQoraW5saW5lIHZvaWQgV2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9n
KCkgeyB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDU4NDAyODk5
Y2JiODc1NDhlZjMzODYzYTA3ZmQwMGZhNjJkZWY5YmUuLmM1YTkzNjcxMWI3YjI2MDhjODdlYjhm
ZjY3NzM0Y2E4N2RkMzk0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNTg4LDYgKzI1ODgsMjEgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChhdXRvY29ycmVjdGlvbkNv
bnRleHQoKSkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlw
dERpYWxvZygpCit7CisgICAgaWYgKCFtX2ZvY3VzZWRFbGVtZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIW1fZm9jdXNlZEVsZW1lbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSAmJiAhaXM8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCptX2ZvY3VzZWRFbGVtZW50KSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gV2hlbiBhIG1vZGFsIGRpYWxvZyBpcyBwcmVzZW50ZWQgd2hpbGUg
YW4gZWRpdGFibGUgZWxlbWVudCBpcyBmb2N1c2VkLCBVSUtpdCB3aWxsIGF0dGVtcHQgdG8gcmVx
dWVzdCBhCisgICAgLy8gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LCB3aGljaCB0cmlnZ2VycyBz
eW5jaHJvbm91cyBJUEMgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MsIHJlc3VsdGluZyBpbiBkZWFk
bG9jay4KKyAgICAvLyBUbyBhdm9pZCB0aGlzIGRlYWRsb2NrLCB3ZSBwcmVlbXB0aXZlbHkgY29t
cHV0ZSBhbmQgc2VuZCBhdXRvY29ycmVjdGlvbiBjb250ZXh0IGRhdGEgdG8gdGhlIFVJIHByb2Nl
c3MsCisgICAgLy8gc3VjaCB0aGF0IHRoZSBVSSBwcm9jZXNzIGNhbiBpbW1lZGlhdGVseSByZXNw
b25kIHRvIFVJS2l0IHdpdGhvdXQgc3luY2hyb25vdXMgSVBDIHRvIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29u
dGV4dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOworfQorCiBzdGF0aWMgSFRNTEFuY2hvckVs
ZW1lbnQqIGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBkcmFnIGNvbnRyb2xsZXIgdGhhdCBz
dXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBhbiBIVE1MQW5jaG9yRWxlbWVudC4g
V2h5IGlzIHRoaXMgZGlmZmVyZW50PwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGViNzEyNTFjYjE0NjhkOWQyNTBmYTE0YzU4
ZTFhNzhhYTUwYmFmMWUuLjFiNmZmN2RlNmMxMTA3MTUyNDlhOGM4NDZmNGJkNzBmOGUyMjZjMWYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVSSBwcm9jZXNzIGhhbmdzIHdoZW4g
c2hvd2luZyBhIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIHdoaWxlIGZvY3VzaW5nIGFuIGlucHV0
IGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU0MDkKKyAgICAgICAgcmRhcjovLzc2NzkyNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdGhhdCBleGVyY2lzZXMg
dGhlIGRlYWRsb2NrLiBJbiB0aGUgY2FzZSB3aGVyZSB3ZSBmYWlsLCB0aGlzIHRlc3Qgd2lsbCB0
aW1lIG91dC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1
cmluZy1mb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lv
cy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNS0w
MyAgUm9iZXJ0IEplbm5lciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUy9p
T1MgRGVidWcgXSBodHRwL3dwdC9jcnlwdG8vdW53cmFwLXJzYS1rZXktY3Jhc2guYW55Lmh0bWwg
KGxheW91dC10ZXN0KSBpcyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZv
Y3VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTU3NTk5ZTcyOWRjMTE1MTM4NjI1YTRjZDcz
YTI2ZmUzNGZlNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
aW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitBTEVSVDogVGhpcyBpcyBhIG1vZGFsIGFsZXJ0LgorVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFsZXJ0IHdoaWxlIGZvY3VzaW5nIGFuIGVkaXRhYmxl
IGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFwcGxpY2F0aW9uIHByb2Nlc3MgdG8gaGFuZy4gVG8g
dmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRleHQgZmllbGQgYWJvdmUsIGFuZCBjaGVjayB0aGF0
IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHByZXNlbnRlZCB3aXRoIG5vIHNpZ25pZmljYW50IGRl
bGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRvbmVTaG93aW5nQWxlcnQgYmVjYW1lIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU5MTM2YjRhZDk1ODk5NTcyZDM4ZWY1ODcwN2U2YmI2NzE4MGFmYzgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2Rh
bC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaWdu
b3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0cz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5p
dGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAg
ICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCitp
bnB1dCB7CisgICAgZm9udC1zaXplOiAyMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPGlucHV0IHBsYWNlaG9sZGVyPSJUYXAgdG8gc2hvdyBhbiBhbGVydCIgdHlwZT0idGV4dCI+
PC9pbnB1dD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5zZXRTaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5KHRydWUpOwor
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2RvbmVTaG93aW5nQWxlcnQgPSBmYWxzZTsKKworYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFsZXJ0IHdoaWxlIGZvY3Vz
aW5nIGFuIGVkaXRhYmxlIGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFwcGxpY2F0aW9uIHByb2Nl
c3MgdG8gaGFuZy4gVG8gdmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRleHQgZmllbGQgYWJvdmUs
IGFuZCBjaGVjayB0aGF0IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHByZXNlbnRlZCB3aXRoIG5v
IHNpZ25pZmljYW50IGRlbGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZykuIik7CisKKyAgICB0ZXh0
RmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOworICAgIHRleHRGaWVsZC5h
ZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsICgpID0+IHsKKyAgICAgICAgYWxlcnQoIlRoaXMgaXMg
YSBtb2RhbCBhbGVydC4iKTsKKyAgICAgICAgZG9uZVNob3dpbmdBbGVydCA9IHRydWU7CisgICAg
fSk7CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQodGV4dEZpZWxkKTsKKyAgICBzaG91bGRC
ZWNvbWVFcXVhbCgiZG9uZVNob3dpbmdBbGVydCIsICJ0cnVlIiwgZmluaXNoSlNUZXN0KTsKK30p
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427836</attachid>
            <date>2021-05-05 18:35:23 -0700</date>
            <delta_ts>2021-05-06 09:01:58 -0700</delta_ts>
            <desc>More minor adjustments</desc>
            <filename>bug-225409-20210505183522.patch</filename>
            <type>text/plain</type>
            <size>28091</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhNTdkYTQ0YWFlYjVmNjRm
YjUxM2Y4ZWE2YTA5MmFlZDFlMzhkZDEuLjIzMWZmNWQ4OTMyNTZlNzFiMTg0YzA4YmFkNTFhNDEx
ZGQ4YWRhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBmb2N1
c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNpZGVyIHRoZSBzY2VuYXJp
byB3aGVyZSBhbiBpbnB1dCBmaWVsZCBoYXMgYSBmb2N1cyBldmVudCBoYW5kbGVyIHRoYXQgc2hv
d3MgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyAoZS5nLgorICAgICAgICBjb25maXJtLCBhbGVy
dCwgcHJvbXB0KS4gV2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluIHRo
aXMgc2NlbmFyaW86CisKKyAgICAgICAgKFdFQikgICBUaGUgdGV4dCBmaWVsZCBpcyBmb2N1c2Vk
LCBhbmQgc2VuZHMgV2ViUGFnZVByb3h5OjpFbGVtZW50RGlkRm9jdXMuIEEgbW9kYWwgZGlhbG9n
IGlzIHRoZW4gdHJpZ2dlcmVkIGJ5CisgICAgICAgICAgICAgICAgc2NyaXB0IGluc2lkZSB0aGUg
Zm9jdXMgZXZlbnQgaGFuZGxlciwgc2VuZGluZyBhIG1lc3NhZ2UgbGlrZSBXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICAoVUkpICAgIFRoZSBVSSBwcm9jZXNzIHJl
Y2VpdmVzIFdlYlBhZ2VQcm94eTo6RWxlbWVudERpZEZvY3VzLCBhbmQgY2FsbHMgYC1yZWxvYWRJ
bnB1dFZpZXdzYCB3aGlsZSBzaG93aW5nIHRoZQorICAgICAgICAgICAgICAgIGtleWJvYXJkLiBV
SUtpdCBtYXkgdGhlbiBjYWxsIGJhY2sgaW50byBgLXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHRXaXRoQ29tcGxldGlvbkhhbmRsZXI6YCwgd2hpY2gKKyAgICAgICAgICAgICAgICB0cmlnZ2Vy
cyBzeW5jIElQQyBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vzcy4gV2hpbGUgd2FpdGluZyB0byByZWNl
aXZlIGEgcmVzcG9uc2UgbWVzc2FnZSwgd2UgcmVjZWl2ZSBhbmQKKyAgICAgICAgICAgICAgICBk
aXNwYXRjaCBXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydC4KKworICAgICAgICBBdCB0
aGlzIHBvaW50LCB0aGUgVUkgcHJvY2VzcyBpcyBzdGlsbCB3YWl0aW5nIGZvciBhIEhhbmRsZUF1
dG9jb3JyZWN0aW9uQ29udGV4dCByZXNwb25zZSBJUEMgbWVzc2FnZSwgYnV0IHRoZQorICAgICAg
ICB3ZWIgcHJvY2VzcyBpcyBibG9ja2VkIG9uIGEgcmVzcG9uc2UgdG8gdGhlIG1vZGFsIEphdmFT
Y3JpcHQgZGlhbG9nOyBzaW5jZSBib3RoIHByb2Nlc3NlcyBhcmUgYmxvY2tlZCBvbiBlYWNoCisg
ICAgICAgIG90aGVyLCB3ZSdyZSBub3cgaW4gZGVhZGxvY2suCisKKyAgICAgICAgVG8gbWl0aWdh
dGUgdGhpcywgd2UgY2FuIHByZWVtcHRpdmVseSBzZW5kIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQg
ZGF0YSByaWdodCBiZWZvcmUgd2UncmUgYWJvdXQgdG8gc3luY2hyb25vdXNseQorICAgICAgICBi
bG9jayBpbiB0aGUgd2ViIHByb2Nlc3Mgb24gYSBtb2RhbCBkaWFsb2cuIEluIHRoZSBVSSBwcm9j
ZXNzLCB3ZSB1c2UgdGhpcyBhdXRvY29ycmVjdGlvbiBjb250ZXh0IG9iamVjdCB0bworICAgICAg
ICBpbW1lZGlhdGVseSBzdG9wIHN5bmN3YWl0aW5nIGZvciBhIEhhbmRsZUF1dG9jb3JyZWN0aW9u
Q29udGV4dCByZXNwb25zZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
VGVzdDogZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwK
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKworICAgICAgICBNYWtlIGEgc2xp
Z2h0IGFkanVzdG1lbnQgaGVyZSBzbyB0aGF0IGB3YWl0Rm9yTWVzc2FnZWAgYmFpbHMgaWYgb25l
IG9mIHRoZSBtZXNzYWdlcyB3ZSdyZSBkaXNwYXRjaGluZyB1bmRlcm5lYXRoCisgICAgICAgIGBT
eW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzYCBpcyB0aGUgbWVzc2FnZSB3ZSBoYXBw
ZW4gdG8gYmUgd2FpdGluZyBmb3IgYW55d2F5cy4gSW4gdGhpcyBjYXNlLCBpdCdzCisgICAgICAg
IG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhlIHByZWVtcHRpdmUgYFdlYlBhZ2VQcm94eTo6SGFu
ZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCBtZXNzYWdlIHNlbnQgYnkgdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIHRvIHVuYmxvY2sgdGhlIFVJIHByb2Nlc3MsIHdoaWNoIGlzIHdhaXRpbmcgZm9y
IGEgYFdlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0YCByZXNwb25zZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnQ6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KToKKworICAgICAgICBXcmFwIGNhbGxzIHRvIGBydW5KYXZhU2NyaXB0KEFsZXJ0
fENvbmZpcm18UHJvbXB0KWAgdW5kZXJuZWF0aCBhIG5ldyBwYWdlIGNsaWVudCBtZXRob2QgdGhh
dCB0YWtlcyBhIGJsb2NrLAorICAgICAgICBgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nYC4gU2Vl
IGAtW1dLQ29udGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOl1gIGJlbG93IGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKworICAg
ICAgICBBdm9pZCBibG9ja2luZyBvbiB0aGUgd2ViIHByb2Nlc3MgaWYgaXQncyB3YWl0aW5nIG9u
IGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgYW55d2F5czsganVzdCB1c2UgdGhlIGxhc3QKKyAg
ICAgICAgYXV0b2NvcnJlY3Rpb24gY29udGV4dCB3ZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWIgcHJv
Y2VzcyAod2hpY2ggd2Uga25vdyBtdXN0J3ZlIGJlZW4gc2VudCByaWdodCBiZWZvcmUgc2hvd2lu
ZworICAgICAgICB0aGUgbW9kYWwgZGlhbG9nIGFueXdheXMpLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOl0pOgorCisgICAgICAgIEluIHRoZSBj
YXNlIHdoZXJlIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIHByZXNlbnRpbmcgdGhlIGtleWJvYXJk
IChvciBVQ0IpIG9uIGlPUyBhZnRlciBmb2N1c2luZyBhbiBpbnB1dCBmaWVsZCwKKyAgICAgICAg
YXZvaWQgaW1tZWRpYXRlbHkgYWxsb3dpbmcgdGhlIGNsaWVudCB0byBzaG93IGFueSBtb2RhbCBV
SSB1bnRpbCB3ZSdyZSBkb25lIG1hbmFnaW5nIGtleWJvYXJkIGxvZ2ljIGluIFdlYktpdC4KKyAg
ICAgICAgV2l0aG91dCB0aGlzIGFkanVzdG1lbnQsIHdlJ2xsIGVuZCB1cCB0cnlpbmcgdG8gcHJl
c2VudCB0aGUgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgaW4gdGhlIG1pZGRsZSBvZiBVSUtpdCdz
CisgICAgICAgIGNhbGwgdG8gYC1yZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBs
ZXRpb25IYW5kbGVyOmAsIHdoaWNoIHRoZW4gY2F1c2VzIFVJS2l0IHRvIHRocm93IGFuIGV4Y2Vw
dGlvbgorICAgICAgICB1bmRlcm5lYXRoIGtleWJvYXJkIGNvZGUuCisKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91
c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJl
cGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKToKKworICAgICAgICBBZGQgbG9naWMgdG8g
cHJlZW1wdGl2ZWx5IGNvbXB1dGUgYW5kIHNlbmQgYFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dGAg
ZGF0YSB0byB0aGUgVUkgcHJvY2VzcyBvbiBpT1MsIGluIHRoZSBjYXNlCisgICAgICAgIHdoZXJl
IHdlJ3JlIGFib3V0IHRvIHNob3cgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyBhbmQgdGhlcmUg
aXMgYW4gZWRpdGFibGUgZm9jdXNlZCBlbGVtZW50LiBXaGlsZSB0aGUgbW9kYWwKKyAgICAgICAg
ZGlhbG9nIGlzIHNob3duLCB3ZSdsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBpbW1lZGlhdGVs
eSByZXNwb25kIHRvIFVJS2l0J3MgYXV0b2NvcnJlY3Rpb24gY29udGV4dCByZXF1ZXN0cywKKyAg
ICAgICAgaW5zdGVhZCBvZiB0cnlpbmcgdG8gYmxvY2sgb24gcmVzcG9uc2VzIGZyb20gdGhlIHdl
YiBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nKToKKwogMjAyMS0wNS0wMyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggd2hlbiB0YXBwaW5nIGZpZWxkcyBvbiBjeWNs
ZS50cmF2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZDc4NjJmYjVjMDQ4NzA2Y2U1ODkzZmJjN2Y3MzJlN2M1NDg1NTI0Zi4uNDA3YWZiYjFhY2M0YzUx
ZGUwZmEwYjI0YzMwNGM3OTM1OGE5ODExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7
CiAKICAgICAvLyBEaXNwYXRjaCBwZW5kaW5nIHN5bmMgbWVzc2FnZXMuCi0gICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VzKCk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQo
TWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAog
ICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLgogICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVj
dGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZGlzcGF0Y2hNZXNzYWdlcygpCit2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdWludDY0X3QpPiYmIHdp
bGxEaXNwYXRjaE1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMjA2LDggKzIwNiwxMiBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgd2hpbGUgKCFtX21lc3Nh
Z2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZXNzYWdlc0JlaW5nRGlz
cGF0Y2hlZC50YWtlRmlyc3QoKS5kaXNwYXRjaCgpOworICAgIHdoaWxlICghbV9tZXNzYWdlc0Jl
aW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlVG9EaXNwYXRj
aCA9IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICh3
aWxsRGlzcGF0Y2hNZXNzYWdlKQorICAgICAgICAgICAgd2lsbERpc3BhdGNoTWVzc2FnZShtZXNz
YWdlVG9EaXNwYXRjaC5tZXNzYWdlLT5tZXNzYWdlTmFtZSgpLCBtZXNzYWdlVG9EaXNwYXRjaC5t
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBtZXNzYWdlVG9EaXNwYXRjaC5kaXNw
YXRjaCgpOworICAgIH0KIH0KIAogdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpk
aXNwYXRjaE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC01NjYsMTEgKzU3MCwxOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbgogCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0IHRvIGJlIHNldC4K
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBib29sIHdhc01lc3NhZ2VUb1dhaXRGb3JBbHJl
YWR5RGlzcGF0Y2hlZCA9IGZhbHNlOwogICAgICAgICAvLyBIYW5kbGUgYW55IG1lc3NhZ2VzIHRo
YXQgYXJlIGJsb2NrZWQgb24gYSByZXNwb25zZSBmcm9tIHVzLgotICAgICAgICBTeW5jTWVzc2Fn
ZVN0YXRlOjpzaW5nbGV0b24oKS5kaXNwYXRjaE1lc3NhZ2VzKCk7CisgICAgICAgIFN5bmNNZXNz
YWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMoWyZdKGF1dG8gbmFtZU9mTWVz
c2FnZVRvRGlzcGF0Y2gsIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2ZNZXNzYWdlVG9EaXNwYXRjaCkg
eworICAgICAgICAgICAgd2FzTWVzc2FnZVRvV2FpdEZvckFscmVhZHlEaXNwYXRjaGVkIHw9IG1l
c3NhZ2VOYW1lID09IG5hbWVPZk1lc3NhZ2VUb0Rpc3BhdGNoICYmIGRlc3RpbmF0aW9uSUQgPT0g
ZGVzdGluYXRpb25PZk1lc3NhZ2VUb0Rpc3BhdGNoOworICAgICAgICB9KTsKIAogICAgICAgICBM
b2NrZXIgbG9jayB7IG1fd2FpdEZvck1lc3NhZ2VNdXRleCB9OwogCisgICAgICAgIGlmICh3YXNN
ZXNzYWdlVG9XYWl0Rm9yQWxyZWFkeURpc3BhdGNoZWQpIHsKKyAgICAgICAgICAgIG1fd2FpdGlu
Z0Zvck1lc3NhZ2UgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgewogICAgICAgICAgICAg
YXV0byBkZWNvZGVyID0gV1RGTW92ZShtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAg
ICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IDcwYzZiYjZkNjRiMjVmY2U5ZjIzMWZiY2U3MDhjMDUxNWZi
NzM3ODkuLmI0MWQ4NDU2MDk3ZmZjYjY5MTBkNTkzOTkzYzZmNzZjMmI5ZWRlMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMzNSw2ICszMzUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3ludGhldGljQ2xpY2soKSA9IDA7CiAjZW5kaWYK
IAorICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKCk7IH0KKwogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVDb250
ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRl
eHRJRCkgeyB9CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjg4ZjYwODJlOGZkYWUwYzg3OTY3YzhlNjIxMDVkN2Jh
MWE5ZDhlNS4uODUzYzAwNDNlYmRiMTA4ZDdlYmJjZTk5MTAxYTNkNzBlNzBiM2I0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xOTIsNiArMTkyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgogCkBAIC01NjkxLDkgKzU2OTIsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFn
ZSgpCiAgICAgbV91aUNsaWVudC0+Y2xvc2UodGhpcyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgZnJhbWUs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpPiYmIHJ1bkRpYWxvZ0NhbGxiYWNrKQoreworICAgIHBhZ2VDbGll
bnQoKS5ydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLCBmcmFtZUluZm8gPSBXVEZNb3ZlKGZyYW1lSW5mbyksIGZyYW1lID0gV1RGTW92ZShmcmFt
ZSksIG1lc3NhZ2UsIHJ1bkRpYWxvZ0NhbGxiYWNrID0gV1RGTW92ZShydW5EaWFsb2dDYWxsYmFj
ayldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
d2Vha1RoaXMuZ2V0KCkpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9pc1J1bm5pbmdNb2RhbEphdmFT
Y3JpcHREaWFsb2cgPSB0cnVlOworICAgICAgICBydW5EaWFsb2dDYWxsYmFjaygqcHJvdGVjdGVk
VGhpcywgZnJhbWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgbWVzc2FnZSwgW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+bV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2cgPSBmYWxz
ZTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0QWxlcnQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVu
SmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBXZWJGcmFtZVBy
b3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgYXV0byBmcmFt
ZSA9IG1ha2VSZWZQdHIobV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7CiAgICAgTUVTU0FH
RV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRl
bHkoKTsKQEAgLTU3MDUsMTIgKzU3MjEsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGYKICAg
ICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nlc3NQb29s
KCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53
aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KLSAgICBtX3VpQ2xpZW50LT5y
dW5KYXZhU2NyaXB0QWxlcnQoKnRoaXMsIG1lc3NhZ2UsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5m
byksIFdURk1vdmUocmVwbHkpKTsKKworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhXVEZN
b3ZlKGZyYW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24p
IG11dGFibGUgeworICAgICAgICBwYWdlLm1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydChw
YWdlLCBtZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBbcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KSwgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICByZXBseSgpOworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICB9
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJt
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRD
b25maXJtOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VS
ZWZQdHIobV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7CiAgICAgTUVTU0FHRV9DSEVDSyht
X3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkoKTsKQEAg
LTU3MjMsMTIgKzU3NDUsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25m
aXJtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICAgICAgICAg
IGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAg
IH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRDb25maXJtKCp0aGlzLCBtZXNzYWdl
LCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgcnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKFdURk1vdmUoZnJhbWUpLCBXVEZNb3ZlKGZyYW1lSW5mbyksIG1l
c3NhZ2UsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJl
cGx5KV0oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbikgbXV0YWJsZSB7CisgICAgICAgIHBhZ2UubV91aUNsaWVu
dC0+cnVuSmF2YVNjcmlwdENvbmZpcm0ocGFnZSwgbWVzc2FnZSwgZnJhbWUsIFdURk1vdmUoZnJh
bWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNv
bXBsZXRpb24pXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBseShyZXN1
bHQpOworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBhdXRvIGZy
YW1lID0gbWFrZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICBNRVNT
QUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgZXhpdEZ1bGxzY3JlZW5JbW1lZGlh
dGVseSgpOwpAQCAtNTc0MSw3ICs1NzY4LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAg
ICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRo
aXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQoKnRoaXMs
IG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92
ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhXVEZNb3ZlKGZyYW1lKSwg
V1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIGRlZmF1bHRWYWx1ZV0oV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bikgbXV0YWJsZSB7CisgICAgICAgIHBhZ2UubV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdFByb21w
dChwYWdlLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyks
IFtyZXBseSA9IFdURk1vdmUocmVwbHkpLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0oYXV0byYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlcGx5KHJlc3VsdCk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNmMjE5NjFjMmYwMTg1YzJiMDk2NzRl
ZDY2YzNmYTcxYzQ5MzJiMjMuLjdkNTczZGRlZWY2ZjRiOGM5MzgzZjI0MjE2NzQxNGVhYWRjOTlj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTI4LDYgKzE5
MjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb2NvYVZpZXcoV0tXZWJWaWV3ICopOwogI2Vu
ZGlmCiAKKyAgICBib29sIGlzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZygpIGNvbnN0IHsg
cmV0dXJuIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nOyB9CisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAg
LTI0NzIsNiArMjQ3NCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFVwZGF0ZUVkaXRvclN0
YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBvbGRFZGl0b3JTdGF0ZSwgY29uc3QgRWRpdG9yU3RhdGUm
IG5ld0VkaXRvclN0YXRlKTsKIAorICAgIHZvaWQgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFJl
ZlB0cjxXZWJGcmFtZVByb3h5PiYmLCBGcmFtZUluZm9EYXRhJiYsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5
KiwgRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpPiYmKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFdlYWtQdHI8UGFnZUNsaWVu
dD4gbV9wYWdlQ2xpZW50OwpAQCAtMzAwNyw2ICszMDExLDcgQEAgcHJpdmF0ZToKICAgICBzaXpl
X3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBib29sIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUnVubmluZ01v
ZGFsSmF2YVNjcmlwdERpYWxvZyB7IGZhbHNlIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1
NmQxODVjOTAxM2QxOTA3NTVjNTM2MTlhZWMxYmIyNDIzYjE2MTM4Li4zZmJlMWIxN2ZmNjYwNDQ5
ZTk5M2VmN2U4YWZjMGJhMDAyNGZkODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjQ0LDYgKzI0NCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0F0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlU3ludGhldGljQ2xp
Y2soKSBvdmVycmlkZTsKIAorICAgIHZvaWQgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgZmluYWw7CisKICAgICB2b2lkIGRpZENo
YW5nZUJhY2tncm91bmRDb2xvcigpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGM0YzNhM2NmNmRhNzBhZDM3ZjUzN2I4
ZWQwMTM2ZDQ2YzA5NDUxM2QuLjQwYjc2MjM2MzlmZmFkNDFiNDQyNDY4ZWIyZTE4MWFhMzRmMDE2
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTEwMDAsNiArMTAwMCwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVB
c3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICpzY3JvbAogfQog
I2VuZGlmCiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgW21fY29udGVudFZp
ZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOldURk1vdmUoY2FsbGJhY2spXTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCmluZGV4IGFhMjE4ZTMwYzI2NWMwNzkyNTgxYTM0MWVjZWZkMGYwYWEwNTczMTkuLjg4
NmFlNzVlNjdiNTZhZWIzODM3ODRmNTk2YzlkOGY3MjkxMjU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAg
LTYyLDYgKzYyLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTQzMSw2ICs0MzIsNyBAQCBl
bnVtIGNsYXNzIFByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uIDogYm9vbCB7CiAgICAgTlNJbnRl
Z2VyIF9zdXBwcmVzc05vbkVkaXRhYmxlU2luZ2xlVGFwVGV4dEludGVyYWN0aW9uQ291bnQ7CiAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
KT4gX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXI7CiAgICAgQmxvY2tQdHI8dm9pZChVSVdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0ICopPiBfcGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI7
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBfcGVuZGluZ1J1bk1vZGFsSmF2YVNjcmlw
dERpYWxvZ0NhbGxiYWNrOwogCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9u
YWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOwogCkBAIC02MzksNiArNjQxLDcg
QEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVO
VFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKEJPT0wpZW5zdXJlUG9zaXRpb25JbmZvcm1h
dGlvbklzVXBUb0RhdGU6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QpcmVx
dWVzdDsKIAogLSAodm9pZClkb0FmdGVyRWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxl
bWVudDooZGlzcGF0Y2hfYmxvY2tfdClibG9jazsKKy0gKHZvaWQpcnVuTW9kYWxKYXZhU2NyaXB0
RGlhbG9nOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpY2FsbGJhY2s7CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogLSAodm9pZClfZGlkQ2hhbmdlRHJhZ0ludGVyYWN0aW9uUG9saWN5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggYWUzOTViOWZkMzZkODMyMmFjMjU4ZTk0ODIzZTZiMjliZDAz
M2M4OS4uN2Y2NTliNTk0ZDU2NDFkODk5YmJhYjRiYmRmNjkzMDI2NDZiODQ5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC0xMzQsNiArMTM0LDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KQEAgLTQ1
MDcsNyArNDUwOCw3IEBAIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXIpIHsKKyAgICBpZiAoX3Bh
Z2UtPmlzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZygpIHx8IF9kb21QYXN0ZVJlcXVlc3RI
YW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29u
dGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoV2ViQ29udGV4dDpfbGFzdEF1dG9jb3JyZWN0
aW9uQ29udGV4dF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDUzNSw2ICs0NTM2LDE0
IEBAIC0gKHZvaWQpX2hhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dDooY29uc3QgV2ViS2l0OjpX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKWNvCiAgICAgW3NlbGYgX2ludm9rZVBlbmRpbmdBdXRv
Y29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOltXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRvY29y
cmVjdGlvbkNvbnRleHRXaXRoV2ViQ29udGV4dDpjb250ZXh0XV07CiB9CiAKKy0gKHZvaWQpcnVu
TW9kYWxKYXZhU2NyaXB0RGlhbG9nOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpY2FsbGJh
Y2sKK3sKKyAgICBpZiAoX2lzRm9jdXNpbmdFbGVtZW50V2l0aEtleWJvYXJkKQorICAgICAgICBf
cGVuZGluZ1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZ0NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjaygpOworfQorCiAtICh2b2lkKV9kaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZQogewogICAgIC8vIFJlc2V0IHRoZSBkb3VibGUg
dGFwIGdlc3R1cmUgcmVjb2duaXplciB0byBwcmV2ZW50IGFueSBkb3VibGUgY2xpY2sgdGhhdCBp
cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyByZWNvZ25pemVkLgpAQCAtNjE2Niw2ICs2MTc1LDEx
IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaXNDaGFu
Z2luZ0ZvY3VzRm9yU2NvcGUgeyBfaXNDaGFuZ2luZ0ZvY3VzLCBzZWxmLl9oYXNGb2N1c2VkRWxl
bWVudCB9OwogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzRm9jdXNpbmdFbGVtZW50V2l0aEtleWJv
YXJkRm9yU2NvcGUgeyBfaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmQsIFtzZWxmIF9zaG91
bGRTaG93S2V5Ym9hcmRGb3JFbGVtZW50OmluZm9ybWF0aW9uXSB9OwogCisgICAgYXV0byBydW5N
b2RhbEphdmFTY3JpcHREaWFsb2dDYWxsYmFja0lmTmVlZGVkID0gbWFrZVNjb3BlRXhpdChbJl0g
eworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UoX3BlbmRpbmdSdW5N
b2RhbEphdmFTY3JpcHREaWFsb2dDYWxsYmFjaywgeyB9KSkKKyAgICAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgfSk7CisKICAgICBhdXRvIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjpl
eGNoYW5nZShfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIsIG51bGxwdHIpOwogCiAgICAgX2RpZEFj
Y2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPSBfaXNDaGFuZ2luZ0ZvY3VzVXNpbmdBY2Nlc3NvcnlU
YWI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGZjODZlMGU5NTFkZTE1OTI0N2E3YTQ4ZWZm
ODk4OTk2MWM4MWUxN2QuLmQ5ODlhMzZiYWMzZmRkN2FlMmUzMDc2OWJjNTljMmU3YTk3NjFiNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00NTYsNiArNDU2LDcgQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYg
YWxlcnRUZXh0KQogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1fcGFn
ZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRBbGVydCgmbV9wYWdl
LCBhbGVydFRleHQsIHdlYkZyYW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9kYWxKYXZh
U2NyaXB0RGlhbG9nKCk7CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlv
bkRpc2FibGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5k
ZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwpAQCAtNDczLDYgKzQ3NCw3IEBAIGJvb2wgV2ViQ2hyb21l
Q2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBtX3BhZ2Uu
aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybSgmbV9wYWdl
LCBtZXNzYWdlLCB3ZWJGcmFtZSk7CisgICAgbV9wYWdlLnByZXBhcmVUb1J1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZygpOwogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25E
aXNhYmxlcjsKICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVk
U3luY2hyb25vdXNJUENTY29wZTsKQEAgLTQ5NCw2ICs0OTYsNyBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgYwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1fcGFnZS5p
bmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoJm1fcGFnZSwg
bWVzc2FnZSwgZGVmYXVsdFZhbHVlLCB3ZWJGcmFtZSk7CisgICAgbV9wYWdlLnByZXBhcmVUb1J1
bk1vZGFsSmF2YVNjcmlwdERpYWxvZygpOwogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhh
bmdEZXRlY3Rpb25EaXNhYmxlcjsKICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2Nv
cGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjNzM1NzIzOTEzYmIzMDVjMThlODE5YmVjNDA4Y2Yx
NzcyMDIxY2Q1Li5iYzUyYmRlZTM3ZDhlYzQ4MmE3OTBmMDhjMjk2NWJlMGYwMWMxMThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDQ2LDYgKzE0
NDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkSGFuZGxlT3JQcmV2ZW50TW91
c2VEb3duT3JNb3VzZVVwRXZlbnQoKTsKKyAgICB2b2lkIHByZXBhcmVUb1J1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZygpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CkBAIC0yMzM3LDYgKzIzMzgsNyBA
QCBwcml2YXRlOgogaW5saW5lIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRp
bmdDb21tYW5kKCkgeyB9CiBpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0
Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogaW5saW5lIHZvaWQgV2ViUGFnZTo6ZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JN
b3VzZVVwRXZlbnQoKSB7IH0KK2lubGluZSB2b2lkIFdlYlBhZ2U6OnByZXBhcmVUb1J1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZygpIHsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCA1ODQwMjg5OWNiYjg3NTQ4ZWYzMzg2M2EwN2ZkMDBmYTYyZGVmOWJlLi5jNWE5MzY3
MTFiN2IyNjA4Yzg3ZWI4ZmY2NzczNGNhODdkZDM5NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjU4OCw2ICsyNTg4
LDIxIEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQo
YXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpwcmVwYXJlVG9S
dW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKQoreworICAgIGlmICghbV9mb2N1c2VkRWxlbWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZvY3VzZWRFbGVtZW50LT5oYXNFZGl0YWJs
ZVN0eWxlKCkgJiYgIWlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqbV9mb2N1c2VkRWxl
bWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gYSBtb2RhbCBkaWFsb2cgaXMg
cHJlc2VudGVkIHdoaWxlIGFuIGVkaXRhYmxlIGVsZW1lbnQgaXMgZm9jdXNlZCwgVUlLaXQgd2ls
bCBhdHRlbXB0IHRvIHJlcXVlc3QgYQorICAgIC8vIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCwg
d2hpY2ggdHJpZ2dlcnMgc3luY2hyb25vdXMgSVBDIGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzLCBy
ZXN1bHRpbmcgaW4gZGVhZGxvY2suCisgICAgLy8gVG8gYXZvaWQgdGhpcyBkZWFkbG9jaywgd2Ug
cHJlZW1wdGl2ZWx5IGNvbXB1dGUgYW5kIHNlbmQgYXV0b2NvcnJlY3Rpb24gY29udGV4dCBkYXRh
IHRvIHRoZSBVSSBwcm9jZXNzLAorICAgIC8vIHN1Y2ggdGhhdCB0aGUgVUkgcHJvY2VzcyBjYW4g
aW1tZWRpYXRlbHkgcmVzcG9uZCB0byBVSUtpdCB3aXRob3V0IHN5bmNocm9ub3VzIElQQyB0byB0
aGUgd2ViIHByb2Nlc3MuCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVB
dXRvY29ycmVjdGlvbkNvbnRleHQoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpKTsKK30KKwogc3Rh
dGljIEhUTUxBbmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogVGhlcmUgaXMgY29kZSBpbiB0aGUgZHJhZyBj
b250cm9sbGVyIHRoYXQgc3VwcG9ydHMgYW55IGxpbmssIGV2ZW4gaWYgaXQncyBub3QgYW4gSFRN
TEFuY2hvckVsZW1lbnQuIFdoeSBpcyB0aGlzIGRpZmZlcmVudD8KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjcxMjUxY2Ix
NDY4ZDlkMjUwZmExNGM1OGUxYTc4YWE1MGJhZjFlLi4xYjZmZjdkZTZjMTEwNzE1MjQ5YThjODQ2
ZjRiZDcwZjhlMjI2YzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMDUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJv
Y2VzcyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBm
b2N1c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRoYXQgZXhlcmNpc2VzIHRoZSBkZWFkbG9jay4gSW4gdGhlIGNhc2Ugd2hlcmUgd2UgZmFpbCwg
dGhpcyB0ZXN0IHdpbGwgdGltZSBvdXQuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3Mvc2hv
dy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbDogQWRk
ZWQuCisKIDIwMjEtMDUtMDMgIFJvYmVydCBKZW5uZXIgIDxqZW5uZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFsgbWFjT1MvaU9TIERlYnVnIF0gaHR0cC93cHQvY3J5cHRvL3Vud3JhcC1yc2Eta2V5
LWNyYXNoLmFueS5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZv
Y3VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFs
LWFsZXJ0LWR1cmluZy1mb2N1cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE1NzU5OWU3Mjlk
YzExNTEzODYyNWE0Y2Q3M2EyNmZlMzRmZTU4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQUxFUlQ6IFRoaXMgaXMgYSBtb2RhbCBhbGVydC4KK1Ro
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IHByZXNlbnRpbmcgYSBtb2RhbCBhbGVydCB3aGlsZSBmb2N1
c2luZyBhbiBlZGl0YWJsZSBpbnB1dCBkb2Vzbid0IGNhdXNlIHRoZSBhcHBsaWNhdGlvbiBwcm9j
ZXNzIHRvIGhhbmcuIFRvIHZlcmlmeSBtYW51YWxseSwgdGFwIHRoZSB0ZXh0IGZpZWxkIGFib3Zl
LCBhbmQgY2hlY2sgdGhhdCB0aGUgSmF2YVNjcmlwdCBhbGVydCBpcyBwcmVzZW50ZWQgd2l0aCBu
byBzaWduaWZpY2FudCBkZWxheSAoaS5lLiBhIDEtc2Vjb25kIGhhbmcpLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb25lU2hvd2luZ0FsZXJ0IGJlY2FtZSB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5n
LWZvY3VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVy
dC1kdXJpbmctZm9jdXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTEzNmI0YWQ5NTg5OTU3MmQzOGVmNTg3
MDdlNmJiNjcxODBhZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwKQEAgLTAsMCArMSw0NSBA
QAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVW
aWV3cG9ydD10cnVlIGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHM9dHJ1ZSBdIC0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
Ym9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1h
cmdpbjogMDsKK30KKworaW5wdXQgeworICAgIGZvbnQtc2l6ZTogMjBweDsKK30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBwbGFjZWhvbGRlcj0iVGFwIHRvIHNob3cgYW4gYWxl
cnQiIHR5cGU9InRleHQiPjwvaW5wdXQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuc2V0U2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hy
b25vdXNseSh0cnVlKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7Citkb25lU2hvd2luZ0FsZXJ0
ID0gZmFsc2U7CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHByZXNlbnRpbmcgYSBtb2RhbCBh
bGVydCB3aGlsZSBmb2N1c2luZyBhbiBlZGl0YWJsZSBpbnB1dCBkb2Vzbid0IGNhdXNlIHRoZSBh
cHBsaWNhdGlvbiBwcm9jZXNzIHRvIGhhbmcuIFRvIHZlcmlmeSBtYW51YWxseSwgdGFwIHRoZSB0
ZXh0IGZpZWxkIGFib3ZlLCBhbmQgY2hlY2sgdGhhdCB0aGUgSmF2YVNjcmlwdCBhbGVydCBpcyBw
cmVzZW50ZWQgd2l0aCBubyBzaWduaWZpY2FudCBkZWxheSAoaS5lLiBhIDEtc2Vjb25kIGhhbmcp
LiIpOworCisgICAgdGV4dEZpZWxkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXQiKTsK
KyAgICB0ZXh0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCAoKSA9PiB7CisgICAgICAg
IGFsZXJ0KCJUaGlzIGlzIGEgbW9kYWwgYWxlcnQuIik7CisgICAgICAgIGRvbmVTaG93aW5nQWxl
cnQgPSB0cnVlOworICAgIH0pOworCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KHRleHRGaWVs
ZCk7CisgICAgc2hvdWxkQmVjb21lRXF1YWwoImRvbmVTaG93aW5nQWxlcnQiLCAidHJ1ZSIsIGZp
bmlzaEpTVGVzdCk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="448573"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427890</attachid>
            <date>2021-05-06 09:09:10 -0700</date>
            <delta_ts>2021-05-06 09:14:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225409-20210506090909.patch</filename>
            <type>text/plain</type>
            <size>28048</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhNTdkYTQ0YWFlYjVmNjRm
YjUxM2Y4ZWE2YTA5MmFlZDFlMzhkZDEuLmQ5NDM1YTYxODE5OWM5MzE1ZTRlYzc4YWU0MGNjOTA2
NWJhMDYyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBmb2N1
c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLCBDaHJpcyBEdW1leiBhbmQgVGltIEhvcnRvbi4KKworICAg
ICAgICBDb25zaWRlciB0aGUgc2NlbmFyaW8gd2hlcmUgYW4gaW5wdXQgZmllbGQgaGFzIGEgZm9j
dXMgZXZlbnQgaGFuZGxlciB0aGF0IHNob3dzIGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgKGUu
Zy4KKyAgICAgICAgY29uZmlybSwgYWxlcnQsIHByb21wdCkuIFdlIGdldCB0aGUgZm9sbG93aW5n
IHNlcXVlbmNlIG9mIGV2ZW50cyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAgIChXRUIpICAg
VGhlIHRleHQgZmllbGQgaXMgZm9jdXNlZCwgYW5kIHNlbmRzIFdlYlBhZ2VQcm94eTo6RWxlbWVu
dERpZEZvY3VzLiBBIG1vZGFsIGRpYWxvZyBpcyB0aGVuIHRyaWdnZXJlZCBieQorICAgICAgICAg
ICAgICAgIHNjcmlwdCBpbnNpZGUgdGhlIGZvY3VzIGV2ZW50IGhhbmRsZXIsIHNlbmRpbmcgYSBt
ZXNzYWdlIGxpa2UgV2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQuCisKKyAgICAgICAg
KFVJKSAgICBUaGUgVUkgcHJvY2VzcyByZWNlaXZlcyBXZWJQYWdlUHJveHk6OkVsZW1lbnREaWRG
b2N1cywgYW5kIGNhbGxzIGAtcmVsb2FkSW5wdXRWaWV3c2Agd2hpbGUgc2hvd2luZyB0aGUKKyAg
ICAgICAgICAgICAgICBrZXlib2FyZC4gVUlLaXQgbWF5IHRoZW4gY2FsbCBiYWNrIGludG8gYC1y
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOmAsIHdoaWNo
CisgICAgICAgICAgICAgICAgdHJpZ2dlcnMgc3luYyBJUEMgYmFjayB0byB0aGUgd2ViIHByb2Nl
c3MuIFdoaWxlIHdhaXRpbmcgdG8gcmVjZWl2ZSBhIHJlc3BvbnNlIG1lc3NhZ2UsIHdlIHJlY2Vp
dmUgYW5kCisgICAgICAgICAgICAgICAgZGlzcGF0Y2ggV2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0QWxlcnQuCisKKyAgICAgICAgQXQgdGhpcyBwb2ludCwgdGhlIFVJIHByb2Nlc3MgaXMgc3Rp
bGwgd2FpdGluZyBmb3IgYSBIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQgcmVzcG9uc2UgSVBD
IG1lc3NhZ2UsIGJ1dCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMgYmxvY2tlZCBvbiBhIHJl
c3BvbnNlIHRvIHRoZSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZzsgc2luY2UgYm90aCBwcm9jZXNz
ZXMgYXJlIGJsb2NrZWQgb24gZWFjaAorICAgICAgICBvdGhlciwgd2UncmUgbm93IGluIGRlYWRs
b2NrLgorCisgICAgICAgIFRvIG1pdGlnYXRlIHRoaXMsIHdlIGNhbiBwcmVlbXB0aXZlbHkgc2Vu
ZCBhdXRvY29ycmVjdGlvbiBjb250ZXh0IGRhdGEgcmlnaHQgYmVmb3JlIHdlJ3JlIGFib3V0IHRv
IHN5bmNocm9ub3VzbHkKKyAgICAgICAgYmxvY2sgaW4gdGhlIHdlYiBwcm9jZXNzIG9uIGEgbW9k
YWwgZGlhbG9nLiBJbiB0aGUgVUkgcHJvY2Vzcywgd2UgdXNlIHRoaXMgYXV0b2NvcnJlY3Rpb24g
Y29udGV4dCBvYmplY3QgdG8KKyAgICAgICAgaW1tZWRpYXRlbHkgc3RvcCBzeW5jd2FpdGluZyBm
b3IgYSBIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQgcmVzcG9uc2UuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFs
LWFsZXJ0LWR1cmluZy1mb2N1cy5odG1sCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2Fn
ZSk6CisKKyAgICAgICAgTWFrZSBhIHNsaWdodCBhZGp1c3RtZW50IGhlcmUgc28gdGhhdCBgd2Fp
dEZvck1lc3NhZ2VgIGJhaWxzIGlmIG9uZSBvZiB0aGUgbWVzc2FnZXMgd2UncmUgZGlzcGF0Y2hp
bmcgdW5kZXJuZWF0aAorICAgICAgICBgU3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdl
c2AgaXMgdGhlIG1lc3NhZ2Ugd2UgaGFwcGVuIHRvIGJlIHdhaXRpbmcgZm9yIGFueXdheXMuIElu
IHRoaXMgY2FzZSwgaXQncworICAgICAgICBuZWNlc3NhcnkgaW4gb3JkZXIgZm9yIHRoZSBwcmVl
bXB0aXZlIGBXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dGAgbWVzc2Fn
ZSBzZW50IGJ5IHRoZSB3ZWIKKyAgICAgICAgcHJvY2VzcyB0byB1bmJsb2NrIHRoZSBVSSBwcm9j
ZXNzLCB3aGljaCBpcyB3YWl0aW5nIGZvciBhIGBXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dGAgcmVzcG9uc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpydW5Nb2RhbEphdmFTY3JpcHREaWFs
b2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisKKyAgICAgICAgV3JhcCBjYWxs
cyB0byBgcnVuSmF2YVNjcmlwdChBbGVydHxDb25maXJtfFByb21wdClgIHVuZGVybmVhdGggYSBu
ZXcgcGFnZSBjbGllbnQgbWV0aG9kIHRoYXQgdGFrZXMgYSBibG9jaywKKyAgICAgICAgYHJ1bk1v
ZGFsSmF2YVNjcmlwdERpYWxvZ2AuIFNlZSBgLVtXS0NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZzpdYCBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29t
cGxldGlvbkhhbmRsZXI6XSk6CisKKyAgICAgICAgQXZvaWQgYmxvY2tpbmcgb24gdGhlIHdlYiBw
cm9jZXNzIGlmIGl0J3Mgd2FpdGluZyBvbiBhIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIGFueXdh
eXM7IGp1c3QgdXNlIHRoZSBsYXN0CisgICAgICAgIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgd2Ug
cmVjZWl2ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MgKHdoaWNoIHdlIGtub3cgbXVzdCd2ZSBiZWVu
IHNlbnQgcmlnaHQgYmVmb3JlIHNob3dpbmcKKyAgICAgICAgdGhlIG1vZGFsIGRpYWxvZyBhbnl3
YXlzKS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxv
ZzpdKToKKworICAgICAgICBJbiB0aGUgY2FzZSB3aGVyZSB3ZSdyZSBpbiB0aGUgcHJvY2VzcyBv
ZiBwcmVzZW50aW5nIHRoZSBrZXlib2FyZCAob3IgVUNCKSBvbiBpT1MgYWZ0ZXIgZm9jdXNpbmcg
YW4gaW5wdXQgZmllbGQsCisgICAgICAgIGF2b2lkIGltbWVkaWF0ZWx5IGFsbG93aW5nIHRoZSBj
bGllbnQgdG8gc2hvdyBhbnkgbW9kYWwgVUkgdW50aWwgd2UncmUgZG9uZSBtYW5hZ2luZyBrZXli
b2FyZCBsb2dpYyBpbiBXZWJLaXQuCisgICAgICAgIFdpdGhvdXQgdGhpcyBhZGp1c3RtZW50LCB3
ZSdsbCBlbmQgdXAgdHJ5aW5nIHRvIHByZXNlbnQgdGhlIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9n
IGluIHRoZSBtaWRkbGUgb2YgVUlLaXQncworICAgICAgICBjYWxsIHRvIGAtcmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpgLCB3aGljaCB0aGVuIGNhdXNl
cyBVSUtpdCB0byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAgdW5kZXJuZWF0aCBrZXlib2Fy
ZCBjb2RlLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2Vy
SXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJP
YmplY3Q6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlw
dENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRQcm9tcHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6
CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIHByZWVtcHRpdmVseSBjb21wdXRlIGFuZCBzZW5kIGBX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHRgIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3Mgb24gaU9TLCBp
biB0aGUgY2FzZQorICAgICAgICB3aGVyZSB3ZSdyZSBhYm91dCB0byBzaG93IGEgbW9kYWwgSmF2
YVNjcmlwdCBkaWFsb2cgYW5kIHRoZXJlIGlzIGFuIGVkaXRhYmxlIGZvY3VzZWQgZWxlbWVudC4g
V2hpbGUgdGhlIG1vZGFsCisgICAgICAgIGRpYWxvZyBpcyBzaG93biwgd2UnbGwgdXNlIHRoaXMg
aW5mb3JtYXRpb24gdG8gaW1tZWRpYXRlbHkgcmVzcG9uZCB0byBVSUtpdCdzIGF1dG9jb3JyZWN0
aW9uIGNvbnRleHQgcmVxdWVzdHMsCisgICAgICAgIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGJsb2Nr
IG9uIHJlc3BvbnNlcyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisKIDIwMjEtMDUtMDMgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENyYXNoIHdo
ZW4gdGFwcGluZyBmaWVsZHMgb24gY3ljbGUudHJhdmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IGQ3ODYyZmI1YzA0ODcwNmNlNTg5M2ZiYzdmNzMyZTdj
NTQ4NTUyNGYuLjQwN2FmYmIxYWNjNGM1MWRlMGZhMGIyNGMzMDRjNzkzNThhOTgxMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBzeW5j
IG1lc3NhZ2VzLgotICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOworICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlcyhGdW5jdGlvbjx2b2lkKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCk+JiYgd2lsbERp
c3BhdGNoTWVzc2FnZSA9IHsgfSk7CiAKICAgICAvLyBBZGQgbWF0Y2hpbmcgcGVuZGluZyBtZXNz
YWdlcyB0byB0aGUgcHJvdmlkZWQgTWVzc2FnZVJlY2VpdmVRdWV1ZS4KICAgICB2b2lkIGVucXVl
dWVNYXRjaGluZ01lc3NhZ2VzKENvbm5lY3Rpb24mLCBNZXNzYWdlUmVjZWl2ZVF1ZXVlJiwgUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBi
b29sIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENvbm5l
Y3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoKQordm9pZCBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQoTWVz
c2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIwNiw4ICsyMDYsMTIgQEAgdm9pZCBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIHdoaWxlICghbV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpCi0g
ICAgICAgIG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQudGFrZUZpcnN0KCkuZGlzcGF0Y2goKTsK
KyAgICB3aGlsZSAoIW1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGF1dG8gbWVzc2FnZVRvRGlzcGF0Y2ggPSBtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLnRh
a2VGaXJzdCgpOworICAgICAgICBpZiAod2lsbERpc3BhdGNoTWVzc2FnZSkKKyAgICAgICAgICAg
IHdpbGxEaXNwYXRjaE1lc3NhZ2UobWVzc2FnZVRvRGlzcGF0Y2gubWVzc2FnZS0+bWVzc2FnZU5h
bWUoKSwgbWVzc2FnZVRvRGlzcGF0Y2gubWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKTsKKyAgICAg
ICAgbWVzc2FnZVRvRGlzcGF0Y2guZGlzcGF0Y2goKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1
bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpA
QCAtNTY2LDExICs1NzAsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW4KIAogICAgIC8vIE5v
dyB3YWl0IGZvciBpdCB0byBiZSBzZXQuCiAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgYm9v
bCB3YXNNZXNzYWdlVG9XYWl0Rm9yQWxyZWFkeURpc3BhdGNoZWQgPSBmYWxzZTsKICAgICAgICAg
Ly8gSGFuZGxlIGFueSBtZXNzYWdlcyB0aGF0IGFyZSBibG9ja2VkIG9uIGEgcmVzcG9uc2UgZnJv
bSB1cy4KLSAgICAgICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZGlzcGF0Y2hNZXNz
YWdlcygpOworICAgICAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5kaXNwYXRjaE1l
c3NhZ2VzKFsmXShhdXRvIG5hbWVPZk1lc3NhZ2VUb0Rpc3BhdGNoLCB1aW50NjRfdCBkZXN0aW5h
dGlvbk9mTWVzc2FnZVRvRGlzcGF0Y2gpIHsKKyAgICAgICAgICAgIHdhc01lc3NhZ2VUb1dhaXRG
b3JBbHJlYWR5RGlzcGF0Y2hlZCB8PSBtZXNzYWdlTmFtZSA9PSBuYW1lT2ZNZXNzYWdlVG9EaXNw
YXRjaCAmJiBkZXN0aW5hdGlvbklEID09IGRlc3RpbmF0aW9uT2ZNZXNzYWdlVG9EaXNwYXRjaDsK
KyAgICAgICAgfSk7CiAKICAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3dhaXRGb3JNZXNzYWdlTXV0
ZXggfTsKIAorICAgICAgICBpZiAod2FzTWVzc2FnZVRvV2FpdEZvckFscmVhZHlEaXNwYXRjaGVk
KSB7CisgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2Ut
PmRlY29kZXIpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IFdURk1vdmUobV93YWl0aW5n
Rm9yTWVzc2FnZS0+ZGVjb2Rlcik7CiAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3MGM2YmI2ZDY0
YjI1ZmNlOWYyMzFmYmNlNzA4YzA1MTVmYjczNzg5Li5iNDFkODQ1NjA5N2ZmY2I2OTEwZDU5Mzk5
M2M2Zjc2YzJiOWVkZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0z
MzUsNiArMzM1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN5bnRo
ZXRpY0NsaWNrKCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWxKYXZh
U2NyaXB0RGlhbG9nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxs
YmFjaygpOyB9CisKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpIHsgfQogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI4OGY2MDgy
ZThmZGFlMGM4Nzk2N2M4ZTYyMTA1ZDdiYTFhOWQ4ZTUuLjAwMTU0OWEwZWM4ZWMxOTY5NTJjYjBk
Y2Y3NjRiZDlhM2EyNTMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTkyLDYgKzE5Miw3IEBACiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtNTY5MSw5ICs1NjkyLDI0IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoKQogICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMp
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFJlZlB0
cjxXZWJGcmFtZVByb3h5PiYmIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViUGFnZVByb3h5Jiwg
V2ViRnJhbWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKT4mJiBydW5EaWFsb2dD
YWxsYmFjaykKK3sKKyAgICBwYWdlQ2xpZW50KCkucnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgZnJhbWVJbmZvID0gV1RGTW92ZShmcmFtZUlu
Zm8pLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpLCBtZXNzYWdlLCBydW5EaWFsb2dDYWxsYmFjayA9
IFdURk1vdmUocnVuRGlhbG9nQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgaWYgKCFw
cm90ZWN0ZWRUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nID0gdHJ1ZTsKKyAgICAgICAgcnVu
RGlhbG9nQ2FsbGJhY2soKnByb3RlY3RlZFRoaXMsIGZyYW1lLmdldCgpLCBXVEZNb3ZlKGZyYW1l
SW5mbyksIG1lc3NhZ2UsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1Ro
aXMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1faXNSdW5uaW5nTW9k
YWxKYXZhU2NyaXB0RGlhbG9nID0gZmFsc2U7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCkpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAg
ICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC01NzA1LDEyICs1NzIxLDE4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmCiAgICAgICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lv
biA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCiAgICAgICAg
ICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsK
ICAgICB9Ci0gICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KCp0aGlzLCBtZXNzYWdl
LCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcGx5KSk7CisKKyAgICBydW5N
b2RhbEphdmFTY3JpcHREaWFsb2coV1RGTW92ZShmcmFtZSksIFdURk1vdmUoZnJhbWVJbmZvKSwg
bWVzc2FnZSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pIG11dGFi
bGUgeworICAgICAgICBwYWdlLm1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydChwYWdlLCBt
ZXNzYWdlLCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KSwgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICByZXBseSgpOworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICB9KTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJt
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIGZyYW1lKTsKIAogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkoKTsKQEAgLTU3MjMs
MTIgKzU3NDUsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICAgICAgICAgIGF1dG9t
YXRpb25TZXNzaW9uLT53aWxsU2hvd0phdmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAot
ICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRDb25maXJtKCp0aGlzLCBtZXNzYWdlLCBmcmFt
ZSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgcnVuTW9kYWxKYXZh
U2NyaXB0RGlhbG9nKFdURk1vdmUoZnJhbWUpLCBXVEZNb3ZlKGZyYW1lSW5mbyksIG1lc3NhZ2Us
IFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgcGFnZS5tX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybShwYWdlLCBtZXNzYWdl
LCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgY29t
cGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHJlcGx5KHJlc3VsdCk7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAg
ICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFBy
b21wdChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG1fcHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCkpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFtZSk7CiAKICAgICBl
eGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC01NzQxLDcgKzU3NjgsMTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJgogICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93
SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAgICAgfQogCi0gICAgbV91aUNsaWVudC0+cnVuSmF2
YVNjcmlwdFByb21wdCgqdGhpcywgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgV1RGTW92
ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgcnVuTW9kYWxKYXZhU2NyaXB0RGlh
bG9nKFdURk1vdmUoZnJhbWUpLCBXVEZNb3ZlKGZyYW1lSW5mbyksIG1lc3NhZ2UsIFtyZXBseSA9
IFdURk1vdmUocmVwbHkpLCBkZWZhdWx0VmFsdWVdKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pIG11dGFibGUg
eworICAgICAgICBwYWdlLm1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQocGFnZSwgbWVz
c2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KSwgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildKGF1dG8mIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXBseShyZXN1bHQpOworICAgICAgICAgICAg
Y29tcGxldGlvbigpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAzZjIxOTYxYzJmMDE4NWMyYjA5Njc0ZWQ2NmMzZmE3MWM0
OTMyYjIzLi43ZDU3M2RkZWVmNmY0YjhjOTM4M2YyNDIxNjc0MTRlYWFkYzk5Y2E1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTkyOCw2ICsxOTI4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q29jb2FWaWV3KFdLV2ViVmlldyAqKTsKICNlbmRpZgogCisgICAg
Ym9vbCBpc1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2coKSBjb25zdCB7IHJldHVybiBtX2lz
UnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZzsgfQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yNDcyLDYgKzI0
NzQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRVcGRhdGVFZGl0b3JTdGF0ZShjb25zdCBF
ZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JT
dGF0ZSk7CiAKKyAgICB2b2lkIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhSZWZQdHI8V2ViRnJh
bWVQcm94eT4mJiwgRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIEZyYW1lSW5m
b0RhdGEmJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKT4mJik7
CisKICAgICBjb25zdCBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3dlYlBhZ2VJRDsKICAgICBXZWFrUHRyPFBhZ2VDbGllbnQ+IG1fcGFnZUNs
aWVudDsKQEAgLTMwMDcsNiArMzAxMSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVu
ZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1J1bm5pbmdNb2RhbEphdmFTY3Jp
cHREaWFsb2cgeyBmYWxzZSB9OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTZkMTg1YzkwMTNk
MTkwNzU1YzUzNjE5YWVjMWJiMjQyM2IxNjEzOC4uM2ZiZTFiMTdmZjY2MDQ0OWU5OTNlZjdlOGFm
YzBiYTAwMjRmZDg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKQEAgLTI0NCw2ICsyNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
Tm90SGFuZGxlVGFwQXNNZWFuaW5nZnVsQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkgb3ZlcnJp
ZGU7CiAKKyAgICB2b2lkIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spIGZpbmFsOworCiAgICAgdm9pZCBkaWRDaGFuZ2VCYWNrZ3Jv
dW5kQ29sb3IoKSBvdmVycmlkZTsKICAgICB2b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hh
bmdlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQppbmRleCBjNGMzYTNjZjZkYTcwYWQzN2Y1MzdiOGVkMDEzNmQ0NmMw
OTQ1MTNkLi40MGI3NjIzNjM5ZmZhZDQxYjQ0MjQ2OGViMmUxODFhYTM0ZjAxNjUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0x
MDAwLDYgKzEwMDAsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlQXN5bmNocm9ub3Vz
Q2FuY2VsYWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqc2Nyb2wKIH0KICNlbmRpZgogCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIFttX2NvbnRlbnRWaWV3IHJ1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZzpXVEZNb3ZlKGNhbGxiYWNrKV07Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRl
eCBhYTIxOGUzMGMyNjVjMDc5MjU4MWEzNDFlY2VmZDBmMGFhMDU3MzE5Li44ODZhZTc1ZTY3YjU2
YWViMzgzNzg0ZjU5NmM5ZDhmNzI5MTI1NmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC02Miw2ICs2Miw3
IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5o
PgogI2ltcG9ydCA8d3RmL09wdGlvblNldC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CkBAIC00MzEsNiArNDMyLDcgQEAgZW51bSBjbGFzcyBQ
cm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbiA6IGJvb2wgewogICAgIE5TSW50ZWdlciBfc3VwcHJl
c3NOb25FZGl0YWJsZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNvdW50OwogICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSk+IF9kb21QYXN0
ZVJlcXVlc3RIYW5kbGVyOwogICAgIEJsb2NrUHRyPHZvaWQoVUlXS0F1dG9jb3JyZWN0aW9uQ29u
dGV4dCAqKT4gX3BlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4gX3BlbmRpbmdSdW5Nb2RhbEphdmFTY3JpcHREaWFsb2dDYWxs
YmFjazsKIAogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IF9hZGRpdGlvbmFsQ29udGV4dEZv
clN0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKIApAQCAtNjM5LDYgKzY0MSw3IEBAIEZPUl9FQUNI
X1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElP
Tl9GT1JfV0VCX1ZJRVcpCiAtIChCT09MKWVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9E
YXRlOihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0KXJlcXVlc3Q7CiAKIC0g
KHZvaWQpZG9BZnRlckVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQ6KGRpc3Bh
dGNoX2Jsb2NrX3QpYmxvY2s7CistICh2b2lkKXJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzooQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKWNhbGxiYWNrOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKIC0gKHZvaWQpX2RpZENoYW5nZURyYWdJbnRlcmFjdGlvblBvbGljeTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGFlMzk1YjlmZDM2ZDgzMjJhYzI1OGU5NDgyM2U2YjI5YmQwMzNjODkuLjdmNjU5
YjU5NGQ1NjQxZDg5OWJiYWI0YmJkZjY5MzAyNjQ2Yjg0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MTM0LDYgKzEzNCw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9P
cHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Njb3Bl
Lmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CkBAIC00NTA3LDcgKzQ1MDgs
NyBAQCAtICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKFVJV0tBdXRvY29ycgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKF9kb21QYXN0ZVJlcXVlc3RIYW5kbGVyKSB7CisgICAgaWYgKF9wYWdlLT5pc1J1bm5p
bmdNb2RhbEphdmFTY3JpcHREaWFsb2coKSB8fCBfZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcikgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2Nv
cnJlY3Rpb25Db250ZXh0V2l0aFdlYkNvbnRleHQ6X2xhc3RBdXRvY29ycmVjdGlvbkNvbnRleHRd
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1MzUsNiArNDUzNiwxNCBAQCAtICh2b2lk
KV9oYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQ6KGNvbnN0IFdlYktpdDo6V2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0JiljbwogICAgIFtzZWxmIF9pbnZva2VQZW5kaW5nQXV0b2NvcnJlY3Rpb25D
b250ZXh0SGFuZGxlcjpbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250
ZXh0V2l0aFdlYkNvbnRleHQ6Y29udGV4dF1dOwogfQogCistICh2b2lkKXJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZzooQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKWNhbGxiYWNrCit7CisgICAg
aWYgKF9pc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZCkKKyAgICAgICAgX3BlbmRpbmdSdW5N
b2RhbEphdmFTY3JpcHREaWFsb2dDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIGVs
c2UKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwogLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JNYWluRnJhbWUKIHsKICAgICAvLyBSZXNldCB0aGUgZG91YmxlIHRhcCBnZXN0dXJl
IHJlY29nbml6ZXIgdG8gcHJldmVudCBhbnkgZG91YmxlIGNsaWNrIHRoYXQgaXMgaW4gdGhlIHBy
b2Nlc3Mgb2YgYmVpbmcgcmVjb2duaXplZC4KQEAgLTYxNjYsNiArNjE3NSwxMSBAQCAtICh2b2lk
KV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
biYpaW5mb3JtYXRpb24gdQogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzQ2hhbmdpbmdGb2N1c0Zv
clNjb3BlIHsgX2lzQ2hhbmdpbmdGb2N1cywgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQgfTsKICAg
ICBTZXRGb3JTY29wZTxCT09MPiBpc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZEZvclNjb3Bl
IHsgX2lzRm9jdXNpbmdFbGVtZW50V2l0aEtleWJvYXJkLCBbc2VsZiBfc2hvdWxkU2hvd0tleWJv
YXJkRm9yRWxlbWVudDppbmZvcm1hdGlvbl0gfTsKIAorICAgIGF1dG8gcnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nQ2FsbGJhY2tJZk5lZWRlZCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBzdGQ6OmV4Y2hhbmdlKF9wZW5kaW5nUnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nQ2FsbGJhY2ssIHsgfSkpCisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgIH0p
OworCiAgICAgYXV0byBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6ZXhjaGFuZ2UoX2lu
cHV0Vmlld1VwZGF0ZURlZmVycmVyLCBudWxscHRyKTsKIAogICAgIF9kaWRBY2Nlc3NvcnlUYWJJ
bml0aWF0ZUZvY3VzID0gX2lzQ2hhbmdpbmdGb2N1c1VzaW5nQWNjZXNzb3J5VGFiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCBmYzg2ZTBlOTUxZGUxNTkyNDdhN2E0OGVmZjg5ODk5NjFjODFl
MTdkLi5kOTg5YTM2YmFjM2ZkZDdhZTJlMzA3NjliYzU5YzJlN2E5NzYxYjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtNDU2LDYgKzQ1Niw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGFsZXJ0VGV4dCkK
IAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBtX3BhZ2UuaW5qZWN0ZWRC
dW5kbGVVSUNsaWVudCgpLndpbGxSdW5KYXZhU2NyaXB0QWxlcnQoJm1fcGFnZSwgYWxlcnRUZXh0
LCB3ZWJGcmFtZSk7CisgICAgbV9wYWdlLnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxv
ZygpOwogCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsK
ICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25v
dXNJUENTY29wZTsKQEAgLTQ3Myw2ICs0NzQsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6cnVu
SmF2YVNjcmlwdENvbmZpcm0oRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
ICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVjdGVkQnVu
ZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oJm1fcGFnZSwgbWVzc2FnZSwg
d2ViRnJhbWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2co
KTsKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAg
ICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNocm9ub3Vz
SVBDU2NvcGU7CkBAIC00OTQsNiArNDk2LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkph
dmFTY3JpcHRQcm9tcHQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGMKIAog
ICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBtX3BhZ2UuaW5qZWN0ZWRCdW5k
bGVVSUNsaWVudCgpLndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KCZtX3BhZ2UsIG1lc3NhZ2UsIGRl
ZmF1bHRWYWx1ZSwgd2ViRnJhbWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFT
Y3JpcHREaWFsb2coKTsKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9u
RGlzYWJsZXI7CiAgICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRl
ZFN5bmNocm9ub3VzSVBDU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYzczNTcyMzkxM2JiMzA1YzE4ZTgxOWJlYzQwOGNmMTc3MjAyMWNkNS4u
YmM1MmJkZWUzN2Q4ZWM0ODJhNzkwZjA4YzI5NjViZTBmMDFjMTE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91
c2VVcEV2ZW50KCk7CisgICAgdm9pZCBwcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2co
KTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjMzNyw2ICsyMzM4LDcgQEAgcHJpdmF0ZToK
IGlubGluZSB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtV2lsbFBlcmZvcm1FZGl0aW5nQ29tbWFuZCgp
IHsgfQogaW5saW5lIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0
YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGlubGlu
ZSB2b2lkIFdlYlBhZ2U6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50
KCkgeyB9CitpbmxpbmUgdm9pZCBXZWJQYWdlOjpwcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHRE
aWFsb2coKSB7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTg0
MDI4OTljYmI4NzU0OGVmMzM4NjNhMDdmZDAwZmE2MmRlZjliZS4uYzVhOTM2NzExYjdiMjYwOGM4
N2ViOGZmNjc3MzRjYTg3ZGQzOTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI1ODgsNiArMjU4OCwyMSBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGF1dG9jb3JyZWN0
aW9uQ29udGV4dCgpKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZh
U2NyaXB0RGlhbG9nKCkKK3sKKyAgICBpZiAoIW1fZm9jdXNlZEVsZW1lbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9mb2N1c2VkRWxlbWVudC0+aGFzRWRpdGFibGVTdHlsZSgpICYm
ICFpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKm1fZm9jdXNlZEVsZW1lbnQpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBXaGVuIGEgbW9kYWwgZGlhbG9nIGlzIHByZXNlbnRlZCB3
aGlsZSBhbiBlZGl0YWJsZSBlbGVtZW50IGlzIGZvY3VzZWQsIFVJS2l0IHdpbGwgYXR0ZW1wdCB0
byByZXF1ZXN0IGEKKyAgICAvLyBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQsIHdoaWNoIHRyaWdn
ZXJzIHN5bmNocm9ub3VzIElQQyBiYWNrIHRvIHRoZSB3ZWIgcHJvY2VzcywgcmVzdWx0aW5nIGlu
IGRlYWRsb2NrLgorICAgIC8vIFRvIGF2b2lkIHRoaXMgZGVhZGxvY2ssIHdlIHByZWVtcHRpdmVs
eSBjb21wdXRlIGFuZCBzZW5kIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgZGF0YSB0byB0aGUgVUkg
cHJvY2VzcywKKyAgICAvLyBzdWNoIHRoYXQgdGhlIFVJIHByb2Nlc3MgY2FuIGltbWVkaWF0ZWx5
IHJlc3BvbmQgdG8gVUlLaXQgd2l0aG91dCBzeW5jaHJvbm91cyBJUEMgdG8gdGhlIHdlYiBwcm9j
ZXNzLgorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rp
b25Db250ZXh0KGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpKSk7Cit9CisKIHN0YXRpYyBIVE1MQW5j
aG9yRWxlbWVudCogY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgLy8gRklYTUU6IFRoZXJlIGlzIGNvZGUgaW4gdGhlIGRyYWcgY29udHJvbGxlciB0
aGF0IHN1cHBvcnRzIGFueSBsaW5rLCBldmVuIGlmIGl0J3Mgbm90IGFuIEhUTUxBbmNob3JFbGVt
ZW50LiBXaHkgaXMgdGhpcyBkaWZmZXJlbnQ/CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWI3MTI1MWNiMTQ2OGQ5ZDI1MGZh
MTRjNThlMWE3OGFhNTBiYWYxZS4uZWM2MWFjNWM2MzVhZTg0NmMzY2VmY2U1YTFjNDA1ZmIxMmRh
MzI1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTA1ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFVJIHByb2Nlc3MgaGFuZ3Mg
d2hlbiBzaG93aW5nIGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgd2hpbGUgZm9jdXNpbmcgYW4g
aW5wdXQgZmllbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNTQwOQorICAgICAgICByZGFyOi8vNzY3OTI0MDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlciwgQ2hyaXMgRHVtZXogYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRk
IGEgbGF5b3V0IHRlc3QgdGhhdCBleGVyY2lzZXMgdGhlIGRlYWRsb2NrLiBJbiB0aGUgY2FzZSB3
aGVyZSB3ZSBmYWlsLCB0aGlzIHRlc3Qgd2lsbCB0aW1lIG91dC4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1m
b2N1cy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNS0wMyAgUm9iZXJ0IEplbm5lciAgPGplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUy9pT1MgRGVidWcgXSBodHRwL3dwdC9jcnlwdG8v
dW53cmFwLXJzYS1rZXktY3Jhc2guYW55Lmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGZsYWt5IGNy
YXNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1h
bGVydC1kdXJpbmctZm9jdXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
aW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTU3NTk5ZTcyOWRjMTE1MTM4NjI1YTRjZDczYTI2ZmUzNGZlNTg2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5n
LWZvY3VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitBTEVSVDogVGhpcyBpcyBhIG1v
ZGFsIGFsZXJ0LgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcHJlc2VudGluZyBhIG1vZGFsIGFs
ZXJ0IHdoaWxlIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGlucHV0IGRvZXNuJ3QgY2F1c2UgdGhlIGFw
cGxpY2F0aW9uIHByb2Nlc3MgdG8gaGFuZy4gVG8gdmVyaWZ5IG1hbnVhbGx5LCB0YXAgdGhlIHRl
eHQgZmllbGQgYWJvdmUsIGFuZCBjaGVjayB0aGF0IHRoZSBKYXZhU2NyaXB0IGFsZXJ0IGlzIHBy
ZXNlbnRlZCB3aXRoIG5vIHNpZ25pZmljYW50IGRlbGF5IChpLmUuIGEgMS1zZWNvbmQgaGFuZyku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvbmVTaG93aW5nQWxlcnQg
YmVjYW1lIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2Rh
bC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9z
aG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MTM2YjRhZDk1
ODk5NTcyZDM4ZWY1ODcwN2U2YmI2NzE4MGFmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbApA
QCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1l
b3V0cz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxl
PW5vIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6
IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCitpbnB1dCB7CisgICAgZm9udC1zaXplOiAyMHB4
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IHBsYWNlaG9sZGVyPSJUYXAg
dG8gc2hvdyBhbiBhbGVydCIgdHlwZT0idGV4dCI+PC9pbnB1dD4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRTaG91bGREaXNtaXNzSmF2YVNjcmlw
dEFsZXJ0c0FzeW5jaHJvbm91c2x5KHRydWUpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Rv
bmVTaG93aW5nQWxlcnQgPSBmYWxzZTsKKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5j
ICgpID0+IHsKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcHJlc2Vu
dGluZyBhIG1vZGFsIGFsZXJ0IHdoaWxlIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGlucHV0IGRvZXNu
J3QgY2F1c2UgdGhlIGFwcGxpY2F0aW9uIHByb2Nlc3MgdG8gaGFuZy4gVG8gdmVyaWZ5IG1hbnVh
bGx5LCB0YXAgdGhlIHRleHQgZmllbGQgYWJvdmUsIGFuZCBjaGVjayB0aGF0IHRoZSBKYXZhU2Ny
aXB0IGFsZXJ0IGlzIHByZXNlbnRlZCB3aXRoIG5vIHNpZ25pZmljYW50IGRlbGF5IChpLmUuIGEg
MS1zZWNvbmQgaGFuZykuIik7CisKKyAgICB0ZXh0RmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJpbnB1dCIpOworICAgIHRleHRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsICgp
ID0+IHsKKyAgICAgICAgYWxlcnQoIlRoaXMgaXMgYSBtb2RhbCBhbGVydC4iKTsKKyAgICAgICAg
ZG9uZVNob3dpbmdBbGVydCA9IHRydWU7CisgICAgfSk7CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVs
ZW1lbnQodGV4dEZpZWxkKTsKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgiZG9uZVNob3dpbmdBbGVy
dCIsICJ0cnVlIiwgZmluaXNoSlNUZXN0KTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427892</attachid>
            <date>2021-05-06 09:14:39 -0700</date>
            <delta_ts>2021-05-06 09:54:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225409-20210506091438.patch</filename>
            <type>text/plain</type>
            <size>28046</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhNTdkYTQ0YWFlYjVmNjRm
YjUxM2Y4ZWE2YTA5MmFlZDFlMzhkZDEuLmQ5NDM1YTYxODE5OWM5MzE1ZTRlYzc4YWU0MGNjOTA2
NWJhMDYyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBoYW5ncyB3aGVuIHNob3dpbmcgYSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZyB3aGlsZSBmb2N1
c2luZyBhbiBpbnB1dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1NDA5CisgICAgICAgIHJkYXI6Ly83Njc5MjQwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLCBDaHJpcyBEdW1leiBhbmQgVGltIEhvcnRvbi4KKworICAg
ICAgICBDb25zaWRlciB0aGUgc2NlbmFyaW8gd2hlcmUgYW4gaW5wdXQgZmllbGQgaGFzIGEgZm9j
dXMgZXZlbnQgaGFuZGxlciB0aGF0IHNob3dzIGEgbW9kYWwgSmF2YVNjcmlwdCBkaWFsb2cgKGUu
Zy4KKyAgICAgICAgY29uZmlybSwgYWxlcnQsIHByb21wdCkuIFdlIGdldCB0aGUgZm9sbG93aW5n
IHNlcXVlbmNlIG9mIGV2ZW50cyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAgIChXRUIpICAg
VGhlIHRleHQgZmllbGQgaXMgZm9jdXNlZCwgYW5kIHNlbmRzIFdlYlBhZ2VQcm94eTo6RWxlbWVu
dERpZEZvY3VzLiBBIG1vZGFsIGRpYWxvZyBpcyB0aGVuIHRyaWdnZXJlZCBieQorICAgICAgICAg
ICAgICAgIHNjcmlwdCBpbnNpZGUgdGhlIGZvY3VzIGV2ZW50IGhhbmRsZXIsIHNlbmRpbmcgYSBt
ZXNzYWdlIGxpa2UgV2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQuCisKKyAgICAgICAg
KFVJKSAgICBUaGUgVUkgcHJvY2VzcyByZWNlaXZlcyBXZWJQYWdlUHJveHk6OkVsZW1lbnREaWRG
b2N1cywgYW5kIGNhbGxzIGAtcmVsb2FkSW5wdXRWaWV3c2Agd2hpbGUgc2hvd2luZyB0aGUKKyAg
ICAgICAgICAgICAgICBrZXlib2FyZC4gVUlLaXQgbWF5IHRoZW4gY2FsbCBiYWNrIGludG8gYC1y
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOmAsIHdoaWNo
CisgICAgICAgICAgICAgICAgdHJpZ2dlcnMgc3luYyBJUEMgYmFjayB0byB0aGUgd2ViIHByb2Nl
c3MuIFdoaWxlIHdhaXRpbmcgdG8gcmVjZWl2ZSBhIHJlc3BvbnNlIG1lc3NhZ2UsIHdlIHJlY2Vp
dmUgYW5kCisgICAgICAgICAgICAgICAgZGlzcGF0Y2ggV2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0QWxlcnQuCisKKyAgICAgICAgQXQgdGhpcyBwb2ludCwgdGhlIFVJIHByb2Nlc3MgaXMgc3Rp
bGwgd2FpdGluZyBmb3IgYSBIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQgcmVzcG9uc2UgSVBD
IG1lc3NhZ2UsIGJ1dCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMgYmxvY2tlZCBvbiBhIHJl
c3BvbnNlIHRvIHRoZSBtb2RhbCBKYXZhU2NyaXB0IGRpYWxvZzsgc2luY2UgYm90aCBwcm9jZXNz
ZXMgYXJlIGJsb2NrZWQgb24gZWFjaAorICAgICAgICBvdGhlciwgd2UncmUgbm93IGluIGRlYWRs
b2NrLgorCisgICAgICAgIFRvIG1pdGlnYXRlIHRoaXMsIHdlIGNhbiBwcmVlbXB0aXZlbHkgc2Vu
ZCBhdXRvY29ycmVjdGlvbiBjb250ZXh0IGRhdGEgcmlnaHQgYmVmb3JlIHdlJ3JlIGFib3V0IHRv
IHN5bmNocm9ub3VzbHkKKyAgICAgICAgYmxvY2sgaW4gdGhlIHdlYiBwcm9jZXNzIG9uIGEgbW9k
YWwgZGlhbG9nLiBJbiB0aGUgVUkgcHJvY2Vzcywgd2UgdXNlIHRoaXMgYXV0b2NvcnJlY3Rpb24g
Y29udGV4dCBvYmplY3QgdG8KKyAgICAgICAgaW1tZWRpYXRlbHkgc3RvcCBzeW5jd2FpdGluZyBm
b3IgYSBIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQgcmVzcG9uc2UuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFs
LWFsZXJ0LWR1cmluZy1mb2N1cy5odG1sCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2Fn
ZSk6CisKKyAgICAgICAgTWFrZSBhIHNsaWdodCBhZGp1c3RtZW50IGhlcmUgc28gdGhhdCBgd2Fp
dEZvck1lc3NhZ2VgIGJhaWxzIGlmIG9uZSBvZiB0aGUgbWVzc2FnZXMgd2UncmUgZGlzcGF0Y2hp
bmcgdW5kZXJuZWF0aAorICAgICAgICBgU3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdl
c2AgaXMgdGhlIG1lc3NhZ2Ugd2UgaGFwcGVuIHRvIGJlIHdhaXRpbmcgZm9yIGFueXdheXMuIElu
IHRoaXMgY2FzZSwgaXQncworICAgICAgICBuZWNlc3NhcnkgaW4gb3JkZXIgZm9yIHRoZSBwcmVl
bXB0aXZlIGBXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dGAgbWVzc2Fn
ZSBzZW50IGJ5IHRoZSB3ZWIKKyAgICAgICAgcHJvY2VzcyB0byB1bmJsb2NrIHRoZSBVSSBwcm9j
ZXNzLCB3aGljaCBpcyB3YWl0aW5nIGZvciBhIGBXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dGAgcmVzcG9uc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpydW5Nb2RhbEphdmFTY3JpcHREaWFs
b2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisKKyAgICAgICAgV3JhcCBjYWxs
cyB0byBgcnVuSmF2YVNjcmlwdChBbGVydHxDb25maXJtfFByb21wdClgIHVuZGVybmVhdGggYSBu
ZXcgcGFnZSBjbGllbnQgbWV0aG9kIHRoYXQgdGFrZXMgYSBibG9jaywKKyAgICAgICAgYHJ1bk1v
ZGFsSmF2YVNjcmlwdERpYWxvZ2AuIFNlZSBgLVtXS0NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZzpdYCBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29t
cGxldGlvbkhhbmRsZXI6XSk6CisKKyAgICAgICAgQXZvaWQgYmxvY2tpbmcgb24gdGhlIHdlYiBw
cm9jZXNzIGlmIGl0J3Mgd2FpdGluZyBvbiBhIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIGFueXdh
eXM7IGp1c3QgdXNlIHRoZSBsYXN0CisgICAgICAgIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgd2Ug
cmVjZWl2ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MgKHdoaWNoIHdlIGtub3cgbXVzdCd2ZSBiZWVu
IHNlbnQgcmlnaHQgYmVmb3JlIHNob3dpbmcKKyAgICAgICAgdGhlIG1vZGFsIGRpYWxvZyBhbnl3
YXlzKS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxv
ZzpdKToKKworICAgICAgICBJbiB0aGUgY2FzZSB3aGVyZSB3ZSdyZSBpbiB0aGUgcHJvY2VzcyBv
ZiBwcmVzZW50aW5nIHRoZSBrZXlib2FyZCAob3IgVUNCKSBvbiBpT1MgYWZ0ZXIgZm9jdXNpbmcg
YW4gaW5wdXQgZmllbGQsCisgICAgICAgIGF2b2lkIGltbWVkaWF0ZWx5IGFsbG93aW5nIHRoZSBj
bGllbnQgdG8gc2hvdyBhbnkgbW9kYWwgVUkgdW50aWwgd2UncmUgZG9uZSBtYW5hZ2luZyBrZXli
b2FyZCBsb2dpYyBpbiBXZWJLaXQuCisgICAgICAgIFdpdGhvdXQgdGhpcyBhZGp1c3RtZW50LCB3
ZSdsbCBlbmQgdXAgdHJ5aW5nIHRvIHByZXNlbnQgdGhlIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9n
IGluIHRoZSBtaWRkbGUgb2YgVUlLaXQncworICAgICAgICBjYWxsIHRvIGAtcmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjpgLCB3aGljaCB0aGVuIGNhdXNl
cyBVSUtpdCB0byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAgdW5kZXJuZWF0aCBrZXlib2Fy
ZCBjb2RlLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2Vy
SXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJP
YmplY3Q6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlw
dENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRQcm9tcHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6
CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIHByZWVtcHRpdmVseSBjb21wdXRlIGFuZCBzZW5kIGBX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHRgIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3Mgb24gaU9TLCBp
biB0aGUgY2FzZQorICAgICAgICB3aGVyZSB3ZSdyZSBhYm91dCB0byBzaG93IGEgbW9kYWwgSmF2
YVNjcmlwdCBkaWFsb2cgYW5kIHRoZXJlIGlzIGFuIGVkaXRhYmxlIGZvY3VzZWQgZWxlbWVudC4g
V2hpbGUgdGhlIG1vZGFsCisgICAgICAgIGRpYWxvZyBpcyBzaG93biwgd2UnbGwgdXNlIHRoaXMg
aW5mb3JtYXRpb24gdG8gaW1tZWRpYXRlbHkgcmVzcG9uZCB0byBVSUtpdCdzIGF1dG9jb3JyZWN0
aW9uIGNvbnRleHQgcmVxdWVzdHMsCisgICAgICAgIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGJsb2Nr
IG9uIHJlc3BvbnNlcyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyk6CisKIDIwMjEtMDUtMDMgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENyYXNoIHdo
ZW4gdGFwcGluZyBmaWVsZHMgb24gY3ljbGUudHJhdmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IGQ3ODYyZmI1YzA0ODcwNmNlNTg5M2ZiYzdmNzMyZTdj
NTQ4NTUyNGYuLmY3OWZkZGE4YjFiMmI0MDlmMTgwMzc3MjdiYWVlYWZhY2I5OTNhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBzeW5j
IG1lc3NhZ2VzLgotICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOworICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlcyhGdW5jdGlvbjx2b2lkKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCk+JiYgd2lsbERp
c3BhdGNoTWVzc2FnZSA9IHsgfSk7CiAKICAgICAvLyBBZGQgbWF0Y2hpbmcgcGVuZGluZyBtZXNz
YWdlcyB0byB0aGUgcHJvdmlkZWQgTWVzc2FnZVJlY2VpdmVRdWV1ZS4KICAgICB2b2lkIGVucXVl
dWVNYXRjaGluZ01lc3NhZ2VzKENvbm5lY3Rpb24mLCBNZXNzYWdlUmVjZWl2ZVF1ZXVlJiwgUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBi
b29sIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENvbm5l
Y3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoKQordm9pZCBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQoTWVz
c2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIwNiw4ICsyMDYsMTIgQEAgdm9pZCBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIHdoaWxlICghbV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpCi0g
ICAgICAgIG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQudGFrZUZpcnN0KCkuZGlzcGF0Y2goKTsK
KyAgICB3aGlsZSAoIW1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGF1dG8gbWVzc2FnZVRvRGlzcGF0Y2ggPSBtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLnRh
a2VGaXJzdCgpOworICAgICAgICBpZiAod2lsbERpc3BhdGNoTWVzc2FnZSkKKyAgICAgICAgICAg
IHdpbGxEaXNwYXRjaE1lc3NhZ2UobWVzc2FnZVRvRGlzcGF0Y2gubWVzc2FnZS0+bWVzc2FnZU5h
bWUoKSwgbWVzc2FnZVRvRGlzcGF0Y2gubWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKTsKKyAgICAg
ICAgbWVzc2FnZVRvRGlzcGF0Y2guZGlzcGF0Y2goKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1
bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpA
QCAtNTY3LDEwICs1NzEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW4KICAgICAvLyBOb3cg
d2FpdCBmb3IgaXQgdG8gYmUgc2V0LgogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIEhh
bmRsZSBhbnkgbWVzc2FnZXMgdGhhdCBhcmUgYmxvY2tlZCBvbiBhIHJlc3BvbnNlIGZyb20gdXMu
Ci0gICAgICAgIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMo
KTsKKyAgICAgICAgYm9vbCB3YXNNZXNzYWdlVG9XYWl0Rm9yQWxyZWFkeURpc3BhdGNoZWQgPSBm
YWxzZTsKKyAgICAgICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZGlzcGF0Y2hNZXNz
YWdlcyhbJl0oYXV0byBuYW1lT2ZNZXNzYWdlVG9EaXNwYXRjaCwgdWludDY0X3QgZGVzdGluYXRp
b25PZk1lc3NhZ2VUb0Rpc3BhdGNoKSB7CisgICAgICAgICAgICB3YXNNZXNzYWdlVG9XYWl0Rm9y
QWxyZWFkeURpc3BhdGNoZWQgfD0gbWVzc2FnZU5hbWUgPT0gbmFtZU9mTWVzc2FnZVRvRGlzcGF0
Y2ggJiYgZGVzdGluYXRpb25JRCA9PSBkZXN0aW5hdGlvbk9mTWVzc2FnZVRvRGlzcGF0Y2g7Cisg
ICAgICAgIH0pOwogCiAgICAgICAgIExvY2tlciBsb2NrIHsgbV93YWl0Rm9yTWVzc2FnZU11dGV4
IH07CiAKKyAgICAgICAgaWYgKHdhc01lc3NhZ2VUb1dhaXRGb3JBbHJlYWR5RGlzcGF0Y2hlZCkg
eworICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9IG51bGxwdHI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5k
ZWNvZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBXVEZNb3ZlKG1fd2FpdGluZ0Zv
ck1lc3NhZ2UtPmRlY29kZXIpOwogICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNzBjNmJiNmQ2NGIy
NWZjZTlmMjMxZmJjZTcwOGMwNTE1ZmI3Mzc4OS4uYjQxZDg0NTYwOTdmZmNiNjkxMGQ1OTM5OTNj
NmY3NmMyYjllZGUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzM1
LDYgKzMzNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0
aWNDbGljaygpID0gMDsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgY2FsbGJh
Y2soKTsgfQorCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFn
YXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKSB7IH0KICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyODhmNjA4MmU4
ZmRhZTBjODc5NjdjOGU2MjEwNWQ3YmExYTlkOGU1Li4wMDE1NDlhMGVjOGVjMTk2OTUyY2IwZGNm
NzY0YmQ5YTNhMjUzMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTE5Miw2ICsxOTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTU2OTEsOSArNTY5MiwyNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKCkKICAgICBtX3VpQ2xpZW50LT5jbG9zZSh0aGlzKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhSZWZQdHI8
V2ViRnJhbWVQcm94eT4mJiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSYsIFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+JiYgcnVuRGlhbG9nQ2Fs
bGJhY2spCit7CisgICAgcGFnZUNsaWVudCgpLnJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZyhbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGZyYW1lSW5mbyA9IFdURk1vdmUoZnJhbWVJbmZv
KSwgZnJhbWUgPSBXVEZNb3ZlKGZyYW1lKSwgbWVzc2FnZSwgcnVuRGlhbG9nQ2FsbGJhY2sgPSBX
VEZNb3ZlKHJ1bkRpYWxvZ0NhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7CisgICAgICAgIGlmICghcHJv
dGVjdGVkVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2lzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyA9IHRydWU7CisgICAgICAgIHJ1bkRp
YWxvZ0NhbGxiYWNrKCpwcm90ZWN0ZWRUaGlzLCBmcmFtZS5nZXQoKSwgV1RGTW92ZShmcmFtZUlu
Zm8pLCBtZXNzYWdlLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlz
LmdldCgpKSkKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2lzUnVubmluZ01vZGFs
SmF2YVNjcmlwdERpYWxvZyA9IGZhbHNlOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAg
ZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVseSgpOwpAQCAtNTcwNSwxMiArNTcyMSwxOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJiYgZgogICAgICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24g
PSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAg
ICAgYXV0b21hdGlvblNlc3Npb24tPndpbGxTaG93SmF2YVNjcmlwdERpYWxvZygqdGhpcyk7CiAg
ICAgfQotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRBbGVydCgqdGhpcywgbWVzc2FnZSwg
ZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkpOworCisgICAgcnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKFdURk1vdmUoZnJhbWUpLCBXVEZNb3ZlKGZyYW1lSW5mbyksIG1l
c3NhZ2UsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uKSBtdXRhYmxl
IHsKKyAgICAgICAgcGFnZS5tX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0QWxlcnQocGFnZSwgbWVz
c2FnZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSks
IGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgcmVwbHkoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNz
LCBmcmFtZSk7CiAKICAgICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC01NzIzLDEy
ICs1NzQ1LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmCiAgICAgICAgICAgICBhdXRvbWF0
aW9uU2Vzc2lvbi0+d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9nKCp0aGlzKTsKICAgICB9CiAKLSAg
ICBtX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSgqdGhpcywgbWVzc2FnZSwgZnJhbWUs
IFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZyhXVEZNb3ZlKGZyYW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBb
cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbikgbXV0YWJsZSB7CisgICAg
ICAgIHBhZ2UubV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdENvbmZpcm0ocGFnZSwgbWVzc2FnZSwg
ZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSksIGNvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICByZXBseShyZXN1bHQpOworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAg
ICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9t
cHQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpKTsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogCiAgICAgZXhp
dEZ1bGxzY3JlZW5JbW1lZGlhdGVseSgpOwpAQCAtNTc0MSw3ICs1NzY4LDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT53aWxsU2hvd0ph
dmFTY3JpcHREaWFsb2coKnRoaXMpOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQtPnJ1bkphdmFT
Y3JpcHRQcm9tcHQoKnRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgV1RGTW92ZShyZXBseSkpOworICAgIHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxv
ZyhXVEZNb3ZlKGZyYW1lKSwgV1RGTW92ZShmcmFtZUluZm8pLCBtZXNzYWdlLCBbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KSwgZGVmYXVsdFZhbHVlXShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uKSBtdXRhYmxlIHsK
KyAgICAgICAgcGFnZS5tX3VpQ2xpZW50LT5ydW5KYXZhU2NyaXB0UHJvbXB0KHBhZ2UsIG1lc3Nh
Z2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgW3JlcGx5ID0gV1RG
TW92ZShyZXBseSksIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXShhdXRvJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVwbHkocmVzdWx0KTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb24oKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggM2YyMTk2MWMyZjAxODVjMmIwOTY3NGVkNjZjM2ZhNzFjNDkz
MmIyMy4uN2Q1NzNkZGVlZjZmNGI4YzkzODNmMjQyMTY3NDE0ZWFhZGM5OWNhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5MjgsNiArMTkyOCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvY29hVmlldyhXS1dlYlZpZXcgKik7CiAjZW5kaWYKIAorICAgIGJv
b2wgaXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1
bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2c7IH0KKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjQ3Miw2ICsyNDc0
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkVXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRp
dG9yU3RhdGUmIG9sZEVkaXRvclN0YXRlLCBjb25zdCBFZGl0b3JTdGF0ZSYgbmV3RWRpdG9yU3Rh
dGUpOwogCisgICAgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coUmVmUHRyPFdlYkZyYW1l
UHJveHk+JiYsIEZyYW1lSW5mb0RhdGEmJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUluZm9E
YXRhJiYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+JiYpOwor
CiAgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2Vha1B0cjxQYWdlQ2xpZW50PiBtX3BhZ2VDbGll
bnQ7CkBAIC0zMDA3LDYgKzMwMTEsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3N1c3BlbmRN
ZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0
RGlhbG9nIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2ZDE4NWM5MDEzZDE5
MDc1NWM1MzYxOWFlYzFiYjI0MjNiMTYxMzguLjNmYmUxYjE3ZmY2NjA0NDllOTkzZWY3ZThhZmMw
YmEwMDI0ZmQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCkBAIC0yNDQsNiArMjQ0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE5v
dEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpIG92ZXJyaWRl
OwogCisgICAgdm9pZCBydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKwogICAgIHZvaWQgZGlkQ2hhbmdlQmFja2dyb3Vu
ZENvbG9yKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5n
ZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KaW5kZXggYzRjM2EzY2Y2ZGE3MGFkMzdmNTM3YjhlZDAxMzZkNDZjMDk0
NTEzZC4uNDBiNzYyMzYzOWZmYWQ0MWI0NDI0NjhlYjJlMTgxYWEzNGYwMTY1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTAw
MCw2ICsxMDAwLDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUFzeW5jaHJvbm91c0Nh
bmNlbGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKnNjcm9sCiB9CiAjZW5kaWYKIAordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBbbV9jb250ZW50VmlldyBydW5Nb2RhbEph
dmFTY3JpcHREaWFsb2c6V1RGTW92ZShjYWxsYmFjayldOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXgg
YWEyMThlMzBjMjY1YzA3OTI1ODFhMzQxZWNlZmQwZjBhYTA1NzMxOS4uODg2YWU3NWU2N2I1NmFl
YjM4Mzc4NGY1OTZjOWQ4ZjcyOTEyNTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNjIsNiArNjIsNyBA
QAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4K
ICNpbXBvcnQgPHd0Zi9PcHRpb25TZXQuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgpAQCAtNDMxLDYgKzQzMiw3IEBAIGVudW0gY2xhc3MgUHJv
Y2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24gOiBib29sIHsKICAgICBOU0ludGVnZXIgX3N1cHByZXNz
Tm9uRWRpdGFibGVTaW5nbGVUYXBUZXh0SW50ZXJhY3Rpb25Db3VudDsKICAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiBfZG9tUGFzdGVS
ZXF1ZXN0SGFuZGxlcjsKICAgICBCbG9ja1B0cjx2b2lkKFVJV0tBdXRvY29ycmVjdGlvbkNvbnRl
eHQgKik+IF9wZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcjsKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IF9wZW5kaW5nUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nQ2FsbGJh
Y2s7CiAKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBfYWRkaXRpb25hbENvbnRleHRGb3JT
dHJvbmdQYXNzd29yZEFzc2lzdGFuY2U7CiAKQEAgLTYzOSw2ICs2NDEsNyBAQCBGT1JfRUFDSF9Q
UklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05f
Rk9SX1dFQl9WSUVXKQogLSAoQk9PTCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0
ZTooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0OwogCiAtICh2
b2lkKWRvQWZ0ZXJFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50OihkaXNwYXRj
aF9ibG9ja190KWJsb2NrOworLSAodm9pZClydW5Nb2RhbEphdmFTY3JpcHREaWFsb2c6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljYWxsYmFjazsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnSW50ZXJhY3Rpb25Qb2xpY3k7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCBhZTM5NWI5ZmQzNmQ4MzIyYWMyNThlOTQ4MjNlNmIyOWJkMDMzYzg5Li43ZjY1OWI1
OTRkNTY0MWQ4OTliYmFiNGJiZGY2OTMwMjY0NmI4NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTEz
NCw2ICsxMzQsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvT3B0
aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5o
PgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIu
aD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgpAQCAtNDUwNyw3ICs0NTA4LDcg
QEAgLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShVSVdLQXV0b2NvcnIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChfZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcikgeworICAgIGlmIChfcGFnZS0+aXNSdW5uaW5n
TW9kYWxKYXZhU2NyaXB0RGlhbG9nKCkgfHwgX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXIpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3Jy
ZWN0aW9uQ29udGV4dFdpdGhXZWJDb250ZXh0Ol9sYXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0XSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NTM1LDYgKzQ1MzYsMTQgQEAgLSAodm9pZClf
aGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Oihjb25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dCYpY28KICAgICBbc2VsZiBfaW52b2tlUGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29u
dGV4dEhhbmRsZXI6W1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4
dFdpdGhXZWJDb250ZXh0OmNvbnRleHRdXTsKIH0KIAorLSAodm9pZClydW5Nb2RhbEphdmFTY3Jp
cHREaWFsb2c6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljYWxsYmFjaworeworICAgIGlm
IChfaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmQpCisgICAgICAgIF9wZW5kaW5nUnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBlbHNl
CisgICAgICAgIGNhbGxiYWNrKCk7Cit9CisKIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yTWFpbkZyYW1lCiB7CiAgICAgLy8gUmVzZXQgdGhlIGRvdWJsZSB0YXAgZ2VzdHVyZSBy
ZWNvZ25pemVyIHRvIHByZXZlbnQgYW55IGRvdWJsZSBjbGljayB0aGF0IGlzIGluIHRoZSBwcm9j
ZXNzIG9mIGJlaW5nIHJlY29nbml6ZWQuCkBAIC02MTY2LDYgKzYxNzUsMTEgQEAgLSAodm9pZClf
ZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24m
KWluZm9ybWF0aW9uIHUKICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0NoYW5naW5nRm9jdXNGb3JT
Y29wZSB7IF9pc0NoYW5naW5nRm9jdXMsIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50IH07CiAgICAg
U2V0Rm9yU2NvcGU8Qk9PTD4gaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmRGb3JTY29wZSB7
IF9pc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZCwgW3NlbGYgX3Nob3VsZFNob3dLZXlib2Fy
ZEZvckVsZW1lbnQ6aW5mb3JtYXRpb25dIH07CiAKKyAgICBhdXRvIHJ1bk1vZGFsSmF2YVNjcmlw
dERpYWxvZ0NhbGxiYWNrSWZOZWVkZWQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShfcGVuZGluZ1J1bk1vZGFsSmF2YVNjcmlw
dERpYWxvZ0NhbGxiYWNrLCB7IH0pKQorICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsK
KwogICAgIGF1dG8gaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6OmV4Y2hhbmdlKF9pbnB1
dFZpZXdVcGRhdGVEZWZlcnJlciwgbnVsbHB0cik7CiAKICAgICBfZGlkQWNjZXNzb3J5VGFiSW5p
dGlhdGVGb2N1cyA9IF9pc0NoYW5naW5nRm9jdXNVc2luZ0FjY2Vzc29yeVRhYjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggZmM4NmUwZTk1MWRlMTU5MjQ3YTdhNDhlZmY4OTg5OTYxYzgxZTE3
ZC4uZDk4OWEzNmJhYzNmZGQ3YWUyZTMwNzY5YmM1OWMyZTdhOTc2MWI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTQ1Niw2ICs0NTYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVu
SmF2YVNjcmlwdEFsZXJ0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBhbGVydFRleHQpCiAK
ICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVjdGVkQnVu
ZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KCZtX3BhZ2UsIGFsZXJ0VGV4dCwg
d2ViRnJhbWUpOworICAgIG1fcGFnZS5wcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2co
KTsKIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAg
ICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNocm9ub3Vz
SVBDU2NvcGU7CkBAIC00NzMsNiArNDc0LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkph
dmFTY3JpcHRDb25maXJtKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAg
ICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1fcGFnZS5pbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKCZtX3BhZ2UsIG1lc3NhZ2UsIHdl
YkZyYW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7
CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogICAg
IElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQ
Q1Njb3BlOwpAQCAtNDk0LDYgKzQ5Niw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5KYXZh
U2NyaXB0UHJvbXB0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjCiAKICAg
ICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLmluamVjdGVkQnVuZGxl
VUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdFByb21wdCgmbV9wYWdlLCBtZXNzYWdlLCBkZWZh
dWx0VmFsdWUsIHdlYkZyYW1lKTsKKyAgICBtX3BhZ2UucHJlcGFyZVRvUnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nKCk7CiAKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRp
c2FibGVyOwogICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRT
eW5jaHJvbm91c0lQQ1Njb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGM3MzU3MjM5MTNiYjMwNWMxOGU4MTliZWM0MDhjZjE3NzIwMjFjZDUuLmJj
NTJiZGVlMzdkOGVjNDgyYTc5MGYwOGMyOTY1YmUwZjAxYzExOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNl
VXBFdmVudCgpOworICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7
CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTIzMzcsNiArMjMzOCw3IEBAIHByaXZhdGU6CiBp
bmxpbmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKSB7
IH0KIGlubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0
ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUg
dm9pZCBXZWJQYWdlOjpkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgp
IHsgfQoraW5saW5lIHZvaWQgV2ViUGFnZTo6cHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlh
bG9nKCkgeyB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDU4NDAy
ODk5Y2JiODc1NDhlZjMzODYzYTA3ZmQwMGZhNjJkZWY5YmUuLmM1YTkzNjcxMWI3YjI2MDhjODdl
YjhmZjY3NzM0Y2E4N2RkMzk0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNTg4LDYgKzI1ODgsMjEgQEAgdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChhdXRvY29ycmVjdGlv
bkNvbnRleHQoKSkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnByZXBhcmVUb1J1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZygpCit7CisgICAgaWYgKCFtX2ZvY3VzZWRFbGVtZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIW1fZm9jdXNlZEVsZW1lbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSAmJiAh
aXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCptX2ZvY3VzZWRFbGVtZW50KSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gV2hlbiBhIG1vZGFsIGRpYWxvZyBpcyBwcmVzZW50ZWQgd2hp
bGUgYW4gZWRpdGFibGUgZWxlbWVudCBpcyBmb2N1c2VkLCBVSUtpdCB3aWxsIGF0dGVtcHQgdG8g
cmVxdWVzdCBhCisgICAgLy8gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LCB3aGljaCB0cmlnZ2Vy
cyBzeW5jaHJvbm91cyBJUEMgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MsIHJlc3VsdGluZyBpbiBk
ZWFkbG9jay4KKyAgICAvLyBUbyBhdm9pZCB0aGlzIGRlYWRsb2NrLCB3ZSBwcmVlbXB0aXZlbHkg
Y29tcHV0ZSBhbmQgc2VuZCBhdXRvY29ycmVjdGlvbiBjb250ZXh0IGRhdGEgdG8gdGhlIFVJIHBy
b2Nlc3MsCisgICAgLy8gc3VjaCB0aGF0IHRoZSBVSSBwcm9jZXNzIGNhbiBpbW1lZGlhdGVseSBy
ZXNwb25kIHRvIFVJS2l0IHdpdGhvdXQgc3luY2hyb25vdXMgSVBDIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9u
Q29udGV4dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOworfQorCiBzdGF0aWMgSFRNTEFuY2hv
ckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBkcmFnIGNvbnRyb2xsZXIgdGhh
dCBzdXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBhbiBIVE1MQW5jaG9yRWxlbWVu
dC4gV2h5IGlzIHRoaXMgZGlmZmVyZW50PwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGViNzEyNTFjYjE0NjhkOWQyNTBmYTE0
YzU4ZTFhNzhhYTUwYmFmMWUuLmVjNjFhYzVjNjM1YWU4NDZjM2NlZmNlNWExYzQwNWZiMTJkYTMy
NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0wNSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVSSBwcm9jZXNzIGhhbmdzIHdo
ZW4gc2hvd2luZyBhIG1vZGFsIEphdmFTY3JpcHQgZGlhbG9nIHdoaWxlIGZvY3VzaW5nIGFuIGlu
cHV0IGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU0MDkKKyAgICAgICAgcmRhcjovLzc2NzkyNDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIsIENocmlzIER1bWV6IGFuZCBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBh
IGxheW91dCB0ZXN0IHRoYXQgZXhlcmNpc2VzIHRoZSBkZWFkbG9jay4gSW4gdGhlIGNhc2Ugd2hl
cmUgd2UgZmFpbCwgdGhpcyB0ZXN0IHdpbGwgdGltZSBvdXQuCisKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3Mvc2hvdy1tb2RhbC1hbGVydC1kdXJpbmctZm9j
dXMuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMDMgIFJvYmVydCBKZW5uZXIgIDxqZW5uZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MvaU9TIERlYnVnIF0gaHR0cC93cHQvY3J5cHRvL3Vu
d3JhcC1yc2Eta2V5LWNyYXNoLmFueS5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBmbGFreSBjcmFz
aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxl
cnQtZHVyaW5nLWZvY3VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lv
cy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1mb2N1cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmE1NzU5OWU3MjlkYzExNTEzODYyNWE0Y2Q3M2EyNmZlMzRmZTU4NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9zaG93LW1vZGFsLWFsZXJ0LWR1cmluZy1m
b2N1cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQUxFUlQ6IFRoaXMgaXMgYSBtb2Rh
bCBhbGVydC4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHByZXNlbnRpbmcgYSBtb2RhbCBhbGVy
dCB3aGlsZSBmb2N1c2luZyBhbiBlZGl0YWJsZSBpbnB1dCBkb2Vzbid0IGNhdXNlIHRoZSBhcHBs
aWNhdGlvbiBwcm9jZXNzIHRvIGhhbmcuIFRvIHZlcmlmeSBtYW51YWxseSwgdGFwIHRoZSB0ZXh0
IGZpZWxkIGFib3ZlLCBhbmQgY2hlY2sgdGhhdCB0aGUgSmF2YVNjcmlwdCBhbGVydCBpcyBwcmVz
ZW50ZWQgd2l0aCBubyBzaWduaWZpY2FudCBkZWxheSAoaS5lLiBhIDEtc2Vjb25kIGhhbmcpLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb25lU2hvd2luZ0FsZXJ0IGJl
Y2FtZSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwt
YWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mvc2hv
dy1tb2RhbC1hbGVydC1kdXJpbmctZm9jdXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTEzNmI0YWQ5NTg5
OTU3MmQzOGVmNTg3MDdlNmJiNjcxODBhZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW9zL3Nob3ctbW9kYWwtYWxlcnQtZHVyaW5nLWZvY3VzLmh0bWwKQEAg
LTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
dXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91
dHM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1u
byI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAx
MDAlOworICAgIG1hcmdpbjogMDsKK30KKworaW5wdXQgeworICAgIGZvbnQtc2l6ZTogMjBweDsK
K30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBwbGFjZWhvbGRlcj0iVGFwIHRv
IHNob3cgYW4gYWxlcnQiIHR5cGU9InRleHQiPjwvaW5wdXQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuc2V0U2hvdWxkRGlzbWlzc0phdmFTY3JpcHRB
bGVydHNBc3luY2hyb25vdXNseSh0cnVlKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7Citkb25l
U2hvd2luZ0FsZXJ0ID0gZmFsc2U7CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAo
KSA9PiB7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHByZXNlbnRp
bmcgYSBtb2RhbCBhbGVydCB3aGlsZSBmb2N1c2luZyBhbiBlZGl0YWJsZSBpbnB1dCBkb2Vzbid0
IGNhdXNlIHRoZSBhcHBsaWNhdGlvbiBwcm9jZXNzIHRvIGhhbmcuIFRvIHZlcmlmeSBtYW51YWxs
eSwgdGFwIHRoZSB0ZXh0IGZpZWxkIGFib3ZlLCBhbmQgY2hlY2sgdGhhdCB0aGUgSmF2YVNjcmlw
dCBhbGVydCBpcyBwcmVzZW50ZWQgd2l0aCBubyBzaWduaWZpY2FudCBkZWxheSAoaS5lLiBhIDEt
c2Vjb25kIGhhbmcpLiIpOworCisgICAgdGV4dEZpZWxkID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiaW5wdXQiKTsKKyAgICB0ZXh0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCAoKSA9
PiB7CisgICAgICAgIGFsZXJ0KCJUaGlzIGlzIGEgbW9kYWwgYWxlcnQuIik7CisgICAgICAgIGRv
bmVTaG93aW5nQWxlcnQgPSB0cnVlOworICAgIH0pOworCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVt
ZW50KHRleHRGaWVsZCk7CisgICAgc2hvdWxkQmVjb21lRXF1YWwoImRvbmVTaG93aW5nQWxlcnQi
LCAidHJ1ZSIsIGZpbmlzaEpTVGVzdCk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>