<?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>225333</bug_id>
          
          <creation_ts>2021-05-03 16:15:41 -0700</creation_ts>
          <short_desc>Add SPI to suspend / resume a WKWebView</short_desc>
          <delta_ts>2021-05-11 22:53:26 -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>WebKit2</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>
          <dependson>225685</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756353</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-03 16:15:41 -0700</bug_when>
    <thetext>Add SPI to suspend / resume a WKWebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756354</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-03 16:15:58 -0700</bug_when>
    <thetext>&lt;rdar://77462543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756355</commentid>
    <comment_count>2</comment_count>
      <attachid>427613</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-03 16:17:58 -0700</bug_when>
    <thetext>Created attachment 427613
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756370</commentid>
    <comment_count>3</comment_count>
      <attachid>427619</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-03 16:45:53 -0700</bug_when>
    <thetext>Created attachment 427619
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756381</commentid>
    <comment_count>4</comment_count>
      <attachid>427623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-03 17:11:33 -0700</bug_when>
    <thetext>Created attachment 427623
WIP Patch (with test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756537</commentid>
    <comment_count>5</comment_count>
      <attachid>427670</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 08:17:49 -0700</bug_when>
    <thetext>Created attachment 427670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756547</commentid>
    <comment_count>6</comment_count>
      <attachid>427670</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-04 09:00:24 -0700</bug_when>
    <thetext>Comment on attachment 427670
Patch

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

&gt; Source/WebKit/ChangeLog:12
&gt; +        Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
&gt; +        the back/forward cache but the suspension happens in-place, no need to navigate.
&gt; +        The suspended page is also not part of the Back/Forward cache so its cap on the
&gt; +        number of suspended pages does not apply here.

What are the rules for what you can do with a suspended WKWebView? Can you call loadRequest:?  Will that resume it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756598</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-04 11:07:52 -0700</bug_when>
    <thetext>&gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; call loadRequest:?  Will that resume it?

This question makes me wonder if we really want suspension to be a state on the WebView, or if it would be better to model it more explicitly like a navigation to about:blank. (Not that we would require the client to actually navigate to about:blank -- just that the implementation of suspend would navigate to about:blank or about:suspended or whatever, and the implementation of resume would navigate back. Perhaps we would also hide the actual about:blank or about:suspended entry from history and/or back/forward list.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756610</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 11:39:26 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; Comment on attachment 427670 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427670&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; +        Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
&gt; &gt; +        the back/forward cache but the suspension happens in-place, no need to navigate.
&gt; &gt; +        The suspended page is also not part of the Back/Forward cache so its cap on the
&gt; &gt; +        number of suspended pages does not apply here.
&gt; 
&gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; call loadRequest:?  Will that resume it?

With the current implementation, it isn&apos;t safe to do much with a suspended view besides resuming it or destroying it. We could support loadRequest if we wanted. This is not a use case we have currently though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756611</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 11:42:15 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; &gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; &gt; call loadRequest:?  Will that resume it?
&gt; 
&gt; This question makes me wonder if we really want suspension to be a state on
&gt; the WebView, or if it would be better to model it more explicitly like a
&gt; navigation to about:blank. (Not that we would require the client to actually
&gt; navigate to about:blank -- just that the implementation of suspend would
&gt; navigate to about:blank or about:suspended or whatever, and the
&gt; implementation of resume would navigate back. Perhaps we would also hide the
&gt; actual about:blank or about:suspended entry from history and/or back/forward
&gt; list.)

2 issues:
a. Yes, we&apos;d need logic to hide the about:blank / about:suspended from the back/forward list. This was a major point to introducing this SPI vs having the client navigate.
b. Your statement assumes we have a history item to go back to. Unlike back/forward cache, this new suspension mechanism does not require a HistoryItem. Note that calling loadHTMLString or loadData on a WKWebView does NOT create a HistoryItem. Yet I think we should be able to suspend it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756615</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-04 11:49:00 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; Comment on attachment 427670 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427670&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; +        Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
&gt; &gt; +        the back/forward cache but the suspension happens in-place, no need to navigate.
&gt; &gt; +        The suspended page is also not part of the Back/Forward cache so its cap on the
&gt; &gt; +        number of suspended pages does not apply here.
&gt; 
&gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; call loadRequest:?  Will that resume it?

I did not focus on all these cases because this is not API yet, just SPI for now used in a very specific way. If it were API, I agree we&apos;d need to go through each WKWebView API and decide what their behavior should be when suspended.

Since I think the SPI would eventually be useful as API, I do think I should follow-up and figure those cases out though. I was hoping to land this ASAP to unblock the client app that needs it but if people think we need a better story for what each WKWebView API does when suspended before landing, I can prioritize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756971</commentid>
    <comment_count>11</comment_count>
      <attachid>427775</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 10:05:41 -0700</bug_when>
    <thetext>Created attachment 427775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757092</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-05 14:07:38 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Sam Weinig from comment #6)
&gt; &gt; Comment on attachment 427670 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=427670&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; &gt; +        Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
&gt; &gt; &gt; +        the back/forward cache but the suspension happens in-place, no need to navigate.
&gt; &gt; &gt; +        The suspended page is also not part of the Back/Forward cache so its cap on the
&gt; &gt; &gt; +        number of suspended pages does not apply here.
&gt; &gt; 
&gt; &gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; &gt; call loadRequest:?  Will that resume it?
&gt; 
&gt; I did not focus on all these cases because this is not API yet, just SPI for
&gt; now used in a very specific way. If it were API, I agree we&apos;d need to go
&gt; through each WKWebView API and decide what their behavior should be when
&gt; suspended.
&gt; 
&gt; Since I think the SPI would eventually be useful as API, I do think I should
&gt; follow-up and figure those cases out though. I was hoping to land this ASAP
&gt; to unblock the client app that needs it but if people think we need a better
&gt; story for what each WKWebView API does when suspended before landing, I can
&gt; prioritize it.

I generally think we should be very careful with any new SPI as they can be quite hard to remove once adopted.

For something as big as this, I think we need the functionality to be fleshed out and tested before we would want anyone using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757099</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 14:13:07 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; (In reply to Sam Weinig from comment #6)
&gt; &gt; &gt; Comment on attachment 427670 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=427670&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; &gt; &gt; +        Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
&gt; &gt; &gt; &gt; +        the back/forward cache but the suspension happens in-place, no need to navigate.
&gt; &gt; &gt; &gt; +        The suspended page is also not part of the Back/Forward cache so its cap on the
&gt; &gt; &gt; &gt; +        number of suspended pages does not apply here.
&gt; &gt; &gt; 
&gt; &gt; &gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; &gt; &gt; call loadRequest:?  Will that resume it?
&gt; &gt; 
&gt; &gt; I did not focus on all these cases because this is not API yet, just SPI for
&gt; &gt; now used in a very specific way. If it were API, I agree we&apos;d need to go
&gt; &gt; through each WKWebView API and decide what their behavior should be when
&gt; &gt; suspended.
&gt; &gt; 
&gt; &gt; Since I think the SPI would eventually be useful as API, I do think I should
&gt; &gt; follow-up and figure those cases out though. I was hoping to land this ASAP
&gt; &gt; to unblock the client app that needs it but if people think we need a better
&gt; &gt; story for what each WKWebView API does when suspended before landing, I can
&gt; &gt; prioritize it.
&gt; 
&gt; I generally think we should be very careful with any new SPI as they can be
&gt; quite hard to remove once adopted.
&gt; 
&gt; For something as big as this, I think we need the functionality to be
&gt; fleshed out and tested before we would want anyone using it.

I did flesh it out more in my latest iteration. Requests to navigate or run JS are now handled in particular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757109</commentid>
    <comment_count>14</comment_count>
      <attachid>427810</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 14:43:01 -0700</bug_when>
    <thetext>Created attachment 427810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757139</commentid>
    <comment_count>15</comment_count>
      <attachid>427815</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-05 15:42:58 -0700</bug_when>
    <thetext>Created attachment 427815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757753</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-06 17:51:52 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; (In reply to Sam Weinig from comment #12)
&gt; &gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #6)
&gt; &gt; &gt; &gt; Comment on attachment 427670 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=427670&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; &gt; &gt; &gt; +        Add SPI to suspend / resume a WKWebView. This suspends the page as if it was in
&gt; &gt; &gt; &gt; &gt; +        the back/forward cache but the suspension happens in-place, no need to navigate.
&gt; &gt; &gt; &gt; &gt; +        The suspended page is also not part of the Back/Forward cache so its cap on the
&gt; &gt; &gt; &gt; &gt; +        number of suspended pages does not apply here.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What are the rules for what you can do with a suspended WKWebView? Can you
&gt; &gt; &gt; &gt; call loadRequest:?  Will that resume it?
&gt; &gt; &gt; 
&gt; &gt; &gt; I did not focus on all these cases because this is not API yet, just SPI for
&gt; &gt; &gt; now used in a very specific way. If it were API, I agree we&apos;d need to go
&gt; &gt; &gt; through each WKWebView API and decide what their behavior should be when
&gt; &gt; &gt; suspended.
&gt; &gt; &gt; 
&gt; &gt; &gt; Since I think the SPI would eventually be useful as API, I do think I should
&gt; &gt; &gt; follow-up and figure those cases out though. I was hoping to land this ASAP
&gt; &gt; &gt; to unblock the client app that needs it but if people think we need a better
&gt; &gt; &gt; story for what each WKWebView API does when suspended before landing, I can
&gt; &gt; &gt; prioritize it.
&gt; &gt; 
&gt; &gt; I generally think we should be very careful with any new SPI as they can be
&gt; &gt; quite hard to remove once adopted.
&gt; &gt; 
&gt; &gt; For something as big as this, I think we need the functionality to be
&gt; &gt; fleshed out and tested before we would want anyone using it.
&gt; 
&gt; I did flesh it out more in my latest iteration. Requests to navigate or run
&gt; JS are now handled in particular.

Is the rule then that any use of API that would ordinarily work should work when suspended, resuming the page? Do some functions not resume the webview?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757755</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-06 17:54:26 -0700</bug_when>
    <thetext>I should add, my personal opinion would be that all WKWebView API/SPI throw or crash if the page is suspended (except resume of course).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757766</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-06 18:19:51 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #17)
&gt; I should add, my personal opinion would be that all WKWebView API/SPI throw
&gt; or crash if the page is suspended (except resume of course).

What I implemented is so far is my personal preference (but I am happy to change if others feel differently):
1. Navigating the views unsuspends the page before navigating
2. Operations that do not require the WebProcess keep working
2. Operations that need the WebProcess (e.g. evaluateJS(), find(), takeSnapshot(), createWebArchive, createPDF, ...) fail (as in I am calling their completion handler with an error). I have no covered everything in this case but the top ones.

Throwing an exception for every SPI/API call besides resume() seems super aggressive but then again, that&apos;s pretty much the contract we have with the client. That said, there are a lot of API/SPIs that do not need the WebProcess in any way (e.g. WKWebView.URL, WKWebView.isLoading, WKWebView.title, WKWebView.canGoBack) and could keep working just fine while suspended I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757885</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-07 09:12:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; (In reply to Sam Weinig from comment #17)
&gt; &gt; I should add, my personal opinion would be that all WKWebView API/SPI throw
&gt; &gt; or crash if the page is suspended (except resume of course).
&gt; 
&gt; What I implemented is so far is my personal preference (but I am happy to
&gt; change if others feel differently):
&gt; 1. Navigating the views unsuspends the page before navigating
&gt; 2. Operations that do not require the WebProcess keep working
&gt; 2. Operations that need the WebProcess (e.g. evaluateJS(), find(),
&gt; takeSnapshot(), createWebArchive, createPDF, ...) fail (as in I am calling
&gt; their completion handler with an error). I have no covered everything in
&gt; this case but the top ones.
&gt; 
&gt; Throwing an exception for every SPI/API call besides resume() seems super
&gt; aggressive but then again, that&apos;s pretty much the contract we have with the
&gt; client. That said, there are a lot of API/SPIs that do not need the
&gt; WebProcess in any way (e.g. WKWebView.URL, WKWebView.isLoading,
&gt; WKWebView.title, WKWebView.canGoBack) and could keep working just fine while
&gt; suspended I think.

I realize I didn&apos;t really add my reasons for my opinion. There are a few reasons I think being heavy handed makes sense.

1) It is much easier to relax things in the future than it is to make them stricter. For instance, if we want to make it valid to call WKWebView.canGoBack when suspended, we can remove the check and document in the header that WKWebView.canGoBack can be called when suspended.
2) Side effects for methods like loadRequest: resuming the view are hard to teach, especially when it is no 100% clear which methods will have the side effects and which won&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758540</commentid>
    <comment_count>20</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-10 10:42:34 -0700</bug_when>
    <thetext>I think I agree that throwing an exception when an operation obviously can&apos;t work because we&apos;re suspended is a helpful approach -- and more helpful than auto-unsuspending, since that might put the app in an invalid state.

Why don&apos;t we compromise and throw an exception in APIs that (a) can&apos;t work while suspended or (b) it&apos;s not obvious whether they can work or not while suspended. But for the APIs where it is obvious that they can work while suspended, let&apos;s not throw. It just doesn&apos;t make sense. And I worry that we&apos;ll create a long tail of trivial exception noise that doesn&apos;t help anyone -- for example, just because Interface Builder has the WebView&apos;s URL or title hooked up to some view, which seems like an obviously valid thing to do even while suspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758542</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-10 10:46:48 -0700</bug_when>
    <thetext>Side note: This discussion reminds me of the setDefersLoading() API, and the numerous costly &quot;blank WebView&quot; / &quot;load failed&quot; bugs it caused. Hopefully throwing an exception in APIs that obviously won&apos;t work, including loading APIs, will help avoid that kind of problem this time around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758692</commentid>
    <comment_count>22</comment_count>
      <attachid>428213</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-10 15:40:22 -0700</bug_when>
    <thetext>Created attachment 428213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758694</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-10 15:41:07 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #20)
&gt; I think I agree that throwing an exception when an operation obviously can&apos;t
&gt; work because we&apos;re suspended is a helpful approach -- and more helpful than
&gt; auto-unsuspending, since that might put the app in an invalid state.
&gt; 
&gt; Why don&apos;t we compromise and throw an exception in APIs that (a) can&apos;t work
&gt; while suspended or (b) it&apos;s not obvious whether they can work or not while
&gt; suspended. But for the APIs where it is obvious that they can work while
&gt; suspended, let&apos;s not throw. It just doesn&apos;t make sense. And I worry that
&gt; we&apos;ll create a long tail of trivial exception noise that doesn&apos;t help anyone
&gt; -- for example, just because Interface Builder has the WebView&apos;s URL or
&gt; title hooked up to some view, which seems like an obviously valid thing to
&gt; do even while suspended.

Ok, I have implemented this proposal and extended API test coverage accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758710</commentid>
    <comment_count>24</comment_count>
      <attachid>428218</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-10 16:28:40 -0700</bug_when>
    <thetext>Created attachment 428218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758967</commentid>
    <comment_count>25</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-11 10:46:06 -0700</bug_when>
    <thetext>iOS EWS is angry: TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758971</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 10:54:25 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #25)
&gt; iOS EWS is angry: TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage

It is minor, will fix.

   TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage
        
        /Volumes/Data/worker/iOS-14-Simulator-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSuspension.mm:192
        Value of: [webView allowsLinkPreview]
          Actual: true
        Expected: false

Looks like this property has a different default value on iOS than macOS is all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758990</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 11:10:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; (In reply to Geoffrey Garen from comment #25)
&gt; &gt; iOS EWS is angry: TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage
&gt; 
&gt; It is minor, will fix.
&gt; 
&gt;    TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage
&gt;         
&gt;        
&gt; /Volumes/Data/worker/iOS-14-Simulator-Build-EWS/build/Tools/TestWebKitAPI/
&gt; Tests/WebKitCocoa/ProcessSuspension.mm:192
&gt;         Value of: [webView allowsLinkPreview]
&gt;           Actual: true
&gt;         Expected: false
&gt; 
&gt; Looks like this property has a different default value on iOS than macOS is
&gt; all.

```
/*! @abstract A Boolean value indicating whether link preview is allowed for any
 links inside this WKWebView.
 @discussion The default value is YES on Mac and iOS.
 */
@property (nonatomic) BOOL allowsLinkPreview WK_API_AVAILABLE(macos(10.11), ios(9.0));
```

That doc seems to be a lie. Turns out it is true on both platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758992</commentid>
    <comment_count>28</comment_count>
      <attachid>428296</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 11:11:53 -0700</bug_when>
    <thetext>Created attachment 428296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758995</commentid>
    <comment_count>29</comment_count>
      <attachid>428298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 11:15:39 -0700</bug_when>
    <thetext>Created attachment 428298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758997</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 11:16:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #27)
&gt; (In reply to Chris Dumez from comment #26)
&gt; &gt; (In reply to Geoffrey Garen from comment #25)
&gt; &gt; &gt; iOS EWS is angry: TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage
&gt; &gt; 
&gt; &gt; It is minor, will fix.
&gt; &gt; 
&gt; &gt;    TestWebKitAPI.ProcessSuspension.WKWebViewSuspendPage
&gt; &gt;         
&gt; &gt;        
&gt; &gt; /Volumes/Data/worker/iOS-14-Simulator-Build-EWS/build/Tools/TestWebKitAPI/
&gt; &gt; Tests/WebKitCocoa/ProcessSuspension.mm:192
&gt; &gt;         Value of: [webView allowsLinkPreview]
&gt; &gt;           Actual: true
&gt; &gt;         Expected: false
&gt; &gt; 
&gt; &gt; Looks like this property has a different default value on iOS than macOS is
&gt; &gt; all.
&gt; 
&gt; ```
&gt; /*! @abstract A Boolean value indicating whether link preview is allowed for
&gt; any
&gt;  links inside this WKWebView.
&gt;  @discussion The default value is YES on Mac and iOS.
&gt;  */
&gt; @property (nonatomic) BOOL allowsLinkPreview WK_API_AVAILABLE(macos(10.11),
&gt; ios(9.0));
&gt; ```
&gt; 
&gt; That doc seems to be a lie. Turns out it is true on both platforms.

Never mind, looks like I misread the doc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759011</commentid>
    <comment_count>31</comment_count>
      <attachid>428303</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 11:41:10 -0700</bug_when>
    <thetext>Created attachment 428303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759034</commentid>
    <comment_count>32</comment_count>
      <attachid>428303</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-11 12:36:35 -0700</bug_when>
    <thetext>Comment on attachment 428303
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759065</commentid>
    <comment_count>33</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-11 14:39:22 -0700</bug_when>
    <thetext>Committed r277341 (237600@main): &lt;https://commits.webkit.org/237600@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428303.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759143</commentid>
    <comment_count>34</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-05-11 20:38:35 -0700</bug_when>
    <thetext>This change has caused all WK2 layout tests to exit with an exception. It seems that there is a ton of this logging during test runs: 
Error: Attempt to call WKPageRef API/SPI on a suspended page, this is a client bug.

https://build.webkit.org/#/builders/70/builds/2492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759149</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-11 20:48:01 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 225685</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759155</commentid>
    <comment_count>36</comment_count>
      <attachid>428341</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 21:02:48 -0700</bug_when>
    <thetext>Created attachment 428341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759156</commentid>
    <comment_count>37</comment_count>
      <attachid>428342</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 21:05:44 -0700</bug_when>
    <thetext>Created attachment 428342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759159</commentid>
    <comment_count>38</comment_count>
      <attachid>428344</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-11 21:26:39 -0700</bug_when>
    <thetext>Created attachment 428344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759168</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-11 22:53:23 -0700</bug_when>
    <thetext>Committed r277356 (237614@main): &lt;https://commits.webkit.org/237614@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428344.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427613</attachid>
            <date>2021-05-03 16:17:58 -0700</date>
            <delta_ts>2021-05-03 16:45:53 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>225333_WKWebView_suspendPage.patch</filename>
            <type>text/plain</type>
            <size>11085</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDI3ZWQ3
NGNkMjFkMy4uNjE1YjQ5OGE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRDYWNoZS5jcHAKQEAgLTQ4MSw2ICs0ODEsMzMgQEAgYm9vbCBCYWNrRm9yd2FyZENhY2hl
OjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorVW5pcXVlUmVmPENhY2hlZFBhZ2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnN1
c3BlbmRQYWdlKFBhZ2UmIHBhZ2UpCit7CisgICAgUkVMRUFTRV9MT0coQmFja0ZvcndhcmRDYWNo
ZSwgIkJhY2tGb3J3YXJkQ2FjaGU6OnN1c3BlbmRQYWdlKCkiKTsKKworICAgIHBhZ2UubWFpbkZy
YW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKworICAgIHNldEJhY2tG
b3J3YXJkQ2FjaGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0ZvcndhcmRD
YWNoZSk7CisKKyAgICAvLyBGb2N1cyB0aGUgbWFpbiBmcmFtZSwgZGVmb2N1c2luZyBhIGZvY3Vz
ZWQgc3ViZnJhbWUgKGlmIHdlIGhhdmUgb25lKS4gV2UgZG8gdGhpcyBoZXJlLAorICAgIC8vIGJl
Zm9yZSB0aGUgcGFnZSBlbnRlcnMgdGhlIGJhY2svZm9yd2FyZCBjYWNoZSwgd2hpbGUgd2Ugc3Rp
bGwgY2FuIGRpc3BhdGNoIERPTSBibHVyL2ZvY3VzIGV2ZW50cy4KKyAgICBpZiAocGFnZS5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKKyAgICAgICAgcGFnZS5mb2N1c0NvbnRyb2xs
ZXIoKS5zZXRGb2N1c2VkRnJhbWUoJnBhZ2UubWFpbkZyYW1lKCkpOworCisgICAgLy8gRmlyZSB0
aGUgcGFnZWhpZGUgZXZlbnQgaW4gYWxsIGZyYW1lcy4KKyAgICBmaXJlUGFnZUhpZGVFdmVudFJl
Y3Vyc2l2ZWx5KHBhZ2UubWFpbkZyYW1lKCkpOworCisgICAgZGVzdHJveVJlbmRlclRyZWUocGFn
ZS5tYWluRnJhbWUoKSk7CisKKyAgICAvLyBTdG9wIGFsbCBsb2FkcyBhZ2FpbiBiZWZvcmUgY2hl
Y2tpbmcgaWYgd2UgY2FuIHN0aWxsIGNhY2hlIHRoZSBwYWdlIGFmdGVyIGZpcmluZyB0aGUgcGFn
ZWhpZGUKKyAgICAvLyBldmVudCwgc2luY2UgdGhlIHBhZ2UgbWF5IGhhdmUgc3RhcnRlZCBwaW5n
IGxvYWRzIGluIGl0cyBwYWdlaGlkZSBldmVudCBoYW5kbGVyLgorICAgIHBhZ2UubWFpbkZyYW1l
KCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKworICAgIHNldEJhY2tGb3J3
YXJkQ2FjaGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlKTsKKworICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPENhY2hlZFBhZ2U+KHBhZ2UpOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRl
bSwgUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNi4uMjc1
NGUwMzcxYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaApA
QCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhT
aXplKHVuc2lnbmVkKTsgLy8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hlLgogICAgIHVuc2lnbmVk
IG1heFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFNpemU7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIFVuaXF1ZVJlZjxDYWNoZWRQYWdlPiBzdXNwZW5kUGFnZShQYWdlJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1
bmVzIGlmIG1heFNpemUoKSBpcyBleGNlZWRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZShIaXN0b3J5SXRlbSYpOwogICAgIENhY2hlZFBhZ2UqIGdldChIaXN0b3J5SXRlbSYsIFBh
Z2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgKaW5kZXggNGVlY2YxY2IwYzI1Li4w
ZjczY2Y3OGFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICsz
OCw5IEBAIGNsYXNzIENhY2hlZFBhZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9y
ZShQYWdlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2
b2lkIGNsZWFyKCk7CiAKICAgICBQYWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCA0NWRkNmFhNjBhOWEuLjMxMDU1MjNlZjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMjg0LDYgKzIyODQsMTggQEAgLSAodm9p
ZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHYKICAgICB9KTsKIH0KIAorLSAodm9pZClfc3VzcGVuZFBhZ2UKK3sK
KyAgICBpZiAoX3BhZ2UpCisgICAgICAgIF9wYWdlLT5zdXNwZW5kKCk7Cit9CisKKy0gKHZvaWQp
X3Jlc3VtZVBhZ2UKK3sKKyAgICBpZiAoX3BhZ2UpCisgICAgICAgIF9wYWdlLT5yZXN1bWUoKTsK
K30KKwogLSAoTlNBcnJheSAqKV9jZXJ0aWZpY2F0ZUNoYWluCiB7CiAgICAgaWYgKFdlYktpdDo6
V2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5k
ZXggOTlkNTkyNWFhNzc4Li40OWIzZGE4OTZhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5
IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRh
Rm9yRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFn
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSAodm9pZClfcmVzdW1lUGFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyODhmNjA4MmU4ZmQuLmE1MGM2
YTM2ZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0z
MTQyLDcgKzMxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25z
dCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBzdXNw
ZW5kZWQsIHdoaWNoIHNob3VsZCBiZSB0aGUgY2FzZSBkdXJpbmcgcGFubmluZywgcGluY2hpbmcK
ICAgICAvLyBhbmQgYW5pbWF0aW9uIG9uIHRoZSBwYWdlIGl0c2VsZiAoa2luZXRpYyBzY3JvbGxp
bmcsIHRhcCB0byB6b29tKSBldGMsIHRoZW4KICAgICAvLyB3ZSBkbyBub3Qgc2VuZCBhbnkgb2Yg
dGhlIGV2ZW50cyB0byB0aGUgcGFnZSBldmVuIGlmIGlzIGhhcyBsaXN0ZW5lcnMuCi0gICAgaWYg
KCFtX2lzUGFnZVN1c3BlbmRlZCkgeworICAgIGlmICghbV9hcmVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9uc1N1c3BlbmRlZCkgewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5hcHBlbmQo
ZXZlbnQpOwogICAgICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSk7CkBAIC0z
NTkwLDI0ICszNTkwLDQyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21Vc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpIHx8ICFtX2lzUGFnZVN1c3BlbmRlZCkKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkgfHwgIW1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9h
cmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZhbHNlOwogCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2lzUGFn
ZVN1c3BlbmRlZCkKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9hcmVBY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWQgPSB0cnVlOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZCgpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1f
aXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNTdXNwZW5kZWQgPSB0cnVl
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmQoKSk7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZXN1bWUoKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAh
bV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1N1c3BlbmRlZCA9IGZh
bHNlOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZSgpKTsKK30KKwogYm9vbCBX
ZWJQYWdlUHJveHk6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RSAoMTE4ODQwKTogV2Ugc2hvdWxkIHByb2JhYmx5IG9ubHkgc3VwcG9ydCB0aGlzIGZvciB0ZXh0
IGRvY3VtZW50cywgbm90IGFsbCBub24taW1hZ2UgZG9jdW1lbnRzLgpAQCAtNzY5MSw3ICs3NzA5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBu
dWxscHRyOwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdl
U3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2YyMTk2MWMyZjAx
Li5kNWY2YzhhZTU4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC01MDMsNiArNTAzLDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7
CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKCk7Cisg
ICAgdm9pZCByZXN1bWUoKTsKKwogICAgIFdlYkluc3BlY3RvclVJUHJveHkqIGluc3BlY3Rvcigp
IGNvbnN0OwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIGdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogCkBAIC0xMDEyLDcgKzEwMTUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwog
ICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKLSAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VTdXNwZW5kZWQ7IH0K
KyAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZDsg
fQogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCkBAIC0yNzQ2LDcg
KzI3NDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxl
PiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5k
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVl
IH07CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNlIH07CkBAIC0z
MDA3LDYgKzMwMTAsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXli
YWNrQ291bnRlciB7IDAgfTsKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggYWFiYmFhNDJlNGE1Li42ODRjOTk5NmFiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTIsNiArMTUyLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0Zv
cndhcmRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRQYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJv
bWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vblZNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b250YWN0c1JlcXVlc3REYXRhLmg+CkBAIC0zNTk0LDYgKzM1OTUsMzQgQEAgdm9pZCBXZWJQYWdl
OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgbV9wYWdlLT5yZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQogCit2b2lkIFdlYlBhZ2U6OnN1
c3BlbmQoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6
IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlBhZ2VT
dXNwZW5kZWQpOworCisgICAgbV9jYWNoZWRQYWdlID0gQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xl
dG9uKCkuc3VzcGVuZFBhZ2UoKm1fcGFnZSkubW92ZVRvVW5pcXVlUHRyKCk7CisgICAgaWYgKGF1
dG8gbWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBtYWluRnJh
bWUtPmxvYWRlcigpLmRldGFjaEZyb21BbGxPcGVuZWRGcmFtZXMoKTsKK30KKwordm9pZCBXZWJQ
YWdlOjpyZXN1bWUoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
c3VtZTogbV9wYWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpleGNoYW5nZShtX2NhY2hl
ZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsKKyAgICBpZiAoIWNhY2hl
ZFBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGNhY2hlZFBhZ2UtPnJlc3RvcmUoKm1fcGFn
ZSk7CisgICAgdW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQYWdlU3Vz
cGVuZGVkKTsKK30KKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzczNTcyMzkxM2JiLi41Zjhi
MjNlN2IyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTE3Nyw2ICsxNzcsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FwdHVyZURldmljZTsKIGNs
YXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0xNjYxLDYgKzE2NjIsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCisg
ICAgdm9pZCBzdXNwZW5kKCk7CisgICAgdm9pZCByZXN1bWUoKTsKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZD
dXJyZW50U2VsZWN0aW9uKCk7CkBAIC0yMzA5LDYgKzIzMTMsOCBAQCBwcml2YXRlOgogCiAgICAg
VmVjdG9yPFN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q2FjaGVkUGFnZT4gbV9jYWNoZWRQYWdlOworCiAjaWYgRU5BQkxFKElQ
Q19URVNUSU5HX0FQSSkKICAgICBib29sIG1faXBjVGVzdGluZ0FQSUVuYWJsZWQgeyBmYWxzZSB9
OwogICAgIHVpbnQ2NF90IG1fdmlzaXRlZExpbmtUYWJsZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMTg3Y2Qw
ZGFiZGNmLi5lYWVkZWRhZTg1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUwLDYgKzI1MCw5IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKKyAgICBT
dXNwZW5kKCkKKyAgICBSZXN1bWUoKQorCiAgICAgQ2xvc2UoKQogICAgIFRyeUNsb3NlKCkgLT4g
KGJvb2wgc2hvdWxkQ2xvc2UpIEFzeW5jCiAK
</data>
<flag name="commit-queue"
          id="448274"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427619</attachid>
            <date>2021-05-03 16:45:53 -0700</date>
            <delta_ts>2021-05-03 17:11:33 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>225333_WKWebView_suspendPage.patch</filename>
            <type>text/plain</type>
            <size>14202</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IGNiZWQzMmEyYzkyNS4uZGIyYWE1NTRmMGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTYwNyw2ICs2MDcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAg
ICBoaXN0b3J5L0NhY2hlZEZyYW1lLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhLmgKKyAgICBoaXN0b3J5L0NhY2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
aAogCiAgICAgaHRtbC9BdXRvY2FwaXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCAyN2VkNzRjZDIxZDMuLjYxNWI0OThhNGYwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC00ODEsNiAr
NDgxLDMzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0
ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1VuaXF1ZVJlZjxD
YWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQYWdlJiBwYWdlKQorewor
ICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9yd2FyZENhY2hlOjpzdXNw
ZW5kUGFnZSgpIik7CisKKyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNr
Rm9yd2FyZENhY2hlKCk7CisKKyAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUocGFnZSwgRG9j
dW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8gRm9jdXMgdGhl
IG1haW4gZnJhbWUsIGRlZm9jdXNpbmcgYSBmb2N1c2VkIHN1YmZyYW1lIChpZiB3ZSBoYXZlIG9u
ZSkuIFdlIGRvIHRoaXMgaGVyZSwKKyAgICAvLyBiZWZvcmUgdGhlIHBhZ2UgZW50ZXJzIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUsIHdoaWxlIHdlIHN0aWxsIGNhbiBkaXNwYXRjaCBET00gYmx1ci9m
b2N1cyBldmVudHMuCisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1l
KCkpCisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdl
Lm1haW5GcmFtZSgpKTsKKworICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBm
cmFtZXMuCisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgp
KTsKKworICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UubWFpbkZyYW1lKCkpOworCisgICAgLy8g
U3RvcCBhbGwgbG9hZHMgYWdhaW4gYmVmb3JlIGNoZWNraW5nIGlmIHdlIGNhbiBzdGlsbCBjYWNo
ZSB0aGUgcGFnZSBhZnRlciBmaXJpbmcgdGhlIHBhZ2VoaWRlCisgICAgLy8gZXZlbnQsIHNpbmNl
IHRoZSBwYWdlIG1heSBoYXZlIHN0YXJ0ZWQgcGluZyBsb2FkcyBpbiBpdHMgcGFnZWhpZGUgZXZl
bnQgaGFuZGxlci4KKyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9y
d2FyZENhY2hlKCk7CisKKyAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUocGFnZSwgRG9jdW1l
bnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDYWNo
ZWRQYWdlPihwYWdlKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3
YXJkQ2FjaGU6OnRha2UoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYg
KCFpdGVtLm1fY2FjaGVkUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuaAppbmRleCBhZGFhZmFiYTZiYTYuLjI3NTRlMDM3MWFmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4U2l6ZSh1bnNpZ25lZCk7IC8vIG51bWJlciBv
ZiBwYWdlcyB0byBjYWNoZS4KICAgICB1bnNpZ25lZCBtYXhTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXhTaXplOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBVbmlxdWVSZWY8Q2FjaGVkUGFnZT4g
c3VzcGVuZFBhZ2UoUGFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSWZDYWNoZWFi
bGUoSGlzdG9yeUl0ZW0mLCBQYWdlKik7IC8vIFBydW5lcyBpZiBtYXhTaXplKCkgaXMgZXhjZWVk
ZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmUoSGlzdG9yeUl0ZW0mKTsKICAgICBD
YWNoZWRQYWdlKiBnZXQoSGlzdG9yeUl0ZW0mLCBQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNS4uMGY3M2NmNzhhYzNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBDYWNoZWRQYWdlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDYWNo
ZWRQYWdlKFBhZ2UmKTsKLSAgICB+Q2FjaGVkUGFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5D
YWNoZWRQYWdlKCk7CiAKLSAgICB2b2lkIHJlc3RvcmUoUGFnZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdG9yZShQYWdlJik7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUGFnZSYg
cGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDVkZDZhYTYwYTlhLi5mMDZkZjc3OGU5
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMjI4NCw2ICsyMjg0LDI4IEBAIC0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFG
b3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2CiAgICAgfSk7
CiB9CiAKKy0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5zdXNwZW5kKFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2Vzcykg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKK30KKworLSAo
dm9pZClfcmVzdW1lUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+cmVzdW1lKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKK30KKwogLSAoTlNBcnJheSAqKV9j
ZXJ0aWZpY2F0ZUNoYWluCiB7CiAgICAgaWYgKFdlYktpdDo6V2ViRnJhbWVQcm94eSogbWFpbkZy
YW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTlkNTkyNWFhNzc4Li42MzFm
MjMwNGRkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5IEBAIGZvciB0aGlzIHByb3BlcnR5
LgogCiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAq
KWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI4OGY2MDgyZThmZC4uNGNmNWRlNjMzMmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNDIsNyArMzE0
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIC8vIElmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZCwgd2hp
Y2ggc2hvdWxkIGJlIHRoZSBjYXNlIGR1cmluZyBwYW5uaW5nLCBwaW5jaGluZwogICAgIC8vIGFu
ZCBhbmltYXRpb24gb24gdGhlIHBhZ2UgaXRzZWxmIChraW5ldGljIHNjcm9sbGluZywgdGFwIHRv
IHpvb20pIGV0YywgdGhlbgogICAgIC8vIHdlIGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRz
IHRvIHRoZSBwYWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVycy4KLSAgICBpZiAoIW1faXNQYWdl
U3VzcGVuZGVkKSB7CisgICAgaWYgKCFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAg
ICAgICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpKTsKQEAgLTM1OTAsMjQgKzM1
OTAsNDIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGN1c3RvbVVzZXJBZ2VudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkg
fHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAh
bV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNQYWdlU3VzcGVuZGVk
KQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2FyZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1
c3BlbmRlZCA9IHRydWU7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1
c3BlbmRlZCA9IHRydWU7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
dXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNTdXNwZW5kZWQpCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBtX2lzU3VzcGVuZGVk
ID0gdHJ1ZTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3Bl
bmQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2lzU3VzcGVuZGVkKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgbV9pc1N1c3Bl
bmRlZCA9IGZhbHNlOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdW1lKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogYm9vbCBXZWJQYWdl
UHJveHk6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRSAoMTE4
ODQwKTogV2Ugc2hvdWxkIHByb2JhYmx5IG9ubHkgc3VwcG9ydCB0aGlzIGZvciB0ZXh0IGRvY3Vt
ZW50cywgbm90IGFsbCBub24taW1hZ2UgZG9jdW1lbnRzLgpAQCAtNzY5MSw3ICs3NzA5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRy
OwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVu
ZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2YyMTk2MWMyZjAxLi44NDUz
NGFjNjEyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MDMs
NiArNTAzLDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworCiAgICAgV2ViSW5zcGVjdG9yVUlQcm94eSogaW5zcGVjdG9yKCkg
Y29uc3Q7CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX2dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAKQEAgLTEwMTIsNyArMTAxNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAg
ICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3Rv
bVRleHRFbmNvZGluZ05hbWU7IH0KIAotICAgIGJvb2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnZVN1c3BlbmRlZDsgfQor
ICAgIGJvb2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25z
dCB7IHJldHVybiBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkOyB9
CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZv
aWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAKQEAgLTI3NDYsNyAr
Mjc0OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+
IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUg
fTsKIAogICAgIGJvb2wgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uIHsgZmFsc2UgfTsKQEAgLTMw
MDcsNiArMzAxMCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJh
Y2tDb3VudGVyIHsgMCB9OwogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKICAgICBPcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBhYWJiYWE0MmU0YTUuLjNiZDNkOGFlYzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9y
d2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTQsNiArMzU5NSwzNiBAQCB2b2lkIFdlYlBhZ2U6
OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFnZT0l
cCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tGb3J3
YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQYWdlKCptX3BhZ2UpLm1vdmVUb1VuaXF1ZVB0
cigpOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkK
KyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3BlbmVkRnJhbWVzKCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVzdW1l
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBtX3BhZ2U9JXAiLCBt
X3BhZ2UuZ2V0KCkpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpleGNoYW5nZSht
X2NhY2hlZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsKKyAgICBpZiAo
IWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisK
KyAgICBjYWNoZWRQYWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJlZXplTGF5ZXJUcmVl
KExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvUm9vdFZpZXcoY29u
c3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3MzU3MjM5MTNiYi4u
ZWM2NzA4OWUyNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xNzcsNiArMTc3LDcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhcHR1cmVEZXZpY2U7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIERyYWdEYXRhOwpAQCAtMTY2MSw2ICsxNjYy
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsK
IAorICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CkBAIC0yMzA5LDYgKzIzMTMsOCBAQCBwcml2YXRl
OgogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q2FjaGVkUGFnZT4gbV9jYWNoZWRQYWdlOworCiAjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKICAgICBib29sIG1faXBjVGVzdGluZ0FQSUVuYWJsZWQg
eyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fdmlzaXRlZExpbmtUYWJsZUlEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggMTg3Y2QwZGFiZGNmLi5mZmVmMDc1MzMyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUwLDYgKzI1MCw5
IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiAKKyAgICBTdXNwZW5kKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBSZXN1bWUoKSAt
PiAoYm9vbCBzdWNjZXNzKSBBc3luYworCiAgICAgQ2xvc2UoKQogICAgIFRyeUNsb3NlKCkgLT4g
KGJvb2wgc2hvdWxkQ2xvc2UpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCmluZGV4IDk5NjYx
YjM0MDNiMC4uYWNjZDJkNmNkZjIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KQEAgLTgzLDMgKzgz
LDM3IEBAIFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlc3Ryb3lXZWJQYWdlRHVyaW5nV2ViUHJv
Y2Vzc1N1c3BlbnNpb24pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMSk7CiAgICAg
RVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3MyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KKwor
VEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBhZ2UpCit7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgLy8gRklYTUU6IFVz
ZSB0ZXN0IHBhZ2Ugd2l0aCBhIHRpbWVyIHRoYXQgcG9zdHMgbWVzc2FnZXMgdG8gdGhlIGFwcCBh
bmQgbWFrZSBzdXJlIHRoZSB0aW1lciBnZXRzIHN1c3BlbmRlZC4KKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS1yZWQtc3F1YXJlLWltYWdlIl07CisK
KyAgICBhdXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQ
RUNUX05FKHBpZCwgMCk7CisKKyAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdl
Ol4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworCisgICAg
ZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4oQk9PTCBzdWNjZXNzKSB7
CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIFt3ZWJWaWV3
IGFkZFRvVGVzdFdpbmRvd107CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9v
cCgxMCk7CisKKyAgICBFWFBFQ1RfRVEocGlkLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427623</attachid>
            <date>2021-05-03 17:11:33 -0700</date>
            <delta_ts>2021-05-04 08:17:46 -0700</delta_ts>
            <desc>WIP Patch (with test)</desc>
            <filename>225333_WKWebView_suspendPage.patch</filename>
            <type>text/plain</type>
            <size>22750</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IGNiZWQzMmEyYzkyNS4uZGIyYWE1NTRmMGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTYwNyw2ICs2MDcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAg
ICBoaXN0b3J5L0NhY2hlZEZyYW1lLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhLmgKKyAgICBoaXN0b3J5L0NhY2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
aAogCiAgICAgaHRtbC9BdXRvY2FwaXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCAyN2VkNzRjZDIxZDMuLjYxNWI0OThhNGYwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC00ODEsNiAr
NDgxLDMzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0
ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1VuaXF1ZVJlZjxD
YWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQYWdlJiBwYWdlKQorewor
ICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9yd2FyZENhY2hlOjpzdXNw
ZW5kUGFnZSgpIik7CisKKyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNr
Rm9yd2FyZENhY2hlKCk7CisKKyAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUocGFnZSwgRG9j
dW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8gRm9jdXMgdGhl
IG1haW4gZnJhbWUsIGRlZm9jdXNpbmcgYSBmb2N1c2VkIHN1YmZyYW1lIChpZiB3ZSBoYXZlIG9u
ZSkuIFdlIGRvIHRoaXMgaGVyZSwKKyAgICAvLyBiZWZvcmUgdGhlIHBhZ2UgZW50ZXJzIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUsIHdoaWxlIHdlIHN0aWxsIGNhbiBkaXNwYXRjaCBET00gYmx1ci9m
b2N1cyBldmVudHMuCisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1l
KCkpCisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdl
Lm1haW5GcmFtZSgpKTsKKworICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBm
cmFtZXMuCisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgp
KTsKKworICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UubWFpbkZyYW1lKCkpOworCisgICAgLy8g
U3RvcCBhbGwgbG9hZHMgYWdhaW4gYmVmb3JlIGNoZWNraW5nIGlmIHdlIGNhbiBzdGlsbCBjYWNo
ZSB0aGUgcGFnZSBhZnRlciBmaXJpbmcgdGhlIHBhZ2VoaWRlCisgICAgLy8gZXZlbnQsIHNpbmNl
IHRoZSBwYWdlIG1heSBoYXZlIHN0YXJ0ZWQgcGluZyBsb2FkcyBpbiBpdHMgcGFnZWhpZGUgZXZl
bnQgaGFuZGxlci4KKyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9y
d2FyZENhY2hlKCk7CisKKyAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUocGFnZSwgRG9jdW1l
bnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDYWNo
ZWRQYWdlPihwYWdlKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3
YXJkQ2FjaGU6OnRha2UoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYg
KCFpdGVtLm1fY2FjaGVkUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuaAppbmRleCBhZGFhZmFiYTZiYTYuLjI3NTRlMDM3MWFmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4U2l6ZSh1bnNpZ25lZCk7IC8vIG51bWJlciBv
ZiBwYWdlcyB0byBjYWNoZS4KICAgICB1bnNpZ25lZCBtYXhTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXhTaXplOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBVbmlxdWVSZWY8Q2FjaGVkUGFnZT4g
c3VzcGVuZFBhZ2UoUGFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSWZDYWNoZWFi
bGUoSGlzdG9yeUl0ZW0mLCBQYWdlKik7IC8vIFBydW5lcyBpZiBtYXhTaXplKCkgaXMgZXhjZWVk
ZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmUoSGlzdG9yeUl0ZW0mKTsKICAgICBD
YWNoZWRQYWdlKiBnZXQoSGlzdG9yeUl0ZW0mLCBQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNS4uMGY3M2NmNzhhYzNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBDYWNoZWRQYWdlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDYWNo
ZWRQYWdlKFBhZ2UmKTsKLSAgICB+Q2FjaGVkUGFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5D
YWNoZWRQYWdlKCk7CiAKLSAgICB2b2lkIHJlc3RvcmUoUGFnZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdG9yZShQYWdlJik7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUGFnZSYg
cGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDVkZDZhYTYwYTlhLi5mMDZkZjc3OGU5
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMjI4NCw2ICsyMjg0LDI4IEBAIC0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFG
b3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2CiAgICAgfSk7
CiB9CiAKKy0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5zdXNwZW5kKFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2Vzcykg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKK30KKworLSAo
dm9pZClfcmVzdW1lUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+cmVzdW1lKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKK30KKwogLSAoTlNBcnJheSAqKV9j
ZXJ0aWZpY2F0ZUNoYWluCiB7CiAgICAgaWYgKFdlYktpdDo6V2ViRnJhbWVQcm94eSogbWFpbkZy
YW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTlkNTkyNWFhNzc4Li42MzFm
MjMwNGRkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5IEBAIGZvciB0aGlzIHByb3BlcnR5
LgogCiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAq
KWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI4OGY2MDgyZThmZC4uNGNmNWRlNjMzMmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNDIsNyArMzE0
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIC8vIElmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZCwgd2hp
Y2ggc2hvdWxkIGJlIHRoZSBjYXNlIGR1cmluZyBwYW5uaW5nLCBwaW5jaGluZwogICAgIC8vIGFu
ZCBhbmltYXRpb24gb24gdGhlIHBhZ2UgaXRzZWxmIChraW5ldGljIHNjcm9sbGluZywgdGFwIHRv
IHpvb20pIGV0YywgdGhlbgogICAgIC8vIHdlIGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRz
IHRvIHRoZSBwYWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVycy4KLSAgICBpZiAoIW1faXNQYWdl
U3VzcGVuZGVkKSB7CisgICAgaWYgKCFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAg
ICAgICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpKTsKQEAgLTM1OTAsMjQgKzM1
OTAsNDIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGN1c3RvbVVzZXJBZ2VudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkg
fHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAh
bV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNQYWdlU3VzcGVuZGVk
KQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2FyZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1
c3BlbmRlZCA9IHRydWU7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1
c3BlbmRlZCA9IHRydWU7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
dXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNTdXNwZW5kZWQpCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBtX2lzU3VzcGVuZGVk
ID0gdHJ1ZTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3Bl
bmQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2lzU3VzcGVuZGVkKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgbV9pc1N1c3Bl
bmRlZCA9IGZhbHNlOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdW1lKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogYm9vbCBXZWJQYWdl
UHJveHk6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRSAoMTE4
ODQwKTogV2Ugc2hvdWxkIHByb2JhYmx5IG9ubHkgc3VwcG9ydCB0aGlzIGZvciB0ZXh0IGRvY3Vt
ZW50cywgbm90IGFsbCBub24taW1hZ2UgZG9jdW1lbnRzLgpAQCAtNzY5MSw3ICs3NzA5LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRy
OwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVu
ZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2YyMTk2MWMyZjAxLi44NDUz
NGFjNjEyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MDMs
NiArNTAzLDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworCiAgICAgV2ViSW5zcGVjdG9yVUlQcm94eSogaW5zcGVjdG9yKCkg
Y29uc3Q7CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX2dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAKQEAgLTEwMTIsNyArMTAxNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAg
ICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3Rv
bVRleHRFbmNvZGluZ05hbWU7IH0KIAotICAgIGJvb2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnZVN1c3BlbmRlZDsgfQor
ICAgIGJvb2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25z
dCB7IHJldHVybiBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkOyB9
CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZv
aWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAKQEAgLTI3NDYsNyAr
Mjc0OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+
IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUg
fTsKIAogICAgIGJvb2wgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uIHsgZmFsc2UgfTsKQEAgLTMw
MDcsNiArMzAxMCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJh
Y2tDb3VudGVyIHsgMCB9OwogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKICAgICBPcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBhYWJiYWE0MmU0YTUuLjNiZDNkOGFlYzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9y
d2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTQsNiArMzU5NSwzNiBAQCB2b2lkIFdlYlBhZ2U6
OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFnZT0l
cCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tGb3J3
YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQYWdlKCptX3BhZ2UpLm1vdmVUb1VuaXF1ZVB0
cigpOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkK
KyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3BlbmVkRnJhbWVzKCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVzdW1l
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBtX3BhZ2U9JXAiLCBt
X3BhZ2UuZ2V0KCkpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpleGNoYW5nZSht
X2NhY2hlZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsKKyAgICBpZiAo
IWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisK
KyAgICBjYWNoZWRQYWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJlZXplTGF5ZXJUcmVl
KExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvUm9vdFZpZXcoY29u
c3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3MzU3MjM5MTNiYi4u
ZWM2NzA4OWUyNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xNzcsNiArMTc3LDcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhcHR1cmVEZXZpY2U7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIERyYWdEYXRhOwpAQCAtMTY2MSw2ICsxNjYy
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsK
IAorICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CkBAIC0yMzA5LDYgKzIzMTMsOCBAQCBwcml2YXRl
OgogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q2FjaGVkUGFnZT4gbV9jYWNoZWRQYWdlOworCiAjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKICAgICBib29sIG1faXBjVGVzdGluZ0FQSUVuYWJsZWQg
eyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fdmlzaXRlZExpbmtUYWJsZUlEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggMTg3Y2QwZGFiZGNmLi5mZmVmMDc1MzMyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUwLDYgKzI1MCw5
IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiAKKyAgICBTdXNwZW5kKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBSZXN1bWUoKSAt
PiAoYm9vbCBzdWNjZXNzKSBBc3luYworCiAgICAgQ2xvc2UoKQogICAgIFRyeUNsb3NlKCkgLT4g
KGJvb2wgc2hvdWxkQ2xvc2UpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWE0
OTUxMmZmZDNlLi5iZjRhYzI0YjMxZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjIs
NiArMjYyLDcgQEAKIAkJNDYzRjQ3MjMyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0Y0
NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi87IH07CiAJCTQ2NDdC
MTI2MUVCQTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NDdCMTI1MUVCQTNCNzMwMDQx
RDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLzsgfTsKIAkJNDY0Qzc2NEQyMzBERjg1
QzAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRDNzY0
QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxp
dGUzICovOyB9OworCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVn
dWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sICovOyB9OwogCQk0NjVFMjgwNzI1NUIyQTZBMDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUUyODA2
MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovOyB9OwogCQk0NjZDMzg0MzIxMDYz
N0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QzM4NDIyMTA2
MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovOyB9Owog
CQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0M1NjUx
MjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi87IH07CkBAIC04Njgs
OCArODY5LDggQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VERTg0IC8qIGxpYmljdWNvcmUuZHls
aWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzgz
RTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZE
QTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0
IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9OwogCQk5M0Y3RTg2RjE0REM4RTVDMDBDODRB
OTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4
RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRs
ZS5jcHAgKi87IH07Ci0JCTk1MDk1RjIwMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRv
cENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gKi87IH07
CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDREIzMzI2MzYzMTU2
MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9OworCQk5NTA5NUYyMDI2MkZGRkE1
MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1w
bGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5NTBFNENDMTI1MkU3NTI0MDA3MTY1OUYgLyog
aU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1t
ICovOyB9OwogCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1l
Q29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsK
QEAgLTEzNDEsNiArMTM0Miw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTQ2NUMyM0FG
MjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1NUE4MTdGRjIxODEwMjFBMDAwNEEzOUEgLyogMTAweDEwMC1yZWQu
dGdhIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAv
KiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTVBODE4MDAy
MTgxMDIyMTAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nIGluIENvcHkgUmVzb3VyY2VzICov
LApAQCAtMjA2NSw2ICsyMDY3LDcgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZp
c2liaWxpdHlTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFZpc2liaWxpdHlTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0Ix
MjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAv
KiBHUFVQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
R1BVUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2
MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8q
IEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNl
c3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjQsOCAr
MjU2Nyw4IEBACiAJCTkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hv
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1Nu
YXBzaG90Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2QjE0REM4RTRE
MDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZF
MTREQzhFNUIwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNf
QnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BD
b2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQ
YWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkNEQjMzMjYz
NjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2FtcGxlZFBhZ2VU
b3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRTRDQzAyNTJFNzUy
MzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBpT1NTdHlsdXNTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1RoZW1lQ29sb3Iu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDY1LDYgKzQwNjgsNyBAQAogCQkJ
CTlCN0Q3NDBFMUY4Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8sCiAJCQkJM0ZD
QzRGRTYxRUM0RTg3RTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sICov
LAogCQkJCUY0MTUwODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0
bWwgKi8sCisJCQkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3Vs
YXJseS5odG1sICovLAogCQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9w
ZXJhdGlvbi5odG1sICovLAogCQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50
LXN0YXJ0Lmh0bWwgKi8sCiAJCQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2Q0FFIC8qIHJlbmRlcmVk
LWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KaW5k
ZXggOTk2NjFiMzQwM2IwLi4zNjUzM2U0YTczNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQpAQCAt
ODMsMyArODMsNTkgQEAgVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgRGVzdHJveVdlYlBhZ2VEdXJp
bmdXZWJQcm9jZXNzU3VzcGVuc2lvbikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgx
KTsKICAgICBFWFBFQ1RfRVEocGlkMSwgW3dlYlZpZXczIF93ZWJQcm9jZXNzSWRlbnRpZmllcl0p
OwogfQorCitURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBXS1dlYlZpZXdTdXNwZW5kUGFnZSkKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB0ZXN0TWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbVGVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6dGVzdE1lc3Nh
Z2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIF9fYmxvY2sgdW5zaWdu
ZWQgdGltZXJGaXJlZENvdW50ID0gMDsKKyAgICBbdGVzdE1lc3NhZ2VIYW5kbGVyIGFkZE1lc3Nh
Z2U6QCJ0aW1lciBmaXJlZCIgd2l0aEhhbmRsZXI6XnsKKyAgICAgICAgKyt0aW1lckZpcmVkQ291
bnQ7CisgICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicG9zdE1lc3NhZ2UtcmVndWxhcmx5
Il07CisKKyAgICBhdXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07Cisg
ICAgRVhQRUNUX05FKHBpZCwgMCk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxkIGJlIGZpcmlu
Zy4KKyAgICBhdXRvIGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICB3
aGlsZSAobGFzdFRpbWVyRmlyZUNvdW50ID09IHRpbWVyRmlyZWRDb3VudCkKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworICAgIEVYUEVDVF9UUlVFKHRpbWVy
RmlyZWRDb3VudCA+IGxhc3RUaW1lckZpcmVDb3VudCk7CisKKyAgICAvLyBTdXNwZW5kIHRoZSBw
YWdlLgorICAgIFt3ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9PTCBzdWNjZXNz
KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgLy8g
VGhlIHRpbWVyIHNob3VsZCBubyBsb25nZXIgYmUgZmlyaW5nLgorICAgIGxhc3RUaW1lckZpcmVD
b3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVu
TG9vcCgxMDApOworICAgIEVYUEVDVF9FUShsYXN0VGltZXJGaXJlQ291bnQsIHRpbWVyRmlyZWRD
b3VudCk7CisKKyAgICAvLyBSZXN1bWUgdGhlIHBhZ2UuCisgICAgZG9uZSA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIFt3ZWJWaWV3IGFkZFRvVGVzdFdpbmRvd107
CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxkIHN0YXJ0IGZpcmluZyBhZ2Fpbi4KKyAgICBsYXN0
VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZp
cmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0
VGltZXJGaXJlQ291bnQpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRpZCBub3QgY3Jhc2guCisg
ICAgRVhQRUNUX0VRKHBpZCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNz
YWdlLXJlZ3VsYXJseS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+CitzZXRJ
bnRlcnZhbCgoKSA9PiB7CisgICAgd2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5w
b3N0TWVzc2FnZSgndGltZXIgZmlyZWQnKTsKK30sIDUpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427670</attachid>
            <date>2021-05-04 08:17:49 -0700</date>
            <delta_ts>2021-05-05 10:05:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210504081748.patch</filename>
            <type>text/plain</type>
            <size>30223</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI1NGI0YjM5MGE4ZTBh
Yjc2YWI4OGVmOWNjMGFmM2EyM2QxZmM0Zi4uM2YyYWI5NDBjODZiZTQ4YmRmZmNmMTAyNDgyNmE2
MDJhOGMwZGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpz
dXNwZW5kUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAg
ICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMDQgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXZWJSVENdW0dTdHJlYW1lcl0g
ZmFzdC9tZWRpYXN0cmVhbS9yZXNpemUtdHJpbS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
N2FmMWNkYWVjMTE1MTBjZGQ5Yjc3ODZkZjM3NmVhZjZlNzNlYjVhYS4uZGY3YzVjMDgyY2QyMDJh
YmEwZDdlMDI2YTU2ODU2ZjNiMjA0ODFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAy
MS0wNS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
UEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAgIDxyZGFyOi8vNzc0NjI1
NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBUaGlzIHN1c3BlbmRzIHRoZSBw
YWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGJ1dCB0
aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVkIHRvIG5hdmlnYXRlLgorICAg
ICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFydCBvZiB0aGUgQmFjay9Gb3J3
YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51bWJlciBvZiBzdXNwZW5kZWQg
cGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRQYWdlOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3VtZVBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNz
RXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTA0ICBKaW0gTWFzb24gIDxqbWFz
b25AaWJpbnguY29tPgogCiAgICAgICAgIFtHVEtdIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiBXZWJL
aXQ6Okljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBlZTNmNDZhYzhiZDk3ZjIzMDNkODA4NTgyMjkzNmExMjBiZDMyZjRkLi4zMjg5NmQ1YzllMzRk
Nzc3Zjk0MDQ1MjdmMWYzMTk1YjQzMmU5NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwOCw2
ICs2MDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGlz
dG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1l
LmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0b3J5L0Nh
Y2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9BdXRvY2Fw
aXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcApp
bmRleCAyN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNhZWNhMTIy
MmY4ZTk0Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRpYyB2b2lk
IGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAgICBmaXJl
UGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0ZvcndhcmRD
YWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVuZFBhZ2Uo
UGFnZSYgcGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAgICBpZiAo
aXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1haW5GcmFt
ZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJh
bWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYgKCFjYW5D
YWNoZSgqcGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VTdXNwZW5z
aW9uID09IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0
eVBhZ2UoKSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2
ZXIgZ28gaW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cGFnZS5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFn
ZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAgc2V0QmFj
a0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0Zvcndh
cmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpB
Ym91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBtYWluIGZy
YW1lLCBkZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUpLiBXZSBk
byB0aGlzIGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFjay9mb3J3
YXJkIGNhY2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9jdXMgZXZl
bnRzLgotICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKLSAg
ICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLT5tYWlu
RnJhbWUoKSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkp
CisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1h
aW5GcmFtZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBmcmFt
ZXMuCi0gICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJhbWUoKSk7
CisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgpKTsKIAot
ICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0cm95UmVu
ZGVyVHJlZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRzIGFnYWlu
IGJlZm9yZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0ZXIgZmly
aW5nIHRoZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkgaGF2ZSBz
dGFydGVkIHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0gICAgcGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBw
YWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFmdGVyIGZp
cmluZyB0aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAgIC8vIGNv
dWxkIGhhdmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2Fj
aGluZy4KLSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNrRm9yd2Fy
ZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3Bl
bnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENh
Y2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgq
cGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRD
YWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8g
TWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgorICAg
IFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29w
ZTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKworYm9vbCBC
YWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSog
cGFnZSkKK3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1c3BlbnNp
b246Ok5vKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBp
biB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVh
ZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1h
a2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdl
KFdURk1vdmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBy
dW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CkBA
IC00ODEsNiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUo
SGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQ
YWdlJiBwYWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9y
d2FyZENhY2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVuZFBhZ2Uo
cGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVk
UGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFn
ZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJkN2YxZDJj
MzlkNDc1MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgxZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQp
OyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYg
bWF4U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhp
c3RvcnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwpA
QCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2FjaGVQYWdl
Q29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3JjZVN1c3Bl
bnNpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdl
PiB0cnlTdXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lkIHBydW5l
KFBydW5pbmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4
ODVkMjUuLjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENhY2hlZFBh
Z2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQ
YWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwODRhZmRmYjcwZjhmMzJjMmE0
NWNhNjBkNWVhMzE4YjRhODJkM2E4Li40YTVlNDRmZTQzY2ViOGYxMjQ2NWMyMTI3ZjQ0NjY3ODlj
NTk3M2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTIyODQsNiArMjI4NCwyOCBAQCAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodgogICAg
IH0pOwogfQogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZChbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nl
c3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisK
Ky0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgaWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZShbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIC0gKE5TQXJyYXkg
KilfY2VydGlmaWNhdGVDaGFpbgogewogICAgIGlmIChXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk5ZDU5MjVhYTc3ODg2
MjVlZGExNjlkODRiMzVkMDkxMjQ5Njk3M2EuLjYzMWYyMzA0ZGRlNDU3Njk0N2JhZTgzM2M5OWIx
ZjY3MDlmZGJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5IEBAIGZvciB0aGlzIHByb3Bl
cnR5LgogCiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmlu
ZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU4MmRjMTg2ZmQ2ZTkzM2QyNDkwMTdhNjBl
ZjJmYjgxNWFiY2M2YTIuLmI0NjFmZTcxNTk2ZmVkMzU4NmVhZjVhMGZjNjYyMzg1NGU3NmNiZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE0Miw3ICsz
MTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZl
V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VzcGVuZGVkLCB3
aGljaCBzaG91bGQgYmUgdGhlIGNhc2UgZHVyaW5nIHBhbm5pbmcsIHBpbmNoaW5nCiAgICAgLy8g
YW5kIGFuaW1hdGlvbiBvbiB0aGUgcGFnZSBpdHNlbGYgKGtpbmV0aWMgc2Nyb2xsaW5nLCB0YXAg
dG8gem9vbSkgZXRjLCB0aGVuCiAgICAgLy8gd2UgZG8gbm90IHNlbmQgYW55IG9mIHRoZSBldmVu
dHMgdG8gdGhlIHBhZ2UgZXZlbiBpZiBpcyBoYXMgbGlzdGVuZXJzLgotICAgIGlmICghbV9pc1Bh
Z2VTdXNwZW5kZWQpIHsKKyAgICBpZiAoIW1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsK
ICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCkpOwpAQCAtMzU5MCwyNCAr
MzU5MCw0MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgY3VzdG9tVXNlckFnZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8
ICFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworICAgIG1fYXJlQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1BhZ2VTdXNwZW5k
ZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1fYXJlQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNQYWdl
U3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkID0gdHJ1ZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5k
ZWQgPSB0cnVlOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3Vz
cGVuZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNTdXNwZW5kZWQp
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBtX2lzU3Vz
cGVuZGVkID0gZmFsc2U7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXN1bWUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBib29sIFdlYlBh
Z2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FICgx
MTg4NDApOiBXZSBzaG91bGQgcHJvYmFibHkgb25seSBzdXBwb3J0IHRoaXMgZm9yIHRleHQgZG9j
dW1lbnRzLCBub3QgYWxsIG5vbi1pbWFnZSBkb2N1bWVudHMuCkBAIC03NjkxLDcgKzc3MDksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNz
VGVybWluYXRpb25SZWFzb24gdGVybWluYQogICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG51bGxw
dHI7CiAKICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gZmFsc2U7Ci0gICAgbV9pc1BhZ2VTdXNw
ZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkID0gZmFsc2U7CiAKICAgICBtX3VzZXJTY3JpcHRzTm90aWZpZWQgPSBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3MjEyNmNkMDVlNjU4ZjVm
NWEyMTY1NDAyN2I4YWRjNjZjZWNiODM5Li5kN2M0OWRkNTdiNTcwOTY1OTJhMjU0MjNlZjgyMGI3
Y2EwMDc0ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTA0
LDYgKzUwNCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpOwogICAg
IHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIAorICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlc3VtZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKwogICAgIFdlYkluc3BlY3RvclVJUHJveHkqIGluc3BlY3Rvcigp
IGNvbnN0OwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIGdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogCkBAIC0xMDEzLDcgKzEwMTYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwog
ICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKLSAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VTdXNwZW5kZWQ7IH0K
KyAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZDsg
fQogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCkBAIC0yNzQ4LDcg
KzI3NTEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxl
PiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5k
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVl
IH07CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNlIH07CkBAIC0z
MDA5LDYgKzMwMTIsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXli
YWNrQ291bnRlciB7IDAgfTsKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggNmU0MTZmNDMxNjE0NzlkZTk1NTYwNTJkNTE4NjQyMGI0OTFjMTRiOS4uNzBiYmNk
MTBmODI5Y2VmNWQ4ZjkyYTBiNTdkZjAxOGFhMzIyMmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9y
d2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTQsNiArMzU5NSwzNyBAQCB2b2lkIFdlYlBhZ2U6
OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFnZT0l
cCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tGb3J3
YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQYWdlKCptX3BhZ2UpOworICAgIEFTU0VSVCht
X2NhY2hlZFBhZ2UpOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSkKKyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3BlbmVk
RnJhbWVzKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBtX3Bh
Z2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpl
eGNoYW5nZShtX2NhY2hlZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsK
KyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisKKyAgICBjYWNoZWRQYWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJlZXpl
TGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvUm9v
dFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFiMDIw
ZmM0NDNlODAwZjFkOTZlN2JlZTI4Y2IzNmZmNjljYTZiMDAuLjFiOWY0ZGExMzRkZmRhNzYzNThh
YzMwYmZlNTk4NzJhYjc4ZWM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FwdHVy
ZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0xNjYz
LDYgKzE2NjQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgcGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsKQEAgLTIzMTEsNiArMjMxNSw4IEBA
IHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
IAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDYWNoZWRQYWdlPiBtX2NhY2hlZFBhZ2U7
CisKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIGJvb2wgbV9pcGNUZXN0aW5nQVBJ
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBlMzdhNjU5YzkxYjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4xYjNh
NjgxZmNiNTFmNDEzZTIxYmE0MjU0NDJiOGMwYTFmZDVlMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2
ICsyNTAsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFN1c3BlbmRBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKQogCisgICAgU3VzcGVuZCgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgUmVz
dW1lKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKwogICAgIENsb3NlKCkKICAgICBUcnlDbG9z
ZSgpIC0+IChib29sIHNob3VsZENsb3NlKSBBc3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlMDVkYTRlNGQzMzQ4MzQ5NTU0ZThjYzA1
ZTRkMjMzOGEyOGEwNy4uYzg1NzgwMjFlNmY0YThiMjBmNTYxMjNiNjVjNjdiZmEwODE2NjczZiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAg
PHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYmFzaWMgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMDMgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gTW92
ZSBHUFVQcm9jZXNzIFdlYkdMIHRvIEV4cGVyaW1lbnRhbCBGZWF0dXJlCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGFhNDk1MTJmZmQzZWFhOTc4ZTVmNmNiMDhkNjNlMGE1MzgyZDFmNTIuLjIx
NWYyZDZjMWY0YzVlOTg3ZWE5OTFkMTI4N2RiMzVhMjcwZDFmMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yNjIsNiArMjYyLDcgQEAKIAkJNDYzRjQ3MjMyNTVCNDlCNjAwRDlFMENDIC8q
IFZpc2liaWxpdHlTdGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0g
Ki87IH07CiAJCTQ2NDdCMTI2MUVCQTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NDdC
MTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLzsgfTsKIAkJ
NDY0Qzc2NEQyMzBERjg1QzAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
LTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OworCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0YgLyog
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RN
ZXNzYWdlLXJlZ3VsYXJseS5odG1sICovOyB9OwogCQk0NjVFMjgwNzI1NUIyQTZBMDA2M0E3ODcg
LyogR1BVUHJvY2Vzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovOyB9Owog
CQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVy
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZl
ci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNv
b2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwg
Ki87IH07CkBAIC04NjgsOCArODY5LDggQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VERTg0IC8q
IGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiAq
LzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNTZEQTgx
RTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9OwogCQk5M0Y3RTg2
RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVz
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07Ci0JCTk1MDk1RjIwMjYyRkZGQTUwMDAwRDkyMCAv
KiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9w
Q29sb3IubW0gKi87IH07CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJh
eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0ZDREIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9OworCQk5
NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUw
MDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5NTBFNENDMTI1MkU3
NTI0MDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NT
dHlsdXNTdXBwb3J0Lm1tICovOyB9OwogCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8q
IFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVD
b2xvci5tbSAqLzsgfTsKQEAgLTE2NDgsNiArMTY0OSw3IEBACiAJCQkJM0ZDQzRGRTgxRUM0RThD
QTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNs
aWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMEVCQkNDNjYxRkZGOUUwQzAwRkE0
MkFCIC8qIHBvcC11cC1jaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTQ2NUMy
M0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBODFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1v
cGVyYXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBOTFFRjQ2OTZC
MDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0yMDY1LDYgKzIwNjcsNyBAQAogCQk0NjNGNDcyMjI1NUI0OUI2MDBEOUUw
Q0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzRGlkVGVybWluYXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIw
IC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQmFkU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RTI4MDYyNTVCMkE2OTAw
NjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZD
Mzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVy
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVFQ0RGMDA1
NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjU2NCw4ICsyNTY3LDggQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmll
d1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tX
ZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZC
MTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVk
UGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNG
Q0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdl
VG9wQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYW1w
bGVkUGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBFNEND
MDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3VGhl
bWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNjUsNiArNDA2OCw3
IEBACiAJCQkJOUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLywK
IAkJCQkzRkNDNEZFNjFFQzRFODdFMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRl
Lmh0bWwgKi8sCiAJCQkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24t
Y2xpY2suaHRtbCAqLywKKwkJCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTQxRUY0NjkyQzAwODNGQTA4IC8qIHBy
ZXZlbnQtb3BlcmF0aW9uLmh0bWwgKi8sCiAJCQkJRjQxQUI5OUExRUY0NjkyQzAwODNGQTA4IC8q
IHByZXZlbnQtc3RhcnQuaHRtbCAqLywKIAkJCQlBMTJEREJGRjFFODM3M0MxMDBDRjZDQUUgLyog
cmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lv
bi5tbQppbmRleCA5OTY2MWIzNDAzYjA0ZDE0MWExYzQyODE0NWI3ZDZmZjQ3OThkZGMyLi4zNjUz
M2U0YTczNzUyZTU0ZjRiZTBiMDcyYjBhMjQzZjRiOGE2NDU0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24u
bW0KQEAgLTgzLDMgKzgzLDU5IEBAIFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlc3Ryb3lXZWJQ
YWdlRHVyaW5nV2ViUHJvY2Vzc1N1c3BlbnNpb24pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c2xlZXAoMSk7CiAgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3MyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdKTsKIH0KKworVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBh
Z2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gdGVzdE1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOnRl
c3RNZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBfX2Jsb2Nr
IHVuc2lnbmVkIHRpbWVyRmlyZWRDb3VudCA9IDA7CisgICAgW3Rlc3RNZXNzYWdlSGFuZGxlciBh
ZGRNZXNzYWdlOkAidGltZXIgZmlyZWQiIHdpdGhIYW5kbGVyOl57CisgICAgICAgICsrdGltZXJG
aXJlZENvdW50OworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBvc3RNZXNzYWdlLXJl
Z3VsYXJseSJdOworCisgICAgYXV0byBwaWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdOworICAgIEVYUEVDVF9ORShwaWQsIDApOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBi
ZSBmaXJpbmcuCisgICAgYXV0byBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7
CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJV
RSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAgLy8gU3VzcGVu
ZCB0aGUgcGFnZS4KKyAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJPT0wg
c3VjY2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIC8vIFRoZSB0aW1lciBzaG91bGQgbm8gbG9uZ2VyIGJlIGZpcmluZy4KKyAgICBsYXN0VGlt
ZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c3BpblJ1bkxvb3AoMTAwKTsKKyAgICBFWFBFQ1RfRVEobGFzdFRpbWVyRmlyZUNvdW50LCB0aW1l
ckZpcmVkQ291bnQpOworCisgICAgLy8gUmVzdW1lIHRoZSBwYWdlLgorICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfcmVzdW1lUGFnZTpeKEJPT0wgc3VjY2VzcykgeworICAgICAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBbd2ViVmlldyBhZGRUb1Rlc3RX
aW5kb3ddOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBzdGFydCBmaXJpbmcgYWdhaW4uCisg
ICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENvdW50OworICAgIHdoaWxlIChsYXN0
VGltZXJGaXJlQ291bnQgPT0gdGltZXJGaXJlZENvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisgICAgRVhQRUNUX1RSVUUodGltZXJGaXJlZENvdW50
ID4gbGFzdFRpbWVyRmlyZUNvdW50KTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkaWQgbm90IGNy
YXNoLgorICAgIEVYUEVDVF9FUShwaWQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0p
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9w
b3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNhNmIwNGJk
MTVlMDBkOGNiZGJlZWNhMTZkYjI5NjZlYzVhNTllOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+
CitzZXRJbnRlcnZhbCgoKSA9PiB7CisgICAgd2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZSgndGltZXIgZmlyZWQnKTsKK30sIDUpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427775</attachid>
            <date>2021-05-05 10:05:41 -0700</date>
            <delta_ts>2021-05-05 14:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210505100540.patch</filename>
            <type>text/plain</type>
            <size>34690</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlhODIyNDU4MmY2Mzdi
MDFhODJhMmM3NDBkZjFiOWE0MWU0YjFlNy4uYmFhOTc2OWVkZTgwNTlmMjIzNTlhMWY5MmQ0Y2Vj
ZWFiNWFlOGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpz
dXNwZW5kUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAg
ICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMDUgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10g
V3JhcCBpbmNvbWluZyBhdWRpbyBidWZmZXJzLCBjb21wbHlpbmcgd2l0aCBmYXN0TWFsbG9jIHJl
c3RyaWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDcyMzExZDA1MjZlNWM4MmZiNmRjY2I0ZGRhMzgxYTJh
YTdhM2RkLi43NjRmMzUwZWExZjBkY2YzZGE0MTVjNGU1ZGY2ZDdkMTJmZDRmYTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMK
KyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZp
ZXcuIFRoaXMgc3VzcGVuZHMgdGhlIHBhZ2UgYXMgaWYgaXQgd2FzIGluCisgICAgICAgIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUgYnV0IHRoZSBzdXNwZW5zaW9uIGhhcHBlbnMgaW4tcGxhY2UsIG5v
IG5lZWQgdG8gbmF2aWdhdGUuCisgICAgICAgIFRoZSBzdXNwZW5kZWQgcGFnZSBpcyBhbHNvIG5v
dCBwYXJ0IG9mIHRoZSBCYWNrL0ZvcndhcmQgY2FjaGUgc28gaXRzIGNhcCBvbiB0aGUKKyAgICAg
ICAgbnVtYmVyIG9mIHN1c3BlbmRlZCBwYWdlcyBkb2VzIG5vdCBhcHBseSBoZXJlLgorCisgICAg
ICAgIFJlcXVlc3RzIHRvIG5hdmlnYXRlIGEgc3VzcGVuZGVkIHZpZXcgd2lsbCByZXN1bWUgdGhl
IHZpZXcuIEFsc28sIHJlcXVlc3RzIHRvCisgICAgICAgIGV2YWx1YXRlIEphdmFTY3JpcHQgb24g
YSBzdXNwZW5kZWQgdmlldyB3aWxsIGZhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kUGFnZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNo
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3VtZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNS0wNSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRHluYW1pY2FsbHkgcGFzcyBjYXB0dXJlIHNh
bmRib3ggZXh0ZW5zaW9ucyB0byBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZTNm
NDZhYzhiZDk3ZjIzMDNkODA4NTgyMjkzNmExMjBiZDMyZjRkLi4zMjg5NmQ1YzllMzRkNzc3Zjk0
MDQ1MjdmMWYzMTk1YjQzMmU5NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwOCw2ICs2MDgs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGlzdG9yeS9C
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lLmgKICAg
ICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0b3J5L0NhY2hlZFBh
Z2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9BdXRvY2FwaXRhbGl6
ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCAy
N2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNhZWNhMTIyMmY4ZTk0
Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRpYyB2b2lkIGZpcmVQ
YWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAgICBmaXJlUGFnZUhp
ZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0ZvcndhcmRDYWNoZTo6
YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVuZFBhZ2UoUGFnZSYg
cGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAgICBpZiAoaXRlbS5p
c0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYgKCFjYW5DYWNoZSgq
cGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VTdXNwZW5zaW9uID09
IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0eVBhZ2Uo
KSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2ZXIgZ28g
aW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFnZS5p
c1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hv
dWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAgc2V0QmFja0Zvcndh
cmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0ZvcndhcmRDYWNo
ZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpBYm91dFRv
RW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBtYWluIGZyYW1lLCBk
ZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUpLiBXZSBkbyB0aGlz
IGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFjay9mb3J3YXJkIGNh
Y2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9jdXMgZXZlbnRzLgot
ICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKLSAgICAgICAg
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLT5tYWluRnJhbWUo
KSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCisgICAg
ICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1haW5GcmFt
ZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBmcmFtZXMuCi0g
ICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJhbWUoKSk7CisgICAg
ZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgpKTsKIAotICAgIGRl
c3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0cm95UmVuZGVyVHJl
ZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRzIGFnYWluIGJlZm9y
ZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0ZXIgZmlyaW5nIHRo
ZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkgaGF2ZSBzdGFydGVk
IHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0gICAgcGFnZS0+bWFp
bkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBwYWdlLm1h
aW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAgICAvLyBD
aGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFmdGVyIGZpcmluZyB0
aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAgIC8vIGNvdWxkIGhh
dmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2FjaGluZy4K
LSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hl
U3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3BlbnNpb246
Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3Rh
dGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwg
RG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0
YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgorICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKworYm9vbCBCYWNrRm9y
d2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkK
K3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1c3BlbnNpb246Ok5v
KTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlz
IHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1ha2VVbmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKFdURk1v
dmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdS
ZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CkBAIC00ODEs
NiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9y
eUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0ZDo6dW5p
cXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQYWdlJiBw
YWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9yd2FyZENh
Y2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVuZFBhZ2UocGFnZSwg
Rm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
QmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKIHsK
ICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJkN2YxZDJjMzlkNDc1
MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgxZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQpOyAvLyBu
dW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYgbWF4U2l6
ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhpc3RvcnlJ
dGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwpAQCAtNzQs
NiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2FjaGVQYWdlQ29udGFp
bmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3JjZVN1c3BlbnNpb24g
OiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiB0cnlT
dXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lkIHBydW5lKFBydW5p
bmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4ODVkMjUu
LjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENhY2hlZFBhZ2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENhY2hl
ZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNh
Y2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQYWdlJiBw
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwODRhZmRmYjcwZjhmMzJjMmE0NWNhNjBk
NWVhMzE4YjRhODJkM2E4Li40YTVlNDRmZTQzY2ViOGYxMjQ2NWMyMTI3ZjQ0NjY3ODljNTk3M2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTIyODQsNiArMjI4NCwyOCBAQCAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9y
RG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodgogICAgIH0pOwog
fQogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZChbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
aWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIC0gKE5TQXJyYXkgKilfY2Vy
dGlmaWNhdGVDaGFpbgogewogICAgIGlmIChXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFt
ZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk5ZDU5MjVhYTc3ODg2MjVlZGEx
NjlkODRiMzVkMDkxMjQ5Njk3M2EuLjYzMWYyMzA0ZGRlNDU3Njk0N2JhZTgzM2M5OWIxZjY3MDlm
ZGJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5IEBAIGZvciB0aGlzIHByb3BlcnR5Lgog
CiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRv
bWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU4MmRjMTg2ZmQ2ZTkzM2QyNDkwMTdhNjBlZjJmYjgx
NWFiY2M2YTIuLjg5ODk4YmJhN2Q0ZmQxMzY5ZDBlYWM5NzNjZGI5YzZhMjhmMGMxN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMxNiw2ICsxMzE2LDEx
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwo
KSB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiAKKyAgICBpZiAobV9p
c1N1c3BlbmRlZCkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkUmVxdWVzdDogcGFnZSBpcyBzdXNwZW5kZWQsIHJlc3VtaW5nIGl0LiIpOworICAgICAgICBy
ZXN1bWUoW10oYm9vbCkgeyB9KTsKKyAgICB9CisKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25h
dmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpOwogCiAgICAgaWYg
KHNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQpAQCAt
MTM3OSw2ICsxMzg0LDExIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5j
aFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCisgICAgaWYgKG1faXNTdXNwZW5kZWQpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMg
c3VzcGVuZGVkLCByZXN1bWluZyBpdC4iKTsKKyAgICAgICAgcmVzdW1lKFtdKGJvb2wpIHsgfSk7
CisgICAgfQorCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwog
ICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbCIpOwpAQCAtMTQ0
MCw2ICsxNDUwLDExIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJvY2Vzc0xhdW5jaFJl
YXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCisgICAgaWYgKG1faXNTdXNwZW5kZWQpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgc3Vz
cGVuZGVkLCByZXN1bWluZyBpdC4iKTsKKyAgICAgICAgcmVzdW1lKFtdKGJvb2wpIHsgfSk7Cisg
ICAgfQorCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVj
dG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKIAogICAgIGlm
IChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKQEAg
LTE0OTQsNiArMTUwOSwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFp
biB7IHNpbXVsYXRlZFJlcXVlc3QudXJsKCkgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlh
bFByb2Nlc3MpOwogCisgICAgaWYgKG1faXNTdXNwZW5kZWQpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFNpbXVsYXRlZFJlcXVlc3Q6IHBhZ2UgaXMgc3Vz
cGVuZGVkLCByZXN1bWluZyBpdC4iKTsKKyAgICAgICAgcmVzdW1lKFtdKGJvb2wpIHsgfSk7Cisg
ICAgfQorCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVNp
bXVsYXRlZExvYWRXaXRoRGF0YU5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0KHNpbXVsYXRlZFJl
cXVlc3QpLCBtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIFJl
c291cmNlUmVzcG9uc2Uoc2ltdWxhdGVkUmVzcG9uc2UpLCBudWxscHRyKSwgbV9iYWNrRm9yd2Fy
ZExpc3QtPmN1cnJlbnRJdGVtKCkpOwogCiAgICAgaWYgKHNob3VsZEZvcmNlRm9yZWdyb3VuZFBy
aW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQpAQCAtMzE0Miw3ICszMTYyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYg
ZXZlbnQpCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VzcGVuZGVkLCB3aGljaCBzaG91bGQgYmUg
dGhlIGNhc2UgZHVyaW5nIHBhbm5pbmcsIHBpbmNoaW5nCiAgICAgLy8gYW5kIGFuaW1hdGlvbiBv
biB0aGUgcGFnZSBpdHNlbGYgKGtpbmV0aWMgc2Nyb2xsaW5nLCB0YXAgdG8gem9vbSkgZXRjLCB0
aGVuCiAgICAgLy8gd2UgZG8gbm90IHNlbmQgYW55IG9mIHRoZSBldmVudHMgdG8gdGhlIHBhZ2Ug
ZXZlbiBpZiBpcyBoYXMgbGlzdGVuZXJzLgotICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsK
KyAgICBpZiAoIW1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpIHsK
ICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9j
ZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCkpOwpAQCAtMzU5MCwyNCArMzYxMCw0NSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNl
ckFnZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1BhZ2VT
dXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2FyZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpIHx8IG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNT
dXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1
ZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gdHJ1
ZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdXNwZW5kOiIpOworICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSB8fCBtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworCisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kKCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZToiKTsKKworICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSB8fCAhbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGlu
ZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUgKDExODg0MCk6IFdlIHNob3VsZCBwcm9iYWJseSBv
bmx5IHN1cHBvcnQgdGhpcyBmb3IgdGV4dCBkb2N1bWVudHMsIG5vdCBhbGwgbm9uLWltYWdlIGRv
Y3VtZW50cy4KQEAgLTQxNzYsNyArNDIxNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAog
ICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhw
ZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJQYWdlIGlzIHN1c3BlbmRlZCJfcyB9KSk7CisKKyAg
ICBpZiAobV9pc1N1c3BlbmRlZCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKExvYWRpbmcsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IHBhZ2UgaXMg
c3VzcGVuZGVkLCBmYWlsaW5nIHJlcXVlc3QgdG8gcnVuIEphdmFTY3JpcHQiKTsKICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOworICAgIH0KIAogICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0eTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtNzY5MSw3ICs3NzM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3Rh
dGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAg
ICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRyOwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2Vz
cyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2Vy
U2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNzIxMjZjZDA1ZTY1OGY1ZjVhMjE2NTQwMjdiOGFkYzY2Y2VjYjgzOS4uZDdj
NDlkZDU3YjU3MDk2NTkyYTI1NDIzZWY4MjBiN2NhMDA3NDg3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwNCw2ICs1MDQsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCk7CiAK
KyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICAgICBXZWJJ
bnNwZWN0b3JVSVByb3h5KiBpbnNwZWN0b3IoKSBjb25zdDsKICAgICBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0K
IApAQCAtMTAxMyw3ICsxMDE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY3VzdG9tVGV4dEVuY29kaW5n
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4dEVuY29kaW5nTmFtZTsgfQogCi0gICAg
Ym9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNQYWdlU3VzcGVuZGVkOyB9CisgICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0KICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKTsKIApAQCAtMjc0OCw3ICsyNzUxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlm
CiAKLSAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXJl
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwogCiAgICAgYm9vbCBtX2NvbnRyb2xsZWRC
eUF1dG9tYXRpb24geyBmYWxzZSB9OwpAQCAtMzAwOSw2ICszMDEyLDcgQEAgcHJpdmF0ZToKICAg
ICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBib29s
IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZlNDE2ZjQzMTYxNDc5ZGU5NTU2
MDUyZDUxODY0MjBiNDkxYzE0YjkuLjcwYmJjZDEwZjgyOWNlZjVkOGY5MmEwYjU3ZGYwMThhYTMy
MjJiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xNTIsNiArMTUyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRQYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1v
blZNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250YWN0c1JlcXVlc3REYXRhLmg+CkBAIC0zNTk0
LDYgKzM1OTUsMzcgQEAgdm9pZCBXZWJQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpCiAgICAgbV9wYWdlLT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOwogfQogCit2b2lkIFdlYlBhZ2U6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJzdXNwZW5kOiBtX3BhZ2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAg
ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisK
KyAgICBtX2NhY2hlZFBhZ2UgPSBCYWNrRm9yd2FyZENhY2hlOjpzaW5nbGV0b24oKS5zdXNwZW5k
UGFnZSgqbV9wYWdlKTsKKyAgICBBU1NFUlQobV9jYWNoZWRQYWdlKTsKKyAgICBpZiAoYXV0byBt
YWluRnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkpCisgICAgICAgIG1haW5GcmFtZS0+
bG9hZGVyKCkuZGV0YWNoRnJvbUFsbE9wZW5lZEZyYW1lcygpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInJlc3VtZTogbV9wYWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwor
ICAgIGF1dG8gY2FjaGVkUGFnZSA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWNoZWRQYWdlLCBudWxscHRy
KTsKKyAgICBBU1NFUlQoY2FjaGVkUGFnZSk7CisgICAgaWYgKCFjYWNoZWRQYWdlKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgY2FjaGVkUGFnZS0+cmVz
dG9yZSgqbV9wYWdlKTsKKyAgICB1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFz
b246OlBhZ2VTdXNwZW5kZWQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCiBJ
bnRQb2ludCBXZWJQYWdlOjpzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkK
IHsKICAgICBJbnRQb2ludCB3aW5kb3dQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhYjAyMGZjNDQzZTgwMGYxZDk2ZTdiZWUyOGNiMzZmZjY5
Y2E2YjAwLi4xYjlmNGRhMTM0ZGZkYTc2MzU4YWMzMGJmZTU5ODcyYWI3OGVjNmJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNzcsNiArMTc3LDcg
QEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhcHR1cmVEZXZpY2U7CiBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIERyYWdEYXRhOwpAQCAtMTY2Myw2ICsxNjY0LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgcmVz
dW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIAorICAgIHZvaWQgc3VzcGVuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlc3VtZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZv
aWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKTsKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0
aW9uKCk7CkBAIC0yMzExLDYgKzIzMTUsOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6Q2FjaGVkUGFnZT4gbV9jYWNoZWRQYWdlOworCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKICAgICBib29sIG1faXBjVGVzdGluZ0FQSUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIHVpbnQ2
NF90IG1fdmlzaXRlZExpbmtUYWJsZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTM3YTY1OWM5MWIzODkyZTJi
OGY5MzhjNjI2Y2RjZmU4OWU0MTkwNC4uMWIzYTY4MWZjYjUxZjQxM2UyMWJhNDI1NDQyYjhjMGEx
ZmQ1ZTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yNTAsNiArMjUwLDkgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIFJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAorICAgIFN1c3BlbmQoKSAtPiAo
Ym9vbCBzdWNjZXNzKSBBc3luYworICAgIFJlc3VtZSgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5j
CisKICAgICBDbG9zZSgpCiAgICAgVHJ5Q2xvc2UoKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkgQXN5
bmMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDUzYzc4NDgxMzYwZTE3OWMzMDI4ZmM5YzdhOWViNjBhMjVhZTA5ZTQuLmUxYjMxNzQ3OGQ0MjRj
M2IxODRkNjAyZjZhNGRmMDE2ODZiYjA1NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNS0wNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc3VzcGVuZCAv
IHJlc3VtZSBhIFdLV2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAgIDxyZGFyOi8vNzc0NjI1NDM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIEFQSSB0ZXN0
IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0
bWw6IEFkZGVkLgorCiAyMDIxLTA1LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzY5ODUuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGFhNDk1MTJmZmQzZWFhOTc4ZTVmNmNiMDhkNjNlMGE1MzgyZDFmNTIuLjIx
NWYyZDZjMWY0YzVlOTg3ZWE5OTFkMTI4N2RiMzVhMjcwZDFmMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yNjIsNiArMjYyLDcgQEAKIAkJNDYzRjQ3MjMyNTVCNDlCNjAwRDlFMENDIC8q
IFZpc2liaWxpdHlTdGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0g
Ki87IH07CiAJCTQ2NDdCMTI2MUVCQTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NDdC
MTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLzsgfTsKIAkJ
NDY0Qzc2NEQyMzBERjg1QzAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
LTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OworCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0YgLyog
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RN
ZXNzYWdlLXJlZ3VsYXJseS5odG1sICovOyB9OwogCQk0NjVFMjgwNzI1NUIyQTZBMDA2M0E3ODcg
LyogR1BVUHJvY2Vzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovOyB9Owog
CQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVy
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZl
ci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNv
b2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwg
Ki87IH07CkBAIC04NjgsOCArODY5LDggQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VERTg0IC8q
IGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiAq
LzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNTZEQTgx
RTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9OwogCQk5M0Y3RTg2
RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVz
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07Ci0JCTk1MDk1RjIwMjYyRkZGQTUwMDAwRDkyMCAv
KiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9w
Q29sb3IubW0gKi87IH07CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJh
eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0ZDREIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9OworCQk5
NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUw
MDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5NTBFNENDMTI1MkU3
NTI0MDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NT
dHlsdXNTdXBwb3J0Lm1tICovOyB9OwogCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8q
IFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVD
b2xvci5tbSAqLzsgfTsKQEAgLTE2NDgsNiArMTY0OSw3IEBACiAJCQkJM0ZDQzRGRTgxRUM0RThD
QTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNs
aWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMEVCQkNDNjYxRkZGOUUwQzAwRkE0
MkFCIC8qIHBvcC11cC1jaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTQ2NUMy
M0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBODFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1v
cGVyYXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBOTFFRjQ2OTZC
MDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0yMDY1LDYgKzIwNjcsNyBAQAogCQk0NjNGNDcyMjI1NUI0OUI2MDBEOUUw
Q0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzRGlkVGVybWluYXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIw
IC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQmFkU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RTI4MDYyNTVCMkE2OTAw
NjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZD
Mzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVy
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVFQ0RGMDA1
NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjU2NCw4ICsyNTY3LDggQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmll
d1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tX
ZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZC
MTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVk
UGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNG
Q0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdl
VG9wQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYW1w
bGVkUGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBFNEND
MDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3VGhl
bWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNjUsNiArNDA2OCw3
IEBACiAJCQkJOUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLywK
IAkJCQkzRkNDNEZFNjFFQzRFODdFMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRl
Lmh0bWwgKi8sCiAJCQkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24t
Y2xpY2suaHRtbCAqLywKKwkJCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTQxRUY0NjkyQzAwODNGQTA4IC8qIHBy
ZXZlbnQtb3BlcmF0aW9uLmh0bWwgKi8sCiAJCQkJRjQxQUI5OUExRUY0NjkyQzAwODNGQTA4IC8q
IHByZXZlbnQtc3RhcnQuaHRtbCAqLywKIAkJCQlBMTJEREJGRjFFODM3M0MxMDBDRjZDQUUgLyog
cmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lv
bi5tbQppbmRleCA5OTY2MWIzNDAzYjA0ZDE0MWExYzQyODE0NWI3ZDZmZjQ3OThkZGMyLi45Yjk0
ZWE3MTViYjMzMDg2OTNjMmI2MjYzM2NkNjNjODJhZTk5NDUwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24u
bW0KQEAgLTgzLDMgKzgzLDk1IEBAIFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlc3Ryb3lXZWJQ
YWdlRHVyaW5nV2ViUHJvY2Vzc1N1c3BlbnNpb24pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c2xlZXAoMSk7CiAgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3MyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdKTsKIH0KKworVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBh
Z2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gdGVzdE1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOnRl
c3RNZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBfX2Jsb2Nr
IHVuc2lnbmVkIHRpbWVyRmlyZWRDb3VudCA9IDA7CisgICAgW3Rlc3RNZXNzYWdlSGFuZGxlciBh
ZGRNZXNzYWdlOkAidGltZXIgZmlyZWQiIHdpdGhIYW5kbGVyOl57CisgICAgICAgICsrdGltZXJG
aXJlZENvdW50OworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBvc3RNZXNzYWdlLXJl
Z3VsYXJseSJdOworCisgICAgYXV0byBwaWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdOworICAgIEVYUEVDVF9ORShwaWQsIDApOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBi
ZSBmaXJpbmcuCisgICAgYXV0byBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7
CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJV
RSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAgLy8gU3VzcGVu
ZCB0aGUgcGFnZS4KKyAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJPT0wg
c3VjY2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIC8vIFRoZSB0aW1lciBzaG91bGQgbm8gbG9uZ2VyIGJlIGZpcmluZy4KKyAgICBsYXN0VGlt
ZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c3BpblJ1bkxvb3AoMTAwKTsKKyAgICBFWFBFQ1RfRVEobGFzdFRpbWVyRmlyZUNvdW50LCB0aW1l
ckZpcmVkQ291bnQpOworCisgICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJ1biBKYXZh
U2NyaXB0LgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJ3aW5kb3cubmFtZSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisg
ICAgLy8gUmVzdW1lIHRoZSBwYWdlLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBf
cmVzdW1lUGFnZTpeKEJPT0wgc3VjY2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNz
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKyAgICBbd2ViVmlldyBhZGRUb1Rlc3RXaW5kb3ddOworCisgICAgLy8g
VGhlIHRpbWVyIHNob3VsZCBzdGFydCBmaXJpbmcgYWdhaW4uCisgICAgbGFzdFRpbWVyRmlyZUNv
dW50ID0gdGltZXJGaXJlZENvdW50OworICAgIHdoaWxlIChsYXN0VGltZXJGaXJlQ291bnQgPT0g
dGltZXJGaXJlZENvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9v
cCgxMCk7CisgICAgRVhQRUNUX1RSVUUodGltZXJGaXJlZENvdW50ID4gbGFzdFRpbWVyRmlyZUNv
dW50KTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkaWQgbm90IGNyYXNoLgorICAgIEVYUEVDVF9F
UShwaWQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworfQorCitURVNUKFByb2Nl
c3NTdXNwZW5zaW9uLCBXS1dlYlZpZXdTdXNwZW5kUGFnZVRoZW5OYXZpZ2F0ZSkKK3sKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKKworICAgIGF1dG8gcGlk
ID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkLCAw
KTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N1c3Bl
bmRQYWdlOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworCisgICAgLy8gTmF2aWdhdGluZyBzaG91bGQgd29yayBhbmQgcmVzdW1lIHRo
ZSB2aWV3LgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNp
bXBsZTIiXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVyVGV4dCIgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0
cmluZyAqcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRSghZXJy
b3IpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJTZWNvbmQgc2ltcGxlIEhUTUwgZmlsZS4i
LCByZXN1bHQpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjNhNmIwNGJkMTVlMDBkOGNiZGJlZWNhMTZkYjI5NjZlYzVhNTllOQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9z
dE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQ+CitzZXRJbnRlcnZhbCgoKSA9PiB7CisgICAgd2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgndGltZXIgZmlyZWQnKTsKK30s
IDUpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427810</attachid>
            <date>2021-05-05 14:43:01 -0700</date>
            <delta_ts>2021-05-05 15:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210505144300.patch</filename>
            <type>text/plain</type>
            <size>38261</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlhODIyNDU4MmY2Mzdi
MDFhODJhMmM3NDBkZjFiOWE0MWU0YjFlNy4uYmFhOTc2OWVkZTgwNTlmMjIzNTlhMWY5MmQ0Y2Vj
ZWFiNWFlOGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpz
dXNwZW5kUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAg
ICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMDUgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10g
V3JhcCBpbmNvbWluZyBhdWRpbyBidWZmZXJzLCBjb21wbHlpbmcgd2l0aCBmYXN0TWFsbG9jIHJl
c3RyaWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDcyMzExZDA1MjZlNWM4MmZiNmRjY2I0ZGRhMzgxYTJh
YTdhM2RkLi43NjRmMzUwZWExZjBkY2YzZGE0MTVjNGU1ZGY2ZDdkMTJmZDRmYTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMK
KyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZp
ZXcuIFRoaXMgc3VzcGVuZHMgdGhlIHBhZ2UgYXMgaWYgaXQgd2FzIGluCisgICAgICAgIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUgYnV0IHRoZSBzdXNwZW5zaW9uIGhhcHBlbnMgaW4tcGxhY2UsIG5v
IG5lZWQgdG8gbmF2aWdhdGUuCisgICAgICAgIFRoZSBzdXNwZW5kZWQgcGFnZSBpcyBhbHNvIG5v
dCBwYXJ0IG9mIHRoZSBCYWNrL0ZvcndhcmQgY2FjaGUgc28gaXRzIGNhcCBvbiB0aGUKKyAgICAg
ICAgbnVtYmVyIG9mIHN1c3BlbmRlZCBwYWdlcyBkb2VzIG5vdCBhcHBseSBoZXJlLgorCisgICAg
ICAgIFJlcXVlc3RzIHRvIG5hdmlnYXRlIGEgc3VzcGVuZGVkIHZpZXcgd2lsbCByZXN1bWUgdGhl
IHZpZXcuIEFsc28sIHJlcXVlc3RzIHRvCisgICAgICAgIGV2YWx1YXRlIEphdmFTY3JpcHQgb24g
YSBzdXNwZW5kZWQgdmlldyB3aWxsIGZhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kUGFnZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNo
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3VtZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNS0wNSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRHluYW1pY2FsbHkgcGFzcyBjYXB0dXJlIHNh
bmRib3ggZXh0ZW5zaW9ucyB0byBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZTNm
NDZhYzhiZDk3ZjIzMDNkODA4NTgyMjkzNmExMjBiZDMyZjRkLi4zMjg5NmQ1YzllMzRkNzc3Zjk0
MDQ1MjdmMWYzMTk1YjQzMmU5NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwOCw2ICs2MDgs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGlzdG9yeS9C
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lLmgKICAg
ICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0b3J5L0NhY2hlZFBh
Z2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9BdXRvY2FwaXRhbGl6
ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCAy
N2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNhZWNhMTIyMmY4ZTk0
Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRpYyB2b2lkIGZpcmVQ
YWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAgICBmaXJlUGFnZUhp
ZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0ZvcndhcmRDYWNoZTo6
YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVuZFBhZ2UoUGFnZSYg
cGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAgICBpZiAoaXRlbS5p
c0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYgKCFjYW5DYWNoZSgq
cGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VTdXNwZW5zaW9uID09
IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0eVBhZ2Uo
KSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2ZXIgZ28g
aW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFnZS5p
c1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hv
dWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAgc2V0QmFja0Zvcndh
cmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0ZvcndhcmRDYWNo
ZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpBYm91dFRv
RW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBtYWluIGZyYW1lLCBk
ZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUpLiBXZSBkbyB0aGlz
IGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFjay9mb3J3YXJkIGNh
Y2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9jdXMgZXZlbnRzLgot
ICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKLSAgICAgICAg
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLT5tYWluRnJhbWUo
KSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCisgICAg
ICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1haW5GcmFt
ZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBmcmFtZXMuCi0g
ICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJhbWUoKSk7CisgICAg
ZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgpKTsKIAotICAgIGRl
c3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0cm95UmVuZGVyVHJl
ZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRzIGFnYWluIGJlZm9y
ZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0ZXIgZmlyaW5nIHRo
ZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkgaGF2ZSBzdGFydGVk
IHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0gICAgcGFnZS0+bWFp
bkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBwYWdlLm1h
aW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAgICAvLyBD
aGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFmdGVyIGZpcmluZyB0
aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAgIC8vIGNvdWxkIGhh
dmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2FjaGluZy4K
LSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hl
U3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3BlbnNpb246
Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3Rh
dGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwg
RG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0
YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgorICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKworYm9vbCBCYWNrRm9y
d2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkK
K3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1c3BlbnNpb246Ok5v
KTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlz
IHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1ha2VVbmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKFdURk1v
dmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdS
ZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CkBAIC00ODEs
NiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9y
eUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0ZDo6dW5p
cXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQYWdlJiBw
YWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9yd2FyZENh
Y2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVuZFBhZ2UocGFnZSwg
Rm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
QmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKIHsK
ICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJkN2YxZDJjMzlkNDc1
MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgxZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQpOyAvLyBu
dW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYgbWF4U2l6
ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhpc3RvcnlJ
dGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwpAQCAtNzQs
NiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2FjaGVQYWdlQ29udGFp
bmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3JjZVN1c3BlbnNpb24g
OiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiB0cnlT
dXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lkIHBydW5lKFBydW5p
bmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4ODVkMjUu
LjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENhY2hlZFBhZ2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENhY2hl
ZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNh
Y2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQYWdlJiBw
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwODRhZmRmYjcwZjhmMzJjMmE0NWNhNjBk
NWVhMzE4YjRhODJkM2E4Li40YTVlNDRmZTQzY2ViOGYxMjQ2NWMyMTI3ZjQ0NjY3ODljNTk3M2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTIyODQsNiArMjI4NCwyOCBAQCAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9y
RG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodgogICAgIH0pOwog
fQogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZChbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
aWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIC0gKE5TQXJyYXkgKilfY2Vy
dGlmaWNhdGVDaGFpbgogewogICAgIGlmIChXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFt
ZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk5ZDU5MjVhYTc3ODg2MjVlZGEx
NjlkODRiMzVkMDkxMjQ5Njk3M2EuLjYzMWYyMzA0ZGRlNDU3Njk0N2JhZTgzM2M5OWIxZjY3MDlm
ZGJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5IEBAIGZvciB0aGlzIHByb3BlcnR5Lgog
CiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRv
bWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU4MmRjMTg2ZmQ2ZTkzM2QyNDkwMTdhNjBlZjJmYjgx
NWFiY2M2YTIuLjcwYjUyNzMyYTUyMzdlYjlkNTkzM2QxMGYwNDRlYjFlYzJkYzlhNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMwNiw2ICsxMzA2LDE1
IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUGFnZVByb3h5OjplbnN1cmVSdW5uaW5nUHJvY2Vzcygp
CiAgICAgcmV0dXJuIG1fcHJvY2VzczsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUlm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZUlmTmVjZXNzYXJ5
OiBwYWdlIGlzIHN1c3BlbmRlZCwgcmVzdW1pbmcgaXQuIik7CisgICAgcmVzdW1lKFtdKGJvb2wp
IHsgfSk7Cit9CisKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkBAIC0xMzE2LDYgKzEzMjUsOCBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNobwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1
bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSwgUHJvY2Vzc0xh
dW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCisgICAgcmVzdW1lSWZOZWNlc3NhcnkoKTsK
KwogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVx
dWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtX2JhY2tGb3J3YXJkTGlz
dC0+Y3VycmVudEl0ZW0oKSk7CiAKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3Jp
dHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCkBAIC0xMzc5LDYgKzEzOTAsOCBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVS
TFN0cmluZywgY29ucwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1
bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIAor
ICAgIHJlc3VtZUlmTmVjZXNzYXJ5KCk7CisKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwg
ZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90
IGxvY2FsIik7CkBAIC0xNDQwLDYgKzE0NTMsOCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0s
IFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIAorICAgIHJlc3VtZUlmTmVj
ZXNzYXJ5KCk7CisKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3Jl
YXRlTG9hZERhdGFOYXZpZ2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0
YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOwogCiAg
ICAgaWYgKHNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigp
KQpAQCAtMTQ5NCw2ICsxNTA5LDggQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVE
b21haW4geyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246Oklu
aXRpYWxQcm9jZXNzKTsKIAorICAgIHJlc3VtZUlmTmVjZXNzYXJ5KCk7CisKICAgICBhdXRvIG5h
dmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRh
TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3Qoc2ltdWxhdGVkUmVxdWVzdCksIG1ha2VVbmlxdWU8
QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgUmVzb3VyY2VSZXNwb25zZShzaW11
bGF0ZWRSZXNwb25zZSksIG51bGxwdHIpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KSk7CiAKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZp
Z2F0aW9uKCkpCkBAIC0xNTQ5LDYgKzE1NjYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiB7IGJhc2VVUkwgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFBy
b2Nlc3MpOwogCisgICAgcmVzdW1lSWZOZWNlc3NhcnkoKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0
ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyAwLCB1bnJlYWNoYWJsZVVSTC5z
dHJpbmcoKSB9KTsKQEAgLTE1ODYsNiArMTYwNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
V2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVz
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsg
fSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCisgICAgcmVzdW1lSWZO
ZWNlc3NhcnkoKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJh
bnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJh
bnNhY3Rpb24sIHsgMCwgYWJvdXRCbGFua1VSTCgpLnN0cmluZygpIH0pOwogCkBAIC0xNjE2LDYg
KzE2MzcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVS
TCgpLCB1cmxTdHJpbmcpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsK
IAorICAgIHJlc3VtZUlmTmVjZXNzYXJ5KCk7CisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50
UG9pbnQsIHNjcmVlblBvaW50KSk7CiAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKIH0KQEAgLTE2NTEsNiArMTY3NCw4IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9w
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkKCk7CisKKyAgICByZXN1bWVJZk5lY2Vzc2FyeSgpOwogICAgIAogICAg
IGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0
aW9uKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKIApAQCAtMTczNSw2ICsxNzYw
LDggQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgICAgIG1fYmFja0ZvcndhcmRM
aXN0LT5nb1RvSXRlbShpdGVtKTsKICAgICB9CiAKKyAgICByZXN1bWVJZk5lY2Vzc2FyeSgpOwor
CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbjsKICAgICBpZiAoIW1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSXNJblNhbWVEb2N1bWVudChpdGVtKSkK
ICAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2Fy
ZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIGZyYW1l
TG9hZFR5cGUpOwpAQCAtMzE0Miw3ICszMTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgLy8gSWYg
dGhlIHBhZ2UgaXMgc3VzcGVuZGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UgZHVyaW5nIHBh
bm5pbmcsIHBpbmNoaW5nCiAgICAgLy8gYW5kIGFuaW1hdGlvbiBvbiB0aGUgcGFnZSBpdHNlbGYg
KGtpbmV0aWMgc2Nyb2xsaW5nLCB0YXAgdG8gem9vbSkgZXRjLCB0aGVuCiAgICAgLy8gd2UgZG8g
bm90IHNlbmQgYW55IG9mIHRoZSBldmVudHMgdG8gdGhlIHBhZ2UgZXZlbiBpZiBpcyBoYXMgbGlz
dGVuZXJzLgotICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsKKyAgICBpZiAoIW1fYXJlQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2
ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNp
dmVuZXNzVGltZXIoKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVu
dChldmVudCkpOwpAQCAtMzU5MCwyNCArMzYxNyw0NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50KQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9
IGZhbHNlOworICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQg
PSBmYWxzZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
IHx8IG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX2FyZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gdHJ1ZTsKIAogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJzdXNwZW5kOiIpOworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBt
X2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
CisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTdXNwZW5kKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInJlc3VtZToiKTsKKworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9p
c1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwor
ICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
IGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUUgKDExODg0MCk6IFdlIHNob3VsZCBwcm9iYWJseSBvbmx5IHN1cHBvcnQgdGhpcyBm
b3IgdGV4dCBkb2N1bWVudHMsIG5vdCBhbGwgbm9uLWltYWdlIGRvY3VtZW50cy4KQEAgLTQxNzYs
NyArNDIyNCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAogICAgIGxhdW5jaEluaXRpYWxQ
cm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0
YWlscyB7ICJQYWdlIGlzIHN1c3BlbmRlZCJfcyB9KSk7CisKKyAgICBpZiAobV9pc1N1c3BlbmRl
ZCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJydW5K
YXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IHBhZ2UgaXMgc3VzcGVuZGVkLCBmYWlsaW5n
IHJlcXVlc3QgdG8gcnVuIEphdmFTY3JpcHQiKTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVu
Y3Rpb24oeyBudWxscHRyIH0pOworICAgIH0KIAogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2
aXR5VmFyaWFudCBhY3Rpdml0eTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDI3Niw3
ICs0MzI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghZnJhbWUpCisg
ICAgaWYgKCFmcmFtZSB8fCBtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm4gY2FsbGJhY2so
bnVsbHB0cik7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgdG9BUElEYXRhQ2FsbGJhY2soV1RG
TW92ZShjYWxsYmFjaykpKTsKIH0KQEAgLTc2OTEsNyArNzc0NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
biB0ZXJtaW5hCiAgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbnVsbHB0cjsKIAogICAgIG1faGFz
UnVubmluZ1Byb2Nlc3MgPSBmYWxzZTsKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwor
ICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsK
IAogICAgIG1fdXNlclNjcmlwdHNOb3RpZmllZCA9IGZhbHNlOwogCkBAIC04NjU2LDcgKzg3MDks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94
eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgT3B0
aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpIHsKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkg
ewogICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTA3
OSw2ICs5MTMyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnRh
a2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmKT4mJiBjYWxsYmFjaykKIHsKKyAgICBpZiAobV9pc1N1c3BlbmRlZCkKKyAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKHsgfSk7CisKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zKSwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDcyMTI2Y2QwNWU2NThmNWY1YTIxNjU0MDI3YjhhZGM2NmNlY2I4MzkuLjFmZTFmNzI2
ZjIxZDI1OTdmN2ZkMjQ1NWZhODc5NGE3ZjQ3MTJkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC01MDQsNiArNTA0LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAg
dm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCiAgICAgV2ViSW5zcGVj
dG9yVUlQcm94eSogaW5zcGVjdG9yKCkgY29uc3Q7CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSYgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
KSB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAKQEAg
LTEwMTMsNyArMTAxNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGlu
Z05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUo
KSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7IH0KIAotICAgIGJvb2wg
YXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzUGFnZVN1c3BlbmRlZDsgfQorICAgIGJvb2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zU3VzcGVuZGVkOyB9CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCk7CiAKQEAgLTIwMDQsNiArMjAwNyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRG
aW5pc2hQcm9ncmVzcygpOwogICAgIHZvaWQgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhi
b29sKTsKIAorICAgIHZvaWQgcmVzdW1lSWZOZWNlc3NhcnkoKTsKKwogICAgIHZvaWQgZGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFt
ZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywKQEAg
LTI3NDgsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRp
b25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2lzUGFn
ZVN1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5r
cyB7IHRydWUgfTsKIAogICAgIGJvb2wgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uIHsgZmFsc2Ug
fTsKQEAgLTMwMDksNiArMzAxNCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1l
ZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA2ZTQxNmY0MzE2MTQ3OWRlOTU1NjA1MmQ1MTg2NDIwYjQ5MWMxNGI5
Li43MGJiY2QxMGY4MjljZWY1ZDhmOTJhMGI1N2RmMDE4YWEzMjIyYmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUyLDYgKzE1Miw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JhY2tGb3J3YXJkQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJv
bGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25WTS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGFjdHNSZXF1ZXN0RGF0YS5oPgpAQCAtMzU5NCw2ICszNTk1LDM3IEBAIHZvaWQg
V2ViUGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIG1fcGFn
ZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBXZWJQ
YWdlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDog
bV9wYWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIGZyZWV6ZUxheWVyVHJlZShMYXll
clRyZWVGcmVlemVSZWFzb246OlBhZ2VTdXNwZW5kZWQpOworCisgICAgbV9jYWNoZWRQYWdlID0g
QmFja0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCkuc3VzcGVuZFBhZ2UoKm1fcGFnZSk7CisgICAg
QVNTRVJUKG1fY2FjaGVkUGFnZSk7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmRldGFjaEZyb21B
bGxPcGVuZWRGcmFtZXMoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9p
ZCBXZWJQYWdlOjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1
bWU6IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBhdXRvIGNhY2hlZFBhZ2Ug
PSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7CisgICAgQVNTRVJUKGNhY2hl
ZFBhZ2UpOworICAgIGlmICghY2FjaGVkUGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKworICAgIGNhY2hlZFBhZ2UtPnJlc3RvcmUoKm1fcGFnZSk7CisgICAg
dW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwogSW50UG9pbnQgV2ViUGFnZTo6c2Ny
ZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2lu
ZG93UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggYWIwMjBmYzQ0M2U4MDBmMWQ5NmU3YmVlMjhjYjM2ZmY2OWNhNmIwMC4uMWI5ZjRkYTEzNGRm
ZGE3NjM1OGFjMzBiZmU1OTg3MmFiNzhlYzZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFBhZ2U7CiBjbGFz
cyBDYXB0dXJlRGV2aWNlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBEcmFnRGF0YTsK
QEAgLTE2NjMsNiArMTY2NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCk7CiAKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwpAQCAtMjMxMSw2ICsy
MzE1LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNhY2hlZFBhZ2U+IG1fY2Fj
aGVkUGFnZTsKKwogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAgICAgYm9vbCBtX2lwY1Rl
c3RpbmdBUElFbmFibGVkIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX3Zpc2l0ZWRMaW5rVGFi
bGVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IGUzN2E2NTljOTFiMzg5MmUyYjhmOTM4YzYyNmNkY2ZlODllNDE5
MDQuLjFiM2E2ODFmY2I1MWY0MTNlMjFiYTQyNTQ0MmI4YzBhMWZkNWUwYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMjUwLDYgKzI1MCw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCiAKKyAgICBTdXNwZW5kKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMK
KyAgICBSZXN1bWUoKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworCiAgICAgQ2xvc2UoKQogICAg
IFRyeUNsb3NlKCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1M2M3ODQ4MTM2MGUxNzljMzAy
OGZjOWM3YTllYjYwYTI1YWUwOWU0Li5lMWIzMTc0NzhkNDI0YzNiMTg0ZDYwMmY2YTRkZjAxNjg2
YmIwNTU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTMzMwor
ICAgICAgICA8cmRhcjovLzc3NDYyNTQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBiYXNpYyBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3Bl
bnNpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sOiBBZGRlZC4KKwogMjAyMS0w
NS0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjc2OTg1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYTQ5NTEy
ZmZkM2VhYTk3OGU1ZjZjYjA4ZDYzZTBhNTM4MmQxZjUyLi4yMTVmMmQ2YzFmNGM1ZTk4N2VhOTkx
ZDEyODdkYjM1YTI3MGQxZjFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2
Miw3IEBACiAJCTQ2M0Y0NzIzMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGNDcyMjI1
NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovOyB9OwogCQk0NjQ3QjEyNjFF
QkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYg
LyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgKi87IH07CiAJCTQ2NEM3NjREMjMwREY4NUMwMEFG
QjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBE
RjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAq
LzsgfTsKKwkJNDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRt
bCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVCMkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIy
QTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLzsgfTsKIAkJNDY2QzM4NDMyMTA2MzdERTAw
NkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0Uw
MDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3
QzU2NTMyMUI1RUQxMzAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVF
Q0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovOyB9OwpAQCAtODY4LDggKzg2
OSw4IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBsaWJpY3Vjb3JlLmR5bGliIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4M0UwMzMx
RDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjU2REE5MUU1
RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBX
S1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8q
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGN0U4NkUxNERDOEU1QjAw
Qzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3Bw
ICovOyB9OwotCQk5NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1
RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5
M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQ0RCMzMyNjM2MzE1NjAwNDZE
RDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLzsgfTsKKwkJOTUwOTVGMjAyNjJGRkZBNTAwMDBE
OTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBh
Z2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTUwRTRDQzEyNTJFNzUyNDAwNzE2NTlGIC8qIGlPU1N0
eWx1c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLzsg
fTsKIAkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0g
Ki87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBNTI0
OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi87IH07CkBAIC0x
NjQ4LDYgKzE2NDksNyBAQAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJl
SW5QaWN0dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDE1MDg2
RDFEQTA0MEM1MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTBFQkJDQzY2MUZGRjlFMEMwMEZBNDJBQiAvKiBwb3AtdXAtY2hlY2su
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0Yg
LyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
RjQxQUI5QTgxRUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTkxRUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQt
c3RhcnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNkZERERENjE0MjQxQzZGMDA0
RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjA2NSw2
ICsyMDY3LDcgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlT
dGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAw
NDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NUMyM0FFMjY0
MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERF
IC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25D
b29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjQsOCArMjU2Nyw4IEBACiAJ
CTkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1NuYXBzaG90Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2QjE0REM4RTREMDBDODRBOTkgLyog
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZFMTREQzhFNUIwMEM4
NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3Iu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3
RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1
MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlGIC8q
IGlPU1N0eWx1c1N1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBpT1NTdHlsdXNTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUE1MjQ5NDI1
ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1RoZW1lQ29sb3IubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDY1LDYgKzQwNjgsNyBAQAogCQkJCTlCN0Q3NDBFMUY4
Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3
RTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUw
ODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCisJCQkJ
NDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICov
LAogCQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1s
ICovLAogCQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwg
Ki8sCiAJCQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1
ZGluZy1vdmVyZmxvdy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KaW5kZXggOTk2NjFiMzQw
M2IwNGQxNDFhMWM0MjgxNDViN2Q2ZmY0Nzk4ZGRjMi4uOWI5NGVhNzE1YmIzMzA4NjkzYzJiNjI2
MzNjZDYzYzgyYWU5OTQ1MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCkBAIC04MywzICs4Myw5NSBA
QCBURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBEZXN0cm95V2ViUGFnZUR1cmluZ1dlYlByb2Nlc3NT
dXNwZW5zaW9uKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDEpOwogICAgIEVYUEVD
VF9FUShwaWQxLCBbd2ViVmlldzMgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiB9CisKK1RFU1Qo
UHJvY2Vzc1N1c3BlbnNpb24sIFdLV2ViVmlld1N1c3BlbmRQYWdlKQoreworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisKKyAgICBhdXRvIHRlc3RNZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0TWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjp0ZXN0TWVzc2FnZUhhbmRsZXIuZ2V0
KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgX19ibG9jayB1bnNpZ25lZCB0aW1lckZpcmVk
Q291bnQgPSAwOworICAgIFt0ZXN0TWVzc2FnZUhhbmRsZXIgYWRkTWVzc2FnZTpAInRpbWVyIGZp
cmVkIiB3aXRoSGFuZGxlcjpeeworICAgICAgICArK3RpbWVyRmlyZWRDb3VudDsKKyAgICB9XTsK
KworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwb3N0TWVzc2FnZS1yZWd1bGFybHkiXTsKKworICAgIGF1
dG8gcGlkID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUo
cGlkLCAwKTsKKworICAgIC8vIFRoZSB0aW1lciBzaG91bGQgYmUgZmlyaW5nLgorICAgIGF1dG8g
bGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENvdW50OworICAgIHdoaWxlIChsYXN0VGlt
ZXJGaXJlQ291bnQgPT0gdGltZXJGaXJlZENvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgxMCk7CisgICAgRVhQRUNUX1RSVUUodGltZXJGaXJlZENvdW50ID4g
bGFzdFRpbWVyRmlyZUNvdW50KTsKKworICAgIC8vIFN1c3BlbmQgdGhlIHBhZ2UuCisgICAgW3dl
YlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfc3VzcGVuZFBhZ2U6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hv
dWxkIG5vIGxvbmdlciBiZSBmaXJpbmcuCisgICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJG
aXJlZENvdW50OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwMCk7Cisg
ICAgRVhQRUNUX0VRKGxhc3RUaW1lckZpcmVDb3VudCwgdGltZXJGaXJlZENvdW50KTsKKworICAg
IC8vIFdlIHNob3VsZCBub3QgYmUgYWJsZSB0byBydW4gSmF2YVNjcmlwdC4KKyAgICBkb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93Lm5hbWUiIGNv
bXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIFJlc3VtZSB0aGUgcGFn
ZS4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Jlc3VtZVBhZ2U6XihCT09MIHN1
Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
W3dlYlZpZXcgYWRkVG9UZXN0V2luZG93XTsKKworICAgIC8vIFRoZSB0aW1lciBzaG91bGQgc3Rh
cnQgZmlyaW5nIGFnYWluLgorICAgIGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3Vu
dDsKKyAgICB3aGlsZSAobGFzdFRpbWVyRmlyZUNvdW50ID09IHRpbWVyRmlyZWRDb3VudCkKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworICAgIEVYUEVDVF9U
UlVFKHRpbWVyRmlyZWRDb3VudCA+IGxhc3RUaW1lckZpcmVDb3VudCk7CisKKyAgICAvLyBNYWtl
IHN1cmUgd2UgZGlkIG5vdCBjcmFzaC4KKyAgICBFWFBFQ1RfRVEocGlkLCBbd2ViVmlldyBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdKTsKK30KKworVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJW
aWV3U3VzcGVuZFBhZ2VUaGVuTmF2aWdhdGUpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICBhdXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKHBpZCwgMCk7CisKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJPT0wgc3VjY2Vz
cykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8v
IE5hdmlnYXRpbmcgc2hvdWxkIHdvcmsgYW5kIHJlc3VtZSB0aGUgdmlldy4KKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIl07CisKKyAgICBkb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9k
eS5pbm5lclRleHQiIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKEAiU2Vjb25kIHNpbXBsZSBIVE1MIGZpbGUuIiwgcmVzdWx0KTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRi
ZDE1ZTAwZDhjYmRiZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0
Pgorc2V0SW50ZXJ2YWwoKCkgPT4geworICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoJ3RpbWVyIGZpcmVkJyk7Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427815</attachid>
            <date>2021-05-05 15:42:58 -0700</date>
            <delta_ts>2021-05-10 15:40:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210505154257.patch</filename>
            <type>text/plain</type>
            <size>38915</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlhODIyNDU4MmY2Mzdi
MDFhODJhMmM3NDBkZjFiOWE0MWU0YjFlNy4uYmFhOTc2OWVkZTgwNTlmMjIzNTlhMWY5MmQ0Y2Vj
ZWFiNWFlOGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpz
dXNwZW5kUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAg
ICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMDUgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10g
V3JhcCBpbmNvbWluZyBhdWRpbyBidWZmZXJzLCBjb21wbHlpbmcgd2l0aCBmYXN0TWFsbG9jIHJl
c3RyaWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDcyMzExZDA1MjZlNWM4MmZiNmRjY2I0ZGRhMzgxYTJh
YTdhM2RkLi43NjRmMzUwZWExZjBkY2YzZGE0MTVjNGU1ZGY2ZDdkMTJmZDRmYTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMK
KyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZp
ZXcuIFRoaXMgc3VzcGVuZHMgdGhlIHBhZ2UgYXMgaWYgaXQgd2FzIGluCisgICAgICAgIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUgYnV0IHRoZSBzdXNwZW5zaW9uIGhhcHBlbnMgaW4tcGxhY2UsIG5v
IG5lZWQgdG8gbmF2aWdhdGUuCisgICAgICAgIFRoZSBzdXNwZW5kZWQgcGFnZSBpcyBhbHNvIG5v
dCBwYXJ0IG9mIHRoZSBCYWNrL0ZvcndhcmQgY2FjaGUgc28gaXRzIGNhcCBvbiB0aGUKKyAgICAg
ICAgbnVtYmVyIG9mIHN1c3BlbmRlZCBwYWdlcyBkb2VzIG5vdCBhcHBseSBoZXJlLgorCisgICAg
ICAgIFJlcXVlc3RzIHRvIG5hdmlnYXRlIGEgc3VzcGVuZGVkIHZpZXcgd2lsbCByZXN1bWUgdGhl
IHZpZXcuIEFsc28sIHJlcXVlc3RzIHRvCisgICAgICAgIGV2YWx1YXRlIEphdmFTY3JpcHQgb24g
YSBzdXNwZW5kZWQgdmlldyB3aWxsIGZhaWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kUGFnZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNo
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3VtZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNS0wNSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRHluYW1pY2FsbHkgcGFzcyBjYXB0dXJlIHNh
bmRib3ggZXh0ZW5zaW9ucyB0byBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZTNm
NDZhYzhiZDk3ZjIzMDNkODA4NTgyMjkzNmExMjBiZDMyZjRkLi4zMjg5NmQ1YzllMzRkNzc3Zjk0
MDQ1MjdmMWYzMTk1YjQzMmU5NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwOCw2ICs2MDgs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGlzdG9yeS9C
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lLmgKICAg
ICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0b3J5L0NhY2hlZFBh
Z2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9BdXRvY2FwaXRhbGl6
ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCAy
N2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNhZWNhMTIyMmY4ZTk0
Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRpYyB2b2lkIGZpcmVQ
YWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAgICBmaXJlUGFnZUhp
ZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0ZvcndhcmRDYWNoZTo6
YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVuZFBhZ2UoUGFnZSYg
cGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAgICBpZiAoaXRlbS5p
c0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJhbWUoKS5s
b2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYgKCFjYW5DYWNoZSgq
cGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VTdXNwZW5zaW9uID09
IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0eVBhZ2Uo
KSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2ZXIgZ28g
aW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFnZS5p
c1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hv
dWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAgc2V0QmFja0Zvcndh
cmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0ZvcndhcmRDYWNo
ZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpBYm91dFRv
RW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBtYWluIGZyYW1lLCBk
ZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUpLiBXZSBkbyB0aGlz
IGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFjay9mb3J3YXJkIGNh
Y2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9jdXMgZXZlbnRzLgot
ICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKLSAgICAgICAg
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLT5tYWluRnJhbWUo
KSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCisgICAg
ICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1haW5GcmFt
ZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBmcmFtZXMuCi0g
ICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJhbWUoKSk7CisgICAg
ZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgpKTsKIAotICAgIGRl
c3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0cm95UmVuZGVyVHJl
ZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRzIGFnYWluIGJlZm9y
ZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0ZXIgZmlyaW5nIHRo
ZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkgaGF2ZSBzdGFydGVk
IHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0gICAgcGFnZS0+bWFp
bkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBwYWdlLm1h
aW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAgICAvLyBD
aGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFmdGVyIGZpcmluZyB0
aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAgIC8vIGNvdWxkIGhh
dmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2FjaGluZy4K
LSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hl
U3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3BlbnNpb246
Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3Rh
dGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwg
RG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0
YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgorICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKworYm9vbCBCYWNrRm9y
d2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkK
K3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1c3BlbnNpb246Ok5v
KTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlz
IHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1ha2VVbmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKFdURk1v
dmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdS
ZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CkBAIC00ODEs
NiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9y
eUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0ZDo6dW5p
cXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQYWdlJiBw
YWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9yd2FyZENh
Y2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVuZFBhZ2UocGFnZSwg
Rm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
QmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKIHsK
ICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJkN2YxZDJjMzlkNDc1
MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgxZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQpOyAvLyBu
dW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYgbWF4U2l6
ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhpc3RvcnlJ
dGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwpAQCAtNzQs
NiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2FjaGVQYWdlQ29udGFp
bmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3JjZVN1c3BlbnNpb24g
OiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiB0cnlT
dXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lkIHBydW5lKFBydW5p
bmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4ODVkMjUu
LjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENhY2hlZFBhZ2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENhY2hl
ZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkNh
Y2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQYWdlJiBw
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwODRhZmRmYjcwZjhmMzJjMmE0NWNhNjBk
NWVhMzE4YjRhODJkM2E4Li40YTVlNDRmZTQzY2ViOGYxMjQ2NWMyMTI3ZjQ0NjY3ODljNTk3M2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTIyODQsNiArMjI4NCwyOCBAQCAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9y
RG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodgogICAgIH0pOwog
fQogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZChbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
aWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIC0gKE5TQXJyYXkgKilfY2Vy
dGlmaWNhdGVDaGFpbgogewogICAgIGlmIChXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFt
ZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk5ZDU5MjVhYTc3ODg2MjVlZGEx
NjlkODRiMzVkMDkxMjQ5Njk3M2EuLjYzMWYyMzA0ZGRlNDU3Njk0N2JhZTgzM2M5OWIxZjY3MDlm
ZGJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDYgKzQwOCw5IEBAIGZvciB0aGlzIHByb3BlcnR5Lgog
CiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRv
bWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGU4MmRjMTg2ZmQ2ZTkzM2QyNDkwMTdhNjBlZjJmYjgx
NWFiY2M2YTIuLmRjZWI2MDI4MzFjMzI0ZTM0ZTE5M2RlNjU2YTNhMTQxYjQ5ZjVhNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMwNiw2ICsxMzA2LDE1
IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUGFnZVByb3h5OjplbnN1cmVSdW5uaW5nUHJvY2Vzcygp
CiAgICAgcmV0dXJuIG1fcHJvY2VzczsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUlm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZUlmTmVjZXNzYXJ5
OiBwYWdlIGlzIHN1c3BlbmRlZCwgcmVzdW1pbmcgaXQuIik7CisgICAgcmVzdW1lKFtdKGJvb2wp
IHsgfSk7Cit9CisKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkBAIC0xMzE2LDYgKzEzMjUsOCBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNobwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1
bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSwgUHJvY2Vzc0xh
dW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCisgICAgcmVzdW1lSWZOZWNlc3NhcnkoKTsK
KwogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVx
dWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtX2JhY2tGb3J3YXJkTGlz
dC0+Y3VycmVudEl0ZW0oKSk7CiAKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3Jp
dHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCkBAIC0xMzc5LDYgKzEzOTAsOCBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVS
TFN0cmluZywgY29ucwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1
bmNoUHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIAor
ICAgIHJlc3VtZUlmTmVjZXNzYXJ5KCk7CisKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwg
ZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90
IGxvY2FsIik7CkBAIC0xNDQwLDYgKzE0NTMsOCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0s
IFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIAorICAgIHJlc3VtZUlmTmVj
ZXNzYXJ5KCk7CisKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3Jl
YXRlTG9hZERhdGFOYXZpZ2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0
YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOwogCiAg
ICAgaWYgKHNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigp
KQpAQCAtMTQ5NCw2ICsxNTA5LDggQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVE
b21haW4geyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246Oklu
aXRpYWxQcm9jZXNzKTsKIAorICAgIHJlc3VtZUlmTmVjZXNzYXJ5KCk7CisKICAgICBhdXRvIG5h
dmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRh
TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3Qoc2ltdWxhdGVkUmVxdWVzdCksIG1ha2VVbmlxdWU8
QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgUmVzb3VyY2VSZXNwb25zZShzaW11
bGF0ZWRSZXNwb25zZSksIG51bGxwdHIpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KSk7CiAKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZp
Z2F0aW9uKCkpCkBAIC0xNTQ5LDYgKzE1NjYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiB7IGJhc2VVUkwgfSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFBy
b2Nlc3MpOwogCisgICAgcmVzdW1lSWZOZWNlc3NhcnkoKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0
ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyAwLCB1bnJlYWNoYWJsZVVSTC5z
dHJpbmcoKSB9KTsKQEAgLTE1ODYsNiArMTYwNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
V2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVz
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsg
fSwgUHJvY2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCisgICAgcmVzdW1lSWZO
ZWNlc3NhcnkoKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJh
bnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJh
bnNhY3Rpb24sIHsgMCwgYWJvdXRCbGFua1VSTCgpLnN0cmluZygpIH0pOwogCkBAIC0xNjE2LDYg
KzE2MzcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVS
TCgpLCB1cmxTdHJpbmcpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsK
IAorICAgIHJlc3VtZUlmTmVjZXNzYXJ5KCk7CisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50
UG9pbnQsIHNjcmVlblBvaW50KSk7CiAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKIH0KQEAgLTE2NTEsNiArMTY3NCw4IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9w
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkKCk7CisKKyAgICByZXN1bWVJZk5lY2Vzc2FyeSgpOwogICAgIAogICAg
IGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0
aW9uKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKIApAQCAtMTczNSw2ICsxNzYw
LDggQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgICAgIG1fYmFja0ZvcndhcmRM
aXN0LT5nb1RvSXRlbShpdGVtKTsKICAgICB9CiAKKyAgICByZXN1bWVJZk5lY2Vzc2FyeSgpOwor
CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbjsKICAgICBpZiAoIW1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSXNJblNhbWVEb2N1bWVudChpdGVtKSkK
ICAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2Fy
ZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIGZyYW1l
TG9hZFR5cGUpOwpAQCAtMzE0Miw3ICszMTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgLy8gSWYg
dGhlIHBhZ2UgaXMgc3VzcGVuZGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UgZHVyaW5nIHBh
bm5pbmcsIHBpbmNoaW5nCiAgICAgLy8gYW5kIGFuaW1hdGlvbiBvbiB0aGUgcGFnZSBpdHNlbGYg
KGtpbmV0aWMgc2Nyb2xsaW5nLCB0YXAgdG8gem9vbSkgZXRjLCB0aGVuCiAgICAgLy8gd2UgZG8g
bm90IHNlbmQgYW55IG9mIHRoZSBldmVudHMgdG8gdGhlIHBhZ2UgZXZlbiBpZiBpcyBoYXMgbGlz
dGVuZXJzLgotICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsKKyAgICBpZiAoIW1fYXJlQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2
ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNp
dmVuZXNzVGltZXIoKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVu
dChldmVudCkpOwpAQCAtMzU5MCwyNCArMzYxNyw0NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50KQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogewotICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9
IGZhbHNlOworICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQg
PSBmYWxzZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
IHx8IG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX2FyZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gdHJ1ZTsKIAogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJzdXNwZW5kOiIpOworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBt
X2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
CisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTdXNwZW5kKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInJlc3VtZToiKTsKKworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9p
c1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwor
ICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
IGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUUgKDExODg0MCk6IFdlIHNob3VsZCBwcm9iYWJseSBvbmx5IHN1cHBvcnQgdGhpcyBm
b3IgdGV4dCBkb2N1bWVudHMsIG5vdCBhbGwgbm9uLWltYWdlIGRvY3VtZW50cy4KQEAgLTQxNzYs
NyArNDIyNCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAogICAgIGxhdW5jaEluaXRpYWxQ
cm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0
YWlscyB7ICJQYWdlIGlzIHN1c3BlbmRlZCJfcyB9KSk7CisKKyAgICBpZiAobV9pc1N1c3BlbmRl
ZCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJydW5K
YXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IHBhZ2UgaXMgc3VzcGVuZGVkLCBmYWlsaW5n
IHJlcXVlc3QgdG8gcnVuIEphdmFTY3JpcHQiKTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVu
Y3Rpb24oeyBudWxscHRyIH0pOworICAgIH0KIAogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2
aXR5VmFyaWFudCBhY3Rpdml0eTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDI3Niw3
ICs0MzI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghZnJhbWUpCisg
ICAgaWYgKCFmcmFtZSB8fCBtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm4gY2FsbGJhY2so
bnVsbHB0cik7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgdG9BUElEYXRhQ2FsbGJhY2soV1RG
TW92ZShjYWxsYmFjaykpKTsKIH0KQEAgLTYwNDYsMTMgKzYwOTksMTYgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnN0b3BNZWRpYUNhcHR1cmUoTWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZCBr
aW5kLCBDb21wbGUKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE1lZGlh
UGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TWVkaWFQbGF5YmFj
a1N0YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
TWVkaWFQbGF5YmFja1N0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFQbGF5YmFja1N0
YXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoTWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVkKTsKKwog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdE1lZGlhUGxh
eWJhY2tTdGF0ZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKQEAgLTc2OTEs
NyArNzc0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhp
dGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAgICAgbV92aXNpYmxlUGFnZVRv
a2VuID0gbnVsbHB0cjsKIAogICAgIG1faGFzUnVubmluZ1Byb2Nlc3MgPSBmYWxzZTsKLSAgICBt
X2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIG1fdXNlclNjcmlwdHNOb3RpZmllZCA9
IGZhbHNlOwogCkBAIC04NjU2LDcgKzg3MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAog
I2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtOTA3OSw2ICs5MTM1LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNp
emUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJiBjYWxsYmFjaykKIHsKKyAg
ICBpZiAobV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHsgfSk7CisKICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0
LCBiaXRtYXBTaXplLCBvcHRpb25zKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDcyMTI2Y2QwNWU2NThmNWY1YTIxNjU0
MDI3YjhhZGM2NmNlY2I4MzkuLjFmZTFmNzI2ZjIxZDI1OTdmN2ZkMjQ1NWZhODc5NGE3ZjQ3MTJk
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MDQsNiArNTA0
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBk
aWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworCiAgICAgV2ViSW5zcGVjdG9yVUlQcm94eSogaW5zcGVjdG9yKCkgY29uc3Q7
CiAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgZ2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAKQEAgLTEwMTMsNyArMTAxNiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRF
bmNvZGluZ05hbWU7IH0KIAotICAgIGJvb2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnZVN1c3BlbmRlZDsgfQorICAgIGJv
b2wgYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkOyB9CiAgICAg
dm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgc3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAKQEAgLTIwMDQsNiArMjAwNyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOwogICAgIHZvaWQgc2V0
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29sKTsKIAorICAgIHZvaWQgcmVzdW1lSWZOZWNl
c3NhcnkoKTsKKwogICAgIHZvaWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdh
dGlvbklEKTsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEm
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywKQEAgLTI3NDgsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsK
ICNlbmRpZgogCi0gICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUgfTsKIAogICAgIGJvb2wgbV9jb250
cm9sbGVkQnlBdXRvbWF0aW9uIHsgZmFsc2UgfTsKQEAgLTMwMDksNiArMzAxNCw3IEBAIHByaXZh
dGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAg
ICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2ZTQxNmY0MzE2MTQ3
OWRlOTU1NjA1MmQ1MTg2NDIwYjQ5MWMxNGI5Li43MGJiY2QxMGY4MjljZWY1ZDhmOTJhMGI1N2Rm
MDE4YWEzMjIyYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMTUyLDYgKzE1Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVz
b3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2FjaGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fj
aGVkUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db21tb25WTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGFjdHNSZXF1ZXN0RGF0YS5oPgpA
QCAtMzU5NCw2ICszNTk1LDM3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKQogICAgIG1fcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDogbV9wYWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAg
ICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KworICAgIGZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlBhZ2VTdXNwZW5k
ZWQpOworCisgICAgbV9jYWNoZWRQYWdlID0gQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCku
c3VzcGVuZFBhZ2UoKm1fcGFnZSk7CisgICAgQVNTRVJUKG1fY2FjaGVkUGFnZSk7CisgICAgaWYg
KGF1dG8gbWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBtYWlu
RnJhbWUtPmxvYWRlcigpLmRldGFjaEZyb21BbGxPcGVuZWRGcmFtZXMoKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXN1bWUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7
CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CisKKyAgICBhdXRvIGNhY2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwg
bnVsbHB0cik7CisgICAgQVNTRVJUKGNhY2hlZFBhZ2UpOworICAgIGlmICghY2FjaGVkUGFnZSkK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIGNhY2hlZFBh
Z2UtPnJlc3RvcmUoKm1fcGFnZSk7CisgICAgdW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
K30KKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYg
cG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWIwMjBmYzQ0M2U4MDBmMWQ5NmU3YmVlMjhj
YjM2ZmY2OWNhNmIwMC4uMWI5ZjRkYTEzNGRmZGE3NjM1OGFjMzBiZmU1OTg3MmFiNzhlYzZiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc3LDYg
KzE3Nyw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYXB0dXJlRGV2aWNlOwogY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBEcmFnRGF0YTsKQEAgLTE2NjMsNiArMTY2NCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAKKyAgICB2b2lkIHN1
c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVu
dFNlbGVjdGlvbigpOwpAQCAtMjMxMSw2ICsyMzE1LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOwogCisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNhY2hlZFBhZ2U+IG1fY2FjaGVkUGFnZTsKKwogI2lmIEVOQUJMRShJUENfVEVT
VElOR19BUEkpCiAgICAgYm9vbCBtX2lwY1Rlc3RpbmdBUElFbmFibGVkIHsgZmFsc2UgfTsKICAg
ICB1aW50NjRfdCBtX3Zpc2l0ZWRMaW5rVGFibGVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGUzN2E2NTljOTFi
Mzg5MmUyYjhmOTM4YzYyNmNkY2ZlODllNDE5MDQuLjFiM2E2ODFmY2I1MWY0MTNlMjFiYTQyNTQ0
MmI4YzBhMWZkNWUwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUwLDYgKzI1MCw5IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkK
ICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKKyAgICBTdXNwZW5k
KCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBSZXN1bWUoKSAtPiAoYm9vbCBzdWNjZXNz
KSBBc3luYworCiAgICAgQ2xvc2UoKQogICAgIFRyeUNsb3NlKCkgLT4gKGJvb2wgc2hvdWxkQ2xv
c2UpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1M2M3ODQ4MTM2MGUxNzljMzAyOGZjOWM3YTllYjYwYTI1YWUwOWU0Li5lMWIzMTc0
NzhkNDI0YzNiMTg0ZDYwMmY2YTRkZjAxNjg2YmIwNTU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMDQg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHN1
c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTMzMworICAgICAgICA8cmRhcjovLzc3NDYyNTQzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYXNpYyBB
UEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW06CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3Vs
YXJseS5odG1sOiBBZGRlZC4KKwogMjAyMS0wNS0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc2OTg1LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhYTQ5NTEyZmZkM2VhYTk3OGU1ZjZjYjA4ZDYzZTBhNTM4MmQx
ZjUyLi4yMTVmMmQ2YzFmNGM1ZTk4N2VhOTkxZDEyODdkYjM1YTI3MGQxZjFlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2Miw3IEBACiAJCTQ2M0Y0NzIzMjU1QjQ5QjYwMEQ5
RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjNGNDcyMjI1NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0
YXRlLm1tICovOyB9OwogCQk0NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRl
cm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgKi87
IH07CiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKKwkJNDY1QzIzQUYyNjQwQzNGRTAwRjJG
QzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3RiAv
KiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVCMkE2QTAw
NjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAq
LzsgfTsKIAkJNDY2QzM4NDMyMTA2MzdERTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRP
YnNlcnZlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3QzU2NTMyMUI1RUQxMzAwNTc1MTZEIC8qIEdldFNl
c3Npb25Db29raWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tp
ZS5odG1sICovOyB9OwpAQCAtODY4LDggKzg2OSw4IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNF
REU4NCAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4M0UwMzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUu
ZHlsaWIgKi87IH07CiAJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFw
c2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJ
OTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovOyB9OwotCQk5NTA5NUYyMDI2MkZGRkE1MDAw
MEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVk
UGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29y
dGVkQXJyYXlNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLzsg
fTsKKwkJOTUwOTVGMjAyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2
MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTUwRTRD
QzEyNTJFNzUyNDAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYg
LyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLzsgfTsKIAkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4Qjcz
IC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2
MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmll
d1RoZW1lQ29sb3IubW0gKi87IH07CkBAIC0xNjQ4LDYgKzE2NDksNyBAQAogCQkJCTNGQ0M0RkU4
MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlGNDE1MDg2RDFEQTA0MEM1MDA0NEJFOUIgLyogcGxheS1hdWRp
by1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTBFQkJDQzY2MUZGRjlF
MEMwMEZBNDJBQiAvKiBwb3AtdXAtY2hlY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTgxRUY0Njk2QjAwODNGQTA4IC8qIHBy
ZXZlbnQtb3BlcmF0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTkx
RUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQtc3RhcnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlGNkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLApAQCAtMjA2NSw2ICsyMDY3LDcgQEAKIAkJNDYzRjQ3MjIyNTVCNDlC
NjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1p
bmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIw
MEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0g
IkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1y
ZWd1bGFybHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwb3N0TWVzc2FnZS1y
ZWd1bGFybHkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1
QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZl
ci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRP
YnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1
RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1NjQsOCArMjU2Nyw4IEBACiAJCTkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBX
S1dlYlZpZXdTbmFwc2hvdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLV2ViVmlld1NuYXBzaG90Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Y3RTg2QjE0REM4RTREMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
RnJhbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRjdFODZFMTREQzhFNUIwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyog
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1w
bGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBpT1NTdHlsdXNTdXBwb3J0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhl
bWVDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vi
Vmlld1RoZW1lQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDY1LDYg
KzQwNjgsNyBAQAogCQkJCTlCN0Q3NDBFMUY4Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0
bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3RTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVE
ZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUwODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1
ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCisJCQkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovLAogCQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgzRkEw
OCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICovLAogCQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgz
RkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgKi8sCiAJCQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2
Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5odG1sICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVu
c2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1
c3BlbnNpb24ubW0KaW5kZXggOTk2NjFiMzQwM2IwNGQxNDFhMWM0MjgxNDViN2Q2ZmY0Nzk4ZGRj
Mi4uOWI5NGVhNzE1YmIzMzA4NjkzYzJiNjI2MzNjZDYzYzgyYWU5OTQ1MCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNw
ZW5zaW9uLm1tCkBAIC04MywzICs4Myw5NSBAQCBURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBEZXN0
cm95V2ViUGFnZUR1cmluZ1dlYlByb2Nlc3NTdXNwZW5zaW9uKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNsZWVwKDEpOwogICAgIEVYUEVDVF9FUShwaWQxLCBbd2ViVmlldzMgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXSk7CiB9CisKK1RFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIFdLV2ViVmlld1N1
c3BlbmRQYWdlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHRlc3RNZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tUZXN0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjp0ZXN0TWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAg
X19ibG9jayB1bnNpZ25lZCB0aW1lckZpcmVkQ291bnQgPSAwOworICAgIFt0ZXN0TWVzc2FnZUhh
bmRsZXIgYWRkTWVzc2FnZTpAInRpbWVyIGZpcmVkIiB3aXRoSGFuZGxlcjpeeworICAgICAgICAr
K3RpbWVyRmlyZWRDb3VudDsKKyAgICB9XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNd
KTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwb3N0TWVz
c2FnZS1yZWd1bGFybHkiXTsKKworICAgIGF1dG8gcGlkID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkLCAwKTsKKworICAgIC8vIFRoZSB0aW1lciBz
aG91bGQgYmUgZmlyaW5nLgorICAgIGF1dG8gbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJl
ZENvdW50OworICAgIHdoaWxlIChsYXN0VGltZXJGaXJlQ291bnQgPT0gdGltZXJGaXJlZENvdW50
KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisgICAgRVhQ
RUNUX1RSVUUodGltZXJGaXJlZENvdW50ID4gbGFzdFRpbWVyRmlyZUNvdW50KTsKKworICAgIC8v
IFN1c3BlbmQgdGhlIHBhZ2UuCisgICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Cisg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfc3VzcGVuZFBhZ2U6
XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxkIG5vIGxvbmdlciBiZSBmaXJpbmcuCisgICAg
bGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENvdW50OworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDEwMCk7CisgICAgRVhQRUNUX0VRKGxhc3RUaW1lckZpcmVDb3Vu
dCwgdGltZXJGaXJlZENvdW50KTsKKworICAgIC8vIFdlIHNob3VsZCBub3QgYmUgYWJsZSB0byBy
dW4gSmF2YVNjcmlwdC4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OkAid2luZG93Lm5hbWUiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIC8vIFJlc3VtZSB0aGUgcGFnZS4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX3Jlc3VtZVBhZ2U6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgW3dlYlZpZXcgYWRkVG9UZXN0V2luZG93XTsKKwor
ICAgIC8vIFRoZSB0aW1lciBzaG91bGQgc3RhcnQgZmlyaW5nIGFnYWluLgorICAgIGxhc3RUaW1l
ckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICB3aGlsZSAobGFzdFRpbWVyRmlyZUNv
dW50ID09IHRpbWVyRmlyZWRDb3VudCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoMTApOworICAgIEVYUEVDVF9UUlVFKHRpbWVyRmlyZWRDb3VudCA+IGxhc3RUaW1l
ckZpcmVDb3VudCk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGlkIG5vdCBjcmFzaC4KKyAgICBF
WFBFQ1RfRVEocGlkLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30KKworVEVT
VChQcm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBhZ2VUaGVuTmF2aWdhdGUpCit7
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICBh
dXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05F
KHBpZCwgMCk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF9zdXNwZW5kUGFnZTpeKEJPT0wgc3VjY2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIE5hdmlnYXRpbmcgc2hvdWxkIHdvcmsgYW5kIHJl
c3VtZSB0aGUgdmlldy4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzaW1wbGUyIl07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lclRleHQiIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNTdHJpbmcgKnJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RS
VUUoIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU2Vjb25kIHNpbXBsZSBIVE1M
IGZpbGUuIiwgcmVzdWx0KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZTAwZDhjYmRiZWVjYTE2ZGIyOTY2ZWM1YTU5
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RT4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0SW50ZXJ2YWwoKCkgPT4geworICAgIHdl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ3RpbWVyIGZpcmVk
Jyk7Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428213</attachid>
            <date>2021-05-10 15:40:22 -0700</date>
            <delta_ts>2021-05-10 16:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210510154021.patch</filename>
            <type>text/plain</type>
            <size>135175</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Mjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRkZTRlZWQ4NGYyMzBm
MzIwMDFjYWY5YjI4MTQ5YWRjODFjMzc5Ni4uMmI1NDBiNDMwNmZlNmRkMDVhNzA3YjU3MmUwYWM3
OWRkM2Y1YTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0
cnlTdXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJ
ZkNhY2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTAgIEFuZHJlcyBHb256YWxleiAgPGFu
ZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgYXNzZXJ0IGNyYXNoIGluIEFY
T2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA5ZDZlZTM0MjAxOTQxOTA5MTIzMTJmNjAwMTQxOGUxMzA2ODQ1OThhLi4xMGU4YjdmZWM4MTA0
ZTVkMWVjZWJjYTFlNjU5YTVlZjZjYmU3ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMCBAQAor
MjAyMS0wNS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAgIDxyZGFyOi8vNzc0
NjI1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBUaGlzIHN1c3BlbmRzIHRo
ZSBwYWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGJ1
dCB0aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVkIHRvIG5hdmlnYXRlLgor
ICAgICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFydCBvZiB0aGUgQmFjay9G
b3J3YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51bWJlciBvZiBzdXNwZW5k
ZWQgcGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICBNb3N0IG9mIFdLV2ViVmll
dydzIEFQSSAvIFNQSSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxlZCBvbiBhIHN1
c3BlbmRlZAorICAgICAgICB2aWV3IChUaGUgV0tQYWdlUmVmQVBJIHdpbGwgUkVMRUFTRV9BU1NF
UlQoKSkuIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSB3aWxsIHN0YXkKKyAgICAgICAgZnVuY3Rpb25h
bCAoVVJMLCBpc0xvYWRpbmcsIHRpdGxlLCAuLi4pLiBJdCBpcyBhbHNvIHNhZmUgdG8gZGVhbGxv
Y2F0ZSAvIGNsb3NlCisgICAgICAgIGEgc3VzcGVuZGVkIFdLV2ViVmlldy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoY3Jhc2hJZlBhZ2VJc1N1c3Bl
bmRlZCk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxX
aXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJM
V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAg
KFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRG
aWxlKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAg
ICAgICAgKFdLUGFnZUxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxvYWRIVE1MU3Ry
aW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToK
KyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9h
ZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VMb2FkV2ViQXJj
aGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0aFVzZXJEYXRh
KToKKyAgICAgICAgKFdLUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZCk6
CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKToKKyAgICAgICAg
KFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdlUmVsb2FkRXhwaXJlZE9u
bHkpOgorICAgICAgICAoV0tQYWdlVHJ5Q2xvc2UpOgorICAgICAgICAoV0tQYWdlQ2xvc2UpOgor
ICAgICAgICAoV0tQYWdlR29Gb3J3YXJkKToKKyAgICAgICAgKFdLUGFnZUdvQmFjayk6CisgICAg
ICAgIChXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXS1BhZ2VUcnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV0tQYWdlVXBkYXRlV2Vic2l0ZVBvbGlj
aWVzKToKKyAgICAgICAgKFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAgICAoV0tQYWdlU2V0Q3Vz
dG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXS1BhZ2VUZXJtaW5hdGUpOgorICAgICAg
ICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV0tQYWdlUmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbik6CisgICAgICAgIChXS1BhZ2VTZXRD
dXN0b21CYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0VGV4dFpvb21GYWN0
b3IpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IpOgorICAgICAgICAoV0tQYWdl
U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChXS1BhZ2VTZXRTY2FsZUZhY3Rv
cik6CisgICAgICAgIChXS1BhZ2VTZXRVc2VGaXhlZExheW91dCk6CisgICAgICAgIChXS1BhZ2VT
ZXRGaXhlZExheW91dFNpemUpOgorICAgICAgICAoV0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyk6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpOgor
ICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQpOgorICAgICAgICAoV0tQYWdlU2V0
UnViYmVyQmFuZHNBdFJpZ2h0KToKKyAgICAgICAgKFdLUGFnZVNldFJ1YmJlckJhbmRzQXRUb3Ap
OgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbSk6CisgICAgICAgIChXS1Bh
Z2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0RW5h
YmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0QmFja2dyb3Vu
ZEV4dGVuZHNCZXlvbmRQYWdlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKToK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUxlbmd0aCk6CisgICAgICAgIChXS1BhZ2VTZXRHYXBCZXR3ZWVuUGFn
ZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCk6CisgICAg
ICAgIChXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbik6CisgICAgICAgIChXS1Bh
Z2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKToKKyAgICAgICAgKFdLUGFnZUZpbmRTdHJp
bmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAg
ICAgKFdLUGFnZVNlbGVjdEZpbmRNYXRjaCk6CisgICAgICAgIChXS1BhZ2VGaW5kU3RyaW5nKToK
KyAgICAgICAgKFdLUGFnZUhpZGVGaW5kVUkpOgorICAgICAgICAoV0tQYWdlQ291bnRTdHJpbmdN
YXRjaGVzKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmlu
ZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50
KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChX
S1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYik6CisgICAgICAgIChXS1BhZ2VSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JG
cmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdL
UGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KToKKyAgICAgICAgKFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAoV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXS1Bh
Z2VGb3JjZVJlcGFpbnQpOgorICAgICAgICAoV0tQYWdlVmFsaWRhdGVDb21tYW5kKToKKyAgICAg
ICAgKFdLUGFnZUV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdLUGFnZUNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdL
UGFnZUJlZ2luUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRW5kUHJpbnRpbmcpOgorICAgICAg
ICAoV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbik6CisgICAgICAgIChXS1BhZ2VTZXRB
bGxvd3NSZW1vdGVJbnNwZWN0aW9uKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhVm9sdW1lKToK
KyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVy
ZUVuYWJsZWQpOgorICAgICAgICAoV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayk6CisgICAgICAg
IChXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKToKKyAgICAgICAgKFdLUGFnZURpZERlbnlQb2lu
dGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KToK
KyAgICAgICAgKFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChXS1BhZ2VT
ZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV0tQYWdlU2V0QWRkc1Zpc2l0ZWRM
aW5rcyk6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAg
ICAgIChXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdL
UGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKToKKyAgICAgICAgKFdLUGFnZUdldEFw
cGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgIChXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOgorICAgICAgICAoV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTaW11bGF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyk6CisgICAg
ICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFya1ByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlU2V0
UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRN
b2NrQ2FtZXJhT3JpZW50YXRpb24pOgorICAgICAgICAoV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zKToKKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKToK
KyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZyk6
CisgICAgICAgIChXS1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZpbGVV
Ukw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZERhdGE6TUlN
RVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3Rv
cExvYWRpbmddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDppbkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFtZTppbkNvbnRl
bnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNsb3Nl
QWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXli
YWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBz
ZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rpb246
d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5GcmFtZTppbldv
cmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBz
aG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0UGFn
ZVpvb206XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhDb25maWd1cmF0
aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0TWVkaWFU
eXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0SW50ZXJhY3Rpb25TdGF0ZTpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c01hZ25pZmljYXRpb246XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOmNlbnRlcmVkQXRQb2ludDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBw
cmludE9wZXJhdGlvbldpdGhQcmludEluZm86XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9uc2U6cmVzcG9u
c2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0
aFJlc3BvbnNlOnJlc3BvbnNlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRTaW11
bGF0ZWRSZXF1ZXN0OnJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25zZUhUTUxTdHJpbmc6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBsb2FkRmlsZVJlcXVlc3Q6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9pbmNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9kZWNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jaGFuZ2VMaXN0
VHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEVuYWJsZUJyb3dzZXJFeHRl
bnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZERpc2FibGVCcm93c2VyRXh0ZW5z
aW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRFZGl0YWJsZTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxldGlvbjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3Vy
YXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21wbGV0ZVRleHRN
YW5pcHVsYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfdG9nZ2xlUGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3Rv
cE1lZGlhQ2FwdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3BBbGxNZWRpYVBsYXli
YWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2FkZEFwcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWRBbHRl
cm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VV
Ukw6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVlc3Q6c2hvdWxk
T3BlbkV4dGVybmFsVVJMczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkUmVxdWVzdDpz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dy
YW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmV2b2tl
QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeV0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZFBhZ2U6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfcmVzdW1lUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRBcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNv
bnRlbnRQcm9jZXNzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0aG91dENvbnRl
bnRCbG9ja2Vyc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZEV4cGlyZWRPbmx5XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0
ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0
aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFBERkZp
cnN0UGFnZVNpemVJbkZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdHJ5Q2xvc2VdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBl
OmRhdGE6b3B0aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6b3B0aW9uczpjb21wbGV0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBw
ZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hdHRh
Y2htZW50Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURl
dmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOmJldGE6Z2FtbWE6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6d2FybmluZzpkZXRh
aWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nob3dTYWZl
QnJvd3NpbmdXYXJuaW5nV2l0aFVSTDp0aXRsZTp3YXJuaW5nOmRldGFpbHM6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdX
aXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWlsc1dpdGhMaW5rczpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHQ6YXJn
dW1lbnRzOmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5Db250ZW50V29y
bGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVK
YXZhU2NyaXB0OndpdGhTb3VyY2VVUkw6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5j
ZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbm90aWZ5VXNlclNjcmlwdHNdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFkZHNWaXNpdGVkTGlua3M6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZB
bGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25N
b2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnZUxlbmd0aDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRUZXh0Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdl
Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmluZ01hdGNoZXM6
b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kU3RyaW5nOm9w
dGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZpbmRVSV0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJy
aWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZlcjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zZXRMYXlvdXRNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldEZpeGVkTGF5b3V0U2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRCYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0Vmlld1Nj
YWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRQcm9jZXNzRGlzcGxheU5hbWVXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dyYW50QWNjZXNzVG9QcmVm
ZXJlbmNlU2VydmljZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFNjcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBh
Z2VNdXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5r
czpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhp
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
dXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIE9iakMgQVBJIHNpbWlsYXIg
dG8gV0tCdW5kbGVQYWdlQ29weUdyb3VwSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NTFkODU0N2I2OGQ0NzI4YTljNWE0NDM0MWZjNDgzNzNhMTEzYTk4Yy4uNjE1Y2ZiOGYwYzk0YzJi
MTRmMDk1M2RjYmMwOGY0YTZkYWY3ZWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02MDgsNiAr
NjA4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGhpc3Rv
cnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oCiAgICAgaGlzdG9yeS9DYWNoZWRGcmFtZS5o
CiAgICAgaGlzdG9yeS9DYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisgICAgaGlzdG9yeS9DYWNo
ZWRQYWdlLmgKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmgKIAogICAgIGh0bWwvQXV0b2NhcGl0
YWxpemUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5k
ZXggMjdlZDc0Y2QyMWQzNmFlNzBjMzVhOGYwYjIwOTFiMGI1YTQ3N2I5My4uOTAzYWVjYTEyMjJm
OGU5NGY5N2UxODg0Yzk1MDVhMzcwYTY3NDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC00MjYsNTEgKzQyNiw2MiBAQCBzdGF0aWMgdm9pZCBm
aXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KEZyYW1lJiBmcmFtZSkKICAgICAgICAgZmlyZVBh
Z2VIaWRlRXZlbnRSZWN1cnNpdmVseSgqY2hpbGQpOwogfQogCi1ib29sIEJhY2tGb3J3YXJkQ2Fj
aGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQorc3RkOjp1
bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnRyeVN1c3BlbmRQYWdlKFBh
Z2UmIHBhZ2UsIEZvcmNlU3VzcGVuc2lvbiBmb3JjZVN1c3BlbnNpb24pCiB7Ci0gICAgaWYgKGl0
ZW0uaXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBwYWdlLT5tYWluRnJhbWUo
KS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOworICAgIHBhZ2UubWFpbkZyYW1l
KCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKIAotICAgIGlmICghY2FuQ2Fj
aGUoKnBhZ2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lv
biA9PSBGb3JjZVN1c3BlbnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYWdlLT5pc1V0aWxpdHlQ
YWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hvdWxkIG5ldmVy
IGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBh
Z2UuaXNVdGlsaXR5UGFnZSgpLCAiVXRpbGl0eSBwYWdlcyBzdWNoIGFzIFNWR0ltYWdlIHBhZ2Vz
IHNob3VsZCBuZXZlciBnbyBpbnRvIEJhY2tGb3J3YXJkQ2FjaGUiKTsKIAotICAgIHNldEJhY2tG
b3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJk
Q2FjaGUpOworICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6QWJv
dXRUb0VudGVyQmFja0ZvcndhcmRDYWNoZSk7CiAKICAgICAvLyBGb2N1cyB0aGUgbWFpbiBmcmFt
ZSwgZGVmb2N1c2luZyBhIGZvY3VzZWQgc3ViZnJhbWUgKGlmIHdlIGhhdmUgb25lKS4gV2UgZG8g
dGhpcyBoZXJlLAogICAgIC8vIGJlZm9yZSB0aGUgcGFnZSBlbnRlcnMgdGhlIGJhY2svZm9yd2Fy
ZCBjYWNoZSwgd2hpbGUgd2Ugc3RpbGwgY2FuIGRpc3BhdGNoIERPTSBibHVyL2ZvY3VzIGV2ZW50
cy4KLSAgICBpZiAocGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCi0gICAg
ICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS0+bWFpbkZy
YW1lKCkpOworICAgIGlmIChwYWdlLmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpKQor
ICAgICAgICBwYWdlLmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS5tYWlu
RnJhbWUoKSk7CiAKICAgICAvLyBGaXJlIHRoZSBwYWdlaGlkZSBldmVudCBpbiBhbGwgZnJhbWVz
LgotICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkocGFnZS0+bWFpbkZyYW1lKCkpOwor
ICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkocGFnZS5tYWluRnJhbWUoKSk7CiAKLSAg
ICBkZXN0cm95UmVuZGVyVHJlZShwYWdlLT5tYWluRnJhbWUoKSk7CisgICAgZGVzdHJveVJlbmRl
clRyZWUocGFnZS5tYWluRnJhbWUoKSk7CiAKICAgICAvLyBTdG9wIGFsbCBsb2FkcyBhZ2FpbiBi
ZWZvcmUgY2hlY2tpbmcgaWYgd2UgY2FuIHN0aWxsIGNhY2hlIHRoZSBwYWdlIGFmdGVyIGZpcmlu
ZyB0aGUgcGFnZWhpZGUKICAgICAvLyBldmVudCwgc2luY2UgdGhlIHBhZ2UgbWF5IGhhdmUgc3Rh
cnRlZCBwaW5nIGxvYWRzIGluIGl0cyBwYWdlaGlkZSBldmVudCBoYW5kbGVyLgotICAgIHBhZ2Ut
Pm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFn
ZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCiAgICAg
Ly8gQ2hlY2sgdGhhdCB0aGUgcGFnZSBpcyBzdGlsbCBwYWdlLWNhY2hlYWJsZSBhZnRlciBmaXJp
bmcgdGhlIHBhZ2VoaWRlIGV2ZW50LiBUaGUgSlMgZXZlbnQgaGFuZGxlcnMKICAgICAvLyBjb3Vs
ZCBoYXZlIGFsdGVyZWQgdGhlIHBhZ2UgaW4gYSB3YXkgdGhhdCBjb3VsZCBwcmV2ZW50IGNhY2hp
bmcuCi0gICAgaWYgKCFjYW5DYWNoZSgqcGFnZSkpIHsKLSAgICAgICAgc2V0QmFja0ZvcndhcmRD
YWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChmb3JjZVN1c3BlbnNpb24gPT0gRm9yY2VTdXNwZW5z
aW9uOjpObyAmJiAhY2FuQ2FjaGUocGFnZSkpIHsKKyAgICAgICAgc2V0QmFja0ZvcndhcmRDYWNo
ZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUoKnBh
Z2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworICAgIHNldEJhY2tGb3J3YXJkQ2Fj
aGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlKTsKKworICAgIC8vIE1h
a2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KKyAgICBT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4ocGFnZSk7Cit9CisKK2Jvb2wgQmFj
a0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBh
Z2UpCit7CisgICAgaWYgKGl0ZW0uaXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGNhY2hlZFBhZ2UgPSB0cnlTdXNwZW5kUGFnZSgqcGFnZSwgRm9yY2VTdXNwZW5zaW9u
OjpObyk7CisgICAgaWYgKCFjYWNoZWRQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4g
dGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtl
VW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKSk7CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShX
VEZNb3ZlKGNhY2hlZFBhZ2UpKTsKICAgICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVu
aW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpAQCAt
NDgxLDYgKzQ5MiwxMyBAQCBib29sIEJhY2tGb3J3YXJkQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhp
c3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6c3VzcGVuZFBhZ2UoUGFn
ZSYgcGFnZSkKK3sKKyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiQmFja0Zvcndh
cmRDYWNoZTo6c3VzcGVuZFBhZ2UoKSIpOworCisgICAgcmV0dXJuIHRyeVN1c3BlbmRQYWdlKHBh
Z2UsIEZvcmNlU3VzcGVuc2lvbjo6WWVzKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBh
Z2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnRha2UoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2Up
CiB7CiAgICAgaWYgKCFpdGVtLm1fY2FjaGVkUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ2FjaGUuaAppbmRleCBhZGFhZmFiYTZiYTYzMTI3Y2M0ZDgyZDdmMWQyYzM5
ZDQ3NTM0ZjdlLi43M2U3NmUwMGIyYTk1ZTQ2MzYwYjk3Zjk0YTc3MWQwMDFjYTQ4MWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhTaXplKHVuc2lnbmVkKTsg
Ly8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hlLgogICAgIHVuc2lnbmVkIG1heFNpemUoKSBjb25z
dCB7IHJldHVybiBtX21heFNpemU7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxDYWNoZWRQYWdlPiBzdXNwZW5kUGFnZShQYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1bmVzIGlmIG1h
eFNpemUoKSBpcyBleGNlZWRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShIaXN0
b3J5SXRlbSYpOwogICAgIENhY2hlZFBhZ2UqIGdldChIaXN0b3J5SXRlbSYsIFBhZ2UqKTsKQEAg
LTc0LDYgKzc1LDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBib29sIGNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUmKTsKIAorICAgIGVudW0gY2xhc3MgRm9yY2VTdXNwZW5z
aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
dHJ5U3VzcGVuZFBhZ2UoUGFnZSYsIEZvcmNlU3VzcGVuc2lvbik7CiAgICAgdm9pZCBwcnVuZShQ
cnVuaW5nUmVhc29uKTsKICAgICB2b2lkIGR1bXAoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuaAppbmRleCA0ZWVjZjFjYjBjMjVkYWM3ZTFkNmYyNDk4Y2JiMmM5NWUzODg1
ZDI1Li4wZjczY2Y3OGFjM2I3M2ZkYzY1NWYxNDM2NDExYzE3YWM1NTIxN2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBDYWNoZWRQYWdl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBD
YWNoZWRQYWdlKFBhZ2UmKTsKLSAgICB+Q2FjaGVkUGFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5DYWNoZWRQYWdlKCk7CiAKLSAgICB2b2lkIHJlc3RvcmUoUGFnZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzdG9yZShQYWdlJik7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUGFn
ZSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNjNhZjA1Y2RmYTgwNGM1ODA2MDQ4N2YwZGNiMDE3YjU5
ZTBlZDAyNS4uMzY3NzcxOWY4YWJiNzM2NzU1MjY4MDAzYWIzMWI3ZWNmOTg1M2Y1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xNDMsNiArMTQzLDE0IEBA
IHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+IHsK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAorc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIGNy
YXNoSWZQYWdlSXNTdXNwZW5kZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJFcnJvcjogQXR0ZW1wdCB0byBjYWxsIFdLUGFnZVJlZiBBUEkvU1BJIG9uIGEgc3VzcGVu
ZGVkIHBhZ2UsIHRoaXMgaXMgYSBjbGllbnQgYnVnLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRSghcGFnZVJlZiB8fCAhdG9JbXBsKHBhZ2VSZWYpLT5pc1N1c3BlbmRlZCgpLCAi
WW91IGNhbm5vdCBjYWxsIHRoaXMgQVBJL1NQSSBvbiBhIHN1c3BlbmRlZCBwYWdlIik7Cit9CisK
KyNkZWZpbmUgQ1JBU0hfSUZfU1VTUEVOREVEIGNyYXNoSWZQYWdlSXNTdXNwZW5kZWQocGFnZVJl
ZikKKwogV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2Vi
UGFnZVByb3h5OjpBUElUeXBlKTsKQEAgLTE2NSw0OSArMTczLDU4IEBAIFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpKTsKIH0KIAogdm9pZCBXS1BhZ2VM
b2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLVVJMUmVmIFVSTFJlZiwgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
ID8gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdzsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJM
UmVmKSksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tU
eXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSks
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCB0
b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkVVJMUmVxdWVzdChXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0ID0gdG9JbXBsKHVybFJl
cXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRS
ZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFVS
TFJlcXVlc3RXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiB1
cmxSZXF1ZXN0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0ID0gdG9JbXBsKHVybFJlcXVlc3RSZWYp
LT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdU
Rk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3csIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdL
UGFnZUxvYWRGaWxlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJl
ZiByZXNvdXJjZURpcmVjdG9yeVVSTCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhmaWxlVVJMKSwgdG9XVEZTdHJp
bmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRmlsZVdpdGhV
c2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgZmlsZVVSTCwgV0tVUkxSZWYgcmVz
b3VyY2VEaXJlY3RvcnlVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhm
aWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpLCB0b0ltcGwodXNlckRh
dGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tE
YXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNv
ZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwoZGF0YVJlZiktPmRhdGFSZWZl
cmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1Jl
ZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YVdp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5n
UmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVS
TFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJlZmVy
ZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVm
KSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCkBA
IC0yMzMsNTIgKzI1MCw2MiBAQCBzdGF0aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNvbnN0IFN0cmluZyYgbQogCiB2b2lkIFdLUGFn
ZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5n
UmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVm
LCBiYXNlVVJMUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwg
V0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBsb2FkU3RyaW5nKHBhZ2VSZWYsIGh0bWxTdHJpbmdSZWYsICJ0
ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB1c2VyRGF0YVJlZik7CiB9CiAK
IHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVu
cmVhY2hhYmxlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VM
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVm
LCBiYXNlVVJMUmVmLCB1bnJlYWNoYWJsZVVSTFJlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQ
YWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVm
IHVucmVhY2hhYmxlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIFN0cmluZyBzdHJpbmcgPSB0b1dURlN0cmluZyhodG1sU3RyaW5n
UmVmKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRBbHRlcm5hdGVIVE1MKGRhdGFGcm9tKHN0
cmluZyksIGVuY29kaW5nT2Yoc3RyaW5nKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhiYXNlVVJM
UmVmKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodW5yZWFjaGFibGVVUkxSZWYpKSwgdG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJE
YXRhKHBhZ2VSZWYsIHBsYWluVGV4dFN0cmluZ1JlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQ
YWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0
U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgYWJvdXRCbGFua1VSTCgpLnN0cmluZygpLCB1c2Vy
RGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRhKHRvSW1wbCh3
ZWJBcmNoaXZlRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRXZWJBcmNoaXZlRGF0YVdp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIHdlYkFyY2hpdmVEYXRhUmVm
LCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRhKHRvSW1wbCh3ZWJBcmNoaXZlRGF0
YVJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZVN0b3BMb2FkaW5n
KFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFn
ZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRo
RXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCkBAIC0yOTAsMjEgKzMxNywyNSBAQCB2b2lkIFdL
UGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VSZWxvYWRXaXRob3V0
Q29udGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246
OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZEZyb21Pcmln
aW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7
CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkRXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdl
YkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogfQogCiBib29sIFdLUGFnZVRyeUNs
b3NlKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50cnlDbG9zZSgpOwogfQogCkBAIC0zMjAsNiArMzUxLDcg
QEAgYm9vbCBXS1BhZ2VJc0Nsb3NlZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VH
b0ZvcndhcmQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Gb3J3YXJkKCk7CiB9CiAKQEAgLTMzMCw2ICszNjIsNyBA
QCBib29sIFdLUGFnZUNhbkdvRm9yd2FyZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VHb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGF1dG8mIHBhZ2UgPSAqdG9JbXBsKHBhZ2VSZWYpOwogICAgIGlmIChwYWdlLnBhZ2VDbGll
bnQoKS5oYXNTYWZlQnJvd3NpbmdXYXJuaW5nKCkpIHsKICAgICAgICAgV0tQYWdlUmVsb2FkKHBh
Z2VSZWYpOwpAQCAtMzQ1LDExICszNzgsMTMgQEAgYm9vbCBXS1BhZ2VDYW5Hb0JhY2soV0tQYWdl
UmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdvVG9CYWNrRm9yd2FyZEl0
ZW0oKnRvSW1wbChpdGVtUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlVHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCkBAIC0z
NjUsNiArNDAwLDcgQEAgYm9vbCBXS1BhZ2VXaWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50
cyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VVcGRhdGVXZWJzaXRlUG9saWNpZXMo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLV2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNpdGVQb2xpY2llc1Jl
ZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLCAi
U2V0dGluZyBXZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRl
ZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKCkuIik7CiAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+
dXNlckNvbnRlbnRDb250cm9sbGVyKCksICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy51c2VyQ29u
dGVudENvbnRyb2xsZXIgaXMgb25seSBzdXBwb3J0ZWQgZHVyaW5nIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclVzZVdpdGhQb2xpY2llcygpLiIpOwogICAgIGF1dG8gZGF0YSA9IHRvSW1wbCh3ZWJzaXRl
UG9saWNpZXNSZWYpLT5kYXRhKCk7CkBAIC00MjMsNiArNDU5LDcgQEAgV0tTdHJpbmdSZWYgV0tQ
YWdlQ29weUFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTmFtZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQodG9XVEZTdHJpbmcoYXBwbGljYXRpb25OYW1lUmVmKSk7CiB9CiAKQEAgLTQzMyw2ICs0NzAs
NyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5Q3VzdG9tVXNlckFnZW50KFdLUGFnZVJlZiBwYWdl
UmVmKQogCiB2b2lkIFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgdXNlckFnZW50UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVVzZXJBZ2VudCh0b1dURlN0cmluZyh1c2VyQWdl
bnRSZWYpKTsKIH0KIApAQCAtNDUzLDExICs0OTEsMTMgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29w
eUN1c3RvbVRleHRFbmNvZGluZ05hbWUoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdl
U2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYg
ZW5jb2RpbmdOYW1lUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUodG9XVEZTdHJpbmcoZW5jb2RpbmdO
YW1lUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm90
ZWN0ZWRQcm9jZXNzUHJveHkodG9JbXBsKHBhZ2VSZWYpLT5wcm9jZXNzKCkpOwogICAgIHByb3Rl
Y3RlZFByb2Nlc3NQcm94eS0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwogfQpAQCAtNTE4LDExICs1NTgsMTMgQEAgc3RhdGlj
IHZvaWQgcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVHlwZVJl
ZiBzZXNzaW9uU3RhdGVSZWYKIAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBlUmVmIHNlc3Npb25TdGF0ZVJlZikKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUocGFnZVJlZiwgc2Vz
c2lvblN0YXRlUmVmLCB0cnVlKTsKIH0KIAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYgc2Vzc2lv
blN0YXRlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZShwYWdlUmVmLCBzZXNzaW9uU3RhdGVSZWYsIGZhbHNlKTsKIH0KIApAQCAtNTM4
LDYgKzU4MCw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKFdLUGFn
ZVJlZiBwYWdlUmVmLCBkb3VibGUgY3VzdG9tU2NhbGVGYWN0b3IpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0
b3IoY3VzdG9tU2NhbGVGYWN0b3IpOwogfQogCkBAIC01NDgsNiArNTkxLDcgQEAgYm9vbCBXS1Bh
Z2VTdXBwb3J0c1RleHRab29tKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFRl
eHRab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRUZXh0Wm9vbUZh
Y3Rvcih6b29tRmFjdG9yKTsKIH0KIApAQCAtNTU4LDE2ICs2MDIsMTkgQEAgZG91YmxlIFdLUGFn
ZUdldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBh
Z2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlWm9vbUZh
Y3Rvcih6b29tRmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0
Wm9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZh
Y3Rvcik7CiB9CiAKIHZvaWQgV0tQYWdlU2V0U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYs
IGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2NhbGVQYWdlKHNjYWxlLCB0b0ludFBvaW50KG9yaWdp
bikpOwogfQogCkBAIC01NzgsMTEgKzYyNSwxMyBAQCBkb3VibGUgV0tQYWdlR2V0U2NhbGVGYWN0
b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGJvb2wgZml4ZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpOwogfQogCiB2b2lk
IFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTaXplIHNpemUp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rml4
ZWRMYXlvdXRTaXplKHRvSW50U2l6ZShzaXplKSk7CiB9CiAKQEAgLTU5OCw2ICs2NDcsNyBAQCBX
S1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXplKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdL
UGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLTGF5b3V0
TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPmxpc3RlbkZvckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRNaWxlc3Rv
bmVzKG1pbGVzdG9uZXMpKTsKIH0KIApAQCAtNjEzLDYgKzY2Myw3IEBAIGJvb2wgV0tQYWdlSGFz
VmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0U3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHN1cHByZXNz
QW5pbWF0aW9ucykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKTsK
IH0KIApAQCAtNjQ4LDYgKzY5OSw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdExlZnQoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdExlZnQpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdExlZnQocnViYmVy
QmFuZHNBdExlZnQpOwogfQogCkBAIC02NTgsNiArNzEwLDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJC
YW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVyQmFu
ZHNBdFJpZ2h0KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRSaWdodCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJC
YW5kc0F0UmlnaHQocnViYmVyQmFuZHNBdFJpZ2h0KTsKIH0KIApAQCAtNjY4LDYgKzcyMSw3IEBA
IGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdFRvcChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBX
S1BhZ2VTZXRSdWJiZXJCYW5kc0F0VG9wKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJh
bmRzQXRUb3ApCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0UnViYmVyQmFuZHNBdFRvcChydWJiZXJCYW5kc0F0VG9wKTsKIH0KIApAQCAtNjc4LDYg
KzczMiw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdEJvdHRvbShXS1BhZ2VSZWYgcGFnZVJl
ZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0Qm90dG9tKFdLUGFnZVJlZiBwYWdlUmVm
LCBib29sIHJ1YmJlckJhbmRzQXRCb3R0b20pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdEJvdHRvbShydWJiZXJCYW5kc0F0
Qm90dG9tKTsKIH0KIApAQCAtNjg4LDYgKzc0Myw3IEBAIGJvb2wgV0tQYWdlVmVydGljYWxSdWJi
ZXJCYW5kaW5nSXNFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEVu
YWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVW
ZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRp
Y2FsUnViYmVyQmFuZGluZyk7CiB9CiAKQEAgLTY5OCwxMSArNzU0LDEzIEBAIGJvb2wgV0tQYWdl
SG9yaXpvbnRhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZv
aWQgV0tQYWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJl
ckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOwogfQogCiB2b2lkIFdLUGFn
ZVNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBi
YWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tn
cm91bmRFeHRlbmRzQmV5b25kUGFnZSk7CiB9CiAKQEAgLTcxMyw2ICs3NzEsNyBAQCBib29sIFdL
UGFnZUJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9p
ZCBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdpbmF0aW9u
TW9kZSBwYWdpbmF0aW9uTW9kZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV2Vi
Q29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtb2RlOwogICAgIHN3aXRjaCAocGFnaW5hdGlvbk1vZGUp
IHsKICAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ6CkBAIC03NTcsNiArODE2
LDcgQEAgV0tQYWdpbmF0aW9uTW9kZSBXS1BhZ2VHZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYg
cGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKFdL
UGFnZVJlZiBwYWdlUmVmLCBib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdpbmF0aW9uQmVoYXZlc0xp
a2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyk7CiB9CiAKQEAgLTc2Nyw2ICs4MjcsNyBAQCBi
b29sIFdLUGFnZUdldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxlbmd0aChXS1BhZ2VSZWYgcGFnZVJlZiwgZG91Ymxl
IHBhZ2VMZW5ndGgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKTsKIH0KIApAQCAtNzc3LDYgKzgzOCw3IEBA
IGRvdWJsZSBXS1BhZ2VHZXRQYWdlTGVuZ3RoKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdL
UGFnZVNldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIGdhcCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRHYXBCZXR3
ZWVuUGFnZXMoZ2FwKTsKIH0KIApAQCAtNzg3LDYgKzg0OSw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRH
YXBCZXR3ZWVuUGFnZXMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnaW5h
dGlvbkxpbmVHcmlkRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBsaW5lR3JpZEVuYWJs
ZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC04MTcs
NDYgKzg4MCw1NSBAQCBib29sIFdLUGFnZUlzQ29udGVudEVkaXRhYmxlKFdLUGFnZVJlZiBwYWdl
UmVmKQogCiB2b2lkIFdLUGFnZVNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKFdLUGFnZVJl
ZiBwYWdlUmVmLCBib29sIG5ld1ZhbHVlKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihu
ZXdWYWx1ZSk7CiB9CiAKIHZvaWQgV0tQYWdlQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYShX
S1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpOwogfQogCiB2
b2lkIFdLUGFnZUZpbmRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzdHJpbmcsIFdLRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5maW5kU3Ry
aW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9u
cyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNo
KFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5kZXgpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0
Y2hJbmRleCk7CiB9CiAKIHZvaWQgV0tQYWdlU2VsZWN0RmluZE1hdGNoKFdLUGFnZVJlZiBwYWdl
UmVmLCBpbnQzMl90IG1hdGNoSW5kZXgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+c2VsZWN0RmluZE1hdGNoKG1hdGNoSW5kZXgpOwogfQogCiB2b2lk
IFdLUGFnZUZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywg
V0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZpbmRTdHJpbmcodG9JbXBs
KHN0cmluZyktPnN0cmluZygpLCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBtYXhNYXRjaENvdW50
KTsKIH0KIAogdm9pZCBXS1BhZ2VIaWRlRmluZFVJKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmhpZGVGaW5kVUkoKTsK
IH0KIAogdm9pZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZikt
PmNvdW50U3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlv
bnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250
ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVD
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBw
dWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiwgcHVibGljIEFQ
STo6Q29udGV4dE1lbnVDbGllbnQgewogICAgIHB1YmxpYzoKQEAgLTk3Myw2ICsxMDQ1LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZURpYWdub3MKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBGaW5kQ2xpZW50IDogcHVibGlj
IEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RmluZENsaWVu
dCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBGaW5kQ2xpZW50KGNvbnN0IFdLUGFn
ZUZpbmRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMDExLDYgKzEwODQsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xp
ZW50QmFzZSogd2tDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVu
dCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgRmluZE1hdGNoZXNDbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlPiwgcHVi
bGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGlj
aXQgRmluZE1hdGNoZXNDbGllbnQoY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiBj
bGllbnQpCkBAIC0xMDU0LDE2ICsxMTI4LDE5IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRj
aGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAK
IHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1D
bGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxv
YWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICBjbGFzcyBMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlTG9hZGVyQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkxvYWRlckNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBleHBsaWNpdCBMb2FkZXJDbGllbnQoY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSogY2xp
ZW50KQpAQCAtMTIzNCw2ICsxMzExLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIGNsYXNzIFBvbGljeUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6UG9saWN5Q2xpZW50IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBvbGljeUNsaWVudChjb25zdCBXS1BhZ2VQb2xpY3lD
bGllbnRCYXNlKiBjbGllbnQpCkBAIC0xNDkzLDYgKzE1NzEsNyBAQCB2b2lkIFdLUGFnZVJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybVJlc3VsdExpc3RlbmVyQ2FsbChXS1BhZ2VSZXF1ZXN0U3Rv
cmFnZUFjYwogCiB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlVUlD
bGllbnRCYXNlPiwgcHVibGljIEFQSTo6VUlDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAg
ZXhwbGljaXQgVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0y
MTM4LDYgKzIyMTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiB2b2lkIFdLUGFnZVNl
dFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZp
Z2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlTmF2
aWdhdGlvbkNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IE5hdmlnYXRpb25DbGllbnQoY29uc3QgV0tQYWdlTmF2
aWdhdGlvbkNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTI1MDMsMTYgKzI1ODMsMTggQEAgcHJpdmF0
ZToKICAgICB9CiB9OwogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYg
cGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGll
bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGlmIChjbGllbnQpCi0gICAgICAg
IHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVD
bGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCi0g
ICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwor
ICAgICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxscHRy
KTsKIH0KIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3Jp
cHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQu
aGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBjYWxsYmFjayh0b0FQSShyZXN1bHQudmFsdWUoKS5n
ZXQoKSksIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjUzMSw2ICsyNjEzLDcgQEAgc3RhdGljIHZv
aWQgY2FsbFJ1bkphdmFTY3JpcHRCbG9ja0FuZFJlbGVhc2UoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgcmVzdWx0VmEKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYihX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0QmxvY2sgYmxvY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZShwYWdlUmVmLCBzY3JpcHRSZWYsIEJsb2NrX2NvcHkoYmxv
Y2spLCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFzZSk7CiB9CiAjZW5kaWYKQEAgLTI1
NDQsMzEgKzI2MjcsMzcgQEAgc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+IHRvU3RyaW5nQ2FsbGJhY2sodm9pZCogY29udGV4dCwgdm8KIAogdm9pZCBXS1BhZ2VS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25GdW5jdGlvbiBj
YWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJhbWUoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U291cmNlRm9yRnJhbWUodG9JbXBsKGZy
YW1lUmVmKSwgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lk
IFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmdGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRDb250ZW50c0FzU3Ry
aW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5vLCB0b1N0cmluZ0NhbGxi
YWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9m
aWxlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRCeXRlY29kZVBy
b2ZpbGVGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9TdHJpbmdDYWxsYmFjayhjb250
ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRw
dXQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNhbXBsaW5nUHJv
ZmlsZXJPdXRwdXRGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvU3RyaW5n
Q2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAg
ICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwpA
QCAtMjU3Niw2ICsyNjY1LDcgQEAgdm9pZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2UKIAogdm9pZCBXS1Bh
Z2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNSFRNTCkKICAgICB0b0ltcGwocGFnZVJl
ZiktPmdldENvbnRlbnRzQXNNSFRNTERhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRh
KiBkYXRhKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0
KTsKQEAgLTI1ODksNiArMjY3OSw3IEBAIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0
YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29uCiAKIHZvaWQg
V0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQoW2NvbnRleHQsIGNhbGxiYWNr
XSgpIHsKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7CkBAIC0y
NjI2LDYgKzI3MTcsNyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5U3RhbmRhcmRVc2VyQWdlbnRX
aXRoQXBwbGljYXRpb25OYW1lKFdLU3RyaW5nUmVmIGFwcGxpY2F0aQogCiB2b2lkIFdLUGFnZVZh
bGlkYXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9p
ZCogY29udGV4dCwgV0tQYWdlVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2sgY2FsbGJhY2spCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gY29tbWFuZE5hbWUgPSB0b0ltcGwoY29t
bWFuZCktPnN0cmluZygpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+dmFsaWRhdGVDb21tYW5kKGNv
bW1hbmROYW1lLCBbY29udGV4dCwgY2FsbGJhY2ssIGNvbW1hbmROYW1lXShib29sIGlzRW5hYmxl
ZCwgaW50MzJfdCBzdGF0ZSkgewogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6
Y3JlYXRlKGNvbW1hbmROYW1lKS5wdHIoKSksIGlzRW5hYmxlZCwgc3RhdGUsIG51bGxwdHIsIGNv
bnRleHQpOwpAQCAtMjYzNCw2ICsyNzI2LDcgQEAgdm9pZCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmQo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGNvbW1hbmQsIHZvaWQqIGNvbnRleHQKIAog
dm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYg
Y29tbWFuZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5leGVjdXRlRWRpdENvbW1hbmQodG9JbXBsKGNvbW1hbmQpLT5zdHJpbmcoKSk7CiB9CiAKQEAg
LTI2NDYsOSArMjczOSwxMCBAQCBzdGF0aWMgUHJpbnRJbmZvIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhjb25zdCBXS1ByaW50SW5mbyYgcHJpbnRJbmZvKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdl
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdG
dW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmNv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbikgeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChm
cmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2Fs
ZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdp
bikgewogICAgICAgICBWZWN0b3I8V0tSZWN0PiB3a1JlY3RzKHJlY3RzLnNpemUoKSk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAg
ICB3a1JlY3RzW2ldID0gdG9BUEkocmVjdHNbaV0pOwpAQCAtMjY1NywyMiArMjc1MSwyNSBAQCB2
b2lkIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1ByaW50SW5mbwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdL
UGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1By
aW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdl
RHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCit2b2lkIFdLUGFnZURy
YXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50
SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdlRHJh
d1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludElu
Zm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRh
dGEqIGRhdGEpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8o
cHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEq
IGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQp
OwogICAgIH0pOwogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdlQmVnaW5QcmludGluZyhXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvKQordm9pZCBX
S1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1ByaW50SW5mbyBwcmludEluZm8pCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5iZWdpblByaW50aW5n
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pKTsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5iZWdpblByaW50aW5n
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pKTsKIH0K
IAotdm9pZCBXS1BhZ2VFbmRQcmludGluZyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRW5k
UHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5lbmRQcmlu
dGluZygpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmVu
ZFByaW50aW5nKCk7CiB9CiAKIGJvb2wgV0tQYWdlR2V0SXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KFdLUGFnZVJlZiBwYWdlKQpAQCAtMjY4MCw5ICsyNzc3LDEwIEBAIGJvb2wgV0tQYWdlR2V0SXND
b250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlKQogICAgIHJldHVybiB0b0ltcGwo
cGFnZSktPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpOwogfQogCi12b2lkIFdLUGFnZVNldENv
bnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2UsIGJvb2wgY29udHJvbGxlZCkKK3Zv
aWQgV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgYm9v
bCBjb250cm9sbGVkKQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0Q29udHJvbGxlZEJ5QXV0b21h
dGlvbihjb250cm9sbGVkKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpOwogfQogCiBib29s
IFdLUGFnZUdldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNjk1
LDIzICsyNzkzLDI2IEBAIGJvb2wgV0tQYWdlR2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihXS1Bh
Z2VSZWYgcGFnZSkKICNlbmRpZiAgICAKIH0KIAotdm9pZCBXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJ
bnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBib29sIGFsbG93KQordm9pZCBXS1BhZ2VTZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGFsbG93KQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICB0
b0ltcGwocGFnZSktPnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYWxsb3cpOworICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihhbGxvdyk7CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5V
U0VEX1BBUkFNKGFsbG93KTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZVNldE1lZGlhVm9sdW1l
KFdLUGFnZVJlZiBwYWdlLCBmbG9hdCB2b2x1bWUpCit2b2lkIFdLUGFnZVNldE1lZGlhVm9sdW1l
KFdLUGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB2b2x1bWUpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5z
ZXRNZWRpYVZvbHVtZSh2b2x1bWUpOyAgICAKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYVZvbHVtZSh2b2x1bWUpOwogfQogCi12b2lkIFdLUGFn
ZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQor
dm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tNZWRpYU11dGVkU3RhdGUg
bXV0ZWRTdGF0ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIGNvcmVTdGF0ZTsKIAogICAgIGlmIChtdXRlZFN0
YXRlICYga1dLTWVkaWFBdWRpb011dGVkKQpAQCAtMjcyMSwxMiArMjgyMiwxMyBAQCB2b2lkIFdL
UGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRl
KQogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFTY3JlZW5DYXB0dXJlTXV0ZWQpCiAgICAg
ICAgIGNvcmVTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6U2Ny
ZWVuQ2FwdHVyZUlzTXV0ZWQpOwogCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNdXRlZChjb3JlU3Rh
dGUpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TXV0ZWQoY29yZVN0YXRlKTsKIH0KIAotdm9p
ZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlLCBib29sIGVuYWJs
ZWQpCit2b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhQ2FwdHVyZUVuYWJs
ZWQoZW5hYmxlZCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRN
ZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjczNCwzMCArMjgzNiwzMyBA
QCBib29sIFdLUGFnZUdldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UpCiAgICAg
cmV0dXJuIHRvSW1wbChwYWdlKS0+bWVkaWFDYXB0dXJlRW5hYmxlZCgpOwogfQogCi12b2lkIFdL
UGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpZEFs
bG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWRBbGxv
d1BvaW50ZXJMb2NrKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaWRBbGxvd1BvaW50ZXJMb2Nr
KCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFn
ZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKFdLUGFn
ZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdl
UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQ
YWdlRGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VEaWREZW55
UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWREZW55UG9p
bnRlckxvY2soKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZERlbnlQb2ludGVyTG9jaygpOwog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYp
OwogI2VuZGlmCiB9CiAKQEAgLTI3OTAsMTYgKzI4OTUsMTggQEAgV0tGcmFtZVJlZiBXS1BhZ2VM
b29rVXBGcmFtZUZyb21IYW5kbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVIYW5kbGVSZWYg
aGFuZGwKIAogdm9pZCBXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KFdLUGFnZVJl
ZiBwYWdlUmVmLCBib29sIG1heVN0YXJ0TWVkaWEpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlT
dGFydE1lZGlhKTsKIH0KIAogCi12b2lkIFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbShXS1Bh
Z2VSZWYgcGFnZSwgV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbSkKK3ZvaWQgV0tQYWdlU2VsZWN0
Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0NvbnRleHRNZW51SXRlbVJlZiBp
dGVtKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICB0b0ltcGwocGFnZSktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCh0b0ltcGwoaXRl
bSktPmRhdGEoKSkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoKHRvSW1wbChpdGVtKS0+ZGF0YSgpKSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGl0ZW0pOwog
I2VuZGlmCiB9CkBAIC0yODIxLDggKzI5MjgsOSBAQCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBX
S1BhZ2VHZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJu
IGtXS1Njcm9sbFBpbm5pbmdCZWhhdmlvckRvTm90UGluOwogfQogCi12b2lkIFdLUGFnZVNldFNj
cm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSwgV0tTY3JvbGxQaW5uaW5nQmVoYXZp
b3IgcGlubmluZykKK3ZvaWQgV0tQYWdlU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBTY3JvbGxQaW5uaW5nQmVoYXZpb3IgY29yZVBpbm5pbmcgPSBT
Y3JvbGxQaW5uaW5nQmVoYXZpb3I6OkRvTm90UGluOwogCiAgICAgc3dpdGNoIChwaW5uaW5nKSB7
CkBAIC0yODM5LDcgKzI5NDcsNyBAQCB2b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cihXS1BhZ2VSZWYgcGFnZSwgV0tTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IoY29yZVBpbm5pbmcpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKGNvcmVQaW5uaW5nKTsKIH0KIAogYm9vbCBXS1BhZ2VH
ZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjg0Nyw5ICsyOTU1LDEwIEBA
IGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1
cm4gdG9JbXBsKHBhZ2UpLT5hZGRzVmlzaXRlZExpbmtzKCk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBhZGRzVmlzaXRlZExpbmtzKQor
dm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGFk
ZHNWaXNpdGVkTGlua3MpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRBZGRzVmlzaXRlZExpbmtz
KGFkZHNWaXNpdGVkTGlua3MpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CiB9CiAKIGJv
b2wgV0tQYWdlSXNQbGF5aW5nQXVkaW8oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yODg0LDIwICsyOTkz
LDIzIEBAIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQog
CiB2b2lkIFdLUGFnZUNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKFdLUGFnZVJlZiBwYWdlUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFy
V2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQgV0tQYWdlQ2FsbEFmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdl
UG9zdFByZXNlbnRhdGlvblVwZGF0ZUZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVM
aW1pdHMoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpCit2
b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKFdLUGFnZVJlZiBwYWdlUmVm
LCBib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKLSAgICB0b0ltcGwocGFnZSktPnNldEZv
cmNlQWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9y
dFNjYWxlTGltaXRzKTsKICNlbmRpZgogfQogCkBAIC0yOTA3LDkzICszMDE5LDEwNSBAQCBQcm9j
ZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2UpCiB9CiAKICNp
ZmRlZiBfX0JMT0NLU19fCi12b2lkIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihXS1Bh
Z2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2NrKQordm9p
ZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
ZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHRvSW1wbChwYWdl
KS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgeworICAgIHRvSW1wbChwYWdlUmVmKS0+
Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgewogICAgICAgICBibG9jaygpOwogICAgIH0p
OwogI2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgYmxvY2soKTsKICNlbmRp
ZiAvLyBub3QgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogfQogI2VuZGlmCiAKLXZvaWQg
V0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VE
dW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQordm9pZCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kdW1w
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KSB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFtj
YWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkgewogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKHByaXZhdGVDbGlja01l
YXN1cmVtZW50LmltcGwoKSksIGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdl
Q2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10g
KCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsK
ICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBib29sIHZhbHVlLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
Q29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCB2YWx1ZSwgV0tQYWdlU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKHZhbHVlLCBbY2FsbGJh
Y2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcodmFsdWUsIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAg
IGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlTWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KQordm9pZCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZU1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5tYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxi
YWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAg
ICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFn
ZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTaW11bGF0
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChb
Y2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFj
a0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJl
ZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlV
UkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3Zv
aWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRl
c3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMKFVSTCgp
LCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAg
ICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVS
TFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZv
clRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAg
IHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVS
TEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0
LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAg
IH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25SZXBvcnRVUkxzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291cmNlVVJM
LCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJl
ZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS1BhZ2VTZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgdG9XVEZTdHJpbmcoc291cmNlVVJMKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoZGVz
dGluYXRpb25VUkwpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0
cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhkZXN0aW5hdGlvblVSTCkp
LCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxs
YmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJr
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VN
YXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5tYXJr
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tDb250
ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPm1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxi
YWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdW5saW5rYWJs
ZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBX
S1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFn
ZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdL
U3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tTdHJpbmdSZWYga2V5SUQsIFdLUGFnZVNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyh0b1dURlN0cmluZyh1bmxpbmthYmxlVG9rZW4pLCB0b1dURlN0cmluZyhz
ZWNyZXRUb2tlbiksIHRvV1RGU3RyaW5nKHNpZ25hdHVyZSksIHRvV1RGU3RyaW5nKGtleUlEKSwg
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nKHRvV1RGU3RyaW5nKHVubGlua2FibGVUb2tlbiksIHRvV1RGU3RyaW5nKHNlY3JldFRva2Vu
KSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJlKSwgdG9XVEZTdHJpbmcoa2V5SUQpLCBbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQp
OwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1Bh
Z2VSZWYgcGFnZSwgdWludDY0X3Qgb3JpZW50YXRpb24pCit2b2lkIFdLUGFnZVNldE1vY2tDYW1l
cmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qgb3JpZW50YXRpb24pCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlKS0+c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNh
cHR1cmUob3JpZW50YXRpb24pOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0T3JpZW50YXRpb25G
b3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOwogI2VuZGlmCiB9CiAKQEAgLTMwMDYsMzYgKzMx
MzAsNDAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlckVuYWJsZWQoV0tQYWdlUmVmKQogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlTG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1Bh
Z2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUxvYWRl
ZFN1YnJlc291cmNlRG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5nZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
JiBkb21haW5zKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mJiBkb21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlE
b21haW5zID0gV1RGOjptYXAoZG9tYWlucywgW10oYXV0byYgZG9tYWluKSB7CiAgICAgICAgICAg
ICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0cmluZzo6Y3JlYXRlKFdURk1vdmUo
ZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAgICAgICAgY2FsbGJhY2sodG9BUEko
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpLnB0cigpKSwgY2FsbGJhY2tD
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVO
VVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBjYWxsYmFjayhudWxscHRyLCBjYWxsYmFja0NvbnRl
eHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21h
aW5zKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
KyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VTZXRN
ZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIGRvdWJs
ZSBkZWxheSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0
aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgZGVsYXkpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzKGRlbGF5KSk7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVkaWFDYXB0dXJlUmVw
b3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxheSkpOwogfQogCi12b2lkIFdLUGFnZURpc3BhdGNoQWN0
aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURp
c3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
Ci0gICAgdG9JbXBsKHBhZ2UpLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5n
KCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlzcGF0
Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMmI2YzZmOGVjYmIxZTUwZTIx
MTdkMjZmMWMwODJiY2EwOGEyZDI2Yy4uYzk4MzJhZGU1ZWMyYzVjZDAyMDgwNGVkMDE2ZDZmN2Jl
N2E0MGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xOTksNiArMTk5LDkgQEAgc3RhdGljIGNvbnN0IEJPT0wgZGVmYXVsdEZhc3RD
bGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmaXJzdFNES1ZlcnNp
b25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0gMHhBMDAwMDsKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogCisjZGVmaW5lIFRIUk9XX0lGX1NVU1BFTkRFRCBpZiAoX3Bh
Z2UgJiYgX3BhZ2UtPmlzU3VzcGVuZGVkKCkpIFwKKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmlldyBpcyBz
dXNwZW5kZWQiXQorCiBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRh
aWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgYXV0
byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CkBAIC03MTgsMTEgKzcyMSwxMyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZToo
aWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KSk7
CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlVVJMOihOU1VSTCAqKVVSTCBhbGxvd2lu
Z1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNzVVJMCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIGlmICghW1VSTCBpc0ZpbGVVUkxdKQogICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJUAgaXMgbm90IGEg
ZmlsZSBVUkwiLCBVUkxdOwogCkBAIC03MzQsNiArNzM5LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
bG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAq
KXJlYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKIAogICAgIHJldHVybiBbc2VsZiBsb2FkRGF0YTpkYXRhIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6QCJVVEYtOCIgYmFzZVVSTDpiYXNlVVJM
XTsKQEAgLTc0MSwxMSArNzQ3LDEzIEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIAogLSAoV0tOYXZp
Z2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlN
RVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5n
TmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVy
RW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKSk7CiB9CiAKIC0gKHZvaWQpc3Rh
cnREb3dubG9hZFVzaW5nUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVzdCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8qIGRvd25sb2FkKSB7CiAgICAgICAgIGlmIChkb3dubG9hZCkKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKQEAgLTc1Niw2ICs3NjQsNyBAQCAtICh2
b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaQogCiAtICh2b2lkKXJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3du
bG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKICAgICBbdW5hcmNo
aXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlz
ZUV4Y2VwdGlvbl07CiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIg
ZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5
IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xh
c3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10s
IG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CkBAIC03ODIsNiAr
NzkxLDcgQEAgLSAodm9pZClyZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2kKIAogLSAoV0tOYXZpZ2F0aW9uICopZ29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNr
Rm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkpOwogfQogCkBAIC04NDAsNiArODUwLDcgQEAgLSAoQk9P
TCljYW5Hb0ZvcndhcmQKIAogLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIGlmIChzZWxmLl9zYWZlQnJvd3NpbmdXYXJuaW5nKQogICAgICAg
ICByZXR1cm4gW3NlbGYgcmVsb2FkXTsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29CYWNr
KCkpOwpAQCAtODQ3LDExICs4NTgsMTMgQEAgLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiAKIC0g
KFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29Gb3J3YXJkKCkpOwogfQogCiAtIChXS05hdmlnYXRp
b24gKilyZWxvYWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgT3B0aW9uU2V0PFdl
YkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAobGlua2VkT25PckFm
dGVyKFdlYkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVoYXZp
b3IpKQogICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4
cGlyZWRPbmx5KTsKQEAgLTg2MSwyNiArODc0LDMxIEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9h
ZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVs
b2FkT3B0aW9uOjpGcm9tT3JpZ2luKSk7CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0b3BMb2FkaW5nKCk7CiB9CiAKIC0g
KHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3Jp
cHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwg
d2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpuaWwgaW5Xb3Js
ZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOwogfQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZh
U2NyaXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6
KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNB
c3luY0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNl
VXNlckdlc3R1cmU6WUVTIGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKWNhbGxBc3luY0ph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhcmd1bWVudHM6KE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5GcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNj
cmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpu
aWwgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpm
cmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CiB9CiAKQEAgLTkyMCw2ICs5MzgsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3Vt
ZW50KGlkIGFyZ3VtZW50KQogCiAtICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTkzNiw2ICs5NTUsNyBAQCAtICh2b2lkKWNs
b3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aQogCiAtICh2b2lkKXBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBf
cGFnZS0+cGF1c2VBbGxNZWRpYVBsYXliYWNrKFtdIHsgfSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTk0Niw2ICs5NjYsNyBAQCAtICh2b2lkKXBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbgogCiAtICh2b2lkKXNldEFs
bE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6KEJPT0wpc3VzcGVuZGVkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdIHsgfTsKIApAQCAtOTc2LDYgKzk5Nyw3IEBAIHN0YXRpYyBXS01lZGlhUGxheWJh
Y2tTdGF0ZSB0b1dLTWVkaWFQbGF5YmFja1N0YXRlKFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRl
IG1lCiAKIC0gKHZvaWQpcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tNZWRpYVBsYXliYWNrU3RhdGUpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTAwNiw2ICsxMDI4LDcgQEAgLSAoV0tNZWRpYUNhcHR1cmVT
dGF0ZSltaWNyb3Bob25lQ2FwdHVyZVN0YXRlCiAKIC0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1
cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH07CiAKQEAgLTEwMjcsNiArMTA1MCw3IEBAIC0gKHZvaWQpc2V0TWljcm9waG9uZUNh
cHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoo
CiAKIC0gKHZvaWQpc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0
YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKIApAQCAtMTA0OCw2ICsxMDcyLDcg
QEAgLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3Rh
dGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5
bmNGdW5jdGlvbiB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1
cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGlu
V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHld
KTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVu
dHNNYXA7CkBAIC0xMTA5LDYgKzExMzQsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6
KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYQogCiAt
ICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJh
dGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShD
b2NvYUltYWdlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgY29uc3RleHByIGJvb2wgc25hcHNob3RGYWlsZWRUcmFjZVZhbHVl
ID0gZmFsc2U7CiAgICAgdHJhY2VQb2ludChUYWtlU25hcHNob3RTdGFydCk7CiAKQEAgLTExODIs
NiArMTIwOCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25h
cHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAKIC0gKHZvaWQpc2V0QWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uR2VzdHVyZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIF9pbXBsLT5zZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyhh
bGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyk7CiAjZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMTIyMCw2ICsxMjQ3LDcgQEAgLSAoTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdl
bnQKIAogLSAodm9pZClzZXRDdXN0b21Vc2VyQWdlbnQ6KE5TU3RyaW5nICopY3VzdG9tVXNlckFn
ZW50CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRDdXN0b21Vc2Vy
QWdlbnQoY3VzdG9tVXNlckFnZW50KTsKIH0KIApAQCAtMTIzNCw2ICsxMjYyLDcgQEAgLSAoQk9P
TClhbGxvd3NMaW5rUHJldmlldwogCiAtICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09M
KWFsbG93c0xpbmtQcmV2aWV3CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBfaW1wbC0+c2V0QWxsb3dzTGlua1ByZXZpZXcoYWxsb3dzTGlua1ByZXZp
ZXcpOwogICAgIHJldHVybjsKQEAgLTEyNTUsNiArMTI4NCw3IEBAIC0gKHZvaWQpc2V0QWxsb3dz
TGlua1ByZXZpZXc6KEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKIAogLSAodm9pZClzZXRQYWdlWm9v
bTooQ0dGbG9hdClwYWdlWm9vbQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFn
ZS0+c2V0UGFnZVpvb21GYWN0b3IocGFnZVpvb20pOwogfQogCkBAIC0xMjc5LDYgKzEzMDksNyBA
QCBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tG
aW5kQ29uZmlndXJhdGlvbiAqY29uZmlndQogCiAtICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIHdpdGhDb25maWd1cmF0aW9uOihXS0ZpbmRDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQp
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICgh
c3RyaW5nLmxlbmd0aCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tG
aW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSkuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjk2LDYgKzEzMjcsNyBAQCArIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6
KE5TU3RyaW5nICopdXJsU2NoZW1lCiAKIC0gKHZvaWQpc2V0TWVkaWFUeXBlOihOU1N0cmluZyAq
KW1lZGlhU3R5bGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldE92
ZXJyaWRkZW5NZWRpYVR5cGUobWVkaWFTdHlsZSk7CiB9CiAKQEAgLTEzMTEsNiArMTM0Myw3IEBA
IC0gKGlkKWludGVyYWN0aW9uU3RhdGUKIAogLSAodm9pZClzZXRJbnRlcmFjdGlvblN0YXRlOihp
ZClpbnRlcmFjdGlvblN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICgh
WyhpZClpbnRlcmFjdGlvblN0YXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEzMzUsNiArMTM2OCw3IEBAIC0gKFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcKIAogLSAodm9pZClzZXRBbGxvd3NNYWduaWZpY2F0aW9uOihCT09MKWFsbG93c01h
Z25pZmljYXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwtPnNldEFs
bG93c01hZ25pZmljYXRpb24oYWxsb3dzTWFnbmlmaWNhdGlvbik7CiB9CiAKQEAgLTEzNDUsMTEg
KzEzNzksMTMgQEAgLSAoQk9PTClhbGxvd3NNYWduaWZpY2F0aW9uCiAKIC0gKHZvaWQpc2V0TWFn
bmlmaWNhdGlvbjooZG91YmxlKW1hZ25pZmljYXRpb24gY2VudGVyZWRBdFBvaW50OihOU1BvaW50
KXBvaW50CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9pbXBsLT5zZXRNYWduaWZp
Y2F0aW9uKG1hZ25pZmljYXRpb24sIE5TUG9pbnRUb0NHUG9pbnQocG9pbnQpKTsKIH0KIAogLSAo
dm9pZClzZXRNYWduaWZpY2F0aW9uOihkb3VibGUpbWFnbmlmaWNhdGlvbgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0TWFnbmlmaWNhdGlvbihtYWduaWZpY2F0aW9u
KTsKIH0KIApAQCAtMTM2MCw2ICsxMzk2LDcgQEAgLSAoZG91YmxlKW1hZ25pZmljYXRpb24KIAog
LSAoTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzooTlNQcmlu
dEluZm8gKilwcmludEluZm8KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKGF1
dG8gd2ViRnJhbWVQcm94eSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIF9p
bXBsLT5wcmludE9wZXJhdGlvbldpdGhQcmludEluZm8ocHJpbnRJbmZvLCAqd2ViRnJhbWVQcm94
eSk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTE1MjcsNiArMTU2NCw3IEBAIC0gKE9wdGlvbmFsPEJP
T0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5n
CiAKIC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246KFdLUERGQ29uZmlndXJhdGlv
biAqKXBkZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAq
cGRmRG9jdW1lbnREYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQ7CiAgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAg
ICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFtZUlEKCk7CkBAIC0xNTUyLDYgKzE1OTAsNyBAQCAt
ICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihXS1BERkNvbmZpZ3VyYXRpb24gKilw
ZGZDb25maWd1cmF0aW9uIGNvbXBsZQogCiAtICh2b2lkKWNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsKQEAgLTE2
MzMsMTcgKzE2NzIsMjAgQEAgLSAodm9pZClfZGlkQ2hhbmdlRWRpdG9yU3RhdGUKIAogLSAoV0tO
YXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
cmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSByZXNwb25zZURhdGE6KE5TRGF0YSAq
KWRhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3Bh
Z2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNlLCB7IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSkpOwogfQogCiAvLyBG
SVhNRSgyMjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNlIGFkb3B0ZXJzIGhhdmUgbW92ZWQgdG8gdGhl
IGZpbmFsIEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNl
IHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICByZXR1cm4gW3NlbGYgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpy
ZXNwb25zZSByZXNwb25zZURhdGE6ZGF0YV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRT
aW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgTlNE
YXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z107CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDpyZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOnN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpAIlVURi04Il0pOwogCkBA
IC0xNjUzLDExICsxNjk1LDEzIEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluCiAvLyBGSVhNRSgy
MjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNlIGFkb3B0ZXJzIGhhdmUgbW92ZWQgdG8gdGhlIGZpbmFs
IEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVk
UmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluZzpzdHJpbmddOwogfQogCiAtIChXS05h
dmlnYXRpb24gKilsb2FkRmlsZVJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgYWxsb3dp
bmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBhdXRvIFVSTCA9IHJlcXVlc3QuVVJMOwogCiAgICAgaWYgKCFbVVJM
IGlzRmlsZVVSTF0pCkBAIC0xNjg3LDcgKzE3MzEsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3IChXS1ByaXZhdGUpCiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNkZWZpbmUgV0VCQ09SRV9Q
UklWQVRFX0NPTU1BTkQoY29tbWFuZCkgLSAodm9pZClfIyNjb21tYW5kOihpZClzZW5kZXIgeyBf
cGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfQorI2RlZmluZSBXRUJD
T1JFX1BSSVZBVEVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRl
ciB7IFRIUk9XX0lGX1NVU1BFTkRFRDsgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgjY29tbWFu
ZCAjIyBfcyk7IH0KIAogV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25DZW50ZXIpCiBXRUJD
T1JFX1BSSVZBVEVfQ09NTUFORChhbGlnbkp1c3RpZmllZCkKQEAgLTE3MDYsMjEgKzE3NTAsMjUg
QEAgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQocGFzdGVBbmRNYXRjaFN0eWxlKQogCiAtICh2b2lk
KV90b2dnbGVTdHJpa2VUaHJvdWdoOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgic3RyaWtldGhyb3VnaCJfcyk7CiB9
CiAKIC0gKHZvaWQpX2luY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmluY3JlYXNlTGlzdExldmVsKCk7CiB9CiAKIC0gKHZv
aWQpX2RlY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPmRlY3JlYXNlTGlzdExldmVsKCk7CiB9CiAKIC0gKHZvaWQpX2NoYW5n
ZUxpc3RUeXBlOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3Bh
Z2UtPmNoYW5nZUxpc3RUeXBlKCk7CiB9CiAKQEAgLTE3NzIsNiArMTgyMCw3IEBAIC0gKENHU2l6
ZSlfdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cwogCiAtICh2b2lkKV9zZXRWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOihDR1NpemUpdmlld3BvcnRTaXplCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gdmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cyA9
IFdlYkNvcmU6OkludFNpemUodmlld3BvcnRTaXplKTsKICAgICBpZiAodmlld3BvcnRTaXplRm9y
Vmlld3BvcnRVbml0cy5pc0VtcHR5KCkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJWaWV3cG9ydCBzaXplIHNob3VsZCBub3Qg
YmUgZW1wdHkiXTsKQEAgLTE3OTMsNiArMTg0Miw3IEBAIC0gKF9XS0luc3BlY3RvciAqKV9pbnNw
ZWN0b3IKIAogLSAodm9pZClfZGlkRW5hYmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEVG9OYW1lTWFwCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHRyYW5zZm9y
bWVkOwogICAgIHRyYW5zZm9ybWVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXh0ZW5zaW9uSURU
b05hbWVNYXAuY291bnQpOwogICAgIFtleHRlbnNpb25JRFRvTmFtZU1hcCBlbnVtZXJhdGVLZXlz
QW5kT2JqZWN0c1VzaW5nQmxvY2s6WyZdKE5TU3RyaW5nICpleHRlbnNpb25JRCwgTlNTdHJpbmcg
KmV4dGVuc2lvbk5hbWUsIEJPT0wgKikgewpAQCAtMTgwMyw2ICsxODUzLDcgQEAgLSAodm9pZClf
ZGlkRW5hYmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0
cmluZyAqPiAqKWV4dGUKIAogLSAodm9pZClfZGlkRGlzYWJsZUJyb3dzZXJFeHRlbnNpb25zOihO
U1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBIYXNoU2V0PFN0cmluZz4gdHJhbnNmb3JtZWQ7CiAgICAgdHJhbnNmb3JtZWQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25JRHMuY291bnQpOwogICAgIGZvciAoTlNTdHJp
bmcgKmV4dGVuc2lvbklEIGluIGV4dGVuc2lvbklEcykKQEAgLTE4NTEsNiArMTkwMiw3IEBAIC0g
KEJPT0wpX2lzRWRpdGFibGUKIAogLSAodm9pZClfc2V0RWRpdGFibGU6KEJPT0wpZWRpdGFibGUK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYm9vbCB3YXNFZGl0YWJsZSA9IF9wYWdl
LT5pc0VkaXRhYmxlKCk7CiAgICAgX3BhZ2UtPnNldEVkaXRhYmxlKGVkaXRhYmxlKTsKICNpZiBQ
TEFURk9STShNQUMpCkBAIC0xODY4LDYgKzE5MjAsNyBAQCAtICh2b2lkKV9zZXRFZGl0YWJsZToo
Qk9PTCllZGl0YWJsZQogCiAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICop
Y29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2b2lkIChe
KShCT09MKSljb21wbGV0aW9uCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdl
LT5leGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQsIFtjYXB0dXJlZENvbXBsZXRp
b25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0gewogICAgICAgICBpZiAoY2FwdHVy
ZWRDb21wbGV0aW9uQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhZ
RVMpOwpAQCAtMTkwMyw2ICsxOTU2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+PiBjcmVhdGVVc2VySW5mbyhjb25zdCBPcHRpb25hbDxXZWIKIAogLSAo
dm9pZClfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOihfV0tUZXh0TWFu
aXB1bGF0aW9uQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbjoodm9pZChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHVz
aW5nIEV4Y2x1c2lvblJ1bGUgPSBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
RXhjbHVzaW9uUnVsZTsKIAogICAgIGlmICghX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSB8fCAh
X3BhZ2UpIHsKQEAgLTE5NjcsNiArMjAyMSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5JZGVudGlmaWVyIGNvcmVUZXh0TWFuaXB1bGF0aW9uCiAK
IC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW0gKilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIV9wYWdlKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyNCw2
ICsyMDc5LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25F
cnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXQKIAogLSAodm9pZClfY29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
Kj4gKilpdGVtcyBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3Jz
KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAo
IV9wYWdlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VGYWlsdXJlU2V0Rm9yQWxs
VGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0ZW1zKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIwNTEsNiArMjEwNyw3IEBAIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0
ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopCiAKIC0gKHZvaWQpX3Rh
a2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBbc2VsZiBfdGFrZUZpbmRTdHJpbmdGcm9t
U2VsZWN0aW9uSW50ZXJuYWw6c2VuZGVyXTsKICNlbHNlCkBAIC0yMTA1LDYgKzIxNjIsNyBAQCAt
ICh2b2lkKV9zZXRIaXN0b3J5RGVsZWdhdGU6KGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+
KWhpc3RvcnlEZWxlZ2F0ZQogCiAtICh2b2lkKV91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEhBVkUoVE9VQ0hfQkFSKSAm
JiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgX2ltcGwtPnVwZGF0
ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKICNlbmRpZgpAQCAtMjEzMCw2ICsyMTg4
LDcgQEAgLSAoQk9PTClfaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlCiAKIC0gKHZvaWQpX3RvZ2ds
ZVBpY3R1cmVJblBpY3R1cmUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgSEFWRShU
T1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBf
aW1wbC0+dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpOwogI2VuZGlmCkBAIC0yMTQyLDI2ICsyMjAx
LDMxIEBAIC0gKF9XS01lZGlhTXV0ZWRTdGF0ZSlfbWVkaWFNdXRlZFN0YXRlCiAKIC0gKHZvaWQp
X2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIFtzZWxmIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVy
Om5pbF07CiB9CiAKIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1cmUKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW9WaWRlbyk7CiB9CiAKIC0gKHZvaWQpX3N0b3BB
bGxNZWRpYVBsYXliYWNrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHBh
dXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCiAtICh2
b2lkKV9zdXNwZW5kQWxsTWVkaWFQbGF5YmFjawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBbc2VsZiBzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOllFUyBjb21wbGV0aW9uSGFu
ZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5k
ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApAQCAtMjE3OCw2ICsyMjQyLDcgQEAg
c3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4KIAogLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNo
YXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAKQEAgLTIxOTIsNiArMjI1Nyw3IEBAIC0gKHZvaWQpX3Jl
c3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMKIAogLSAo
dm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQog
ICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwogICAgIApAQCAt
MjIwNCw2ICsyMjcwLDcgQEAgLSAodm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0
OihOU0RhdGEgKiloaWdobGlnaHQKIAogLSAodm9pZClfYWRkQXBwSGlnaGxpZ2h0CiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBfcGFn
ZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpObywgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDo6WWVzKTsKICNlbmRpZgpAQCAtMjIyMywyMyArMjI5MCwyNyBAQCAtIChOU1VSTCAqKV9t
YWluRnJhbWVVUkwKIAogLSAodm9pZClfbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNV
UkwgKil1bnJlYWNoYWJsZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBOU0Rh
dGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKICAgICBfcGFnZS0+bG9hZEFsdGVybmF0ZUhUTUwoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sICJVVEYtOCJfcywgYmFzZVVSTCwgdW5y
ZWFjaGFibGVVUkwpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5TRGF0YSAq
KWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1l
OihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VV
UkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29k
aW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6
OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6KEJP
T0wpc2hvdWxkT3BlbkV4dGVybmFsVVJMcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeSA9IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHMgPyBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5QWxsb3cgOiBfV0tTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Tm90QWxsb3c7CiAgICAgcmV0dXJuIFtzZWxmIF9sb2Fk
UmVxdWVzdDpyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6cG9saWN5XTsKIH0K
IAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6KF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeQogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeTsK
ICAgICBzd2l0Y2ggKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIHsKICAgICBjYXNlIF9X
S1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lOb3RBbGxvdzoKQEAgLTIyNTcsMjQgKzIzMjgs
MjggQEAgLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2wKIAogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb0Fz
c2V0U2VydmljZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlKQog
ICAgICAgICBfcGFnZS0+Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKTsKIH0KIAogLSAodm9p
ZClfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPnJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcygpOwogfQogCiAtICh2b2lkKV9zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2Vy
Rm9udFJlZ2lzdHJ5CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkK
ICAgICAgICAgX3BhZ2UtPnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVn
aXN0cnkoKTsKIH0KIAogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICog
Y29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW3JlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbiks
IGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8mJiBhcHBCb3VuZERhdGEpIG11dGFibGUgewogICAgICAgICBpZiAoIWFwcEJvdW5kRGF0YS5j
b250ZXh0RGF0YS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7CkBAIC0yMjg1LDYgKzIzNjAsMjggQEAgLSAodm9pZClfYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlv
bkhhbmRsZXI6KHYKICAgICB9KTsKIH0KIAorLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFfcGFnZSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2Ut
PnN1c3BlbmQoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3Mp
OworICAgIH0pOworfQorCistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5yZXN1bWUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBz
dWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOwor
fQorCiAtIChOU0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KIHsKICAgICBpZiAoV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCkBAIC0yMzE4LDYg
KzI0MTUsNyBAQCAtIChOU1N0cmluZyAqKV9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKIAog
LSAodm9pZClfc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OihOU1N0cmluZyAqKWFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCk7CiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdl
bnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKIH0KQEAgLTIzNzAsNiArMjQ2OCw3IEBA
IC0gKEJPT0wpX3dlYlByb2Nlc3NJc1Jlc3BvbnNpdmUKIAogLSAodm9pZClfa2lsbFdlYkNvbnRl
bnRQcm9jZXNzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghW3NlbGYgX2lz
VmFsaWRdKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzNzgsMTYgKzI0NzcsMTkgQEAgLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRo
b3V0Q29udGVudEJsb2NrZXJzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVy
biB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRFeHBpcmVkT25s
eQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKTsKIH0KIAogLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBSZWY8V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk+IHByb3RlY3RlZFByb2Nl
c3NQcm94eShfcGFnZS0+cHJvY2VzcygpKTsKICAgICBwcm90ZWN0ZWRQcm9jZXNzUHJveHktPnJl
cXVlc3RUZXJtaW5hdGlvbihXZWJLaXQ6OlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVz
dGVkQnlDbGllbnQpOwogCkBAIC0yMzk5LDYgKzI1MDEsNyBAQCAtICh2b2lkKV9raWxsV2ViQ29u
dGVudFByb2Nlc3NBbmRSZXNldFN0YXRlCiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJh
dGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgUmV0YWluUHRy
PFdLUERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmlndXJhdGlvbjsKICAgICBpZiAoc25hcHNob3RD
b25maWd1cmF0aW9uKSB7CiAgICAgICAgIHBkZkNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tQ
REZDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNDEwLDYgKzI1MTMsNyBAQCAtICh2
b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24gKilzbmFwc2hvdENvbgogCiAtICh2b2lkKV9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFt
ZTooX1dLRnJhbWVIYW5kbGUgKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShDR1Np
emUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5nZXRQREZGaXJzdFBhZ2VTaXplKGZyYW1lLT5fZnJhbWVIYW5kbGUtPmZyYW1lSUQoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oV2Vi
Q29yZTo6RmxvYXRTaXplIHNpemUpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Q0dTaXplPihzaXplKSk7CiAgICAgfSk7CkBAIC0yNDQwLDYgKzI1NDQsNyBAQCAtIChf
V0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtICppdAogCiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURh
dGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0
YXRlIGRlY29kZXIuCiAgICAgV2ViS2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogICAg
IGlmICghV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNlc3Npb25TdGF0ZURhdGEuYnl0ZXMpLCBzZXNzaW9uU3RhdGVEYXRhLmxlbmd0
aCwgc2Vzc2lvblN0YXRlKSkKQEAgLTI0NTAsNiArMjU1NSw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YQogCiAtIChXS05h
dmlnYXRpb24gKilfcmVzdG9yZVNlc3Npb25TdGF0ZTooX1dLU2Vzc2lvblN0YXRlICopc2Vzc2lv
blN0YXRlIGFuZE5hdmlnYXRlOihCT09MKW5hdmlnYXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShz
ZXNzaW9uU3RhdGUgPyBzZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUgOiBXZWJLaXQ6OlNlc3Np
b25TdGF0ZSB7IH0sIG5hdmlnYXRlKSk7CiB9CiAKQEAgLTI0NjAsNiArMjU2Niw3IEBAIC0gKHZv
aWQpX2Nsb3NlCiAKIC0gKEJPT0wpX3RyeUNsb3NlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIHJldHVybiBfcGFnZS0+dHJ5Q2xvc2UoKTsKIH0KIApAQCAtMjQ3MCw2ICsyNTc3LDcg
QEAgLSAoQk9PTClfaXNDbG9zZWQKIAogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmlu
ZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVu
dERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2Vz
cykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgVU5V
U0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKICAg
ICBpZiAoZmlsZW5hbWUpCkBAIC0yNDc5LDEyICsyNTg3LDE0IEBAIC0gKF9XS0F0dGFjaG1lbnQg
KilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250
ZW50VHlwCiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3Jh
cHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAq
KWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlv
bnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAg
ICByZXR1cm4gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBw
ZXIgY29udGVudFR5cGU6Y29udGVudFR5cGUgY29tcGxldGlvbjpjb21wbGV0aW9uSGFuZGxlcl07
CiB9CiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNv
bnRlbnRUeXBlIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlm
aWVyLCAqX3BhZ2UpOwpAQCAtMjUwNCw2ICsyNjE0LDcgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9p
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBw
ZXIKIAogLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IF9wYWdlLT5hdHRh
Y2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXIo
YXR0YWNobWVudCk7CkBAIC0yNTEzLDYgKzI2MjQsNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0
dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAogLSAodm9pZClf
c2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZVdpdGhBbHBoYTooZG91YmxlKWFscGhhIGJl
dGE6KGRvdWJsZSliZXRhIGdhbW1hOihkb3VibGUpZ2FtbWEKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEs
IGJldGEsIGdhbW1hKTsKIH0KIApAQCAtMjUyOCw2ICsyNjQwLDcgQEAgKyAoQk9PTClfd2lsbFVw
Z3JhZGVUb0hUVFBTOihOU1VSTCAqKXVybAogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2Fy
bmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5p
bmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBbc2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRs
ZTp0aXRsZSB3YXJuaW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRp
b25IYW5kbGVyOl4oQk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAg
ICAgQVNTRVJUKCF1cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2Fm
ZUxvYWQpOwpAQCAtMjUzNiw2ICsyNjQ5LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dh
cm5pbmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKikKIAog
LSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRs
ZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczoo
TlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBb
c2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTp0aXRsZSB3YXJu
aW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOl4o
Qk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAgICAgQVNTRVJUKCF1
cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2FmZUxvYWQpOwpAQCAt
MjU0NCw2ICsyNjU4LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJM
OihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXIKIAogLSAodm9pZClfc2hv
d1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcg
Kil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczooTlNB
dHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09M
LCBOU1VSTCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBhdXRvIHNhZmVCcm93c2luZ1dhcm5pbmcgPSBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5p
bmc6OmNyZWF0ZSh1cmwsIHRpdGxlLCB3YXJuaW5nLCBkZXRhaWxzKTsKICAgICBhdXRvIHdyYXBw
ZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSAoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmIHZhcmlhbnQpIHsK
ICAgICAgICAgc3dpdGNoT24odmFyaWFudCwgWyZdIChXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9h
ZCBjb250aW51ZVVuc2FmZUxvYWQpIHsKQEAgLTI1NzYsNiArMjY5MSw3IEBAICsgKE5TVVJMICop
X3Zpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsCiAKIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBfcGFnZS0+aXNKSVRFbmFibGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CkBAIC0yNTgzLDExICsyNjk5LDEzIEBAIC0gKHZv
aWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2
b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2
YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3
aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOk5PIGlu
RnJhbWU6bmlsIGluV29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfY2FsbEFzeW5jSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250
ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6ZnVuY3Rp
b25Cb2R5IGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50
czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAg
LTI2MTIsMTEgKzI3MzAsMTMgQEAgLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2Vk
CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVu
dFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhTb3VyY2VVUkw6KE5TVVJMICop
dXJsIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVu
dFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDp1cmwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTI2MjYsNiArMjc0Niw3IEBAIC0g
KHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0
ZVBvbGljaWVzCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgaWYgKHdlYnBhZ2VQcmVmZXJlbmNlcy5fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IlVwZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4iXTsKICAgICBpZiAod2VicGFnZVByZWZlcmVu
Y2VzLl91c2VyQ29udGVudENvbnRyb2xsZXIpCkBAIC0yNjM2LDExICsyNzU3LDEzIEBAIC0gKHZv
aWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJw
YWdlUHJlZmVyZW5jZXMKIAogLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPm5vdGlmeVVzZXJTY3JpcHRzKCk7CiB9CiAKIC0g
KEJPT0wpX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24KIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9wYWdlLT51c2VyU2NyaXB0c05lZWROb3RpZmlj
YXRpb24oKTsKIH0KIApAQCAtMjY1NSw2ICsyNzc4LDcgQEAgLSAoQk9PTClfYWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbgogCiAtICh2b2lkKV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09MKWFs
bG93CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQogICAgIF9wYWdlLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsKICNlbmRp
ZgpAQCAtMjY3MSw2ICsyNzk1LDcgQEAgLSAoTlNTdHJpbmcgKilfcmVtb3RlSW5zcGVjdGlvbk5h
bWVPdmVycmlkZQogCiAtICh2b2lkKV9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOihO
U1N0cmluZyAqKW5hbWUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJp
ZGUobmFtZSk7CiAjZW5kaWYKQEAgLTI2ODMsNiArMjgwOCw3IEBAIC0gKEJPT0wpX2FkZHNWaXNp
dGVkTGlua3MKIAogLSAodm9pZClfc2V0QWRkc1Zpc2l0ZWRMaW5rczooQk9PTClhZGRzVmlzaXRl
ZExpbmtzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRBZGRzVmlz
aXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOwogfQogCkBAIC0yNzMwLDYgKzI4NTYsNyBAQCAt
ICh2b2lkKV9zZXRPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOihfV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50cylvYnNlcnZlZAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsK
QEAgLTI3MzcsMTEgKzI4NjQsMTMgQEAgLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikKIAogLSAodm9p
ZClfZ2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0
YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dp
dGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0
Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFt
ZXM6Ok5vLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFN0cmlu
ZyBzdHJpbmcpIHsKICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CiAgICAgfSk7CkBAIC0y
NzQ5LDYgKzI4NzgsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yCiAKIC0gKHZvaWQpX2dldENv
bnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewogICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAg
ICAgfSk7CkBAIC0yNzU2LDYgKzI4ODYsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJh
bWVzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nCiAKIC0g
KHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRl
ZFN0cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4gKiwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVu
dHNBc0F0dHJpYnV0ZWRTdHJpbmcoW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiBhdHRyaWJ1dGVkU3RyaW5nKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVk
U3RyaW5nLnN0cmluZykKICAgICAgICAgICAgIGhhbmRsZXIoYXR0cmlidXRlZFN0cmluZy5zdHJp
bmcuZ2V0KCksIGF0dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpLCBuaWwp
OwpAQCAtMjc2Niw2ICsyODk3LDcgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRT
dHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXR0cmlidXQKIAogLSAodm9p
ZClfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgX3Bh
Z2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikg
ewpAQCAtMjgwMyw2ICsyOTM1LDcgQEAgLSAoX1dLUGFnaW5hdGlvbk1vZGUpX3BhZ2luYXRpb25N
b2RlCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25Nb2RlOihfV0tQYWdpbmF0aW9uTW9kZSlwYWdp
bmF0aW9uTW9kZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpQYWdp
bmF0aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9kZSkgewogICAgIGNh
c2UgX1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKQEAgLTI4MzQsNiArMjk2Nyw3IEBAIC0g
KEJPT0wpX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMKIAogLSAodm9pZClfc2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnMKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0KIApAQCAtMjg0NCw2ICsyOTc4LDcgQEAgLSAo
Q0dGbG9hdClfcGFnZUxlbmd0aAogCiAtICh2b2lkKV9zZXRQYWdlTGVuZ3RoOihDR0Zsb2F0KXBh
Z2VMZW5ndGgKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2VM
ZW5ndGgocGFnZUxlbmd0aCk7CiB9CiAKQEAgLTI4NTQsNiArMjk4OSw3IEBAIC0gKENHRmxvYXQp
X2dhcEJldHdlZW5QYWdlcwogCiAtICh2b2lkKV9zZXRHYXBCZXR3ZWVuUGFnZXM6KENHRmxvYXQp
Z2FwQmV0d2VlblBhZ2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5z
ZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwQmV0d2VlblBhZ2VzKTsKIH0KIApAQCAtMjg2NCw2ICszMDAw
LDcgQEAgLSAoQk9PTClfcGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZAogCiAtICh2b2lkKV9zZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOihCT09MKWxpbmVHcmlkRW5hYmxlZAogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC0yODg0LDYgKzMwMjEsNyBAQCAtIChkb3VibGUp
X3RleHRab29tRmFjdG9yCiAKIC0gKHZvaWQpX3NldFRleHRab29tRmFjdG9yOihkb3VibGUpem9v
bUZhY3RvcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0VGV4dFpv
b21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKQEAgLTI4OTQsNiArMzAzMiw3IEBAIC0gKGRvdWJs
ZSlfcGFnZVpvb21GYWN0b3IKIAogLSAodm9pZClfc2V0UGFnZVpvb21GYWN0b3I6KGRvdWJsZSl6
b29tRmFjdG9yCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldFBhZ2Va
b29tOnpvb21GYWN0b3JdOwogfQogCkBAIC0yOTU1LDYgKzMwOTQsNyBAQCBzdGF0aWMgaW5saW5l
IE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRp
b25zIHdrRmluZAogCiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3Ry
aW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIp
bWF4Q291bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CiAgICAgICAgIFtfY3VzdG9tQ29u
dGVudFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hlczpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1h
eENvdW50Om1heENvdW50XTsKQEAgLTI5NjYsNiArMzEwNiw3IEBAIC0gKHZvaWQpX2NvdW50U3Ry
aW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0
aW9ucyBtCiAKIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6
KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBXaGlsZSBBcHBLaXQgY29udGFpbnMgbG9naWMgaW4gTlNCYXJUZXh0RmluZGVyIHRvIGF1dG9t
YXRpY2FsbHkgdXBkYXRlIHRoZSBmaW5kIHBhc3RlYm9hcmQKICAgICAvLyB3aGVuIHRoZSBmaW5k
IHN0cmluZyBjaGFuZ2VzLCB0aGlzIChhbG9uZyB3aXRoIHRoZSBmaW5kIHBhc3RlYm9hcmQgaXRz
ZWxmKSBhcmUgYm90aCBtaXNzaW5nCkBAIC0yOTgyLDYgKzMxMjMsNyBAQCAtICh2b2lkKV9maW5k
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OgogCiAtICh2b2lkKV9oaWRlRmluZFVJCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9jdXN0b21Db250ZW50Vmll
dykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9oaWRlRmluZFVJXTsKQEAgLTI5
OTMsNiArMzEzNSw3IEBAIC0gKHZvaWQpX2hpZGVGaW5kVUkKIAogLSAodm9pZClfc2F2ZUJhY2tG
b3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwog
ICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRlbSk7CkBAIC0zMDA2
LDYgKzMxNDksNyBAQCAtICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpAQCAtMzAx
Myw2ICszMTU3LDcgQEAgLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVy
cmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfcHJlY29u
bmVjdFRvU2VydmVyOihOU1VSTCAqKXVybAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfcGFnZS0+cHJlY29ubmVjdFRvKHVybCk7CiB9CiAKQEAgLTMwMjMsNiArMzE2OCw3IEBAIC0g
KEJPT0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiAKIC0gKHZvaWQpX3NldENhblVzZUNyZWRl
bnRpYWxTdG9yYWdlOihCT09MKWNhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShjYW5V
c2VDcmVkZW50aWFsU3RvcmFnZSk7CiB9CiAKQEAgLTMxNjMsNiArMzMwOSw3IEBAIC0gKF9XS0xh
eW91dE1vZGUpX2xheW91dE1vZGUKIAogLSAodm9pZClfc2V0TGF5b3V0TW9kZTooX1dLTGF5b3V0
TW9kZSlsYXlvdXRNb2RlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBXS0xheW91dE1vZGUgd2tWaWV3TGF5b3V0TW9kZTsKICAgICBzd2l0Y2ggKGxh
eW91dE1vZGUpIHsKQEAgLTMxOTMsMTEgKzMzNDAsMTMgQEAgLSAoQ0dTaXplKV9maXhlZExheW91
dFNpemUKIAogLSAodm9pZClfc2V0Rml4ZWRMYXlvdXRTaXplOihDR1NpemUpZml4ZWRMYXlvdXRT
aXplCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRGaXhlZExheW91
dFNpemUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShmaXhlZExh
eW91dFNpemUpKSk7CiB9CiAKIC0gKHZvaWQpX3NldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFn
ZTooQk9PTCliYWNrZ3JvdW5kRXh0ZW5kcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfcGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRz
KTsKIH0KIApAQCAtMzIxNyw2ICszMzY2LDcgQEAgLSAoQ0dGbG9hdClfdmlld1NjYWxlCiAKIC0g
KHZvaWQpX3NldFZpZXdTY2FsZTooQ0dGbG9hdCl2aWV3U2NhbGUKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgaWYgKHZpZXdTY2FsZSA8PSAwIHx8IGlzbmFuKHZpZXdTY2FsZSkgfHwg
aXNpbmYodmlld1NjYWxlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXcgc2NhbGUgc2hvdWxkIGJlIGEgcG9zaXRpdmUg
bnVtYmVyIl07CiAKQEAgLTMyMzcsMTEgKzMzODcsMTMgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAq
PiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIAogLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVybnMKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtlVmVjdG9y
PFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAogLSAodm9pZClfZ2V0UHJvY2Vzc0Rpc3BsYXlOYW1l
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0UHJvY2Vzc0Rp
c3BsYXlOYW1lKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYmIG5hbWUpIHsKICAgICAgICAgaGFuZGxlcihuYW1lKTsKICAgICB9KTsKQEAgLTMyNDksNiAr
MzQwMSw3IEBAIC0gKHZvaWQpX2dldFByb2Nlc3NEaXNwbGF5TmFtZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxlCiAKIC0gKHZvaWQpX3NldE1pbmltdW1F
ZmZlY3RpdmVEZXZpY2VXaWR0aDooQ0dGbG9hdCltaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoX3BhZ2UtPm1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCgpID09IG1pbmltdW1FZmZl
Y3RpdmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI3MSw2ICszNDI0LDcgQEAg
LSAoQ0dGbG9hdClfbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoCiAKIC0gKHZvaWQpX2dyYW50
QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZp
Y2UoKTsKIH0KQEAgLTMyNzksNiArMzQzMyw3IEBAIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVm
ZXJlbmNlU2VydmljZQogCiAtICh2b2lkKV9zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0
aW9uRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChlbmFibGVk
KTsKIH0KIApAQCAtMzMwOSw2ICszNDY0LDcgQEAgLSAoQk9PTClfYWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrCiAKIC0gKHZvaWQpX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQ
bGF5YmFjazooQk9PTClmbGFnCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgX3BhZ2UtPnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQ
bGF5YmFjayhmbGFnKTsKICNlbmRpZgpAQCAtMzM0Nyw2ICszNTAzLDcgQEAgLSAoX1dLTWVkaWFD
YXB0dXJlU3RhdGVEZXByZWNhdGVkKV9tZWRpYUNhcHR1cmVTdGF0ZQogCiAtICh2b2lkKV9zZXRN
ZWRpYUNhcHR1cmVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKQEAg
LTMzNTcsNiArMzUxNCw3IEBAIC0gKEJPT0wpX21lZGlhQ2FwdHVyZUVuYWJsZWQKIAogLSAodm9p
ZClfc2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVkU3RhdGUpbXV0ZWRTdGF0ZQogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRl
RmxhZ3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVkU3RhdGUgJiBfV0tNZWRpYUF1ZGlvTXV0
ZWQpCkBAIC0zMzcxLDYgKzM1MjksNyBAQCAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlh
TXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiAKIC0gKHZvaWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtz
OihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIF9wYWdlLT5yZW1vdmVEYXRhRGV0ZWN0
ZWRMaW5rcyhbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgcGFnZSA9IG1h
a2VXZWFrUHRyKF9wYWdlLmdldCgpKV0gKGF1dG8mIHJlc3VsdCkgewogICAgICAgICBpZiAocGFn
ZSkKQEAgLTMzODYsMTEgKzM1NDUsMTMgQEAgLSAodm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlu
a3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbgogLy8gRXhlY3V0ZSB0aGUgc3VwcGxpZWQg
YmxvY2sgYWZ0ZXIgdGhlIG5leHQgdHJhbnNhY3Rpb24gZnJvbSB0aGUgV2ViUHJvY2Vzcy4KIC0g
KHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfaW50ZXJuYWxE
b0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0Zv
clBhaW50aW5nOk5PIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCiAt
ICh2b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFp
bnRpbmc6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOnVw
ZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6WUVTIHdpdGhvdXRXYWl0aW5nRm9y
QW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5OWQ1OTI1YWE3Nzg4NjI1ZWRh
MTY5ZDg0YjM1ZDA5MTI0OTY5NzNhLi42MzFmMjMwNGRkZTQ1NzY5NDdiYWU4MzNjOTliMWY2NzA5
ZmRiZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKQEAgLTQwOCw2ICs0MDgsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4K
IAogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAorLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhkNjRhMWRkZDc3ZDJm
ODA3YTA2MjdhLi5hMzcwZjM1OGU4NzNjOWI2MDg5NTNiNzI0N2ViMjgzOWIwMzRmYzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNDMsNyArMzE0Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmIGV2ZW50KQogICAgIC8vIElmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZCwgd2hpY2gg
c2hvdWxkIGJlIHRoZSBjYXNlIGR1cmluZyBwYW5uaW5nLCBwaW5jaGluZwogICAgIC8vIGFuZCBh
bmltYXRpb24gb24gdGhlIHBhZ2UgaXRzZWxmIChraW5ldGljIHNjcm9sbGluZywgdGFwIHRvIHpv
b20pIGV0YywgdGhlbgogICAgIC8vIHdlIGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRzIHRv
IHRoZSBwYWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVycy4KLSAgICBpZiAoIW1faXNQYWdlU3Vz
cGVuZGVkKSB7CisgICAgaWYgKCFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAgICAg
ICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpKTsKQEAgLTM1OTEsMjQgKzM1OTEs
NDUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IGN1c3RvbVVzZXJBZ2VudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwg
IW1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9h
cmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNQYWdlU3VzcGVuZGVkKQor
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3Bl
bmRlZCA9IHRydWU7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IHRydWU7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNw
ZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDoiKTsKKyAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZCgpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6Iik7CisKKyAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNU
ZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FICgxMTg4NDApOiBXZSBzaG91bGQg
cHJvYmFibHkgb25seSBzdXBwb3J0IHRoaXMgZm9yIHRleHQgZG9jdW1lbnRzLCBub3QgYWxsIG5v
bi1pbWFnZSBkb2N1bWVudHMuCkBAIC02MDc4LDcgKzYwOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RvcE1lZGlhQ2FwdHVyZShNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kIGtpbmQs
IENvbXBsZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5
YmFja1N0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3Rh
dGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRp
YVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVBsYXliYWNrU3RhdGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNzcxOSw3ICs3NzQwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRy
OwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVu
ZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWI0NTdkZmI2MDMxZWY2Mzlh
ZDNhZTNmY2JmZmZhZTZhNmQ4NTcwMi4uZDUxM2FhYTNiZTI3ZTRhNTE2MzFlYWIxM2ZmYWNhOTJh
ZjFjMGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwNSw2
ICs1MDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3VzcGVuZGVkOyB9CisKICAgICBXZWJJbnNwZWN0b3JVSVByb3h5KiBpbnNwZWN0b3IoKSBj
b25zdDsKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBnZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KIApAQCAtMTAxNCw3ICsxMDE4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAg
ICBTdHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9t
VGV4dEVuY29kaW5nTmFtZTsgfQogCi0gICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWdlU3VzcGVuZGVkOyB9Cisg
ICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0K
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9p
ZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIApAQCAtMjc1Myw3ICsy
NzU3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4g
bV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBib29sIG1faXNQYWdlU3VzcGVuZGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNT
dXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9
OwogCiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwpAQCAtMzAx
NSw2ICszMDE5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlh
bG9nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggZDYyYmFmMjgxYmMyNTBlZDYyZWM3MDY0ZmE2MWNjYjQ5OTk5NWU2ZS4uMTVm
MDUwM2QzZWEzMWNiZWMyZjZiYTZhNzk3Y2Y1NGE5NWFiZjJlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNr
Rm9yd2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0No
cm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTYsNiArMzU5NywzNyBAQCB2b2lkIFdlYlBh
Z2U6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFn
ZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVl
RnJlZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tG
b3J3YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQYWdlKCptX3BhZ2UpOworICAgIEFTU0VS
VChtX2NhY2hlZFBhZ2UpOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKSkKKyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3Bl
bmVkRnJhbWVzKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2Vi
UGFnZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBt
X3BhZ2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3Rk
OjpleGNoYW5nZShtX2NhY2hlZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdl
KTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisKKyAgICBjYWNoZWRQYWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJl
ZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRv
Um9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1Bv
aW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVl
NDQ3M2FkYzRiOTgwZTBkYjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLmZjOTYyMWUzNzJjNWI0MDQy
YjllZGJjYmNmMmUzMjM2NDNhYWVhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2Fw
dHVyZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0x
NjY5LDYgKzE2NzAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgcGVyZm9y
bURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsKQEAgLTIzMTgsNiArMjMyMiw4
IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
czsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDYWNoZWRQYWdlPiBtX2NhY2hlZFBh
Z2U7CisKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIGJvb2wgbV9pcGNUZXN0aW5n
QVBJRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBlMzdhNjU5YzkxYjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4x
YjNhNjgxZmNiNTFmNDEzZTIxYmE0MjU0NDJiOGMwYTFmZDVlMGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1
MCw2ICsyNTAsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFN1c3BlbmRBY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKQogCisgICAgU3VzcGVuZCgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAg
UmVzdW1lKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKwogICAgIENsb3NlKCkKICAgICBUcnlD
bG9zZSgpIC0+IChib29sIHNob3VsZENsb3NlKSBBc3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2E3M2U1MGQ0NmU4OWMwOTYzM2IzZjdi
OWRiMGI3YzAyOGEzYjdlZi4uYTYyODA2ODM3ZWUxODFkYmFhMTIyY2E1ODhlYTgxM2JkMGJkMDU5
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAg
ICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMTAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgT2Jq
QyBBUEkgc2ltaWxhciB0byBXS0J1bmRsZVBhZ2VDb3B5R3JvdXBJZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRjY2MyOWU3M2Mz
YjMuLjlhNzVhMzFjNzBhN2M2OGMyMDA0Nzc3MTBiMzk0MGI3NTYyZjUwMTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNjIsNiArMjYyLDcgQEAKIAkJNDYzRjQ3MjMyNTVCNDlCNjAwRDlF
MENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3Rh
dGUubW0gKi87IH07CiAJCTQ2NDdCMTI2MUVCQTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVy
bWluYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLzsg
fTsKIAkJNDY0Qzc2NEQyMzBERjg1QzAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OworCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZD
N0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8q
IHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovOyB9OwogCQk0NjVFMjgwNzI1NUIyQTZBMDA2
M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICov
OyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9i
c2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRP
YnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vz
c2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2ll
Lmh0bWwgKi87IH07CkBAIC04NjgsOCArODY5LDggQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VE
RTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5k
eWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBz
aG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
NTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9OwogCQk5
M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07Ci0JCTk1MDk1RjIwMjYyRkZGQTUwMDAw
RDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQ
YWdlVG9wQ29sb3IubW0gKi87IH07CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0
ZWRBcnJheU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0ZDREIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9
OworCQk5NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYy
RkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5NTBFNEND
MTI1MkU3NTI0MDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAv
KiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovOyB9OwogCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMg
LyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYx
RkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3
VGhlbWVDb2xvci5tbSAqLzsgfTsKQEAgLTE2NDksNiArMTY1MCw3IEBACiAJCQkJM0ZDQzRGRTgx
RUM0RThDQTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlv
LW9uLWNsaWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMEVCQkNDNjYxRkZGOUUw
QzAwRkE0MkFCIC8qIHBvcC11cC1jaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTQ2NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBODFFRjQ2OTZCMDA4M0ZBMDggLyogcHJl
dmVudC1vcGVyYXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBOTFF
RjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC0yMDY2LDYgKzIwNjgsNyBAQAogCQk0NjNGNDcyMjI1NUI0OUI2
MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzRGlkVGVybWlu
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2NEMyMzBERjgzMjAw
QUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAi
QmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJl
Z3VsYXJseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBvc3RNZXNzYWdlLXJl
Z3VsYXJseS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RTI4MDYyNTVC
MkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVy
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9i
c2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVF
Q0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjU2NSw4ICsyNTY4LDggQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjdFODZCMTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBT
YW1wbGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBs
ZWRQYWdlVG9wQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTYW1wbGVkUGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVt
ZUNvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3VGhlbWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNzAsNiAr
NDA3Myw3IEBACiAJCQkJOUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRt
bCAqLywKIAkJCQkzRkNDNEZFNjFFQzRFODdFMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURl
bGVnYXRlLmh0bWwgKi8sCiAJCQkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVk
aW8tb24tY2xpY2suaHRtbCAqLywKKwkJCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9z
dE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTQxRUY0NjkyQzAwODNGQTA4
IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgKi8sCiAJCQkJRjQxQUI5OUExRUY0NjkyQzAwODNG
QTA4IC8qIHByZXZlbnQtc3RhcnQuaHRtbCAqLywKIAkJCQlBMTJEREJGRjFFODM3M0MxMDBDRjZD
QUUgLyogcmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5z
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3Vz
cGVuc2lvbi5tbQppbmRleCA5OTY2MWIzNDAzYjA0ZDE0MWExYzQyODE0NWI3ZDZmZjQ3OThkZGMy
Li5kMTc2ZmNjOGRhMDA2YTRiN2MyZTkzM2UyYWM1MmZiOWJhODQ4MWYyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3Bl
bnNpb24ubW0KQEAgLTI2LDExICsyNiwxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KIAogVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgQ2FuY2VsV2ViUHJvY2Vzc1N1c3BlbnNp
b24pCiB7CkBAIC04MywzICs4NSwxNTMgQEAgVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgRGVzdHJv
eVdlYlBhZ2VEdXJpbmdXZWJQcm9jZXNzU3VzcGVuc2lvbikKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzbGVlcCgxKTsKICAgICBFWFBFQ1RfRVEocGlkMSwgW3dlYlZpZXczIF93ZWJQcm9jZXNz
SWRlbnRpZmllcl0pOwogfQorCitURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBXS1dlYlZpZXdTdXNw
ZW5kUGFnZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB0ZXN0TWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6dGVzdE1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIF9f
YmxvY2sgdW5zaWduZWQgdGltZXJGaXJlZENvdW50ID0gMDsKKyAgICBbdGVzdE1lc3NhZ2VIYW5k
bGVyIGFkZE1lc3NhZ2U6QCJ0aW1lciBmaXJlZCIgd2l0aEhhbmRsZXI6XnsKKyAgICAgICAgKyt0
aW1lckZpcmVkQ291bnQ7CisgICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Il07CisKKyAgICBhdXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CisgICAgRVhQRUNUX05FKHBpZCwgMCk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hv
dWxkIGJlIGZpcmluZy4KKyAgICBhdXRvIGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRD
b3VudDsKKyAgICB3aGlsZSAobGFzdFRpbWVyRmlyZUNvdW50ID09IHRpbWVyRmlyZWRDb3VudCkK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworICAgIEVYUEVD
VF9UUlVFKHRpbWVyRmlyZWRDb3VudCA+IGxhc3RUaW1lckZpcmVDb3VudCk7CisKKyAgICBhdXRv
IHRlc3RSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgaWQgdGVzdEludGVyYWN0aW9u
U3RhdGUgPSBbd2ViVmlldyBpbnRlcmFjdGlvblN0YXRlXTsKKyAgICBhdXRvIG9yaWdpbmFsVVJM
ID0gW3dlYlZpZXcgVVJMXTsKKworICAgIC8vIFN1c3BlbmQgdGhlIHBhZ2UuCisgICAgW3dlYlZp
ZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfc3VzcGVuZFBhZ2U6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxk
IG5vIGxvbmdlciBiZSBmaXJpbmcuCisgICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJl
ZENvdW50OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwMCk7CisgICAg
RVhQRUNUX0VRKGxhc3RUaW1lckZpcmVDb3VudCwgdGltZXJGaXJlZENvdW50KTsKKworICAgIGF1
dG8gY2hlY2tUaHJvd3MgPSBbXShGdW5jdGlvbjx2b2lkKCk+JiYgZikgeworICAgICAgICBAdHJ5
IHsKKyAgICAgICAgICAgIGYoKTsKKyAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfTsKKworICAgIC8vIE1vc3Qgb3BlcmF0aW9ucyBvbiBXS1dlYlZpZXcgc2hvdWxk
IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHN1c3BlbmRlZC4KKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cubmFtZSIg
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dz
KFsmXSB7IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIi
XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiZm9vIiBiYXNlVVJMOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTp3ZWJWaWV3Lmdl
dCgpLmJhY2tGb3J3YXJkTGlzdC5jdXJyZW50SXRlbV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyByZWxvYWRdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl07IH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBnb0JhY2tdOyB9KSk7CisgICAg
RVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29Gb3J3YXJkXTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHN0b3BMb2FkaW5nXTsg
fSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJh
Y2tXaXRoQ29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNr
VGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6WUVTIGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25IYW5k
bGVyOl4oV0tNZWRpYVBsYXliYWNrU3RhdGUpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRDYW1lcmFDYXB0dXJlU3RhdGU6V0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQRUNU
X1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0
ZTpXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsK
KyNpZiBUQVJHRVRfT1NfSVBIT05FCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsg
W3dlYlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5k
bGVyOl4oVUlJbWFnZSAqc25hcHNob3QsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisjZWxz
ZQorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW1hZ2UgKnNuYXBz
aG90LCBOU0Vycm9yICplcnJvcikgeyB9XTsgfSkpOworI2VuZGlmCisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246bmls
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgeyB9XTsg
fSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNyZWF0ZVdl
YkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9y
ICplcnJvcikgeyB9XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdl
YlZpZXcuZ2V0KCkuYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBZRVM7IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmN1c3Rv
bVVzZXJBZ2VudCA9IEAiZm9vIjsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsm
XSB7IHdlYlZpZXcuZ2V0KCkuYWxsb3dzTGlua1ByZXZpZXcgPSBZRVM7IH0pKTsKKyNpZiAhVEFS
R0VUX09TX0lQSE9ORQorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcu
Z2V0KCkuYWxsb3dzTWFnbmlmaWNhdGlvbiA9IFlFUzsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNo
ZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkubWFnbmlmaWNhdGlvbiA9IDEuMTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldE1hZ25pZmljYXRp
b246MS4xIGNlbnRlcmVkQXRQb2ludDpDR1BvaW50TWFrZSgwLCAwKV07IH0pKTsKKyNlbmRpZgor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkucGFnZVpvb20g
PSAxLjE7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBm
aW5kU3RyaW5nOkAiZm9vIiB3aXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6
XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeyB9XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNr
VGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6dGVzdFJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeyB9XTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkuaW50ZXJhY3Rp
b25TdGF0ZSA9IHRlc3RJbnRlcmFjdGlvblN0YXRlOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hl
Y2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5tZWRpYVR5cGUgPSBAInRleHQvaHRtbCI7IH0p
KTsKKworICAgIC8vIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSBzdGlsbCB3b3Jrcy4KKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZywgb3JpZ2luYWxVUkwuYWJz
b2x1dGVTdHJpbmcpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdLmJh
Y2tJdGVtLCBuaWwpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyB0aXRsZV0sIEAiIik7
CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIEVYUEVDVF9FUShb
d2ViVmlldyBlc3RpbWF0ZWRQcm9ncmVzc10sIDEuMCk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IGNhbkdvQmFja10pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBjYW5Hb0ZvcndhcmRd
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaGFzT25seVNlY3VyZUNvbnRlbnRdKTsKKyAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgc2VydmVyVHJ1c3RdLCBuaWwpOworICAgIEVYUEVDVF9FUShb
d2ViVmlldyBjYW1lcmFDYXB0dXJlU3RhdGVdLCBXS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSk7Cisg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IG1pY3JvcGhvbmVDYXB0dXJlU3RhdGVdLCBXS01lZGlhQ2Fw
dHVyZVN0YXRlTm9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IGN1c3RvbVVzZXJB
Z2VudF0sIEAiIik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IGFsbG93c0xpbmtQcmV2aWV3XSk7CisjZWxzZQorICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBh
bGxvd3NMaW5rUHJldmlld10pOworI2VuZGlmCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGFs
bG93c01hZ25pZmljYXRpb25dKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgbWFnbmlmaWNhdGlv
bl0sIDEuMCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHBhZ2Vab29tXSwgMS4wKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgbWVkaWFUeXBlXSwgQCIiKTsKKyAgICBFWFBFQ1RfRkFM
U0UoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgaW50ZXJhY3Rpb25TdGF0ZV07IH0pKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgdGhlbWVDb2xvcl07IH0p
KTsKKworICAgIC8vIFJlc3VtZSB0aGUgcGFnZS4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX3Jlc3VtZVBhZ2U6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgW3dlYlZpZXcgYWRkVG9UZXN0V2luZG93XTsKKwor
ICAgIC8vIFRoZSB0aW1lciBzaG91bGQgc3RhcnQgZmlyaW5nIGFnYWluLgorICAgIGxhc3RUaW1l
ckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICB3aGlsZSAobGFzdFRpbWVyRmlyZUNv
dW50ID09IHRpbWVyRmlyZWRDb3VudCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoMTApOworICAgIEVYUEVDVF9UUlVFKHRpbWVyRmlyZWRDb3VudCA+IGxhc3RUaW1l
ckZpcmVDb3VudCk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGlkIG5vdCBjcmFzaC4KKyAgICBF
WFBFQ1RfRVEocGlkLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30KKworVEVT
VChQcm9jZXNzU3VzcGVuc2lvbiwgRGVhbGxvY2F0ZVN1c3BlbmRlZFZpZXcpCit7CisgICAgLy8g
RGVhbGxvY2F0aW5nIGEgc3VzcGVuZGVkIFdlYlZpZXcgc2hvdWxkIG5vdCB0aHJvdyBvciBjcmFz
aC4KKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKV0pOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXV07CisgICAgICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKKworICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2Vi
VmlldyBfc3VzcGVuZFBhZ2U6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIEVYUEVDVF9U
UlVFKHN1Y2Nlc3MpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIFt3ZWJWaWV3
IF9jbG9zZV07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjNhNmIwNGJkMTVlMDBkOGNiZGJlZWNhMTZkYjI5NjZlYzVhNTllOQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8
Ym9keT4KKzxzY3JpcHQ+CitzZXRJbnRlcnZhbCgoKSA9PiB7CisgICAgd2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgndGltZXIgZmlyZWQnKTsKK30sIDUpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="449086"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428218</attachid>
            <date>2021-05-10 16:28:40 -0700</date>
            <delta_ts>2021-05-11 11:11:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210510162839.patch</filename>
            <type>text/plain</type>
            <size>135206</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Mjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRkZTRlZWQ4NGYyMzBm
MzIwMDFjYWY5YjI4MTQ5YWRjODFjMzc5Ni4uMmI1NDBiNDMwNmZlNmRkMDVhNzA3YjU3MmUwYWM3
OWRkM2Y1YTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0
cnlTdXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJ
ZkNhY2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTAgIEFuZHJlcyBHb256YWxleiAgPGFu
ZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgYXNzZXJ0IGNyYXNoIGluIEFY
T2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA5ZDZlZTM0MjAxOTQxOTA5MTIzMTJmNjAwMTQxOGUxMzA2ODQ1OThhLi4xMGU4YjdmZWM4MTA0
ZTVkMWVjZWJjYTFlNjU5YTVlZjZjYmU3ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMCBAQAor
MjAyMS0wNS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAgIDxyZGFyOi8vNzc0
NjI1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBUaGlzIHN1c3BlbmRzIHRo
ZSBwYWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGJ1
dCB0aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVkIHRvIG5hdmlnYXRlLgor
ICAgICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFydCBvZiB0aGUgQmFjay9G
b3J3YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51bWJlciBvZiBzdXNwZW5k
ZWQgcGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICBNb3N0IG9mIFdLV2ViVmll
dydzIEFQSSAvIFNQSSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxlZCBvbiBhIHN1
c3BlbmRlZAorICAgICAgICB2aWV3IChUaGUgV0tQYWdlUmVmQVBJIHdpbGwgUkVMRUFTRV9BU1NF
UlQoKSkuIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSB3aWxsIHN0YXkKKyAgICAgICAgZnVuY3Rpb25h
bCAoVVJMLCBpc0xvYWRpbmcsIHRpdGxlLCAuLi4pLiBJdCBpcyBhbHNvIHNhZmUgdG8gZGVhbGxv
Y2F0ZSAvIGNsb3NlCisgICAgICAgIGEgc3VzcGVuZGVkIFdLV2ViVmlldy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoY3Jhc2hJZlBhZ2VJc1N1c3Bl
bmRlZCk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxX
aXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJM
V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAg
KFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRG
aWxlKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAg
ICAgICAgKFdLUGFnZUxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxvYWRIVE1MU3Ry
aW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToK
KyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9h
ZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VMb2FkV2ViQXJj
aGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0aFVzZXJEYXRh
KToKKyAgICAgICAgKFdLUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZCk6
CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKToKKyAgICAgICAg
KFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdlUmVsb2FkRXhwaXJlZE9u
bHkpOgorICAgICAgICAoV0tQYWdlVHJ5Q2xvc2UpOgorICAgICAgICAoV0tQYWdlQ2xvc2UpOgor
ICAgICAgICAoV0tQYWdlR29Gb3J3YXJkKToKKyAgICAgICAgKFdLUGFnZUdvQmFjayk6CisgICAg
ICAgIChXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXS1BhZ2VUcnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV0tQYWdlVXBkYXRlV2Vic2l0ZVBvbGlj
aWVzKToKKyAgICAgICAgKFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAgICAoV0tQYWdlU2V0Q3Vz
dG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXS1BhZ2VUZXJtaW5hdGUpOgorICAgICAg
ICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV0tQYWdlUmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbik6CisgICAgICAgIChXS1BhZ2VTZXRD
dXN0b21CYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0VGV4dFpvb21GYWN0
b3IpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IpOgorICAgICAgICAoV0tQYWdl
U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChXS1BhZ2VTZXRTY2FsZUZhY3Rv
cik6CisgICAgICAgIChXS1BhZ2VTZXRVc2VGaXhlZExheW91dCk6CisgICAgICAgIChXS1BhZ2VT
ZXRGaXhlZExheW91dFNpemUpOgorICAgICAgICAoV0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyk6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMpOgor
ICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQpOgorICAgICAgICAoV0tQYWdlU2V0
UnViYmVyQmFuZHNBdFJpZ2h0KToKKyAgICAgICAgKFdLUGFnZVNldFJ1YmJlckJhbmRzQXRUb3Ap
OgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbSk6CisgICAgICAgIChXS1Bh
Z2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0RW5h
YmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0QmFja2dyb3Vu
ZEV4dGVuZHNCZXlvbmRQYWdlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKToK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUxlbmd0aCk6CisgICAgICAgIChXS1BhZ2VTZXRHYXBCZXR3ZWVuUGFn
ZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCk6CisgICAg
ICAgIChXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbik6CisgICAgICAgIChXS1Bh
Z2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKToKKyAgICAgICAgKFdLUGFnZUZpbmRTdHJp
bmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAg
ICAgKFdLUGFnZVNlbGVjdEZpbmRNYXRjaCk6CisgICAgICAgIChXS1BhZ2VGaW5kU3RyaW5nKToK
KyAgICAgICAgKFdLUGFnZUhpZGVGaW5kVUkpOgorICAgICAgICAoV0tQYWdlQ291bnRTdHJpbmdN
YXRjaGVzKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmlu
ZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50
KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChX
S1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYik6CisgICAgICAgIChXS1BhZ2VSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JG
cmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdL
UGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KToKKyAgICAgICAgKFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAoV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXS1Bh
Z2VGb3JjZVJlcGFpbnQpOgorICAgICAgICAoV0tQYWdlVmFsaWRhdGVDb21tYW5kKToKKyAgICAg
ICAgKFdLUGFnZUV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdLUGFnZUNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdL
UGFnZUJlZ2luUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRW5kUHJpbnRpbmcpOgorICAgICAg
ICAoV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbik6CisgICAgICAgIChXS1BhZ2VTZXRB
bGxvd3NSZW1vdGVJbnNwZWN0aW9uKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhVm9sdW1lKToK
KyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVy
ZUVuYWJsZWQpOgorICAgICAgICAoV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayk6CisgICAgICAg
IChXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKToKKyAgICAgICAgKFdLUGFnZURpZERlbnlQb2lu
dGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KToK
KyAgICAgICAgKFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChXS1BhZ2VT
ZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV0tQYWdlU2V0QWRkc1Zpc2l0ZWRM
aW5rcyk6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAg
ICAgIChXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdL
UGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKToKKyAgICAgICAgKFdLUGFnZUdldEFw
cGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgIChXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOgorICAgICAgICAoV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6
CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTaW11bGF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyk6CisgICAg
ICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFya1ByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlU2V0
UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRN
b2NrQ2FtZXJhT3JpZW50YXRpb24pOgorICAgICAgICAoV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zKToKKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKToK
KyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZyk6
CisgICAgICAgIChXS1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZpbGVV
Ukw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZERhdGE6TUlN
RVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3Rv
cExvYWRpbmddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDppbkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFtZTppbkNvbnRl
bnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNsb3Nl
QWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXli
YWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBz
ZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rpb246
d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5GcmFtZTppbldv
cmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBz
aG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0UGFn
ZVpvb206XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhDb25maWd1cmF0
aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0TWVkaWFU
eXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0SW50ZXJhY3Rpb25TdGF0ZTpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c01hZ25pZmljYXRpb246XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOmNlbnRlcmVkQXRQb2ludDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBw
cmludE9wZXJhdGlvbldpdGhQcmludEluZm86XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9uc2U6cmVzcG9u
c2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0
aFJlc3BvbnNlOnJlc3BvbnNlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRTaW11
bGF0ZWRSZXF1ZXN0OnJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25zZUhUTUxTdHJpbmc6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBsb2FkRmlsZVJlcXVlc3Q6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9pbmNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9kZWNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jaGFuZ2VMaXN0
VHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEVuYWJsZUJyb3dzZXJFeHRl
bnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZERpc2FibGVCcm93c2VyRXh0ZW5z
aW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRFZGl0YWJsZTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxldGlvbjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3Vy
YXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21wbGV0ZVRleHRN
YW5pcHVsYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfdG9nZ2xlUGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3Rv
cE1lZGlhQ2FwdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3BBbGxNZWRpYVBsYXli
YWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2FkZEFwcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWRBbHRl
cm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VV
Ukw6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVlc3Q6c2hvdWxk
T3BlbkV4dGVybmFsVVJMczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkUmVxdWVzdDpz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dy
YW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmV2b2tl
QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeV0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZFBhZ2U6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfcmVzdW1lUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRBcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNv
bnRlbnRQcm9jZXNzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0aG91dENvbnRl
bnRCbG9ja2Vyc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZEV4cGlyZWRPbmx5XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0
ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0
aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFBERkZp
cnN0UGFnZVNpemVJbkZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdHJ5Q2xvc2VdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBl
OmRhdGE6b3B0aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6b3B0aW9uczpjb21wbGV0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBw
ZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hdHRh
Y2htZW50Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURl
dmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOmJldGE6Z2FtbWE6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6d2FybmluZzpkZXRh
aWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nob3dTYWZl
QnJvd3NpbmdXYXJuaW5nV2l0aFVSTDp0aXRsZTp3YXJuaW5nOmRldGFpbHM6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdX
aXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWlsc1dpdGhMaW5rczpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHQ6YXJn
dW1lbnRzOmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5Db250ZW50V29y
bGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVK
YXZhU2NyaXB0OndpdGhTb3VyY2VVUkw6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5j
ZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbm90aWZ5VXNlclNjcmlwdHNdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFkZHNWaXNpdGVkTGlua3M6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzT2ZB
bGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25N
b2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnZUxlbmd0aDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRUZXh0Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdl
Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmluZ01hdGNoZXM6
b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5kU3RyaW5nOm9w
dGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZpbmRVSV0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJy
aWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZlcjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zZXRMYXlvdXRNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldEZpeGVkTGF5b3V0U2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRCYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0Vmlld1Nj
YWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRQcm9jZXNzRGlzcGxheU5hbWVXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dyYW50QWNjZXNzVG9QcmVm
ZXJlbmNlU2VydmljZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFNjcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBh
Z2VNdXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5r
czpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhp
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
dXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIE9iakMgQVBJIHNpbWlsYXIg
dG8gV0tCdW5kbGVQYWdlQ29weUdyb3VwSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NTFkODU0N2I2OGQ0NzI4YTljNWE0NDM0MWZjNDgzNzNhMTEzYTk4Yy4uNjE1Y2ZiOGYwYzk0YzJi
MTRmMDk1M2RjYmMwOGY0YTZkYWY3ZWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02MDgsNiAr
NjA4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGhpc3Rv
cnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oCiAgICAgaGlzdG9yeS9DYWNoZWRGcmFtZS5o
CiAgICAgaGlzdG9yeS9DYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisgICAgaGlzdG9yeS9DYWNo
ZWRQYWdlLmgKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmgKIAogICAgIGh0bWwvQXV0b2NhcGl0
YWxpemUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5k
ZXggMjdlZDc0Y2QyMWQzNmFlNzBjMzVhOGYwYjIwOTFiMGI1YTQ3N2I5My4uOTAzYWVjYTEyMjJm
OGU5NGY5N2UxODg0Yzk1MDVhMzcwYTY3NDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC00MjYsNTEgKzQyNiw2MiBAQCBzdGF0aWMgdm9pZCBm
aXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KEZyYW1lJiBmcmFtZSkKICAgICAgICAgZmlyZVBh
Z2VIaWRlRXZlbnRSZWN1cnNpdmVseSgqY2hpbGQpOwogfQogCi1ib29sIEJhY2tGb3J3YXJkQ2Fj
aGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQorc3RkOjp1
bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnRyeVN1c3BlbmRQYWdlKFBh
Z2UmIHBhZ2UsIEZvcmNlU3VzcGVuc2lvbiBmb3JjZVN1c3BlbnNpb24pCiB7Ci0gICAgaWYgKGl0
ZW0uaXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBwYWdlLT5tYWluRnJhbWUo
KS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOworICAgIHBhZ2UubWFpbkZyYW1l
KCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKIAotICAgIGlmICghY2FuQ2Fj
aGUoKnBhZ2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lv
biA9PSBGb3JjZVN1c3BlbnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYWdlLT5pc1V0aWxpdHlQ
YWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hvdWxkIG5ldmVy
IGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBh
Z2UuaXNVdGlsaXR5UGFnZSgpLCAiVXRpbGl0eSBwYWdlcyBzdWNoIGFzIFNWR0ltYWdlIHBhZ2Vz
IHNob3VsZCBuZXZlciBnbyBpbnRvIEJhY2tGb3J3YXJkQ2FjaGUiKTsKIAotICAgIHNldEJhY2tG
b3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJk
Q2FjaGUpOworICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6QWJv
dXRUb0VudGVyQmFja0ZvcndhcmRDYWNoZSk7CiAKICAgICAvLyBGb2N1cyB0aGUgbWFpbiBmcmFt
ZSwgZGVmb2N1c2luZyBhIGZvY3VzZWQgc3ViZnJhbWUgKGlmIHdlIGhhdmUgb25lKS4gV2UgZG8g
dGhpcyBoZXJlLAogICAgIC8vIGJlZm9yZSB0aGUgcGFnZSBlbnRlcnMgdGhlIGJhY2svZm9yd2Fy
ZCBjYWNoZSwgd2hpbGUgd2Ugc3RpbGwgY2FuIGRpc3BhdGNoIERPTSBibHVyL2ZvY3VzIGV2ZW50
cy4KLSAgICBpZiAocGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCi0gICAg
ICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS0+bWFpbkZy
YW1lKCkpOworICAgIGlmIChwYWdlLmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpKQor
ICAgICAgICBwYWdlLmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS5tYWlu
RnJhbWUoKSk7CiAKICAgICAvLyBGaXJlIHRoZSBwYWdlaGlkZSBldmVudCBpbiBhbGwgZnJhbWVz
LgotICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkocGFnZS0+bWFpbkZyYW1lKCkpOwor
ICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkocGFnZS5tYWluRnJhbWUoKSk7CiAKLSAg
ICBkZXN0cm95UmVuZGVyVHJlZShwYWdlLT5tYWluRnJhbWUoKSk7CisgICAgZGVzdHJveVJlbmRl
clRyZWUocGFnZS5tYWluRnJhbWUoKSk7CiAKICAgICAvLyBTdG9wIGFsbCBsb2FkcyBhZ2FpbiBi
ZWZvcmUgY2hlY2tpbmcgaWYgd2UgY2FuIHN0aWxsIGNhY2hlIHRoZSBwYWdlIGFmdGVyIGZpcmlu
ZyB0aGUgcGFnZWhpZGUKICAgICAvLyBldmVudCwgc2luY2UgdGhlIHBhZ2UgbWF5IGhhdmUgc3Rh
cnRlZCBwaW5nIGxvYWRzIGluIGl0cyBwYWdlaGlkZSBldmVudCBoYW5kbGVyLgotICAgIHBhZ2Ut
Pm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFn
ZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCiAgICAg
Ly8gQ2hlY2sgdGhhdCB0aGUgcGFnZSBpcyBzdGlsbCBwYWdlLWNhY2hlYWJsZSBhZnRlciBmaXJp
bmcgdGhlIHBhZ2VoaWRlIGV2ZW50LiBUaGUgSlMgZXZlbnQgaGFuZGxlcnMKICAgICAvLyBjb3Vs
ZCBoYXZlIGFsdGVyZWQgdGhlIHBhZ2UgaW4gYSB3YXkgdGhhdCBjb3VsZCBwcmV2ZW50IGNhY2hp
bmcuCi0gICAgaWYgKCFjYW5DYWNoZSgqcGFnZSkpIHsKLSAgICAgICAgc2V0QmFja0ZvcndhcmRD
YWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChmb3JjZVN1c3BlbnNpb24gPT0gRm9yY2VTdXNwZW5z
aW9uOjpObyAmJiAhY2FuQ2FjaGUocGFnZSkpIHsKKyAgICAgICAgc2V0QmFja0ZvcndhcmRDYWNo
ZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUoKnBh
Z2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworICAgIHNldEJhY2tGb3J3YXJkQ2Fj
aGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlKTsKKworICAgIC8vIE1h
a2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KKyAgICBT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4ocGFnZSk7Cit9CisKK2Jvb2wgQmFj
a0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBh
Z2UpCit7CisgICAgaWYgKGl0ZW0uaXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIGNhY2hlZFBhZ2UgPSB0cnlTdXNwZW5kUGFnZSgqcGFnZSwgRm9yY2VTdXNwZW5zaW9u
OjpObyk7CisgICAgaWYgKCFjYWNoZWRQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4g
dGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtl
VW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKSk7CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShX
VEZNb3ZlKGNhY2hlZFBhZ2UpKTsKICAgICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVu
aW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpAQCAt
NDgxLDYgKzQ5MiwxMyBAQCBib29sIEJhY2tGb3J3YXJkQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhp
c3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6c3VzcGVuZFBhZ2UoUGFn
ZSYgcGFnZSkKK3sKKyAgICBSRUxFQVNFX0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiQmFja0Zvcndh
cmRDYWNoZTo6c3VzcGVuZFBhZ2UoKSIpOworCisgICAgcmV0dXJuIHRyeVN1c3BlbmRQYWdlKHBh
Z2UsIEZvcmNlU3VzcGVuc2lvbjo6WWVzKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBh
Z2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnRha2UoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2Up
CiB7CiAgICAgaWYgKCFpdGVtLm1fY2FjaGVkUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ2FjaGUuaAppbmRleCBhZGFhZmFiYTZiYTYzMTI3Y2M0ZDgyZDdmMWQyYzM5
ZDQ3NTM0ZjdlLi43M2U3NmUwMGIyYTk1ZTQ2MzYwYjk3Zjk0YTc3MWQwMDFjYTQ4MWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhTaXplKHVuc2lnbmVkKTsg
Ly8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hlLgogICAgIHVuc2lnbmVkIG1heFNpemUoKSBjb25z
dCB7IHJldHVybiBtX21heFNpemU7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxDYWNoZWRQYWdlPiBzdXNwZW5kUGFnZShQYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1bmVzIGlmIG1h
eFNpemUoKSBpcyBleGNlZWRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShIaXN0
b3J5SXRlbSYpOwogICAgIENhY2hlZFBhZ2UqIGdldChIaXN0b3J5SXRlbSYsIFBhZ2UqKTsKQEAg
LTc0LDYgKzc1LDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBib29sIGNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUmKTsKIAorICAgIGVudW0gY2xhc3MgRm9yY2VTdXNwZW5z
aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
dHJ5U3VzcGVuZFBhZ2UoUGFnZSYsIEZvcmNlU3VzcGVuc2lvbik7CiAgICAgdm9pZCBwcnVuZShQ
cnVuaW5nUmVhc29uKTsKICAgICB2b2lkIGR1bXAoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuaAppbmRleCA0ZWVjZjFjYjBjMjVkYWM3ZTFkNmYyNDk4Y2JiMmM5NWUzODg1
ZDI1Li4wZjczY2Y3OGFjM2I3M2ZkYzY1NWYxNDM2NDExYzE3YWM1NTIxN2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBDYWNoZWRQYWdl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBD
YWNoZWRQYWdlKFBhZ2UmKTsKLSAgICB+Q2FjaGVkUGFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5DYWNoZWRQYWdlKCk7CiAKLSAgICB2b2lkIHJlc3RvcmUoUGFnZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzdG9yZShQYWdlJik7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUGFn
ZSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNjNhZjA1Y2RmYTgwNGM1ODA2MDQ4N2YwZGNiMDE3YjU5
ZTBlZDAyNS4uMzY3NzcxOWY4YWJiNzM2NzU1MjY4MDAzYWIzMWI3ZWNmOTg1M2Y1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xNDMsNiArMTQzLDE0IEBA
IHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+IHsK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAorc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIGNy
YXNoSWZQYWdlSXNTdXNwZW5kZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJFcnJvcjogQXR0ZW1wdCB0byBjYWxsIFdLUGFnZVJlZiBBUEkvU1BJIG9uIGEgc3VzcGVu
ZGVkIHBhZ2UsIHRoaXMgaXMgYSBjbGllbnQgYnVnLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRSghcGFnZVJlZiB8fCAhdG9JbXBsKHBhZ2VSZWYpLT5pc1N1c3BlbmRlZCgpLCAi
WW91IGNhbm5vdCBjYWxsIHRoaXMgQVBJL1NQSSBvbiBhIHN1c3BlbmRlZCBwYWdlIik7Cit9CisK
KyNkZWZpbmUgQ1JBU0hfSUZfU1VTUEVOREVEIGNyYXNoSWZQYWdlSXNTdXNwZW5kZWQocGFnZVJl
ZikKKwogV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2Vi
UGFnZVByb3h5OjpBUElUeXBlKTsKQEAgLTE2NSw0OSArMTczLDU4IEBAIFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpKTsKIH0KIAogdm9pZCBXS1BhZ2VM
b2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLVVJMUmVmIFVSTFJlZiwgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
ID8gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdzsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJM
UmVmKSksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tU
eXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSks
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCB0
b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkVVJMUmVxdWVzdChXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0ID0gdG9JbXBsKHVybFJl
cXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRS
ZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFVS
TFJlcXVlc3RXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiB1
cmxSZXF1ZXN0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0ID0gdG9JbXBsKHVybFJlcXVlc3RSZWYp
LT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdU
Rk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3csIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdL
UGFnZUxvYWRGaWxlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJl
ZiByZXNvdXJjZURpcmVjdG9yeVVSTCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhmaWxlVVJMKSwgdG9XVEZTdHJp
bmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRmlsZVdpdGhV
c2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgZmlsZVVSTCwgV0tVUkxSZWYgcmVz
b3VyY2VEaXJlY3RvcnlVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhm
aWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpLCB0b0ltcGwodXNlckRh
dGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tE
YXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNv
ZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwoZGF0YVJlZiktPmRhdGFSZWZl
cmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1Jl
ZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YVdp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5n
UmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVS
TFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJlZmVy
ZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVm
KSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCkBA
IC0yMzMsNTIgKzI1MCw2MiBAQCBzdGF0aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNvbnN0IFN0cmluZyYgbQogCiB2b2lkIFdLUGFn
ZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5n
UmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVm
LCBiYXNlVVJMUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwg
V0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBsb2FkU3RyaW5nKHBhZ2VSZWYsIGh0bWxTdHJpbmdSZWYsICJ0
ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB1c2VyRGF0YVJlZik7CiB9CiAK
IHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVu
cmVhY2hhYmxlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VM
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVm
LCBiYXNlVVJMUmVmLCB1bnJlYWNoYWJsZVVSTFJlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQ
YWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVm
IHVucmVhY2hhYmxlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIFN0cmluZyBzdHJpbmcgPSB0b1dURlN0cmluZyhodG1sU3RyaW5n
UmVmKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRBbHRlcm5hdGVIVE1MKGRhdGFGcm9tKHN0
cmluZyksIGVuY29kaW5nT2Yoc3RyaW5nKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhiYXNlVVJM
UmVmKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodW5yZWFjaGFibGVVUkxSZWYpKSwgdG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJE
YXRhKHBhZ2VSZWYsIHBsYWluVGV4dFN0cmluZ1JlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQ
YWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0
U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgYWJvdXRCbGFua1VSTCgpLnN0cmluZygpLCB1c2Vy
RGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRhKHRvSW1wbCh3
ZWJBcmNoaXZlRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRXZWJBcmNoaXZlRGF0YVdp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIHdlYkFyY2hpdmVEYXRhUmVm
LCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRhKHRvSW1wbCh3ZWJBcmNoaXZlRGF0
YVJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZVN0b3BMb2FkaW5n
KFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFn
ZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRo
RXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCkBAIC0yOTAsMjEgKzMxNywyNSBAQCB2b2lkIFdL
UGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VSZWxvYWRXaXRob3V0
Q29udGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246
OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZEZyb21Pcmln
aW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7
CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkRXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdl
YkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogfQogCiBib29sIFdLUGFnZVRyeUNs
b3NlKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50cnlDbG9zZSgpOwogfQogCkBAIC0zMjAsNiArMzUxLDcg
QEAgYm9vbCBXS1BhZ2VJc0Nsb3NlZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VH
b0ZvcndhcmQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Gb3J3YXJkKCk7CiB9CiAKQEAgLTMzMCw2ICszNjIsNyBA
QCBib29sIFdLUGFnZUNhbkdvRm9yd2FyZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VHb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGF1dG8mIHBhZ2UgPSAqdG9JbXBsKHBhZ2VSZWYpOwogICAgIGlmIChwYWdlLnBhZ2VDbGll
bnQoKS5oYXNTYWZlQnJvd3NpbmdXYXJuaW5nKCkpIHsKICAgICAgICAgV0tQYWdlUmVsb2FkKHBh
Z2VSZWYpOwpAQCAtMzQ1LDExICszNzgsMTMgQEAgYm9vbCBXS1BhZ2VDYW5Hb0JhY2soV0tQYWdl
UmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdvVG9CYWNrRm9yd2FyZEl0
ZW0oKnRvSW1wbChpdGVtUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlVHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCkBAIC0z
NjUsNiArNDAwLDcgQEAgYm9vbCBXS1BhZ2VXaWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50
cyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VVcGRhdGVXZWJzaXRlUG9saWNpZXMo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLV2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNpdGVQb2xpY2llc1Jl
ZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLCAi
U2V0dGluZyBXZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRl
ZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKCkuIik7CiAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+
dXNlckNvbnRlbnRDb250cm9sbGVyKCksICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy51c2VyQ29u
dGVudENvbnRyb2xsZXIgaXMgb25seSBzdXBwb3J0ZWQgZHVyaW5nIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclVzZVdpdGhQb2xpY2llcygpLiIpOwogICAgIGF1dG8gZGF0YSA9IHRvSW1wbCh3ZWJzaXRl
UG9saWNpZXNSZWYpLT5kYXRhKCk7CkBAIC00MjMsNiArNDU5LDcgQEAgV0tTdHJpbmdSZWYgV0tQ
YWdlQ29weUFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTmFtZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQodG9XVEZTdHJpbmcoYXBwbGljYXRpb25OYW1lUmVmKSk7CiB9CiAKQEAgLTQzMyw2ICs0NzAs
NyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5Q3VzdG9tVXNlckFnZW50KFdLUGFnZVJlZiBwYWdl
UmVmKQogCiB2b2lkIFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgdXNlckFnZW50UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVVzZXJBZ2VudCh0b1dURlN0cmluZyh1c2VyQWdl
bnRSZWYpKTsKIH0KIApAQCAtNDUzLDExICs0OTEsMTMgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29w
eUN1c3RvbVRleHRFbmNvZGluZ05hbWUoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdl
U2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYg
ZW5jb2RpbmdOYW1lUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUodG9XVEZTdHJpbmcoZW5jb2RpbmdO
YW1lUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm90
ZWN0ZWRQcm9jZXNzUHJveHkodG9JbXBsKHBhZ2VSZWYpLT5wcm9jZXNzKCkpOwogICAgIHByb3Rl
Y3RlZFByb2Nlc3NQcm94eS0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwogfQpAQCAtNTE4LDExICs1NTgsMTMgQEAgc3RhdGlj
IHZvaWQgcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVHlwZVJl
ZiBzZXNzaW9uU3RhdGVSZWYKIAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBlUmVmIHNlc3Npb25TdGF0ZVJlZikKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUocGFnZVJlZiwgc2Vz
c2lvblN0YXRlUmVmLCB0cnVlKTsKIH0KIAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYgc2Vzc2lv
blN0YXRlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZShwYWdlUmVmLCBzZXNzaW9uU3RhdGVSZWYsIGZhbHNlKTsKIH0KIApAQCAtNTM4
LDYgKzU4MCw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKFdLUGFn
ZVJlZiBwYWdlUmVmLCBkb3VibGUgY3VzdG9tU2NhbGVGYWN0b3IpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0
b3IoY3VzdG9tU2NhbGVGYWN0b3IpOwogfQogCkBAIC01NDgsNiArNTkxLDcgQEAgYm9vbCBXS1Bh
Z2VTdXBwb3J0c1RleHRab29tKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFRl
eHRab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRUZXh0Wm9vbUZh
Y3Rvcih6b29tRmFjdG9yKTsKIH0KIApAQCAtNTU4LDE2ICs2MDIsMTkgQEAgZG91YmxlIFdLUGFn
ZUdldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBh
Z2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlWm9vbUZh
Y3Rvcih6b29tRmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0
Wm9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZh
Y3Rvcik7CiB9CiAKIHZvaWQgV0tQYWdlU2V0U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYs
IGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2NhbGVQYWdlKHNjYWxlLCB0b0ludFBvaW50KG9yaWdp
bikpOwogfQogCkBAIC01NzgsMTEgKzYyNSwxMyBAQCBkb3VibGUgV0tQYWdlR2V0U2NhbGVGYWN0
b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGJvb2wgZml4ZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpOwogfQogCiB2b2lk
IFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTaXplIHNpemUp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rml4
ZWRMYXlvdXRTaXplKHRvSW50U2l6ZShzaXplKSk7CiB9CiAKQEAgLTU5OCw2ICs2NDcsNyBAQCBX
S1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXplKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdL
UGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLTGF5b3V0
TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPmxpc3RlbkZvckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRNaWxlc3Rv
bmVzKG1pbGVzdG9uZXMpKTsKIH0KIApAQCAtNjEzLDYgKzY2Myw3IEBAIGJvb2wgV0tQYWdlSGFz
VmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0U3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHN1cHByZXNz
QW5pbWF0aW9ucykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKTsK
IH0KIApAQCAtNjQ4LDYgKzY5OSw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdExlZnQoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdExlZnQpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdExlZnQocnViYmVy
QmFuZHNBdExlZnQpOwogfQogCkBAIC02NTgsNiArNzEwLDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJC
YW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVyQmFu
ZHNBdFJpZ2h0KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRSaWdodCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJC
YW5kc0F0UmlnaHQocnViYmVyQmFuZHNBdFJpZ2h0KTsKIH0KIApAQCAtNjY4LDYgKzcyMSw3IEBA
IGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdFRvcChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBX
S1BhZ2VTZXRSdWJiZXJCYW5kc0F0VG9wKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJh
bmRzQXRUb3ApCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0UnViYmVyQmFuZHNBdFRvcChydWJiZXJCYW5kc0F0VG9wKTsKIH0KIApAQCAtNjc4LDYg
KzczMiw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdEJvdHRvbShXS1BhZ2VSZWYgcGFnZVJl
ZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0Qm90dG9tKFdLUGFnZVJlZiBwYWdlUmVm
LCBib29sIHJ1YmJlckJhbmRzQXRCb3R0b20pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdEJvdHRvbShydWJiZXJCYW5kc0F0
Qm90dG9tKTsKIH0KIApAQCAtNjg4LDYgKzc0Myw3IEBAIGJvb2wgV0tQYWdlVmVydGljYWxSdWJi
ZXJCYW5kaW5nSXNFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEVu
YWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVW
ZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRp
Y2FsUnViYmVyQmFuZGluZyk7CiB9CiAKQEAgLTY5OCwxMSArNzU0LDEzIEBAIGJvb2wgV0tQYWdl
SG9yaXpvbnRhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZv
aWQgV0tQYWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJl
ckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOwogfQogCiB2b2lkIFdLUGFn
ZVNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBi
YWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tn
cm91bmRFeHRlbmRzQmV5b25kUGFnZSk7CiB9CiAKQEAgLTcxMyw2ICs3NzEsNyBAQCBib29sIFdL
UGFnZUJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9p
ZCBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdpbmF0aW9u
TW9kZSBwYWdpbmF0aW9uTW9kZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV2Vi
Q29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtb2RlOwogICAgIHN3aXRjaCAocGFnaW5hdGlvbk1vZGUp
IHsKICAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ6CkBAIC03NTcsNiArODE2
LDcgQEAgV0tQYWdpbmF0aW9uTW9kZSBXS1BhZ2VHZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYg
cGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKFdL
UGFnZVJlZiBwYWdlUmVmLCBib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdpbmF0aW9uQmVoYXZlc0xp
a2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyk7CiB9CiAKQEAgLTc2Nyw2ICs4MjcsNyBAQCBi
b29sIFdLUGFnZUdldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxlbmd0aChXS1BhZ2VSZWYgcGFnZVJlZiwgZG91Ymxl
IHBhZ2VMZW5ndGgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKTsKIH0KIApAQCAtNzc3LDYgKzgzOCw3IEBA
IGRvdWJsZSBXS1BhZ2VHZXRQYWdlTGVuZ3RoKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdL
UGFnZVNldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIGdhcCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRHYXBCZXR3
ZWVuUGFnZXMoZ2FwKTsKIH0KIApAQCAtNzg3LDYgKzg0OSw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRH
YXBCZXR3ZWVuUGFnZXMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnaW5h
dGlvbkxpbmVHcmlkRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBsaW5lR3JpZEVuYWJs
ZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC04MTcs
NDYgKzg4MCw1NSBAQCBib29sIFdLUGFnZUlzQ29udGVudEVkaXRhYmxlKFdLUGFnZVJlZiBwYWdl
UmVmKQogCiB2b2lkIFdLUGFnZVNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKFdLUGFnZVJl
ZiBwYWdlUmVmLCBib29sIG5ld1ZhbHVlKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihu
ZXdWYWx1ZSk7CiB9CiAKIHZvaWQgV0tQYWdlQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYShX
S1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpOwogfQogCiB2
b2lkIFdLUGFnZUZpbmRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzdHJpbmcsIFdLRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5maW5kU3Ry
aW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9u
cyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNo
KFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5kZXgpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0
Y2hJbmRleCk7CiB9CiAKIHZvaWQgV0tQYWdlU2VsZWN0RmluZE1hdGNoKFdLUGFnZVJlZiBwYWdl
UmVmLCBpbnQzMl90IG1hdGNoSW5kZXgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+c2VsZWN0RmluZE1hdGNoKG1hdGNoSW5kZXgpOwogfQogCiB2b2lk
IFdLUGFnZUZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywg
V0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZpbmRTdHJpbmcodG9JbXBs
KHN0cmluZyktPnN0cmluZygpLCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBtYXhNYXRjaENvdW50
KTsKIH0KIAogdm9pZCBXS1BhZ2VIaWRlRmluZFVJKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmhpZGVGaW5kVUkoKTsK
IH0KIAogdm9pZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZikt
PmNvdW50U3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlv
bnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250
ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVD
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBw
dWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiwgcHVibGljIEFQ
STo6Q29udGV4dE1lbnVDbGllbnQgewogICAgIHB1YmxpYzoKQEAgLTk3Myw2ICsxMDQ1LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZURpYWdub3MKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBGaW5kQ2xpZW50IDogcHVibGlj
IEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RmluZENsaWVu
dCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBGaW5kQ2xpZW50KGNvbnN0IFdLUGFn
ZUZpbmRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMDExLDYgKzEwODQsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xp
ZW50QmFzZSogd2tDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVu
dCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgRmluZE1hdGNoZXNDbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlPiwgcHVi
bGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGlj
aXQgRmluZE1hdGNoZXNDbGllbnQoY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiBj
bGllbnQpCkBAIC0xMDU0LDE2ICsxMTI4LDE5IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRj
aGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAK
IHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1D
bGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxv
YWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICBjbGFzcyBMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlTG9hZGVyQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkxvYWRlckNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBleHBsaWNpdCBMb2FkZXJDbGllbnQoY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSogY2xp
ZW50KQpAQCAtMTIzNCw2ICsxMzExLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIGNsYXNzIFBvbGljeUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6UG9saWN5Q2xpZW50IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBvbGljeUNsaWVudChjb25zdCBXS1BhZ2VQb2xpY3lD
bGllbnRCYXNlKiBjbGllbnQpCkBAIC0xNDkzLDYgKzE1NzEsNyBAQCB2b2lkIFdLUGFnZVJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybVJlc3VsdExpc3RlbmVyQ2FsbChXS1BhZ2VSZXF1ZXN0U3Rv
cmFnZUFjYwogCiB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlVUlD
bGllbnRCYXNlPiwgcHVibGljIEFQSTo6VUlDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAg
ZXhwbGljaXQgVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0y
MTM4LDYgKzIyMTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiB2b2lkIFdLUGFnZVNl
dFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZp
Z2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlTmF2
aWdhdGlvbkNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IE5hdmlnYXRpb25DbGllbnQoY29uc3QgV0tQYWdlTmF2
aWdhdGlvbkNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTI1MDMsMTYgKzI1ODMsMTggQEAgcHJpdmF0
ZToKICAgICB9CiB9OwogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYg
cGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGll
bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGlmIChjbGllbnQpCi0gICAgICAg
IHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVD
bGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCi0g
ICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwor
ICAgICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxscHRy
KTsKIH0KIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2
YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3Jp
cHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQu
aGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBjYWxsYmFjayh0b0FQSShyZXN1bHQudmFsdWUoKS5n
ZXQoKSksIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjUzMSw2ICsyNjEzLDcgQEAgc3RhdGljIHZv
aWQgY2FsbFJ1bkphdmFTY3JpcHRCbG9ja0FuZFJlbGVhc2UoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgcmVzdWx0VmEKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYihX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0QmxvY2sgYmxvY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZShwYWdlUmVmLCBzY3JpcHRSZWYsIEJsb2NrX2NvcHkoYmxv
Y2spLCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFzZSk7CiB9CiAjZW5kaWYKQEAgLTI1
NDQsMzEgKzI2MjcsMzcgQEAgc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+IHRvU3RyaW5nQ2FsbGJhY2sodm9pZCogY29udGV4dCwgdm8KIAogdm9pZCBXS1BhZ2VS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25GdW5jdGlvbiBj
YWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJhbWUoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U291cmNlRm9yRnJhbWUodG9JbXBsKGZy
YW1lUmVmKSwgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lk
IFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmdGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRDb250ZW50c0FzU3Ry
aW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5vLCB0b1N0cmluZ0NhbGxi
YWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9m
aWxlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRCeXRlY29kZVBy
b2ZpbGVGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUodG9TdHJpbmdDYWxsYmFjayhjb250
ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRw
dXQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNhbXBsaW5nUHJv
ZmlsZXJPdXRwdXRGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvU3RyaW5n
Q2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAg
ICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwpA
QCAtMjU3Niw2ICsyNjY1LDcgQEAgdm9pZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2UKIAogdm9pZCBXS1Bh
Z2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNSFRNTCkKICAgICB0b0ltcGwocGFnZVJl
ZiktPmdldENvbnRlbnRzQXNNSFRNTERhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRh
KiBkYXRhKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0
KTsKQEAgLTI1ODksNiArMjY3OSw3IEBAIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0
YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29uCiAKIHZvaWQg
V0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQoW2NvbnRleHQsIGNhbGxiYWNr
XSgpIHsKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7CkBAIC0y
NjI2LDYgKzI3MTcsNyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5U3RhbmRhcmRVc2VyQWdlbnRX
aXRoQXBwbGljYXRpb25OYW1lKFdLU3RyaW5nUmVmIGFwcGxpY2F0aQogCiB2b2lkIFdLUGFnZVZh
bGlkYXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9p
ZCogY29udGV4dCwgV0tQYWdlVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2sgY2FsbGJhY2spCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gY29tbWFuZE5hbWUgPSB0b0ltcGwoY29t
bWFuZCktPnN0cmluZygpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+dmFsaWRhdGVDb21tYW5kKGNv
bW1hbmROYW1lLCBbY29udGV4dCwgY2FsbGJhY2ssIGNvbW1hbmROYW1lXShib29sIGlzRW5hYmxl
ZCwgaW50MzJfdCBzdGF0ZSkgewogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6
Y3JlYXRlKGNvbW1hbmROYW1lKS5wdHIoKSksIGlzRW5hYmxlZCwgc3RhdGUsIG51bGxwdHIsIGNv
bnRleHQpOwpAQCAtMjYzNCw2ICsyNzI2LDcgQEAgdm9pZCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmQo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGNvbW1hbmQsIHZvaWQqIGNvbnRleHQKIAog
dm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYg
Y29tbWFuZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5leGVjdXRlRWRpdENvbW1hbmQodG9JbXBsKGNvbW1hbmQpLT5zdHJpbmcoKSk7CiB9CiAKQEAg
LTI2NDYsOSArMjczOSwxMCBAQCBzdGF0aWMgUHJpbnRJbmZvIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhjb25zdCBXS1ByaW50SW5mbyYgcHJpbnRJbmZvKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdl
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdG
dW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmNv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbikgeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChm
cmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2Fs
ZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdp
bikgewogICAgICAgICBWZWN0b3I8V0tSZWN0PiB3a1JlY3RzKHJlY3RzLnNpemUoKSk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAg
ICB3a1JlY3RzW2ldID0gdG9BUEkocmVjdHNbaV0pOwpAQCAtMjY1NywyMiArMjc1MSwyNSBAQCB2
b2lkIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1ByaW50SW5mbwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdL
UGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1By
aW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdl
RHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCit2b2lkIFdLUGFnZURy
YXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50
SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdlRHJh
d1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludElu
Zm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRh
dGEqIGRhdGEpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8o
cHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEq
IGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQp
OwogICAgIH0pOwogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdlQmVnaW5QcmludGluZyhXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvKQordm9pZCBX
S1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1ByaW50SW5mbyBwcmludEluZm8pCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5iZWdpblByaW50aW5n
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pKTsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5iZWdpblByaW50aW5n
KHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pKTsKIH0K
IAotdm9pZCBXS1BhZ2VFbmRQcmludGluZyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRW5k
UHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5lbmRQcmlu
dGluZygpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmVu
ZFByaW50aW5nKCk7CiB9CiAKIGJvb2wgV0tQYWdlR2V0SXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KFdLUGFnZVJlZiBwYWdlKQpAQCAtMjY4MCw5ICsyNzc3LDEwIEBAIGJvb2wgV0tQYWdlR2V0SXND
b250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlKQogICAgIHJldHVybiB0b0ltcGwo
cGFnZSktPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpOwogfQogCi12b2lkIFdLUGFnZVNldENv
bnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2UsIGJvb2wgY29udHJvbGxlZCkKK3Zv
aWQgV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgYm9v
bCBjb250cm9sbGVkKQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0Q29udHJvbGxlZEJ5QXV0b21h
dGlvbihjb250cm9sbGVkKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpOwogfQogCiBib29s
IFdLUGFnZUdldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNjk1
LDIzICsyNzkzLDI2IEBAIGJvb2wgV0tQYWdlR2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihXS1Bh
Z2VSZWYgcGFnZSkKICNlbmRpZiAgICAKIH0KIAotdm9pZCBXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJ
bnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBib29sIGFsbG93KQordm9pZCBXS1BhZ2VTZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGFsbG93KQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICB0
b0ltcGwocGFnZSktPnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYWxsb3cpOworICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihhbGxvdyk7CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5V
U0VEX1BBUkFNKGFsbG93KTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZVNldE1lZGlhVm9sdW1l
KFdLUGFnZVJlZiBwYWdlLCBmbG9hdCB2b2x1bWUpCit2b2lkIFdLUGFnZVNldE1lZGlhVm9sdW1l
KFdLUGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB2b2x1bWUpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5z
ZXRNZWRpYVZvbHVtZSh2b2x1bWUpOyAgICAKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYVZvbHVtZSh2b2x1bWUpOwogfQogCi12b2lkIFdLUGFn
ZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQor
dm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tNZWRpYU11dGVkU3RhdGUg
bXV0ZWRTdGF0ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIGNvcmVTdGF0ZTsKIAogICAgIGlmIChtdXRlZFN0
YXRlICYga1dLTWVkaWFBdWRpb011dGVkKQpAQCAtMjcyMSwxMiArMjgyMiwxMyBAQCB2b2lkIFdL
UGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRl
KQogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFTY3JlZW5DYXB0dXJlTXV0ZWQpCiAgICAg
ICAgIGNvcmVTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6U2Ny
ZWVuQ2FwdHVyZUlzTXV0ZWQpOwogCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNdXRlZChjb3JlU3Rh
dGUpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TXV0ZWQoY29yZVN0YXRlKTsKIH0KIAotdm9p
ZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlLCBib29sIGVuYWJs
ZWQpCit2b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhQ2FwdHVyZUVuYWJs
ZWQoZW5hYmxlZCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRN
ZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjczNCwzMCArMjgzNiwzMyBA
QCBib29sIFdLUGFnZUdldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UpCiAgICAg
cmV0dXJuIHRvSW1wbChwYWdlKS0+bWVkaWFDYXB0dXJlRW5hYmxlZCgpOwogfQogCi12b2lkIFdL
UGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpZEFs
bG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWRBbGxv
d1BvaW50ZXJMb2NrKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaWRBbGxvd1BvaW50ZXJMb2Nr
KCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFn
ZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKFdLUGFn
ZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdl
UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQ
YWdlRGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VEaWREZW55
UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWREZW55UG9p
bnRlckxvY2soKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZERlbnlQb2ludGVyTG9jaygpOwog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYp
OwogI2VuZGlmCiB9CiAKQEAgLTI3OTAsMTYgKzI4OTUsMTggQEAgV0tGcmFtZVJlZiBXS1BhZ2VM
b29rVXBGcmFtZUZyb21IYW5kbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVIYW5kbGVSZWYg
aGFuZGwKIAogdm9pZCBXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KFdLUGFnZVJl
ZiBwYWdlUmVmLCBib29sIG1heVN0YXJ0TWVkaWEpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlT
dGFydE1lZGlhKTsKIH0KIAogCi12b2lkIFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbShXS1Bh
Z2VSZWYgcGFnZSwgV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbSkKK3ZvaWQgV0tQYWdlU2VsZWN0
Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0NvbnRleHRNZW51SXRlbVJlZiBp
dGVtKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICB0b0ltcGwocGFnZSktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCh0b0ltcGwoaXRl
bSktPmRhdGEoKSkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoKHRvSW1wbChpdGVtKS0+ZGF0YSgpKSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGl0ZW0pOwog
I2VuZGlmCiB9CkBAIC0yODIxLDggKzI5MjgsOSBAQCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBX
S1BhZ2VHZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJu
IGtXS1Njcm9sbFBpbm5pbmdCZWhhdmlvckRvTm90UGluOwogfQogCi12b2lkIFdLUGFnZVNldFNj
cm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSwgV0tTY3JvbGxQaW5uaW5nQmVoYXZp
b3IgcGlubmluZykKK3ZvaWQgV0tQYWdlU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBTY3JvbGxQaW5uaW5nQmVoYXZpb3IgY29yZVBpbm5pbmcgPSBT
Y3JvbGxQaW5uaW5nQmVoYXZpb3I6OkRvTm90UGluOwogCiAgICAgc3dpdGNoIChwaW5uaW5nKSB7
CkBAIC0yODM5LDcgKzI5NDcsNyBAQCB2b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cihXS1BhZ2VSZWYgcGFnZSwgV0tTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IoY29yZVBpbm5pbmcpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKGNvcmVQaW5uaW5nKTsKIH0KIAogYm9vbCBXS1BhZ2VH
ZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjg0Nyw5ICsyOTU1LDEwIEBA
IGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1
cm4gdG9JbXBsKHBhZ2UpLT5hZGRzVmlzaXRlZExpbmtzKCk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBhZGRzVmlzaXRlZExpbmtzKQor
dm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGFk
ZHNWaXNpdGVkTGlua3MpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRBZGRzVmlzaXRlZExpbmtz
KGFkZHNWaXNpdGVkTGlua3MpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CiB9CiAKIGJv
b2wgV0tQYWdlSXNQbGF5aW5nQXVkaW8oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yODg0LDIwICsyOTkz
LDIzIEBAIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQog
CiB2b2lkIFdLUGFnZUNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKFdLUGFnZVJlZiBwYWdlUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFy
V2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQgV0tQYWdlQ2FsbEFmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdl
UG9zdFByZXNlbnRhdGlvblVwZGF0ZUZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVM
aW1pdHMoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpCit2
b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKFdLUGFnZVJlZiBwYWdlUmVm
LCBib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKLSAgICB0b0ltcGwocGFnZSktPnNldEZv
cmNlQWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9y
dFNjYWxlTGltaXRzKTsKICNlbmRpZgogfQogCkBAIC0yOTA3LDkzICszMDE5LDEwNSBAQCBQcm9j
ZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2UpCiB9CiAKICNp
ZmRlZiBfX0JMT0NLU19fCi12b2lkIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihXS1Bh
Z2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2NrKQordm9p
ZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
ZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHRvSW1wbChwYWdl
KS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgeworICAgIHRvSW1wbChwYWdlUmVmKS0+
Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgewogICAgICAgICBibG9jaygpOwogICAgIH0p
OwogI2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgYmxvY2soKTsKICNlbmRp
ZiAvLyBub3QgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogfQogI2VuZGlmCiAKLXZvaWQg
V0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VE
dW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQordm9pZCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kdW1w
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KSB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFtj
YWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkgewogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKHByaXZhdGVDbGlja01l
YXN1cmVtZW50LmltcGwoKSksIGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdl
Q2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10g
KCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsK
ICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBib29sIHZhbHVlLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
Q29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCB2YWx1ZSwgV0tQYWdlU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKHZhbHVlLCBbY2FsbGJh
Y2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcodmFsdWUsIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAg
IGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlTWFy
a0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KQordm9pZCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZU1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5tYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxi
YWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAg
ICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFn
ZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTaW11bGF0
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChb
Y2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFj
a0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJl
ZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlV
UkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3Zv
aWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRl
c3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMKFVSTCgp
LCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAg
ICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVS
TFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZv
clRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAg
IHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVS
TEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0
LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAg
IH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25SZXBvcnRVUkxzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291cmNlVVJM
LCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJl
ZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS1BhZ2VTZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgdG9XVEZTdHJpbmcoc291cmNlVVJMKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoZGVz
dGluYXRpb25VUkwpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0
cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhkZXN0aW5hdGlvblVSTCkp
LCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxs
YmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJr
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VN
YXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5tYXJr
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tDb250
ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPm1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxi
YWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdW5saW5rYWJs
ZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBX
S1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFn
ZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdL
U3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tTdHJpbmdSZWYga2V5SUQsIFdLUGFnZVNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZyh0b1dURlN0cmluZyh1bmxpbmthYmxlVG9rZW4pLCB0b1dURlN0cmluZyhz
ZWNyZXRUb2tlbiksIHRvV1RGU3RyaW5nKHNpZ25hdHVyZSksIHRvV1RGU3RyaW5nKGtleUlEKSwg
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nKHRvV1RGU3RyaW5nKHVubGlua2FibGVUb2tlbiksIHRvV1RGU3RyaW5nKHNlY3JldFRva2Vu
KSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJlKSwgdG9XVEZTdHJpbmcoa2V5SUQpLCBbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQp
OwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1Bh
Z2VSZWYgcGFnZSwgdWludDY0X3Qgb3JpZW50YXRpb24pCit2b2lkIFdLUGFnZVNldE1vY2tDYW1l
cmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qgb3JpZW50YXRpb24pCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlKS0+c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNh
cHR1cmUob3JpZW50YXRpb24pOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0T3JpZW50YXRpb25G
b3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOwogI2VuZGlmCiB9CiAKQEAgLTMwMDYsMzYgKzMx
MzAsNDAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlckVuYWJsZWQoV0tQYWdlUmVmKQogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlTG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1Bh
Z2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUxvYWRl
ZFN1YnJlc291cmNlRG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5nZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
JiBkb21haW5zKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mJiBkb21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlE
b21haW5zID0gV1RGOjptYXAoZG9tYWlucywgW10oYXV0byYgZG9tYWluKSB7CiAgICAgICAgICAg
ICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0cmluZzo6Y3JlYXRlKFdURk1vdmUo
ZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAgICAgICAgY2FsbGJhY2sodG9BUEko
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpLnB0cigpKSwgY2FsbGJhY2tD
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVO
VVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBjYWxsYmFjayhudWxscHRyLCBjYWxsYmFja0NvbnRl
eHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21h
aW5zKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
KyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VTZXRN
ZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIGRvdWJs
ZSBkZWxheSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0
aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgZGVsYXkpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzKGRlbGF5KSk7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVkaWFDYXB0dXJlUmVw
b3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxheSkpOwogfQogCi12b2lkIFdLUGFnZURpc3BhdGNoQWN0
aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURp
c3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
Ci0gICAgdG9JbXBsKHBhZ2UpLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5n
KCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlzcGF0
Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMmI2YzZmOGVjYmIxZTUwZTIx
MTdkMjZmMWMwODJiY2EwOGEyZDI2Yy4uYzk4MzJhZGU1ZWMyYzVjZDAyMDgwNGVkMDE2ZDZmN2Jl
N2E0MGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xOTksNiArMTk5LDkgQEAgc3RhdGljIGNvbnN0IEJPT0wgZGVmYXVsdEZhc3RD
bGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmaXJzdFNES1ZlcnNp
b25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0gMHhBMDAwMDsKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogCisjZGVmaW5lIFRIUk9XX0lGX1NVU1BFTkRFRCBpZiAoX3Bh
Z2UgJiYgX3BhZ2UtPmlzU3VzcGVuZGVkKCkpIFwKKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmlldyBpcyBz
dXNwZW5kZWQiXQorCiBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRh
aWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgYXV0
byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CkBAIC03MTgsMTEgKzcyMSwxMyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZToo
aWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KSk7
CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlVVJMOihOU1VSTCAqKVVSTCBhbGxvd2lu
Z1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNzVVJMCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIGlmICghW1VSTCBpc0ZpbGVVUkxdKQogICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJUAgaXMgbm90IGEg
ZmlsZSBVUkwiLCBVUkxdOwogCkBAIC03MzQsNiArNzM5LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
bG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAq
KXJlYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKIAogICAgIHJldHVybiBbc2VsZiBsb2FkRGF0YTpkYXRhIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6QCJVVEYtOCIgYmFzZVVSTDpiYXNlVVJM
XTsKQEAgLTc0MSwxMSArNzQ3LDEzIEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5n
OihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIAogLSAoV0tOYXZp
Z2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlN
RVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5n
TmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVy
RW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKSk7CiB9CiAKIC0gKHZvaWQpc3Rh
cnREb3dubG9hZFVzaW5nUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVzdCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8qIGRvd25sb2FkKSB7CiAgICAgICAgIGlmIChkb3dubG9hZCkKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKQEAgLTc1Niw2ICs3NjQsNyBAQCAtICh2
b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaQogCiAtICh2b2lkKXJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3du
bG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKICAgICBbdW5hcmNo
aXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlz
ZUV4Y2VwdGlvbl07CiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIg
ZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5
IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xh
c3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10s
IG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CkBAIC03ODIsNiAr
NzkxLDcgQEAgLSAodm9pZClyZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2kKIAogLSAoV0tOYXZpZ2F0aW9uICopZ29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNr
Rm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkpOwogfQogCkBAIC04NDAsNiArODUwLDcgQEAgLSAoQk9P
TCljYW5Hb0ZvcndhcmQKIAogLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIGlmIChzZWxmLl9zYWZlQnJvd3NpbmdXYXJuaW5nKQogICAgICAg
ICByZXR1cm4gW3NlbGYgcmVsb2FkXTsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29CYWNr
KCkpOwpAQCAtODQ3LDExICs4NTgsMTMgQEAgLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiAKIC0g
KFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29Gb3J3YXJkKCkpOwogfQogCiAtIChXS05hdmlnYXRp
b24gKilyZWxvYWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgT3B0aW9uU2V0PFdl
YkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAobGlua2VkT25PckFm
dGVyKFdlYkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVoYXZp
b3IpKQogICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4
cGlyZWRPbmx5KTsKQEAgLTg2MSwyNiArODc0LDMxIEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9h
ZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVs
b2FkT3B0aW9uOjpGcm9tT3JpZ2luKSk7CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0b3BMb2FkaW5nKCk7CiB9CiAKIC0g
KHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3Jp
cHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwg
d2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpuaWwgaW5Xb3Js
ZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOwogfQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZh
U2NyaXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6
KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNB
c3luY0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNl
VXNlckdlc3R1cmU6WUVTIGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKWNhbGxBc3luY0ph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhcmd1bWVudHM6KE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5GcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNj
cmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpu
aWwgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpm
cmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CiB9CiAKQEAgLTkyMCw2ICs5MzgsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3Vt
ZW50KGlkIGFyZ3VtZW50KQogCiAtICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTkzNiw2ICs5NTUsNyBAQCAtICh2b2lkKWNs
b3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aQogCiAtICh2b2lkKXBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBf
cGFnZS0+cGF1c2VBbGxNZWRpYVBsYXliYWNrKFtdIHsgfSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTk0Niw2ICs5NjYsNyBAQCAtICh2b2lkKXBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbgogCiAtICh2b2lkKXNldEFs
bE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6KEJPT0wpc3VzcGVuZGVkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdIHsgfTsKIApAQCAtOTc2LDYgKzk5Nyw3IEBAIHN0YXRpYyBXS01lZGlhUGxheWJh
Y2tTdGF0ZSB0b1dLTWVkaWFQbGF5YmFja1N0YXRlKFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRl
IG1lCiAKIC0gKHZvaWQpcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tNZWRpYVBsYXliYWNrU3RhdGUpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTAwNiw2ICsxMDI4LDcgQEAgLSAoV0tNZWRpYUNhcHR1cmVT
dGF0ZSltaWNyb3Bob25lQ2FwdHVyZVN0YXRlCiAKIC0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1
cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH07CiAKQEAgLTEwMjcsNiArMTA1MCw3IEBAIC0gKHZvaWQpc2V0TWljcm9waG9uZUNh
cHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoo
CiAKIC0gKHZvaWQpc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0
YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKIApAQCAtMTA0OCw2ICsxMDcyLDcg
QEAgLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3Rh
dGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5
bmNGdW5jdGlvbiB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1
cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGlu
V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHld
KTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVu
dHNNYXA7CkBAIC0xMTA5LDYgKzExMzQsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6
KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYQogCiAt
ICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJh
dGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShD
b2NvYUltYWdlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgY29uc3RleHByIGJvb2wgc25hcHNob3RGYWlsZWRUcmFjZVZhbHVl
ID0gZmFsc2U7CiAgICAgdHJhY2VQb2ludChUYWtlU25hcHNob3RTdGFydCk7CiAKQEAgLTExODIs
NiArMTIwOCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25h
cHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAKIC0gKHZvaWQpc2V0QWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uR2VzdHVyZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIF9pbXBsLT5zZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyhh
bGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyk7CiAjZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMTIyMCw2ICsxMjQ3LDcgQEAgLSAoTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdl
bnQKIAogLSAodm9pZClzZXRDdXN0b21Vc2VyQWdlbnQ6KE5TU3RyaW5nICopY3VzdG9tVXNlckFn
ZW50CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRDdXN0b21Vc2Vy
QWdlbnQoY3VzdG9tVXNlckFnZW50KTsKIH0KIApAQCAtMTIzNCw2ICsxMjYyLDcgQEAgLSAoQk9P
TClhbGxvd3NMaW5rUHJldmlldwogCiAtICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09M
KWFsbG93c0xpbmtQcmV2aWV3CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBfaW1wbC0+c2V0QWxsb3dzTGlua1ByZXZpZXcoYWxsb3dzTGlua1ByZXZp
ZXcpOwogICAgIHJldHVybjsKQEAgLTEyNTUsNiArMTI4NCw3IEBAIC0gKHZvaWQpc2V0QWxsb3dz
TGlua1ByZXZpZXc6KEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKIAogLSAodm9pZClzZXRQYWdlWm9v
bTooQ0dGbG9hdClwYWdlWm9vbQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFn
ZS0+c2V0UGFnZVpvb21GYWN0b3IocGFnZVpvb20pOwogfQogCkBAIC0xMjc5LDYgKzEzMDksNyBA
QCBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tG
aW5kQ29uZmlndXJhdGlvbiAqY29uZmlndQogCiAtICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIHdpdGhDb25maWd1cmF0aW9uOihXS0ZpbmRDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQp
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICgh
c3RyaW5nLmxlbmd0aCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tG
aW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSkuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjk2LDYgKzEzMjcsNyBAQCArIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6
KE5TU3RyaW5nICopdXJsU2NoZW1lCiAKIC0gKHZvaWQpc2V0TWVkaWFUeXBlOihOU1N0cmluZyAq
KW1lZGlhU3R5bGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldE92
ZXJyaWRkZW5NZWRpYVR5cGUobWVkaWFTdHlsZSk7CiB9CiAKQEAgLTEzMTEsNiArMTM0Myw3IEBA
IC0gKGlkKWludGVyYWN0aW9uU3RhdGUKIAogLSAodm9pZClzZXRJbnRlcmFjdGlvblN0YXRlOihp
ZClpbnRlcmFjdGlvblN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICgh
WyhpZClpbnRlcmFjdGlvblN0YXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEzMzUsNiArMTM2OCw3IEBAIC0gKFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcKIAogLSAodm9pZClzZXRBbGxvd3NNYWduaWZpY2F0aW9uOihCT09MKWFsbG93c01h
Z25pZmljYXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwtPnNldEFs
bG93c01hZ25pZmljYXRpb24oYWxsb3dzTWFnbmlmaWNhdGlvbik7CiB9CiAKQEAgLTEzNDUsMTEg
KzEzNzksMTMgQEAgLSAoQk9PTClhbGxvd3NNYWduaWZpY2F0aW9uCiAKIC0gKHZvaWQpc2V0TWFn
bmlmaWNhdGlvbjooZG91YmxlKW1hZ25pZmljYXRpb24gY2VudGVyZWRBdFBvaW50OihOU1BvaW50
KXBvaW50CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9pbXBsLT5zZXRNYWduaWZp
Y2F0aW9uKG1hZ25pZmljYXRpb24sIE5TUG9pbnRUb0NHUG9pbnQocG9pbnQpKTsKIH0KIAogLSAo
dm9pZClzZXRNYWduaWZpY2F0aW9uOihkb3VibGUpbWFnbmlmaWNhdGlvbgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0TWFnbmlmaWNhdGlvbihtYWduaWZpY2F0aW9u
KTsKIH0KIApAQCAtMTM2MCw2ICsxMzk2LDcgQEAgLSAoZG91YmxlKW1hZ25pZmljYXRpb24KIAog
LSAoTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzooTlNQcmlu
dEluZm8gKilwcmludEluZm8KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKGF1
dG8gd2ViRnJhbWVQcm94eSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIF9p
bXBsLT5wcmludE9wZXJhdGlvbldpdGhQcmludEluZm8ocHJpbnRJbmZvLCAqd2ViRnJhbWVQcm94
eSk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTE1MjcsNiArMTU2NCw3IEBAIC0gKE9wdGlvbmFsPEJP
T0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5n
CiAKIC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246KFdLUERGQ29uZmlndXJhdGlv
biAqKXBkZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAq
cGRmRG9jdW1lbnREYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQ7CiAgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAg
ICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFtZUlEKCk7CkBAIC0xNTUyLDYgKzE1OTAsNyBAQCAt
ICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihXS1BERkNvbmZpZ3VyYXRpb24gKilw
ZGZDb25maWd1cmF0aW9uIGNvbXBsZQogCiAtICh2b2lkKWNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsKQEAgLTE2
MzMsMTcgKzE2NzIsMjAgQEAgLSAodm9pZClfZGlkQ2hhbmdlRWRpdG9yU3RhdGUKIAogLSAoV0tO
YXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
cmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSByZXNwb25zZURhdGE6KE5TRGF0YSAq
KWRhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3Bh
Z2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNlLCB7IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSkpOwogfQogCiAvLyBG
SVhNRSgyMjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNlIGFkb3B0ZXJzIGhhdmUgbW92ZWQgdG8gdGhl
IGZpbmFsIEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNl
IHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICByZXR1cm4gW3NlbGYgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpy
ZXNwb25zZSByZXNwb25zZURhdGE6ZGF0YV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRT
aW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgTlNE
YXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z107CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDpyZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOnN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpAIlVURi04Il0pOwogCkBA
IC0xNjUzLDExICsxNjk1LDEzIEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluCiAvLyBGSVhNRSgy
MjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNlIGFkb3B0ZXJzIGhhdmUgbW92ZWQgdG8gdGhlIGZpbmFs
IEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVk
UmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluZzpzdHJpbmddOwogfQogCiAtIChXS05h
dmlnYXRpb24gKilsb2FkRmlsZVJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgYWxsb3dp
bmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBhdXRvIFVSTCA9IHJlcXVlc3QuVVJMOwogCiAgICAgaWYgKCFbVVJM
IGlzRmlsZVVSTF0pCkBAIC0xNjg3LDcgKzE3MzEsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3IChXS1ByaXZhdGUpCiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNkZWZpbmUgV0VCQ09SRV9Q
UklWQVRFX0NPTU1BTkQoY29tbWFuZCkgLSAodm9pZClfIyNjb21tYW5kOihpZClzZW5kZXIgeyBf
cGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfQorI2RlZmluZSBXRUJD
T1JFX1BSSVZBVEVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRl
ciB7IFRIUk9XX0lGX1NVU1BFTkRFRDsgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgjY29tbWFu
ZCAjIyBfcyk7IH0KIAogV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25DZW50ZXIpCiBXRUJD
T1JFX1BSSVZBVEVfQ09NTUFORChhbGlnbkp1c3RpZmllZCkKQEAgLTE3MDYsMjEgKzE3NTAsMjUg
QEAgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQocGFzdGVBbmRNYXRjaFN0eWxlKQogCiAtICh2b2lk
KV90b2dnbGVTdHJpa2VUaHJvdWdoOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgic3RyaWtldGhyb3VnaCJfcyk7CiB9
CiAKIC0gKHZvaWQpX2luY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmluY3JlYXNlTGlzdExldmVsKCk7CiB9CiAKIC0gKHZv
aWQpX2RlY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPmRlY3JlYXNlTGlzdExldmVsKCk7CiB9CiAKIC0gKHZvaWQpX2NoYW5n
ZUxpc3RUeXBlOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3Bh
Z2UtPmNoYW5nZUxpc3RUeXBlKCk7CiB9CiAKQEAgLTE3NzIsNiArMTgyMCw3IEBAIC0gKENHU2l6
ZSlfdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cwogCiAtICh2b2lkKV9zZXRWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOihDR1NpemUpdmlld3BvcnRTaXplCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gdmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cyA9
IFdlYkNvcmU6OkludFNpemUodmlld3BvcnRTaXplKTsKICAgICBpZiAodmlld3BvcnRTaXplRm9y
Vmlld3BvcnRVbml0cy5pc0VtcHR5KCkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJWaWV3cG9ydCBzaXplIHNob3VsZCBub3Qg
YmUgZW1wdHkiXTsKQEAgLTE3OTMsNiArMTg0Miw3IEBAIC0gKF9XS0luc3BlY3RvciAqKV9pbnNw
ZWN0b3IKIAogLSAodm9pZClfZGlkRW5hYmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEVG9OYW1lTWFwCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHRyYW5zZm9y
bWVkOwogICAgIHRyYW5zZm9ybWVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXh0ZW5zaW9uSURU
b05hbWVNYXAuY291bnQpOwogICAgIFtleHRlbnNpb25JRFRvTmFtZU1hcCBlbnVtZXJhdGVLZXlz
QW5kT2JqZWN0c1VzaW5nQmxvY2s6WyZdKE5TU3RyaW5nICpleHRlbnNpb25JRCwgTlNTdHJpbmcg
KmV4dGVuc2lvbk5hbWUsIEJPT0wgKikgewpAQCAtMTgwMyw2ICsxODUzLDcgQEAgLSAodm9pZClf
ZGlkRW5hYmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0
cmluZyAqPiAqKWV4dGUKIAogLSAodm9pZClfZGlkRGlzYWJsZUJyb3dzZXJFeHRlbnNpb25zOihO
U1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBIYXNoU2V0PFN0cmluZz4gdHJhbnNmb3JtZWQ7CiAgICAgdHJhbnNmb3JtZWQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25JRHMuY291bnQpOwogICAgIGZvciAoTlNTdHJp
bmcgKmV4dGVuc2lvbklEIGluIGV4dGVuc2lvbklEcykKQEAgLTE4NTEsNiArMTkwMiw3IEBAIC0g
KEJPT0wpX2lzRWRpdGFibGUKIAogLSAodm9pZClfc2V0RWRpdGFibGU6KEJPT0wpZWRpdGFibGUK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYm9vbCB3YXNFZGl0YWJsZSA9IF9wYWdl
LT5pc0VkaXRhYmxlKCk7CiAgICAgX3BhZ2UtPnNldEVkaXRhYmxlKGVkaXRhYmxlKTsKICNpZiBQ
TEFURk9STShNQUMpCkBAIC0xODY4LDYgKzE5MjAsNyBAQCAtICh2b2lkKV9zZXRFZGl0YWJsZToo
Qk9PTCllZGl0YWJsZQogCiAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICop
Y29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2b2lkIChe
KShCT09MKSljb21wbGV0aW9uCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdl
LT5leGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQsIFtjYXB0dXJlZENvbXBsZXRp
b25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0gewogICAgICAgICBpZiAoY2FwdHVy
ZWRDb21wbGV0aW9uQmxvY2spCiAgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhZ
RVMpOwpAQCAtMTkwMyw2ICsxOTU2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+PiBjcmVhdGVVc2VySW5mbyhjb25zdCBPcHRpb25hbDxXZWIKIAogLSAo
dm9pZClfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOihfV0tUZXh0TWFu
aXB1bGF0aW9uQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbjoodm9pZChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHVz
aW5nIEV4Y2x1c2lvblJ1bGUgPSBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
RXhjbHVzaW9uUnVsZTsKIAogICAgIGlmICghX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSB8fCAh
X3BhZ2UpIHsKQEAgLTE5NjcsNiArMjAyMSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5JZGVudGlmaWVyIGNvcmVUZXh0TWFuaXB1bGF0aW9uCiAK
IC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW0gKilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIV9wYWdlKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyNCw2
ICsyMDc5LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25F
cnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXQKIAogLSAodm9pZClfY29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
Kj4gKilpdGVtcyBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3Jz
KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAo
IV9wYWdlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VGYWlsdXJlU2V0Rm9yQWxs
VGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0ZW1zKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIwNTEsNiArMjEwNyw3IEBAIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0
ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopCiAKIC0gKHZvaWQpX3Rh
a2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBbc2VsZiBfdGFrZUZpbmRTdHJpbmdGcm9t
U2VsZWN0aW9uSW50ZXJuYWw6c2VuZGVyXTsKICNlbHNlCkBAIC0yMTA1LDYgKzIxNjIsNyBAQCAt
ICh2b2lkKV9zZXRIaXN0b3J5RGVsZWdhdGU6KGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+
KWhpc3RvcnlEZWxlZ2F0ZQogCiAtICh2b2lkKV91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEhBVkUoVE9VQ0hfQkFSKSAm
JiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgX2ltcGwtPnVwZGF0
ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKICNlbmRpZgpAQCAtMjEzMCw2ICsyMTg4
LDcgQEAgLSAoQk9PTClfaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlCiAKIC0gKHZvaWQpX3RvZ2ds
ZVBpY3R1cmVJblBpY3R1cmUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgSEFWRShU
T1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBf
aW1wbC0+dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpOwogI2VuZGlmCkBAIC0yMTQyLDI2ICsyMjAx
LDMxIEBAIC0gKF9XS01lZGlhTXV0ZWRTdGF0ZSlfbWVkaWFNdXRlZFN0YXRlCiAKIC0gKHZvaWQp
X2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIFtzZWxmIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVy
Om5pbF07CiB9CiAKIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1cmUKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW9WaWRlbyk7CiB9CiAKIC0gKHZvaWQpX3N0b3BB
bGxNZWRpYVBsYXliYWNrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHBh
dXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCiAtICh2
b2lkKV9zdXNwZW5kQWxsTWVkaWFQbGF5YmFjawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBbc2VsZiBzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOllFUyBjb21wbGV0aW9uSGFu
ZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5k
ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApAQCAtMjE3OCw2ICsyMjQyLDcgQEAg
c3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4KIAogLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNo
YXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAKQEAgLTIxOTIsNiArMjI1Nyw3IEBAIC0gKHZvaWQpX3Jl
c3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMKIAogLSAo
dm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQog
ICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwogICAgIApAQCAt
MjIwNCw2ICsyMjcwLDcgQEAgLSAodm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0
OihOU0RhdGEgKiloaWdobGlnaHQKIAogLSAodm9pZClfYWRkQXBwSGlnaGxpZ2h0CiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBfcGFn
ZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpObywgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDo6WWVzKTsKICNlbmRpZgpAQCAtMjIyMywyMyArMjI5MCwyNyBAQCAtIChOU1VSTCAqKV9t
YWluRnJhbWVVUkwKIAogLSAodm9pZClfbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNV
UkwgKil1bnJlYWNoYWJsZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBOU0Rh
dGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKICAgICBfcGFnZS0+bG9hZEFsdGVybmF0ZUhUTUwoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sICJVVEYtOCJfcywgYmFzZVVSTCwgdW5y
ZWFjaGFibGVVUkwpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5TRGF0YSAq
KWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1l
OihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VV
UkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29k
aW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6
OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6KEJP
T0wpc2hvdWxkT3BlbkV4dGVybmFsVVJMcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeSA9IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHMgPyBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5QWxsb3cgOiBfV0tTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Tm90QWxsb3c7CiAgICAgcmV0dXJuIFtzZWxmIF9sb2Fk
UmVxdWVzdDpyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6cG9saWN5XTsKIH0K
IAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6KF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeQogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeTsK
ICAgICBzd2l0Y2ggKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIHsKICAgICBjYXNlIF9X
S1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lOb3RBbGxvdzoKQEAgLTIyNTcsMjQgKzIzMjgs
MjggQEAgLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2wKIAogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb0Fz
c2V0U2VydmljZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlKQog
ICAgICAgICBfcGFnZS0+Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKTsKIH0KIAogLSAodm9p
ZClfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPnJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcygpOwogfQogCiAtICh2b2lkKV9zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2Vy
Rm9udFJlZ2lzdHJ5CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkK
ICAgICAgICAgX3BhZ2UtPnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVn
aXN0cnkoKTsKIH0KIAogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICog
Y29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW3JlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbiks
IGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8mJiBhcHBCb3VuZERhdGEpIG11dGFibGUgewogICAgICAgICBpZiAoIWFwcEJvdW5kRGF0YS5j
b250ZXh0RGF0YS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7CkBAIC0yMjg1LDYgKzIzNjAsMjggQEAgLSAodm9pZClfYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlv
bkhhbmRsZXI6KHYKICAgICB9KTsKIH0KIAorLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFfcGFnZSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2Ut
PnN1c3BlbmQoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3Mp
OworICAgIH0pOworfQorCistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5yZXN1bWUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBz
dWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOwor
fQorCiAtIChOU0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KIHsKICAgICBpZiAoV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCkBAIC0yMzE4LDYg
KzI0MTUsNyBAQCAtIChOU1N0cmluZyAqKV9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKIAog
LSAodm9pZClfc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OihOU1N0cmluZyAqKWFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCk7CiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdl
bnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKIH0KQEAgLTIzNzAsNiArMjQ2OCw3IEBA
IC0gKEJPT0wpX3dlYlByb2Nlc3NJc1Jlc3BvbnNpdmUKIAogLSAodm9pZClfa2lsbFdlYkNvbnRl
bnRQcm9jZXNzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghW3NlbGYgX2lz
VmFsaWRdKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzNzgsMTYgKzI0NzcsMTkgQEAgLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRo
b3V0Q29udGVudEJsb2NrZXJzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVy
biB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRFeHBpcmVkT25s
eQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKTsKIH0KIAogLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBSZWY8V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk+IHByb3RlY3RlZFByb2Nl
c3NQcm94eShfcGFnZS0+cHJvY2VzcygpKTsKICAgICBwcm90ZWN0ZWRQcm9jZXNzUHJveHktPnJl
cXVlc3RUZXJtaW5hdGlvbihXZWJLaXQ6OlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVz
dGVkQnlDbGllbnQpOwogCkBAIC0yMzk5LDYgKzI1MDEsNyBAQCAtICh2b2lkKV9raWxsV2ViQ29u
dGVudFByb2Nlc3NBbmRSZXNldFN0YXRlCiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJh
dGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgUmV0YWluUHRy
PFdLUERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmlndXJhdGlvbjsKICAgICBpZiAoc25hcHNob3RD
b25maWd1cmF0aW9uKSB7CiAgICAgICAgIHBkZkNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tQ
REZDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNDEwLDYgKzI1MTMsNyBAQCAtICh2
b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24gKilzbmFwc2hvdENvbgogCiAtICh2b2lkKV9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFt
ZTooX1dLRnJhbWVIYW5kbGUgKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShDR1Np
emUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5nZXRQREZGaXJzdFBhZ2VTaXplKGZyYW1lLT5fZnJhbWVIYW5kbGUtPmZyYW1lSUQoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oV2Vi
Q29yZTo6RmxvYXRTaXplIHNpemUpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGlj
X2Nhc3Q8Q0dTaXplPihzaXplKSk7CiAgICAgfSk7CkBAIC0yNDQwLDYgKzI1NDQsNyBAQCAtIChf
V0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtICppdAogCiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURh
dGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0
YXRlIGRlY29kZXIuCiAgICAgV2ViS2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogICAg
IGlmICghV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNlc3Npb25TdGF0ZURhdGEuYnl0ZXMpLCBzZXNzaW9uU3RhdGVEYXRhLmxlbmd0
aCwgc2Vzc2lvblN0YXRlKSkKQEAgLTI0NTAsNiArMjU1NSw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YQogCiAtIChXS05h
dmlnYXRpb24gKilfcmVzdG9yZVNlc3Npb25TdGF0ZTooX1dLU2Vzc2lvblN0YXRlICopc2Vzc2lv
blN0YXRlIGFuZE5hdmlnYXRlOihCT09MKW5hdmlnYXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShz
ZXNzaW9uU3RhdGUgPyBzZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUgOiBXZWJLaXQ6OlNlc3Np
b25TdGF0ZSB7IH0sIG5hdmlnYXRlKSk7CiB9CiAKQEAgLTI0NjAsNiArMjU2Niw3IEBAIC0gKHZv
aWQpX2Nsb3NlCiAKIC0gKEJPT0wpX3RyeUNsb3NlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIHJldHVybiBfcGFnZS0+dHJ5Q2xvc2UoKTsKIH0KIApAQCAtMjQ3MCw2ICsyNTc3LDcg
QEAgLSAoQk9PTClfaXNDbG9zZWQKIAogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmlu
ZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVu
dERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2Vz
cykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgVU5V
U0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKICAg
ICBpZiAoZmlsZW5hbWUpCkBAIC0yNDc5LDEyICsyNTg3LDE0IEBAIC0gKF9XS0F0dGFjaG1lbnQg
KilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250
ZW50VHlwCiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3Jh
cHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAq
KWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlv
bnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAg
ICByZXR1cm4gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBw
ZXIgY29udGVudFR5cGU6Y29udGVudFR5cGUgY29tcGxldGlvbjpjb21wbGV0aW9uSGFuZGxlcl07
CiB9CiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNv
bnRlbnRUeXBlIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlm
aWVyLCAqX3BhZ2UpOwpAQCAtMjUwNCw2ICsyNjE0LDcgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9p
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBw
ZXIKIAogLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IF9wYWdlLT5hdHRh
Y2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXIo
YXR0YWNobWVudCk7CkBAIC0yNTEzLDYgKzI2MjQsNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0
dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAogLSAodm9pZClf
c2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZVdpdGhBbHBoYTooZG91YmxlKWFscGhhIGJl
dGE6KGRvdWJsZSliZXRhIGdhbW1hOihkb3VibGUpZ2FtbWEKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEs
IGJldGEsIGdhbW1hKTsKIH0KIApAQCAtMjUyOCw2ICsyNjQwLDcgQEAgKyAoQk9PTClfd2lsbFVw
Z3JhZGVUb0hUVFBTOihOU1VSTCAqKXVybAogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2Fy
bmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5p
bmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBbc2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRs
ZTp0aXRsZSB3YXJuaW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRp
b25IYW5kbGVyOl4oQk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAg
ICAgQVNTRVJUKCF1cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2Fm
ZUxvYWQpOwpAQCAtMjUzNiw2ICsyNjQ5LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dh
cm5pbmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKikKIAog
LSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRs
ZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczoo
TlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBb
c2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTp0aXRsZSB3YXJu
aW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOl4o
Qk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAgICAgQVNTRVJUKCF1
cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2FmZUxvYWQpOwpAQCAt
MjU0NCw2ICsyNjU4LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJM
OihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXIKIAogLSAodm9pZClfc2hv
d1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcg
Kil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczooTlNB
dHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09M
LCBOU1VSTCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBhdXRvIHNhZmVCcm93c2luZ1dhcm5pbmcgPSBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5p
bmc6OmNyZWF0ZSh1cmwsIHRpdGxlLCB3YXJuaW5nLCBkZXRhaWxzKTsKICAgICBhdXRvIHdyYXBw
ZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSAoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmIHZhcmlhbnQpIHsK
ICAgICAgICAgc3dpdGNoT24odmFyaWFudCwgWyZdIChXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9h
ZCBjb250aW51ZVVuc2FmZUxvYWQpIHsKQEAgLTI1NzYsNiArMjY5MSw3IEBAICsgKE5TVVJMICop
X3Zpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsCiAKIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBfcGFnZS0+aXNKSVRFbmFibGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CkBAIC0yNTgzLDExICsyNjk5LDEzIEBAIC0gKHZv
aWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2
b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2
YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3
aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOk5PIGlu
RnJhbWU6bmlsIGluV29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfY2FsbEFzeW5jSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250
ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6ZnVuY3Rp
b25Cb2R5IGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50
czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAg
LTI2MTIsMTEgKzI3MzAsMTMgQEAgLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2Vk
CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVu
dFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhTb3VyY2VVUkw6KE5TVVJMICop
dXJsIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVu
dFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDp1cmwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTI2MjYsNiArMjc0Niw3IEBAIC0g
KHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0
ZVBvbGljaWVzCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgaWYgKHdlYnBhZ2VQcmVmZXJlbmNlcy5fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IlVwZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4iXTsKICAgICBpZiAod2VicGFnZVByZWZlcmVu
Y2VzLl91c2VyQ29udGVudENvbnRyb2xsZXIpCkBAIC0yNjM2LDExICsyNzU3LDEzIEBAIC0gKHZv
aWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJw
YWdlUHJlZmVyZW5jZXMKIAogLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPm5vdGlmeVVzZXJTY3JpcHRzKCk7CiB9CiAKIC0g
KEJPT0wpX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24KIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9wYWdlLT51c2VyU2NyaXB0c05lZWROb3RpZmlj
YXRpb24oKTsKIH0KIApAQCAtMjY1NSw2ICsyNzc4LDcgQEAgLSAoQk9PTClfYWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbgogCiAtICh2b2lkKV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09MKWFs
bG93CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQogICAgIF9wYWdlLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsKICNlbmRp
ZgpAQCAtMjY3MSw2ICsyNzk1LDcgQEAgLSAoTlNTdHJpbmcgKilfcmVtb3RlSW5zcGVjdGlvbk5h
bWVPdmVycmlkZQogCiAtICh2b2lkKV9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOihO
U1N0cmluZyAqKW5hbWUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJp
ZGUobmFtZSk7CiAjZW5kaWYKQEAgLTI2ODMsNiArMjgwOCw3IEBAIC0gKEJPT0wpX2FkZHNWaXNp
dGVkTGlua3MKIAogLSAodm9pZClfc2V0QWRkc1Zpc2l0ZWRMaW5rczooQk9PTClhZGRzVmlzaXRl
ZExpbmtzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRBZGRzVmlz
aXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOwogfQogCkBAIC0yNzMwLDYgKzI4NTYsNyBAQCAt
ICh2b2lkKV9zZXRPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOihfV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50cylvYnNlcnZlZAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsK
QEAgLTI3MzcsMTEgKzI4NjQsMTMgQEAgLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikKIAogLSAodm9p
ZClfZ2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0
YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dp
dGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0
Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFt
ZXM6Ok5vLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFN0cmlu
ZyBzdHJpbmcpIHsKICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CiAgICAgfSk7CkBAIC0y
NzQ5LDYgKzI4NzgsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yCiAKIC0gKHZvaWQpX2dldENv
bnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewogICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAg
ICAgfSk7CkBAIC0yNzU2LDYgKzI4ODYsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJh
bWVzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nCiAKIC0g
KHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRl
ZFN0cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4gKiwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVu
dHNBc0F0dHJpYnV0ZWRTdHJpbmcoW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiBhdHRyaWJ1dGVkU3RyaW5nKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVk
U3RyaW5nLnN0cmluZykKICAgICAgICAgICAgIGhhbmRsZXIoYXR0cmlidXRlZFN0cmluZy5zdHJp
bmcuZ2V0KCksIGF0dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpLCBuaWwp
OwpAQCAtMjc2Niw2ICsyODk3LDcgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRT
dHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXR0cmlidXQKIAogLSAodm9p
ZClfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgX3Bh
Z2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikg
ewpAQCAtMjgwMyw2ICsyOTM1LDcgQEAgLSAoX1dLUGFnaW5hdGlvbk1vZGUpX3BhZ2luYXRpb25N
b2RlCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25Nb2RlOihfV0tQYWdpbmF0aW9uTW9kZSlwYWdp
bmF0aW9uTW9kZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpQYWdp
bmF0aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9kZSkgewogICAgIGNh
c2UgX1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKQEAgLTI4MzQsNiArMjk2Nyw3IEBAIC0g
KEJPT0wpX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMKIAogLSAodm9pZClfc2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnMKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0KIApAQCAtMjg0NCw2ICsyOTc4LDcgQEAgLSAo
Q0dGbG9hdClfcGFnZUxlbmd0aAogCiAtICh2b2lkKV9zZXRQYWdlTGVuZ3RoOihDR0Zsb2F0KXBh
Z2VMZW5ndGgKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2VM
ZW5ndGgocGFnZUxlbmd0aCk7CiB9CiAKQEAgLTI4NTQsNiArMjk4OSw3IEBAIC0gKENHRmxvYXQp
X2dhcEJldHdlZW5QYWdlcwogCiAtICh2b2lkKV9zZXRHYXBCZXR3ZWVuUGFnZXM6KENHRmxvYXQp
Z2FwQmV0d2VlblBhZ2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5z
ZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwQmV0d2VlblBhZ2VzKTsKIH0KIApAQCAtMjg2NCw2ICszMDAw
LDcgQEAgLSAoQk9PTClfcGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZAogCiAtICh2b2lkKV9zZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOihCT09MKWxpbmVHcmlkRW5hYmxlZAogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC0yODg0LDYgKzMwMjEsNyBAQCAtIChkb3VibGUp
X3RleHRab29tRmFjdG9yCiAKIC0gKHZvaWQpX3NldFRleHRab29tRmFjdG9yOihkb3VibGUpem9v
bUZhY3RvcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0VGV4dFpv
b21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKQEAgLTI4OTQsNiArMzAzMiw3IEBAIC0gKGRvdWJs
ZSlfcGFnZVpvb21GYWN0b3IKIAogLSAodm9pZClfc2V0UGFnZVpvb21GYWN0b3I6KGRvdWJsZSl6
b29tRmFjdG9yCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldFBhZ2Va
b29tOnpvb21GYWN0b3JdOwogfQogCkBAIC0yOTU1LDYgKzMwOTQsNyBAQCBzdGF0aWMgaW5saW5l
IE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRp
b25zIHdrRmluZAogCiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3Ry
aW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIp
bWF4Q291bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CiAgICAgICAgIFtfY3VzdG9tQ29u
dGVudFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hlczpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1h
eENvdW50Om1heENvdW50XTsKQEAgLTI5NjYsNiArMzEwNiw3IEBAIC0gKHZvaWQpX2NvdW50U3Ry
aW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0
aW9ucyBtCiAKIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6
KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBXaGlsZSBBcHBLaXQgY29udGFpbnMgbG9naWMgaW4gTlNCYXJUZXh0RmluZGVyIHRvIGF1dG9t
YXRpY2FsbHkgdXBkYXRlIHRoZSBmaW5kIHBhc3RlYm9hcmQKICAgICAvLyB3aGVuIHRoZSBmaW5k
IHN0cmluZyBjaGFuZ2VzLCB0aGlzIChhbG9uZyB3aXRoIHRoZSBmaW5kIHBhc3RlYm9hcmQgaXRz
ZWxmKSBhcmUgYm90aCBtaXNzaW5nCkBAIC0yOTgyLDYgKzMxMjMsNyBAQCAtICh2b2lkKV9maW5k
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OgogCiAtICh2b2lkKV9oaWRlRmluZFVJCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9jdXN0b21Db250ZW50Vmll
dykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9oaWRlRmluZFVJXTsKQEAgLTI5
OTMsNiArMzEzNSw3IEBAIC0gKHZvaWQpX2hpZGVGaW5kVUkKIAogLSAodm9pZClfc2F2ZUJhY2tG
b3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwog
ICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRlbSk7CkBAIC0zMDA2
LDYgKzMxNDksNyBAQCAtICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVt
ZW50T3ZlcnJpZGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpAQCAtMzAx
Myw2ICszMTU3LDcgQEAgLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVy
cmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfcHJlY29u
bmVjdFRvU2VydmVyOihOU1VSTCAqKXVybAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfcGFnZS0+cHJlY29ubmVjdFRvKHVybCk7CiB9CiAKQEAgLTMwMjMsNiArMzE2OCw3IEBAIC0g
KEJPT0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiAKIC0gKHZvaWQpX3NldENhblVzZUNyZWRl
bnRpYWxTdG9yYWdlOihCT09MKWNhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShjYW5V
c2VDcmVkZW50aWFsU3RvcmFnZSk7CiB9CiAKQEAgLTMxNjMsNiArMzMwOSw3IEBAIC0gKF9XS0xh
eW91dE1vZGUpX2xheW91dE1vZGUKIAogLSAodm9pZClfc2V0TGF5b3V0TW9kZTooX1dLTGF5b3V0
TW9kZSlsYXlvdXRNb2RlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBXS0xheW91dE1vZGUgd2tWaWV3TGF5b3V0TW9kZTsKICAgICBzd2l0Y2ggKGxh
eW91dE1vZGUpIHsKQEAgLTMxOTMsMTEgKzMzNDAsMTMgQEAgLSAoQ0dTaXplKV9maXhlZExheW91
dFNpemUKIAogLSAodm9pZClfc2V0Rml4ZWRMYXlvdXRTaXplOihDR1NpemUpZml4ZWRMYXlvdXRT
aXplCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRGaXhlZExheW91
dFNpemUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShmaXhlZExh
eW91dFNpemUpKSk7CiB9CiAKIC0gKHZvaWQpX3NldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFn
ZTooQk9PTCliYWNrZ3JvdW5kRXh0ZW5kcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfcGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRz
KTsKIH0KIApAQCAtMzIxNyw2ICszMzY2LDcgQEAgLSAoQ0dGbG9hdClfdmlld1NjYWxlCiAKIC0g
KHZvaWQpX3NldFZpZXdTY2FsZTooQ0dGbG9hdCl2aWV3U2NhbGUKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgaWYgKHZpZXdTY2FsZSA8PSAwIHx8IGlzbmFuKHZpZXdTY2FsZSkgfHwg
aXNpbmYodmlld1NjYWxlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXcgc2NhbGUgc2hvdWxkIGJlIGEgcG9zaXRpdmUg
bnVtYmVyIl07CiAKQEAgLTMyMzcsMTEgKzMzODcsMTMgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAq
PiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIAogLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVybnMKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtlVmVjdG9y
PFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAogLSAodm9pZClfZ2V0UHJvY2Vzc0Rpc3BsYXlOYW1l
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0UHJvY2Vzc0Rp
c3BsYXlOYW1lKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYmIG5hbWUpIHsKICAgICAgICAgaGFuZGxlcihuYW1lKTsKICAgICB9KTsKQEAgLTMyNDksNiAr
MzQwMSw3IEBAIC0gKHZvaWQpX2dldFByb2Nlc3NEaXNwbGF5TmFtZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxlCiAKIC0gKHZvaWQpX3NldE1pbmltdW1F
ZmZlY3RpdmVEZXZpY2VXaWR0aDooQ0dGbG9hdCltaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoX3BhZ2UtPm1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCgpID09IG1pbmltdW1FZmZl
Y3RpdmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI3MSw2ICszNDI0LDcgQEAg
LSAoQ0dGbG9hdClfbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoCiAKIC0gKHZvaWQpX2dyYW50
QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZp
Y2UoKTsKIH0KQEAgLTMyNzksNiArMzQzMyw3IEBAIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVm
ZXJlbmNlU2VydmljZQogCiAtICh2b2lkKV9zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0
aW9uRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChlbmFibGVk
KTsKIH0KIApAQCAtMzMwOSw2ICszNDY0LDcgQEAgLSAoQk9PTClfYWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrCiAKIC0gKHZvaWQpX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQ
bGF5YmFjazooQk9PTClmbGFnCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgX3BhZ2UtPnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQ
bGF5YmFjayhmbGFnKTsKICNlbmRpZgpAQCAtMzM0Nyw2ICszNTAzLDcgQEAgLSAoX1dLTWVkaWFD
YXB0dXJlU3RhdGVEZXByZWNhdGVkKV9tZWRpYUNhcHR1cmVTdGF0ZQogCiAtICh2b2lkKV9zZXRN
ZWRpYUNhcHR1cmVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKQEAg
LTMzNTcsNiArMzUxNCw3IEBAIC0gKEJPT0wpX21lZGlhQ2FwdHVyZUVuYWJsZWQKIAogLSAodm9p
ZClfc2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVkU3RhdGUpbXV0ZWRTdGF0ZQogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRl
RmxhZ3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVkU3RhdGUgJiBfV0tNZWRpYUF1ZGlvTXV0
ZWQpCkBAIC0zMzcxLDYgKzM1MjksNyBAQCAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlh
TXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiAKIC0gKHZvaWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtz
OihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIF9wYWdlLT5yZW1vdmVEYXRhRGV0ZWN0
ZWRMaW5rcyhbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgcGFnZSA9IG1h
a2VXZWFrUHRyKF9wYWdlLmdldCgpKV0gKGF1dG8mIHJlc3VsdCkgewogICAgICAgICBpZiAocGFn
ZSkKQEAgLTMzODYsMTEgKzM1NDUsMTMgQEAgLSAodm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlu
a3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbgogLy8gRXhlY3V0ZSB0aGUgc3VwcGxpZWQg
YmxvY2sgYWZ0ZXIgdGhlIG5leHQgdHJhbnNhY3Rpb24gZnJvbSB0aGUgV2ViUHJvY2Vzcy4KIC0g
KHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfaW50ZXJuYWxE
b0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0Zv
clBhaW50aW5nOk5PIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCiAt
ICh2b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFp
bnRpbmc6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOnVw
ZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6WUVTIHdpdGhvdXRXYWl0aW5nRm9y
QW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5OWQ1OTI1YWE3Nzg4NjI1ZWRh
MTY5ZDg0YjM1ZDA5MTI0OTY5NzNhLi42MzFmMjMwNGRkZTQ1NzY5NDdiYWU4MzNjOTliMWY2NzA5
ZmRiZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKQEAgLTQwOCw2ICs0MDgsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4K
IAogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAorLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhkNjRhMWRkZDc3ZDJm
ODA3YTA2MjdhLi5hMzcwZjM1OGU4NzNjOWI2MDg5NTNiNzI0N2ViMjgzOWIwMzRmYzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNDMsNyArMzE0Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmIGV2ZW50KQogICAgIC8vIElmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZCwgd2hpY2gg
c2hvdWxkIGJlIHRoZSBjYXNlIGR1cmluZyBwYW5uaW5nLCBwaW5jaGluZwogICAgIC8vIGFuZCBh
bmltYXRpb24gb24gdGhlIHBhZ2UgaXRzZWxmIChraW5ldGljIHNjcm9sbGluZywgdGFwIHRvIHpv
b20pIGV0YywgdGhlbgogICAgIC8vIHdlIGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRzIHRv
IHRoZSBwYWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVycy4KLSAgICBpZiAoIW1faXNQYWdlU3Vz
cGVuZGVkKSB7CisgICAgaWYgKCFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAgICAg
ICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpKTsKQEAgLTM1OTEsMjQgKzM1OTEs
NDUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IGN1c3RvbVVzZXJBZ2VudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwg
IW1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9h
cmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNQYWdlU3VzcGVuZGVkKQor
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3Bl
bmRlZCA9IHRydWU7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IHRydWU7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNw
ZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDoiKTsKKyAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZCgpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6Iik7CisKKyAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNU
ZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FICgxMTg4NDApOiBXZSBzaG91bGQg
cHJvYmFibHkgb25seSBzdXBwb3J0IHRoaXMgZm9yIHRleHQgZG9jdW1lbnRzLCBub3QgYWxsIG5v
bi1pbWFnZSBkb2N1bWVudHMuCkBAIC02MDc4LDcgKzYwOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RvcE1lZGlhQ2FwdHVyZShNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kIGtpbmQs
IENvbXBsZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5
YmFja1N0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3Rh
dGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRp
YVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVBsYXliYWNrU3RhdGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNzcxOSw3ICs3NzQwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRy
OwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVu
ZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWI0NTdkZmI2MDMxZWY2Mzlh
ZDNhZTNmY2JmZmZhZTZhNmQ4NTcwMi4uZDUxM2FhYTNiZTI3ZTRhNTE2MzFlYWIxM2ZmYWNhOTJh
ZjFjMGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwNSw2
ICs1MDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3VzcGVuZGVkOyB9CisKICAgICBXZWJJbnNwZWN0b3JVSVByb3h5KiBpbnNwZWN0b3IoKSBj
b25zdDsKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBnZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KIApAQCAtMTAxNCw3ICsxMDE4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAg
ICBTdHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9t
VGV4dEVuY29kaW5nTmFtZTsgfQogCi0gICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWdlU3VzcGVuZGVkOyB9Cisg
ICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0K
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9p
ZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIApAQCAtMjc1Myw3ICsy
NzU3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4g
bV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBib29sIG1faXNQYWdlU3VzcGVuZGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNT
dXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9
OwogCiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwpAQCAtMzAx
NSw2ICszMDE5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlh
bG9nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggZDYyYmFmMjgxYmMyNTBlZDYyZWM3MDY0ZmE2MWNjYjQ5OTk5NWU2ZS4uMTVm
MDUwM2QzZWEzMWNiZWMyZjZiYTZhNzk3Y2Y1NGE5NWFiZjJlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNr
Rm9yd2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0No
cm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTYsNiArMzU5NywzNyBAQCB2b2lkIFdlYlBh
Z2U6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFn
ZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVl
RnJlZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tG
b3J3YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQYWdlKCptX3BhZ2UpOworICAgIEFTU0VS
VChtX2NhY2hlZFBhZ2UpOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKSkKKyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3Bl
bmVkRnJhbWVzKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2Vi
UGFnZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBt
X3BhZ2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3Rk
OjpleGNoYW5nZShtX2NhY2hlZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdl
KTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisKKyAgICBjYWNoZWRQYWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJl
ZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRv
Um9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1Bv
aW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVl
NDQ3M2FkYzRiOTgwZTBkYjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLmZjOTYyMWUzNzJjNWI0MDQy
YjllZGJjYmNmMmUzMjM2NDNhYWVhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2Fw
dHVyZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0x
NjY5LDYgKzE2NzAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgcGVyZm9y
bURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsKQEAgLTIzMTgsNiArMjMyMiw4
IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
czsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDYWNoZWRQYWdlPiBtX2NhY2hlZFBh
Z2U7CisKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIGJvb2wgbV9pcGNUZXN0aW5n
QVBJRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBlMzdhNjU5YzkxYjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4x
YjNhNjgxZmNiNTFmNDEzZTIxYmE0MjU0NDJiOGMwYTFmZDVlMGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1
MCw2ICsyNTAsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFN1c3BlbmRBY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKQogCisgICAgU3VzcGVuZCgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAg
UmVzdW1lKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKwogICAgIENsb3NlKCkKICAgICBUcnlD
bG9zZSgpIC0+IChib29sIHNob3VsZENsb3NlKSBBc3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2E3M2U1MGQ0NmU4OWMwOTYzM2IzZjdi
OWRiMGI3YzAyOGEzYjdlZi4uYTYyODA2ODM3ZWUxODFkYmFhMTIyY2E1ODhlYTgxM2JkMGJkMDU5
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAg
ICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMTAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgT2Jq
QyBBUEkgc2ltaWxhciB0byBXS0J1bmRsZVBhZ2VDb3B5R3JvdXBJZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRjY2MyOWU3M2Mz
YjMuLjlhNzVhMzFjNzBhN2M2OGMyMDA0Nzc3MTBiMzk0MGI3NTYyZjUwMTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNjIsNiArMjYyLDcgQEAKIAkJNDYzRjQ3MjMyNTVCNDlCNjAwRDlF
MENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3Rh
dGUubW0gKi87IH07CiAJCTQ2NDdCMTI2MUVCQTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVy
bWluYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLzsg
fTsKIAkJNDY0Qzc2NEQyMzBERjg1QzAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OworCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZD
N0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8q
IHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovOyB9OwogCQk0NjVFMjgwNzI1NUIyQTZBMDA2
M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICov
OyB9OwogCQk0NjZDMzg0MzIxMDYzN0RFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9i
c2VydmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRP
YnNlcnZlci5odG1sICovOyB9OwogCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vz
c2lvbkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2ll
Lmh0bWwgKi87IH07CkBAIC04NjgsOCArODY5LDggQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VE
RTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5k
eWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBz
aG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
NTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9OwogCQk5
M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07Ci0JCTk1MDk1RjIwMjYyRkZGQTUwMDAw
RDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQ
YWdlVG9wQ29sb3IubW0gKi87IH07CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0
ZWRBcnJheU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0ZDREIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9
OworCQk5NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYy
RkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5NTBFNEND
MTI1MkU3NTI0MDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAv
KiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovOyB9OwogCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMg
LyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYx
RkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3
VGhlbWVDb2xvci5tbSAqLzsgfTsKQEAgLTE2NDksNiArMTY1MCw3IEBACiAJCQkJM0ZDQzRGRTgx
RUM0RThDQTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlv
LW9uLWNsaWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMEVCQkNDNjYxRkZGOUUw
QzAwRkE0MkFCIC8qIHBvcC11cC1jaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTQ2NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBODFFRjQ2OTZCMDA4M0ZBMDggLyogcHJl
dmVudC1vcGVyYXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBOTFF
RjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC0yMDY2LDYgKzIwNjgsNyBAQAogCQk0NjNGNDcyMjI1NUI0OUI2
MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzRGlkVGVybWlu
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2NEMyMzBERjgzMjAw
QUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAi
QmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJl
Z3VsYXJseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBvc3RNZXNzYWdlLXJl
Z3VsYXJseS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RTI4MDYyNTVC
MkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVy
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNlTG9hZE9i
c2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVF
Q0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjU2NSw4ICsyNTY4LDggQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjdFODZCMTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBT
YW1wbGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBs
ZWRQYWdlVG9wQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTYW1wbGVkUGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVt
ZUNvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3VGhlbWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNzAsNiAr
NDA3Myw3IEBACiAJCQkJOUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRt
bCAqLywKIAkJCQkzRkNDNEZFNjFFQzRFODdFMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURl
bGVnYXRlLmh0bWwgKi8sCiAJCQkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVk
aW8tb24tY2xpY2suaHRtbCAqLywKKwkJCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9z
dE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTQxRUY0NjkyQzAwODNGQTA4
IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgKi8sCiAJCQkJRjQxQUI5OUExRUY0NjkyQzAwODNG
QTA4IC8qIHByZXZlbnQtc3RhcnQuaHRtbCAqLywKIAkJCQlBMTJEREJGRjFFODM3M0MxMDBDRjZD
QUUgLyogcmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5z
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3Vz
cGVuc2lvbi5tbQppbmRleCA5OTY2MWIzNDAzYjA0ZDE0MWExYzQyODE0NWI3ZDZmZjQ3OThkZGMy
Li4zYWEyYTMzMmEzMTEyYWRlYmNlZWNiZGQ2MmQ4NzhmODIwODM0NTE2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3Bl
bnNpb24ubW0KQEAgLTI2LDExICsyNiwxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KIAogVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgQ2FuY2VsV2ViUHJvY2Vzc1N1c3BlbnNp
b24pCiB7CkBAIC04MywzICs4NSwxNTUgQEAgVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgRGVzdHJv
eVdlYlBhZ2VEdXJpbmdXZWJQcm9jZXNzU3VzcGVuc2lvbikKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzbGVlcCgxKTsKICAgICBFWFBFQ1RfRVEocGlkMSwgW3dlYlZpZXczIF93ZWJQcm9jZXNz
SWRlbnRpZmllcl0pOwogfQorCitURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBXS1dlYlZpZXdTdXNw
ZW5kUGFnZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB0ZXN0TWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6dGVzdE1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIF9f
YmxvY2sgdW5zaWduZWQgdGltZXJGaXJlZENvdW50ID0gMDsKKyAgICBbdGVzdE1lc3NhZ2VIYW5k
bGVyIGFkZE1lc3NhZ2U6QCJ0aW1lciBmaXJlZCIgd2l0aEhhbmRsZXI6XnsKKyAgICAgICAgKyt0
aW1lckZpcmVkQ291bnQ7CisgICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Il07CisKKyAgICBhdXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CisgICAgRVhQRUNUX05FKHBpZCwgMCk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hv
dWxkIGJlIGZpcmluZy4KKyAgICBhdXRvIGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRD
b3VudDsKKyAgICB3aGlsZSAobGFzdFRpbWVyRmlyZUNvdW50ID09IHRpbWVyRmlyZWRDb3VudCkK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworICAgIEVYUEVD
VF9UUlVFKHRpbWVyRmlyZWRDb3VudCA+IGxhc3RUaW1lckZpcmVDb3VudCk7CisKKyAgICBhdXRv
IHRlc3RSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgaWQgdGVzdEludGVyYWN0aW9u
U3RhdGUgPSBbd2ViVmlldyBpbnRlcmFjdGlvblN0YXRlXTsKKyAgICBhdXRvIG9yaWdpbmFsVVJM
ID0gW3dlYlZpZXcgVVJMXTsKKworICAgIC8vIFN1c3BlbmQgdGhlIHBhZ2UuCisgICAgW3dlYlZp
ZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfc3VzcGVuZFBhZ2U6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxk
IG5vIGxvbmdlciBiZSBmaXJpbmcuCisgICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJl
ZENvdW50OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwMCk7CisgICAg
RVhQRUNUX0VRKGxhc3RUaW1lckZpcmVDb3VudCwgdGltZXJGaXJlZENvdW50KTsKKworICAgIGF1
dG8gY2hlY2tUaHJvd3MgPSBbXShGdW5jdGlvbjx2b2lkKCk+JiYgZikgeworICAgICAgICBAdHJ5
IHsKKyAgICAgICAgICAgIGYoKTsKKyAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfTsKKworICAgIC8vIE1vc3Qgb3BlcmF0aW9ucyBvbiBXS1dlYlZpZXcgc2hvdWxk
IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHN1c3BlbmRlZC4KKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cubmFtZSIg
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dz
KFsmXSB7IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZTIi
XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiZm9vIiBiYXNlVVJMOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTp3ZWJWaWV3Lmdl
dCgpLmJhY2tGb3J3YXJkTGlzdC5jdXJyZW50SXRlbV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyByZWxvYWRdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl07IH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBnb0JhY2tdOyB9KSk7CisgICAg
RVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29Gb3J3YXJkXTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHN0b3BMb2FkaW5nXTsg
fSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJh
Y2tXaXRoQ29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNr
VGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6WUVTIGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25IYW5k
bGVyOl4oV0tNZWRpYVBsYXliYWNrU3RhdGUpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRDYW1lcmFDYXB0dXJlU3RhdGU6V0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQRUNU
X1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0
ZTpXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsK
KyNpZiBUQVJHRVRfT1NfSVBIT05FCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsg
W3dlYlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5k
bGVyOl4oVUlJbWFnZSAqc25hcHNob3QsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisjZWxz
ZQorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW1hZ2UgKnNuYXBz
aG90LCBOU0Vycm9yICplcnJvcikgeyB9XTsgfSkpOworI2VuZGlmCisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246bmls
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgeyB9XTsg
fSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNyZWF0ZVdl
YkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9y
ICplcnJvcikgeyB9XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdl
YlZpZXcuZ2V0KCkuYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBZRVM7IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmN1c3Rv
bVVzZXJBZ2VudCA9IEAiZm9vIjsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsm
XSB7IHdlYlZpZXcuZ2V0KCkuYWxsb3dzTGlua1ByZXZpZXcgPSBZRVM7IH0pKTsKKyNpZiAhVEFS
R0VUX09TX0lQSE9ORQorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcu
Z2V0KCkuYWxsb3dzTWFnbmlmaWNhdGlvbiA9IFlFUzsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNo
ZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkubWFnbmlmaWNhdGlvbiA9IDEuMTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldE1hZ25pZmljYXRp
b246MS4xIGNlbnRlcmVkQXRQb2ludDpDR1BvaW50TWFrZSgwLCAwKV07IH0pKTsKKyNlbmRpZgor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkucGFnZVpvb20g
PSAxLjE7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBm
aW5kU3RyaW5nOkAiZm9vIiB3aXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6
XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeyB9XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNr
VGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6dGVzdFJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeyB9XTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkuaW50ZXJhY3Rp
b25TdGF0ZSA9IHRlc3RJbnRlcmFjdGlvblN0YXRlOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hl
Y2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5tZWRpYVR5cGUgPSBAInRleHQvaHRtbCI7IH0p
KTsKKworICAgIC8vIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSBzdGlsbCB3b3Jrcy4KKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZywgb3JpZ2luYWxVUkwuYWJz
b2x1dGVTdHJpbmcpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdLmJh
Y2tJdGVtLCBuaWwpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyB0aXRsZV0sIEAiIik7
CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIEVYUEVDVF9FUShb
d2ViVmlldyBlc3RpbWF0ZWRQcm9ncmVzc10sIDEuMCk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IGNhbkdvQmFja10pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBjYW5Hb0ZvcndhcmRd
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaGFzT25seVNlY3VyZUNvbnRlbnRdKTsKKyAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgc2VydmVyVHJ1c3RdLCBuaWwpOworICAgIEVYUEVDVF9FUShb
d2ViVmlldyBjYW1lcmFDYXB0dXJlU3RhdGVdLCBXS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSk7Cisg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IG1pY3JvcGhvbmVDYXB0dXJlU3RhdGVdLCBXS01lZGlhQ2Fw
dHVyZVN0YXRlTm9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IGN1c3RvbVVzZXJB
Z2VudF0sIEAiIik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IGFsbG93c0xpbmtQcmV2aWV3XSk7CisjZWxzZQorICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBh
bGxvd3NMaW5rUHJldmlld10pOworI2VuZGlmCisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICBF
WFBFQ1RfRkFMU0UoW3dlYlZpZXcgYWxsb3dzTWFnbmlmaWNhdGlvbl0pOworICAgIEVYUEVDVF9F
UShbd2ViVmlldyBtYWduaWZpY2F0aW9uXSwgMS4wKTsKKyNlbmRpZgorICAgIEVYUEVDVF9FUShb
d2ViVmlldyBwYWdlWm9vbV0sIDEuMCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IG1l
ZGlhVHlwZV0sIEAiIik7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJW
aWV3IGludGVyYWN0aW9uU3RhdGVdOyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dz
KFsmXSB7IFt3ZWJWaWV3IHRoZW1lQ29sb3JdOyB9KSk7CisKKyAgICAvLyBSZXN1bWUgdGhlIHBh
Z2UuCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4oQk9PTCBz
dWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IFt3ZWJWaWV3IGFkZFRvVGVzdFdpbmRvd107CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxkIHN0
YXJ0IGZpcmluZyBhZ2Fpbi4KKyAgICBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291
bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAgLy8gTWFr
ZSBzdXJlIHdlIGRpZCBub3QgY3Jhc2guCisgICAgRVhQRUNUX0VRKHBpZCwgW3dlYlZpZXcgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CisKK1RFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlYWxs
b2NhdGVTdXNwZW5kZWRWaWV3KQoreworICAgIC8vIERlYWxsb2NhdGluZyBhIHN1c3BlbmRlZCBX
ZWJWaWV3IHNob3VsZCBub3QgdGhyb3cgb3IgY3Jhc2guCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAgICAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9PTCBz
dWNjZXNzKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgICAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2Ut
cmVndWxhcmx5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZTAwZDhjYmRi
ZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0SW50ZXJ2
YWwoKCkgPT4geworICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoJ3RpbWVyIGZpcmVkJyk7Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428296</attachid>
            <date>2021-05-11 11:11:53 -0700</date>
            <delta_ts>2021-05-11 11:15:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210511111152.patch</filename>
            <type>text/plain</type>
            <size>135668</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1NzczYzRiYTY5MTAy
YTViODkwZmM2MjdjNTEwZGFkMTlhOTE4Ny4uNWVkMDk5OWVjZGY5NDViYzkzZGVlM2M1ZTc2MzJm
YjNiYmYwOGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0
cnlTdXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJ
ZkNhY2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc3
MjgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA1YTMxYTQwNjUxMzY0ODkxY2IxM2E3YWYzZmQ2MTgwNzI2OTZjYWQ3
Li45NDU5YTg3ZWMxMDQ2Y2VhNjBhZmUxY2VkZjA4MjEzNDdiYWIwY2E0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMwMCBAQAorMjAyMS0wNS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAg
ICAgIDxyZGFyOi8vNzc0NjI1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBU
aGlzIHN1c3BlbmRzIHRoZSBwYWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9m
b3J3YXJkIGNhY2hlIGJ1dCB0aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVk
IHRvIG5hdmlnYXRlLgorICAgICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFy
dCBvZiB0aGUgQmFjay9Gb3J3YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51
bWJlciBvZiBzdXNwZW5kZWQgcGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICBN
b3N0IG9mIFdLV2ViVmlldydzIEFQSSAvIFNQSSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVu
IGNhbGxlZCBvbiBhIHN1c3BlbmRlZAorICAgICAgICB2aWV3IChUaGUgV0tQYWdlUmVmQVBJIHdp
bGwgUkVMRUFTRV9BU1NFUlQoKSkuIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSB3aWxsIHN0YXkKKyAg
ICAgICAgZnVuY3Rpb25hbCAoVVJMLCBpc0xvYWRpbmcsIHRpdGxlLCAuLi4pLiBJdCBpcyBhbHNv
IHNhZmUgdG8gZGVhbGxvY2F0ZSAvIGNsb3NlCisgICAgICAgIGEgc3VzcGVuZGVkIFdLV2ViVmll
dy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoY3Jh
c2hJZlBhZ2VJc1N1c3BlbmRlZCk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToKKyAgICAgICAg
KFdLUGFnZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6CisgICAgICAg
IChXS1BhZ2VMb2FkVVJMV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1
ZXN0KToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAg
ICAgKFdLUGFnZUxvYWRGaWxlKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRh
KToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhV2l0
aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdL
UGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRl
cm5hdGVIVE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpOgorICAg
ICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgIChX
S1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVE
YXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAg
KFdLUGFnZVJlbG9hZCk6CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2Nr
ZXJzKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdl
UmVsb2FkRXhwaXJlZE9ubHkpOgorICAgICAgICAoV0tQYWdlVHJ5Q2xvc2UpOgorICAgICAgICAo
V0tQYWdlQ2xvc2UpOgorICAgICAgICAoV0tQYWdlR29Gb3J3YXJkKToKKyAgICAgICAgKFdLUGFn
ZUdvQmFjayk6CisgICAgICAgIChXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAg
ICAgIChXS1BhZ2VUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV0tQYWdlVXBk
YXRlV2Vic2l0ZVBvbGljaWVzKToKKyAgICAgICAgKFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCk6CisgICAgICAgIChXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAg
ICAoV0tQYWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXS1BhZ2VUZXJt
aW5hdGUpOgorICAgICAgICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAg
ICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbik6CisgICAg
ICAgIChXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV0tQYWdl
U2V0VGV4dFpvb21GYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChXS1Bh
Z2VTZXRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VTZXRVc2VGaXhlZExheW91dCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRGaXhlZExheW91dFNpemUpOgorICAgICAgICAoV0tQYWdlTGlzdGVu
Rm9yTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnMpOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQpOgorICAg
ICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KToKKyAgICAgICAgKFdLUGFnZVNldFJ1
YmJlckJhbmRzQXRUb3ApOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbSk6
CisgICAgICAgIChXS1BhZ2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOgorICAgICAg
ICAoV0tQYWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQ
YWdlU2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2luYXRpb25Nb2RlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxlbmd0aCk6CisgICAgICAgIChXS1BhZ2VT
ZXRHYXBCZXR3ZWVuUGFnZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlk
RW5hYmxlZCk6CisgICAgICAgIChXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbik6
CisgICAgICAgIChXS1BhZ2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKToKKyAgICAgICAg
KFdLUGFnZUZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZUdldEltYWdlRm9yRmlu
ZE1hdGNoKToKKyAgICAgICAgKFdLUGFnZVNlbGVjdEZpbmRNYXRjaCk6CisgICAgICAgIChXS1Bh
Z2VGaW5kU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUhpZGVGaW5kVUkpOgorICAgICAgICAoV0tQ
YWdlQ291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChX
S1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSk6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYik6CisgICAgICAg
IChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXS1Bh
Z2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5n
KToKKyAgICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXS1BhZ2VH
ZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAgKFdLUGFnZUdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YSk6
CisgICAgICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOgorICAgICAgICAoV0tQYWdlVmFsaWRhdGVD
b21tYW5kKToKKyAgICAgICAgKFdLUGFnZUV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdLUGFn
ZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERG
KToKKyAgICAgICAgKFdLUGFnZUJlZ2luUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRW5kUHJp
bnRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbik6CisgICAg
ICAgIChXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKToKKyAgICAgICAgKFdLUGFnZVNl
dE1lZGlhVm9sdW1lKToKKyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKFdLUGFn
ZVNldE1lZGlhQ2FwdHVyZUVuYWJsZWQpOgorICAgICAgICAoV0tQYWdlRGlkQWxsb3dQb2ludGVy
TG9jayk6CisgICAgICAgIChXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKToKKyAgICAgICAgKFdL
UGFnZURpZERlbnlQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRNYXlTdGFydE1lZGlh
V2hlbkluV2luZG93KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbSk6Cisg
ICAgICAgIChXS1BhZ2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV0tQYWdl
U2V0QWRkc1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0
TW9uaXRvcik6CisgICAgICAgIChXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRl
KToKKyAgICAgICAgKFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKToKKyAgICAg
ICAgKFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgIChXS1BhZ2VEdW1w
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV0tQYWdlQ2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZU1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChX
S1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2Vu
U2lnbmF0dXJlVVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tQ
YWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAg
ICAgICAoV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAg
ICAgIChXS1BhZ2VTZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24pOgorICAgICAgICAoV0tQYWdlTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkU3VicmVz
b3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0Rl
bGF5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRh
dGVGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgbG9hZEZpbGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBsb2FkSFRNTFN0cmluZzpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1l
RGF0YTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9h
ZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgc3RvcExvYWRpbmddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdDppbkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDphcmd1bWVudHM6
aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5YmFj
a1N1c3BlbmRlZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJl
cXVlc3RNZWRpYVBsYXliYWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDph
c0FzeW5jRnVuY3Rpb246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1
cmU6aW5GcmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0
dXJlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgc2V0UGFnZVpvb206XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5n
OndpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc2V0TWVkaWFUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0SW50ZXJhY3Rp
b25TdGF0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c01hZ25pZmljYXRpb246
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOmNlbnRlcmVkQXRQb2lu
dDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBwcmludE9wZXJhdGlvbldpdGhQcmludEluZm86XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6
cmVzcG9uc2U6cmVzcG9uc2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVs
YXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlOnJlc3BvbnNlRGF0YTpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25zZUhUTUxTdHJp
bmc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVJlcXVlc3Q6YWxsb3dpbmdSZWFk
QWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3Vn
aDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbmNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9kZWNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9jaGFuZ2VMaXN0VHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEVu
YWJsZUJyb3dzZXJFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZERpc2Fi
bGVCcm93c2VyRXh0ZW5zaW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6YXJndW1lbnQ6
Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRp
b25zV2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpjb21wbGV0aW9uOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlUGljdHVyZUluUGljdHVyZV0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfc3RvcE1lZGlhQ2FwdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0
b3BBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZEFsbE1l
ZGlhUGxheWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXli
YWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2FkZEFwcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFibGVVUkw6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5j
b2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9h
ZFJlcXVlc3Q6c2hvdWxkT3BlbkV4dGVybmFsVVJMczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9sb2FkUmVxdWVzdDpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Ol0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2dyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeV0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZFBhZ2U6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdW1lUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVs
b2FkV2l0aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9h
ZEV4cGlyZWRPbmx5XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9j
ZXNzQW5kUmVzZXRTdGF0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdHJ5
Q2xvc2VdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOmNvbnRlbnRUeXBlOmRhdGE6b3B0aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6b3B0
aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOmJldGE6Z2FtbWE6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0
bGU6d2FybmluZzpkZXRhaWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDp0aXRsZTp3YXJuaW5nOmRldGFp
bHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVC
cm93c2luZ1dhcm5pbmdXaXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWlsc1dpdGhMaW5rczpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0
dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3lu
Y0phdmFTY3JpcHQ6YXJndW1lbnRzOmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluRnJh
bWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OndpdGhTb3VyY2VVUkw6aW5GcmFtZTppbkNvbnRlbnRX
b3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVX
ZWJwYWdlUHJlZmVyZW5jZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbm90aWZ5VXNlclNj
cmlwdHNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVk
Tm90aWZpY2F0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzUmVtb3RlSW5z
cGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRSZW1vdGVJbnNwZWN0aW9uTmFt
ZU92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFkZHNWaXNpdGVkTGlua3M6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRXZWJBcmNoaXZlRGF0YVdp
dGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50
c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlv
bk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldFBhZ2luYXRpb25Nb2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRp
b25CZWhhdmVzTGlrZUNvbHVtbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnZUxl
bmd0aDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRUZXh0Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zZXRQYWdlWm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3Vu
dFN0cmluZ01hdGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9maW5kU3RyaW5nOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
aGlkZUZpbmRVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NhdmVCYWNrRm9yd2FyZFNuYXBz
aG90Rm9ySXRlbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudE92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RU
b1NlcnZlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRMYXlvdXRNb2RlOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3NldEZpeGVkTGF5b3V0U2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2V0Vmlld1NjYWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENPUlNEaXNh
YmxpbmdQYXR0ZXJuczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRQcm9jZXNzRGlzcGxh
eU5hbWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0
TWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dy
YW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nl
dFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NldFBhZ2VNdXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVE
YXRhRGV0ZWN0ZWRMaW5rczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQ
bGF5YmFja1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
QWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTEwICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRXh0ZW5k
IE5ldHdvcmsgUHJvY2VzcyBzYW5kYm94IHRvIGFjY2VzcyBtb3JlIE5ldHdvcmsgRXh0ZW5zaW9u
IGRhdGFiYXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNTFkODU0N2I2OGQ0NzI4YTljNWE0NDM0
MWZjNDgzNzNhMTEzYTk4Yy4uNjE1Y2ZiOGYwYzk0YzJiMTRmMDk1M2RjYmMwOGY0YTZkYWY3ZWY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02MDgsNiArNjA4LDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGhpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllci5oCiAgICAgaGlzdG9yeS9DYWNoZWRGcmFtZS5oCiAgICAgaGlzdG9yeS9DYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YS5oCisgICAgaGlzdG9yeS9DYWNoZWRQYWdlLmgKICAgICBoaXN0b3J5L0hp
c3RvcnlJdGVtLmgKIAogICAgIGh0bWwvQXV0b2NhcGl0YWxpemUuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggMjdlZDc0Y2QyMWQzNmFlNzBjMzVh
OGYwYjIwOTFiMGI1YTQ3N2I5My4uOTAzYWVjYTEyMjJmOGU5NGY5N2UxODg0Yzk1MDVhMzcwYTY3
NDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBA
IC00MjYsNTEgKzQyNiw2MiBAQCBzdGF0aWMgdm9pZCBmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2
ZWx5KEZyYW1lJiBmcmFtZSkKICAgICAgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseSgq
Y2hpbGQpOwogfQogCi1ib29sIEJhY2tGb3J3YXJkQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3Rv
cnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQorc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJh
Y2tGb3J3YXJkQ2FjaGU6OnRyeVN1c3BlbmRQYWdlKFBhZ2UmIHBhZ2UsIEZvcmNlU3VzcGVuc2lv
biBmb3JjZVN1c3BlbnNpb24pCiB7Ci0gICAgaWYgKGl0ZW0uaXNJbkJhY2tGb3J3YXJkQ2FjaGUo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0Zv
cndhcmRDYWNoZSgpOworICAgIHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tG
b3J3YXJkQ2FjaGUoKTsKIAotICAgIGlmICghY2FuQ2FjaGUoKnBhZ2UpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3BlbnNpb246Ok5v
ICYmICFjYW5DYWNoZShwYWdlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFwYWdlLT5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1
Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNo
ZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UuaXNVdGlsaXR5UGFnZSgpLCAiVXRp
bGl0eSBwYWdlcyBzdWNoIGFzIFNWR0ltYWdlIHBhZ2VzIHNob3VsZCBuZXZlciBnbyBpbnRvIEJh
Y2tGb3J3YXJkQ2FjaGUiKTsKIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgqcGFnZSwg
RG9jdW1lbnQ6OkFib3V0VG9FbnRlckJhY2tGb3J3YXJkQ2FjaGUpOworICAgIHNldEJhY2tGb3J3
YXJkQ2FjaGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0ZvcndhcmRDYWNo
ZSk7CiAKICAgICAvLyBGb2N1cyB0aGUgbWFpbiBmcmFtZSwgZGVmb2N1c2luZyBhIGZvY3VzZWQg
c3ViZnJhbWUgKGlmIHdlIGhhdmUgb25lKS4gV2UgZG8gdGhpcyBoZXJlLAogICAgIC8vIGJlZm9y
ZSB0aGUgcGFnZSBlbnRlcnMgdGhlIGJhY2svZm9yd2FyZCBjYWNoZSwgd2hpbGUgd2Ugc3RpbGwg
Y2FuIGRpc3BhdGNoIERPTSBibHVyL2ZvY3VzIGV2ZW50cy4KLSAgICBpZiAocGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpCi0gICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmIChwYWdlLmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpKQorICAgICAgICBwYWdlLmZvY3VzQ29udHJv
bGxlcigpLnNldEZvY3VzZWRGcmFtZSgmcGFnZS5tYWluRnJhbWUoKSk7CiAKICAgICAvLyBGaXJl
IHRoZSBwYWdlaGlkZSBldmVudCBpbiBhbGwgZnJhbWVzLgotICAgIGZpcmVQYWdlSGlkZUV2ZW50
UmVjdXJzaXZlbHkocGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVj
dXJzaXZlbHkocGFnZS5tYWluRnJhbWUoKSk7CiAKLSAgICBkZXN0cm95UmVuZGVyVHJlZShwYWdl
LT5tYWluRnJhbWUoKSk7CisgICAgZGVzdHJveVJlbmRlclRyZWUocGFnZS5tYWluRnJhbWUoKSk7
CiAKICAgICAvLyBTdG9wIGFsbCBsb2FkcyBhZ2FpbiBiZWZvcmUgY2hlY2tpbmcgaWYgd2UgY2Fu
IHN0aWxsIGNhY2hlIHRoZSBwYWdlIGFmdGVyIGZpcmluZyB0aGUgcGFnZWhpZGUKICAgICAvLyBl
dmVudCwgc2luY2UgdGhlIHBhZ2UgbWF5IGhhdmUgc3RhcnRlZCBwaW5nIGxvYWRzIGluIGl0cyBw
YWdlaGlkZSBldmVudCBoYW5kbGVyLgotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnN0
b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5z
dG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcGFnZSBp
cyBzdGlsbCBwYWdlLWNhY2hlYWJsZSBhZnRlciBmaXJpbmcgdGhlIHBhZ2VoaWRlIGV2ZW50LiBU
aGUgSlMgZXZlbnQgaGFuZGxlcnMKICAgICAvLyBjb3VsZCBoYXZlIGFsdGVyZWQgdGhlIHBhZ2Ug
aW4gYSB3YXkgdGhhdCBjb3VsZCBwcmV2ZW50IGNhY2hpbmcuCi0gICAgaWYgKCFjYW5DYWNoZSgq
cGFnZSkpIHsKLSAgICAgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVu
dDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChmb3JjZVN1c3BlbnNpb24gPT0gRm9yY2VTdXNwZW5zaW9uOjpObyAmJiAhY2FuQ2FjaGUocGFn
ZSkpIHsKKyAgICAgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpO
b3RJbkJhY2tGb3J3YXJkQ2FjaGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBzZXRCYWNrRm9yd2FyZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3
YXJkQ2FjaGUpOworICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZShwYWdlLCBEb2N1bWVudDo6
SW5CYWNrRm9yd2FyZENhY2hlKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFu
eSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6Oklu
TWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FjaGVkUGFnZT4ocGFnZSk7Cit9CisKK2Jvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNo
ZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKGl0ZW0uaXNJ
bkJhY2tGb3J3YXJkQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNhY2hlZFBhZ2UgPSB0cnlT
dXNwZW5kUGFnZSgqcGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpObyk7CisgICAgaWYgKCFjYWNoZWRQ
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB7CiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwog
Ci0gICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdl
KSk7CisgICAgICAgIGl0ZW0uc2V0Q2FjaGVkUGFnZShXVEZNb3ZlKGNhY2hlZFBhZ2UpKTsKICAg
ICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAg
ICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpAQCAtNDgxLDYgKzQ5MiwxMyBAQCBib29sIEJh
Y2tGb3J3YXJkQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBw
YWdlKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
QmFja0ZvcndhcmRDYWNoZTo6c3VzcGVuZFBhZ2UoUGFnZSYgcGFnZSkKK3sKKyAgICBSRUxFQVNF
X0xPRyhCYWNrRm9yd2FyZENhY2hlLCAiQmFja0ZvcndhcmRDYWNoZTo6c3VzcGVuZFBhZ2UoKSIp
OworCisgICAgcmV0dXJuIHRyeVN1c3BlbmRQYWdlKHBhZ2UsIEZvcmNlU3VzcGVuc2lvbjo6WWVz
KTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IEJhY2tGb3J3YXJkQ2FjaGU6OnRh
a2UoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFpdGVtLm1fY2Fj
aGVkUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaAppbmRl
eCBhZGFhZmFiYTZiYTYzMTI3Y2M0ZDgyZDdmMWQyYzM5ZDQ3NTM0ZjdlLi43M2U3NmUwMGIyYTk1
ZTQ2MzYwYjk3Zjk0YTc3MWQwMDFjYTQ4MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ2FjaGUuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRNYXhTaXplKHVuc2lnbmVkKTsgLy8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNh
Y2hlLgogICAgIHVuc2lnbmVkIG1heFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFNpemU7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBzdXNwZW5k
UGFnZShQYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJZkNhY2hlYWJsZShIaXN0
b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1bmVzIGlmIG1heFNpemUoKSBpcyBleGNlZWRlZC4KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShIaXN0b3J5SXRlbSYpOwogICAgIENhY2hlZFBh
Z2UqIGdldChIaXN0b3J5SXRlbSYsIFBhZ2UqKTsKQEAgLTc0LDYgKzc1LDggQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyBib29sIGNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUm
KTsKIAorICAgIGVudW0gY2xhc3MgRm9yY2VTdXNwZW5zaW9uIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gdHJ5U3VzcGVuZFBhZ2UoUGFnZSYsIEZv
cmNlU3VzcGVuc2lvbik7CiAgICAgdm9pZCBwcnVuZShQcnVuaW5nUmVhc29uKTsKICAgICB2b2lk
IGR1bXAoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAppbmRleCA0ZWVj
ZjFjYjBjMjVkYWM3ZTFkNmYyNDk4Y2JiMmM5NWUzODg1ZDI1Li4wZjczY2Y3OGFjM2I3M2ZkYzY1
NWYxNDM2NDExYzE3YWM1NTIxN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaApA
QCAtMzgsOSArMzgsOSBAQCBjbGFzcyBDYWNoZWRQYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDYWNoZWRQYWdlKFBhZ2UmKTsKLSAgICB+
Q2FjaGVkUGFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5DYWNoZWRQYWdlKCk7CiAKLSAgICB2
b2lkIHJlc3RvcmUoUGFnZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZShQYWdl
Jik7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUGFnZSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXgg
NjNhZjA1Y2RmYTgwNGM1ODA2MDQ4N2YwZGNiMDE3YjU5ZTBlZDAyNS4uMzY3NzcxOWY4YWJiNzM2
NzU1MjY4MDAzYWIzMWI3ZWNmOTg1M2Y1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCkBAIC0xNDMsNiArMTQzLDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVu
dFRyYWl0czxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAorc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIGNyYXNoSWZQYWdlSXNTdXNwZW5kZWQoV0tQ
YWdlUmVmIHBhZ2VSZWYpCit7CisgICAgV1RGTG9nQWx3YXlzKCJFcnJvcjogQXR0ZW1wdCB0byBj
YWxsIFdLUGFnZVJlZiBBUEkvU1BJIG9uIGEgc3VzcGVuZGVkIHBhZ2UsIHRoaXMgaXMgYSBjbGll
bnQgYnVnLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFnZVJlZiB8fCAh
dG9JbXBsKHBhZ2VSZWYpLT5pc1N1c3BlbmRlZCgpLCAiWW91IGNhbm5vdCBjYWxsIHRoaXMgQVBJ
L1NQSSBvbiBhIHN1c3BlbmRlZCBwYWdlIik7Cit9CisKKyNkZWZpbmUgQ1JBU0hfSUZfU1VTUEVO
REVEIGNyYXNoSWZQYWdlSXNTdXNwZW5kZWQocGFnZVJlZikKKwogV0tUeXBlSUQgV0tQYWdlR2V0
VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViUGFnZVByb3h5OjpBUElUeXBlKTsKQEAg
LTE2NSw0OSArMTczLDU4IEBAIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VD
b25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKFVSTFJlZikpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgYm9vbCBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdzsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRS
ZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRVUkxXaXRoVXNlckRhdGEoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0
KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0K
IAogdm9pZCBXS1BhZ2VMb2FkVVJMUmVxdWVzdChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1
ZXN0UmVmIHVybFJlcXVlc3RSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1
dG8gcmVzb3VyY2VSZXF1ZXN0ID0gdG9JbXBsKHVybFJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVl
c3QoKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VS
ZXF1ZXN0KSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0UmVmLCBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3Vy
Y2VSZXF1ZXN0ID0gdG9JbXBsKHVybFJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHRv
SW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJlZiByZXNvdXJjZURpcmVjdG9yeVVSTCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmls
ZSh0b1dURlN0cmluZyhmaWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlVUkwp
KTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRmlsZVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tVUkxSZWYgZmlsZVVSTCwgV0tVUkxSZWYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFdLVHlw
ZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmluZyhmaWxlVVJMKSwgdG9XVEZTdHJpbmcocmVz
b3VyY2VEaXJlY3RvcnlVUkwpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1Bh
Z2VMb2FkRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5n
UmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVS
TFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5s
b2FkRGF0YSh0b0ltcGwoZGF0YVJlZiktPmRhdGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlN
RVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxS
ZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmlu
Z1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRh
UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxv
YWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1F
VHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJl
ZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCkBAIC0yMzMsNTIgKzI1MCw2MiBAQCBzdGF0
aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdS
ZWYsIGNvbnN0IFN0cmluZyYgbQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dp
dGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJMUmVmLCBudWxscHRyKTsK
IH0KIAogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tU
eXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBsb2Fk
U3RyaW5nKHBhZ2VSZWYsIGh0bWxTdHJpbmdSZWYsICJ0ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5n
KGJhc2VVUkxSZWYpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYs
IFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dp
dGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJMUmVmLCB1bnJlYWNoYWJs
ZVVSTFJlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdS
ZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmLCBXS1R5
cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFN0cmlu
ZyBzdHJpbmcgPSB0b1dURlN0cmluZyhodG1sU3RyaW5nUmVmKTsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmxvYWRBbHRlcm5hdGVIVE1MKGRhdGFGcm9tKHN0cmluZyksIGVuY29kaW5nT2Yoc3RyaW5n
KSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSksIFVSTChVUkwoKSwgdG9XVEZT
dHJpbmcodW5yZWFjaGFibGVVUkxSZWYpKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZv
aWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgcGxhaW5UZXh0U3RyaW5nUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBX
S1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIHBsYWluVGV4dFN0
cmluZ1JlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5n
UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJf
cywgYWJvdXRCbGFua1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQ
YWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJj
aGl2ZURhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRhKHRvSW1wbCh3ZWJBcmNoaXZlRGF0YVJlZikpOwogfQog
CiB2b2lkIFdLUGFnZUxvYWRXZWJBcmNoaXZlRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tEYXRhUmVmIHdlYkFyY2hpdmVEYXRhUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdl
YkFyY2hpdmVEYXRhKHRvSW1wbCh3ZWJBcmNoaXZlRGF0YVJlZiksIHRvSW1wbCh1c2VyRGF0YVJl
ZikpOwogfQogCiB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnN0b3BMb2FkaW5n
KCk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBy
ZWxvYWRPcHRpb25zOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChsaW5rZWRPbk9yQWZ0
ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlv
cikpCkBAIC0yOTAsMjEgKzMxNywyNSBAQCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKFdLUGFnZVJl
ZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMp
OwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdl
YkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2Fk
RXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhw
aXJlZE9ubHkpOwogfQogCiBib29sIFdLUGFnZVRyeUNsb3NlKFdLUGFnZVJlZiBwYWdlUmVmKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50
cnlDbG9zZSgpOwogfQogCkBAIC0zMjAsNiArMzUxLDcgQEAgYm9vbCBXS1BhZ2VJc0Nsb3NlZChX
S1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VHb0ZvcndhcmQoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z29G
b3J3YXJkKCk7CiB9CiAKQEAgLTMzMCw2ICszNjIsNyBAQCBib29sIFdLUGFnZUNhbkdvRm9yd2Fy
ZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VHb0JhY2soV0tQYWdlUmVmIHBhZ2VS
ZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8mIHBhZ2UgPSAqdG9JbXBs
KHBhZ2VSZWYpOwogICAgIGlmIChwYWdlLnBhZ2VDbGllbnQoKS5oYXNTYWZlQnJvd3NpbmdXYXJu
aW5nKCkpIHsKICAgICAgICAgV0tQYWdlUmVsb2FkKHBhZ2VSZWYpOwpAQCAtMzQ1LDExICszNzgs
MTMgQEAgYm9vbCBXS1BhZ2VDYW5Hb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQ
YWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLQmFja0Zvcndh
cmRMaXN0SXRlbVJlZiBpdGVtUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPmdvVG9CYWNrRm9yd2FyZEl0ZW0oKnRvSW1wbChpdGVtUmVmKSk7CiB9
CiAKIHZvaWQgV0tQYWdlVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCkBAIC0zNjUsNiArNDAwLDcgQEAgYm9vbCBXS1Bh
Z2VXaWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50cyhXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VVcGRhdGVXZWJzaXRlUG9saWNpZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLV2Vi
c2l0ZVBvbGljaWVzUmVmIHdlYnNpdGVQb2xpY2llc1JlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBv
bGljaWVzUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLCAiU2V0dGluZyBXZWJzaXRlUG9saWNpZXMu
d2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlV2l0aFBvbGljaWVzKCkuIik7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCks
ICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy51c2VyQ29udGVudENvbnRyb2xsZXIgaXMgb25seSBz
dXBwb3J0ZWQgZHVyaW5nIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcygpLiIp
OwogICAgIGF1dG8gZGF0YSA9IHRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYpLT5kYXRhKCk7CkBA
IC00MjMsNiArNDU5LDcgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weUFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGFwcGxpY2F0
aW9uTmFtZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQodG9XVEZTdHJpbmcoYXBwbGljYXRp
b25OYW1lUmVmKSk7CiB9CiAKQEAgLTQzMyw2ICs0NzAsNyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VD
b3B5Q3VzdG9tVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEN1
c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdXNlckFnZW50UmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1
c3RvbVVzZXJBZ2VudCh0b1dURlN0cmluZyh1c2VyQWdlbnRSZWYpKTsKIH0KIApAQCAtNDUzLDEx
ICs0OTEsMTMgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weUN1c3RvbVRleHRFbmNvZGluZ05hbWUo
V0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdOYW1lUmVmKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVRleHRF
bmNvZGluZ05hbWUodG9XVEZTdHJpbmcoZW5jb2RpbmdOYW1lUmVmKSk7CiB9CiAKIHZvaWQgV0tQ
YWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0ZWRQcm9jZXNzUHJveHkodG9JbXBs
KHBhZ2VSZWYpLT5wcm9jZXNzKCkpOwogICAgIHByb3RlY3RlZFByb2Nlc3NQcm94eS0+cmVxdWVz
dFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQp
OwogfQpAQCAtNTE4LDExICs1NTgsMTMgQEAgc3RhdGljIHZvaWQgcmVzdG9yZUZyb21TZXNzaW9u
U3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNzaW9uU3RhdGVSZWYKIAogdm9p
ZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBl
UmVmIHNlc3Npb25TdGF0ZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmVz
dG9yZUZyb21TZXNzaW9uU3RhdGUocGFnZVJlZiwgc2Vzc2lvblN0YXRlUmVmLCB0cnVlKTsKIH0K
IAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYgc2Vzc2lvblN0YXRlUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShwYWdlUmVmLCBzZXNz
aW9uU3RhdGVSZWYsIGZhbHNlKTsKIH0KIApAQCAtNTM4LDYgKzU4MCw3IEBAIGRvdWJsZSBXS1Bh
Z2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdl
U2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgY3Vz
dG9tU2NhbGVGYWN0b3IpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IoY3VzdG9tU2NhbGVGYWN0b3IpOwog
fQogCkBAIC01NDgsNiArNTkxLDcgQEAgYm9vbCBXS1BhZ2VTdXBwb3J0c1RleHRab29tKFdLUGFn
ZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFRleHRab29tRmFjdG9yKFdLUGFnZVJlZiBw
YWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIApA
QCAtNTU4LDE2ICs2MDIsMTkgQEAgZG91YmxlIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yKFdLUGFn
ZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBw
YWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIAog
dm9pZCBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKFdLUGFnZVJlZiBwYWdlUmVmLCBk
b3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKIHZvaWQgV0tQYWdl
U2V0U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBzY2FsZSwgV0tQb2ludCBv
cmlnaW4pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
c2NhbGVQYWdlKHNjYWxlLCB0b0ludFBvaW50KG9yaWdpbikpOwogfQogCkBAIC01NzgsMTEgKzYy
NSwxMyBAQCBkb3VibGUgV0tQYWdlR2V0U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAK
IHZvaWQgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZml4
ZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
VXNlRml4ZWRMYXlvdXQoZml4ZWQpOwogfQogCiB2b2lkIFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6
ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTaXplIHNpemUpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rml4ZWRMYXlvdXRTaXplKHRvSW50U2l6ZShz
aXplKSk7CiB9CiAKQEAgLTU5OCw2ICs2NDcsNyBAQCBXS1NpemUgV0tQYWdlRml4ZWRMYXlvdXRT
aXplKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxpc3RlbkZv
ckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKIH0KIApA
QCAtNjEzLDYgKzY2Myw3IEBAIGJvb2wgV0tQYWdlSGFzVmVydGljYWxTY3JvbGxiYXIoV0tQYWdl
UmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25z
KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHN1cHByZXNzQW5pbWF0aW9ucykKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKTsKIH0KIApAQCAtNjQ4LDYgKzY5OSw3IEBA
IGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdExlZnQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVy
QmFuZHNBdExlZnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0UnViYmVyQmFuZHNBdExlZnQocnViYmVyQmFuZHNBdExlZnQpOwogfQogCkBAIC02
NTgsNiArNzEwLDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBh
Z2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KFdLUGFnZVJlZiBwYWdl
UmVmLCBib29sIHJ1YmJlckJhbmRzQXRSaWdodCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0UmlnaHQocnViYmVyQmFuZHNB
dFJpZ2h0KTsKIH0KIApAQCAtNjY4LDYgKzcyMSw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNB
dFRvcChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0VG9w
KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRUb3ApCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdFRvcChy
dWJiZXJCYW5kc0F0VG9wKTsKIH0KIApAQCAtNjc4LDYgKzczMiw3IEBAIGJvb2wgV0tQYWdlUnVi
YmVyQmFuZHNBdEJvdHRvbShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJi
ZXJCYW5kc0F0Qm90dG9tKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRCb3R0
b20pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UnViYmVyQmFuZHNBdEJvdHRvbShydWJiZXJCYW5kc0F0Qm90dG9tKTsKIH0KIApAQCAtNjg4LDYg
Kzc0Myw3IEBAIGJvb2wgV0tQYWdlVmVydGljYWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKFdLUGFn
ZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RW5hYmxl
VmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyk7CiB9CiAK
QEAgLTY5OCwxMSArNzU0LDEzIEBAIGJvb2wgV0tQYWdlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmdJ
c0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0RW5hYmxlSG9yaXpv
bnRhbFJ1YmJlckJhbmRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlSG9yaXpvbnRh
bFJ1YmJlckJhbmRpbmcpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRh
bFJ1YmJlckJhbmRpbmcpOwogfQogCiB2b2lkIFdLUGFnZVNldEJhY2tncm91bmRFeHRlbmRzQmV5
b25kUGFnZShXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBh
Z2UpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSk7
CiB9CiAKQEAgLTcxMyw2ICs3NzEsNyBAQCBib29sIFdLUGFnZUJhY2tncm91bmRFeHRlbmRzQmV5
b25kUGFnZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9k
ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdpbmF0aW9uTW9kZSBwYWdpbmF0aW9uTW9kZSkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBt
b2RlOwogICAgIHN3aXRjaCAocGFnaW5hdGlvbk1vZGUpIHsKICAgICBjYXNlIGtXS1BhZ2luYXRp
b25Nb2RlVW5wYWdpbmF0ZWQ6CkBAIC03NTcsNiArODE2LDcgQEAgV0tQYWdpbmF0aW9uTW9kZSBX
S1BhZ2VHZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VT
ZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGJl
aGF2ZXNMaWtlQ29sdW1ucykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29s
dW1ucyk7CiB9CiAKQEAgLTc2Nyw2ICs4MjcsNyBAQCBib29sIFdLUGFnZUdldFBhZ2luYXRpb25C
ZWhhdmVzTGlrZUNvbHVtbnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZUxlbmd0aChXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHBhZ2VMZW5ndGgpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxlbmd0aChwYWdl
TGVuZ3RoKTsKIH0KIApAQCAtNzc3LDYgKzgzOCw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRQYWdlTGVu
Z3RoKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEdhcEJldHdlZW5QYWdlcyhX
S1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIGdhcCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKTsKIH0KIApAQCAt
Nzg3LDYgKzg0OSw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRHYXBCZXR3ZWVuUGFnZXMoV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChXS1Bh
Z2VSZWYgcGFnZVJlZiwgYm9vbCBsaW5lR3JpZEVuYWJsZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC04MTcsNDYgKzg4MCw1NSBAQCBib29sIFdLUGFn
ZUlzQ29udGVudEVkaXRhYmxlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldE1h
aW50YWluc0luYWN0aXZlU2VsZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIG5ld1ZhbHVl
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYp
LT5zZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihuZXdWYWx1ZSk7CiB9CiAKIHZvaWQgV0tQ
YWdlQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+Y2VudGVy
U2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpOwogfQogCiB2b2lkIFdLUGFnZUZpbmRTdHJpbmdNYXRj
aGVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdLRmluZE9wdGlvbnMg
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5maW5kU3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5n
KS0+c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQog
CiB2b2lkIFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNoKFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQz
Ml90IG1hdGNoSW5kZXgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChw
YWdlUmVmKS0+Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV0tQ
YWdlU2VsZWN0RmluZE1hdGNoKFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5kZXgp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2VsZWN0
RmluZE1hdGNoKG1hdGNoSW5kZXgpOwogfQogCiB2b2lkIFdLUGFnZUZpbmRTdHJpbmcoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPmZpbmRTdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpLCB0b0Zp
bmRPcHRpb25zKG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXS1BhZ2VIaWRl
RmluZFVJKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmhpZGVGaW5kVUkoKTsKIH0KIAogdm9pZCBXS1BhZ2VDb3VudFN0
cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywgV0tGaW5k
T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNvdW50U3RyaW5nTWF0Y2hlcyh0b0lt
cGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291
bnQpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAg
Y2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdl
Q29udGV4dE1lbnVDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewog
ICAgIHB1YmxpYzoKQEAgLTk3Myw2ICsxMDQ1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZURpYWdub3MK
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICBjbGFzcyBGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRD
bGllbnRCYXNlPiwgcHVibGljIEFQSTo6RmluZENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBleHBsaWNpdCBGaW5kQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiBjbGllbnQp
CkBAIC0xMDExLDYgKzEwODQsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdL
UGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgY2xhc3MgRmluZE1hdGNoZXNDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8
V0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGll
bnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgRmluZE1hdGNoZXNDbGllbnQoY29u
c3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMDU0LDE2ICsxMTI4
LDE5IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdrQ2xpZW50KTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3Jt
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBMb2FkZXJDbGllbnQgOiBw
dWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlTG9hZGVyQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6Okxv
YWRlckNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBMb2FkZXJDbGllbnQo
Y29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtMTIzNCw2ICsxMzExLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50
QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIFBv
bGljeUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiwg
cHVibGljIEFQSTo6UG9saWN5Q2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0
IFBvbGljeUNsaWVudChjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0x
NDkzLDYgKzE1NzEsNyBAQCB2b2lkIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybVJl
c3VsdExpc3RlbmVyQ2FsbChXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjYwogCiB2b2lkIFdLUGFnZVNl
dFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNl
KiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgVUlDbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlVUlDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6
VUlDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgVUlDbGllbnQoY29uc3Qg
V0tQYWdlVUlDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0yMTM4LDYgKzIyMTcsNyBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudAogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGll
bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIE5hdmlnYXRpb25DbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2U+LCBwdWJs
aWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0
IE5hdmlnYXRpb25DbGllbnQoY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIGNsaWVu
dCkKQEAgLTI1MDMsMTYgKzI1ODMsMTggQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi12b2lkIFdL
UGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRC
YXNlKiBjbGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxv
YWRTdGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0
YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0
UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOworICAgICAgICB0b0ltcGwocGFnZVJlZikt
PnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlw
dFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNr
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsg
fSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRv
JiYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAg
ICBjYWxsYmFjayh0b0FQSShyZXN1bHQudmFsdWUoKS5nZXQoKSksIG51bGxwdHIsIGNvbnRleHQp
OwpAQCAtMjUzMSw2ICsyNjEzLDcgQEAgc3RhdGljIHZvaWQgY2FsbFJ1bkphdmFTY3JpcHRCbG9j
a0FuZFJlbGVhc2UoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgcmVzdWx0VmEKIAogdm9pZCBX
S1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJp
bmdSZWYgc2NyaXB0UmVmLCBXS1BhZ2VSdW5KYXZhU2NyaXB0QmxvY2sgYmxvY2spCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShw
YWdlUmVmLCBzY3JpcHRSZWYsIEJsb2NrX2NvcHkoYmxvY2spLCBjYWxsUnVuSmF2YVNjcmlwdEJs
b2NrQW5kUmVsZWFzZSk7CiB9CiAjZW5kaWYKQEAgLTI1NDQsMzEgKzI2MjcsMzcgQEAgc3RhdGlj
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+IHRvU3RyaW5nQ2FsbGJhY2so
dm9pZCogY29udGV4dCwgdm8KIAogdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbih0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVS
ZWYgZnJhbWVSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rp
b24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0U291cmNlRm9yRnJhbWUodG9JbXBsKGZyYW1lUmVmKSwgdG9TdHJpbmdDYWxsYmFj
ayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNTdHJp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNT
dHJpbmdGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5nZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1
ZGVzQ2hpbGRGcmFtZXM6Ok5vLCB0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7
CiB9CiAKIHZvaWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlKFdLUGFnZVJlZiBwYWdlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGVGdW5jdGlvbiBjYWxsYmFjaykK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRl
Y29kZVByb2ZpbGUodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2
b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXRGdW5jdGlvbiBjYWxs
YmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5n
ZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJh
Y2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFn
ZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShbY29udGV4dCwg
Y2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0
YSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwpAQCAtMjU3Niw2ICsyNjY1LDcgQEAgdm9p
ZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2UKIAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRh
KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhU
TUxEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lm
IEVOQUJMRShNSFRNTCkKICAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNNSFRNTERh
dGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGNhbGxi
YWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKQEAgLTI1ODksNiArMjY3OSw3IEBA
IHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tQYWdlR2V0Q29uCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBhaW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBj
YWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5mb3JjZVJlcGFpbnQoW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2so
bnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7CkBAIC0yNjI2LDYgKzI3MTcsNyBAQCBXS1N0cmlu
Z1JlZiBXS1BhZ2VDb3B5U3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKFdLU3Ry
aW5nUmVmIGFwcGxpY2F0aQogCiB2b2lkIFdLUGFnZVZhbGlkYXRlQ29tbWFuZChXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4dCwgV0tQYWdlVmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2sgY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGF1dG8gY29tbWFuZE5hbWUgPSB0b0ltcGwoY29tbWFuZCktPnN0cmluZygpOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+dmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBbY29udGV4dCwgY2Fs
bGJhY2ssIGNvbW1hbmROYW1lXShib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSkgewogICAg
ICAgICBjYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGNvbW1hbmROYW1lKS5wdHIo
KSksIGlzRW5hYmxlZCwgc3RhdGUsIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjYzNCw2ICsyNzI2
LDcgQEAgdm9pZCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIGNvbW1hbmQsIHZvaWQqIGNvbnRleHQKIAogdm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFu
ZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5leGVjdXRlRWRpdENvbW1hbmQodG9J
bXBsKGNvbW1hbmQpLT5zdHJpbmcoKSk7CiB9CiAKQEAgLTI2NDYsOSArMjczOSwxMCBAQCBzdGF0
aWMgUHJpbnRJbmZvIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhjb25zdCBXS1ByaW50SW5mbyYg
cHJpbnRJbmZvKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV0tQYWdlQ29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJ
bmZvIHByaW50SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmco
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5m
bywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCog
Y29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRv
SW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBbY29udGV4
dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJs
ZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFn
ZU1hcmdpbikgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1By
aW50SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6
RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbikgewogICAgICAgICBWZWN0b3I8V0tS
ZWN0PiB3a1JlY3RzKHJlY3RzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICB3a1JlY3RzW2ldID0gdG9BUEkocmVj
dHNbaV0pOwpAQCAtMjY1NywyMiArMjc1MSwyNSBAQCB2b2lkIFdLUGFnZUNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbwog
fQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQz
Ml90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJh
Y2ssIHZvaWQqIGNvbnRleHQpCit2b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ss
IHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kcmF3UGFnZXNUb1BERih0b0lt
cGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNv
dW50LCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwo
ZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50
LCBbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJh
Y2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwogfQogI2VuZGlmCiAK
LXZvaWQgV0tQYWdlQmVnaW5QcmludGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tQcmludEluZm8gcHJpbnRJbmZvKQordm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8pCiB7
Ci0gICAgdG9JbXBsKHBhZ2UpLT5iZWdpblByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5m
b0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5iZWdpblByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5m
b0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pKTsKIH0KIAotdm9pZCBXS1BhZ2VFbmRQcmludGlu
ZyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRW5kUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5lbmRQcmludGluZygpOworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmVuZFByaW50aW5nKCk7CiB9CiAKIGJvb2wg
V0tQYWdlR2V0SXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjY4
MCw5ICsyNzc3LDEwIEBAIGJvb2wgV0tQYWdlR2V0SXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdL
UGFnZVJlZiBwYWdlKQogICAgIHJldHVybiB0b0ltcGwocGFnZSktPmlzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbigpOwogfQogCi12b2lkIFdLUGFnZVNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQ
YWdlUmVmIHBhZ2UsIGJvb2wgY29udHJvbGxlZCkKK3ZvaWQgV0tQYWdlU2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBjb250cm9sbGVkKQogewotICAgIHRv
SW1wbChwYWdlKS0+c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKTsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250cm9sbGVkQnlB
dXRvbWF0aW9uKGNvbnRyb2xsZWQpOwogfQogCiBib29sIFdLUGFnZUdldEFsbG93c1JlbW90ZUlu
c3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNjk1LDIzICsyNzkzLDI2IEBAIGJvb2wgV0tQ
YWdlR2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZSkKICNlbmRpZiAgICAK
IH0KIAotdm9pZCBXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdl
LCBib29sIGFsbG93KQordm9pZCBXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFn
ZVJlZiBwYWdlUmVmLCBib29sIGFsbG93KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICB0b0ltcGwocGFnZSktPnNldEFsbG93c1Jl
bW90ZUluc3BlY3Rpb24oYWxsb3cpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QWxsb3dzUmVt
b3RlSW5zcGVjdGlvbihhbGxvdyk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAg
ICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGFsbG93KTsKICNlbmRp
ZgogfQogCi12b2lkIFdLUGFnZVNldE1lZGlhVm9sdW1lKFdLUGFnZVJlZiBwYWdlLCBmbG9hdCB2
b2x1bWUpCit2b2lkIFdLUGFnZVNldE1lZGlhVm9sdW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBmbG9h
dCB2b2x1bWUpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYVZvbHVtZSh2b2x1bWUpOyAg
ICAKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRp
YVZvbHVtZSh2b2x1bWUpOwogfQogCi12b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdl
LCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQordm9pZCBXS1BhZ2VTZXRNdXRlZChXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tNZWRpYU11dGVkU3RhdGUgbXV0ZWRTdGF0ZSkKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZs
YWdzIGNvcmVTdGF0ZTsKIAogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFBdWRpb011dGVk
KQpAQCAtMjcyMSwxMiArMjgyMiwxMyBAQCB2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBw
YWdlLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQogICAgIGlmIChtdXRlZFN0YXRlICYg
a1dLTWVkaWFTY3JlZW5DYXB0dXJlTXV0ZWQpCiAgICAgICAgIGNvcmVTdGF0ZS5hZGQoV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6U2NyZWVuQ2FwdHVyZUlzTXV0ZWQpOwogCi0g
ICAgdG9JbXBsKHBhZ2UpLT5zZXRNdXRlZChjb3JlU3RhdGUpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0TXV0ZWQoY29yZVN0YXRlKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVF
bmFibGVkKFdLUGFnZVJlZiBwYWdlLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUGFnZVNldE1lZGlh
Q2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0
b0ltcGwocGFnZSktPnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxl
ZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFn
ZVJlZiBwYWdlKQpAQCAtMjczNCwzMCArMjgzNiwzMyBAQCBib29sIFdLUGFnZUdldE1lZGlhQ2Fw
dHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+bWVk
aWFDYXB0dXJlRW5hYmxlZCgpOwogfQogCi12b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2so
V0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVm
IHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWRBbGxvd1BvaW50ZXJMb2NrKCk7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5kaWRBbGxvd1BvaW50ZXJMb2NrKCk7CiAjZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIAotdm9p
ZCBXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VD
bGVhclVzZXJNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlKS0+Y2xl
YXJVc2VyTWVkaWFTdGF0ZSgpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJVc2VyTWVkaWFT
dGF0ZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFN
KHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlRGlkRGVueVBvaW50ZXJMb2NrKFdL
UGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIHBh
Z2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCi0gICAgdG9JbXBsKHBhZ2UpLT5kaWREZW55UG9pbnRlckxvY2soKTsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPmRpZERlbnlQb2ludGVyTG9jaygpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKQEAgLTI3OTAs
MTYgKzI4OTUsMTggQEAgV0tGcmFtZVJlZiBXS1BhZ2VMb29rVXBGcmFtZUZyb21IYW5kbGUoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVIYW5kbGVSZWYgaGFuZGwKIAogdm9pZCBXS1BhZ2VTZXRN
YXlTdGFydE1lZGlhV2hlbkluV2luZG93KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIG1heVN0YXJ0
TWVkaWEpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKTsKIH0KIAogCi12b2lk
IFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbShXS1BhZ2VSZWYgcGFnZSwgV0tDb250ZXh0TWVu
dUl0ZW1SZWYgaXRlbSkKK3ZvaWQgV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZSktPmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKCh0b0ltcGwoaXRlbSktPmRhdGEoKSkpOworICAgIHRvSW1w
bChwYWdlUmVmKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoKHRvSW1wbChpdGVtKS0+ZGF0YSgp
KSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFn
ZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGl0ZW0pOwogI2VuZGlmCiB9CkBAIC0yODIxLDggKzI5
MjgsOSBAQCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBXS1BhZ2VHZXRTY3JvbGxQaW5uaW5nQmVo
YXZpb3IoV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIGtXS1Njcm9sbFBpbm5pbmdCZWhhdmlv
ckRvTm90UGluOwogfQogCi12b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1Bh
Z2VSZWYgcGFnZSwgV0tTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKK3ZvaWQgV0tQYWdl
U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1Njcm9sbFBpbm5p
bmdCZWhhdmlvciBwaW5uaW5nKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IgY29yZVBpbm5pbmcgPSBTY3JvbGxQaW5uaW5nQmVoYXZpb3I6OkRv
Tm90UGluOwogCiAgICAgc3dpdGNoIChwaW5uaW5nKSB7CkBAIC0yODM5LDcgKzI5NDcsNyBAQCB2
b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSwgV0tTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IgcGlubgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAgICAgCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoY29y
ZVBpbm5pbmcpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9y
KGNvcmVQaW5uaW5nKTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFn
ZVJlZiBwYWdlKQpAQCAtMjg0Nyw5ICsyOTU1LDEwIEBAIGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0
ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5hZGRzVmlz
aXRlZExpbmtzKCk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VS
ZWYgcGFnZSwgYm9vbCBhZGRzVmlzaXRlZExpbmtzKQordm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRl
ZExpbmtzKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGFkZHNWaXNpdGVkTGlua3MpCiB7Ci0gICAg
dG9JbXBsKHBhZ2UpLT5zZXRBZGRzVmlzaXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEFkZHNWaXNpdGVk
TGlua3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CiB9CiAKIGJvb2wgV0tQYWdlSXNQbGF5aW5nQXVkaW8o
V0tQYWdlUmVmIHBhZ2UpCkBAIC0yODg0LDIwICsyOTkzLDIzIEBAIFdLTWVkaWFTdGF0ZSBXS1Bh
Z2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQogCiB2b2lkIFdLUGFnZUNsZWFyV2hlZWxF
dmVudFRlc3RNb25pdG9yKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7
CiB9CiAKIHZvaWQgV0tQYWdlQ2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShXS1BhZ2VS
ZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUG9zdFByZXNlbnRhdGlvblVwZGF0ZUZ1
bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwo
cGFnZVJlZiktPmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW2NvbnRleHQsIGNhbGxi
YWNrXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJh
Y2soZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJ
OjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMoV0tQYWdlUmVmIHBhZ2UsIGJv
b2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpCit2b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3
cG9ydFNjYWxlTGltaXRzKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGlnbm9yZXNWaWV3cG9ydFNj
YWxlTGltaXRzKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoTUVUQV9W
SUVXUE9SVCkKLSAgICB0b0ltcGwocGFnZSktPnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGln
bm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcmNl
QWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKICNlbmRpZgog
fQogCkBAIC0yOTA3LDkzICszMDE5LDEwNSBAQCBQcm9jZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lk
ZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2UpCiB9CiAKICNpZmRlZiBfX0JMT0NLU19fCi12b2lkIFdL
UGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBw
bGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2NrKQordm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0X2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RC
bG9jayBibG9jaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotICAgIHRvSW1wbChwYWdlKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVz
dChbYmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBt
YW5pZmVzdCkgeworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChb
YmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5p
ZmVzdCkgewogICAgICAgICBibG9jaygpOwogICAgIH0pOwogI2Vsc2UgLy8gRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFS
QU0ocGFnZVJlZik7CiAgICAgYmxvY2soKTsKICNlbmRpZiAvLyBub3QgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdlRHVtcFByaXZhdGVDbGlja01l
YXN1cmVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VE
dW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUR1bXBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50KSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVm
KS0+ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgewogICAgICAgICBjYWxs
YmFjayhXZWJLaXQ6OnRvQVBJKHByaXZhdGVDbGlja01lYXN1cmVtZW50LmltcGwoKSksIGNhbGxi
YWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFn
ZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUNs
ZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJh
Y2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBib29sIHZhbHVl
LCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5n
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYg
cGFnZVJlZiwgYm9vbCB2YWx1ZSwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVy
cmlkZVRpbWVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKHZhbHVlLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkg
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFsdWUsIFtjYWxsYmFj
a0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4
dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VNYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgp
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5tYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxi
YWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250
ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2Vzc2lvblJlc3RhcnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zaW11bGF0ZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFj
a10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQog
Ci12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxG
b3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1
YmxpY0tleVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwg
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2Fs
bGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0Nv
bnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBV
UkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQg
V0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFj
aywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0
b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RG
U3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAg
ICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhX
S1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVS
TCwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNG
b3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQg
V0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JU
ZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRl
c3RpbmF0aW9uVVJMLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
UmVwb3J0VVJMc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoc291cmNl
VVJMKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoZGVzdGluYXRpb25VUkwpKSwgW2NhbGxiYWNr
Q29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0
VVJMc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVS
TCgpLCB0b1dURlN0cmluZyhkZXN0aW5hdGlvblVSTCkpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxs
YmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwog
fQogCi12b2lkIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JU
ZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCit2b2lkIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JU
ZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5tYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPm1hcmtQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRleHQsIGNhbGxi
YWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9
CiAKLXZvaWQgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNy
ZXRUb2tlbiwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdl
U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2
b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHVubGlua2FibGVU
b2tlbiwgV0tTdHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tT
dHJpbmdSZWYga2V5SUQsIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rp
bmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1w
bChwYWdlKS0+c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyh0b1dURlN0cmlu
Zyh1bmxpbmthYmxlVG9rZW4pLCB0b1dURlN0cmluZyhzZWNyZXRUb2tlbiksIHRvV1RGU3RyaW5n
KHNpZ25hdHVyZSksIHRvV1RGU3RyaW5nKGtleUlEKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJh
Y2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHVubGlua2Fi
bGVUb2tlbiksIHRvV1RGU3RyaW5nKHNlY3JldFRva2VuKSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJl
KSwgdG9XVEZTdHJpbmcoa2V5SUQpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewog
ICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdL
UGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZSwgdWludDY0X3Qgb3Jp
ZW50YXRpb24pCit2b2lkIFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1BhZ2VSZWYg
cGFnZVJlZiwgdWludDY0X3Qgb3JpZW50YXRpb24pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHRvSW1w
bChwYWdlKS0+c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUob3JpZW50YXRp
b24pOwogI2VuZGlmCiB9CiAKQEAgLTMwMDYsMzYgKzMxMzAsNDAgQEAgV0tfRVhQT1JUIGJvb2wg
V0tQYWdlSXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoV0tQYWdlUmVmKQog
I2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJl
ZiBwYWdlLCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGdW5jdGlvbiBjYWxsYmFjaywg
dm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0Z1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBs
KHBhZ2UpLT5nZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2Fs
bGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoW2NhbGxiYWNrQ29udGV4dCwg
Y2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zID0gV1RGOjptYXAoZG9tYWlu
cywgW10oYXV0byYgZG9tYWluKSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2Jq
ZWN0PihBUEk6OlN0cmluZzo6Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkpOwogICAg
ICAgICB9KTsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUoYXBpRG9tYWlucykpLnB0cigpKSwgY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKICNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAg
ICBjYWxsYmFjayhudWxscHRyLCBjYWxsYmFja0NvbnRleHQpOwogI2VuZGlmCiB9CiAKLXZvaWQg
V0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2UpCit2b2lk
IFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlUmVmKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMo
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCk7
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJl
Zik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxh
eUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIGRvdWJsZSBkZWxheSkKK3ZvaWQgV0tQYWdlU2V0
TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBk
b3VibGUgZGVsYXkpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYUNhcHR1cmVSZXBvcnRp
bmdEZWxheShTZWNvbmRzKGRlbGF5KSk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxh
eSkpOwogfQogCi12b2lkIFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0
ZUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kaXNw
YXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCk7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9y
VGVzdGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggNjU4MjQxM2FjYWNlMWQzNTNiZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4u
YzBkMWI3M2UxNjYwNzhiZWY5MzU2MjgyNDM0MWMzOTYzYTFkYTg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xOTksNiArMTk5LDkg
QEAgc3RhdGljIGNvbnN0IEJPT0wgZGVmYXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBmaXJzdFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVk
QnlEZWZhdWx0ID0gMHhBMDAwMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisj
ZGVmaW5lIFRIUk9XX0lGX1NVU1BFTkRFRCBpZiAoX3BhZ2UgJiYgX3BhZ2UtPmlzU3VzcGVuZGVk
KCkpIFwKKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNl
cHRpb24gZm9ybWF0OkAiVGhlIFdLV2ViVmlldyBpcyBzdXNwZW5kZWQiXQorCiBSZXRhaW5QdHI8
TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CkBAIC03MTgsMTEgKzcyMSwxMyBAQCAt
ICh2b2lkKV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTooaWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdh
dGU+KWRlbGVnYXRlCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFw
cGVyKF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWRGaWxlVVJMOihOU1VSTCAqKVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwg
KilyZWFkQWNjZXNzVVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghW1VS
TCBpc0ZpbGVVUkxdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiJUAgaXMgbm90IGEgZmlsZSBVUkwiLCBVUkxdOwogCkBAIC03
MzQsNiArNzM5LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJM
IGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWQKIAogLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFz
ZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3Ry
aW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKIAogICAgIHJldHVy
biBbc2VsZiBsb2FkRGF0YTpkYXRhIE1JTUVUeXBlOkAidGV4dC9odG1sIiBjaGFyYWN0ZXJFbmNv
ZGluZ05hbWU6QCJVVEYtOCIgYmFzZVVSTDpiYXNlVVJMXTsKQEAgLTc0MSwxMSArNzQ3LDEzIEBA
IC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNl
VVJMOihOU1VSTCAqKWJhc2VVUkwKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0
YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdO
YW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJh
c2VVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3Bh
Z2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBk
YXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFi
c29sdXRlU3RyaW5nKSk7CiB9CiAKIC0gKHZvaWQpc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25s
b2FkICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CiAgICAgICAg
IGlmIChkb3dubG9hZCkKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93
bmxvYWQpKTsKQEAgLTc1Niw2ICs3NjQsNyBAQCAtICh2b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1Jl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaQogCiAt
ICh2b2lkKXJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxl
cgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVz
dW1lRGF0YSBlcnJvcjpuaWxdKTsKICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQ
b2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CiAgICAgTlNEaWN0
aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltO
U1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3Nd
LCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05T
VVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFy
Y2hpdmVSb290T2JqZWN0S2V5Il07CkBAIC03ODIsNiArNzkxLDcgQEAgLSAodm9pZClyZXN1bWVE
b3dubG9hZEZyb21SZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5k
bGVyOih2b2kKIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkp
OwogfQogCkBAIC04NDAsNiArODUwLDcgQEAgLSAoQk9PTCljYW5Hb0ZvcndhcmQKIAogLSAoV0tO
YXZpZ2F0aW9uICopZ29CYWNrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChz
ZWxmLl9zYWZlQnJvd3NpbmdXYXJuaW5nKQogICAgICAgICByZXR1cm4gW3NlbGYgcmVsb2FkXTsK
ICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29CYWNrKCkpOwpAQCAtODQ3LDExICs4NTgsMTMg
QEAgLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2Fy
ZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
Z29Gb3J3YXJkKCkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVs
b2FkT3B0aW9uczsKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYkNvcmU6OlNES1ZlcnNpb246
OkZpcnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQogICAgICAgICByZWxvYWRPcHRp
b25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KTsKQEAgLTg2MSwyNiAr
ODc0LDMxIEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogCiAtIChXS05hdmlnYXRpb24gKily
ZWxvYWRGcm9tT3JpZ2luCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3
cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKSk7
CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgX3BhZ2UtPnN0b3BMb2FkaW5nKCk7CiB9CiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0Fz
eW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VV
c2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpuaWwgaW5Xb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29y
bGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKWV2
YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGluRnJhbWU6KFdL
RnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVu
dFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVh
dGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhTb3Vy
Y2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGluRnJhbWU6
ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOwogfQogCiAtICh2b2lkKWNhbGxBc3luY0phdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2
YVNjcmlwdFN0cmluZyBhcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilh
cmd1bWVudHMgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tD
b250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlk
LCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFz
QXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3Js
ZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTkyMCw2ICs5
MzgsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3VtZW50KGlkIGFyZ3VtZW50KQogCiAtICh2
b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKQEAgLTkzNiw2ICs5NTUsNyBAQCAtICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aQogCiAtICh2b2lk
KXBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYg
KCFjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBfcGFnZS0+cGF1c2VBbGxNZWRpYVBsYXli
YWNrKFtdIHsgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTk0Niw2ICs5NjYsNyBAQCAtICh2b2lk
KXBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkhhbgogCiAtICh2b2lkKXNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6
KEJPT0wpc3VzcGVuZGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRp
b25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKIApAQCAtOTc2
LDYgKzk5Nyw3IEBAIHN0YXRpYyBXS01lZGlhUGxheWJhY2tTdGF0ZSB0b1dLTWVkaWFQbGF5YmFj
a1N0YXRlKFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlIG1lCiAKIC0gKHZvaWQpcmVxdWVzdE1l
ZGlhUGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tNZWRpYVBs
YXliYWNrU3RhdGUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAw
Niw2ICsxMDI4LDcgQEAgLSAoV0tNZWRpYUNhcHR1cmVTdGF0ZSltaWNyb3Bob25lQ2FwdHVyZVN0
YXRlCiAKIC0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVT
dGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CiAKQEAgLTEwMjcsNiAr
MTA1MCw3IEBAIC0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1
cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjooCiAKIC0gKHZvaWQpc2V0Q2FtZXJhQ2Fw
dHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
ciA9IFtdIHsgfTsKIApAQCAtMTA0OCw2ICsxMDcyLDcgQEAgLSAodm9pZClzZXRDYW1lcmFDYXB0
dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoU291cmNlVVJM
OihOU1VSTCAqKXNvdXJjZVVSTCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVy
ZSBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluV29ybGQ6KFdLQ29udGVudFdvcmxkICop
d29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIAogICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHNNYXA7CkBAIC0xMTA5LDYgKzExMzQs
NyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0
cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYQogCiAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJh
dGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShDb2NvYUltYWdlICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgY29uc3Rl
eHByIGJvb2wgc25hcHNob3RGYWlsZWRUcmFjZVZhbHVlID0gZmFsc2U7CiAgICAgdHJhY2VQb2lu
dChUYWtlU25hcHNob3RTdGFydCk7CiAKQEAgLTExODIsNiArMTIwOCw3IEBAIC0gKHZvaWQpdGFr
ZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25h
cHNob3RDb25maWd1CiAKIC0gKHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9pbXBsLT5zZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyhhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcyk7CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTIyMCw2ICsxMjQ3
LDcgQEAgLSAoTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdlbnQKIAogLSAodm9pZClzZXRDdXN0b21V
c2VyQWdlbnQ6KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50CiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIF9wYWdlLT5zZXRDdXN0b21Vc2VyQWdlbnQoY3VzdG9tVXNlckFnZW50KTsK
IH0KIApAQCAtMTIzNCw2ICsxMjYyLDcgQEAgLSAoQk9PTClhbGxvd3NMaW5rUHJldmlldwogCiAt
ICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09MKWFsbG93c0xpbmtQcmV2aWV3CiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBfaW1wbC0+c2V0
QWxsb3dzTGlua1ByZXZpZXcoYWxsb3dzTGlua1ByZXZpZXcpOwogICAgIHJldHVybjsKQEAgLTEy
NTUsNiArMTI4NCw3IEBAIC0gKHZvaWQpc2V0QWxsb3dzTGlua1ByZXZpZXc6KEJPT0wpYWxsb3dz
TGlua1ByZXZpZXcKIAogLSAodm9pZClzZXRQYWdlWm9vbTooQ0dGbG9hdClwYWdlWm9vbQogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnZVpvb21GYWN0b3IocGFn
ZVpvb20pOwogfQogCkBAIC0xMjc5LDYgKzEzMDksNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmln
dQogCiAtICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhDb25maWd1cmF0
aW9uOihXS0ZpbmRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghc3RyaW5nLmxlbmd0aCkgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdp
dGhNYXRjaEZvdW5kOk5PXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xMjk2LDYgKzEz
MjcsNyBAQCArIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCiAK
IC0gKHZvaWQpc2V0TWVkaWFUeXBlOihOU1N0cmluZyAqKW1lZGlhU3R5bGUKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldE92ZXJyaWRkZW5NZWRpYVR5cGUobWVkaWFT
dHlsZSk7CiB9CiAKQEAgLTEzMTEsNiArMTM0Myw3IEBAIC0gKGlkKWludGVyYWN0aW9uU3RhdGUK
IAogLSAodm9pZClzZXRJbnRlcmFjdGlvblN0YXRlOihpZClpbnRlcmFjdGlvblN0YXRlCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghWyhpZClpbnRlcmFjdGlvblN0YXRlIGlz
S2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzMzUs
NiArMTM2OCw3IEBAIC0gKFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIAogLSAodm9pZClzZXRB
bGxvd3NNYWduaWZpY2F0aW9uOihCT09MKWFsbG93c01hZ25pZmljYXRpb24KIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwtPnNldEFsbG93c01hZ25pZmljYXRpb24oYWxsb3dz
TWFnbmlmaWNhdGlvbik7CiB9CiAKQEAgLTEzNDUsMTEgKzEzNzksMTMgQEAgLSAoQk9PTClhbGxv
d3NNYWduaWZpY2F0aW9uCiAKIC0gKHZvaWQpc2V0TWFnbmlmaWNhdGlvbjooZG91YmxlKW1hZ25p
ZmljYXRpb24gY2VudGVyZWRBdFBvaW50OihOU1BvaW50KXBvaW50CiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9pbXBsLT5zZXRNYWduaWZpY2F0aW9uKG1hZ25pZmljYXRpb24sIE5T
UG9pbnRUb0NHUG9pbnQocG9pbnQpKTsKIH0KIAogLSAodm9pZClzZXRNYWduaWZpY2F0aW9uOihk
b3VibGUpbWFnbmlmaWNhdGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfaW1w
bC0+c2V0TWFnbmlmaWNhdGlvbihtYWduaWZpY2F0aW9uKTsKIH0KIApAQCAtMTM2MCw2ICsxMzk2
LDcgQEAgLSAoZG91YmxlKW1hZ25pZmljYXRpb24KIAogLSAoTlNQcmludE9wZXJhdGlvbiAqKXBy
aW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzooTlNQcmludEluZm8gKilwcmludEluZm8KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKGF1dG8gd2ViRnJhbWVQcm94eSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIF9pbXBsLT5wcmludE9wZXJhdGlvbldpdGhQ
cmludEluZm8ocHJpbnRJbmZvLCAqd2ViRnJhbWVQcm94eSk7CiAgICAgcmV0dXJuIG5pbDsKQEAg
LTE1MjcsNiArMTU2NCw3IEBAIC0gKE9wdGlvbmFsPEJPT0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVT
aGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5nCiAKIC0gKHZvaWQpY3JlYXRlUERGV2l0
aENvbmZpZ3VyYXRpb246KFdLUERGQ29uZmlndXJhdGlvbiAqKXBkZkNvbmZpZ3VyYXRpb24gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmRG9jdW1lbnREYXRhLCBOU0Vycm9y
ICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CiAgICAgaWYgKGF1dG8gbWFpbkZy
YW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5m
cmFtZUlEKCk7CkBAIC0xNTUyLDYgKzE1OTAsNyBAQCAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25m
aWd1cmF0aW9uOihXS1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZQog
CiAtICh2b2lkKWNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1h
aW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3Jh
cHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsKQEAgLTE2MzMsMTcgKzE2NzIsMjAgQEAgLSAodm9p
ZClfZGlkQ2hhbmdlRWRpdG9yU3RhdGUKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRl
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSByZXNwb25zZURhdGE6KE5TRGF0YSAqKWRhdGEKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0
KHJlcXVlc3QsIHJlc3BvbnNlLCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5
dGVzKSwgZGF0YS5sZW5ndGggfSkpOwogfQogCiAvLyBGSVhNRSgyMjM2NTgpOiBSZW1vdmUgdGhp
cyBvbmNlIGFkb3B0ZXJzIGhhdmUgbW92ZWQgdG8gdGhlIGZpbmFsIEFQSS4KIC0gKFdLTmF2aWdh
dGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRhICop
ZGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gW3NlbGYgbG9hZFNp
bXVsYXRlZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSByZXNwb25zZURhdGE6ZGF0
YV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmluZy5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpAIlVURi04Il0pOwogCkBAIC0xNjUzLDExICsxNjk1LDEzIEBAIC0g
KFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IHJlc3BvbnNlSFRNTFN0cmluCiAvLyBGSVhNRSgyMjM2NTgpOiBSZW1vdmUgdGhpcyBvbmNl
IGFkb3B0ZXJzIGhhdmUgbW92ZWQgdG8gdGhlIGZpbmFsIEFQSS4KIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25z
ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVkUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNl
SFRNTFN0cmluZzpzdHJpbmddOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJM
ICopcmVhZEFjY2Vzc1VSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIFVS
TCA9IHJlcXVlc3QuVVJMOwogCiAgICAgaWYgKCFbVVJMIGlzRmlsZVVSTF0pCkBAIC0xNjg3LDcg
KzE3MzEsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1ByaXZhdGUpCiAKICNpZiBQ
TEFURk9STShNQUMpCiAKLSNkZWZpbmUgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoY29tbWFuZCkg
LSAodm9pZClfIyNjb21tYW5kOihpZClzZW5kZXIgeyBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5k
KCNjb21tYW5kICMjIF9zKTsgfQorI2RlZmluZSBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChjb21t
YW5kKSAtICh2b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRlciB7IFRIUk9XX0lGX1NVU1BFTkRFRDsg
X3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBfcyk7IH0KIAogV0VCQ09SRV9Q
UklWQVRFX0NPTU1BTkQoYWxpZ25DZW50ZXIpCiBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGln
bkp1c3RpZmllZCkKQEAgLTE3MDYsMjEgKzE3NTAsMjUgQEAgV0VCQ09SRV9QUklWQVRFX0NPTU1B
TkQocGFzdGVBbmRNYXRjaFN0eWxlKQogCiAtICh2b2lkKV90b2dnbGVTdHJpa2VUaHJvdWdoOihp
ZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmV4ZWN1dGVF
ZGl0Q29tbWFuZCgic3RyaWtldGhyb3VnaCJfcyk7CiB9CiAKIC0gKHZvaWQpX2luY3JlYXNlTGlz
dExldmVsOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PmluY3JlYXNlTGlzdExldmVsKCk7CiB9CiAKIC0gKHZvaWQpX2RlY3JlYXNlTGlzdExldmVsOihp
ZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmRlY3JlYXNl
TGlzdExldmVsKCk7CiB9CiAKIC0gKHZvaWQpX2NoYW5nZUxpc3RUeXBlOihpZClzZW5kZXIKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmNoYW5nZUxpc3RUeXBlKCk7CiB9
CiAKQEAgLTE3NzIsNiArMTgyMCw3IEBAIC0gKENHU2l6ZSlfdmlld3BvcnRTaXplRm9yQ1NTVmll
d3BvcnRVbml0cwogCiAtICh2b2lkKV9zZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
OihDR1NpemUpdmlld3BvcnRTaXplCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1
dG8gdmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cyA9IFdlYkNvcmU6OkludFNpemUodmlld3Bv
cnRTaXplKTsKICAgICBpZiAodmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cy5pc0VtcHR5KCkp
CiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBm
b3JtYXQ6QCJWaWV3cG9ydCBzaXplIHNob3VsZCBub3QgYmUgZW1wdHkiXTsKQEAgLTE3OTMsNiAr
MTg0Miw3IEBAIC0gKF9XS0luc3BlY3RvciAqKV9pbnNwZWN0b3IKIAogLSAodm9pZClfZGlkRW5h
YmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAq
PiAqKWV4dGVuc2lvbklEVG9OYW1lTWFwCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHRyYW5zZm9ybWVkOwogICAgIHRyYW5zZm9ybWVkLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZXh0ZW5zaW9uSURUb05hbWVNYXAuY291bnQpOwogICAgIFtl
eHRlbnNpb25JRFRvTmFtZU1hcCBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6WyZd
KE5TU3RyaW5nICpleHRlbnNpb25JRCwgTlNTdHJpbmcgKmV4dGVuc2lvbk5hbWUsIEJPT0wgKikg
ewpAQCAtMTgwMyw2ICsxODUzLDcgQEAgLSAodm9pZClfZGlkRW5hYmxlQnJvd3NlckV4dGVuc2lv
bnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGUKIAogLSAodm9p
ZClfZGlkRGlzYWJsZUJyb3dzZXJFeHRlbnNpb25zOihOU1NldDxOU1N0cmluZyAqPiAqKWV4dGVu
c2lvbklEcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBIYXNoU2V0PFN0cmluZz4g
dHJhbnNmb3JtZWQ7CiAgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRl
bnNpb25JRHMuY291bnQpOwogICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbklEIGluIGV4dGVu
c2lvbklEcykKQEAgLTE4NTEsNiArMTkwMiw3IEBAIC0gKEJPT0wpX2lzRWRpdGFibGUKIAogLSAo
dm9pZClfc2V0RWRpdGFibGU6KEJPT0wpZWRpdGFibGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgYm9vbCB3YXNFZGl0YWJsZSA9IF9wYWdlLT5pc0VkaXRhYmxlKCk7CiAgICAgX3Bh
Z2UtPnNldEVkaXRhYmxlKGVkaXRhYmxlKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xODY4LDYg
KzE5MjAsNyBAQCAtICh2b2lkKV9zZXRFZGl0YWJsZTooQk9PTCllZGl0YWJsZQogCiAtICh2b2lk
KV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJp
bmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MKSljb21wbGV0aW9uCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoY29t
bWFuZCwgYXJndW1lbnQsIFtjYXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uKV0gewogICAgICAgICBpZiAoY2FwdHVyZWRDb21wbGV0aW9uQmxvY2spCiAgICAg
ICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhZRVMpOwpAQCAtMTkwMyw2ICsxOTU2LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+PiBjcmVhdGVV
c2VySW5mbyhjb25zdCBPcHRpb25hbDxXZWIKIAogLSAodm9pZClfc3RhcnRUZXh0TWFuaXB1bGF0
aW9uc1dpdGhDb25maWd1cmF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiAq
KWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbjoodm9pZCheKSgpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHVzaW5nIEV4Y2x1c2lvblJ1bGUgPSBXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTsKIAogICAgIGlm
ICghX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSB8fCAhX3BhZ2UpIHsKQEAgLTE5NjcsNiArMjAy
MSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5J
ZGVudGlmaWVyIGNvcmVUZXh0TWFuaXB1bGF0aW9uCiAKIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1h
bmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtIGNvbXBsZXRpb246KHZv
aWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBpZiAoIV9wYWdlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyNCw2ICsyMDc5LDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFu
aXB1bGF0aW9uSXQKIAogLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6
KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKilpdGVtcyBjb21wbGV0aW9uOih2
b2lkKF4pKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIV9wYWdlKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VGYWlsdXJlU2V0Rm9yQWxsVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0
ZW1zKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNTEsNiArMjEwNyw3IEBAIC0gKHZv
aWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5p
cHVsYXRpb25JdGVtICo+ICopCiAKIC0gKHZvaWQpX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlv
bjooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBbc2VsZiBfdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uSW50ZXJuYWw6c2VuZGVy
XTsKICNlbHNlCkBAIC0yMTA1LDYgKzIxNjIsNyBAQCAtICh2b2lkKV9zZXRIaXN0b3J5RGVsZWdh
dGU6KGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+KWhpc3RvcnlEZWxlZ2F0ZQogCiAtICh2
b2lkKV91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogI2lmIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NP
TlRST0xTX01BTkFHRVIpCiAgICAgX2ltcGwtPnVwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9sc01h
bmFnZXIoKTsKICNlbmRpZgpAQCAtMjEzMCw2ICsyMTg4LDcgQEAgLSAoQk9PTClfaXNQaWN0dXJl
SW5QaWN0dXJlQWN0aXZlCiAKIC0gKHZvaWQpX3RvZ2dsZVBpY3R1cmVJblBpY3R1cmUKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJf
UExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBfaW1wbC0+dG9nZ2xlUGljdHVyZUluUGlj
dHVyZSgpOwogI2VuZGlmCkBAIC0yMTQyLDI2ICsyMjAxLDMxIEBAIC0gKF9XS01lZGlhTXV0ZWRT
dGF0ZSlfbWVkaWFNdXRlZFN0YXRlCiAKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRp
b25zCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIGNsb3NlQWxsTWVkaWFQ
cmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKIC0gKHZvaWQpX3N0
b3BNZWRpYUNhcHR1cmUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnN0
b3BNZWRpYUNhcHR1cmUoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6
QXVkaW9WaWRlbyk7CiB9CiAKIC0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhD
b21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9zdXNwZW5kQWxsTWVkaWFQbGF5
YmFjawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBzZXRBbGxNZWRpYVBs
YXliYWNrU3VzcGVuZGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCiAtICh2b2lk
KV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IFtzZWxmIHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKIH0KIApAQCAtMjE3OCw2ICsyMjQyLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEFuZEFk
ZEhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4K
IAogLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGln
aGxpZ2h0cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCiAgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAK
QEAgLTIxOTIsNiArMjI1Nyw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0Fy
cmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMKIAogLSAodm9pZClfcmVzdG9yZUFuZFNjcm9sbFRv
QXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpT
aGFyZWRNZW1vcnk+PiBidWZmZXJzOwogICAgIApAQCAtMjIwNCw2ICsyMjcwLDcgQEAgLSAodm9p
ZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQKIAog
LSAodm9pZClfYWRkQXBwSGlnaGxpZ2h0CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObywgV2Vi
Q29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzKTsKICNlbmRpZgpAQCAt
MjIyMywyMyArMjI5MCwyNyBAQCAtIChOU1VSTCAqKV9tYWluRnJhbWVVUkwKIAogLSAodm9pZClf
bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJM
ICopYmFzZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTAogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBfcGFnZS0+bG9hZEFsdGVy
bmF0ZUhUTUwoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEu
bGVuZ3RoIH0sICJVVEYtOCJfcywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtIChX
S05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5n
ICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVu
Y29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRh
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5s
b2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5s
ZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0
ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkp
KTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6KEJPT0wpc2hvdWxkT3BlbkV4dGVybmFsVVJM
cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfV0tTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHBvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMgPyBfV0tTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5QWxsb3cgOiBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
Tm90QWxsb3c7CiAgICAgcmV0dXJuIFtzZWxmIF9sb2FkUmVxdWVzdDpyZXF1ZXN0IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6cG9saWN5XTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xv
YWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6KF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeTsKICAgICBzd2l0Y2ggKHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpIHsKICAgICBjYXNlIF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lOb3RBbGxvdzoKQEAgLTIyNTcsMjQgKzIzMjgsMjggQEAgLSAoV0tOYXZpZ2F0aW9uICop
X2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2wKIAogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlKQogICAgICAgICBfcGFnZS0+Z3JhbnRBY2Nl
c3NUb0Fzc2V0U2VydmljZXMoKTsKIH0KIAogLSAodm9pZClfcmV2b2tlQWNjZXNzVG9Bc3NldFNl
cnZpY2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkKICAgICAg
ICAgX3BhZ2UtPnJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpOwogfQogCiAtICh2b2lkKV9z
d2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5CiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPnN3aXRjaEZy
b21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKTsKIH0KIAogLSAodm9pZClf
YXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEoW3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERhdGEpIG11dGFi
bGUgewogICAgICAgICBpZiAoIWFwcEJvdW5kRGF0YS5jb250ZXh0RGF0YS5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CkBA
IC0yMjg3LDYgKzIzNjIsNyBAQCAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9t
YWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodgogCiAtICh2b2lkKV9k
aWRMb2FkQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2
aWdhdGlvbkRhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhcHBCb3VuZERhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
CiAgICAgfSk7CkBAIC0yMjk0LDggKzIzNzAsMzAgQEAgLSAodm9pZClfZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZv
aWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+YXBw
Qm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVl
c3RUZXN0aW5nKTsKK30KKworLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnN1c3BlbmQo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9v
bCBzdWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0p
OworfQorCistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5yZXN1bWUoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOwogICAgIH0pOwogfQogCkBAIC0y
MzMyLDYgKzI0MzAsNyBAQCAtIChOU1N0cmluZyAqKV9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQKIAogLSAodm9pZClfc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OihOU1N0cmluZyAq
KWFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCk7CiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BV
c2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKIH0KQEAgLTIzODQsNiArMjQ4
Myw3IEBAIC0gKEJPT0wpX3dlYlByb2Nlc3NJc1Jlc3BvbnNpdmUKIAogLSAodm9pZClfa2lsbFdl
YkNvbnRlbnRQcm9jZXNzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghW3Nl
bGYgX2lzVmFsaWRdKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzOTIsMTYgKzI0OTIsMTkgQEAg
LSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxv
YWRXaXRob3V0Q29udGVudEJsb2NrZXJzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNh
YmxlQ29udGVudEJsb2NrZXJzKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRFeHBp
cmVkT25seQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKTsKIH0KIAog
LSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBSZWY8V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk+IHByb3RlY3Rl
ZFByb2Nlc3NQcm94eShfcGFnZS0+cHJvY2VzcygpKTsKICAgICBwcm90ZWN0ZWRQcm9jZXNzUHJv
eHktPnJlcXVlc3RUZXJtaW5hdGlvbihXZWJLaXQ6OlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6
UmVxdWVzdGVkQnlDbGllbnQpOwogCkBAIC0yNDEzLDYgKzI1MTYsNyBAQCAtICh2b2lkKV9raWxs
V2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlCiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29u
ZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgUmV0
YWluUHRyPFdLUERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmlndXJhdGlvbjsKICAgICBpZiAoc25h
cHNob3RDb25maWd1cmF0aW9uKSB7CiAgICAgICAgIHBkZkNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tQREZDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNDI0LDYgKzI1MjgsNyBA
QCAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbgogCiAtICh2b2lkKV9nZXRQREZGaXJzdFBhZ2VTaXpl
SW5GcmFtZTooX1dLRnJhbWVIYW5kbGUgKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShDR1NpemUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9wYWdlLT5nZXRQREZGaXJzdFBhZ2VTaXplKGZyYW1lLT5fZnJhbWVIYW5kbGUtPmZyYW1l
SUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8Q0dTaXplPihzaXplKSk7CiAgICAgfSk7CkBAIC0yNDU0LDYgKzI1NTksNyBA
QCAtIChfV0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXiko
V0tCYWNrRm9yd2FyZExpc3RJdGVtICppdAogCiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNz
aW9uIHN0YXRlIGRlY29kZXIuCiAgICAgV2ViS2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRl
OwogICAgIGlmICghV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHNlc3Npb25TdGF0ZURhdGEuYnl0ZXMpLCBzZXNzaW9uU3RhdGVEYXRh
Lmxlbmd0aCwgc2Vzc2lvblN0YXRlKSkKQEAgLTI0NjQsNiArMjU3MCw3IEBAIC0gKHZvaWQpX3Jl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YQogCiAt
IChXS05hdmlnYXRpb24gKilfcmVzdG9yZVNlc3Npb25TdGF0ZTooX1dLU2Vzc2lvblN0YXRlICop
c2Vzc2lvblN0YXRlIGFuZE5hdmlnYXRlOihCT09MKW5hdmlnYXRlCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZShzZXNzaW9uU3RhdGUgPyBzZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUgOiBXZWJLaXQ6
OlNlc3Npb25TdGF0ZSB7IH0sIG5hdmlnYXRlKSk7CiB9CiAKQEAgLTI0NzQsNiArMjU4MSw3IEBA
IC0gKHZvaWQpX2Nsb3NlCiAKIC0gKEJPT0wpX3RyeUNsb3NlCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIHJldHVybiBfcGFnZS0+dHJ5Q2xvc2UoKTsKIH0KIApAQCAtMjQ4NCw2ICsy
NTkyLDcgQEAgLSAoQk9PTClfaXNDbG9zZWQKIAogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRB
dHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihO
U1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0
YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wg
c3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFd
KTsKICAgICBpZiAoZmlsZW5hbWUpCkBAIC0yNDkzLDEyICsyNjAyLDE0IEBAIC0gKF9XS0F0dGFj
aG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFt
ZSBjb250ZW50VHlwCiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0
cmluZyAqKWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAq
KW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFVOVVNFRF9QQVJBTShvcHRpb25z
KTsKICAgICByZXR1cm4gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Zmls
ZVdyYXBwZXIgY29udGVudFR5cGU6Y29udGVudFR5cGUgY29tcGxldGlvbjpjb21wbGV0aW9uSGFu
ZGxlcl07CiB9CiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
V3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmlu
ZyAqKWNvbnRlbnRUeXBlIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShp
ZGVudGlmaWVyLCAqX3BhZ2UpOwpAQCAtMjUxOCw2ICsyNjI5LDcgQEAgLSAoX1dLQXR0YWNobWVu
dCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmls
ZVdyYXBwZXIKIAogLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IF9wYWdl
LT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXIoYXR0YWNobWVudCk7CkBAIC0yNTI3LDYgKzI2MzksNyBAQCAtIChfV0tBdHRhY2htZW50
ICopX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAogLSAo
dm9pZClfc2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZVdpdGhBbHBoYTooZG91YmxlKWFs
cGhhIGJldGE6KGRvdWJsZSliZXRhIGdhbW1hOihkb3VibGUpZ2FtbWEKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2Uo
YWxwaGEsIGJldGEsIGdhbW1hKTsKIH0KIApAQCAtMjU0Miw2ICsyNjU1LDcgQEAgKyAoQk9PTClf
d2lsbFVwZ3JhZGVUb0hUVFBTOihOU1VSTCAqKXVybAogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dz
aW5nV2FybmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAq
KXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBbc2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5p
bCB0aXRsZTp0aXRsZSB3YXJuaW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNv
bXBsZXRpb25IYW5kbGVyOl4oQk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsK
ICAgICAgICAgQVNTRVJUKCF1cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51
ZVVuc2FmZUxvYWQpOwpAQCAtMjU1MCw2ICsyNjY0LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93
c2luZ1dhcm5pbmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcg
KikKIAogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVy
bCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0
YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBbc2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTp0aXRs
ZSB3YXJuaW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRpb25IYW5k
bGVyOl4oQk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAgICAgQVNT
RVJUKCF1cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2FmZUxvYWQp
OwpAQCAtMjU1OCw2ICsyNjczLDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdX
aXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXIKIAogLSAodm9p
ZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNT
dHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsc1dpdGhMaW5r
czooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShCT09MLCBOU1VSTCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBhdXRvIHNhZmVCcm93c2luZ1dhcm5pbmcgPSBXZWJLaXQ6OlNhZmVCcm93c2lu
Z1dhcm5pbmc6OmNyZWF0ZSh1cmwsIHRpdGxlLCB3YXJuaW5nLCBkZXRhaWxzKTsKICAgICBhdXRv
IHdyYXBwZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmIHZhcmlh
bnQpIHsKICAgICAgICAgc3dpdGNoT24odmFyaWFudCwgWyZdIChXZWJLaXQ6OkNvbnRpbnVlVW5z
YWZlTG9hZCBjb250aW51ZVVuc2FmZUxvYWQpIHsKQEAgLTI1OTAsNiArMjcwNiw3IEBAICsgKE5T
VVJMICopX3Zpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsCiAKIC0gKHZvaWQpX2lzSklURW5hYmxl
ZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+aXNKSVRFbmFibGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CkBAIC0yNTk3LDExICsyNzE0LDEzIEBA
IC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgog
CiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlv
bjpOTyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJl
Ok5PIGluRnJhbWU6bmlsIGluV29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfY2FsbEFzeW5jSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJndW1lbnRzOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
aW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6
ZnVuY3Rpb25Cb2R5IGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFy
Z3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldv
cmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9
CiAKQEAgLTI2MjYsMTEgKzI3NDUsMTMgQEAgLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50YXRpb25z
Q2xvc2VkCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdL
Q29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBh
c0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9y
Y2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX2V2YWx1YXRl
SmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhTb3VyY2VVUkw6KE5T
VVJMICopdXJsIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdL
Q29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBh
c0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDp1cmwgd2l0aEFyZ3VtZW50czpuaWwgZm9y
Y2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTI2NDAsNiArMjc2MSw3
IEBAIC0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICop
d2Vic2l0ZVBvbGljaWVzCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgaWYgKHdlYnBhZ2VQcmVmZXJlbmNlcy5fd2Vic2l0ZURhdGFTdG9yZSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZv
cm1hdDpAIlVwZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJp
bmcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4iXTsKICAgICBpZiAod2VicGFnZVBy
ZWZlcmVuY2VzLl91c2VyQ29udGVudENvbnRyb2xsZXIpCkBAIC0yNjUwLDExICsyNzcyLDEzIEBA
IC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMg
Kil3ZWJwYWdlUHJlZmVyZW5jZXMKIAogLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPm5vdGlmeVVzZXJTY3JpcHRzKCk7CiB9
CiAKIC0gKEJPT0wpX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9wYWdlLT51c2VyU2NyaXB0c05lZWRO
b3RpZmljYXRpb24oKTsKIH0KIApAQCAtMjY2OSw2ICsyNzkzLDcgQEAgLSAoQk9PTClfYWxsb3dz
UmVtb3RlSW5zcGVjdGlvbgogCiAtICh2b2lkKV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihC
T09MKWFsbG93CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQogICAgIF9wYWdlLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsK
ICNlbmRpZgpAQCAtMjY4NSw2ICsyODEwLDcgQEAgLSAoTlNTdHJpbmcgKilfcmVtb3RlSW5zcGVj
dGlvbk5hbWVPdmVycmlkZQogCiAtICh2b2lkKV9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJy
aWRlOihOU1N0cmluZyAqKW5hbWUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25OYW1l
T3ZlcnJpZGUobmFtZSk7CiAjZW5kaWYKQEAgLTI2OTcsNiArMjgyMyw3IEBAIC0gKEJPT0wpX2Fk
ZHNWaXNpdGVkTGlua3MKIAogLSAodm9pZClfc2V0QWRkc1Zpc2l0ZWRMaW5rczooQk9PTClhZGRz
VmlzaXRlZExpbmtzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRB
ZGRzVmlzaXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOwogfQogCkBAIC0yNzQ0LDYgKzI4NzEs
NyBAQCAtICh2b2lkKV9zZXRPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOihfV0tSZW5k
ZXJpbmdQcm9ncmVzc0V2ZW50cylvYnNlcnZlZAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VE
YXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+
Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRh
dGEpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAg
ICB9KTsKQEAgLTI3NTEsMTEgKzI4NzksMTMgQEAgLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0
YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikKIAog
LSAodm9pZClfZ2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIFtzZWxmIGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0
cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFn
ZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXM6Ok5vLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KFN0cmluZyBzdHJpbmcpIHsKICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CiAgICAgfSk7
CkBAIC0yNzYzLDYgKzI4OTMsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yCiAKIC0gKHZvaWQp
X2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNT
dHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewogICAgICAgICBoYW5kbGVyKHN0cmlu
Zyk7CiAgICAgfSk7CkBAIC0yNzcwLDYgKzI5MDEsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c09m
QWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5n
CiAKIC0gKHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTlNEaWN0aW9uYXJ5PE5TQXR0
cmlidXRlZFN0cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4gKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0
Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiBhdHRyaWJ1dGVkU3RyaW5nKSB7CiAgICAgICAgIGlmIChhdHRy
aWJ1dGVkU3RyaW5nLnN0cmluZykKICAgICAgICAgICAgIGhhbmRsZXIoYXR0cmlidXRlZFN0cmlu
Zy5zdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgp
LCBuaWwpOwpAQCAtMjc4MCw2ICsyOTEyLDcgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc0F0dHJp
YnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXR0cmlidXQKIAog
LSAodm9pZClfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAg
ICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFu
ZGxlcikgewpAQCAtMjgxNyw2ICsyOTUwLDcgQEAgLSAoX1dLUGFnaW5hdGlvbk1vZGUpX3BhZ2lu
YXRpb25Nb2RlCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25Nb2RlOihfV0tQYWdpbmF0aW9uTW9k
ZSlwYWdpbmF0aW9uTW9kZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3Jl
OjpQYWdpbmF0aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9kZSkgewog
ICAgIGNhc2UgX1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKQEAgLTI4NDgsNiArMjk4Miw3
IEBAIC0gKEJPT0wpX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMKIAogLSAodm9pZClfc2V0
UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnMKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2luYXRpb25CZWhhdmVz
TGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0KIApAQCAtMjg1OCw2ICsyOTkzLDcg
QEAgLSAoQ0dGbG9hdClfcGFnZUxlbmd0aAogCiAtICh2b2lkKV9zZXRQYWdlTGVuZ3RoOihDR0Zs
b2F0KXBhZ2VMZW5ndGgKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNl
dFBhZ2VMZW5ndGgocGFnZUxlbmd0aCk7CiB9CiAKQEAgLTI4NjgsNiArMzAwNCw3IEBAIC0gKENH
RmxvYXQpX2dhcEJldHdlZW5QYWdlcwogCiAtICh2b2lkKV9zZXRHYXBCZXR3ZWVuUGFnZXM6KENH
RmxvYXQpZ2FwQmV0d2VlblBhZ2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwQmV0d2VlblBhZ2VzKTsKIH0KIApAQCAtMjg3OCw2
ICszMDE1LDcgQEAgLSAoQk9PTClfcGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZAogCiAtICh2b2lk
KV9zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOihCT09MKWxpbmVHcmlkRW5hYmxlZAogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlk
RW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC0yODk4LDYgKzMwMzYsNyBAQCAtIChk
b3VibGUpX3RleHRab29tRmFjdG9yCiAKIC0gKHZvaWQpX3NldFRleHRab29tRmFjdG9yOihkb3Vi
bGUpem9vbUZhY3RvcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0
VGV4dFpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKQEAgLTI5MDgsNiArMzA0Nyw3IEBAIC0g
KGRvdWJsZSlfcGFnZVpvb21GYWN0b3IKIAogLSAodm9pZClfc2V0UGFnZVpvb21GYWN0b3I6KGRv
dWJsZSl6b29tRmFjdG9yCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNl
dFBhZ2Vab29tOnpvb21GYWN0b3JdOwogfQogCkBAIC0yOTY5LDYgKzMxMDksNyBAQCBzdGF0aWMg
aW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0Zp
bmRPcHRpb25zIHdrRmluZAogCiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5n
ICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUlu
dGVnZXIpbWF4Q291bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CiAgICAgICAgIFtfY3Vz
dG9tQ29udGVudFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hlczpzdHJpbmcgb3B0aW9uczpvcHRp
b25zIG1heENvdW50Om1heENvdW50XTsKQEAgLTI5ODAsNiArMzEyMSw3IEBAIC0gKHZvaWQpX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtCiAKIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9w
dGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291
bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBXaGlsZSBBcHBLaXQgY29udGFpbnMgbG9naWMgaW4gTlNCYXJUZXh0RmluZGVyIHRv
IGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBmaW5kIHBhc3RlYm9hcmQKICAgICAvLyB3aGVuIHRo
ZSBmaW5kIHN0cmluZyBjaGFuZ2VzLCB0aGlzIChhbG9uZyB3aXRoIHRoZSBmaW5kIHBhc3RlYm9h
cmQgaXRzZWxmKSBhcmUgYm90aCBtaXNzaW5nCkBAIC0yOTk2LDYgKzMxMzgsNyBAQCAtICh2b2lk
KV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylv
cHRpb25zIG1heENvdW50OgogCiAtICh2b2lkKV9oaWRlRmluZFVJCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9jdXN0b21Db250
ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9oaWRlRmluZFVJXTsK
QEAgLTMwMDcsNiArMzE1MCw3IEBAIC0gKHZvaWQpX2hpZGVGaW5kVUkKIAogLSAodm9pZClfc2F2
ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVt
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0
dXJuOwogICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRlbSk7CkBA
IC0zMDIwLDYgKzMxNjQsNyBAQCAtICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmNsZWFyU2VydmljZVdvcmtlckVu
dGl0bGVtZW50T3ZlcnJpZGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpA
QCAtMzAyNyw2ICszMTcyLDcgQEAgLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClf
cHJlY29ubmVjdFRvU2VydmVyOihOU1VSTCAqKXVybAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+cHJlY29ubmVjdFRvKHVybCk7CiB9CiAKQEAgLTMwMzcsNiArMzE4Myw3
IEBAIC0gKEJPT0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiAKIC0gKHZvaWQpX3NldENhblVz
ZUNyZWRlbnRpYWxTdG9yYWdlOihCT09MKWNhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFn
ZShjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSk7CiB9CiAKQEAgLTMxNzcsNiArMzMyNCw3IEBAIC0g
KF9XS0xheW91dE1vZGUpX2xheW91dE1vZGUKIAogLSAodm9pZClfc2V0TGF5b3V0TW9kZTooX1dL
TGF5b3V0TW9kZSlsYXlvdXRNb2RlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBXS0xheW91dE1vZGUgd2tWaWV3TGF5b3V0TW9kZTsKICAgICBzd2l0
Y2ggKGxheW91dE1vZGUpIHsKQEAgLTMyMDcsMTEgKzMzNTUsMTMgQEAgLSAoQ0dTaXplKV9maXhl
ZExheW91dFNpemUKIAogLSAodm9pZClfc2V0Rml4ZWRMYXlvdXRTaXplOihDR1NpemUpZml4ZWRM
YXlvdXRTaXplCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRGaXhl
ZExheW91dFNpemUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShm
aXhlZExheW91dFNpemUpKSk7CiB9CiAKIC0gKHZvaWQpX3NldEJhY2tncm91bmRFeHRlbmRzQmV5
b25kUGFnZTooQk9PTCliYWNrZ3JvdW5kRXh0ZW5kcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRF
eHRlbmRzKTsKIH0KIApAQCAtMzIzMSw2ICszMzgxLDcgQEAgLSAoQ0dGbG9hdClfdmlld1NjYWxl
CiAKIC0gKHZvaWQpX3NldFZpZXdTY2FsZTooQ0dGbG9hdCl2aWV3U2NhbGUKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKHZpZXdTY2FsZSA8PSAwIHx8IGlzbmFuKHZpZXdTY2Fs
ZSkgfHwgaXNpbmYodmlld1NjYWxlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXcgc2NhbGUgc2hvdWxkIGJlIGEgcG9z
aXRpdmUgbnVtYmVyIl07CiAKQEAgLTMyNTEsMTEgKzM0MDIsMTMgQEAgLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIAogLSAodm9pZClfc2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVybnMKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtl
VmVjdG9yPFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAogLSAodm9pZClfZ2V0UHJvY2Vzc0Rpc3Bs
YXlOYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0UHJv
Y2Vzc0Rpc3BsYXlOYW1lKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byYmIG5hbWUpIHsKICAgICAgICAgaGFuZGxlcihuYW1lKTsKICAgICB9KTsKQEAgLTMy
NjMsNiArMzQxNiw3IEBAIC0gKHZvaWQpX2dldFByb2Nlc3NEaXNwbGF5TmFtZVdpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxlCiAKIC0gKHZvaWQpX3NldE1p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aDooQ0dGbG9hdCltaW5pbXVtRWZmZWN0aXZlRGV2aWNl
V2lkdGgKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoX3BhZ2UtPm1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCgpID09IG1pbmlt
dW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI4NSw2ICszNDM5
LDcgQEAgLSAoQ0dGbG9hdClfbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoCiAKIC0gKHZvaWQp
X2dyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1RvUHJlZmVyZW5j
ZVNlcnZpY2UoKTsKIH0KQEAgLTMyOTMsNiArMzQ0OCw3IEBAIC0gKHZvaWQpX2dyYW50QWNjZXNz
VG9QcmVmZXJlbmNlU2VydmljZQogCiAtICh2b2lkKV9zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIF9wYWdlLT5zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChl
bmFibGVkKTsKIH0KIApAQCAtMzMyMyw2ICszNDc5LDcgQEAgLSAoQk9PTClfYWxsb3dzTWVkaWFE
b2N1bWVudElubGluZVBsYXliYWNrCiAKIC0gKHZvaWQpX3NldEFsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjazooQk9PTClmbGFnCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX3BhZ2UtPnNldEFsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjayhmbGFnKTsKICNlbmRpZgpAQCAtMzM2MSw2ICszNTE4LDcgQEAgLSAoX1dL
TWVkaWFDYXB0dXJlU3RhdGVEZXByZWNhdGVkKV9tZWRpYUNhcHR1cmVTdGF0ZQogCiAtICh2b2lk
KV9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CiB9
CiAKQEAgLTMzNzEsNiArMzUyOSw3IEBAIC0gKEJPT0wpX21lZGlhQ2FwdHVyZUVuYWJsZWQKIAog
LSAodm9pZClfc2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVkU3RhdGUpbXV0ZWRTdGF0ZQogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRl
ZFN0YXRlRmxhZ3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVkU3RhdGUgJiBfV0tNZWRpYUF1
ZGlvTXV0ZWQpCkBAIC0zMzg1LDYgKzM1NDQsNyBAQCAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9X
S01lZGlhTXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiAKIC0gKHZvaWQpX3JlbW92ZURhdGFEZXRlY3Rl
ZExpbmtzOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIF9wYWdlLT5yZW1vdmVEYXRh
RGV0ZWN0ZWRMaW5rcyhbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgcGFn
ZSA9IG1ha2VXZWFrUHRyKF9wYWdlLmdldCgpKV0gKGF1dG8mIHJlc3VsdCkgewogICAgICAgICBp
ZiAocGFnZSkKQEAgLTM0MDAsMTEgKzM1NjAsMTMgQEAgLSAodm9pZClfcmVtb3ZlRGF0YURldGVj
dGVkTGlua3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbgogLy8gRXhlY3V0ZSB0aGUgc3Vw
cGxpZWQgYmxvY2sgYWZ0ZXIgdGhlIG5leHQgdHJhbnNhY3Rpb24gZnJvbSB0aGUgV2ViUHJvY2Vz
cy4KIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lk
KSl1cGRhdGVCbG9jawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfaW50
ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp1cGRhdGVCbG9jayB3aXRob3V0V2Fp
dGluZ0ZvclBhaW50aW5nOk5PIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6Tk9dOwog
fQogCiAtICh2b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5n
Rm9yUGFpbnRpbmc6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlOnVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6WUVTIHdpdGhvdXRXYWl0
aW5nRm9yQW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZh
OGQxY2Q5NmY0NjkyYWMzNjIxYjkzYmVlY2MwLi4yZGZlYWJhMGRkNGNiM2Q0ZTAwZTlkNWZiYWNj
ODM4MjAwN2RmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQxMCw2ICs0MTAsOSBAQCBmb3IgdGhpcyBwcm9w
ZXJ0eS4KIC0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVz
dWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVl
c3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLSAodm9pZClf
c3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN1
bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJH
RVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCBiZTFkYzczOGQyYzViNzYxZjhkNjRhMWRkZDc3ZDJmODA3YTA2MjdhLi5hMzcwZjM1OGU4NzNj
OWI2MDg5NTNiNzI0N2ViMjgzOWIwMzRmYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTMxNDMsNyArMzE0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIC8v
IElmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBjYXNlIGR1cmlu
ZyBwYW5uaW5nLCBwaW5jaGluZwogICAgIC8vIGFuZCBhbmltYXRpb24gb24gdGhlIHBhZ2UgaXRz
ZWxmIChraW5ldGljIHNjcm9sbGluZywgdGFwIHRvIHpvb20pIGV0YywgdGhlbgogICAgIC8vIHdl
IGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRzIHRvIHRoZSBwYWdlIGV2ZW4gaWYgaXMgaGFz
IGxpc3RlbmVycy4KLSAgICBpZiAoIW1faXNQYWdlU3VzcGVuZGVkKSB7CisgICAgaWYgKCFtX2Fy
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91
Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAgICAgICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNw
b25zaXZlbmVzc1RpbWVyKCk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNo
RXZlbnQoZXZlbnQpKTsKQEAgLTM1OTEsMjQgKzM1OTEsNDUgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsK
LSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc1BhZ2VTdXNwZW5k
ZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVu
ZGVkID0gZmFsc2U7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpIHx8IG1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSB8fCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9hcmVB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7CiAKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAic3VzcGVuZDoiKTsKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkg
fHwgbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKworICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJyZXN1bWU6Iik7CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwg
IW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewog
ICAgIC8vIEZJWE1FICgxMTg4NDApOiBXZSBzaG91bGQgcHJvYmFibHkgb25seSBzdXBwb3J0IHRo
aXMgZm9yIHRleHQgZG9jdW1lbnRzLCBub3QgYWxsIG5vbi1pbWFnZSBkb2N1bWVudHMuCkBAIC02
MDc4LDcgKzYwOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZShNZWRp
YVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kIGtpbmQsIENvbXBsZQogI2VuZGlmCiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChNZWRpYVBsYXliYWNrU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwpAQCAtNzcxOSw3ICs3NzQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0
U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmEK
ICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRyOwogCiAgICAgbV9oYXNSdW5uaW5nUHJv
Y2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9hcmVB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZhbHNlOwogCiAgICAgbV91
c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNWI0NTdkZmI2MDMxZWY2MzlhZDNhZTNmY2JmZmZhZTZhNmQ4NTcwMi4u
ZDUxM2FhYTNiZTI3ZTRhNTE2MzFlYWIxM2ZmYWNhOTJhZjFjMGNjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwNSw2ICs1MDUsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigp
OwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIGJv
b2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGVkOyB9CisKICAgICBX
ZWJJbnNwZWN0b3JVSVByb3h5KiBpbnNwZWN0b3IoKSBjb25zdDsKICAgICBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7
IH0KIApAQCAtMTAxNCw3ICsxMDE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VzdG9tVGV4
dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY3VzdG9tVGV4dEVuY29k
aW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4dEVuY29kaW5nTmFtZTsgfQogCi0g
ICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNQYWdlU3VzcGVuZGVkOyB9CisgICAgYm9vbCBhcmVBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0KICAgICB2b2lkIHJlc3VtZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKTsKIApAQCAtMjc1Myw3ICsyNzU3LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2Vu
ZGlmCiAKLSAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
YXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwogCiAgICAgYm9vbCBtX2NvbnRyb2xs
ZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwpAQCAtMzAxNSw2ICszMDE5LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTg2NDZmZTRiOTdh
MTJiYTVlY2RhMGVjYzdlNTJhMTMzYjBmYzQ0OC4uNzY2NWFlODhmMjQ3M2I5ZTEyZTdmMTc4NTE0
MDczODZjNGU2MjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJl
c291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENhY2hlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nh
Y2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRhY3RzUmVxdWVzdERhdGEuaD4K
QEAgLTM1OTYsNiArMzU5NywzNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3VtZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7Cisg
ICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQYWdlU3VzcGVu
ZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tGb3J3YXJkQ2FjaGU6OnNpbmdsZXRvbigp
LnN1c3BlbmRQYWdlKCptX3BhZ2UpOworICAgIEFTU0VSVChtX2NhY2hlZFBhZ2UpOworICAgIGlm
IChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAgbWFp
bkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3BlbmVkRnJhbWVzKCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVzdW1lKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBtX3BhZ2U9JXAiLCBtX3BhZ2UuZ2V0KCkp
OworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpleGNoYW5nZShtX2NhY2hlZFBhZ2Us
IG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2Up
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBjYWNoZWRQ
YWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZy
ZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQm
IHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVlNDQ3M2FkYzRiOTgwZTBkYjhkN2EzZTAz
NDg3YmIyZmU4OThmYmMuLmZjOTYyMWUzNzJjNWI0MDQyYjllZGJjYmNmMmUzMjM2NDNhYWVhMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3Nyw2
ICsxNzcsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FwdHVyZURldmljZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0xNjY5LDYgKzE2NzAsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAg
dm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCisgICAgdm9pZCBz
dXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1l
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJl
bnRTZWxlY3Rpb24oKTsKQEAgLTIzMTgsNiArMjMyMiw4IEBAIHByaXZhdGU6CiAKICAgICBWZWN0
b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDYWNoZWRQYWdlPiBtX2NhY2hlZFBhZ2U7CisKICNpZiBFTkFCTEUoSVBDX1RF
U1RJTkdfQVBJKQogICAgIGJvb2wgbV9pcGNUZXN0aW5nQVBJRW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgdWludDY0X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMzdhNjU5Yzkx
YjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4xYjNhNjgxZmNiNTFmNDEzZTIxYmE0MjU0
NDJiOGMwYTFmZDVlMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2ICsyNTAsOSBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIFN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
CiAgICAgUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogCisgICAgU3VzcGVu
ZCgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgUmVzdW1lKCkgLT4gKGJvb2wgc3VjY2Vz
cykgQXN5bmMKKwogICAgIENsb3NlKCkKICAgICBUcnlDbG9zZSgpIC0+IChib29sIHNob3VsZENs
b3NlKSBBc3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZmU4MDhmZWUzNDZmODY3NzdiMjI2NjljMDViZTZlZDk0YjQwNzZlZS4uMDNiMjdk
YmNkODU5OTkyODA2ZDcyMWI0NzVlY2QxZmY2MDE2ODEwZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTEw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBz
dXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHku
aHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMTAgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJlZmxpZ2h0IHJlcXVlc3RzIG5vdCBwcm9wZXJseSBh
dHRyaWJ1dGVkIGFzIGFwcC1ib3VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmY2RlYWI0
ZjQ5ZDc3OTk3ZDBiMTNkYTgyYWRkY2NjMjllNzNjM2IzLi45YTc1YTMxYzcwYTdjNjhjMjAwNDc3
NzEwYjM5NDBiNzU2MmY1MDEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2
Miw3IEBACiAJCTQ2M0Y0NzIzMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGNDcyMjI1
NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovOyB9OwogCQk0NjQ3QjEyNjFF
QkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYg
LyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgKi87IH07CiAJCTQ2NEM3NjREMjMwREY4NUMwMEFG
QjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBE
RjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAq
LzsgfTsKKwkJNDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJs
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRt
bCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVCMkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIy
QTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLzsgfTsKIAkJNDY2QzM4NDMyMTA2MzdERTAw
NkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0Uw
MDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3
QzU2NTMyMUI1RUQxMzAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVF
Q0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovOyB9OwpAQCAtODY4LDggKzg2
OSw4IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBsaWJpY3Vjb3JlLmR5bGliIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4M0UwMzMx
RDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjU2REE5MUU1
RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBX
S1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5IC8q
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGN0U4NkUxNERDOEU1QjAw
Qzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3Bw
ICovOyB9OwotCQk5NTA5NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1
RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5
M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQ0RCMzMyNjM2MzE1NjAwNDZE
RDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLzsgfTsKKwkJOTUwOTVGMjAyNjJGRkZBNTAwMDBE
OTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBh
Z2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTUwRTRDQzEyNTJFNzUyNDAwNzE2NTlGIC8qIGlPU1N0
eWx1c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLzsg
fTsKIAkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0g
Ki87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBNTI0
OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi87IH07CkBAIC0x
NjQ5LDYgKzE2NTAsNyBAQAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJl
SW5QaWN0dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDE1MDg2
RDFEQTA0MEM1MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTBFQkJDQzY2MUZGRjlFMEMwMEZBNDJBQiAvKiBwb3AtdXAtY2hlY2su
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk0NjVDMjNBRjI2NDBDM0ZFMDBGMkZDN0Yg
LyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
RjQxQUI5QTgxRUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTkxRUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQt
c3RhcnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNkZERERENjE0MjQxQzZGMDA0
RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjA2Niw2
ICsyMDY4LDcgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlT
dGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAw
NDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NUMyM0FFMjY0
MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERF
IC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25D
b29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjUsOCArMjU2OCw4IEBACiAJ
CTkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1NuYXBzaG90Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2QjE0REM4RTREMDBDODRBOTkgLyog
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZFMTREQzhFNUIwMEM4
NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3Iu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3
RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1
MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlGIC8q
IGlPU1N0eWx1c1N1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBpT1NTdHlsdXNTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUE1MjQ5NDI1
ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1RoZW1lQ29sb3IubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDcwLDYgKzQwNzMsNyBAQAogCQkJCTlCN0Q3NDBFMUY4
Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3
RTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUw
ODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCisJCQkJ
NDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICov
LAogCQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1s
ICovLAogCQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwg
Ki8sCiAJCQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1
ZGluZy1vdmVyZmxvdy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KaW5kZXggOTk2NjFiMzQw
M2IwNGQxNDFhMWM0MjgxNDViN2Q2ZmY0Nzk4ZGRjMi4uMGIwYjlhYzk2NzA1ODIxNmUwNDM5OGJl
ZjQ3NWVjYjdlMWY5MWQ4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCkBAIC0yNiwxMSArMjYsMTMg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9y
VGVzdGluZy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAKIFRFU1QoUHJvY2Vzc1N1c3Bl
bnNpb24sIENhbmNlbFdlYlByb2Nlc3NTdXNwZW5zaW9uKQogewpAQCAtODMsMyArODUsMTUxIEBA
IFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlc3Ryb3lXZWJQYWdlRHVyaW5nV2ViUHJvY2Vzc1N1
c3BlbnNpb24pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMSk7CiAgICAgRVhQRUNU
X0VRKHBpZDEsIFt3ZWJWaWV3MyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KKworVEVTVChQ
cm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBhZ2UpCit7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKworICAgIGF1dG8gdGVzdE1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOnRlc3RNZXNzYWdlSGFuZGxlci5nZXQo
KSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBfX2Jsb2NrIHVuc2lnbmVkIHRpbWVyRmlyZWRD
b3VudCA9IDA7CisgICAgW3Rlc3RNZXNzYWdlSGFuZGxlciBhZGRNZXNzYWdlOkAidGltZXIgZmly
ZWQiIHdpdGhIYW5kbGVyOl57CisgICAgICAgICsrdGltZXJGaXJlZENvdW50OworICAgIH1dOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBvc3RNZXNzYWdlLXJlZ3VsYXJseSJdOworCisgICAgYXV0
byBwaWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShw
aWQsIDApOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBiZSBmaXJpbmcuCisgICAgYXV0byBs
YXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1l
ckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBs
YXN0VGltZXJGaXJlQ291bnQpOworCisgICAgYXV0byB0ZXN0UmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5v
cmcvIl1dOworICAgIGlkIHRlc3RJbnRlcmFjdGlvblN0YXRlID0gW3dlYlZpZXcgaW50ZXJhY3Rp
b25TdGF0ZV07CisgICAgYXV0byBvcmlnaW5hbFVSTCA9IFt3ZWJWaWV3IFVSTF07CisKKyAgICAv
LyBTdXNwZW5kIHRoZSBwYWdlLgorICAgIFt3ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwor
ICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdl
Ol4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBubyBsb25nZXIgYmUgZmlyaW5nLgorICAg
IGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzcGluUnVuTG9vcCgxMDApOworICAgIEVYUEVDVF9FUShsYXN0VGltZXJGaXJlQ291
bnQsIHRpbWVyRmlyZWRDb3VudCk7CisKKyAgICBhdXRvIGNoZWNrVGhyb3dzID0gW10oRnVuY3Rp
b248dm9pZCgpPiYmIGYpIHsKKyAgICAgICAgQHRyeSB7CisgICAgICAgICAgICBmKCk7CisgICAg
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvLyBNb3N0
IG9wZXJhdGlvbnMgb24gV0tXZWJWaWV3IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBz
dXNwZW5kZWQuCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAid2luZG93Lm5hbWUiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIl07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAImZvbyIgYmFzZVVSTDpu
aWxdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW06d2ViVmlldy5nZXQoKS5iYWNrRm9yd2FyZExpc3QuY3VycmVu
dEl0ZW1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcg
cmVsb2FkXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3
IHJlbG9hZEZyb21PcmlnaW5dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgZ29CYWNrXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsm
XSB7IFt3ZWJWaWV3IGdvRm9yd2FyZF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyBbd2ViVmlldyBzdG9wTG9hZGluZ107IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21w
bGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOm5p
bF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRB
bGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7
CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVxdWVzdE1lZGlh
UGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKFdLTWVkaWFQbGF5YmFja1N0YXRl
KSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcg
c2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOldLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3
ZWJWaWV3IHNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisjaWYgVEFSR0VUX09TX0lQSE9ORQorICAg
IEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJSW1hZ2UgKnNuYXBzaG90LCBO
U0Vycm9yICplcnJvcikgeyB9XTsgfSkpOworI2Vsc2UKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Ro
cm93cyhbJl0geyBbd2ViVmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29t
cGxldGlvbkhhbmRsZXI6XihOU0ltYWdlICpzbmFwc2hvdCwgTlNFcnJvciAqZXJyb3IpIHsgfV07
IH0pKTsKKyNlbmRpZgorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3
IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0
YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBjcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9u
SGFuZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gWUVTOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tU
aHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5jdXN0b21Vc2VyQWdlbnQgPSBAImZvbyI7IH0pKTsK
KyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0xp
bmtQcmV2aWV3ID0gWUVTOyB9KSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBFQ1Rf
VFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c01hZ25pZmljYXRpb24g
PSBZRVM7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3Lmdl
dCgpLm1hZ25pZmljYXRpb24gPSAxLjE7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyBbd2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOjEuMSBjZW50ZXJlZEF0UG9pbnQ6Q0dQ
b2ludE1ha2UoMCwgMCldOyB9KSk7CisjZW5kaWYKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyB3ZWJWaWV3LmdldCgpLnBhZ2Vab29tID0gMS4xOyB9KSk7CisgICAgRVhQRUNUX1RS
VUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZmluZFN0cmluZzpAImZvbyIgd2l0aENvbmZp
Z3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsg
fV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzdGFy
dERvd25sb2FkVXNpbmdSZXF1ZXN0OnRlc3RSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyB3ZWJWaWV3LmdldCgpLmludGVyYWN0aW9uU3RhdGUgPSB0ZXN0SW50ZXJhY3Rpb25T
dGF0ZTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0
KCkubWVkaWFUeXBlID0gQCJ0ZXh0L2h0bWwiOyB9KSk7CisKKyAgICAvLyBTb21lIG9mIHRoZSBi
YXNpYyBBUEkgc3RpbGwgd29ya3MuCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0u
YWJzb2x1dGVTdHJpbmcsIG9yaWdpbmFsVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBFWFBFQ1Rf
RVEoW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XS5iYWNrSXRlbSwgbmlsKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoW3dlYlZpZXcgdGl0bGVdLCBAIiIpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmll
dyBpc0xvYWRpbmddKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgZXN0aW1hdGVkUHJvZ3Jlc3Nd
LCAxLjApOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBjYW5Hb0JhY2tdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgY2FuR29Gb3J3YXJkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IGhhc09ubHlTZWN1cmVDb250ZW50XSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHNlcnZl
clRydXN0XSwgbmlsKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgY2FtZXJhQ2FwdHVyZVN0YXRl
XSwgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBtaWNy
b3Bob25lQ2FwdHVyZVN0YXRlXSwgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVD
VF9XS19TVFJFUShbd2ViVmlldyBjdXN0b21Vc2VyQWdlbnRdLCBAIiIpOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IGFsbG93c0xpbmtQcmV2aWV3XSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUK
KyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgYWxsb3dzTWFnbmlmaWNhdGlvbl0pOworICAgIEVY
UEVDVF9FUShbd2ViVmlldyBtYWduaWZpY2F0aW9uXSwgMS4wKTsKKyNlbmRpZgorICAgIEVYUEVD
VF9FUShbd2ViVmlldyBwYWdlWm9vbV0sIDEuMCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJW
aWV3IG1lZGlhVHlwZV0sIEAiIik7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dzKFsmXSB7
IFt3ZWJWaWV3IGludGVyYWN0aW9uU3RhdGVdOyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNr
VGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRoZW1lQ29sb3JdOyB9KSk7CisKKyAgICAvLyBSZXN1bWUg
dGhlIHBhZ2UuCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4o
Qk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIFt3ZWJWaWV3IGFkZFRvVGVzdFdpbmRvd107CisKKyAgICAvLyBUaGUgdGltZXIgc2hv
dWxkIHN0YXJ0IGZpcmluZyBhZ2Fpbi4KKyAgICBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZp
cmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291
bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBF
WFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAg
Ly8gTWFrZSBzdXJlIHdlIGRpZCBub3QgY3Jhc2guCisgICAgRVhQRUNUX0VRKHBpZCwgW3dlYlZp
ZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CisKK1RFU1QoUHJvY2Vzc1N1c3BlbnNpb24s
IERlYWxsb2NhdGVTdXNwZW5kZWRWaWV3KQoreworICAgIC8vIERlYWxsb2NhdGluZyBhIHN1c3Bl
bmRlZCBXZWJWaWV3IHNob3VsZCBub3QgdGhyb3cgb3IgY3Jhc2guCisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAgICAgICBb
d2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAgICAgX19i
bG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4o
Qk9PTCBzdWNjZXNzKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKworICAgICAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1l
c3NhZ2UtcmVndWxhcmx5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZTAw
ZDhjYmRiZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0
SW50ZXJ2YWwoKCkgPT4geworICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoJ3RpbWVyIGZpcmVkJyk7Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428298</attachid>
            <date>2021-05-11 11:15:39 -0700</date>
            <delta_ts>2021-05-11 11:41:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210511111538.patch</filename>
            <type>text/plain</type>
            <size>132299</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2N2QxY2Q2YjA4YTAz
OTEwMzk4ODIzNDhjMWNiOTk5YjA4MjQ3Zi4uOWNhNzg3MDMwOWRjMjBkNWYzZGRiMGI4YmMyNTAw
MDU5NmIzODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0
cnlTdXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJ
ZkNhY2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGYWN0b3Igb3V0IGZpbmQgYm91bmNlIGxh
eWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDFmZmM2NGYyMTcwN2Q1M2NjOTQ2MzM0Yjg5YjU0NjAxNzkwN2E0NWUu
LmM2MzVhMzQxNWI4ZDhlYjMyMDc4ODZiMTYxMWZkODE2MzQyYjY0MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAwIEBACisyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAg
ICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXcuIFRo
aXMgc3VzcGVuZHMgdGhlIHBhZ2UgYXMgaWYgaXQgd2FzIGluCisgICAgICAgIHRoZSBiYWNrL2Zv
cndhcmQgY2FjaGUgYnV0IHRoZSBzdXNwZW5zaW9uIGhhcHBlbnMgaW4tcGxhY2UsIG5vIG5lZWQg
dG8gbmF2aWdhdGUuCisgICAgICAgIFRoZSBzdXNwZW5kZWQgcGFnZSBpcyBhbHNvIG5vdCBwYXJ0
IG9mIHRoZSBCYWNrL0ZvcndhcmQgY2FjaGUgc28gaXRzIGNhcCBvbiB0aGUKKyAgICAgICAgbnVt
YmVyIG9mIHN1c3BlbmRlZCBwYWdlcyBkb2VzIG5vdCBhcHBseSBoZXJlLgorCisgICAgICAgIE1v
c3Qgb2YgV0tXZWJWaWV3J3MgQVBJIC8gU1BJIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4g
Y2FsbGVkIG9uIGEgc3VzcGVuZGVkCisgICAgICAgIHZpZXcgKFRoZSBXS1BhZ2VSZWZBUEkgd2ls
bCBSRUxFQVNFX0FTU0VSVCgpKS4gU29tZSBvZiB0aGUgYmFzaWMgQVBJIHdpbGwgc3RheQorICAg
ICAgICBmdW5jdGlvbmFsIChVUkwsIGlzTG9hZGluZywgdGl0bGUsIC4uLikuIEl0IGlzIGFsc28g
c2FmZSB0byBkZWFsbG9jYXRlIC8gY2xvc2UKKyAgICAgICAgYSBzdXNwZW5kZWQgV0tXZWJWaWV3
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChjcmFz
aElmUGFnZUlzU3VzcGVuZGVkKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkwpOgorICAgICAgICAo
V0tQYWdlTG9hZFVSTFdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KToKKyAgICAgICAg
KFdLUGFnZUxvYWRVUkxXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFVSTFJlcXVl
c3QpOgorICAgICAgICAoV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEpOgorICAgICAg
ICAoV0tQYWdlTG9hZEZpbGUpOgorICAgICAgICAoV0tQYWdlTG9hZEZpbGVXaXRoVXNlckRhdGEp
OgorICAgICAgICAoV0tQYWdlTG9hZERhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZERhdGFXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQ
YWdlTG9hZEhUTUxTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdX
aXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAg
ICAgIChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXS1BhZ2VMb2FkV2ViQXJjaGl2ZURh
dGFXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlU3RvcExvYWRpbmcpOgorICAgICAgICAo
V0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tl
cnMpOgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1BhZ2VS
ZWxvYWRFeHBpcmVkT25seSk6CisgICAgICAgIChXS1BhZ2VUcnlDbG9zZSk6CisgICAgICAgIChX
S1BhZ2VDbG9zZSk6CisgICAgICAgIChXS1BhZ2VHb0ZvcndhcmQpOgorICAgICAgICAoV0tQYWdl
R29CYWNrKToKKyAgICAgICAgKFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAg
ICAgKFdLUGFnZVRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXS1BhZ2VVcGRh
dGVXZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoV0tQYWdlU2V0QXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50KToKKyAgICAgICAgKFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudCk6CisgICAgICAg
IChXS1BhZ2VTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdLUGFnZVRlcm1p
bmF0ZSk6CisgICAgICAgIChXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZSk6CisgICAgICAg
IChXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdLUGFnZVNldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VT
ZXRUZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlWm9vbUZhY3Rvcik6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKToKKyAgICAgICAgKFdLUGFn
ZVNldFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KToKKyAg
ICAgICAgKFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6ZSk6CisgICAgICAgIChXS1BhZ2VMaXN0ZW5G
b3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKFdLUGFnZVNldFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyk6CisgICAgICAgIChXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0TGVmdCk6CisgICAg
ICAgIChXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0UmlnaHQpOgorICAgICAgICAoV0tQYWdlU2V0UnVi
YmVyQmFuZHNBdFRvcCk6CisgICAgICAgIChXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0Qm90dG9tKToK
KyAgICAgICAgKFdLUGFnZVNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyk6CisgICAgICAg
IChXS1BhZ2VTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyk6CisgICAgICAgIChXS1Bh
Z2VTZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpOgorICAgICAgICAoV0tQYWdlU2V0UGFn
aW5hdGlvbk1vZGUpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29s
dW1ucyk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTGVuZ3RoKToKKyAgICAgICAgKFdLUGFnZVNl
dEdhcEJldHdlZW5QYWdlcyk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdpbmF0aW9uTGluZUdyaWRF
bmFibGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdLUGFnZUNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEpOgorICAgICAgICAo
V0tQYWdlRmluZFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV0tQYWdlR2V0SW1hZ2VGb3JGaW5k
TWF0Y2gpOgorICAgICAgICAoV0tQYWdlU2VsZWN0RmluZE1hdGNoKToKKyAgICAgICAgKFdLUGFn
ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV0tQYWdlSGlkZUZpbmRVSSk6CisgICAgICAgIChXS1Bh
Z2VDb3VudFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlU3RhdGVDbGllbnQpOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKToKKyAgICAgICAg
KFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdLUGFn
ZUdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcp
OgorICAgICAgICAoV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlKToKKyAgICAgICAgKFdLUGFnZUdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV0tQYWdlR2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKToK
KyAgICAgICAgKFdLUGFnZUZvcmNlUmVwYWludCk6CisgICAgICAgIChXS1BhZ2VWYWxpZGF0ZUNv
bW1hbmQpOgorICAgICAgICAoV0tQYWdlRXhlY3V0ZUNvbW1hbmQpOgorICAgICAgICAoV0tQYWdl
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRHJhd1BhZ2VzVG9QREYp
OgorICAgICAgICAoV0tQYWdlQmVnaW5QcmludGluZyk6CisgICAgICAgIChXS1BhZ2VFbmRQcmlu
dGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKToKKyAgICAg
ICAgKFdLUGFnZVNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24pOgorICAgICAgICAoV0tQYWdlU2V0
TWVkaWFWb2x1bWUpOgorICAgICAgICAoV0tQYWdlU2V0TXV0ZWQpOgorICAgICAgICAoV0tQYWdl
U2V0TWVkaWFDYXB0dXJlRW5hYmxlZCk6CisgICAgICAgIChXS1BhZ2VEaWRBbGxvd1BvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdLUGFnZUNsZWFyVXNlck1lZGlhU3RhdGUpOgorICAgICAgICAoV0tQ
YWdlRGlkRGVueVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLUGFnZVNldE1heVN0YXJ0TWVkaWFX
aGVuSW5XaW5kb3cpOgorICAgICAgICAoV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKToKKyAg
ICAgICAgKFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcik6CisgICAgICAgIChXS1BhZ2VT
ZXRBZGRzVmlzaXRlZExpbmtzKToKKyAgICAgICAgKFdLUGFnZUNsZWFyV2hlZWxFdmVudFRlc3RN
b25pdG9yKToKKyAgICAgICAgKFdLUGFnZUNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUp
OgorICAgICAgICAoV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOgorICAgICAg
ICAoV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKToKKyAgICAgICAgKFdLUGFnZUR1bXBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXS1BhZ2VDbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50KToKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdL
UGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KToKKyAgICAg
ICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5T
aWduYXR1cmVVUkxGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyk6CisgICAgICAgIChXS1Bh
Z2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAg
ICAgIChXS1BhZ2VTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2Fk
ZWRTdWJyZXNvdXJjZURvbWFpbnMpOgorICAgICAgICAoV0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNv
dXJjZURvbWFpbnMpOgorICAgICAgICAoV0tQYWdlU2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVs
YXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0
ZUZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBsb2FkRmlsZVVSTDphbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21SZXN1bWVE
YXRhOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb0JhY2tdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGdvRm9yd2FyZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2Fk
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBzdG9wTG9hZGluZ10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmFyZ3VtZW50czpp
bkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRBbGxNZWRpYVBsYXliYWNr
U3VzcGVuZGVkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVx
dWVzdE1lZGlhUGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRDYW1lcmFDYXB0dXJlU3RhdGU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFz
QXN5bmNGdW5jdGlvbjp3aXRoU291cmNlVVJMOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVy
ZTppbkZyYW1lOmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1
cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q3VzdG9tVXNlckFnZW50Ol0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzTGlua1ByZXZpZXc6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRQYWdlWm9vbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGZpbmRTdHJpbmc6
d2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBzZXRNZWRpYVR5cGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRJbnRlcmFjdGlv
blN0YXRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzTWFnbmlmaWNhdGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246Y2VudGVyZWRBdFBvaW50
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0TWFnbmlmaWNhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgY3JlYXRlV2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkU2ltdWxhdGVkUmVxdWVzdDpy
ZXNwb25zZTpyZXNwb25zZURhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkU2ltdWxh
dGVkUmVxdWVzdDp3aXRoUmVzcG9uc2U6cmVzcG9uc2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9uc2VIVE1MU3RyaW5nOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlSFRNTFN0cmlu
ZzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRGaWxlUmVxdWVzdDphbGxvd2luZ1JlYWRB
Y2Nlc3NUb1VSTDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90b2dnbGVTdHJpa2VUaHJvdWdo
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luY3JlYXNlTGlzdExldmVsOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2RlY3JlYXNlTGlzdExldmVsOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2NoYW5nZUxpc3RUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRW5h
YmxlQnJvd3NlckV4dGVuc2lvbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRGlzYWJs
ZUJyb3dzZXJFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEVkaXRhYmxl
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlwdWxhdGlv
bnNXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOmNvbXBsZXRpb246XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXJdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF90b2dnbGVQaWN0dXJlSW5QaWN0dXJlXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zdG9wTWVkaWFDYXB0dXJlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3Rv
cEFsbE1lZGlhUGxheWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kQWxsTWVk
aWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlhUGxheWJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYWRkQXBwSGlnaGxpZ2h0XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6YmFzZVVSTDpmb3JVbnJlYWNoYWJsZVVSTDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNv
ZGluZ05hbWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2Fk
UmVxdWVzdDpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2xvYWRSZXF1ZXN0OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXNdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9yZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXNdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kUGFnZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVQYWdlOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxv
YWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2Fk
RXhwaXJlZE9ubHldKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nl
c3NBbmRSZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVTZXNzaW9uU3RhdGU6YW5kTmF2aWdhdGU6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfY2xvc2VdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90cnlD
bG9zZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5h
bWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpvcHRp
b25zOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0YWNobWVu
dFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2VXaXRoQWxwaGE6YmV0YTpnYW1tYTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRs
ZTp3YXJuaW5nOmRldGFpbHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWls
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJy
b3dzaW5nV2FybmluZ1dpdGhVUkw6dGl0bGU6d2FybmluZzpkZXRhaWxzV2l0aExpbmtzOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lzSklURW5hYmxlZDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1
cmU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2FsbEFzeW5j
SmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6aW5GcmFt
ZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6d2l0aFNvdXJjZVVSTDppbkZyYW1lOmluQ29udGVudFdv
cmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVdl
YnBhZ2VQcmVmZXJlbmNlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ub3RpZnlVc2VyU2Ny
aXB0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWRO
b3RpZmljYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRBbGxvd3NSZW1vdGVJbnNw
ZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFJlbW90ZUluc3BlY3Rpb25OYW1l
T3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWRkc1Zpc2l0ZWRMaW5rczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFdlYkFyY2hpdmVEYXRhV2l0
aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRz
QXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
Z2V0Q29udGVudHNPZkFsbEZyYW1lc0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9u
TWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c2V0UGFnaW5hdGlvbk1vZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnaW5hdGlv
bkJlaGF2ZXNMaWtlQ29sdW1uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdlTGVu
Z3RoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEdhcEJldHdlZW5QYWdlczpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldFRleHRab29tRmFjdG9yOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldFBhZ2Vab29tRmFjdG9yOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvdW50
U3RyaW5nTWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9o
aWRlRmluZFVJXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2F2ZUJhY2tGb3J3YXJkU25hcHNo
b3RGb3JJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyU2VydmljZVdvcmtlckVu
dGl0bGVtZW50T3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcHJlY29ubmVjdFRv
U2VydmVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENhblVzZUNyZWRlbnRpYWxTdG9y
YWdlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldExheW91dE1vZGU6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0Rml4ZWRMYXlvdXRTaXplOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRWaWV3U2NhbGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFByb2Nlc3NEaXNwbGF5
TmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRN
aW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGg6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZ3Jh
bnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0
U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3NldE1lZGlhQ2FwdHVyZUVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0UGFnZU11dGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbW92ZURh
dGFEZXRlY3RlZExpbmtzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlV2l0aG91dFdhaXRpbmdGb3JQYWludGluZzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5k
bGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVB
ZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN1bWUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDUtMTEgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBFeHRlbmQg
YWNjZXNzIHRvICdjb20uYXBwbGUucHJpbnQubm9ybWFsaXplcmQnIHdoZW4gY2FudmFzIGRyYXdp
bmcgaXMgZG9uZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA1MWQ4NTQ3YjY4ZDQ3MjhhOWM1YTQ0MzQxZmM0ODM3M2ExMTNhOThjLi42MTVjZmI4ZjBjOTRj
MmIxNGYwOTUzZGNiYzA4ZjRhNmRhZjdlZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwOCw2
ICs2MDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGlz
dG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1l
LmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0b3J5L0Nh
Y2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9BdXRvY2Fw
aXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcApp
bmRleCAyN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNhZWNhMTIy
MmY4ZTk0Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRpYyB2b2lk
IGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAgICBmaXJl
UGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0ZvcndhcmRD
YWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVuZFBhZ2Uo
UGFnZSYgcGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAgICBpZiAo
aXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1haW5GcmFt
ZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJh
bWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYgKCFjYW5D
YWNoZSgqcGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VTdXNwZW5z
aW9uID09IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0
eVBhZ2UoKSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2
ZXIgZ28gaW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cGFnZS5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFn
ZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAgc2V0QmFj
a0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0Zvcndh
cmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpB
Ym91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBtYWluIGZy
YW1lLCBkZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUpLiBXZSBk
byB0aGlzIGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFjay9mb3J3
YXJkIGNhY2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9jdXMgZXZl
bnRzLgotICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKLSAg
ICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLT5tYWlu
RnJhbWUoKSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkp
CisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1h
aW5GcmFtZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBmcmFt
ZXMuCi0gICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJhbWUoKSk7
CisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgpKTsKIAot
ICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0cm95UmVu
ZGVyVHJlZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRzIGFnYWlu
IGJlZm9yZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0ZXIgZmly
aW5nIHRoZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkgaGF2ZSBz
dGFydGVkIHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0gICAgcGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBw
YWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFmdGVyIGZp
cmluZyB0aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAgIC8vIGNv
dWxkIGhhdmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2Fj
aGluZy4KLSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNrRm9yd2Fy
ZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3Bl
bnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENh
Y2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgq
cGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRD
YWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8g
TWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgorICAg
IFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29w
ZTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKworYm9vbCBC
YWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSog
cGFnZSkKK3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1c3BlbnNp
b246Ok5vKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBp
biB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVh
ZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1h
a2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdl
KFdURk1vdmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBy
dW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CkBA
IC00ODEsNiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUo
SGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQ
YWdlJiBwYWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9y
d2FyZENhY2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVuZFBhZ2Uo
cGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVk
UGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFn
ZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJkN2YxZDJj
MzlkNDc1MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgxZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQp
OyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYg
bWF4U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhp
c3RvcnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwpA
QCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2FjaGVQYWdl
Q29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3JjZVN1c3Bl
bnNpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdl
PiB0cnlTdXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lkIHBydW5l
KFBydW5pbmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4
ODVkMjUuLjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENhY2hlZFBh
Z2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQ
YWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA2M2FmMDVjZGZhODA0YzU4MDYwNDg3ZjBkY2IwMTdi
NTllMGVkMDI1Li4zNjc3NzE5ZjhhYmI3MzY3NTUyNjgwMDNhYjMxYjdlY2Y5ODUzZjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE0Myw2ICsxNDMsMTQg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4g
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQg
Y3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBXVEZMb2dB
bHdheXMoIkVycm9yOiBBdHRlbXB0IHRvIGNhbGwgV0tQYWdlUmVmIEFQSS9TUEkgb24gYSBzdXNw
ZW5kZWQgcGFnZSwgdGhpcyBpcyBhIGNsaWVudCBidWcuIik7CisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKCFwYWdlUmVmIHx8ICF0b0ltcGwocGFnZVJlZiktPmlzU3VzcGVuZGVkKCks
ICJZb3UgY2Fubm90IGNhbGwgdGhpcyBBUEkvU1BJIG9uIGEgc3VzcGVuZGVkIHBhZ2UiKTsKK30K
KworI2RlZmluZSBDUkFTSF9JRl9TVVNQRU5ERUQgY3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChwYWdl
UmVmKQorCiBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShX
ZWJQYWdlUHJveHk6OkFQSVR5cGUpOwpAQCAtMTY1LDQ5ICsxNzMsNTggQEAgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYp
CiAKIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRS
ZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSkpOwogfQogCiB2b2lkIFdLUGFn
ZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tVUkxSZWYgVVJMUmVmLCBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVS
THMgPyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyA6
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93Owog
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhV
UkxSZWYpKSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZvaWQgV0tQYWdl
TG9hZFVSTFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYp
KSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRVUkxSZXF1ZXN0KFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdFJlZikKIHsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byByZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJs
UmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9h
ZFJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2Fk
VVJMUmVxdWVzdFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVm
IHVybFJlcXVlc3RSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgYXV0byByZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJsUmVxdWVzdFJl
ZiktPnJlc291cmNlUmVxdWVzdCgpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3Qo
V1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdywgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQg
V0tQYWdlTG9hZEZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIGZpbGVVUkwsIFdLVVJM
UmVmIHJlc291cmNlRGlyZWN0b3J5VVJMKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRGaWxlKHRvV1RGU3RyaW5nKGZpbGVVUkwpLCB0b1dURlN0
cmluZyhyZXNvdXJjZURpcmVjdG9yeVVSTCkpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlV2l0
aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJlZiBy
ZXNvdXJjZURpcmVjdG9yeVVSTCwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRGaWxlKHRvV1RGU3RyaW5n
KGZpbGVVUkwpLCB0b1dURlN0cmluZyhyZXNvdXJjZURpcmVjdG9yeVVSTCksIHRvSW1wbCh1c2Vy
RGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWREYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVu
Y29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJl
ZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5n
UmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWREYXRh
V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJp
bmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNl
VVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVm
ZXJlbmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdS
ZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAK
QEAgLTIzMyw1MiArMjUwLDYyIEBAIHN0YXRpYyB2b2lkIGxvYWRTdHJpbmcoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY29uc3QgU3RyaW5nJiBtCiAKIHZvaWQgV0tQ
YWdlTG9hZEhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJp
bmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIGh0bWxTdHJpbmdS
ZWYsIGJhc2VVUkxSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5n
V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVm
LCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwg
InRleHQvaHRtbCJfcywgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHVzZXJEYXRhUmVmKTsKIH0K
IAogdm9pZCBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYg
dW5yZWFjaGFibGVVUkxSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFn
ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIGh0bWxTdHJpbmdS
ZWYsIGJhc2VVUkxSZWYsIHVucmVhY2hhYmxlVVJMUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxS
ZWYgdW5yZWFjaGFibGVVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgU3RyaW5nIHN0cmluZyA9IHRvV1RGU3RyaW5nKGh0bWxTdHJp
bmdSZWYpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUwoZGF0YUZyb20o
c3RyaW5nKSwgZW5jb2RpbmdPZihzdHJpbmcpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGJhc2VV
UkxSZWYpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZikpLCB0b0lt
cGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNl
ckRhdGEocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRl
eHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBhYm91dEJsYW5rVVJMKCkuc3RyaW5nKCksIHVz
ZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJjaGl2ZURhdGEodG9JbXBs
KHdlYkFyY2hpdmVEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRh
V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJjaGl2ZURhdGEodG9JbXBsKHdlYkFyY2hpdmVE
YXRhUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlU3RvcExvYWRp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWQoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKGxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdp
dGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9yKSkKQEAgLTI5MCwyMSArMzE3LDI1IEBAIHZvaWQg
V0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhv
dXRDb250ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlv
bjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vycyk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkRnJvbU9y
aWdpbihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2lu
KTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRFeHBpcmVkT25seShXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQo
V2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5
Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPnRyeUNsb3NlKCk7CiB9CiAKQEAgLTMyMCw2ICszNTEs
NyBAQCBib29sIFdLUGFnZUlzQ2xvc2VkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFn
ZUdvRm9yd2FyZChXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nb0ZvcndhcmQoKTsKIH0KIApAQCAtMzMwLDYgKzM2Miw3
IEBAIGJvb2wgV0tQYWdlQ2FuR29Gb3J3YXJkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdL
UGFnZUdvQmFjayhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgYXV0byYgcGFnZSA9ICp0b0ltcGwocGFnZVJlZik7CiAgICAgaWYgKHBhZ2UucGFnZUNs
aWVudCgpLmhhc1NhZmVCcm93c2luZ1dhcm5pbmcoKSkgewogICAgICAgICBXS1BhZ2VSZWxvYWQo
cGFnZVJlZik7CkBAIC0zNDUsMTEgKzM3OCwxMyBAQCBib29sIFdLUGFnZUNhbkdvQmFjayhXS1Bh
Z2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Ub0JhY2tGb3J3YXJk
SXRlbSgqdG9JbXBsKGl0ZW1SZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VUcnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKQEAg
LTM2NSw2ICs0MDAsNyBAQCBib29sIFdLUGFnZVdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZl
bnRzKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVVwZGF0ZVdlYnNpdGVQb2xpY2ll
cyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBvbGljaWVz
UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X01FU1NBR0UoIXRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCks
ICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlIGlzIG9ubHkgc3VwcG9y
dGVkIGR1cmluZyBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMoKS4iKTsKICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYp
LT51c2VyQ29udGVudENvbnRyb2xsZXIoKSwgIlNldHRpbmcgV2Vic2l0ZVBvbGljaWVzLnVzZXJD
b250ZW50Q29udHJvbGxlciBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlV2l0aFBvbGljaWVzKCkuIik7CiAgICAgYXV0byBkYXRhID0gdG9JbXBsKHdlYnNp
dGVQb2xpY2llc1JlZiktPmRhdGEoKTsKQEAgLTQyMyw2ICs0NTksNyBAQCBXS1N0cmluZ1JlZiBX
S1BhZ2VDb3B5QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25OYW1lUmVmKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCh0b1dURlN0cmluZyhhcHBsaWNhdGlvbk5hbWVSZWYpKTsKIH0KIApAQCAtNDMzLDYgKzQ3
MCw3IEBAIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlDdXN0b21Vc2VyQWdlbnQoV0tQYWdlUmVmIHBh
Z2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiB1c2VyQWdlbnRSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9tVXNlckFnZW50KHRvV1RGU3RyaW5nKHVzZXJB
Z2VudFJlZikpOwogfQogCkBAIC00NTMsMTEgKzQ5MSwxMyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VD
b3B5Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBlbmNvZGluZ05hbWVSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSh0b1dURlN0cmluZyhlbmNvZGlu
Z05hbWVSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VUZXJtaW5hdGUoV0tQYWdlUmVmIHBhZ2VSZWYp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHBy
b3RlY3RlZFByb2Nlc3NQcm94eSh0b0ltcGwocGFnZVJlZiktPnByb2Nlc3MoKSk7CiAgICAgcHJv
dGVjdGVkUHJvY2Vzc1Byb3h5LT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CiB9CkBAIC01MTgsMTEgKzU1OCwxMyBAQCBzdGF0
aWMgdm9pZCByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBl
UmVmIHNlc3Npb25TdGF0ZVJlZgogCiB2b2lkIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYgc2Vzc2lvblN0YXRlUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShwYWdlUmVmLCBz
ZXNzaW9uU3RhdGVSZWYsIHRydWUpOwogfQogCiB2b2lkIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNz
aW9uU3RhdGVSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHJlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlKHBhZ2VSZWYsIHNlc3Npb25TdGF0ZVJlZiwgZmFsc2UpOwogfQogCkBAIC01
MzgsNiArNTgwLDcgQEAgZG91YmxlIFdLUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS1BhZ2VS
ZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBjdXN0b21TY2FsZUZhY3RvcikKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDdXN0b21EZXZpY2VTY2FsZUZh
Y3RvcihjdXN0b21TY2FsZUZhY3Rvcik7CiB9CiAKQEAgLTU0OCw2ICs1OTEsNyBAQCBib29sIFdL
UGFnZVN1cHBvcnRzVGV4dFpvb20oV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
VGV4dFpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSB6b29tRmFjdG9yKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFRleHRab29t
RmFjdG9yKHpvb21GYWN0b3IpOwogfQogCkBAIC01NTgsMTYgKzYwMiwxOSBAQCBkb3VibGUgV0tQ
YWdlR2V0UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSB6b29tRmFjdG9yKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2Vab29t
RmFjdG9yKHpvb21GYWN0b3IpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRl
eHRab29tRmFjdG9yKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMocGFnZVpvb21GYWN0b3IsIHRleHRab29t
RmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJl
ZiwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9yaWdpbikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZVBhZ2Uoc2NhbGUsIHRvSW50UG9pbnQob3Jp
Z2luKSk7CiB9CiAKQEAgLTU3OCwxMSArNjI1LDEzIEBAIGRvdWJsZSBXS1BhZ2VHZXRTY2FsZUZh
Y3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChX
S1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBmaXhlZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVc2VGaXhlZExheW91dChmaXhlZCk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0Rml4ZWRMYXlvdXRTaXplKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1NpemUgc2l6
ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRG
aXhlZExheW91dFNpemUodG9JbnRTaXplKHNpemUpKTsKIH0KIApAQCAtNTk4LDYgKzY0Nyw3IEBA
IFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNpemUoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tMYXlv
dXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh0b0xheW91dE1pbGVz
dG9uZXMobWlsZXN0b25lcykpOwogfQogCkBAIC02MTMsNiArNjYzLDcgQEAgYm9vbCBXS1BhZ2VI
YXNWZXJ0aWNhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRT
dXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgc3VwcHJl
c3NBbmltYXRpb25zKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMp
OwogfQogCkBAIC02NDgsNiArNjk5LDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0TGVmdChX
S1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0TGVmdChXS1Bh
Z2VSZWYgcGFnZVJlZiwgYm9vbCBydWJiZXJCYW5kc0F0TGVmdCkKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0TGVmdChydWJi
ZXJCYW5kc0F0TGVmdCk7CiB9CiAKQEAgLTY1OCw2ICs3MTAsNyBAQCBib29sIFdLUGFnZVJ1YmJl
ckJhbmRzQXRSaWdodChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJC
YW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdFJpZ2h0KQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFJ1YmJl
ckJhbmRzQXRSaWdodChydWJiZXJCYW5kc0F0UmlnaHQpOwogfQogCkBAIC02NjgsNiArNzIxLDcg
QEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0VG9wKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lk
IFdLUGFnZVNldFJ1YmJlckJhbmRzQXRUb3AoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVy
QmFuZHNBdFRvcCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRSdWJiZXJCYW5kc0F0VG9wKHJ1YmJlckJhbmRzQXRUb3ApOwogfQogCkBAIC02Nzgs
NiArNzMyLDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0Qm90dG9tKFdLUGFnZVJlZiBwYWdl
UmVmKQogCiB2b2lkIFdLUGFnZVNldFJ1YmJlckJhbmRzQXRCb3R0b20oV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgcnViYmVyQmFuZHNBdEJvdHRvbSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0Qm90dG9tKHJ1YmJlckJhbmRz
QXRCb3R0b20pOwogfQogCkBAIC02ODgsNiArNzQzLDcgQEAgYm9vbCBXS1BhZ2VWZXJ0aWNhbFJ1
YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGVuYWJs
ZVZlcnRpY2FsUnViYmVyQmFuZGluZykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVy
dGljYWxSdWJiZXJCYW5kaW5nKTsKIH0KIApAQCAtNjk4LDExICs3NTQsMTMgQEAgYm9vbCBXS1Bh
Z2VIb3Jpem9udGFsUnViYmVyQmFuZGluZ0lzRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhXS1BhZ2VSZWYgcGFn
ZVJlZiwgYm9vbCBlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRFbmFibGVIb3Jpem9udGFsUnVi
YmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyk7CiB9CiAKIHZvaWQgV0tQ
YWdlU2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKFdLUGFnZVJlZiBwYWdlUmVmLCBib29s
IGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFj
a2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKTsKIH0KIApAQCAtNzEzLDYgKzc3MSw3IEBAIGJvb2wg
V0tQYWdlQmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2
b2lkIFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2luYXRp
b25Nb2RlIHBhZ2luYXRpb25Nb2RlKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBX
ZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9k
ZSkgewogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKQEAgLTc1Nyw2ICs4
MTYsNyBAQCBXS1BhZ2luYXRpb25Nb2RlIFdLUGFnZUdldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMo
V0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2luYXRpb25CZWhhdmVz
TGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0KIApAQCAtNzY3LDYgKzgyNyw3IEBA
IGJvb2wgV0tQYWdlR2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdlTGVuZ3RoKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3Vi
bGUgcGFnZUxlbmd0aCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpOwogfQogCkBAIC03NzcsNiArODM4LDcg
QEAgZG91YmxlIFdLUGFnZUdldFBhZ2VMZW5ndGgoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlU2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgZ2FwKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEdhcEJl
dHdlZW5QYWdlcyhnYXApOwogfQogCkBAIC03ODcsNiArODQ5LDcgQEAgZG91YmxlIFdLUGFnZUdl
dEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGxpbmVHcmlkRW5h
YmxlZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCk7CiB9CiAKQEAgLTgx
Nyw0NiArODgwLDU1IEBAIGJvb2wgV0tQYWdlSXNDb250ZW50RWRpdGFibGUoV0tQYWdlUmVmIHBh
Z2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgbmV3VmFsdWUpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9u
KG5ld1ZhbHVlKTsKIH0KIAogdm9pZCBXS1BhZ2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVh
KFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXR1
cm4gdG9JbXBsKHBhZ2VSZWYpLT5jZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCk7CiB9CiAK
IHZvaWQgV0tQYWdlRmluZFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5n
UmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZpbmRT
dHJpbmdNYXRjaGVzKHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSwgdG9GaW5kT3B0aW9ucyhvcHRp
b25zKSwgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0SW1hZ2VGb3JGaW5kTWF0
Y2goV0tQYWdlUmVmIHBhZ2VSZWYsIGludDMyX3QgbWF0Y2hJbmRleCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRJbWFnZUZvckZpbmRNYXRjaCht
YXRjaEluZGV4KTsKIH0KIAogdm9pZCBXS1BhZ2VTZWxlY3RGaW5kTWF0Y2goV0tQYWdlUmVmIHBh
Z2VSZWYsIGludDMyX3QgbWF0Y2hJbmRleCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCk7CiB9CiAKIHZv
aWQgV0tQYWdlRmluZFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5n
LCBXS0ZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+ZmluZFN0cmluZyh0b0lt
cGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291
bnQpOwogfQogCiB2b2lkIFdLUGFnZUhpZGVGaW5kVUkoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+aGlkZUZpbmRVSSgp
OwogfQogCiB2b2lkIFdLUGFnZUNvdW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgc3RyaW5nLCBXS0ZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVm
KS0+Y291bnRTdHJpbmdNYXRjaGVzKHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSwgdG9GaW5kT3B0
aW9ucyhvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUNv
bnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVu
dUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+LCBwdWJsaWMg
QVBJOjpDb250ZXh0TWVudUNsaWVudCB7CiAgICAgcHVibGljOgpAQCAtOTczLDYgKzEwNDUsNyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlRGlhZ25vcwogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIEZpbmRDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZENsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpGaW5kQ2xp
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEZpbmRDbGllbnQoY29uc3QgV0tQ
YWdlRmluZENsaWVudEJhc2UqIGNsaWVudCkKQEAgLTEwMTEsNiArMTA4NCw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRD
bGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2UqIHdrQ2xp
ZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2U+LCBw
dWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2Uq
IGNsaWVudCkKQEAgLTEwNTQsMTYgKzExMjgsMTkgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1h
dGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2wK
IAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQod2tDbGllbnQpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9y
bUNsaWVudChtYWtlVW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQg
V0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
TG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGNsYXNzIExvYWRlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlPiwgcHVibGljIEFQSTo6TG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiBj
bGllbnQpCkBAIC0xMjM0LDYgKzEzMTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgUG9saWN5Q2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50
PFdLUGFnZVBvbGljeUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpQb2xpY3lDbGllbnQgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUG9saWN5Q2xpZW50KGNvbnN0IFdLUGFnZVBvbGlj
eUNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTE0OTMsNiArMTU3MSw3IEBAIHZvaWQgV0tQYWdlUmVx
dWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtUmVzdWx0TGlzdGVuZXJDYWxsKFdLUGFnZVJlcXVlc3RT
dG9yYWdlQWNjCiAKIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICBjbGFzcyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VV
SUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBleHBsaWNpdCBVSUNsaWVudChjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIGNsaWVudCkKQEAg
LTIxMzgsNiArMjIxNyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKIHZvaWQgV0tQYWdl
U2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5h
dmlnYXRpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6Ok5hdmlnYXRpb25DbGllbnQgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgTmF2aWdhdGlvbkNsaWVudChjb25zdCBXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtMjUwMywxNiArMjU4MywxOCBAQCBwcml2
YXRlOgogICAgIH0KIH07CiAKLXZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV0tQYWdlU2V0UGFn
ZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKGNsaWVudCkKLSAgICAg
ICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0
ZUNsaWVudD4oY2xpZW50KSk7CisgICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRT
dGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOwogICAgIGVsc2UK
LSAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobnVsbHB0cik7
CisgICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxw
dHIpOwogfQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5K
YXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNj
cmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0s
IFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJlc3VsdC52YWx1ZSgp
LmdldCgpKSwgbnVsbHB0ciwgY29udGV4dCk7CkBAIC0yNTMxLDYgKzI2MTMsNyBAQCBzdGF0aWMg
dm9pZCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFzZShXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiByZXN1bHRWYQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9i
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIFdLUGFnZVJ1bkphdmFT
Y3JpcHRCbG9jayBibG9jaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHBhZ2VSZWYsIHNjcmlwdFJlZiwgQmxvY2tfY29weShi
bG9jayksIGNhbGxSdW5KYXZhU2NyaXB0QmxvY2tBbmRSZWxlYXNlKTsKIH0KICNlbmRpZgpAQCAt
MjU0NCwzMSArMjYyNywzNyBAQCBzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4gdG9TdHJpbmdDYWxsYmFjayh2b2lkKiBjb250ZXh0LCB2bwogCiB2b2lkIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lk
KiBjb250ZXh0LCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9u
IGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHRvU3RyaW5nQ2FsbGJhY2so
Y29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgdm9pZCogY29udGV4dCwgV0tQ
YWdlR2V0U291cmNlRm9yRnJhbWVGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwo
ZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNT
dHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIHRvU3RyaW5nQ2Fs
bGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRCeXRlY29kZVBy
b2ZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldEJ5dGVjb2Rl
UHJvZmlsZUZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmdldEJ5dGVjb2RlUHJvZmlsZSh0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJp
bmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdL
UGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgewog
ICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7
CkBAIC0yNTc2LDYgKzI2NjUsNyBAQCB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZQogCiB2b2lkIFdL
UGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRh
dGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRl
eHQpOwpAQCAtMjU4OSw2ICsyNjc5LDcgQEAgdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxE
YXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb24KIAogdm9p
ZCBXS1BhZ2VGb3JjZVJlcGFpbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdL
UGFnZUZvcmNlUmVwYWludEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChbY29udGV4dCwgY2FsbGJh
Y2tdKCkgewogICAgICAgICBjYWxsYmFjayhudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKQEAg
LTI2MjYsNiArMjcxNyw3IEBAIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlTdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoV0tTdHJpbmdSZWYgYXBwbGljYXRpCiAKIHZvaWQgV0tQYWdl
VmFsaWRhdGVDb21tYW5kKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBjb21tYW5kLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayBjYWxsYmFjaykKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBjb21tYW5kTmFtZSA9IHRvSW1wbChj
b21tYW5kKS0+c3RyaW5nKCk7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT52YWxpZGF0ZUNvbW1hbmQo
Y29tbWFuZE5hbWUsIFtjb250ZXh0LCBjYWxsYmFjaywgY29tbWFuZE5hbWVdKGJvb2wgaXNFbmFi
bGVkLCBpbnQzMl90IHN0YXRlKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5n
OjpjcmVhdGUoY29tbWFuZE5hbWUpLnB0cigpKSwgaXNFbmFibGVkLCBzdGF0ZSwgbnVsbHB0ciwg
Y29udGV4dCk7CkBAIC0yNjM0LDYgKzI3MjYsNyBAQCB2b2lkIFdLUGFnZVZhbGlkYXRlQ29tbWFu
ZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4dAog
CiB2b2lkIFdLUGFnZUV4ZWN1dGVDb21tYW5kKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBjb21tYW5kKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmV4ZWN1dGVFZGl0Q29tbWFuZCh0b0ltcGwoY29tbWFuZCktPnN0cmluZygpKTsKIH0KIApA
QCAtMjY0Niw5ICsyNzM5LDEwIEBAIHN0YXRpYyBQcmludEluZm8gcHJpbnRJbmZvRnJvbVdLUHJp
bnRJbmZvKGNvbnN0IFdLUHJpbnRJbmZvJiBwcmludEluZm8pCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQordm9pZCBXS1Bh
Z2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGlu
Z0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJp
bnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBjYWxsYmFja10oY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpG
bG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBs
KGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBj
YWxsYmFja10oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNj
YWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFy
Z2luKSB7CiAgICAgICAgIFZlY3RvcjxXS1JlY3Q+IHdrUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgIHdrUmVjdHNbaV0gPSB0b0FQSShyZWN0c1tpXSk7CkBAIC0yNjU3LDIyICsyNzUxLDI1IEBA
IHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQg
V0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1Bh
Z2VEcmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdl
RHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJp
bnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VE
cmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwo
cGFnZSktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhwcmludEluZm8pLCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6
RGF0YSogZGF0YSkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5m
byhwcmludEluZm8pLCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0
YSogZGF0YSkgewogICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4
dCk7CiAgICAgfSk7CiB9CiAjZW5kaWYKIAotdm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8pCit2b2lk
IFdLUGFnZUJlZ2luUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLUHJpbnRJbmZvIHByaW50SW5mbykKIHsKLSAgICB0b0ltcGwocGFnZSktPmJlZ2luUHJpbnRp
bmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbykpOwor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmJlZ2luUHJpbnRp
bmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbykpOwog
fQogCi12b2lkIFdLUGFnZUVuZFByaW50aW5nKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VF
bmRQcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b0ltcGwocGFnZSktPmVuZFBy
aW50aW5nKCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+
ZW5kUHJpbnRpbmcoKTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRJc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNjgwLDkgKzI3NzcsMTAgQEAgYm9vbCBXS1BhZ2VHZXRJ
c0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIHRvSW1w
bChwYWdlKS0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
Q29udHJvbGxlZEJ5QXV0b21hdGlvbihXS1BhZ2VSZWYgcGFnZSwgYm9vbCBjb250cm9sbGVkKQor
dm9pZCBXS1BhZ2VTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBi
b29sIGNvbnRyb2xsZWQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRDb250cm9sbGVkQnlBdXRv
bWF0aW9uKGNvbnRyb2xsZWQpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCk7CiB9CiAKIGJv
b2wgV0tQYWdlR2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZSkKQEAgLTI2
OTUsMjMgKzI3OTMsMjYgQEAgYm9vbCBXS1BhZ2VHZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdL
UGFnZVJlZiBwYWdlKQogI2VuZGlmICAgIAogfQogCi12b2lkIFdLUGFnZVNldEFsbG93c1JlbW90
ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIGJvb2wgYWxsb3cpCit2b2lkIFdLUGFnZVNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgYWxsb3cpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IHRvSW1wbChwYWdlKS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihhbGxvdyk7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsKICNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBV
TlVTRURfUEFSQU0oYWxsb3cpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlU2V0TWVkaWFWb2x1
bWUoV0tQYWdlUmVmIHBhZ2UsIGZsb2F0IHZvbHVtZSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFWb2x1
bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIGZsb2F0IHZvbHVtZSkKIHsKLSAgICB0b0ltcGwocGFnZSkt
PnNldE1lZGlhVm9sdW1lKHZvbHVtZSk7ICAgIAorICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnNldE1lZGlhVm9sdW1lKHZvbHVtZSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFNdXRlZFN0YXRlIG11dGVkU3RhdGUp
Cit2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlUmVmLCBXS01lZGlhTXV0ZWRTdGF0
ZSBtdXRlZFN0YXRlKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVk
U3RhdGUgJiBrV0tNZWRpYUF1ZGlvTXV0ZWQpCkBAIC0yNzIxLDEyICsyODIyLDEzIEBAIHZvaWQg
V0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFNdXRlZFN0YXRlIG11dGVkU3Rh
dGUpCiAgICAgaWYgKG11dGVkU3RhdGUgJiBrV0tNZWRpYVNjcmVlbkNhcHR1cmVNdXRlZCkKICAg
ICAgICAgY29yZVN0YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpT
Y3JlZW5DYXB0dXJlSXNNdXRlZCk7CiAKLSAgICB0b0ltcGwocGFnZSktPnNldE11dGVkKGNvcmVT
dGF0ZSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNdXRlZChjb3JlU3RhdGUpOwogfQogCi12
b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgZW5h
YmxlZCkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJl
ZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0TWVkaWFDYXB0dXJlRW5h
YmxlZChlbmFibGVkKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRNZWRpYUNhcHR1cmVFbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUGFnZUdl
dE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNzM0LDMwICsyODM2LDMz
IEBAIGJvb2wgV0tQYWdlR2V0TWVkaWFDYXB0dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZSkKICAg
ICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5tZWRpYUNhcHR1cmVFbmFibGVkKCk7CiB9CiAKLXZvaWQg
V0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRGlk
QWxsb3dQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICB0b0ltcGwocGFnZSktPmRpZEFs
bG93UG9pbnRlckxvY2soKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZEFsbG93UG9pbnRlckxv
Y2soKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShw
YWdlUmVmKTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZUNsZWFyVXNlck1lZGlhU3RhdGUoV0tQ
YWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZUNsZWFyVXNlck1lZGlhU3RhdGUoV0tQYWdlUmVmIHBh
Z2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgdG9JbXBsKHBhZ2UpLT5jbGVhclVzZXJNZWRpYVN0YXRlKCk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5jbGVhclVzZXJNZWRpYVN0YXRlKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBX
S1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpZERl
bnlQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICB0b0ltcGwocGFnZSktPmRpZERlbnlQ
b2ludGVyTG9jaygpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlkRGVueVBvaW50ZXJMb2NrKCk7
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJl
Zik7CiAjZW5kaWYKIH0KIApAQCAtMjc5MCwxNiArMjg5NSwxOCBAQCBXS0ZyYW1lUmVmIFdLUGFn
ZUxvb2tVcEZyYW1lRnJvbUhhbmRsZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZUhhbmRsZVJl
ZiBoYW5kbAogCiB2b2lkIFdLUGFnZVNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgbWF5U3RhcnRNZWRpYSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1h
eVN0YXJ0TWVkaWEpOwogfQogCiAKLXZvaWQgV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdL
UGFnZVJlZiBwYWdlLCBXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtKQordm9pZCBXS1BhZ2VTZWxl
Y3RDb250ZXh0TWVudUl0ZW0oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLQ29udGV4dE1lbnVJdGVtUmVm
IGl0ZW0pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQotICAgIHRvSW1wbChwYWdlKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoKHRvSW1wbChp
dGVtKS0+ZGF0YSgpKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5jb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCgodG9JbXBsKGl0ZW0pLT5kYXRhKCkpKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0oaXRlbSk7
CiAjZW5kaWYKIH0KQEAgLTI4MjEsOCArMjkyOCw5IEBAIFdLU2Nyb2xsUGlubmluZ0JlaGF2aW9y
IFdLUGFnZUdldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1
cm4ga1dLU2Nyb2xsUGlubmluZ0JlaGF2aW9yRG9Ob3RQaW47CiB9CiAKLXZvaWQgV0tQYWdlU2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlLCBXS1Njcm9sbFBpbm5pbmdCZWhh
dmlvciBwaW5uaW5nKQordm9pZCBXS1BhZ2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIFNjcm9sbFBpbm5pbmdCZWhhdmlvciBjb3JlUGlubmluZyA9
IFNjcm9sbFBpbm5pbmdCZWhhdmlvcjo6RG9Ob3RQaW47CiAKICAgICBzd2l0Y2ggKHBpbm5pbmcp
IHsKQEAgLTI4MzksNyArMjk0Nyw3IEBAIHZvaWQgV0tQYWdlU2V0U2Nyb2xsUGlubmluZ0JlaGF2
aW9yKFdLUGFnZVJlZiBwYWdlLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICB0b0ltcGwocGFnZSktPnNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihjb3JlUGlubmluZyk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoY29yZVBpbm5pbmcpOwogfQogCiBib29sIFdLUGFn
ZUdldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2UpCkBAIC0yODQ3LDkgKzI5NTUsMTAg
QEAgYm9vbCBXS1BhZ2VHZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlKQogICAgIHJl
dHVybiB0b0ltcGwocGFnZSktPmFkZHNWaXNpdGVkTGlua3MoKTsKIH0KIAotdm9pZCBXS1BhZ2VT
ZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlLCBib29sIGFkZHNWaXNpdGVkTGlua3Mp
Cit2b2lkIFdLUGFnZVNldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wg
YWRkc1Zpc2l0ZWRMaW5rcykKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldEFkZHNWaXNpdGVkTGlu
a3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhhZGRzVmlzaXRlZExpbmtzKTsKIH0KIAog
Ym9vbCBXS1BhZ2VJc1BsYXlpbmdBdWRpbyhXS1BhZ2VSZWYgcGFnZSkKQEAgLTI4ODQsMjAgKzI5
OTMsMjMgQEAgV0tNZWRpYVN0YXRlIFdLUGFnZUdldE1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2Up
CiAKIHZvaWQgV0tQYWdlQ2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xl
YXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIH0KIAogdm9pZCBXS1BhZ2VDYWxsQWZ0ZXJOZXh0
UHJlc2VudGF0aW9uVXBkYXRlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VQb3N0UHJlc2VudGF0aW9uVXBkYXRlRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Y2FsbEFmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZShbY29udGV4dCwgY2FsbGJhY2tdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBjYWxsYmFjayhlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBj
b250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2Fs
ZUxpbWl0cyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykK
K3ZvaWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQotICAgIHRvSW1wbChwYWdlKS0+c2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoaWdub3Jlc1ZpZXdw
b3J0U2NhbGVMaW1pdHMpOwogI2VuZGlmCiB9CiAKQEAgLTI5MDcsOTMgKzMwMTksMTA1IEBAIFBy
b2Nlc3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSkKIH0KIAog
I2lmZGVmIF9fQkxPQ0tTX18KLXZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0QmxvY2sgYmxvY2spCit2
b2lkIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQ
YWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2NrKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgdG9JbXBsKHBh
Z2UpLT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFtibG9ja10oY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFtibG9ja10oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGJsb2NrKCk7CiAgICAg
fSk7CiAjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgVU5VU0VEX1BB
UkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBibG9jaygpOwogI2Vu
ZGlmIC8vIG5vdCBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiB9CiAjZW5kaWYKIAotdm9p
ZCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50RnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmR1
bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50KSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuaW1wbCgpKSwgY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9p
ZCBXS1BhZ2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS1Bh
Z2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkg
ewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lk
IFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIGJvb2wgdmFsdWUsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHZhbHVlLCBXS1BhZ2VTZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFsdWUsIFtjYWxs
YmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVy
Rm9yVGVzdGluZyh2YWx1ZSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAg
ICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VN
YXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpCit2b2lkIFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlTWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPm1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhbY2Fs
bGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAg
ICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFn
ZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFdLUGFnZVJlZiBw
YWdlLCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNpbXVs
YXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxi
YWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQor
dm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwoVVJM
KCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkg
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwg
dG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYg
VVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0g
ICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRl
eHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VV
UkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJM
UmVmIHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLUGFnZVNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhk
ZXN0aW5hdGlvblVSTCkpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RG
U3RyaW5nKHNvdXJjZVVSTCkpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uVVJM
KSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNh
bGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1h
cmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
ZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPm1h
cmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0Nv
bnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1w
bChwYWdlUmVmKS0+bWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2Fs
bGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQQ01GcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB1bmxpbmth
YmxlVG9rZW4sIFdLU3RyaW5nUmVmIHNlY3JldFRva2VuLCBXS1N0cmluZ1JlZiBzaWduYXR1cmUs
IFdLU3RyaW5nUmVmIGtleUlELCBXS1BhZ2VTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQ
YWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwg
V0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHVubGlua2FibGVUb2tlbiksIHRvV1RGU3RyaW5n
KHNlY3JldFRva2VuKSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJlKSwgdG9XVEZTdHJpbmcoa2V5SUQp
LCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmcodG9XVEZTdHJpbmcodW5saW5rYWJsZVRva2VuKSwgdG9XVEZTdHJpbmcoc2VjcmV0VG9r
ZW4pLCB0b1dURlN0cmluZyhzaWduYXR1cmUpLCB0b1dURlN0cmluZyhrZXlJRCksIFtjYWxsYmFj
a0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4
dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKFdL
UGFnZVJlZiBwYWdlLCB1aW50NjRfdCBvcmllbnRhdGlvbikKK3ZvaWQgV0tQYWdlU2V0TW9ja0Nh
bWVyYU9yaWVudGF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB1aW50NjRfdCBvcmllbnRhdGlvbikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRPcmllbnRhdGlvbkZvck1lZGlh
Q2FwdHVyZShvcmllbnRhdGlvbik7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRPcmllbnRhdGlv
bkZvck1lZGlhQ2FwdHVyZShvcmllbnRhdGlvbik7CiAjZW5kaWYKIH0KIApAQCAtMzAwNiwzNiAr
MzEzMCw0MCBAQCBXS19FWFBPUlQgYm9vbCBXS1BhZ2VJc01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyRW5hYmxlZChXS1BhZ2VSZWYpCiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VMb2FkZWRT
dWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNl
RG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdL
UGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29u
dGV4dCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB0b0ltcGwocGFnZSktPmdldExvYWRlZFN1YnJlc291cmNlRG9t
YWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiYmIGRvbWFpbnMpIHsKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldExvYWRlZFN1YnJlc291cmNl
RG9tYWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYmIGRvbWFpbnMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFw
aURvbWFpbnMgPSBXVEY6Om1hcChkb21haW5zLCBbXShhdXRvJiBkb21haW4pIHsKICAgICAgICAg
ICAgIHJldHVybiBSZWZQdHI8QVBJOjpPYmplY3Q+KEFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGTW92
ZShkb21haW4uc3RyaW5nKCkpKSk7CiAgICAgICAgIH0pOwogICAgICAgICBjYWxsYmFjayh0b0FQ
SShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkucHRyKCkpLCBjYWxsYmFj
a0NvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAg
VU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIGNhbGxiYWNrKG51bGxwdHIsIGNhbGxiYWNrQ29u
dGV4dCk7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVhckxvYWRlZFN1YnJlc291cmNlRG9t
YWlucyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5jbGVh
ckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2Up
OworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZVNl
dE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgZG91
YmxlIGRlbGF5KQordm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRl
c3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBkZWxheSkKIHsKLSAgICB0b0ltcGwocGFn
ZSktPnNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMoZGVsYXkpKTsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYUNhcHR1cmVS
ZXBvcnRpbmdEZWxheShTZWNvbmRzKGRlbGF5KSk7CiB9CiAKLXZvaWQgV0tQYWdlRGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdl
RGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKLSAgICB0b0ltcGwocGFnZSktPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rp
bmcoKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaXNw
YXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA2NTgyNDEzYWNhY2UxZDM1
M2JmN2Y3MWUyODBjMzRiOTEwZWE0YTY4Li5jMGQxYjczZTE2NjA3OGJlZjkzNTYyODI0MzQxYzM5
NjNhMWRhODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTE5OSw2ICsxOTksOSBAQCBzdGF0aWMgY29uc3QgQk9PTCBkZWZhdWx0RmFz
dENsaWNraW5nRW5hYmxlZCA9IE5POwogc3RhdGljIGNvbnN0IHVpbnQzMl90IGZpcnN0U0RLVmVy
c2lvbldpdGhMaW5rUHJldmlld0VuYWJsZWRCeURlZmF1bHQgPSAweEEwMDAwOwogI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNkZWZpbmUgVEhST1dfSUZfU1VTUEVOREVEIGlmIChf
cGFnZSAmJiBfcGFnZS0+aXNTdXNwZW5kZWQoKSkgXAorICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IGlz
IHN1c3BlbmRlZCJdCisKIFJldGFpblB0cjxOU0Vycm9yPiBuc0Vycm9yRnJvbUV4Y2VwdGlvbkRl
dGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscykKIHsKICAgICBh
dXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKQEAgLTcxOCwxMSArNzIxLDEzIEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZERlbGVnYXRl
OihpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKIAogLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVlc3Qp
KTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93
aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbVVJMIGlzRmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3Qg
YSBmaWxlIFVSTCIsIFVSTF07CiAKQEAgLTczNCw2ICs3MzksNyBAQCAtIChXS05hdmlnYXRpb24g
Kilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJM
ICopcmVhZAogCiAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilz
dHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddOwogCiAgICAgcmV0dXJuIFtzZWxmIGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAIlVURi04IiBiYXNlVVJMOmJhc2VV
UkxdOwpAQCAtNzQxLDExICs3NDcsMTMgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEhUTUxTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogCiAtIChXS05h
dmlnYXRpb24gKilsb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilN
SU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0
ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpKTsKIH0KIAogLSAodm9pZClz
dGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byogZG93bmxvYWQpIHsKICAgICAgICAgaWYgKGRvd25sb2FkKQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOwpAQCAtNzU2LDYgKzc2NCw3IEBAIC0g
KHZvaWQpc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pCiAKIC0gKHZvaWQpcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1l
RGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rv
d25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10g
aW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOwogICAgIFt1bmFy
Y2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJh
aXNlRXhjZXB0aW9uXTsKICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZl
ciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25h
cnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBj
bGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNz
XSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKQEAgLTc4Miw2
ICs3OTEsNyBAQCAtICh2b2lkKXJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURhdGE6KE5TRGF0YSAq
KXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaQogCiAtIChXS05hdmlnYXRpb24gKiln
b1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CiB9CiAKQEAgLTg0MCw2ICs4NTAsNyBAQCAtIChC
T09MKWNhbkdvRm9yd2FyZAogCiAtIChXS05hdmlnYXRpb24gKilnb0JhY2sKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKHNlbGYuX3NhZmVCcm93c2luZ1dhcm5pbmcpCiAgICAg
ICAgIHJldHVybiBbc2VsZiByZWxvYWRdOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0Jh
Y2soKSk7CkBAIC04NDcsMTEgKzg1OCwxMyBAQCAtIChXS05hdmlnYXRpb24gKilnb0JhY2sKIAog
LSAoV0tOYXZpZ2F0aW9uICopZ29Gb3J3YXJkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0ZvcndhcmQoKSk7CiB9CiAKIC0gKFdLTmF2aWdh
dGlvbiAqKXJlbG9hZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChsaW5rZWRPbk9y
QWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhh
dmlvcikpCiAgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpOwpAQCAtODYxLDI2ICs4NzQsMzEgQEAgLSAoV0tOYXZpZ2F0aW9uICopcmVs
b2FkCiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpS
ZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAog
LSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNj
cmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOm5p
bCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOm5pbCBpbldv
cmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3Js
ZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBh
c0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9y
Y2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpY2FsbEFzeW5j
SmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFyZ3VtZW50czooTlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAq
KWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZh
U2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOllFUyB3aXRoU291cmNlVVJM
Om5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1l
OmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKIH0KIApAQCAtOTIwLDYgKzkzOCw3IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQXJn
dW1lbnQoaWQgYXJndW1lbnQpCiAKIC0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtOTM2LDYgKzk1NSw3IEBAIC0gKHZvaWQp
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpCiAKIC0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IF9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKICAgICAgICAgcmV0dXJuOwpA
QCAtOTQ2LDYgKzk2Niw3IEBAIC0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuCiAKIC0gKHZvaWQpc2V0
QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDooQk9PTClzdXNwZW5kZWQgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyID0gW10geyB9OwogCkBAIC05NzYsNiArOTk3LDcgQEAgc3RhdGljIFdLTWVkaWFQbGF5
YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3Rh
dGUgbWUKIAogLSAodm9pZClyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShXS01lZGlhUGxheWJhY2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDA2LDYgKzEwMjgsNyBAQCAtIChXS01lZGlhQ2FwdHVy
ZVN0YXRlKW1pY3JvcGhvbmVDYXB0dXJlU3RhdGUKIAogLSAodm9pZClzZXRNaWNyb3Bob25lQ2Fw
dHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
ciA9IFtdIHsgfTsKIApAQCAtMTAyNyw2ICsxMDUwLDcgQEAgLSAodm9pZClzZXRNaWNyb3Bob25l
Q2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVy
OigKIAogLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUp
c3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9OwogCkBAIC0xMDQ4LDYgKzEwNzIs
NyBAQCAtICh2b2lkKXNldENhbWVyYUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlz
dGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZAogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3Jp
cHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYXNB
c3luY0Z1bmN0aW9uIHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIHdpdGhBcmd1bWVu
dHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2Vz
dHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
aW5Xb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pOwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3Vt
ZW50c01hcDsKQEAgLTExMDksNiArMTEzNCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAK
IC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KENvY29hSW1hZ2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBjb25zdGV4cHIgYm9vbCBzbmFwc2hvdEZhaWxlZFRyYWNlVmFs
dWUgPSBmYWxzZTsKICAgICB0cmFjZVBvaW50KFRha2VTbmFwc2hvdFN0YXJ0KTsKIApAQCAtMTE4
Miw2ICsxMjA4LDcgQEAgLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3UKIAogLSAodm9pZClzZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgX2ltcGwtPnNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVz
KGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKTsKICNlbGlmIFBMQVRGT1JNKElP
U19GQU1JTFkpCkBAIC0xMjIwLDYgKzEyNDcsNyBAQCAtIChOU1N0cmluZyAqKWN1c3RvbVVzZXJB
Z2VudAogCiAtICh2b2lkKXNldEN1c3RvbVVzZXJBZ2VudDooTlNTdHJpbmcgKiljdXN0b21Vc2Vy
QWdlbnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEN1c3RvbVVz
ZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpOwogfQogCkBAIC0xMjM0LDYgKzEyNjIsNyBAQCAtIChC
T09MKWFsbG93c0xpbmtQcmV2aWV3CiAKIC0gKHZvaWQpc2V0QWxsb3dzTGlua1ByZXZpZXc6KEJP
T0wpYWxsb3dzTGlua1ByZXZpZXcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIF9pbXBsLT5zZXRBbGxvd3NMaW5rUHJldmlldyhhbGxvd3NMaW5rUHJl
dmlldyk7CiAgICAgcmV0dXJuOwpAQCAtMTI1NSw2ICsxMjg0LDcgQEAgLSAodm9pZClzZXRBbGxv
d3NMaW5rUHJldmlldzooQk9PTClhbGxvd3NMaW5rUHJldmlldwogCiAtICh2b2lkKXNldFBhZ2Va
b29tOihDR0Zsb2F0KXBhZ2Vab29tCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRQYWdlWm9vbUZhY3RvcihwYWdlWm9vbSk7CiB9CiAKQEAgLTEyNzksNiArMTMwOSw3
IEBAIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhX
S0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1CiAKIC0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3Vs
dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYg
KCFzdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW1tX
S0ZpbmRSZXN1bHQgYWxsb2NdIF9pbml0V2l0aE1hdGNoRm91bmQ6Tk9dKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEyOTYsNiArMTMyNyw3IEBAICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVt
ZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKIAogLSAodm9pZClzZXRNZWRpYVR5cGU6KE5TU3RyaW5n
ICopbWVkaWFTdHlsZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0
T3ZlcnJpZGRlbk1lZGlhVHlwZShtZWRpYVN0eWxlKTsKIH0KIApAQCAtMTMxMSw2ICsxMzQzLDcg
QEAgLSAoaWQpaW50ZXJhY3Rpb25TdGF0ZQogCiAtICh2b2lkKXNldEludGVyYWN0aW9uU3RhdGU6
KGlkKWludGVyYWN0aW9uU3RhdGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYg
KCFbKGlkKWludGVyYWN0aW9uU3RhdGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTMzNSw2ICsxMzY4LDcgQEAgLSAoVUlTY3JvbGxWaWV3ICop
c2Nyb2xsVmlldwogCiAtICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dz
TWFnbmlmaWNhdGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0
QWxsb3dzTWFnbmlmaWNhdGlvbihhbGxvd3NNYWduaWZpY2F0aW9uKTsKIH0KIApAQCAtMTM0NSwx
MSArMTM3OSwxMyBAQCAtIChCT09MKWFsbG93c01hZ25pZmljYXRpb24KIAogLSAodm9pZClzZXRN
YWduaWZpY2F0aW9uOihkb3VibGUpbWFnbmlmaWNhdGlvbiBjZW50ZXJlZEF0UG9pbnQ6KE5TUG9p
bnQpcG9pbnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwtPnNldE1hZ25p
ZmljYXRpb24obWFnbmlmaWNhdGlvbiwgTlNQb2ludFRvQ0dQb2ludChwb2ludCkpOwogfQogCiAt
ICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWduaWZpY2F0aW9uCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9pbXBsLT5zZXRNYWduaWZpY2F0aW9uKG1hZ25pZmljYXRp
b24pOwogfQogCkBAIC0xMzYwLDYgKzEzOTYsNyBAQCAtIChkb3VibGUpbWFnbmlmaWNhdGlvbgog
CiAtIChOU1ByaW50T3BlcmF0aW9uICopcHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZvOihOU1By
aW50SW5mbyAqKXByaW50SW5mbwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAo
YXV0byB3ZWJGcmFtZVByb3h5ID0gX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4g
X2ltcGwtPnByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbyhwcmludEluZm8sICp3ZWJGcmFtZVBy
b3h5KTsKICAgICByZXR1cm4gbmlsOwpAQCAtMTUyNyw2ICsxNTY0LDcgQEAgLSAoT3B0aW9uYWw8
Qk9PTD4pX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3Rp
bmcKIAogLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0
aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRh
ICpwZGZEb2N1bWVudERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRDsKICAgICBpZiAoYXV0byBtYWluRnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAg
ICAgIGZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1lSUQoKTsKQEAgLTE1NTIsNiArMTU5MCw3IEBA
IC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246KFdLUERGQ29uZmlndXJhdGlvbiAq
KXBkZkNvbmZpZ3VyYXRpb24gY29tcGxlCiAKIC0gKHZvaWQpY3JlYXRlV2ViQXJjaGl2ZURhdGFX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRX
ZWJBcmNoaXZlT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1lKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpLCBuaWwpOwogICAgIH0pOwpAQCAt
MTYzMywxNyArMTY3MiwyMCBAQCAtICh2b2lkKV9kaWRDaGFuZ2VFZGl0b3JTdGF0ZQogCiAtIChX
S05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRh
ICopZGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+bG9hZFNpbXVsYXRlZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UsIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9KSk7CiB9CiAKIC8v
IEZJWE1FKDIyMzY1OCk6IFJlbW92ZSB0aGlzIG9uY2UgYWRvcHRlcnMgaGF2ZSBtb3ZlZCB0byB0
aGUgZmluYWwgQVBJLgogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9u
c2UgcmVzcG9uc2VEYXRhOihOU0RhdGEgKilkYXRhCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVkUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNl
OnJlc3BvbnNlIHJlc3BvbnNlRGF0YTpkYXRhXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9h
ZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2VIVE1MU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBO
U0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6c3RyaW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOkAiVVRGLTgiXSk7CiAK
QEAgLTE2NTMsMTEgKzE2OTUsMTMgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2VIVE1MU3RyaW4KIC8vIEZJWE1F
KDIyMzY1OCk6IFJlbW92ZSB0aGlzIG9uY2UgYWRvcHRlcnMgaGF2ZSBtb3ZlZCB0byB0aGUgZmlu
YWwgQVBJLgogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIFtzZWxmIGxvYWRTaW11bGF0
ZWRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2VIVE1MU3RyaW5nOnN0cmluZ107CiB9CiAKIC0gKFdL
TmF2aWdhdGlvbiAqKWxvYWRGaWxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBhbGxv
d2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNzVVJMCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIGF1dG8gVVJMID0gcmVxdWVzdC5VUkw7CiAKICAgICBpZiAoIVtV
UkwgaXNGaWxlVVJMXSkKQEAgLTE2ODcsNyArMTczMSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dl
YlZpZXcgKFdLUHJpdmF0ZSkKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2RlZmluZSBXRUJDT1JF
X1BSSVZBVEVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRlciB7
IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CisjZGVmaW5lIFdF
QkNPUkVfUFJJVkFURV9DT01NQU5EKGNvbW1hbmQpIC0gKHZvaWQpXyMjY29tbWFuZDooaWQpc2Vu
ZGVyIHsgVEhST1dfSUZfU1VTUEVOREVEOyBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21t
YW5kICMjIF9zKTsgfQogCiBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGlnbkNlbnRlcikKIFdF
QkNPUkVfUFJJVkFURV9DT01NQU5EKGFsaWduSnVzdGlmaWVkKQpAQCAtMTcwNiwyMSArMTc1MCwy
NSBAQCBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChwYXN0ZUFuZE1hdGNoU3R5bGUpCiAKIC0gKHZv
aWQpX3RvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJzdHJpa2V0aHJvdWdoIl9zKTsK
IH0KIAogLSAodm9pZClfaW5jcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+aW5jcmVhc2VMaXN0TGV2ZWwoKTsKIH0KIAogLSAo
dm9pZClfZGVjcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+ZGVjcmVhc2VMaXN0TGV2ZWwoKTsKIH0KIAogLSAodm9pZClfY2hh
bmdlTGlzdFR5cGU6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+Y2hhbmdlTGlzdFR5cGUoKTsKIH0KIApAQCAtMTc3Miw2ICsxODIwLDcgQEAgLSAoQ0dT
aXplKV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzCiAKIC0gKHZvaWQpX3NldFZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM6KENHU2l6ZSl2aWV3cG9ydFNpemUKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byB2aWV3cG9ydFNpemVGb3JWaWV3cG9ydFVuaXRz
ID0gV2ViQ29yZTo6SW50U2l6ZSh2aWV3cG9ydFNpemUpOwogICAgIGlmICh2aWV3cG9ydFNpemVG
b3JWaWV3cG9ydFVuaXRzLmlzRW1wdHkoKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXdwb3J0IHNpemUgc2hvdWxkIG5v
dCBiZSBlbXB0eSJdOwpAQCAtMTc5Myw2ICsxODQyLDcgQEAgLSAoX1dLSW5zcGVjdG9yICopX2lu
c3BlY3RvcgogCiAtICh2b2lkKV9kaWRFbmFibGVCcm93c2VyRXh0ZW5zaW9uczooTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURUb05hbWVNYXAKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdHJhbnNm
b3JtZWQ7CiAgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25J
RFRvTmFtZU1hcC5jb3VudCk7CiAgICAgW2V4dGVuc2lvbklEVG9OYW1lTWFwIGVudW1lcmF0ZUtl
eXNBbmRPYmplY3RzVXNpbmdCbG9jazpbJl0oTlNTdHJpbmcgKmV4dGVuc2lvbklELCBOU1N0cmlu
ZyAqZXh0ZW5zaW9uTmFtZSwgQk9PTCAqKSB7CkBAIC0xODAzLDYgKzE4NTMsNyBAQCAtICh2b2lk
KV9kaWRFbmFibGVCcm93c2VyRXh0ZW5zaW9uczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5T
U3RyaW5nICo+ICopZXh0ZQogCiAtICh2b2lkKV9kaWREaXNhYmxlQnJvd3NlckV4dGVuc2lvbnM6
KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURzCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIEhhc2hTZXQ8U3RyaW5nPiB0cmFuc2Zvcm1lZDsKICAgICB0cmFuc2Zvcm1lZC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbklEcy5jb3VudCk7CiAgICAgZm9yIChOU1N0
cmluZyAqZXh0ZW5zaW9uSUQgaW4gZXh0ZW5zaW9uSURzKQpAQCAtMTg1MSw2ICsxOTAyLDcgQEAg
LSAoQk9PTClfaXNFZGl0YWJsZQogCiAtICh2b2lkKV9zZXRFZGl0YWJsZTooQk9PTCllZGl0YWJs
ZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBib29sIHdhc0VkaXRhYmxlID0gX3Bh
Z2UtPmlzRWRpdGFibGUoKTsKICAgICBfcGFnZS0+c2V0RWRpdGFibGUoZWRpdGFibGUpOwogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTE4NjgsNiArMTkyMCw3IEBAIC0gKHZvaWQpX3NldEVkaXRhYmxl
OihCT09MKWVkaXRhYmxlCiAKIC0gKHZvaWQpX2V4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcg
Kiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAqKWFyZ3VtZW50IGNvbXBsZXRpb246KHZvaWQg
KF4pKEJPT0wpKWNvbXBsZXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3Bh
Z2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kLCBhcmd1bWVudCwgW2NhcHR1cmVkQ29tcGxl
dGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CiAgICAgICAgIGlmIChjYXB0
dXJlZENvbXBsZXRpb25CbG9jaykKICAgICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkJsb2Nr
KFlFUyk7CkBAIC0xOTAzLDYgKzE5NTYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4+IGNyZWF0ZVVzZXJJbmZvKGNvbnN0IE9wdGlvbmFsPFdlYgogCiAt
ICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246KF9XS1RleHRN
YW5pcHVsYXRpb25Db25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uOih2b2lk
KF4pKCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
dXNpbmcgRXhjbHVzaW9uUnVsZSA9IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpFeGNsdXNpb25SdWxlOwogCiAgICAgaWYgKCFfdGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIHx8
ICFfcGFnZSkgewpAQCAtMTk2Nyw2ICsyMDIxLDcgQEAgc3RhdGljIFdlYkNvcmU6OlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpUb2tlbklkZW50aWZpZXIgY29yZVRleHRNYW5pcHVsYXRpb24K
IAogLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbSAqKWl0ZW0gY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghX3BhZ2UpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC0yMDI0
LDYgKzIwNzksNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlv
bkVycm9ycyhOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdAogCiAtICh2b2lkKV9jb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bSAqPiAqKWl0ZW1zIGNvbXBsZXRpb246KHZvaWQoXikoTlNBcnJheTxOU0Vycm9yICo+ICplcnJv
cnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlm
ICghX3BhZ2UpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZUZhaWx1cmVTZXRGb3JB
bGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMoaXRlbXMpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjA1MSw2ICsyMTA3LDcgQEAgLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9y
SXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKikKIAogLSAodm9pZClf
dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFtzZWxmIF90YWtlRmluZFN0cmluZ0Zy
b21TZWxlY3Rpb25JbnRlcm5hbDpzZW5kZXJdOwogI2Vsc2UKQEAgLTIxMDUsNiArMjE2Miw3IEBA
IC0gKHZvaWQpX3NldEhpc3RvcnlEZWxlZ2F0ZTooaWQgPFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0
ZT4paGlzdG9yeURlbGVnYXRlCiAKIC0gKHZvaWQpX3VwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9s
c01hbmFnZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgSEFWRShUT1VDSF9CQVIp
ICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBfaW1wbC0+dXBk
YXRlTWVkaWFQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogI2VuZGlmCkBAIC0yMTMwLDYgKzIx
ODgsNyBAQCAtIChCT09MKV9pc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUKIAogLSAodm9pZClfdG9n
Z2xlUGljdHVyZUluUGljdHVyZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBIQVZF
KFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAg
IF9pbXBsLT50b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCk7CiAjZW5kaWYKQEAgLTIxNDIsMjYgKzIy
MDEsMzEgQEAgLSAoX1dLTWVkaWFNdXRlZFN0YXRlKV9tZWRpYU11dGVkU3RhdGUKIAogLSAodm9p
ZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgW3NlbGYgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKIH0KIAogLSAodm9pZClfc3RvcE1lZGlhQ2FwdHVyZQogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c3RvcE1lZGlhQ2FwdHVyZShXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvKTsKIH0KIAogLSAodm9pZClfc3Rv
cEFsbE1lZGlhUGxheWJhY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYg
cGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKIC0g
KHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6WUVTIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CiB9CiAKIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3Bl
bmRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCkBAIC0yMTc4LDYgKzIyNDIsNyBA
QCBzdGF0aWMgdm9pZCBjb252ZXJ0QW5kQWRkSGlnaGxpZ2h0KFZlY3RvcjxSZWY8V2ViS2l0OjpT
aGFyZWRNZW1vcnk+PiYgYnVmZmVycywgTgogCiAtICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0
czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBWZWN0b3I8UmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKIApAQCAtMjE5Miw2ICsyMjU3LDcgQEAgLSAodm9pZClf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogCiAt
ICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdo
dAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CiAgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAgICAgCkBA
IC0yMjA0LDYgKzIyNzAsNyBAQCAtICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGln
aHQ6KE5TRGF0YSAqKWhpZ2hsaWdodAogCiAtICh2b2lkKV9hZGRBcHBIaWdobGlnaHQKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIF9w
YWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQ6Ok5vLCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwOjpZZXMpOwogI2VuZGlmCkBAIC0yMjIzLDIzICsyMjkwLDI3IEBAIC0gKE5TVVJMICop
X21haW5GcmFtZVVSTAogCiAtICh2b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihO
U1VSTCAqKXVucmVhY2hhYmxlVVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIE5T
RGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOwogICAgIF9wYWdlLT5sb2FkQWx0ZXJuYXRlSFRNTCh7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgIlVURi04Il9zLCBiYXNlVVJMLCB1
bnJlYWNoYWJsZVVSTCk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkRGF0YTooTlNEYXRh
ICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFz
ZVVSTCB1c2VyRGF0YTooaWQpdXNlckRhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5j
b2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFw
aDo6Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfbG9h
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMczoo
Qk9PTClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5ID0gc2hvdWxkT3BlbkV4
dGVybmFsVVJMcyA/IF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lBbGxvdyA6IF9XS1No
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lOb3RBbGxvdzsKICAgICByZXR1cm4gW3NlbGYgX2xv
YWRSZXF1ZXN0OnJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTpwb2xpY3ldOwog
fQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTooX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSlzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5CiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5
OwogICAgIHN3aXRjaCAoc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgewogICAgIGNhc2Ug
X1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeU5vdEFsbG93OgpAQCAtMjI1NywyNCArMjMy
OCwyOCBAQCAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbAogCiAtICh2b2lkKV9ncmFudEFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoX3BhZ2Up
CiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpOwogfQogCiAtICh2
b2lkKV9yZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgaWYgKF9wYWdlKQogICAgICAgICBfcGFnZS0+cmV2b2tlQWNjZXNzVG9Bc3NldFNl
cnZpY2VzKCk7CiB9CiAKIC0gKHZvaWQpX3N3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1Vz
ZXJGb250UmVnaXN0cnkKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdl
KQogICAgICAgICBfcGFnZS0+c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRS
ZWdpc3RyeSgpOwogfQogCiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWlu
OihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcg
KiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbcmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZG9tYWlu
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghYXBwQm91bmREYXRh
LmNvbnRleHREYXRhLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobmlsKTsKQEAgLTIyODcsNiArMjM2Miw3IEBAIC0gKHZvaWQpX2Fw
cEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRp
b25IYW5kbGVyOih2CiAKIC0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5oYXNMb2Fk
ZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKICAgICB9KTsKQEAgLTIyOTQsOCArMjM3MCwzMCBA
QCAtICh2b2lkKV9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkp
Y29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoo
dm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91
bmREYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREYXRh
Lmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworfQorCistICh2b2lkKV9zdXNw
ZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIV9w
YWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZv
aWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFfcGFnZSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
X3BhZ2UtPnJlc3VtZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Vj
Y2Vzcyk7CiAgICAgfSk7CiB9CiAKQEAgLTIzMzIsNiArMjQzMCw3IEBAIC0gKE5TU3RyaW5nICop
X2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudAogCiAtICh2b2lkKV9zZXRBcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQ6KE5TU3RyaW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKICAgICBfcGFnZS0+c2V0
QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQpOwogfQpAQCAtMjM4NCw2ICsyNDgzLDcgQEAgLSAoQk9PTClfd2ViUHJvY2Vzc0lzUmVz
cG9uc2l2ZQogCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbc2VsZiBfaXNWYWxpZF0pCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjM5MiwxNiArMjQ5MiwxOSBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MK
IAogLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChX
ZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKTsKIH0KIAogLSAo
V0tOYXZpZ2F0aW9uICopX3JlbG9hZEV4cGlyZWRPbmx5CiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0
aW9uOjpFeHBpcmVkT25seSkpOwogfQogCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NB
bmRSZXNldFN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFJlZjxXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eT4gcHJvdGVjdGVkUHJvY2Vzc1Byb3h5KF9wYWdlLT5wcm9jZXNzKCkp
OwogICAgIHByb3RlY3RlZFByb2Nlc3NQcm94eS0+cmVxdWVzdFRlcm1pbmF0aW9uKFdlYktpdDo6
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CiAKQEAgLTI0MTMs
NiArMjUxNiw3IEBAIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUK
IAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RD
b25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBSZXRhaW5QdHI8V0tQREZDb25maWd1cmF0aW9uPiBwZGZD
b25maWd1cmF0aW9uOwogICAgIGlmIChzbmFwc2hvdENvbmZpZ3VyYXRpb24pIHsKICAgICAgICAg
cGRmQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1BERkNvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTI0MjQsNiArMjUyOCw3IEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAKIC0g
KHZvaWQpX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOihfV0tGcmFtZUhhbmRsZSAqKWZyYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENHU2l6ZSkpY29tcGxldGlvbkhhbmRsZXIKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldFBERkZpcnN0UGFnZVNpemUo
ZnJhbWUtPl9mcmFtZUhhbmRsZS0+ZnJhbWVJRCgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxDR1NpemU+KHNpemUpKTsKICAg
ICB9KTsKQEAgLTI0NTQsNiArMjU1OSw3IEBAIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9u
U3RhdGVXaXRoRmlsdGVyOihCT09MICheKShXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKml0CiAKIC0g
KHZvaWQpX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRl
RGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZGVjb2Rlci4KICAgICBXZWJLaXQ6
OlNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGU7CiAgICAgaWYgKCFXZWJLaXQ6OmRlY29kZUxlZ2Fj
eVNlc3Npb25TdGF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2Vzc2lvblN0YXRlRGF0
YS5ieXRlcyksIHNlc3Npb25TdGF0ZURhdGEubGVuZ3RoLCBzZXNzaW9uU3RhdGUpKQpAQCAtMjQ2
NCw2ICsyNTcwLDcgQEAgLSAodm9pZClfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOihOU0Rh
dGEgKilzZXNzaW9uU3RhdGVEYXRhCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZXN0b3JlU2Vzc2lv
blN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9uU3RhdGUgYW5kTmF2aWdhdGU6KEJPT0wp
bmF2aWdhdGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSA/IHNlc3Npb25TdGF0
ZS0+X3Nlc3Npb25TdGF0ZSA6IFdlYktpdDo6U2Vzc2lvblN0YXRlIHsgfSwgbmF2aWdhdGUpKTsK
IH0KIApAQCAtMjQ3NCw2ICsyNTgxLDcgQEAgLSAodm9pZClfY2xvc2UKIAogLSAoQk9PTClfdHJ5
Q2xvc2UKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9wYWdlLT50cnlD
bG9zZSgpOwogfQogCkBAIC0yNDg0LDYgKzI1OTIsNyBAQCAtIChCT09MKV9pc0Nsb3NlZAogCiAt
IChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5n
ICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNE
YXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25z
IGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAg
YXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0pOwogICAgIGlmIChmaWxlbmFtZSkKQEAgLTI0OTMs
MTIgKzI2MDIsMTQgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXAKIAogLSAoX1dLQXR0YWNobWVu
dCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmls
ZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgb3B0aW9uczooX1dL
QXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIHJldHVybiBbc2VsZiBfaW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlV3JhcHBlciBjb250ZW50VHlwZTpjb250ZW50VHlw
ZSBjb21wbGV0aW9uOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAoX1dLQXR0YWNobWVudCAq
KV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdy
YXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgY29tcGxldGlvbjoodm9p
ZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBpZGVudGlm
aWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogICAgIGF1dG8gYXR0YWNobWVudCA9
IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSk7CkBAIC0yNTE4LDYg
KzI2MjksNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdy
YXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcgogCiAtIChfV0tBdHRhY2htZW50ICop
X2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBp
ZiAoYXV0byBhdHRhY2htZW50ID0gX3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpKQogICAgICAgICByZXR1cm4gd3JhcHBlcihhdHRhY2htZW50KTsKQEAgLTI1MjcsNiAr
MjYzOSw3IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfYXR0YWNobWVudEZvcklkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9zaW11bGF0ZURldmljZU9yaWVudGF0aW9u
Q2hhbmdlV2l0aEFscGhhOihkb3VibGUpYWxwaGEgYmV0YTooZG91YmxlKWJldGEgZ2FtbWE6KGRv
dWJsZSlnYW1tYQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2ltdWxh
dGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpOwogfQogCkBAIC0y
NTQyLDYgKzI2NTUsNyBAQCArIChCT09MKV93aWxsVXBncmFkZVRvSFRUUFM6KE5TVVJMICopdXJs
CiAKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRT
dHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9zaG93U2Fm
ZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHRpdGxlOnRpdGxlIHdhcm5pbmc6d2FybmluZyBk
ZXRhaWxzV2l0aExpbmtzOmRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIGNvbnRpbnVl
VW5zYWZlTG9hZCwgTlNVUkwgKnVybCkgewogICAgICAgICBBU1NFUlQoIXVybCk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNvbnRpbnVlVW5zYWZlTG9hZCk7CkBAIC0yNTUwLDYgKzI2NjQs
NyBAQCAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTooTlNTdHJpbmcg
Kil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKQogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5n
V2FybmluZ1dpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5p
bmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRh
aWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9zaG93U2FmZUJyb3dzaW5nV2Fy
bmluZ1dpdGhVUkw6bmlsIHRpdGxlOnRpdGxlIHdhcm5pbmc6d2FybmluZyBkZXRhaWxzV2l0aExp
bmtzOmRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIGNvbnRpbnVlVW5zYWZlTG9hZCwg
TlNVUkwgKnVybCkgewogICAgICAgICBBU1NFUlQoIXVybCk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRpbnVlVW5zYWZlTG9hZCk7CkBAIC0yNTU4LDYgKzI2NzMsNyBAQCAtICh2b2lk
KV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIHdhcgogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhV
Ukw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5n
ICopd2FybmluZyBkZXRhaWxzV2l0aExpbmtzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxz
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wsIE5TVVJMICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gc2FmZUJyb3dzaW5nV2Fy
bmluZyA9IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Y3JlYXRlKHVybCwgdGl0bGUsIHdh
cm5pbmcsIGRldGFpbHMpOwogICAgIGF1dG8gd3JhcHBlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWYXJpYW50PFdlYktpdDo6Q29udGlu
dWVVbnNhZmVMb2FkLCBVUkw+JiYgdmFyaWFudCkgewogICAgICAgICBzd2l0Y2hPbih2YXJpYW50
LCBbJl0gKFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkIGNvbnRpbnVlVW5zYWZlTG9hZCkgewpA
QCAtMjU5MCw2ICsyNzA2LDcgQEAgKyAoTlNVUkwgKilfdmlzaXRVbnNhZmVXZWJzaXRlU2VudGlu
ZWwKIAogLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5pc0pJVEVuYWJsZWQo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJv
b2wgZW5hYmxlZCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKICAgICB9
KTsKQEAgLTI1OTcsMTEgKzI3MTQsMTMgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdp
dGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFT
Y3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1
bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gaW5GcmFtZTpuaWwgaW5Xb3JsZDpXS0NvbnRl
bnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwog
fQogCiAtICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0OihOU1N0cmluZyAqKWZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5G
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQg
Kiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICpl
cnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXNBc3luY0Z1bmN0aW9uOllF
UyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0
dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIApAQCAtMjYyNiwxMSArMjc0NSwxMyBAQCAtIChC
T09MKV9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWQKIAogLSAodm9pZClfZXZhbHVhdGVKYXZh
U2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8g
KilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJM
Om5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1l
IGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
XTsKIH0KIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgd2l0aFNvdXJjZVVSTDooTlNVUkwgKil1cmwgaW5GcmFtZTooV0tGcmFtZUluZm8g
KilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJM
OnVybCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1l
IGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
XTsKIH0KIApAQCAtMjY0MCw2ICsyNzYxLDcgQEAgLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGlj
aWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKIAogLSAodm9pZClfdXBk
YXRlV2VicGFnZVByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVm
ZXJlbmNlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAod2VicGFnZVByZWZl
cmVuY2VzLl93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVXBkYXRpbmcgV0tXZWJzaXRlRGF0YVN0
b3JlIGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uLiJdOwogICAgIGlmICh3ZWJwYWdlUHJlZmVyZW5jZXMuX3VzZXJDb250ZW50Q29udHJvbGxl
cikKQEAgLTI2NTAsMTEgKzI3NzIsMTMgQEAgLSAodm9pZClfdXBkYXRlV2VicGFnZVByZWZlcmVu
Y2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcwogCiAtICh2b2lk
KV9ub3RpZnlVc2VyU2NyaXB0cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFn
ZS0+bm90aWZ5VXNlclNjcmlwdHMoKTsKIH0KIAogLSAoQk9PTClfZGVmZXJyYWJsZVVzZXJTY3Jp
cHRzTmVlZE5vdGlmaWNhdGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1
cm4gX3BhZ2UtPnVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbigpOwogfQogCkBAIC0yNjY5LDYg
KzI3OTMsNyBAQCAtIChCT09MKV9hbGxvd3NSZW1vdGVJbnNwZWN0aW9uCiAKIC0gKHZvaWQpX3Nl
dEFsbG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxsb3cKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNldEFsbG93
c1JlbW90ZUluc3BlY3Rpb24oYWxsb3cpOwogI2VuZGlmCkBAIC0yNjg1LDYgKzI4MTAsNyBAQCAt
IChOU1N0cmluZyAqKV9yZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlCiAKIC0gKHZvaWQpX3Nl
dFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU6KE5TU3RyaW5nICopbmFtZQogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBfcGFn
ZS0+c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShuYW1lKTsKICNlbmRpZgpAQCAtMjY5
Nyw2ICsyODIzLDcgQEAgLSAoQk9PTClfYWRkc1Zpc2l0ZWRMaW5rcwogCiAtICh2b2lkKV9zZXRB
ZGRzVmlzaXRlZExpbmtzOihCT09MKWFkZHNWaXNpdGVkTGlua3MKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zpc2l0ZWRMaW5r
cyk7CiB9CiAKQEAgLTI3NDQsNiArMjg3MSw3IEBAIC0gKHZvaWQpX3NldE9ic2VydmVkUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHM6KF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKW9ic2VydmVkCiAK
IC0gKHZvaWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShfcGFn
ZS0+bWFpbkZyYW1lKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3cmFwcGVyKGRhdGEpLCBuaWwpOwogICAgIH0pOwpAQCAtMjc1MSwxMSArMjg3OSwxMyBAQCAt
ICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKQogCiAtICh2b2lkKV9nZXRXZWJBcmNoaXZlRGF0YVdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgY3JlYXRlV2Vi
QXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQog
CiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewogICAgICAgICBoYW5k
bGVyKHN0cmluZywgbmlsKTsKICAgICB9KTsKQEAgLTI3NjMsNiArMjg5Myw3IEBAIC0gKHZvaWQp
X2dldENvbnRlbnRzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3Ry
aW5nICosIE5TRXJyb3IKIAogLSAodm9pZClfZ2V0Q29udGVudHNPZkFsbEZyYW1lc0FzU3RyaW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVudHNB
c1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Olllcywg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShTdHJpbmcgc3RyaW5n
KSB7CiAgICAgICAgIGhhbmRsZXIoc3RyaW5nKTsKICAgICB9KTsKQEAgLTI3NzAsNiArMjkwMSw3
IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcKIAogLSAodm9pZClfZ2V0Q29udGVudHNBc0F0dHJp
YnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXR0cmlidXRlZFN0
cmluZyAqLCBOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRBdHRyaWJ1dGVL
ZXksIGlkPiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhbaGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGF0dHJpYnV0ZWRT
dHJpbmcpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nKQogICAgICAgICAg
ICAgaGFuZGxlcihhdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSwgYXR0cmlidXRlZFN0cmlu
Zy5kb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCksIG5pbCk7CkBAIC0yNzgwLDYgKzI5MTIsNyBAQCAt
ICh2b2lkKV9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBdHRyaWJ1dAogCiAtICh2b2lkKV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBfcGFnZS0+Z2V0QXBwbGljYXRpb25NYW5pZmVz
dChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpIHsK
ICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0yODE3LDYgKzI5NTAsNyBAQCAt
IChfV0tQYWdpbmF0aW9uTW9kZSlfcGFnaW5hdGlvbk1vZGUKIAogLSAodm9pZClfc2V0UGFnaW5h
dGlvbk1vZGU6KF9XS1BhZ2luYXRpb25Nb2RlKXBhZ2luYXRpb25Nb2RlCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZTsKICAgICBz
d2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CiAgICAgY2FzZSBfV0tQYWdpbmF0aW9uTW9kZVVucGFn
aW5hdGVkOgpAQCAtMjg0OCw2ICsyOTgyLDcgQEAgLSAoQk9PTClfcGFnaW5hdGlvbkJlaGF2ZXNM
aWtlQ29sdW1ucwogCiAtICh2b2lkKV9zZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOihC
T09MKWJlaGF2ZXNMaWtlQ29sdW1ucwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMp
OwogfQogCkBAIC0yODU4LDYgKzI5OTMsNyBAQCAtIChDR0Zsb2F0KV9wYWdlTGVuZ3RoCiAKIC0g
KHZvaWQpX3NldFBhZ2VMZW5ndGg6KENHRmxvYXQpcGFnZUxlbmd0aAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKTsKIH0KIApA
QCAtMjg2OCw2ICszMDA0LDcgQEAgLSAoQ0dGbG9hdClfZ2FwQmV0d2VlblBhZ2VzCiAKIC0gKHZv
aWQpX3NldEdhcEJldHdlZW5QYWdlczooQ0dGbG9hdClnYXBCZXR3ZWVuUGFnZXMKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEdhcEJldHdlZW5QYWdlcyhnYXBCZXR3
ZWVuUGFnZXMpOwogfQogCkBAIC0yODc4LDYgKzMwMTUsNyBAQCAtIChCT09MKV9wYWdpbmF0aW9u
TGluZUdyaWRFbmFibGVkCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQ6
KEJPT0wpbGluZUdyaWRFbmFibGVkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCk7CiB9CiAK
QEAgLTI4OTgsNiArMzAzNiw3IEBAIC0gKGRvdWJsZSlfdGV4dFpvb21GYWN0b3IKIAogLSAodm9p
ZClfc2V0VGV4dFpvb21GYWN0b3I6KGRvdWJsZSl6b29tRmFjdG9yCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0K
IApAQCAtMjkwOCw2ICszMDQ3LDcgQEAgLSAoZG91YmxlKV9wYWdlWm9vbUZhY3RvcgogCiAtICh2
b2lkKV9zZXRQYWdlWm9vbUZhY3RvcjooZG91YmxlKXpvb21GYWN0b3IKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgc2V0UGFnZVpvb206em9vbUZhY3Rvcl07CiB9CiAKQEAg
LTI5NjksNiArMzEwOSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9w
dGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kCiAKIC0gKHZvaWQpX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfY3VzdG9tQ29u
dGVudFZpZXcpIHsKICAgICAgICAgW19jdXN0b21Db250ZW50VmlldyB3ZWJfY291bnRTdHJpbmdN
YXRjaGVzOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnRdOwpAQCAtMjk4
MCw2ICszMTIxLDcgQEAgLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0
cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG0KIAogLSAodm9pZClfZmluZFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBt
YXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdoaWxlIEFwcEtpdCBjb250YWlucyBs
b2dpYyBpbiBOU0JhclRleHRGaW5kZXIgdG8gYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIGZpbmQg
cGFzdGVib2FyZAogICAgIC8vIHdoZW4gdGhlIGZpbmQgc3RyaW5nIGNoYW5nZXMsIHRoaXMgKGFs
b25nIHdpdGggdGhlIGZpbmQgcGFzdGVib2FyZCBpdHNlbGYpIGFyZSBib3RoIG1pc3NpbmcKQEAg
LTI5OTYsNiArMzEzOCw3IEBAIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6CiAKIC0gKHZvaWQpX2hp
ZGVGaW5kVUkKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CiAgICAgICAgIFtfY3VzdG9tQ29u
dGVudFZpZXcgd2ViX2hpZGVGaW5kVUldOwpAQCAtMzAwNyw2ICszMTUwLDcgQEAgLSAodm9pZClf
aGlkZUZpbmRVSQogCiAtICh2b2lkKV9zYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAgICAgX3BhZ2UtPnJlY29yZE5hdmlnYXRp
b25TbmFwc2hvdChpdGVtLl9pdGVtKTsKQEAgLTMwMjAsNiArMzE2NCw3IEBAIC0gKHZvaWQpX3Nl
cnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAt
ICh2b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CkBAIC0zMDI3LDYgKzMxNzIsNyBAQCAtICh2b2lkKV9j
bGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lkKSljb21w
bGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9wcmVjb25uZWN0VG9TZXJ2ZXI6KE5TVVJMICopdXJs
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5wcmVjb25uZWN0VG8odXJs
KTsKIH0KIApAQCAtMzAzNyw2ICszMTgzLDcgQEAgLSAoQk9PTClfY2FuVXNlQ3JlZGVudGlhbFN0
b3JhZ2UKIAogLSAodm9pZClfc2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2UKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKIH0K
IApAQCAtMzE3Nyw2ICszMzI0LDcgQEAgLSAoX1dLTGF5b3V0TW9kZSlfbGF5b3V0TW9kZQogCiAt
ICh2b2lkKV9zZXRMYXlvdXRNb2RlOihfV0tMYXlvdXRNb2RlKWxheW91dE1vZGUKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdLTGF5b3V0TW9kZSB3
a1ZpZXdMYXlvdXRNb2RlOwogICAgIHN3aXRjaCAobGF5b3V0TW9kZSkgewpAQCAtMzIwNywxMSAr
MzM1NSwxMyBAQCAtIChDR1NpemUpX2ZpeGVkTGF5b3V0U2l6ZQogCiAtICh2b2lkKV9zZXRGaXhl
ZExheW91dFNpemU6KENHU2l6ZSlmaXhlZExheW91dFNpemUKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNldEZpeGVkTGF5b3V0U2l6ZShXZWJDb3JlOjpleHBhbmRlZElu
dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGZpeGVkTGF5b3V0U2l6ZSkpKTsKIH0KIAogLSAodm9p
ZClfc2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOihCT09MKWJhY2tncm91bmRFeHRlbmRz
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRCYWNrZ3JvdW5kRXh0
ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHMpOwogfQogCkBAIC0zMjMxLDYgKzMzODEs
NyBAQCAtIChDR0Zsb2F0KV92aWV3U2NhbGUKIAogLSAodm9pZClfc2V0Vmlld1NjYWxlOihDR0Zs
b2F0KXZpZXdTY2FsZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAodmlld1Nj
YWxlIDw9IDAgfHwgaXNuYW4odmlld1NjYWxlKSB8fCBpc2luZih2aWV3U2NhbGUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAi
VmlldyBzY2FsZSBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXIiXTsKIApAQCAtMzI1MSwxMSAr
MzQwMiwxMyBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cwogCiAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilwYXR0ZXJucwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0
Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOwogfQog
CiAtICh2b2lkKV9nZXRQcm9jZXNzRGlzcGxheU5hbWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIF9wYWdlLT5nZXRQcm9jZXNzRGlzcGxheU5hbWUoW2hhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgbmFtZSkgewogICAgICAgICBoYW5k
bGVyKG5hbWUpOwogICAgIH0pOwpAQCAtMzI2Myw2ICszNDE2LDcgQEAgLSAodm9pZClfZ2V0UHJv
Y2Vzc0Rpc3BsYXlOYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAq
KSljb21wbGUKIAogLSAodm9pZClfc2V0TWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOihDR0Zs
b2F0KW1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcGFnZS0+bWluaW11bUVmZmVj
dGl2ZURldmljZVdpZHRoKCkgPT0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQogICAgICAg
ICByZXR1cm47CkBAIC0zMjg1LDYgKzM0MzksNyBAQCAtIChDR0Zsb2F0KV9taW5pbXVtRWZmZWN0
aXZlRGV2aWNlV2lkdGgKIAogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNl
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3Bh
Z2UtPmdyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSgpOwogfQpAQCAtMzI5Myw2ICszNDQ4
LDcgQEAgLSAodm9pZClfZ3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlCiAKIC0gKHZvaWQp
X3NldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOihCT09MKWVuYWJsZWQK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFNjcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCkBAIC0zMzIzLDYgKzM0Nzks
NyBAQCAtIChCT09MKV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sKIAogLSAodm9p
ZClfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrOihCT09MKWZsYWcKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcGFn
ZS0+c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGZsYWcpOwogI2VuZGlmCkBA
IC0zMzYxLDYgKzM1MTgsNyBAQCAtIChfV0tNZWRpYUNhcHR1cmVTdGF0ZURlcHJlY2F0ZWQpX21l
ZGlhQ2FwdHVyZVN0YXRlCiAKIC0gKHZvaWQpX3NldE1lZGlhQ2FwdHVyZUVuYWJsZWQ6KEJPT0wp
ZW5hYmxlZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0TWVkaWFD
YXB0dXJlRW5hYmxlZChlbmFibGVkKTsKIH0KIApAQCAtMzM3MSw2ICszNTI5LDcgQEAgLSAoQk9P
TClfbWVkaWFDYXB0dXJlRW5hYmxlZAogCiAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlh
TXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBjb3JlU3RhdGU7CiAKICAgICBp
ZiAobXV0ZWRTdGF0ZSAmIF9XS01lZGlhQXVkaW9NdXRlZCkKQEAgLTMzODUsNiArMzU0NCw3IEBA
IC0gKHZvaWQpX3NldFBhZ2VNdXRlZDooX1dLTWVkaWFNdXRlZFN0YXRlKW11dGVkU3RhdGUKIAog
LSAodm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxl
dGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCiAgICAgX3BhZ2UtPnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKFtjb21wbGV0aW9uID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb24pLCBwYWdlID0gbWFrZVdlYWtQdHIoX3BhZ2UuZ2V0KCkpXSAo
YXV0byYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChwYWdlKQpAQCAtMzQwMCwxMSArMzU2MCwxMyBA
QCAtICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczooZGlzcGF0Y2hfYmxvY2tfdCljb21w
bGV0aW9uCiAvLyBFeGVjdXRlIHRoZSBzdXBwbGllZCBibG9jayBhZnRlciB0aGUgbmV4dCB0cmFu
c2FjdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzLgogLSAodm9pZClfZG9BZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlOnVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6Tk8gd2l0aG91dFdhaXRp
bmdGb3JBbmltYXRlZFJlc2l6ZTpOT107CiB9CiAKIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2Vu
dGF0aW9uVXBkYXRlV2l0aG91dFdhaXRpbmdGb3JQYWludGluZzoodm9pZCAoXikodm9pZCkpdXBk
YXRlQmxvY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2ludGVybmFs
RG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6dXBkYXRlQmxvY2sgd2l0aG91dFdhaXRpbmdG
b3JQYWludGluZzpZRVMgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTpOT107CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDQ0OWJmMjMzZjU1NmE4ZDFjZDk2ZjQ2OTJhYzM2MjFiOTNiZWVjYzAuLjJk
ZmVhYmEwZGQ0Y2IzZDRlMDBlOWQ1ZmJhY2M4MzgyMDA3ZGYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDEw
LDYgKzQxMCw5IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVhNWMzNDkwNzMzYzJiMGU5MWRlODQ4ODhlMzAw
NGFlOWJhYjg0NWQuLjk1NjQ2ODI4MDA3ZDU0Y2E3NmY5ODE2ZDAyOTUzOTRlMTAzMmRkODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE0Myw3ICszMTQz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VzcGVuZGVkLCB3aGlj
aCBzaG91bGQgYmUgdGhlIGNhc2UgZHVyaW5nIHBhbm5pbmcsIHBpbmNoaW5nCiAgICAgLy8gYW5k
IGFuaW1hdGlvbiBvbiB0aGUgcGFnZSBpdHNlbGYgKGtpbmV0aWMgc2Nyb2xsaW5nLCB0YXAgdG8g
em9vbSkgZXRjLCB0aGVuCiAgICAgLy8gd2UgZG8gbm90IHNlbmQgYW55IG9mIHRoZSBldmVudHMg
dG8gdGhlIHBhZ2UgZXZlbiBpZiBpcyBoYXMgbGlzdGVuZXJzLgotICAgIGlmICghbV9pc1BhZ2VT
dXNwZW5kZWQpIHsKKyAgICBpZiAoIW1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNT
dXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAg
ICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCkpOwpAQCAtMzU5MSwyNCArMzU5
MSw0NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgY3VzdG9tVXNlckFnZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8
fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFt
X2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworICAgIG1fYXJlQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQp
CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1fYXJlQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNQYWdlU3Vz
cGVuZGVkID0gdHJ1ZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkID0gdHJ1ZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN1
c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdXNwZW5kOiIpOworICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc3Vt
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZToiKTsKKworICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0
c1RleHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUgKDExODg0MCk6IFdlIHNob3Vs
ZCBwcm9iYWJseSBvbmx5IHN1cHBvcnQgdGhpcyBmb3IgdGV4dCBkb2N1bWVudHMsIG5vdCBhbGwg
bm9uLWltYWdlIGRvY3VtZW50cy4KQEAgLTYwNzgsNyArNjA5OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wTWVkaWFDYXB0dXJlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQga2lu
ZCwgQ29tcGxlCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tT
dGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE1l
ZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhUGxheWJhY2tTdGF0
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC03NzE5LDcgKzc3NDAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNz
VGVybWluYXRpb25SZWFzb24gdGVybWluYQogICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG51bGxw
dHI7CiAKICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gZmFsc2U7Ci0gICAgbV9pc1BhZ2VTdXNw
ZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkID0gZmFsc2U7CiAKICAgICBtX3VzZXJTY3JpcHRzTm90aWZpZWQgPSBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YjQ1N2RmYjYwMzFlZjYz
OWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAyLi5kNTEzYWFhM2JlMjdlNGE1MTYzMWVhYjEzZmZhY2E5
MmFmMWMwY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTA1
LDYgKzUwNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKTsKICAg
ICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCk7CiAKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdXNwZW5kZWQ7IH0KKwogICAgIFdlYkluc3BlY3RvclVJUHJveHkqIGluc3BlY3Rvcigp
IGNvbnN0OwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIGdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogCkBAIC0xMDE0LDcgKzEwMTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwog
ICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKLSAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VTdXNwZW5kZWQ7IH0K
KyAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZDsg
fQogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCkBAIC0yNzUzLDcg
KzI3NTcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxl
PiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5k
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVl
IH07CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNlIH07CkBAIC0z
MDE1LDYgKzMwMTksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHRE
aWFsb2cgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA5ODY0NmZlNGI5N2ExMmJhNWVjZGEwZWNjN2U1MmExMzNiMGZjNDQ4Li43
NjY1YWU4OGYyNDczYjllMTJlN2YxNzg1MTQwNzM4NmM0ZTYyMDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUyLDYgKzE1Miw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jh
Y2tGb3J3YXJkQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25WTS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGFjdHNSZXF1ZXN0RGF0YS5oPgpAQCAtMzU5Niw2ICszNTk3LDM3IEBAIHZvaWQgV2Vi
UGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIG1fcGFnZS0+
cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBXZWJQYWdl
OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDogbV9w
YWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIGZyZWV6ZUxheWVyVHJlZShMYXllclRy
ZWVGcmVlemVSZWFzb246OlBhZ2VTdXNwZW5kZWQpOworCisgICAgbV9jYWNoZWRQYWdlID0gQmFj
a0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCkuc3VzcGVuZFBhZ2UoKm1fcGFnZSk7CisgICAgQVNT
RVJUKG1fY2FjaGVkUGFnZSk7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpKQorICAgICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmRldGFjaEZyb21BbGxP
cGVuZWRGcmFtZXMoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6
IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBhdXRvIGNhY2hlZFBhZ2UgPSBz
dGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7CisgICAgQVNTRVJUKGNhY2hlZFBh
Z2UpOworICAgIGlmICghY2FjaGVkUGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKworICAgIGNhY2hlZFBhZ2UtPnJlc3RvcmUoKm1fcGFnZSk7CisgICAgdW5m
cmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVu
VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93
UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
ZWU0NDczYWRjNGI5ODBlMGRiOGQ3YTNlMDM0ODdiYjJmZTg5OGZiYy4uZmM5NjIxZTM3MmM1YjQw
NDJiOWVkYmNiY2YyZTMyMzY0M2FhZWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBD
YXB0dXJlRGV2aWNlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBEcmFnRGF0YTsKQEAg
LTE2NjksNiArMTY3MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zKCk7CiAKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwpAQCAtMjMxOCw2ICsyMzIy
LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNhY2hlZFBhZ2U+IG1fY2FjaGVk
UGFnZTsKKwogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAgICAgYm9vbCBtX2lwY1Rlc3Rp
bmdBUElFbmFibGVkIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX3Zpc2l0ZWRMaW5rVGFibGVJ
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IGUzN2E2NTljOTFiMzg5MmUyYjhmOTM4YzYyNmNkY2ZlODllNDE5MDQu
LjFiM2E2ODFmY2I1MWY0MTNlMjFiYTQyNTQ0MmI4YzBhMWZkNWUwYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MjUwLDYgKzI1MCw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpCiAKKyAgICBTdXNwZW5kKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAg
ICBSZXN1bWUoKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworCiAgICAgQ2xvc2UoKQogICAgIFRy
eUNsb3NlKCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5YTRmMzFiNGM2YzAwOTY3NWM3NjYz
MDk0NGY1NzU4NTA4ZmI4N2U1Li4wYzVhOWQzMDM1YjZmMGFkOTA2YTk3Y2FiNTg2Nzc4OTNhZGRi
NjNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTMzMworICAg
ICAgICA8cmRhcjovLzc3NDYyNTQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW06
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sOiBBZGRlZC4KKwogMjAyMS0wNS0xMSAgRGll
Z28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIGNvbXBv
c2l0aW5nL292ZXJmbG93L2R5bmFtaWMtY29tcG9zaXRlZC1zY3JvbGxpbmctc3RhdHVzLmh0bWwg
aXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzExN2IyNGQ5MjcyMmZlOTA2
YzdlZTRmZTkwYjljN2VjOTA3YzI5Li5iNzkzZDM3MmYzMWQ0NTk0MWVhNDIwNzU4ZGE2MWQ0YjY4
NmQxY2Q2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2Miw3IEBACiAJCTQ2
M0Y0NzIzMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGNDcyMjI1NUI0OUI2MDBEOUUw
Q0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovOyB9OwogCQk0NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3
RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZS5jcHAgKi87IH07CiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBCYWRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIw
IC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKKwkJNDY1
QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMyM0FF
MjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsKIAkJ
NDY1RTI4MDcyNTVCMkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcg
LyogR1BVUHJvY2Vzcy5tbSAqLzsgfTsKIAkJNDY2QzM4NDMyMTA2MzdERTAwNkE4OERFIC8qIG5v
dGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBu
b3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3QzU2NTMyMUI1RUQx
MzAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQg
LyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovOyB9OwpAQCAtMTY1MCw2ICsxNjUxLDcgQEAKIAkJ
CQkzRkNDNEZFODFFQzRFOENBMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxNTA4NkQxREEwNDBDNTAwNDRCRTlCIC8q
IHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwRUJC
Q0M2NjFGRkY5RTBDMDBGQTQyQUIgLyogcG9wLXVwLWNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJNDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3Vs
YXJseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE4MUVGNDY5NkIwMDgz
RkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUY0MUFCOUE5MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1c2gtc3RhdGUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTIwNjcsNiArMjA2OSw3IEBACiAJCTQ2M0Y0
NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlk
VGVybWluYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nl
c3NEaWRUZXJtaW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0
QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxp
dGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmls
ZTsgcGF0aCA9ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9z
dE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicG9z
dE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnktcmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MDczLDYgKzQwNzYsNyBAQAogCQkJCTlCN0Q3NDBFMUY4Mzc3RTYw
MDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3RTAwNzZF
MzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUwODZDMURB
MDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCisJCQkJNDY1QzIz
QUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovLAogCQkJ
CUY0MUFCOTk0MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICovLAog
CQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgKi8sCiAJ
CQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1v
dmVyZmxvdy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KaW5kZXggOTk2NjFiMzQwM2IwNGQx
NDFhMWM0MjgxNDViN2Q2ZmY0Nzk4ZGRjMi4uMGIwYjlhYzk2NzA1ODIxNmUwNDM5OGJlZjQ3NWVj
YjdlMWY5MWQ4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCkBAIC0yNiwxMSArMjYsMTMgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Zy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAKIFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24s
IENhbmNlbFdlYlByb2Nlc3NTdXNwZW5zaW9uKQogewpAQCAtODMsMyArODUsMTUxIEBAIFRFU1Qo
UHJvY2Vzc1N1c3BlbnNpb24sIERlc3Ryb3lXZWJQYWdlRHVyaW5nV2ViUHJvY2Vzc1N1c3BlbnNp
b24pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMSk7CiAgICAgRVhQRUNUX0VRKHBp
ZDEsIFt3ZWJWaWV3MyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KKworVEVTVChQcm9jZXNz
U3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBhZ2UpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKwor
ICAgIGF1dG8gdGVzdE1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOnRlc3RNZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKKyAgICBfX2Jsb2NrIHVuc2lnbmVkIHRpbWVyRmlyZWRDb3VudCA9
IDA7CisgICAgW3Rlc3RNZXNzYWdlSGFuZGxlciBhZGRNZXNzYWdlOkAidGltZXIgZmlyZWQiIHdp
dGhIYW5kbGVyOl57CisgICAgICAgICsrdGltZXJGaXJlZENvdW50OworICAgIH1dOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAInBvc3RNZXNzYWdlLXJlZ3VsYXJseSJdOworCisgICAgYXV0byBwaWQg
PSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShwaWQsIDAp
OworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBiZSBmaXJpbmcuCisgICAgYXV0byBsYXN0VGlt
ZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVD
b3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNw
aW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGlt
ZXJGaXJlQ291bnQpOworCisgICAgYXV0byB0ZXN0UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1d
OworICAgIGlkIHRlc3RJbnRlcmFjdGlvblN0YXRlID0gW3dlYlZpZXcgaW50ZXJhY3Rpb25TdGF0
ZV07CisgICAgYXV0byBvcmlnaW5hbFVSTCA9IFt3ZWJWaWV3IFVSTF07CisKKyAgICAvLyBTdXNw
ZW5kIHRoZSBwYWdlLgorICAgIFt3ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9P
TCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBubyBsb25nZXIgYmUgZmlyaW5nLgorICAgIGxhc3RU
aW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpzcGluUnVuTG9vcCgxMDApOworICAgIEVYUEVDVF9FUShsYXN0VGltZXJGaXJlQ291bnQsIHRp
bWVyRmlyZWRDb3VudCk7CisKKyAgICBhdXRvIGNoZWNrVGhyb3dzID0gW10oRnVuY3Rpb248dm9p
ZCgpPiYmIGYpIHsKKyAgICAgICAgQHRyeSB7CisgICAgICAgICAgICBmKCk7CisgICAgICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvLyBNb3N0IG9wZXJh
dGlvbnMgb24gV0tXZWJWaWV3IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBzdXNwZW5k
ZWQuCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OkAid2luZG93Lm5hbWUiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAg
ICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIl07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Ro
cm93cyhbJl0geyBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAImZvbyIgYmFzZVVSTDpuaWxdOyB9
KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06d2ViVmlldy5nZXQoKS5iYWNrRm9yd2FyZExpc3QuY3VycmVudEl0ZW1d
OyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVsb2Fk
XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJlbG9h
ZEZyb21PcmlnaW5dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dl
YlZpZXcgZ29CYWNrXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3
ZWJWaWV3IGdvRm9yd2FyZF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0g
eyBbd2ViVmlldyBzdG9wTG9hZGluZ107IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyBbd2ViVmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21wbGV0aW9u
SGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dl
YlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRBbGxNZWRp
YVBsYXliYWNrU3VzcGVuZGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAg
RVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVxdWVzdE1lZGlhUGxheWJh
Y2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKFdLTWVkaWFQbGF5YmFja1N0YXRlKSB7IH1d
OyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0Q2Ft
ZXJhQ2FwdHVyZVN0YXRlOldLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUgY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3
IHNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSBjb21w
bGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisjaWYgVEFSR0VUX09TX0lQSE9ORQorICAgIEVYUEVD
VF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJSW1hZ2UgKnNuYXBzaG90LCBOU0Vycm9y
ICplcnJvcikgeyB9XTsgfSkpOworI2Vsc2UKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlv
bkhhbmRsZXI6XihOU0ltYWdlICpzbmFwc2hvdCwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsK
KyNlbmRpZgorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNyZWF0
ZVBERldpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqZGF0
YSwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyBbd2ViVmlldyBjcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxl
cjpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1Rf
VFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVzID0gWUVTOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3Mo
WyZdIHsgd2ViVmlldy5nZXQoKS5jdXN0b21Vc2VyQWdlbnQgPSBAImZvbyI7IH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0xpbmtQcmV2
aWV3ID0gWUVTOyB9KSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c01hZ25pZmljYXRpb24gPSBZRVM7
IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLm1h
Z25pZmljYXRpb24gPSAxLjE7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0g
eyBbd2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOjEuMSBjZW50ZXJlZEF0UG9pbnQ6Q0dQb2ludE1h
a2UoMCwgMCldOyB9KSk7CisjZW5kaWYKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0g
eyB3ZWJWaWV3LmdldCgpLnBhZ2Vab29tID0gMS4xOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hl
Y2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZmluZFN0cmluZzpAImZvbyIgd2l0aENvbmZpZ3VyYXRp
b246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsgfV07IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzdGFydERvd25s
b2FkVXNpbmdSZXF1ZXN0OnRlc3RSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0g
eyB3ZWJWaWV3LmdldCgpLmludGVyYWN0aW9uU3RhdGUgPSB0ZXN0SW50ZXJhY3Rpb25TdGF0ZTsg
fSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkubWVk
aWFUeXBlID0gQCJ0ZXh0L2h0bWwiOyB9KSk7CisKKyAgICAvLyBTb21lIG9mIHRoZSBiYXNpYyBB
UEkgc3RpbGwgd29ya3MuCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0uYWJzb2x1
dGVTdHJpbmcsIG9yaWdpbmFsVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoW3dl
YlZpZXcgYmFja0ZvcndhcmRMaXN0XS5iYWNrSXRlbSwgbmlsKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoW3dlYlZpZXcgdGl0bGVdLCBAIiIpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBpc0xv
YWRpbmddKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgZXN0aW1hdGVkUHJvZ3Jlc3NdLCAxLjAp
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBjYW5Hb0JhY2tdKTsKKyAgICBFWFBFQ1RfRkFM
U0UoW3dlYlZpZXcgY2FuR29Gb3J3YXJkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGhh
c09ubHlTZWN1cmVDb250ZW50XSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHNlcnZlclRydXN0
XSwgbmlsKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgY2FtZXJhQ2FwdHVyZVN0YXRlXSwgV0tN
ZWRpYUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBtaWNyb3Bob25l
Q2FwdHVyZVN0YXRlXSwgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVDVF9XS19T
VFJFUShbd2ViVmlldyBjdXN0b21Vc2VyQWdlbnRdLCBAIiIpOworICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IGFsbG93c0xpbmtQcmV2aWV3XSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICBF
WFBFQ1RfRkFMU0UoW3dlYlZpZXcgYWxsb3dzTWFnbmlmaWNhdGlvbl0pOworICAgIEVYUEVDVF9F
UShbd2ViVmlldyBtYWduaWZpY2F0aW9uXSwgMS4wKTsKKyNlbmRpZgorICAgIEVYUEVDVF9FUShb
d2ViVmlldyBwYWdlWm9vbV0sIDEuMCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IG1l
ZGlhVHlwZV0sIEAiIik7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJW
aWV3IGludGVyYWN0aW9uU3RhdGVdOyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dz
KFsmXSB7IFt3ZWJWaWV3IHRoZW1lQ29sb3JdOyB9KSk7CisKKyAgICAvLyBSZXN1bWUgdGhlIHBh
Z2UuCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4oQk9PTCBz
dWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IFt3ZWJWaWV3IGFkZFRvVGVzdFdpbmRvd107CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxkIHN0
YXJ0IGZpcmluZyBhZ2Fpbi4KKyAgICBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291
bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAgLy8gTWFr
ZSBzdXJlIHdlIGRpZCBub3QgY3Jhc2guCisgICAgRVhQRUNUX0VRKHBpZCwgW3dlYlZpZXcgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CisKK1RFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlYWxs
b2NhdGVTdXNwZW5kZWRWaWV3KQoreworICAgIC8vIERlYWxsb2NhdGluZyBhIHN1c3BlbmRlZCBX
ZWJWaWV3IHNob3VsZCBub3QgdGhyb3cgb3IgY3Jhc2guCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAgICAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9PTCBz
dWNjZXNzKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgICAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2Ut
cmVndWxhcmx5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZTAwZDhjYmRi
ZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0SW50ZXJ2
YWwoKCkgPT4geworICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoJ3RpbWVyIGZpcmVkJyk7Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>
<flag name="commit-queue"
          id="449188"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428303</attachid>
            <date>2021-05-11 11:41:10 -0700</date>
            <delta_ts>2021-05-11 21:02:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210511114109.patch</filename>
            <type>text/plain</type>
            <size>132408</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2N2QxY2Q2YjA4YTAz
OTEwMzk4ODIzNDhjMWNiOTk5YjA4MjQ3Zi4uOWNhNzg3MDMwOWRjMjBkNWYzZGRiMGI4YmMyNTAw
MDU5NmIzODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
IHRvIEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hl
ZFBhZ2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rv
cmluZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBp
cyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRv
IG5vdCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdh
dGlvbikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0
cnlTdXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJ
ZkNhY2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGYWN0b3Igb3V0IGZpbmQgYm91bmNlIGxh
eWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDFmZmM2NGYyMTcwN2Q1M2NjOTQ2MzM0Yjg5YjU0NjAxNzkwN2E0NWUu
LmM2MzVhMzQxNWI4ZDhlYjMyMDc4ODZiMTYxMWZkODE2MzQyYjY0MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAwIEBACisyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAg
ICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXcuIFRo
aXMgc3VzcGVuZHMgdGhlIHBhZ2UgYXMgaWYgaXQgd2FzIGluCisgICAgICAgIHRoZSBiYWNrL2Zv
cndhcmQgY2FjaGUgYnV0IHRoZSBzdXNwZW5zaW9uIGhhcHBlbnMgaW4tcGxhY2UsIG5vIG5lZWQg
dG8gbmF2aWdhdGUuCisgICAgICAgIFRoZSBzdXNwZW5kZWQgcGFnZSBpcyBhbHNvIG5vdCBwYXJ0
IG9mIHRoZSBCYWNrL0ZvcndhcmQgY2FjaGUgc28gaXRzIGNhcCBvbiB0aGUKKyAgICAgICAgbnVt
YmVyIG9mIHN1c3BlbmRlZCBwYWdlcyBkb2VzIG5vdCBhcHBseSBoZXJlLgorCisgICAgICAgIE1v
c3Qgb2YgV0tXZWJWaWV3J3MgQVBJIC8gU1BJIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4g
Y2FsbGVkIG9uIGEgc3VzcGVuZGVkCisgICAgICAgIHZpZXcgKFRoZSBXS1BhZ2VSZWZBUEkgd2ls
bCBSRUxFQVNFX0FTU0VSVCgpKS4gU29tZSBvZiB0aGUgYmFzaWMgQVBJIHdpbGwgc3RheQorICAg
ICAgICBmdW5jdGlvbmFsIChVUkwsIGlzTG9hZGluZywgdGl0bGUsIC4uLikuIEl0IGlzIGFsc28g
c2FmZSB0byBkZWFsbG9jYXRlIC8gY2xvc2UKKyAgICAgICAgYSBzdXNwZW5kZWQgV0tXZWJWaWV3
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChjcmFz
aElmUGFnZUlzU3VzcGVuZGVkKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkwpOgorICAgICAgICAo
V0tQYWdlTG9hZFVSTFdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KToKKyAgICAgICAg
KFdLUGFnZUxvYWRVUkxXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFVSTFJlcXVl
c3QpOgorICAgICAgICAoV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEpOgorICAgICAg
ICAoV0tQYWdlTG9hZEZpbGUpOgorICAgICAgICAoV0tQYWdlTG9hZEZpbGVXaXRoVXNlckRhdGEp
OgorICAgICAgICAoV0tQYWdlTG9hZERhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZERhdGFXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQ
YWdlTG9hZEhUTUxTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdX
aXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAg
ICAgIChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXS1BhZ2VMb2FkV2ViQXJjaGl2ZURh
dGFXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlU3RvcExvYWRpbmcpOgorICAgICAgICAo
V0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tl
cnMpOgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1BhZ2VS
ZWxvYWRFeHBpcmVkT25seSk6CisgICAgICAgIChXS1BhZ2VUcnlDbG9zZSk6CisgICAgICAgIChX
S1BhZ2VDbG9zZSk6CisgICAgICAgIChXS1BhZ2VHb0ZvcndhcmQpOgorICAgICAgICAoV0tQYWdl
R29CYWNrKToKKyAgICAgICAgKFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAg
ICAgKFdLUGFnZVRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXS1BhZ2VVcGRh
dGVXZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoV0tQYWdlU2V0QXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50KToKKyAgICAgICAgKFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudCk6CisgICAgICAg
IChXS1BhZ2VTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdLUGFnZVRlcm1p
bmF0ZSk6CisgICAgICAgIChXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZSk6CisgICAgICAg
IChXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdLUGFnZVNldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VT
ZXRUZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlWm9vbUZhY3Rvcik6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKToKKyAgICAgICAgKFdLUGFn
ZVNldFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KToKKyAg
ICAgICAgKFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6ZSk6CisgICAgICAgIChXS1BhZ2VMaXN0ZW5G
b3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKFdLUGFnZVNldFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyk6CisgICAgICAgIChXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0TGVmdCk6CisgICAg
ICAgIChXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0UmlnaHQpOgorICAgICAgICAoV0tQYWdlU2V0UnVi
YmVyQmFuZHNBdFRvcCk6CisgICAgICAgIChXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0Qm90dG9tKToK
KyAgICAgICAgKFdLUGFnZVNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyk6CisgICAgICAg
IChXS1BhZ2VTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyk6CisgICAgICAgIChXS1Bh
Z2VTZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpOgorICAgICAgICAoV0tQYWdlU2V0UGFn
aW5hdGlvbk1vZGUpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29s
dW1ucyk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTGVuZ3RoKToKKyAgICAgICAgKFdLUGFnZVNl
dEdhcEJldHdlZW5QYWdlcyk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdpbmF0aW9uTGluZUdyaWRF
bmFibGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdLUGFnZUNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEpOgorICAgICAgICAo
V0tQYWdlRmluZFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV0tQYWdlR2V0SW1hZ2VGb3JGaW5k
TWF0Y2gpOgorICAgICAgICAoV0tQYWdlU2VsZWN0RmluZE1hdGNoKToKKyAgICAgICAgKFdLUGFn
ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV0tQYWdlSGlkZUZpbmRVSSk6CisgICAgICAgIChXS1Bh
Z2VDb3VudFN0cmluZ01hdGNoZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlU3RhdGVDbGllbnQpOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKToKKyAgICAgICAg
KFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdLUGFn
ZUdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcp
OgorICAgICAgICAoV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlKToKKyAgICAgICAgKFdLUGFnZUdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV0tQYWdlR2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKToK
KyAgICAgICAgKFdLUGFnZUZvcmNlUmVwYWludCk6CisgICAgICAgIChXS1BhZ2VWYWxpZGF0ZUNv
bW1hbmQpOgorICAgICAgICAoV0tQYWdlRXhlY3V0ZUNvbW1hbmQpOgorICAgICAgICAoV0tQYWdl
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRHJhd1BhZ2VzVG9QREYp
OgorICAgICAgICAoV0tQYWdlQmVnaW5QcmludGluZyk6CisgICAgICAgIChXS1BhZ2VFbmRQcmlu
dGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKToKKyAgICAg
ICAgKFdLUGFnZVNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24pOgorICAgICAgICAoV0tQYWdlU2V0
TWVkaWFWb2x1bWUpOgorICAgICAgICAoV0tQYWdlU2V0TXV0ZWQpOgorICAgICAgICAoV0tQYWdl
U2V0TWVkaWFDYXB0dXJlRW5hYmxlZCk6CisgICAgICAgIChXS1BhZ2VEaWRBbGxvd1BvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdLUGFnZUNsZWFyVXNlck1lZGlhU3RhdGUpOgorICAgICAgICAoV0tQ
YWdlRGlkRGVueVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLUGFnZVNldE1heVN0YXJ0TWVkaWFX
aGVuSW5XaW5kb3cpOgorICAgICAgICAoV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKToKKyAg
ICAgICAgKFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcik6CisgICAgICAgIChXS1BhZ2VT
ZXRBZGRzVmlzaXRlZExpbmtzKToKKyAgICAgICAgKFdLUGFnZUNsZWFyV2hlZWxFdmVudFRlc3RN
b25pdG9yKToKKyAgICAgICAgKFdLUGFnZUNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUp
OgorICAgICAgICAoV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOgorICAgICAg
ICAoV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKToKKyAgICAgICAgKFdLUGFnZUR1bXBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXS1BhZ2VDbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50KToKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdL
UGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KToKKyAgICAg
ICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5T
aWduYXR1cmVVUkxGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyk6CisgICAgICAgIChXS1Bh
Z2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAg
ICAgIChXS1BhZ2VTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2Fk
ZWRTdWJyZXNvdXJjZURvbWFpbnMpOgorICAgICAgICAoV0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNv
dXJjZURvbWFpbnMpOgorICAgICAgICAoV0tQYWdlU2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVs
YXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0
ZUZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBsb2FkRmlsZVVSTDphbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21SZXN1bWVE
YXRhOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb0JhY2tdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGdvRm9yd2FyZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2Fk
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBzdG9wTG9hZGluZ10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OmFyZ3VtZW50czpp
bkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRBbGxNZWRpYVBsYXliYWNr
U3VzcGVuZGVkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVx
dWVzdE1lZGlhUGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRDYW1lcmFDYXB0dXJlU3RhdGU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFz
QXN5bmNGdW5jdGlvbjp3aXRoU291cmNlVVJMOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVy
ZTppbkZyYW1lOmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1
cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q3VzdG9tVXNlckFnZW50Ol0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzTGlua1ByZXZpZXc6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRQYWdlWm9vbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGZpbmRTdHJpbmc6
d2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBzZXRNZWRpYVR5cGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRJbnRlcmFjdGlv
blN0YXRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzTWFnbmlmaWNhdGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246Y2VudGVyZWRBdFBvaW50
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0TWFnbmlmaWNhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgY3JlYXRlV2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkU2ltdWxhdGVkUmVxdWVzdDpy
ZXNwb25zZTpyZXNwb25zZURhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkU2ltdWxh
dGVkUmVxdWVzdDp3aXRoUmVzcG9uc2U6cmVzcG9uc2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9uc2VIVE1MU3RyaW5nOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlSFRNTFN0cmlu
ZzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRGaWxlUmVxdWVzdDphbGxvd2luZ1JlYWRB
Y2Nlc3NUb1VSTDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90b2dnbGVTdHJpa2VUaHJvdWdo
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luY3JlYXNlTGlzdExldmVsOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2RlY3JlYXNlTGlzdExldmVsOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2NoYW5nZUxpc3RUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRW5h
YmxlQnJvd3NlckV4dGVuc2lvbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRGlzYWJs
ZUJyb3dzZXJFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEVkaXRhYmxl
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlwdWxhdGlv
bnNXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOmNvbXBsZXRpb246XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXJdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF90b2dnbGVQaWN0dXJlSW5QaWN0dXJlXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zdG9wTWVkaWFDYXB0dXJlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3Rv
cEFsbE1lZGlhUGxheWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kQWxsTWVk
aWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlhUGxheWJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYWRkQXBwSGlnaGxpZ2h0XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6YmFzZVVSTDpmb3JVbnJlYWNoYWJsZVVSTDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNv
ZGluZ05hbWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2Fk
UmVxdWVzdDpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2xvYWRSZXF1ZXN0OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXNdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9yZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXNdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kUGFnZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVQYWdlOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxv
YWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2Fk
RXhwaXJlZE9ubHldKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nl
c3NBbmRSZXNldFN0YXRlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVTZXNzaW9uU3RhdGU6YW5kTmF2aWdhdGU6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfY2xvc2VdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90cnlD
bG9zZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5h
bWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpvcHRp
b25zOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0YWNobWVu
dFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2VXaXRoQWxwaGE6YmV0YTpnYW1tYTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRs
ZTp3YXJuaW5nOmRldGFpbHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWls
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJy
b3dzaW5nV2FybmluZ1dpdGhVUkw6dGl0bGU6d2FybmluZzpkZXRhaWxzV2l0aExpbmtzOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lzSklURW5hYmxlZDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1
cmU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2FsbEFzeW5j
SmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6aW5GcmFt
ZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6d2l0aFNvdXJjZVVSTDppbkZyYW1lOmluQ29udGVudFdv
cmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVdl
YnBhZ2VQcmVmZXJlbmNlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ub3RpZnlVc2VyU2Ny
aXB0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWRO
b3RpZmljYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRBbGxvd3NSZW1vdGVJbnNw
ZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFJlbW90ZUluc3BlY3Rpb25OYW1l
T3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWRkc1Zpc2l0ZWRMaW5rczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFdlYkFyY2hpdmVEYXRhV2l0
aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRz
QXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
Z2V0Q29udGVudHNPZkFsbEZyYW1lc0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9u
TWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c2V0UGFnaW5hdGlvbk1vZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnaW5hdGlv
bkJlaGF2ZXNMaWtlQ29sdW1uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdlTGVu
Z3RoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEdhcEJldHdlZW5QYWdlczpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldFRleHRab29tRmFjdG9yOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldFBhZ2Vab29tRmFjdG9yOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvdW50
U3RyaW5nTWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9o
aWRlRmluZFVJXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2F2ZUJhY2tGb3J3YXJkU25hcHNo
b3RGb3JJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyU2VydmljZVdvcmtlckVu
dGl0bGVtZW50T3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcHJlY29ubmVjdFRv
U2VydmVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENhblVzZUNyZWRlbnRpYWxTdG9y
YWdlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldExheW91dE1vZGU6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0Rml4ZWRMYXlvdXRTaXplOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXRWaWV3U2NhbGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldFByb2Nlc3NEaXNwbGF5
TmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRN
aW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGg6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZ3Jh
bnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0
U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3NldE1lZGlhQ2FwdHVyZUVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0UGFnZU11dGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbW92ZURh
dGFEZXRlY3RlZExpbmtzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlV2l0aG91dFdhaXRpbmdGb3JQYWludGluZzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5k
bGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVB
ZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN1bWUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDUtMTEgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBFeHRlbmQg
YWNjZXNzIHRvICdjb20uYXBwbGUucHJpbnQubm9ybWFsaXplcmQnIHdoZW4gY2FudmFzIGRyYXdp
bmcgaXMgZG9uZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA1MWQ4NTQ3YjY4ZDQ3MjhhOWM1YTQ0MzQxZmM0ODM3M2ExMTNhOThjLi42MTVjZmI4ZjBjOTRj
MmIxNGYwOTUzZGNiYzA4ZjRhNmRhZjdlZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwOCw2
ICs2MDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGlz
dG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1l
LmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0b3J5L0Nh
Y2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9BdXRvY2Fw
aXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcApp
bmRleCAyN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNhZWNhMTIy
MmY4ZTk0Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRpYyB2b2lk
IGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAgICBmaXJl
UGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0ZvcndhcmRD
YWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVuZFBhZ2Uo
UGFnZSYgcGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAgICBpZiAo
aXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1haW5GcmFt
ZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5tYWluRnJh
bWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYgKCFjYW5D
YWNoZSgqcGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VTdXNwZW5z
aW9uID09IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0
eVBhZ2UoKSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2
ZXIgZ28gaW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cGFnZS5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFn
ZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAgc2V0QmFj
a0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFja0Zvcndh
cmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpB
Ym91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBtYWluIGZy
YW1lLCBkZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUpLiBXZSBk
byB0aGlzIGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFjay9mb3J3
YXJkIGNhY2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9jdXMgZXZl
bnRzLgotICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUoKSkKLSAg
ICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLT5tYWlu
RnJhbWUoKSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkp
CisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdlLm1h
aW5GcmFtZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFsbCBmcmFt
ZXMuCi0gICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJhbWUoKSk7
CisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgpKTsKIAot
ICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0cm95UmVu
ZGVyVHJlZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRzIGFnYWlu
IGJlZm9yZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0ZXIgZmly
aW5nIHRoZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkgaGF2ZSBz
dGFydGVkIHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0gICAgcGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICBw
YWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFmdGVyIGZp
cmluZyB0aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAgIC8vIGNv
dWxkIGhhdmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2Fj
aGluZy4KLSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNrRm9yd2Fy
ZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3JjZVN1c3Bl
bnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9yd2FyZENh
Y2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZSgq
cGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRD
YWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisgICAgLy8g
TWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgorICAg
IFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29w
ZTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKworYm9vbCBC
YWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSog
cGFnZSkKK3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1c3BlbnNp
b246Ok5vKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBp
biB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVh
ZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1h
a2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdl
KFdURk1vdmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBy
dW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CkBA
IC00ODEsNiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUo
SGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZShQ
YWdlJiBwYWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJCYWNrRm9y
d2FyZENhY2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVuZFBhZ2Uo
cGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVk
UGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFn
ZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJkN2YxZDJj
MzlkNDc1MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgxZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQp
OyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYg
bWF4U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhp
c3RvcnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwpA
QCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2FjaGVQYWdl
Q29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3JjZVN1c3Bl
bnNpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdl
PiB0cnlTdXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lkIHBydW5l
KFBydW5pbmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4
ODVkMjUuLjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENhY2hlZFBh
Z2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQ
YWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA2M2FmMDVjZGZhODA0YzU4MDYwNDg3ZjBkY2IwMTdi
NTllMGVkMDI1Li4zNjc3NzE5ZjhhYmI3MzY3NTUyNjgwMDNhYjMxYjdlY2Y5ODUzZjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE0Myw2ICsxNDMsMTQg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4g
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQg
Y3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBXVEZMb2dB
bHdheXMoIkVycm9yOiBBdHRlbXB0IHRvIGNhbGwgV0tQYWdlUmVmIEFQSS9TUEkgb24gYSBzdXNw
ZW5kZWQgcGFnZSwgdGhpcyBpcyBhIGNsaWVudCBidWcuIik7CisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKCFwYWdlUmVmIHx8ICF0b0ltcGwocGFnZVJlZiktPmlzU3VzcGVuZGVkKCks
ICJZb3UgY2Fubm90IGNhbGwgdGhpcyBBUEkvU1BJIG9uIGEgc3VzcGVuZGVkIHBhZ2UiKTsKK30K
KworI2RlZmluZSBDUkFTSF9JRl9TVVNQRU5ERUQgY3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChwYWdl
UmVmKQorCiBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShX
ZWJQYWdlUHJveHk6OkFQSVR5cGUpOwpAQCAtMTY1LDQ5ICsxNzMsNTggQEAgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYp
CiAKIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRS
ZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSkpOwogfQogCiB2b2lkIFdLUGFn
ZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tVUkxSZWYgVVJMUmVmLCBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVS
THMgPyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyA6
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93Owog
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhV
UkxSZWYpKSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZvaWQgV0tQYWdl
TG9hZFVSTFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYp
KSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRVUkxSZXF1ZXN0KFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdFJlZikKIHsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byByZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJs
UmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9h
ZFJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2Fk
VVJMUmVxdWVzdFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVm
IHVybFJlcXVlc3RSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgYXV0byByZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJsUmVxdWVzdFJl
ZiktPnJlc291cmNlUmVxdWVzdCgpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3Qo
V1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdywgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQg
V0tQYWdlTG9hZEZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIGZpbGVVUkwsIFdLVVJM
UmVmIHJlc291cmNlRGlyZWN0b3J5VVJMKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmxvYWRGaWxlKHRvV1RGU3RyaW5nKGZpbGVVUkwpLCB0b1dURlN0
cmluZyhyZXNvdXJjZURpcmVjdG9yeVVSTCkpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlV2l0
aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJlZiBy
ZXNvdXJjZURpcmVjdG9yeVVSTCwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRGaWxlKHRvV1RGU3RyaW5n
KGZpbGVVUkwpLCB0b1dURlN0cmluZyhyZXNvdXJjZURpcmVjdG9yeVVSTCksIHRvSW1wbCh1c2Vy
RGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWREYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVu
Y29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJl
ZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5n
UmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWREYXRh
V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJp
bmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNl
VVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVm
ZXJlbmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdS
ZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAK
QEAgLTIzMyw1MiArMjUwLDYyIEBAIHN0YXRpYyB2b2lkIGxvYWRTdHJpbmcoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY29uc3QgU3RyaW5nJiBtCiAKIHZvaWQgV0tQ
YWdlTG9hZEhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJp
bmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIGh0bWxTdHJpbmdS
ZWYsIGJhc2VVUkxSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5n
V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVm
LCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwg
InRleHQvaHRtbCJfcywgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHVzZXJEYXRhUmVmKTsKIH0K
IAogdm9pZCBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYg
dW5yZWFjaGFibGVVUkxSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFn
ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIGh0bWxTdHJpbmdS
ZWYsIGJhc2VVUkxSZWYsIHVucmVhY2hhYmxlVVJMUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxS
ZWYgdW5yZWFjaGFibGVVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgU3RyaW5nIHN0cmluZyA9IHRvV1RGU3RyaW5nKGh0bWxTdHJp
bmdSZWYpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUwoZGF0YUZyb20o
c3RyaW5nKSwgZW5jb2RpbmdPZihzdHJpbmcpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGJhc2VV
UkxSZWYpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZikpLCB0b0lt
cGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNl
ckRhdGEocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRl
eHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBhYm91dEJsYW5rVVJMKCkuc3RyaW5nKCksIHVz
ZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJjaGl2ZURhdGEodG9JbXBs
KHdlYkFyY2hpdmVEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRh
V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJjaGl2ZURhdGEodG9JbXBsKHdlYkFyY2hpdmVE
YXRhUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlU3RvcExvYWRp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c3RvcExvYWRpbmcoKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWQoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKGxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdp
dGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9yKSkKQEAgLTI5MCwyMSArMzE3LDI1IEBAIHZvaWQg
V0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhv
dXRDb250ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlv
bjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vycyk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkRnJvbU9y
aWdpbihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2lu
KTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRFeHBpcmVkT25seShXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQo
V2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5
Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPnRyeUNsb3NlKCk7CiB9CiAKQEAgLTMyMCw2ICszNTEs
NyBAQCBib29sIFdLUGFnZUlzQ2xvc2VkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFn
ZUdvRm9yd2FyZChXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nb0ZvcndhcmQoKTsKIH0KIApAQCAtMzMwLDYgKzM2Miw3
IEBAIGJvb2wgV0tQYWdlQ2FuR29Gb3J3YXJkKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdL
UGFnZUdvQmFjayhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgYXV0byYgcGFnZSA9ICp0b0ltcGwocGFnZVJlZik7CiAgICAgaWYgKHBhZ2UucGFnZUNs
aWVudCgpLmhhc1NhZmVCcm93c2luZ1dhcm5pbmcoKSkgewogICAgICAgICBXS1BhZ2VSZWxvYWQo
cGFnZVJlZik7CkBAIC0zNDUsMTEgKzM3OCwxMyBAQCBib29sIFdLUGFnZUNhbkdvQmFjayhXS1Bh
Z2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Ub0JhY2tGb3J3YXJk
SXRlbSgqdG9JbXBsKGl0ZW1SZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VUcnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKQEAg
LTM2NSw2ICs0MDAsNyBAQCBib29sIFdLUGFnZVdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZl
bnRzKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVVwZGF0ZVdlYnNpdGVQb2xpY2ll
cyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBvbGljaWVz
UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X01FU1NBR0UoIXRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCks
ICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlIGlzIG9ubHkgc3VwcG9y
dGVkIGR1cmluZyBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMoKS4iKTsKICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYp
LT51c2VyQ29udGVudENvbnRyb2xsZXIoKSwgIlNldHRpbmcgV2Vic2l0ZVBvbGljaWVzLnVzZXJD
b250ZW50Q29udHJvbGxlciBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlV2l0aFBvbGljaWVzKCkuIik7CiAgICAgYXV0byBkYXRhID0gdG9JbXBsKHdlYnNp
dGVQb2xpY2llc1JlZiktPmRhdGEoKTsKQEAgLTQyMyw2ICs0NTksNyBAQCBXS1N0cmluZ1JlZiBX
S1BhZ2VDb3B5QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmKQog
CiB2b2lkIFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25OYW1lUmVmKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCh0b1dURlN0cmluZyhhcHBsaWNhdGlvbk5hbWVSZWYpKTsKIH0KIApAQCAtNDMzLDYgKzQ3
MCw3IEBAIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlDdXN0b21Vc2VyQWdlbnQoV0tQYWdlUmVmIHBh
Z2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiB1c2VyQWdlbnRSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9tVXNlckFnZW50KHRvV1RGU3RyaW5nKHVzZXJB
Z2VudFJlZikpOwogfQogCkBAIC00NTMsMTEgKzQ5MSwxMyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VD
b3B5Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBlbmNvZGluZ05hbWVSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSh0b1dURlN0cmluZyhlbmNvZGlu
Z05hbWVSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VUZXJtaW5hdGUoV0tQYWdlUmVmIHBhZ2VSZWYp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHBy
b3RlY3RlZFByb2Nlc3NQcm94eSh0b0ltcGwocGFnZVJlZiktPnByb2Nlc3MoKSk7CiAgICAgcHJv
dGVjdGVkUHJvY2Vzc1Byb3h5LT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CiB9CkBAIC01MTgsMTEgKzU1OCwxMyBAQCBzdGF0
aWMgdm9pZCByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBl
UmVmIHNlc3Npb25TdGF0ZVJlZgogCiB2b2lkIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYgc2Vzc2lvblN0YXRlUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShwYWdlUmVmLCBz
ZXNzaW9uU3RhdGVSZWYsIHRydWUpOwogfQogCiB2b2lkIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lv
blN0YXRlV2l0aG91dE5hdmlnYXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNz
aW9uU3RhdGVSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHJlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlKHBhZ2VSZWYsIHNlc3Npb25TdGF0ZVJlZiwgZmFsc2UpOwogfQogCkBAIC01
MzgsNiArNTgwLDcgQEAgZG91YmxlIFdLUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS1BhZ2VS
ZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBjdXN0b21TY2FsZUZhY3RvcikKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDdXN0b21EZXZpY2VTY2FsZUZh
Y3RvcihjdXN0b21TY2FsZUZhY3Rvcik7CiB9CiAKQEAgLTU0OCw2ICs1OTEsNyBAQCBib29sIFdL
UGFnZVN1cHBvcnRzVGV4dFpvb20oV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
VGV4dFpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSB6b29tRmFjdG9yKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFRleHRab29t
RmFjdG9yKHpvb21GYWN0b3IpOwogfQogCkBAIC01NTgsMTYgKzYwMiwxOSBAQCBkb3VibGUgV0tQ
YWdlR2V0UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSB6b29tRmFjdG9yKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2Vab29t
RmFjdG9yKHpvb21GYWN0b3IpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRl
eHRab29tRmFjdG9yKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMocGFnZVpvb21GYWN0b3IsIHRleHRab29t
RmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJl
ZiwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9yaWdpbikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZVBhZ2Uoc2NhbGUsIHRvSW50UG9pbnQob3Jp
Z2luKSk7CiB9CiAKQEAgLTU3OCwxMSArNjI1LDEzIEBAIGRvdWJsZSBXS1BhZ2VHZXRTY2FsZUZh
Y3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChX
S1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBmaXhlZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVc2VGaXhlZExheW91dChmaXhlZCk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0Rml4ZWRMYXlvdXRTaXplKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1NpemUgc2l6
ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRG
aXhlZExheW91dFNpemUodG9JbnRTaXplKHNpemUpKTsKIH0KIApAQCAtNTk4LDYgKzY0Nyw3IEBA
IFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNpemUoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tMYXlv
dXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh0b0xheW91dE1pbGVz
dG9uZXMobWlsZXN0b25lcykpOwogfQogCkBAIC02MTMsNiArNjYzLDcgQEAgYm9vbCBXS1BhZ2VI
YXNWZXJ0aWNhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRT
dXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgc3VwcHJl
c3NBbmltYXRpb25zKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMp
OwogfQogCkBAIC02NDgsNiArNjk5LDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0TGVmdChX
S1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0TGVmdChXS1Bh
Z2VSZWYgcGFnZVJlZiwgYm9vbCBydWJiZXJCYW5kc0F0TGVmdCkKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0TGVmdChydWJi
ZXJCYW5kc0F0TGVmdCk7CiB9CiAKQEAgLTY1OCw2ICs3MTAsNyBAQCBib29sIFdLUGFnZVJ1YmJl
ckJhbmRzQXRSaWdodChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJC
YW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdFJpZ2h0KQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFJ1YmJl
ckJhbmRzQXRSaWdodChydWJiZXJCYW5kc0F0UmlnaHQpOwogfQogCkBAIC02NjgsNiArNzIxLDcg
QEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0VG9wKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lk
IFdLUGFnZVNldFJ1YmJlckJhbmRzQXRUb3AoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVy
QmFuZHNBdFRvcCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRSdWJiZXJCYW5kc0F0VG9wKHJ1YmJlckJhbmRzQXRUb3ApOwogfQogCkBAIC02Nzgs
NiArNzMyLDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0Qm90dG9tKFdLUGFnZVJlZiBwYWdl
UmVmKQogCiB2b2lkIFdLUGFnZVNldFJ1YmJlckJhbmRzQXRCb3R0b20oV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgcnViYmVyQmFuZHNBdEJvdHRvbSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0Qm90dG9tKHJ1YmJlckJhbmRz
QXRCb3R0b20pOwogfQogCkBAIC02ODgsNiArNzQzLDcgQEAgYm9vbCBXS1BhZ2VWZXJ0aWNhbFJ1
YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0
RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGVuYWJs
ZVZlcnRpY2FsUnViYmVyQmFuZGluZykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVy
dGljYWxSdWJiZXJCYW5kaW5nKTsKIH0KIApAQCAtNjk4LDExICs3NTQsMTMgQEAgYm9vbCBXS1Bh
Z2VIb3Jpem9udGFsUnViYmVyQmFuZGluZ0lzRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhXS1BhZ2VSZWYgcGFn
ZVJlZiwgYm9vbCBlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRFbmFibGVIb3Jpem9udGFsUnVi
YmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyk7CiB9CiAKIHZvaWQgV0tQ
YWdlU2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKFdLUGFnZVJlZiBwYWdlUmVmLCBib29s
IGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFj
a2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKTsKIH0KIApAQCAtNzEzLDYgKzc3MSw3IEBAIGJvb2wg
V0tQYWdlQmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2
b2lkIFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2luYXRp
b25Nb2RlIHBhZ2luYXRpb25Nb2RlKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBX
ZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9k
ZSkgewogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKQEAgLTc1Nyw2ICs4
MTYsNyBAQCBXS1BhZ2luYXRpb25Nb2RlIFdLUGFnZUdldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMo
V0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2luYXRpb25CZWhhdmVz
TGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0KIApAQCAtNzY3LDYgKzgyNyw3IEBA
IGJvb2wgV0tQYWdlR2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdlTGVuZ3RoKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3Vi
bGUgcGFnZUxlbmd0aCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpOwogfQogCkBAIC03NzcsNiArODM4LDcg
QEAgZG91YmxlIFdLUGFnZUdldFBhZ2VMZW5ndGgoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlU2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgZ2FwKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEdhcEJl
dHdlZW5QYWdlcyhnYXApOwogfQogCkBAIC03ODcsNiArODQ5LDcgQEAgZG91YmxlIFdLUGFnZUdl
dEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGxpbmVHcmlkRW5h
YmxlZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCk7CiB9CiAKQEAgLTgx
Nyw0NiArODgwLDU1IEBAIGJvb2wgV0tQYWdlSXNDb250ZW50RWRpdGFibGUoV0tQYWdlUmVmIHBh
Z2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgbmV3VmFsdWUpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9u
KG5ld1ZhbHVlKTsKIH0KIAogdm9pZCBXS1BhZ2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVh
KFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXR1
cm4gdG9JbXBsKHBhZ2VSZWYpLT5jZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCk7CiB9CiAK
IHZvaWQgV0tQYWdlRmluZFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5n
UmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZpbmRT
dHJpbmdNYXRjaGVzKHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSwgdG9GaW5kT3B0aW9ucyhvcHRp
b25zKSwgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0SW1hZ2VGb3JGaW5kTWF0
Y2goV0tQYWdlUmVmIHBhZ2VSZWYsIGludDMyX3QgbWF0Y2hJbmRleCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRJbWFnZUZvckZpbmRNYXRjaCht
YXRjaEluZGV4KTsKIH0KIAogdm9pZCBXS1BhZ2VTZWxlY3RGaW5kTWF0Y2goV0tQYWdlUmVmIHBh
Z2VSZWYsIGludDMyX3QgbWF0Y2hJbmRleCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCk7CiB9CiAKIHZv
aWQgV0tQYWdlRmluZFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5n
LCBXS0ZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+ZmluZFN0cmluZyh0b0lt
cGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291
bnQpOwogfQogCiB2b2lkIFdLUGFnZUhpZGVGaW5kVUkoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+aGlkZUZpbmRVSSgp
OwogfQogCiB2b2lkIFdLUGFnZUNvdW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgc3RyaW5nLCBXS0ZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVm
KS0+Y291bnRTdHJpbmdNYXRjaGVzKHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSwgdG9GaW5kT3B0
aW9ucyhvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUNv
bnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVu
dUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+LCBwdWJsaWMg
QVBJOjpDb250ZXh0TWVudUNsaWVudCB7CiAgICAgcHVibGljOgpAQCAtOTczLDYgKzEwNDUsNyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlRGlhZ25vcwogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIEZpbmRDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZENsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpGaW5kQ2xp
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEZpbmRDbGllbnQoY29uc3QgV0tQ
YWdlRmluZENsaWVudEJhc2UqIGNsaWVudCkKQEAgLTEwMTEsNiArMTA4NCw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRD
bGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2UqIHdrQ2xp
ZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2U+LCBw
dWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2Uq
IGNsaWVudCkKQEAgLTEwNTQsMTYgKzExMjgsMTkgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1h
dGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2wK
IAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQod2tDbGllbnQpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9y
bUNsaWVudChtYWtlVW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQg
V0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
TG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGNsYXNzIExvYWRlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlPiwgcHVibGljIEFQSTo6TG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiBj
bGllbnQpCkBAIC0xMjM0LDYgKzEzMTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgUG9saWN5Q2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50
PFdLUGFnZVBvbGljeUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpQb2xpY3lDbGllbnQgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUG9saWN5Q2xpZW50KGNvbnN0IFdLUGFnZVBvbGlj
eUNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTE0OTMsNiArMTU3MSw3IEBAIHZvaWQgV0tQYWdlUmVx
dWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtUmVzdWx0TGlzdGVuZXJDYWxsKFdLUGFnZVJlcXVlc3RT
dG9yYWdlQWNjCiAKIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICBjbGFzcyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VV
SUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBleHBsaWNpdCBVSUNsaWVudChjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIGNsaWVudCkKQEAg
LTIxMzgsNiArMjIxNyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKIHZvaWQgV0tQYWdl
U2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5h
dmlnYXRpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6Ok5hdmlnYXRpb25DbGllbnQgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgTmF2aWdhdGlvbkNsaWVudChjb25zdCBXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtMjUwMywxNiArMjU4MywxOCBAQCBwcml2
YXRlOgogICAgIH0KIH07CiAKLXZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV0tQYWdlU2V0UGFn
ZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKGNsaWVudCkKLSAgICAg
ICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0
ZUNsaWVudD4oY2xpZW50KSk7CisgICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRT
dGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOwogICAgIGVsc2UK
LSAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobnVsbHB0cik7
CisgICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxw
dHIpOwogfQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5K
YXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNj
cmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0s
IFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIGNhbGxiYWNrKHRvQVBJKHJlc3VsdC52YWx1ZSgp
LmdldCgpKSwgbnVsbHB0ciwgY29udGV4dCk7CkBAIC0yNTMxLDYgKzI2MTMsNyBAQCBzdGF0aWMg
dm9pZCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFzZShXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiByZXN1bHRWYQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9i
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIFdLUGFnZVJ1bkphdmFT
Y3JpcHRCbG9jayBibG9jaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHBhZ2VSZWYsIHNjcmlwdFJlZiwgQmxvY2tfY29weShi
bG9jayksIGNhbGxSdW5KYXZhU2NyaXB0QmxvY2tBbmRSZWxlYXNlKTsKIH0KICNlbmRpZgpAQCAt
MjU0NCwzMSArMjYyNywzNyBAQCBzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4gdG9TdHJpbmdDYWxsYmFjayh2b2lkKiBjb250ZXh0LCB2bwogCiB2b2lkIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lk
KiBjb250ZXh0LCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9u
IGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHRvU3RyaW5nQ2FsbGJhY2so
Y29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgdm9pZCogY29udGV4dCwgV0tQ
YWdlR2V0U291cmNlRm9yRnJhbWVGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwo
ZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNT
dHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIHRvU3RyaW5nQ2Fs
bGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRCeXRlY29kZVBy
b2ZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldEJ5dGVjb2Rl
UHJvZmlsZUZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPmdldEJ5dGVjb2RlUHJvZmlsZSh0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJp
bmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdL
UGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgewog
ICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7
CkBAIC0yNTc2LDYgKzI2NjUsNyBAQCB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZQogCiB2b2lkIFdL
UGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRh
dGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRl
eHQpOwpAQCAtMjU4OSw2ICsyNjc5LDcgQEAgdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxE
YXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb24KIAogdm9p
ZCBXS1BhZ2VGb3JjZVJlcGFpbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdL
UGFnZUZvcmNlUmVwYWludEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChbY29udGV4dCwgY2FsbGJh
Y2tdKCkgewogICAgICAgICBjYWxsYmFjayhudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKQEAg
LTI2MjYsNiArMjcxNyw3IEBAIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlTdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoV0tTdHJpbmdSZWYgYXBwbGljYXRpCiAKIHZvaWQgV0tQYWdl
VmFsaWRhdGVDb21tYW5kKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBjb21tYW5kLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2VWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayBjYWxsYmFjaykKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBjb21tYW5kTmFtZSA9IHRvSW1wbChj
b21tYW5kKS0+c3RyaW5nKCk7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT52YWxpZGF0ZUNvbW1hbmQo
Y29tbWFuZE5hbWUsIFtjb250ZXh0LCBjYWxsYmFjaywgY29tbWFuZE5hbWVdKGJvb2wgaXNFbmFi
bGVkLCBpbnQzMl90IHN0YXRlKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5n
OjpjcmVhdGUoY29tbWFuZE5hbWUpLnB0cigpKSwgaXNFbmFibGVkLCBzdGF0ZSwgbnVsbHB0ciwg
Y29udGV4dCk7CkBAIC0yNjM0LDYgKzI3MjYsNyBAQCB2b2lkIFdLUGFnZVZhbGlkYXRlQ29tbWFu
ZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4dAog
CiB2b2lkIFdLUGFnZUV4ZWN1dGVDb21tYW5kKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBjb21tYW5kKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmV4ZWN1dGVFZGl0Q29tbWFuZCh0b0ltcGwoY29tbWFuZCktPnN0cmluZygpKTsKIH0KIApA
QCAtMjY0Niw5ICsyNzM5LDEwIEBAIHN0YXRpYyBQcmludEluZm8gcHJpbnRJbmZvRnJvbVdLUHJp
bnRJbmZvKGNvbnN0IFdLUHJpbnRJbmZvJiBwcmludEluZm8pCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQordm9pZCBXS1Bh
Z2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGlu
Z0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJp
bnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBjYWxsYmFja10oY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpG
bG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBs
KGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBj
YWxsYmFja10oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNj
YWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFy
Z2luKSB7CiAgICAgICAgIFZlY3RvcjxXS1JlY3Q+IHdrUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgIHdrUmVjdHNbaV0gPSB0b0FQSShyZWN0c1tpXSk7CkBAIC0yNjU3LDIyICsyNzUxLDI1IEBA
IHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQg
V0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1Bh
Z2VEcmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdl
RHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJp
bnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VE
cmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwo
cGFnZSktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhwcmludEluZm8pLCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6
RGF0YSogZGF0YSkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5m
byhwcmludEluZm8pLCBmaXJzdCwgY291bnQsIFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0
YSogZGF0YSkgewogICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4
dCk7CiAgICAgfSk7CiB9CiAjZW5kaWYKIAotdm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8pCit2b2lk
IFdLUGFnZUJlZ2luUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLUHJpbnRJbmZvIHByaW50SW5mbykKIHsKLSAgICB0b0ltcGwocGFnZSktPmJlZ2luUHJpbnRp
bmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbykpOwor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmJlZ2luUHJpbnRp
bmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbykpOwog
fQogCi12b2lkIFdLUGFnZUVuZFByaW50aW5nKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VF
bmRQcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b0ltcGwocGFnZSktPmVuZFBy
aW50aW5nKCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+
ZW5kUHJpbnRpbmcoKTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRJc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNjgwLDkgKzI3NzcsMTAgQEAgYm9vbCBXS1BhZ2VHZXRJ
c0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIHRvSW1w
bChwYWdlKS0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
Q29udHJvbGxlZEJ5QXV0b21hdGlvbihXS1BhZ2VSZWYgcGFnZSwgYm9vbCBjb250cm9sbGVkKQor
dm9pZCBXS1BhZ2VTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBi
b29sIGNvbnRyb2xsZWQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRDb250cm9sbGVkQnlBdXRv
bWF0aW9uKGNvbnRyb2xsZWQpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCk7CiB9CiAKIGJv
b2wgV0tQYWdlR2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZSkKQEAgLTI2
OTUsMjMgKzI3OTMsMjYgQEAgYm9vbCBXS1BhZ2VHZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdL
UGFnZVJlZiBwYWdlKQogI2VuZGlmICAgIAogfQogCi12b2lkIFdLUGFnZVNldEFsbG93c1JlbW90
ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIGJvb2wgYWxsb3cpCit2b2lkIFdLUGFnZVNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgYWxsb3cpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IHRvSW1wbChwYWdlKS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihhbGxvdyk7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsKICNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBV
TlVTRURfUEFSQU0oYWxsb3cpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlU2V0TWVkaWFWb2x1
bWUoV0tQYWdlUmVmIHBhZ2UsIGZsb2F0IHZvbHVtZSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFWb2x1
bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIGZsb2F0IHZvbHVtZSkKIHsKLSAgICB0b0ltcGwocGFnZSkt
PnNldE1lZGlhVm9sdW1lKHZvbHVtZSk7ICAgIAorICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnNldE1lZGlhVm9sdW1lKHZvbHVtZSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFNdXRlZFN0YXRlIG11dGVkU3RhdGUp
Cit2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlUmVmLCBXS01lZGlhTXV0ZWRTdGF0
ZSBtdXRlZFN0YXRlKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVk
U3RhdGUgJiBrV0tNZWRpYUF1ZGlvTXV0ZWQpCkBAIC0yNzIxLDEyICsyODIyLDEzIEBAIHZvaWQg
V0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFNdXRlZFN0YXRlIG11dGVkU3Rh
dGUpCiAgICAgaWYgKG11dGVkU3RhdGUgJiBrV0tNZWRpYVNjcmVlbkNhcHR1cmVNdXRlZCkKICAg
ICAgICAgY29yZVN0YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpT
Y3JlZW5DYXB0dXJlSXNNdXRlZCk7CiAKLSAgICB0b0ltcGwocGFnZSktPnNldE11dGVkKGNvcmVT
dGF0ZSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNdXRlZChjb3JlU3RhdGUpOwogfQogCi12
b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgZW5h
YmxlZCkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJl
ZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0TWVkaWFDYXB0dXJlRW5h
YmxlZChlbmFibGVkKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRNZWRpYUNhcHR1cmVFbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUGFnZUdl
dE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNzM0LDMwICsyODM2LDMz
IEBAIGJvb2wgV0tQYWdlR2V0TWVkaWFDYXB0dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZSkKICAg
ICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5tZWRpYUNhcHR1cmVFbmFibGVkKCk7CiB9CiAKLXZvaWQg
V0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRGlk
QWxsb3dQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICB0b0ltcGwocGFnZSktPmRpZEFs
bG93UG9pbnRlckxvY2soKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZEFsbG93UG9pbnRlckxv
Y2soKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShw
YWdlUmVmKTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZUNsZWFyVXNlck1lZGlhU3RhdGUoV0tQ
YWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZUNsZWFyVXNlck1lZGlhU3RhdGUoV0tQYWdlUmVmIHBh
Z2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgdG9JbXBsKHBhZ2UpLT5jbGVhclVzZXJNZWRpYVN0YXRlKCk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5jbGVhclVzZXJNZWRpYVN0YXRlKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBX
S1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpZERl
bnlQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICB0b0ltcGwocGFnZSktPmRpZERlbnlQ
b2ludGVyTG9jaygpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlkRGVueVBvaW50ZXJMb2NrKCk7
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJl
Zik7CiAjZW5kaWYKIH0KIApAQCAtMjc5MCwxNiArMjg5NSwxOCBAQCBXS0ZyYW1lUmVmIFdLUGFn
ZUxvb2tVcEZyYW1lRnJvbUhhbmRsZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZUhhbmRsZVJl
ZiBoYW5kbAogCiB2b2lkIFdLUGFnZVNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coV0tQYWdl
UmVmIHBhZ2VSZWYsIGJvb2wgbWF5U3RhcnRNZWRpYSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1h
eVN0YXJ0TWVkaWEpOwogfQogCiAKLXZvaWQgV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdL
UGFnZVJlZiBwYWdlLCBXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtKQordm9pZCBXS1BhZ2VTZWxl
Y3RDb250ZXh0TWVudUl0ZW0oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLQ29udGV4dE1lbnVJdGVtUmVm
IGl0ZW0pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQotICAgIHRvSW1wbChwYWdlKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoKHRvSW1wbChp
dGVtKS0+ZGF0YSgpKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5jb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCgodG9JbXBsKGl0ZW0pLT5kYXRhKCkpKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0oaXRlbSk7
CiAjZW5kaWYKIH0KQEAgLTI4MjEsOCArMjkyOCw5IEBAIFdLU2Nyb2xsUGlubmluZ0JlaGF2aW9y
IFdLUGFnZUdldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1
cm4ga1dLU2Nyb2xsUGlubmluZ0JlaGF2aW9yRG9Ob3RQaW47CiB9CiAKLXZvaWQgV0tQYWdlU2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlLCBXS1Njcm9sbFBpbm5pbmdCZWhh
dmlvciBwaW5uaW5nKQordm9pZCBXS1BhZ2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIFNjcm9sbFBpbm5pbmdCZWhhdmlvciBjb3JlUGlubmluZyA9
IFNjcm9sbFBpbm5pbmdCZWhhdmlvcjo6RG9Ob3RQaW47CiAKICAgICBzd2l0Y2ggKHBpbm5pbmcp
IHsKQEAgLTI4MzksNyArMjk0Nyw3IEBAIHZvaWQgV0tQYWdlU2V0U2Nyb2xsUGlubmluZ0JlaGF2
aW9yKFdLUGFnZVJlZiBwYWdlLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICB0b0ltcGwocGFnZSktPnNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihjb3JlUGlubmluZyk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoY29yZVBpbm5pbmcpOwogfQogCiBib29sIFdLUGFn
ZUdldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2UpCkBAIC0yODQ3LDkgKzI5NTUsMTAg
QEAgYm9vbCBXS1BhZ2VHZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlKQogICAgIHJl
dHVybiB0b0ltcGwocGFnZSktPmFkZHNWaXNpdGVkTGlua3MoKTsKIH0KIAotdm9pZCBXS1BhZ2VT
ZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlLCBib29sIGFkZHNWaXNpdGVkTGlua3Mp
Cit2b2lkIFdLUGFnZVNldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wg
YWRkc1Zpc2l0ZWRMaW5rcykKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldEFkZHNWaXNpdGVkTGlu
a3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhhZGRzVmlzaXRlZExpbmtzKTsKIH0KIAog
Ym9vbCBXS1BhZ2VJc1BsYXlpbmdBdWRpbyhXS1BhZ2VSZWYgcGFnZSkKQEAgLTI4ODQsMjAgKzI5
OTMsMjMgQEAgV0tNZWRpYVN0YXRlIFdLUGFnZUdldE1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2Up
CiAKIHZvaWQgV0tQYWdlQ2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xl
YXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIH0KIAogdm9pZCBXS1BhZ2VDYWxsQWZ0ZXJOZXh0
UHJlc2VudGF0aW9uVXBkYXRlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VQb3N0UHJlc2VudGF0aW9uVXBkYXRlRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Y2FsbEFmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZShbY29udGV4dCwgY2FsbGJhY2tdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBjYWxsYmFjayhlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBj
b250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2Fs
ZUxpbWl0cyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykK
K3ZvaWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQotICAgIHRvSW1wbChwYWdlKS0+c2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoaWdub3Jlc1ZpZXdw
b3J0U2NhbGVMaW1pdHMpOwogI2VuZGlmCiB9CiAKQEAgLTI5MDcsOTMgKzMwMTksMTA1IEBAIFBy
b2Nlc3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSkKIH0KIAog
I2lmZGVmIF9fQkxPQ0tTX18KLXZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0QmxvY2sgYmxvY2spCit2
b2lkIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQ
YWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2NrKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgdG9JbXBsKHBh
Z2UpLT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFtibG9ja10oY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFtibG9ja10oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGJsb2NrKCk7CiAgICAg
fSk7CiAjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgVU5VU0VEX1BB
UkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBibG9jaygpOwogI2Vu
ZGlmIC8vIG5vdCBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiB9CiAjZW5kaWYKIAotdm9p
ZCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50RnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmR1
bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50KSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuaW1wbCgpKSwgY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9p
ZCBXS1BhZ2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS1Bh
Z2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkg
ewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lk
IFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIGJvb2wgdmFsdWUsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHZhbHVlLCBXS1BhZ2VTZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFsdWUsIFtjYWxs
YmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVy
Rm9yVGVzdGluZyh2YWx1ZSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAg
ICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VN
YXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpCit2b2lkIFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlTWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPm1hcmtB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhbY2Fs
bGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAg
ICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFn
ZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFdLUGFnZVJlZiBw
YWdlLCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNpbXVs
YXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1bmN0
aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxi
YWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQor
dm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwoVVJM
KCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkg
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwg
dG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYg
VVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0g
ICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRl
eHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VV
UkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJM
UmVmIHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLUGFnZVNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhk
ZXN0aW5hdGlvblVSTCkpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RG
U3RyaW5nKHNvdXJjZVVSTCkpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uVVJM
KSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNh
bGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1h
cmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
ZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPm1h
cmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0Nv
bnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1w
bChwYWdlUmVmKS0+bWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2Fs
bGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQQ01GcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB1bmxpbmth
YmxlVG9rZW4sIFdLU3RyaW5nUmVmIHNlY3JldFRva2VuLCBXS1N0cmluZ1JlZiBzaWduYXR1cmUs
IFdLU3RyaW5nUmVmIGtleUlELCBXS1BhZ2VTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQ
YWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwg
V0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHVubGlua2FibGVUb2tlbiksIHRvV1RGU3RyaW5n
KHNlY3JldFRva2VuKSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJlKSwgdG9XVEZTdHJpbmcoa2V5SUQp
LCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmcodG9XVEZTdHJpbmcodW5saW5rYWJsZVRva2VuKSwgdG9XVEZTdHJpbmcoc2VjcmV0VG9r
ZW4pLCB0b1dURlN0cmluZyhzaWduYXR1cmUpLCB0b1dURlN0cmluZyhrZXlJRCksIFtjYWxsYmFj
a0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4
dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKFdL
UGFnZVJlZiBwYWdlLCB1aW50NjRfdCBvcmllbnRhdGlvbikKK3ZvaWQgV0tQYWdlU2V0TW9ja0Nh
bWVyYU9yaWVudGF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB1aW50NjRfdCBvcmllbnRhdGlvbikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgdG9JbXBsKHBhZ2UpLT5zZXRPcmllbnRhdGlvbkZvck1lZGlh
Q2FwdHVyZShvcmllbnRhdGlvbik7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRPcmllbnRhdGlv
bkZvck1lZGlhQ2FwdHVyZShvcmllbnRhdGlvbik7CiAjZW5kaWYKIH0KIApAQCAtMzAwNiwzNiAr
MzEzMCw0MCBAQCBXS19FWFBPUlQgYm9vbCBXS1BhZ2VJc01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyRW5hYmxlZChXS1BhZ2VSZWYpCiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VMb2FkZWRT
dWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNl
RG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdL
UGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29u
dGV4dCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB0b0ltcGwocGFnZSktPmdldExvYWRlZFN1YnJlc291cmNlRG9t
YWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiYmIGRvbWFpbnMpIHsKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldExvYWRlZFN1YnJlc291cmNl
RG9tYWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYmIGRvbWFpbnMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFw
aURvbWFpbnMgPSBXVEY6Om1hcChkb21haW5zLCBbXShhdXRvJiBkb21haW4pIHsKICAgICAgICAg
ICAgIHJldHVybiBSZWZQdHI8QVBJOjpPYmplY3Q+KEFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGTW92
ZShkb21haW4uc3RyaW5nKCkpKSk7CiAgICAgICAgIH0pOwogICAgICAgICBjYWxsYmFjayh0b0FQ
SShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkucHRyKCkpLCBjYWxsYmFj
a0NvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAg
VU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIGNhbGxiYWNrKG51bGxwdHIsIGNhbGxiYWNrQ29u
dGV4dCk7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVhckxvYWRlZFN1YnJlc291cmNlRG9t
YWlucyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlQ2xlYXJMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5jbGVh
ckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2Up
OworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZVNl
dE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgZG91
YmxlIGRlbGF5KQordm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRl
c3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBkZWxheSkKIHsKLSAgICB0b0ltcGwocGFn
ZSktPnNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMoZGVsYXkpKTsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYUNhcHR1cmVS
ZXBvcnRpbmdEZWxheShTZWNvbmRzKGRlbGF5KSk7CiB9CiAKLXZvaWQgV0tQYWdlRGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdl
RGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKLSAgICB0b0ltcGwocGFnZSktPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rp
bmcoKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaXNw
YXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA2NTgyNDEzYWNhY2UxZDM1
M2JmN2Y3MWUyODBjMzRiOTEwZWE0YTY4Li4yZWU1Zjk1Y2MzN2RjYjhiYTczMjI0MWI1NjhiZTRj
MDkzMDk3MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTE5OSw2ICsxOTksOSBAQCBzdGF0aWMgY29uc3QgQk9PTCBkZWZhdWx0RmFz
dENsaWNraW5nRW5hYmxlZCA9IE5POwogc3RhdGljIGNvbnN0IHVpbnQzMl90IGZpcnN0U0RLVmVy
c2lvbldpdGhMaW5rUHJldmlld0VuYWJsZWRCeURlZmF1bHQgPSAweEEwMDAwOwogI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNkZWZpbmUgVEhST1dfSUZfU1VTUEVOREVEIGlmIChf
cGFnZSAmJiBfcGFnZS0+aXNTdXNwZW5kZWQoKSkgXAorICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IGlz
IHN1c3BlbmRlZCJdCisKIFJldGFpblB0cjxOU0Vycm9yPiBuc0Vycm9yRnJvbUV4Y2VwdGlvbkRl
dGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscykKIHsKICAgICBh
dXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKQEAgLTcxOCwxMSArNzIxLDEzIEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZERlbGVnYXRl
OihpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKIAogLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVlc3Qp
KTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93
aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbVVJMIGlzRmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3Qg
YSBmaWxlIFVSTCIsIFVSTF07CiAKQEAgLTczNCw2ICs3MzksNyBAQCAtIChXS05hdmlnYXRpb24g
Kilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJM
ICopcmVhZAogCiAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilz
dHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddOwogCiAgICAgcmV0dXJuIFtzZWxmIGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAIlVURi04IiBiYXNlVVJMOmJhc2VV
UkxdOwpAQCAtNzQxLDExICs3NDcsMTMgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEhUTUxTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogCiAtIChXS05h
dmlnYXRpb24gKilsb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilN
SU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0
ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpKTsKIH0KIAogLSAodm9pZClz
dGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byogZG93bmxvYWQpIHsKICAgICAgICAgaWYgKGRvd25sb2FkKQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOwpAQCAtNzU2LDYgKzc2NCw3IEBAIC0g
KHZvaWQpc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pCiAKIC0gKHZvaWQpcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1l
RGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rv
d25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10g
aW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOwogICAgIFt1bmFy
Y2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJh
aXNlRXhjZXB0aW9uXTsKICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZl
ciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25h
cnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBj
bGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNz
XSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKQEAgLTc4Miw2
ICs3OTEsNyBAQCAtICh2b2lkKXJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURhdGE6KE5TRGF0YSAq
KXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaQogCiAtIChXS05hdmlnYXRpb24gKiln
b1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CiB9CiAKQEAgLTg0MCw2ICs4NTAsNyBAQCAtIChC
T09MKWNhbkdvRm9yd2FyZAogCiAtIChXS05hdmlnYXRpb24gKilnb0JhY2sKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKHNlbGYuX3NhZmVCcm93c2luZ1dhcm5pbmcpCiAgICAg
ICAgIHJldHVybiBbc2VsZiByZWxvYWRdOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0Jh
Y2soKSk7CkBAIC04NDcsMTEgKzg1OCwxMyBAQCAtIChXS05hdmlnYXRpb24gKilnb0JhY2sKIAog
LSAoV0tOYXZpZ2F0aW9uICopZ29Gb3J3YXJkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0ZvcndhcmQoKSk7CiB9CiAKIC0gKFdLTmF2aWdh
dGlvbiAqKXJlbG9hZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChsaW5rZWRPbk9y
QWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhh
dmlvcikpCiAgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpOwpAQCAtODYxLDI2ICs4NzQsMzEgQEAgLSAoV0tOYXZpZ2F0aW9uICopcmVs
b2FkCiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpS
ZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAog
LSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNj
cmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOm5p
bCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOm5pbCBpbldv
cmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3Js
ZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBh
c0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9y
Y2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpY2FsbEFzeW5j
SmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFyZ3VtZW50czooTlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAq
KWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZh
U2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOllFUyB3aXRoU291cmNlVVJM
Om5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1l
OmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKIH0KIApAQCAtOTIwLDYgKzkzOCw3IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQXJn
dW1lbnQoaWQgYXJndW1lbnQpCiAKIC0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtOTM2LDYgKzk1NSw3IEBAIC0gKHZvaWQp
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpCiAKIC0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IF9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKICAgICAgICAgcmV0dXJuOwpA
QCAtOTQ2LDYgKzk2Niw3IEBAIC0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuCiAKIC0gKHZvaWQpc2V0
QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDooQk9PTClzdXNwZW5kZWQgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyID0gW10geyB9OwogCkBAIC05NzYsNiArOTk3LDcgQEAgc3RhdGljIFdLTWVkaWFQbGF5
YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3Rh
dGUgbWUKIAogLSAodm9pZClyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShXS01lZGlhUGxheWJhY2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDA2LDYgKzEwMjgsNyBAQCAtIChXS01lZGlhQ2FwdHVy
ZVN0YXRlKW1pY3JvcGhvbmVDYXB0dXJlU3RhdGUKIAogLSAodm9pZClzZXRNaWNyb3Bob25lQ2Fw
dHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
ciA9IFtdIHsgfTsKIApAQCAtMTAyNyw2ICsxMDUwLDcgQEAgLSAodm9pZClzZXRNaWNyb3Bob25l
Q2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVy
OigKIAogLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUp
c3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9OwogCkBAIC0xMDQ4LDYgKzEwNzIs
NyBAQCAtICh2b2lkKXNldENhbWVyYUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlz
dGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZAogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3Jp
cHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYXNB
c3luY0Z1bmN0aW9uIHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIHdpdGhBcmd1bWVu
dHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2Vz
dHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
aW5Xb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pOwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3Vt
ZW50c01hcDsKQEAgLTExMDksNiArMTEzNCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAK
IC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KENvY29hSW1hZ2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBjb25zdGV4cHIgYm9vbCBzbmFwc2hvdEZhaWxlZFRyYWNlVmFs
dWUgPSBmYWxzZTsKICAgICB0cmFjZVBvaW50KFRha2VTbmFwc2hvdFN0YXJ0KTsKIApAQCAtMTE4
Miw2ICsxMjA4LDcgQEAgLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3UKIAogLSAodm9pZClzZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgX2ltcGwtPnNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVz
KGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKTsKICNlbGlmIFBMQVRGT1JNKElP
U19GQU1JTFkpCkBAIC0xMjIwLDYgKzEyNDcsNyBAQCAtIChOU1N0cmluZyAqKWN1c3RvbVVzZXJB
Z2VudAogCiAtICh2b2lkKXNldEN1c3RvbVVzZXJBZ2VudDooTlNTdHJpbmcgKiljdXN0b21Vc2Vy
QWdlbnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEN1c3RvbVVz
ZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpOwogfQogCkBAIC0xMjM0LDYgKzEyNjIsNyBAQCAtIChC
T09MKWFsbG93c0xpbmtQcmV2aWV3CiAKIC0gKHZvaWQpc2V0QWxsb3dzTGlua1ByZXZpZXc6KEJP
T0wpYWxsb3dzTGlua1ByZXZpZXcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIF9pbXBsLT5zZXRBbGxvd3NMaW5rUHJldmlldyhhbGxvd3NMaW5rUHJl
dmlldyk7CiAgICAgcmV0dXJuOwpAQCAtMTI1NSw2ICsxMjg0LDcgQEAgLSAodm9pZClzZXRBbGxv
d3NMaW5rUHJldmlldzooQk9PTClhbGxvd3NMaW5rUHJldmlldwogCiAtICh2b2lkKXNldFBhZ2Va
b29tOihDR0Zsb2F0KXBhZ2Vab29tCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRQYWdlWm9vbUZhY3RvcihwYWdlWm9vbSk7CiB9CiAKQEAgLTEyNzksNiArMTMwOSw3
IEBAIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhX
S0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1CiAKIC0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3Vs
dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYg
KCFzdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW1tX
S0ZpbmRSZXN1bHQgYWxsb2NdIF9pbml0V2l0aE1hdGNoRm91bmQ6Tk9dKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEyOTYsNiArMTMyNyw3IEBAICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVt
ZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKIAogLSAodm9pZClzZXRNZWRpYVR5cGU6KE5TU3RyaW5n
ICopbWVkaWFTdHlsZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0
T3ZlcnJpZGRlbk1lZGlhVHlwZShtZWRpYVN0eWxlKTsKIH0KIApAQCAtMTMxMSw2ICsxMzQzLDcg
QEAgLSAoaWQpaW50ZXJhY3Rpb25TdGF0ZQogCiAtICh2b2lkKXNldEludGVyYWN0aW9uU3RhdGU6
KGlkKWludGVyYWN0aW9uU3RhdGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYg
KCFbKGlkKWludGVyYWN0aW9uU3RhdGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTMzNSw2ICsxMzY4LDcgQEAgLSAoVUlTY3JvbGxWaWV3ICop
c2Nyb2xsVmlldwogCiAtICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dz
TWFnbmlmaWNhdGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0
QWxsb3dzTWFnbmlmaWNhdGlvbihhbGxvd3NNYWduaWZpY2F0aW9uKTsKIH0KIApAQCAtMTM0NSwx
MSArMTM3OSwxMyBAQCAtIChCT09MKWFsbG93c01hZ25pZmljYXRpb24KIAogLSAodm9pZClzZXRN
YWduaWZpY2F0aW9uOihkb3VibGUpbWFnbmlmaWNhdGlvbiBjZW50ZXJlZEF0UG9pbnQ6KE5TUG9p
bnQpcG9pbnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwtPnNldE1hZ25p
ZmljYXRpb24obWFnbmlmaWNhdGlvbiwgTlNQb2ludFRvQ0dQb2ludChwb2ludCkpOwogfQogCiAt
ICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWduaWZpY2F0aW9uCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9pbXBsLT5zZXRNYWduaWZpY2F0aW9uKG1hZ25pZmljYXRp
b24pOwogfQogCkBAIC0xMzYwLDYgKzEzOTYsNyBAQCAtIChkb3VibGUpbWFnbmlmaWNhdGlvbgog
CiAtIChOU1ByaW50T3BlcmF0aW9uICopcHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZvOihOU1By
aW50SW5mbyAqKXByaW50SW5mbwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAo
YXV0byB3ZWJGcmFtZVByb3h5ID0gX3BhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4g
X2ltcGwtPnByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbyhwcmludEluZm8sICp3ZWJGcmFtZVBy
b3h5KTsKICAgICByZXR1cm4gbmlsOwpAQCAtMTUyNyw2ICsxNTY0LDcgQEAgLSAoT3B0aW9uYWw8
Qk9PTD4pX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3Rp
bmcKIAogLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0
aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRh
ICpwZGZEb2N1bWVudERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRDsKICAgICBpZiAoYXV0byBtYWluRnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAg
ICAgIGZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1lSUQoKTsKQEAgLTE1NTIsNiArMTU5MCw3IEBA
IC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246KFdLUERGQ29uZmlndXJhdGlvbiAq
KXBkZkNvbmZpZ3VyYXRpb24gY29tcGxlCiAKIC0gKHZvaWQpY3JlYXRlV2ViQXJjaGl2ZURhdGFX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRX
ZWJBcmNoaXZlT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1lKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpLCBuaWwpOwogICAgIH0pOwpAQCAt
MTYzMywxNyArMTY3MiwyMCBAQCAtICh2b2lkKV9kaWRDaGFuZ2VFZGl0b3JTdGF0ZQogCiAtIChX
S05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRh
ICopZGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+bG9hZFNpbXVsYXRlZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UsIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9KSk7CiB9CiAKIC8v
IEZJWE1FKDIyMzY1OCk6IFJlbW92ZSB0aGlzIG9uY2UgYWRvcHRlcnMgaGF2ZSBtb3ZlZCB0byB0
aGUgZmluYWwgQVBJLgogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9u
c2UgcmVzcG9uc2VEYXRhOihOU0RhdGEgKilkYXRhCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxhdGVkUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNl
OnJlc3BvbnNlIHJlc3BvbnNlRGF0YTpkYXRhXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9h
ZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2VIVE1MU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBO
U0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6c3RyaW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOkAiVVRGLTgiXSk7CiAK
QEAgLTE2NTMsMTEgKzE2OTUsMTMgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2VIVE1MU3RyaW4KIC8vIEZJWE1F
KDIyMzY1OCk6IFJlbW92ZSB0aGlzIG9uY2UgYWRvcHRlcnMgaGF2ZSBtb3ZlZCB0byB0aGUgZmlu
YWwgQVBJLgogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIFtzZWxmIGxvYWRTaW11bGF0
ZWRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2VIVE1MU3RyaW5nOnN0cmluZ107CiB9CiAKIC0gKFdL
TmF2aWdhdGlvbiAqKWxvYWRGaWxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBhbGxv
d2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkQWNjZXNzVVJMCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIGF1dG8gVVJMID0gcmVxdWVzdC5VUkw7CiAKICAgICBpZiAoIVtV
UkwgaXNGaWxlVVJMXSkKQEAgLTE2ODcsNyArMTczMSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dl
YlZpZXcgKFdLUHJpdmF0ZSkKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2RlZmluZSBXRUJDT1JF
X1BSSVZBVEVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRlciB7
IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CisjZGVmaW5lIFdF
QkNPUkVfUFJJVkFURV9DT01NQU5EKGNvbW1hbmQpIC0gKHZvaWQpXyMjY29tbWFuZDooaWQpc2Vu
ZGVyIHsgVEhST1dfSUZfU1VTUEVOREVEOyBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21t
YW5kICMjIF9zKTsgfQogCiBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGlnbkNlbnRlcikKIFdF
QkNPUkVfUFJJVkFURV9DT01NQU5EKGFsaWduSnVzdGlmaWVkKQpAQCAtMTcwNiwyMSArMTc1MCwy
NSBAQCBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChwYXN0ZUFuZE1hdGNoU3R5bGUpCiAKIC0gKHZv
aWQpX3RvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJzdHJpa2V0aHJvdWdoIl9zKTsK
IH0KIAogLSAodm9pZClfaW5jcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+aW5jcmVhc2VMaXN0TGV2ZWwoKTsKIH0KIAogLSAo
dm9pZClfZGVjcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+ZGVjcmVhc2VMaXN0TGV2ZWwoKTsKIH0KIAogLSAodm9pZClfY2hh
bmdlTGlzdFR5cGU6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+Y2hhbmdlTGlzdFR5cGUoKTsKIH0KIApAQCAtMTc3Miw2ICsxODIwLDcgQEAgLSAoQ0dT
aXplKV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzCiAKIC0gKHZvaWQpX3NldFZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM6KENHU2l6ZSl2aWV3cG9ydFNpemUKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byB2aWV3cG9ydFNpemVGb3JWaWV3cG9ydFVuaXRz
ID0gV2ViQ29yZTo6SW50U2l6ZSh2aWV3cG9ydFNpemUpOwogICAgIGlmICh2aWV3cG9ydFNpemVG
b3JWaWV3cG9ydFVuaXRzLmlzRW1wdHkoKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXdwb3J0IHNpemUgc2hvdWxkIG5v
dCBiZSBlbXB0eSJdOwpAQCAtMTc5Myw2ICsxODQyLDcgQEAgLSAoX1dLSW5zcGVjdG9yICopX2lu
c3BlY3RvcgogCiAtICh2b2lkKV9kaWRFbmFibGVCcm93c2VyRXh0ZW5zaW9uczooTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURUb05hbWVNYXAKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdHJhbnNm
b3JtZWQ7CiAgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25J
RFRvTmFtZU1hcC5jb3VudCk7CiAgICAgW2V4dGVuc2lvbklEVG9OYW1lTWFwIGVudW1lcmF0ZUtl
eXNBbmRPYmplY3RzVXNpbmdCbG9jazpbJl0oTlNTdHJpbmcgKmV4dGVuc2lvbklELCBOU1N0cmlu
ZyAqZXh0ZW5zaW9uTmFtZSwgQk9PTCAqKSB7CkBAIC0xODAzLDYgKzE4NTMsNyBAQCAtICh2b2lk
KV9kaWRFbmFibGVCcm93c2VyRXh0ZW5zaW9uczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5T
U3RyaW5nICo+ICopZXh0ZQogCiAtICh2b2lkKV9kaWREaXNhYmxlQnJvd3NlckV4dGVuc2lvbnM6
KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURzCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIEhhc2hTZXQ8U3RyaW5nPiB0cmFuc2Zvcm1lZDsKICAgICB0cmFuc2Zvcm1lZC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbklEcy5jb3VudCk7CiAgICAgZm9yIChOU1N0
cmluZyAqZXh0ZW5zaW9uSUQgaW4gZXh0ZW5zaW9uSURzKQpAQCAtMTg1MSw2ICsxOTAyLDcgQEAg
LSAoQk9PTClfaXNFZGl0YWJsZQogCiAtICh2b2lkKV9zZXRFZGl0YWJsZTooQk9PTCllZGl0YWJs
ZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBib29sIHdhc0VkaXRhYmxlID0gX3Bh
Z2UtPmlzRWRpdGFibGUoKTsKICAgICBfcGFnZS0+c2V0RWRpdGFibGUoZWRpdGFibGUpOwogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTE4NjgsNiArMTkyMCw3IEBAIC0gKHZvaWQpX3NldEVkaXRhYmxl
OihCT09MKWVkaXRhYmxlCiAKIC0gKHZvaWQpX2V4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcg
Kiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAqKWFyZ3VtZW50IGNvbXBsZXRpb246KHZvaWQg
KF4pKEJPT0wpKWNvbXBsZXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3Bh
Z2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kLCBhcmd1bWVudCwgW2NhcHR1cmVkQ29tcGxl
dGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CiAgICAgICAgIGlmIChjYXB0
dXJlZENvbXBsZXRpb25CbG9jaykKICAgICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkJsb2Nr
KFlFUyk7CkBAIC0xOTAzLDYgKzE5NTYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4+IGNyZWF0ZVVzZXJJbmZvKGNvbnN0IE9wdGlvbmFsPFdlYgogCiAt
ICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246KF9XS1RleHRN
YW5pcHVsYXRpb25Db25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uOih2b2lk
KF4pKCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
dXNpbmcgRXhjbHVzaW9uUnVsZSA9IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpFeGNsdXNpb25SdWxlOwogCiAgICAgaWYgKCFfdGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIHx8
ICFfcGFnZSkgewpAQCAtMTk2Nyw2ICsyMDIxLDcgQEAgc3RhdGljIFdlYkNvcmU6OlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpUb2tlbklkZW50aWZpZXIgY29yZVRleHRNYW5pcHVsYXRpb24K
IAogLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbSAqKWl0ZW0gY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghX3BhZ2UpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC0yMDI0
LDYgKzIwNzksNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlv
bkVycm9ycyhOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdAogCiAtICh2b2lkKV9jb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bSAqPiAqKWl0ZW1zIGNvbXBsZXRpb246KHZvaWQoXikoTlNBcnJheTxOU0Vycm9yICo+ICplcnJv
cnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlm
ICghX3BhZ2UpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZUZhaWx1cmVTZXRGb3JB
bGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMoaXRlbXMpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjA1MSw2ICsyMTA3LDcgQEAgLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9y
SXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKikKIAogLSAodm9pZClf
dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uOihpZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFtzZWxmIF90YWtlRmluZFN0cmluZ0Zy
b21TZWxlY3Rpb25JbnRlcm5hbDpzZW5kZXJdOwogI2Vsc2UKQEAgLTIxMDUsNiArMjE2Miw3IEBA
IC0gKHZvaWQpX3NldEhpc3RvcnlEZWxlZ2F0ZTooaWQgPFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0
ZT4paGlzdG9yeURlbGVnYXRlCiAKIC0gKHZvaWQpX3VwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9s
c01hbmFnZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgSEFWRShUT1VDSF9CQVIp
ICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBfaW1wbC0+dXBk
YXRlTWVkaWFQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogI2VuZGlmCkBAIC0yMTMwLDYgKzIx
ODgsNyBAQCAtIChCT09MKV9pc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUKIAogLSAodm9pZClfdG9n
Z2xlUGljdHVyZUluUGljdHVyZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBIQVZF
KFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAg
IF9pbXBsLT50b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCk7CiAjZW5kaWYKQEAgLTIxNDIsMjYgKzIy
MDEsMzEgQEAgLSAoX1dLTWVkaWFNdXRlZFN0YXRlKV9tZWRpYU11dGVkU3RhdGUKIAogLSAodm9p
ZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgW3NlbGYgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKIH0KIAogLSAodm9pZClfc3RvcE1lZGlhQ2FwdHVyZQogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c3RvcE1lZGlhQ2FwdHVyZShXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvKTsKIH0KIAogLSAodm9pZClfc3Rv
cEFsbE1lZGlhUGxheWJhY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYg
cGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKIC0g
KHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6WUVTIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CiB9CiAKIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3Bl
bmRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCkBAIC0yMTc4LDYgKzIyNDIsNyBA
QCBzdGF0aWMgdm9pZCBjb252ZXJ0QW5kQWRkSGlnaGxpZ2h0KFZlY3RvcjxSZWY8V2ViS2l0OjpT
aGFyZWRNZW1vcnk+PiYgYnVmZmVycywgTgogCiAtICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0
czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBWZWN0b3I8UmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKIApAQCAtMjE5Miw2ICsyMjU3LDcgQEAgLSAodm9pZClf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogCiAt
ICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdo
dAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CiAgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAgICAgCkBA
IC0yMjA0LDYgKzIyNzAsNyBAQCAtICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGln
aHQ6KE5TRGF0YSAqKWhpZ2hsaWdodAogCiAtICh2b2lkKV9hZGRBcHBIaWdobGlnaHQKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIF9w
YWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQ6Ok5vLCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwOjpZZXMpOwogI2VuZGlmCkBAIC0yMjIzLDIzICsyMjkwLDI3IEBAIC0gKE5TVVJMICop
X21haW5GcmFtZVVSTAogCiAtICh2b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihO
U1VSTCAqKXVucmVhY2hhYmxlVVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIE5T
RGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOwogICAgIF9wYWdlLT5sb2FkQWx0ZXJuYXRlSFRNTCh7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgIlVURi04Il9zLCBiYXNlVVJMLCB1
bnJlYWNoYWJsZVVSTCk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkRGF0YTooTlNEYXRh
ICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFz
ZVVSTCB1c2VyRGF0YTooaWQpdXNlckRhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5j
b2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFw
aDo6Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfbG9h
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMczoo
Qk9PTClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5ID0gc2hvdWxkT3BlbkV4
dGVybmFsVVJMcyA/IF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lBbGxvdyA6IF9XS1No
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lOb3RBbGxvdzsKICAgICByZXR1cm4gW3NlbGYgX2xv
YWRSZXF1ZXN0OnJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTpwb2xpY3ldOwog
fQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTooX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSlzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5CiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5
OwogICAgIHN3aXRjaCAoc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgewogICAgIGNhc2Ug
X1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeU5vdEFsbG93OgpAQCAtMjI1NywyNCArMjMy
OCwyOCBAQCAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbAogCiAtICh2b2lkKV9ncmFudEFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoX3BhZ2Up
CiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpOwogfQogCiAtICh2
b2lkKV9yZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgaWYgKF9wYWdlKQogICAgICAgICBfcGFnZS0+cmV2b2tlQWNjZXNzVG9Bc3NldFNl
cnZpY2VzKCk7CiB9CiAKIC0gKHZvaWQpX3N3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1Vz
ZXJGb250UmVnaXN0cnkKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdl
KQogICAgICAgICBfcGFnZS0+c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRS
ZWdpc3RyeSgpOwogfQogCiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWlu
OihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcg
KiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbcmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZG9tYWlu
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghYXBwQm91bmREYXRh
LmNvbnRleHREYXRhLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobmlsKTsKQEAgLTIyODcsNiArMjM2Miw3IEBAIC0gKHZvaWQpX2Fw
cEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRp
b25IYW5kbGVyOih2CiAKIC0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5oYXNMb2Fk
ZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKICAgICB9KTsKQEAgLTIyOTQsMTEgKzIzNzAsMzQg
QEAgLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQp
KWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6
KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJv
dW5kRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0
YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKICAgICB9KTsKIH0KIAorLSAo
dm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgaWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnN1c3BlbmQoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOworfQorCistICh2b2lkKV9yZXN1
bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICghX3Bh
Z2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIF9wYWdlLT5yZXN1bWUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOworfQorCiAtIChOU0FycmF5ICopX2NlcnRpZmljYXRl
Q2hhaW4KIHsKICAgICBpZiAoV2ViS2l0OjpXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBfcGFn
ZS0+bWFpbkZyYW1lKCkpCkBAIC0yMzMyLDYgKzI0MzEsNyBAQCAtIChOU1N0cmluZyAqKV9hcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKIAogLSAodm9pZClfc2V0QXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50OihOU1N0cmluZyAqKWFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudAogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk7CiAgICAgX3BhZ2UtPnNldEFwcGxp
Y2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
KTsKIH0KQEAgLTIzODQsNiArMjQ4NCw3IEBAIC0gKEJPT0wpX3dlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUKIAogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIGlmICghW3NlbGYgX2lzVmFsaWRdKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIzOTIsMTYgKzI0OTMsMTkgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0g
KFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29y
ZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKSk7CiB9CiAKIC0gKFdLTmF2
aWdhdGlvbiAqKV9yZWxvYWRFeHBpcmVkT25seQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpKTsKIH0KIAogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVz
ZXRTdGF0ZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBSZWY8V2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk+IHByb3RlY3RlZFByb2Nlc3NQcm94eShfcGFnZS0+cHJvY2VzcygpKTsKICAg
ICBwcm90ZWN0ZWRQcm9jZXNzUHJveHktPnJlcXVlc3RUZXJtaW5hdGlvbihXZWJLaXQ6OlByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwogCkBAIC0yNDEzLDYgKzI1
MTcsNyBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlCiAKIC0g
KHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmln
dXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgUmV0YWluUHRyPFdLUERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmln
dXJhdGlvbjsKICAgICBpZiAoc25hcHNob3RDb25maWd1cmF0aW9uKSB7CiAgICAgICAgIHBkZkNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tQREZDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CkBAIC0yNDI0LDYgKzI1MjksNyBAQCAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmln
dXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbgogCiAtICh2b2lk
KV9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTooX1dLRnJhbWVIYW5kbGUgKilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShDR1NpemUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRQREZGaXJzdFBhZ2VTaXplKGZyYW1l
LT5fZnJhbWVIYW5kbGUtPmZyYW1lSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8Q0dTaXplPihzaXplKSk7CiAgICAgfSk7
CkBAIC0yNDU0LDYgKzI1NjAsNyBAQCAtIChfV0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRl
V2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNrRm9yd2FyZExpc3RJdGVtICppdAogCiAtICh2b2lk
KV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5v
dCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRlIGRlY29kZXIuCiAgICAgV2ViS2l0OjpTZXNz
aW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogICAgIGlmICghV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNz
aW9uU3RhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlc3Npb25TdGF0ZURhdGEuYnl0
ZXMpLCBzZXNzaW9uU3RhdGVEYXRhLmxlbmd0aCwgc2Vzc2lvblN0YXRlKSkKQEAgLTI0NjQsNiAr
MjU3MSw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICop
c2Vzc2lvblN0YXRlRGF0YQogCiAtIChXS05hdmlnYXRpb24gKilfcmVzdG9yZVNlc3Npb25TdGF0
ZTooX1dLU2Vzc2lvblN0YXRlICopc2Vzc2lvblN0YXRlIGFuZE5hdmlnYXRlOihCT09MKW5hdmln
YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdl
LT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUgPyBzZXNzaW9uU3RhdGUtPl9z
ZXNzaW9uU3RhdGUgOiBXZWJLaXQ6OlNlc3Npb25TdGF0ZSB7IH0sIG5hdmlnYXRlKSk7CiB9CiAK
QEAgLTI0NzQsNiArMjU4Miw3IEBAIC0gKHZvaWQpX2Nsb3NlCiAKIC0gKEJPT0wpX3RyeUNsb3Nl
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiBfcGFnZS0+dHJ5Q2xvc2Uo
KTsKIH0KIApAQCAtMjQ4NCw2ICsyNTkzLDcgQEAgLSAoQk9PTClfaXNDbG9zZWQKIAogLSAoX1dL
QXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZp
bGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAq
KWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21w
bGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIGF1dG8g
ZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKICAgICBpZiAoZmlsZW5hbWUpCkBAIC0yNDkzLDEyICsy
NjAzLDE0IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFt
ZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwCiAKIC0gKF9XS0F0dGFjaG1lbnQgKilf
aW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFw
cGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1
Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICByZXR1cm4gW3NlbGYgX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIgY29udGVudFR5cGU6Y29udGVudFR5cGUgY29t
cGxldGlvbjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVy
IGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGNvbXBsZXRpb246KHZvaWQoXiko
Qk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8gaWRlbnRpZmllciA9
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBBUEk6
OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpOwpAQCAtMjUxOCw2ICsyNjMw
LDcgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVy
OihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIKIAogLSAoX1dLQXR0YWNobWVudCAqKV9hdHRh
Y2htZW50Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKGF1
dG8gYXR0YWNobWVudCA9IF9wYWdlLT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVy
KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXIoYXR0YWNobWVudCk7CkBAIC0yNTI3LDYgKzI2NDAs
NyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIAogLSAodm9pZClfc2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5n
ZVdpdGhBbHBoYTooZG91YmxlKWFscGhhIGJldGE6KGRvdWJsZSliZXRhIGdhbW1hOihkb3VibGUp
Z2FtbWEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNpbXVsYXRlRGV2
aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKTsKIH0KIApAQCAtMjU0Miw2
ICsyNjU2LDcgQEAgKyAoQk9PTClfd2lsbFVwZ3JhZGVUb0hUVFBTOihOU1VSTCAqKXVybAogCiAt
ICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRs
ZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5n
ICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfc2hvd1NhZmVCcm93
c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTp0aXRsZSB3YXJuaW5nOndhcm5pbmcgZGV0YWls
c1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBjb250aW51ZVVuc2Fm
ZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAgICAgQVNTRVJUKCF1cmwpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2FmZUxvYWQpOwpAQCAtMjU1MCw2ICsyNjY1LDcgQEAg
LSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0
bGUgd2FybmluZzooTlNTdHJpbmcgKikKIAogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5p
bmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihO
U1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdX
aXRoVVJMOm5pbCB0aXRsZTp0aXRsZSB3YXJuaW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpk
ZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJM
ICp1cmwpIHsKICAgICAgICAgQVNTRVJUKCF1cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb250aW51ZVVuc2FmZUxvYWQpOwpAQCAtMjU1OCw2ICsyNjc0LDcgQEAgLSAodm9pZClfc2hv
d1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcg
Kil0aXRsZSB3YXIKIAogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihO
U1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdh
cm5pbmcgZGV0YWlsc1dpdGhMaW5rczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MLCBOU1VSTCAqKSljb21wbGV0aW9uSGFuZGxlcgog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIHNhZmVCcm93c2luZ1dhcm5pbmcg
PSBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmc6OmNyZWF0ZSh1cmwsIHRpdGxlLCB3YXJuaW5n
LCBkZXRhaWxzKTsKICAgICBhdXRvIHdyYXBwZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5z
YWZlTG9hZCwgVVJMPiYmIHZhcmlhbnQpIHsKICAgICAgICAgc3dpdGNoT24odmFyaWFudCwgWyZd
IChXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCBjb250aW51ZVVuc2FmZUxvYWQpIHsKQEAgLTI1
OTAsNiArMjcwNyw3IEBAICsgKE5TVVJMICopX3Zpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsCiAK
IC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+aXNKSVRFbmFibGVkKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGVu
YWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CkBA
IC0yNTk3LDExICsyNzE1LDEzIEBAIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0
VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0
U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRz
Om5pbCBmb3JjZVVzZXJHZXN0dXJlOk5PIGluRnJhbWU6bmlsIGluV29ybGQ6V0tDb250ZW50V29y
bGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAog
LSAodm9pZClfY2FsbEFzeW5jSmF2YVNjcmlwdDooTlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJn
dW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3Ip
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxm
IF9ldmFsdWF0ZUphdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0
aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZ
RVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTI2MjYsMTEgKzI3NDYsMTMgQEAgLSAoQk9PTClf
YWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3Jp
cHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwg
d2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldv
cmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9
CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIHdpdGhTb3VyY2VVUkw6KE5TVVJMICopdXJsIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3Jp
cHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVSTDp1cmwg
d2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldv
cmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9
CiAKQEAgLTI2NDAsNiArMjc2Miw3IEBAIC0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczoo
X1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0ZVBvbGljaWVzCiAKIC0gKHZvaWQpX3VwZGF0ZVdl
YnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5j
ZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKHdlYnBhZ2VQcmVmZXJlbmNl
cy5fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVwZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9yZSBp
cyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4i
XTsKICAgICBpZiAod2VicGFnZVByZWZlcmVuY2VzLl91c2VyQ29udGVudENvbnRyb2xsZXIpCkBA
IC0yNjUwLDExICsyNzczLDEzIEBAIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczoo
V0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKIAogLSAodm9pZClfbm90
aWZ5VXNlclNjcmlwdHMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPm5v
dGlmeVVzZXJTY3JpcHRzKCk7CiB9CiAKIC0gKEJPT0wpX2RlZmVycmFibGVVc2VyU2NyaXB0c05l
ZWROb3RpZmljYXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9w
YWdlLT51c2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24oKTsKIH0KIApAQCAtMjY2OSw2ICsyNzk0
LDcgQEAgLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgogCiAtICh2b2lkKV9zZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uOihCT09MKWFsbG93CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIF9wYWdlLT5zZXRBbGxvd3NSZW1v
dGVJbnNwZWN0aW9uKGFsbG93KTsKICNlbmRpZgpAQCAtMjY4NSw2ICsyODExLDcgQEAgLSAoTlNT
dHJpbmcgKilfcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZQogCiAtICh2b2lkKV9zZXRSZW1v
dGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOihOU1N0cmluZyAqKW5hbWUKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNl
dFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUobmFtZSk7CiAjZW5kaWYKQEAgLTI2OTcsNiAr
MjgyNCw3IEBAIC0gKEJPT0wpX2FkZHNWaXNpdGVkTGlua3MKIAogLSAodm9pZClfc2V0QWRkc1Zp
c2l0ZWRMaW5rczooQk9PTClhZGRzVmlzaXRlZExpbmtzCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIF9wYWdlLT5zZXRBZGRzVmlzaXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOwog
fQogCkBAIC0yNzQ0LDYgKzI4NzIsNyBAQCAtICh2b2lkKV9zZXRPYnNlcnZlZFJlbmRlcmluZ1By
b2dyZXNzRXZlbnRzOihfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cylvYnNlcnZlZAogCiAtICh2
b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1h
aW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3Jh
cHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsKQEAgLTI3NTEsMTEgKzI4ODAsMTMgQEAgLSAodm9p
ZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNE
YXRhICosIE5TRXJyb3IgKikKIAogLSAodm9pZClfZ2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIGNyZWF0ZVdlYkFyY2hp
dmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAo
dm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRl
bnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5vLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKFN0cmluZyBzdHJpbmcpIHsKICAgICAgICAgaGFuZGxlcihz
dHJpbmcsIG5pbCk7CiAgICAgfSk7CkBAIC0yNzYzLDYgKzI4OTQsNyBAQCAtICh2b2lkKV9nZXRD
b250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAq
LCBOU0Vycm9yCiAKIC0gKHZvaWQpX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNTdHJp
bmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXMsIFtoYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewog
ICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAgfSk7CkBAIC0yNzcwLDYgKzI5MDIsNyBAQCAt
ICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TU3RyaW5nCiAKIC0gKHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVk
U3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0F0dHJpYnV0ZWRTdHJpbmcg
KiwgTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBp
ZD4gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoW2hhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiBhdHRyaWJ1dGVkU3RyaW5n
KSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5nLnN0cmluZykKICAgICAgICAgICAgIGhh
bmRsZXIoYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZWRTdHJpbmcuZG9j
dW1lbnRBdHRyaWJ1dGVzLmdldCgpLCBuaWwpOwpAQCAtMjc4MCw2ICsyOTEzLDcgQEAgLSAodm9p
ZClfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TQXR0cmlidXQKIAogLSAodm9pZClfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCiAgICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAg
ICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgewpAQCAtMjgxNyw2ICsyOTUxLDcgQEAgLSAoX1dL
UGFnaW5hdGlvbk1vZGUpX3BhZ2luYXRpb25Nb2RlCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25N
b2RlOihfV0tQYWdpbmF0aW9uTW9kZSlwYWdpbmF0aW9uTW9kZQogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNo
IChwYWdpbmF0aW9uTW9kZSkgewogICAgIGNhc2UgX1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRl
ZDoKQEAgLTI4NDgsNiArMjk4Myw3IEBAIC0gKEJPT0wpX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMKIAogLSAodm9pZClfc2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCli
ZWhhdmVzTGlrZUNvbHVtbnMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0K
IApAQCAtMjg1OCw2ICsyOTk0LDcgQEAgLSAoQ0dGbG9hdClfcGFnZUxlbmd0aAogCiAtICh2b2lk
KV9zZXRQYWdlTGVuZ3RoOihDR0Zsb2F0KXBhZ2VMZW5ndGgKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCk7CiB9CiAKQEAgLTI4
NjgsNiArMzAwNSw3IEBAIC0gKENHRmxvYXQpX2dhcEJldHdlZW5QYWdlcwogCiAtICh2b2lkKV9z
ZXRHYXBCZXR3ZWVuUGFnZXM6KENHRmxvYXQpZ2FwQmV0d2VlblBhZ2VzCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwQmV0d2VlblBh
Z2VzKTsKIH0KIApAQCAtMjg3OCw2ICszMDE2LDcgQEAgLSAoQk9PTClfcGFnaW5hdGlvbkxpbmVH
cmlkRW5hYmxlZAogCiAtICh2b2lkKV9zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOihCT09M
KWxpbmVHcmlkRW5hYmxlZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+
c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC0y
ODk4LDYgKzMwMzcsNyBAQCAtIChkb3VibGUpX3RleHRab29tRmFjdG9yCiAKIC0gKHZvaWQpX3Nl
dFRleHRab29tRmFjdG9yOihkb3VibGUpem9vbUZhY3RvcgogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKQEAg
LTI5MDgsNiArMzA0OCw3IEBAIC0gKGRvdWJsZSlfcGFnZVpvb21GYWN0b3IKIAogLSAodm9pZClf
c2V0UGFnZVpvb21GYWN0b3I6KGRvdWJsZSl6b29tRmFjdG9yCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFtzZWxmIHNldFBhZ2Vab29tOnpvb21GYWN0b3JdOwogfQogCkBAIC0yOTY5
LDYgKzMxMTAsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25z
PiB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZAogCiAtICh2b2lkKV9jb3VudFN0
cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9w
dGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRW
aWV3KSB7CiAgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hl
czpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1heENvdW50XTsKQEAgLTI5ODAsNiAr
MzEyMiw3IEBAIC0gKHZvaWQpX2NvdW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcg
b3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtCiAKIC0gKHZvaWQpX2ZpbmRTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291
bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXaGlsZSBBcHBLaXQgY29udGFpbnMgbG9naWMg
aW4gTlNCYXJUZXh0RmluZGVyIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBmaW5kIHBhc3Rl
Ym9hcmQKICAgICAvLyB3aGVuIHRoZSBmaW5kIHN0cmluZyBjaGFuZ2VzLCB0aGlzIChhbG9uZyB3
aXRoIHRoZSBmaW5kIHBhc3RlYm9hcmQgaXRzZWxmKSBhcmUgYm90aCBtaXNzaW5nCkBAIC0yOTk2
LDYgKzMxMzksNyBAQCAtICh2b2lkKV9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRp
b25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OgogCiAtICh2b2lkKV9oaWRlRmlu
ZFVJCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgaWYgKF9jdXN0b21Db250ZW50VmlldykgewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRW
aWV3IHdlYl9oaWRlRmluZFVJXTsKQEAgLTMwMDcsNiArMzE1MSw3IEBAIC0gKHZvaWQpX2hpZGVG
aW5kVUkKIAogLSAodm9pZClfc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlm
ICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25h
cHNob3QoaXRlbS5faXRlbSk7CkBAIC0zMDIwLDYgKzMxNjUsNyBAQCAtICh2b2lkKV9zZXJ2aWNl
V29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9p
ZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0pOwpAQCAtMzAyNyw2ICszMTczLDcgQEAgLSAodm9pZClfY2xlYXJT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIKIAogLSAodm9pZClfcHJlY29ubmVjdFRvU2VydmVyOihOU1VSTCAqKXVybAogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+cHJlY29ubmVjdFRvKHVybCk7CiB9
CiAKQEAgLTMwMzcsNiArMzE4NCw3IEBAIC0gKEJPT0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdl
CiAKIC0gKHZvaWQpX3NldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlOihCT09MKWNhblVzZUNyZWRl
bnRpYWxTdG9yYWdlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRD
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZShjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSk7CiB9CiAKQEAg
LTMxNzcsNiArMzMyNSw3IEBAIC0gKF9XS0xheW91dE1vZGUpX2xheW91dE1vZGUKIAogLSAodm9p
ZClfc2V0TGF5b3V0TW9kZTooX1dLTGF5b3V0TW9kZSlsYXlvdXRNb2RlCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXS0xheW91dE1vZGUgd2tWaWV3
TGF5b3V0TW9kZTsKICAgICBzd2l0Y2ggKGxheW91dE1vZGUpIHsKQEAgLTMyMDcsMTEgKzMzNTYs
MTMgQEAgLSAoQ0dTaXplKV9maXhlZExheW91dFNpemUKIAogLSAodm9pZClfc2V0Rml4ZWRMYXlv
dXRTaXplOihDR1NpemUpZml4ZWRMYXlvdXRTaXplCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIF9wYWdlLT5zZXRGaXhlZExheW91dFNpemUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXpl
KFdlYkNvcmU6OkZsb2F0U2l6ZShmaXhlZExheW91dFNpemUpKSk7CiB9CiAKIC0gKHZvaWQpX3Nl
dEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTooQk9PTCliYWNrZ3JvdW5kRXh0ZW5kcwogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNC
ZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzKTsKIH0KIApAQCAtMzIzMSw2ICszMzgyLDcgQEAg
LSAoQ0dGbG9hdClfdmlld1NjYWxlCiAKIC0gKHZvaWQpX3NldFZpZXdTY2FsZTooQ0dGbG9hdCl2
aWV3U2NhbGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKHZpZXdTY2FsZSA8
PSAwIHx8IGlzbmFuKHZpZXdTY2FsZSkgfHwgaXNpbmYodmlld1NjYWxlKSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXcg
c2NhbGUgc2hvdWxkIGJlIGEgcG9zaXRpdmUgbnVtYmVyIl07CiAKQEAgLTMyNTEsMTEgKzM0MDMs
MTMgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIAog
LSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICop
cGF0dGVybnMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldENPUlNE
aXNhYmxpbmdQYXR0ZXJucyhtYWtlVmVjdG9yPFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAogLSAo
dm9pZClfZ2V0UHJvY2Vzc0Rpc3BsYXlOYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKFtoYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIG5hbWUpIHsKICAgICAgICAgaGFuZGxlcihu
YW1lKTsKICAgICB9KTsKQEAgLTMyNjMsNiArMzQxNyw3IEBAIC0gKHZvaWQpX2dldFByb2Nlc3NE
aXNwbGF5TmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29t
cGxlCiAKIC0gKHZvaWQpX3NldE1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aDooQ0dGbG9hdClt
aW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX3BhZ2UtPm1pbmltdW1FZmZlY3RpdmVE
ZXZpY2VXaWR0aCgpID09IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzI4NSw2ICszNDQwLDcgQEAgLSAoQ0dGbG9hdClfbWluaW11bUVmZmVjdGl2ZURl
dmljZVdpZHRoCiAKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZQogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5n
cmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UoKTsKIH0KQEAgLTMyOTMsNiArMzQ0OSw3IEBA
IC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZQogCiAtICh2b2lkKV9zZXRT
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZDooQk9PTCllbmFibGVkCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRTY3JvbGxQZXJmb3JtYW5jZURh
dGFDb2xsZWN0aW9uRW5hYmxlZChlbmFibGVkKTsKIH0KIApAQCAtMzMyMyw2ICszNDgwLDcgQEAg
LSAoQk9PTClfYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrCiAKIC0gKHZvaWQpX3Nl
dEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazooQk9PTClmbGFnCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgX3BhZ2UtPnNl
dEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhmbGFnKTsKICNlbmRpZgpAQCAtMzM2
MSw2ICszNTE5LDcgQEAgLSAoX1dLTWVkaWFDYXB0dXJlU3RhdGVEZXByZWNhdGVkKV9tZWRpYUNh
cHR1cmVTdGF0ZQogCiAtICh2b2lkKV9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOihCT09MKWVuYWJs
ZWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldE1lZGlhQ2FwdHVy
ZUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKQEAgLTMzNzEsNiArMzUzMCw3IEBAIC0gKEJPT0wpX21l
ZGlhQ2FwdHVyZUVuYWJsZWQKIAogLSAodm9pZClfc2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVk
U3RhdGUpbXV0ZWRTdGF0ZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11
dGVkU3RhdGUgJiBfV0tNZWRpYUF1ZGlvTXV0ZWQpCkBAIC0zMzg1LDYgKzM1NDUsNyBAQCAtICh2
b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlhTXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiAKIC0gKHZv
aWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24K
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQog
ICAgIF9wYWdlLT5yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhbY29tcGxldGlvbiA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uKSwgcGFnZSA9IG1ha2VXZWFrUHRyKF9wYWdlLmdldCgpKV0gKGF1dG8m
IHJlc3VsdCkgewogICAgICAgICBpZiAocGFnZSkKQEAgLTM0MDAsMTEgKzM1NjEsMTMgQEAgLSAo
dm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlv
bgogLy8gRXhlY3V0ZSB0aGUgc3VwcGxpZWQgYmxvY2sgYWZ0ZXIgdGhlIG5leHQgdHJhbnNhY3Rp
b24gZnJvbSB0aGUgV2ViUHJvY2Vzcy4KIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9u
VXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBbc2VsZiBfaW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp1
cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOk5PIHdpdGhvdXRXYWl0aW5nRm9y
QW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCiAtICh2b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJs
b2NrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0
ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOnVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFp
bnRpbmc6WUVTIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0NjkyYWMzNjIxYjkzYmVlY2MwLi4yZGZlYWJh
MGRkNGNiM2Q0ZTAwZTlkNWZiYWNjODM4MjAwN2RmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQxMCw2ICs0
MTAsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVl
c3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2Rp
ZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9u
SGFuZGxlcjsKIAorLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBlYTVjMzQ5MDczM2MyYjBlOTFkZTg0ODg4ZTMwMDRhZTli
YWI4NDVkLi45NTY0NjgyODAwN2Q1NGNhNzZmOTgxNmQwMjk1Mzk0ZTEwMzJkZDg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxNDMsNyArMzE0Myw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNo
RXZlbnQmIGV2ZW50KQogICAgIC8vIElmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZCwgd2hpY2ggc2hv
dWxkIGJlIHRoZSBjYXNlIGR1cmluZyBwYW5uaW5nLCBwaW5jaGluZwogICAgIC8vIGFuZCBhbmlt
YXRpb24gb24gdGhlIHBhZ2UgaXRzZWxmIChraW5ldGljIHNjcm9sbGluZywgdGFwIHRvIHpvb20p
IGV0YywgdGhlbgogICAgIC8vIHdlIGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRzIHRvIHRo
ZSBwYWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVycy4KLSAgICBpZiAoIW1faXNQYWdlU3VzcGVu
ZGVkKSB7CisgICAgaWYgKCFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVu
ZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAgICAgICAg
IG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpKTsKQEAgLTM1OTEsMjQgKzM1OTEsNDUg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1
c3RvbVVzZXJBZ2VudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1f
aXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9hcmVB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiB7
Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1faXNQYWdlU3VzcGVuZGVkKQorICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRl
ZCA9IHRydWU7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRl
ZCA9IHRydWU7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDoiKTsKKyAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZCgpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6Iik7CisKKyAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0
RW5jb2RpbmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FICgxMTg4NDApOiBXZSBzaG91bGQgcHJv
YmFibHkgb25seSBzdXBwb3J0IHRoaXMgZm9yIHRleHQgZG9jdW1lbnRzLCBub3QgYWxsIG5vbi1p
bWFnZSBkb2N1bWVudHMuCkBAIC02MDc4LDcgKzYwOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c3RvcE1lZGlhQ2FwdHVyZShNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kIGtpbmQsIENv
bXBsZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFj
a1N0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVBsYXliYWNrU3RhdGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNzcxOSw3ICs3NzQwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRyOwog
CiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZhbHNlOwotICAgIG1faXNQYWdlU3VzcGVuZGVk
ID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRl
ZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0c05vdGlmaWVkID0gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWI0NTdkZmI2MDMxZWY2MzlhZDNh
ZTNmY2JmZmZhZTZhNmQ4NTcwMi4uZDUxM2FhYTNiZTI3ZTRhNTE2MzFlYWIxM2ZmYWNhOTJhZjFj
MGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwNSw2ICs1
MDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9p
ZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3VzcGVuZGVkOyB9CisKICAgICBXZWJJbnNwZWN0b3JVSVByb3h5KiBpbnNwZWN0b3IoKSBjb25z
dDsKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBnZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KIApAQCAtMTAxNCw3ICsxMDE4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBT
dHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4
dEVuY29kaW5nTmFtZTsgfQogCi0gICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWdlU3VzcGVuZGVkOyB9CisgICAg
Ym9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0KICAg
ICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCBz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIApAQCAtMjc1Myw3ICsyNzU3
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92
YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNw
ZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9Owog
CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwpAQCAtMzAxNSw2
ICszMDE5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9n
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggOTg2NDZmZTRiOTdhMTJiYTVlY2RhMGVjYzdlNTJhMTMzYjBmYzQ0OC4uNzY2NWFl
ODhmMjQ3M2I5ZTEyZTdmMTc4NTE0MDczODZjNGU2MjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9y
d2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9uVk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTYsNiArMzU5NywzNyBAQCB2b2lkIFdlYlBhZ2U6
OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3BhZ2UtPnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN1c3BlbmQ6IG1fcGFnZT0l
cCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKworICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tGb3J3
YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQYWdlKCptX3BhZ2UpOworICAgIEFTU0VSVCht
X2NhY2hlZFBhZ2UpOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSkKKyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5kZXRhY2hGcm9tQWxsT3BlbmVk
RnJhbWVzKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdW1lOiBtX3Bh
Z2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpl
eGNoYW5nZShtX2NhY2hlZFBhZ2UsIG51bGxwdHIpOworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsK
KyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisKKyAgICBjYWNoZWRQYWdlLT5yZXN0b3JlKCptX3BhZ2UpOworICAgIHVuZnJlZXpl
TGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFnZVN1c3BlbmRlZCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvUm9v
dFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVlNDQ3
M2FkYzRiOTgwZTBkYjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLmZjOTYyMWUzNzJjNWI0MDQyYjll
ZGJjYmNmMmUzMjM2NDNhYWVhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FwdHVy
ZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0xNjY5
LDYgKzE2NzAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpOwogCisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgcGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsKQEAgLTIzMTgsNiArMjMyMiw4IEBA
IHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
IAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDYWNoZWRQYWdlPiBtX2NhY2hlZFBhZ2U7
CisKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIGJvb2wgbV9pcGNUZXN0aW5nQVBJ
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBlMzdhNjU5YzkxYjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4xYjNh
NjgxZmNiNTFmNDEzZTIxYmE0MjU0NDJiOGMwYTFmZDVlMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2
ICsyNTAsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFN1c3BlbmRBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKQogCisgICAgU3VzcGVuZCgpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgUmVz
dW1lKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKwogICAgIENsb3NlKCkKICAgICBUcnlDbG9z
ZSgpIC0+IChib29sIHNob3VsZENsb3NlKSBBc3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWE0ZjMxYjRjNmMwMDk2NzVjNzY2MzA5NDRm
NTc1ODUwOGZiODdlNS4uMGM1YTlkMzAzNWI2ZjBhZDkwNmE5N2NhYjU4Njc3ODkzYWRkYjYzZiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAg
PHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9w
b3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMTEgIERpZWdvIFBp
bm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBjb21wb3NpdGlu
Zy9vdmVyZmxvdy9keW5hbWljLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLXN0YXR1cy5odG1sIGlzIGZh
aWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGMxMTdiMjRkOTI3MjJmZTkwNmM3ZWU0
ZmU5MGI5YzdlYzkwN2MyOS4uYjc5M2QzNzJmMzFkNDU5NDFlYTQyMDc1OGRhNjFkNGI2ODZkMWNk
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2Miw2ICsyNjIsNyBAQAogCQk0NjNGNDcy
MzI1NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8q
IFZpc2liaWxpdHlTdGF0ZS5tbSAqLzsgfTsKIAkJNDY0N0IxMjYxRUJBM0I4NTAwNDFEN0VGIC8q
IFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJt
aW5hdGUuY3BwICovOyB9OwogCQk0NjRDNzY0RDIzMERGODVDMDBBRkIwMjAgLyogQmFkU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBC
YWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87IH07CisJCTQ2NUMyM0FG
MjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVDMjNBRTI2NDBD
M0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi87IH07CiAJCTQ2NUUy
ODA3MjU1QjJBNkEwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQ
VVByb2Nlc3MubW0gKi87IH07CiAJCTQ2NkMzODQzMjEwNjM3REUwMDZBODhERSAvKiBub3RpZnkt
cmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5
LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgKi87IH07CiAJCTQ2N0M1NjUzMjFCNUVEMTMwMDU3
NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdl
dFNlc3Npb25Db29raWUuaHRtbCAqLzsgfTsKQEAgLTE2NTAsNiArMTY1MSw3IEBACiAJCQkJM0ZD
QzRGRTgxRUM0RThDQTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5
LWF1ZGlvLW9uLWNsaWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMEVCQkNDNjYx
RkZGOUUwQzAwRkE0MkFCIC8qIHBvcC11cC1jaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAorCQkJCTQ2NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHku
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBODFFRjQ2OTZCMDA4M0ZBMDgg
LyogcHJldmVudC1vcGVyYXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFB
QjlBOTFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yMDY3LDYgKzIwNjksNyBAQAogCQk0NjNGNDcyMjI1
NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1p
bmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzRGlk
VGVybWluYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2NEMyMzBE
RjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBh
dGggPSAiQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNz
YWdlLXJlZ3VsYXJseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBvc3RNZXNz
YWdlLXJlZ3VsYXJseS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RTI4
MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNlTG9hZE9i
c2VydmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJlc291cmNl
TG9hZE9ic2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdDNTY1
MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDA3Myw2ICs0MDc2LDcgQEAKIAkJCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0
MzIgLyogcGFzdGUtcnRmZC5odG1sICovLAogCQkJCTNGQ0M0RkU2MUVDNEU4N0UwMDc2RTM3QyAv
KiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUuaHRtbCAqLywKIAkJCQlGNDE1MDg2QzFEQTA0MEMx
MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovLAorCQkJCTQ2NUMyM0FFMjY0
MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLywKIAkJCQlGNDFB
Qjk5NDFFRjQ2OTJDMDA4M0ZBMDggLyogcHJldmVudC1vcGVyYXRpb24uaHRtbCAqLywKIAkJCQlG
NDFBQjk5QTFFRjQ2OTJDMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sICovLAogCQkJCUEx
MkREQkZGMUU4MzczQzEwMENGNkNBRSAvKiByZW5kZXJlZC1pbWFnZS1leGNsdWRpbmctb3ZlcmZs
b3cuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCmluZGV4IDk5NjYxYjM0MDNiMDRkMTQxYTFj
NDI4MTQ1YjdkNmZmNDc5OGRkYzIuLjBiMGI5YWM5NjcwNTgyMTZlMDQzOThiZWY0NzVlY2I3ZTFm
OTFkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N1c3BlbnNpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQpAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW1wb3J0
ICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiBURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBDYW5j
ZWxXZWJQcm9jZXNzU3VzcGVuc2lvbikKIHsKQEAgLTgzLDMgKzg1LDE1MSBAQCBURVNUKFByb2Nl
c3NTdXNwZW5zaW9uLCBEZXN0cm95V2ViUGFnZUR1cmluZ1dlYlByb2Nlc3NTdXNwZW5zaW9uKQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDEpOwogICAgIEVYUEVDVF9FUShwaWQxLCBb
d2ViVmlldzMgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiB9CisKK1RFU1QoUHJvY2Vzc1N1c3Bl
bnNpb24sIFdLV2ViVmlld1N1c3BlbmRQYWdlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBh
dXRvIHRlc3RNZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0TWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjp0ZXN0TWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRl
c3RIYW5kbGVyIl07CisgICAgX19ibG9jayB1bnNpZ25lZCB0aW1lckZpcmVkQ291bnQgPSAwOwor
ICAgIFt0ZXN0TWVzc2FnZUhhbmRsZXIgYWRkTWVzc2FnZTpAInRpbWVyIGZpcmVkIiB3aXRoSGFu
ZGxlcjpeeworICAgICAgICArK3RpbWVyRmlyZWRDb3VudDsKKyAgICB9XTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBhZGRUb1dpbmRvdzpZRVNdKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJwb3N0TWVzc2FnZS1yZWd1bGFybHkiXTsKKworICAgIGF1dG8gcGlkID0gW3dl
YlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkLCAwKTsKKwor
ICAgIC8vIFRoZSB0aW1lciBzaG91bGQgYmUgZmlyaW5nLgorICAgIGF1dG8gbGFzdFRpbWVyRmly
ZUNvdW50ID0gdGltZXJGaXJlZENvdW50OworICAgIHdoaWxlIChsYXN0VGltZXJGaXJlQ291bnQg
PT0gdGltZXJGaXJlZENvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVu
TG9vcCgxMCk7CisgICAgRVhQRUNUX1RSVUUodGltZXJGaXJlZENvdW50ID4gbGFzdFRpbWVyRmly
ZUNvdW50KTsKKworICAgIGF1dG8gdGVzdFJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsKKyAg
ICBpZCB0ZXN0SW50ZXJhY3Rpb25TdGF0ZSA9IFt3ZWJWaWV3IGludGVyYWN0aW9uU3RhdGVdOwor
ICAgIGF1dG8gb3JpZ2luYWxVUkwgPSBbd2ViVmlldyBVUkxdOworCisgICAgLy8gU3VzcGVuZCB0
aGUgcGFnZS4KKyAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJPT0wgc3Vj
Y2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IC8vIFRoZSB0aW1lciBzaG91bGQgbm8gbG9uZ2VyIGJlIGZpcmluZy4KKyAgICBsYXN0VGltZXJG
aXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoMTAwKTsKKyAgICBFWFBFQ1RfRVEobGFzdFRpbWVyRmlyZUNvdW50LCB0aW1lckZp
cmVkQ291bnQpOworCisgICAgYXV0byBjaGVja1Rocm93cyA9IFtdKEZ1bmN0aW9uPHZvaWQoKT4m
JiBmKSB7CisgICAgICAgIEB0cnkgeworICAgICAgICAgICAgZigpOworICAgICAgICB9IEBjYXRj
aCAoTlNFeGNlcHRpb24gKmUpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLy8gTW9zdCBvcGVyYXRpb25z
IG9uIFdLV2ViVmlldyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gc3VzcGVuZGVkLgor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAIndpbmRvdy5uYW1lIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQ
RUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlMiJdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3Mo
WyZdIHsgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJmb28iIGJhc2VVUkw6bmlsXTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtOndlYlZpZXcuZ2V0KCkuYmFja0ZvcndhcmRMaXN0LmN1cnJlbnRJdGVtXTsgfSkp
OworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJlbG9hZF07IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyByZWxvYWRGcm9t
T3JpZ2luXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3
IGdvQmFja107IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmll
dyBnb0ZvcndhcmRdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dl
YlZpZXcgc3RvcExvYWRpbmddOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3
IHBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5
YmFja1N1c3BlbmRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVD
VF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3Rh
dGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihXS01lZGlhUGxheWJhY2tTdGF0ZSkgeyB9XTsgfSkp
OworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldENhbWVyYUNh
cHR1cmVTdGF0ZTpXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlIGNvbXBsZXRpb25IYW5kbGVyOm5p
bF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRN
aWNyb3Bob25lQ2FwdHVyZVN0YXRlOldLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsgfSkpOworI2lmIFRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBFQ1RfVFJV
RShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlv
bjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihVSUltYWdlICpzbmFwc2hvdCwgTlNFcnJvciAqZXJy
b3IpIHsgfV07IH0pKTsKKyNlbHNlCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsg
W3dlYlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNJbWFnZSAqc25hcHNob3QsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisjZW5k
aWYKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBjcmVhdGVQREZX
aXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKmRhdGEsIE5T
RXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgY3JlYXRlV2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihO
U0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcyA9IFlFUzsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7
IHdlYlZpZXcuZ2V0KCkuY3VzdG9tVXNlckFnZW50ID0gQCJmb28iOyB9KSk7CisgICAgRVhQRUNU
X1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5hbGxvd3NMaW5rUHJldmlldyA9
IFlFUzsgfSkpOworI2lmICFUQVJHRVRfT1NfSVBIT05FCisgICAgRVhQRUNUX1RSVUUoY2hlY2tU
aHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5hbGxvd3NNYWduaWZpY2F0aW9uID0gWUVTOyB9KSk7
CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5tYWduaWZp
Y2F0aW9uID0gMS4xOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dl
YlZpZXcgc2V0TWFnbmlmaWNhdGlvbjoxLjEgY2VudGVyZWRBdFBvaW50OkNHUG9pbnRNYWtlKDAs
IDApXTsgfSkpOworI2VuZGlmCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2Vi
Vmlldy5nZXQoKS5wYWdlWm9vbSA9IDEuMTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhy
b3dzKFsmXSB7IFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJmb28iIHdpdGhDb25maWd1cmF0aW9uOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7IH1dOyB9KSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVz
aW5nUmVxdWVzdDp0ZXN0UmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2Vi
Vmlldy5nZXQoKS5pbnRlcmFjdGlvblN0YXRlID0gdGVzdEludGVyYWN0aW9uU3RhdGU7IH0pKTsK
KyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLm1lZGlhVHlw
ZSA9IEAidGV4dC9odG1sIjsgfSkpOworCisgICAgLy8gU29tZSBvZiB0aGUgYmFzaWMgQVBJIHN0
aWxsIHdvcmtzLgorICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBVUkxdLmFic29sdXRlU3Ry
aW5nLCBvcmlnaW5hbFVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3
IGJhY2tGb3J3YXJkTGlzdF0uYmFja0l0ZW0sIG5pbCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3
ZWJWaWV3IHRpdGxlXSwgQCIiKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaXNMb2FkaW5n
XSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IGVzdGltYXRlZFByb2dyZXNzXSwgMS4wKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgY2FuR29CYWNrXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IGNhbkdvRm9yd2FyZF0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBoYXNPbmx5
U2VjdXJlQ29udGVudF0pOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBzZXJ2ZXJUcnVzdF0sIG5p
bCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IGNhbWVyYUNhcHR1cmVTdGF0ZV0sIFdLTWVkaWFD
YXB0dXJlU3RhdGVOb25lKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgbWljcm9waG9uZUNhcHR1
cmVTdGF0ZV0sIFdLTWVkaWFDYXB0dXJlU3RhdGVOb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcgY3VzdG9tVXNlckFnZW50XSwgQCIiKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBhbGxvd3NMaW5rUHJldmlld10pOworI2lmICFUQVJHRVRfT1NfSVBIT05FCisgICAgRVhQRUNU
X0ZBTFNFKFt3ZWJWaWV3IGFsbG93c01hZ25pZmljYXRpb25dKTsKKyAgICBFWFBFQ1RfRVEoW3dl
YlZpZXcgbWFnbmlmaWNhdGlvbl0sIDEuMCk7CisjZW5kaWYKKyAgICBFWFBFQ1RfRVEoW3dlYlZp
ZXcgcGFnZVpvb21dLCAxLjApOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBtZWRpYVR5
cGVdLCBAIiIpOworICAgIEVYUEVDVF9GQUxTRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBp
bnRlcmFjdGlvblN0YXRlXTsgfSkpOworICAgIEVYUEVDVF9GQUxTRShjaGVja1Rocm93cyhbJl0g
eyBbd2ViVmlldyB0aGVtZUNvbG9yXTsgfSkpOworCisgICAgLy8gUmVzdW1lIHRoZSBwYWdlLgor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfcmVzdW1lUGFnZTpeKEJPT0wgc3VjY2Vz
cykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBbd2Vi
VmlldyBhZGRUb1Rlc3RXaW5kb3ddOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBzdGFydCBm
aXJpbmcgYWdhaW4uCisgICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENvdW50Owor
ICAgIHdoaWxlIChsYXN0VGltZXJGaXJlQ291bnQgPT0gdGltZXJGaXJlZENvdW50KQorICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisgICAgRVhQRUNUX1RSVUUo
dGltZXJGaXJlZENvdW50ID4gbGFzdFRpbWVyRmlyZUNvdW50KTsKKworICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBkaWQgbm90IGNyYXNoLgorICAgIEVYUEVDVF9FUShwaWQsIFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl0pOworfQorCitURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBEZWFsbG9jYXRl
U3VzcGVuZGVkVmlldykKK3sKKyAgICAvLyBEZWFsbG9jYXRpbmcgYSBzdXNwZW5kZWQgV2ViVmll
dyBzaG91bGQgbm90IHRocm93IG9yIGNyYXNoLgorICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKyAgICAgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJPT0wgc3VjY2Vz
cykgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICAgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAgICB9Cit9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3Vs
YXJseS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVz
c2FnZS1yZWd1bGFybHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2E2YjA0YmQxNWUwMGQ4Y2JkYmVlY2Ex
NmRiMjk2NmVjNWE1OWU5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEU+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KK3NldEludGVydmFsKCgp
ID0+IHsKKyAgICB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdl
KCd0aW1lciBmaXJlZCcpOworfSwgNSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428341</attachid>
            <date>2021-05-11 21:02:48 -0700</date>
            <delta_ts>2021-05-11 21:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210511210244.patch</filename>
            <type>text/plain</type>
            <size>132392</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZWRhMzg4YTNjODY2
ZTRmYjMwYWM5MGE4OGY4NzU4NTRlODkyZi4uMTk5ZWY4MTE0Y2M3YjJiOGUyMDY5MGJjZmNlZmNj
OGEyMzZjMjYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9uIHRv
IEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hlZFBh
Z2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rvcmlu
ZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBpcyB1
c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRvIG5v
dCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdhdGlv
bikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFja0Zv
cndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0cnlT
dXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNh
Y2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFn
ZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICogaGlz
dG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc3MzQx
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkMTgxM2Q1YWQ3Y2VlOWExNjIzNjFhMGE4N2JjZDgyZjJiZjYyYTZjLi5j
M2M4ZmIwYjliOWYwY2Q1ZGRkYTQ4NDNmY2JkZDA0MmUwYjNhYzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwMCBAQAorMjAyMS0wNS0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAg
IDxyZGFyOi8vNzc0NjI1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisK
KyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBUaGlzIHN1
c3BlbmRzIHRoZSBwYWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlIGJ1dCB0aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVkIHRvIG5h
dmlnYXRlLgorICAgICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFydCBvZiB0
aGUgQmFjay9Gb3J3YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51bWJlciBv
ZiBzdXNwZW5kZWQgcGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICBNb3N0IG9m
IFdLV2ViVmlldydzIEFQSSAvIFNQSSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxl
ZCBvbiBhIHN1c3BlbmRlZAorICAgICAgICB2aWV3IChUaGUgV0tQYWdlUmVmQVBJIHdpbGwgUkVM
RUFTRV9BU1NFUlQoKSkuIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSB3aWxsIHN0YXkKKyAgICAgICAg
ZnVuY3Rpb25hbCAoVVJMLCBpc0xvYWRpbmcsIHRpdGxlLCAuLi4pLiBJdCBpcyBhbHNvIHNhZmUg
dG8gZGVhbGxvY2F0ZSAvIGNsb3NlCisgICAgICAgIGEgc3VzcGVuZGVkIFdLV2ViVmlldy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoY3Jhc2hJZlBh
Z2VJc1N1c3BlbmRlZCk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToKKyAgICAgICAgKFdLUGFn
ZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6CisgICAgICAgIChXS1Bh
Z2VMb2FkVVJMV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWRGaWxlKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKToKKyAg
ICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhV2l0aFVzZXJE
YXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxv
YWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVz
ZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VM
b2FkV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0
aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLUGFn
ZVJlbG9hZCk6CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKToK
KyAgICAgICAgKFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdlUmVsb2Fk
RXhwaXJlZE9ubHkpOgorICAgICAgICAoV0tQYWdlVHJ5Q2xvc2UpOgorICAgICAgICAoV0tQYWdl
Q2xvc2UpOgorICAgICAgICAoV0tQYWdlR29Gb3J3YXJkKToKKyAgICAgICAgKFdLUGFnZUdvQmFj
ayk6CisgICAgICAgIChXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChX
S1BhZ2VUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV0tQYWdlVXBkYXRlV2Vi
c2l0ZVBvbGljaWVzKToKKyAgICAgICAgKFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCk6CisgICAgICAgIChXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXS1BhZ2VUZXJtaW5hdGUp
OgorICAgICAgICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV0tQ
YWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbik6CisgICAgICAgIChX
S1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0VGV4
dFpvb21GYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChXS1BhZ2VTZXRT
Y2FsZUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VTZXRVc2VGaXhlZExheW91dCk6CisgICAgICAg
IChXS1BhZ2VTZXRGaXhlZExheW91dFNpemUpOgorICAgICAgICAoV0tQYWdlTGlzdGVuRm9yTGF5
b3V0TWlsZXN0b25lcyk6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMpOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQpOgorICAgICAgICAo
V0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KToKKyAgICAgICAgKFdLUGFnZVNldFJ1YmJlckJh
bmRzQXRUb3ApOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbSk6CisgICAg
ICAgIChXS1BhZ2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQ
YWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0
QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRp
b25Nb2RlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxlbmd0aCk6CisgICAgICAgIChXS1BhZ2VTZXRHYXBC
ZXR3ZWVuUGFnZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZCk6CisgICAgICAgIChXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbik6CisgICAg
ICAgIChXS1BhZ2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKToKKyAgICAgICAgKFdLUGFn
ZUZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNo
KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdEZpbmRNYXRjaCk6CisgICAgICAgIChXS1BhZ2VGaW5k
U3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUhpZGVGaW5kVUkpOgorICAgICAgICAoV0tQYWdlQ291
bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlRmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0
YXRlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6Cisg
ICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYik6CisgICAgICAgIChXS1Bh
Z2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRT
b3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAgKFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAg
ICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOgorICAgICAgICAoV0tQYWdlVmFsaWRhdGVDb21tYW5k
KToKKyAgICAgICAgKFdLUGFnZUV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdLUGFnZUNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdLUGFnZUJlZ2luUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRW5kUHJpbnRpbmcp
OgorICAgICAgICAoV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbik6CisgICAgICAgIChX
S1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlh
Vm9sdW1lKToKKyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1l
ZGlhQ2FwdHVyZUVuYWJsZWQpOgorICAgICAgICAoV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayk6
CisgICAgICAgIChXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKToKKyAgICAgICAgKFdLUGFnZURp
ZERlbnlQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbSk6CisgICAgICAg
IChXS1BhZ2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV0tQYWdlU2V0QWRk
c1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRv
cik6CisgICAgICAgIChXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKToKKyAg
ICAgICAgKFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKToKKyAgICAgICAgKFdL
UGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgIChXS1BhZ2VEdW1wUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6CisgICAgICAgIChX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0
dXJlVVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFy
a1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAo
V0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChX
S1BhZ2VTZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24pOgorICAgICAgICAoV0tQYWdlTG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9y
VGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
bG9hZEZpbGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9h
ZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3RvcExvYWRpbmddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDppbkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFt
ZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3Bl
bmRlZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RN
ZWRpYVBsYXliYWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5j
RnVuY3Rpb246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5G
cmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
dGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgc2V0UGFnZVpvb206XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
c2V0TWVkaWFUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0SW50ZXJhY3Rpb25TdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c01hZ25pZmljYXRpb246XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOmNlbnRlcmVkQXRQb2ludDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBwcmludE9wZXJhdGlvbldpdGhQcmludEluZm86XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9u
c2U6cmVzcG9uc2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJl
cXVlc3Q6d2l0aFJlc3BvbnNlOnJlc3BvbnNlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25zZUhUTUxTdHJpbmc6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVJlcXVlc3Q6YWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbmNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kZWNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9j
aGFuZ2VMaXN0VHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEVuYWJsZUJy
b3dzZXJFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZERpc2FibGVCcm93
c2VyRXh0ZW5zaW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRFZGl0YWJsZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0
aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlUGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc3RvcE1lZGlhQ2FwdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3BBbGxN
ZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2FkZEFwcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFibGVVUkw6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdO
YW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVl
c3Q6c2hvdWxkT3BlbkV4dGVybmFsVVJMczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2Fk
UmVxdWVzdDpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2dyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeV0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZFBhZ2U6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfcmVzdW1lUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
a2lsbFdlYkNvbnRlbnRQcm9jZXNzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0
aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZEV4cGly
ZWRPbmx5XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5k
UmVzZXRTdGF0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdHJ5Q2xvc2Vd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNv
bnRlbnRUeXBlOmRhdGE6b3B0aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6b3B0aW9uczpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOmJldGE6Z2FtbWE6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6d2Fy
bmluZzpkZXRhaWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDp0aXRsZTp3YXJuaW5nOmRldGFpbHM6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmdXaXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWlsc1dpdGhMaW5rczpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0phdmFT
Y3JpcHQ6YXJndW1lbnRzOmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5D
b250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0OndpdGhTb3VyY2VVUkw6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVXZWJwYWdl
UHJlZmVyZW5jZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbm90aWZ5VXNlclNjcmlwdHNd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZp
Y2F0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlv
bjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJy
aWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFkZHNWaXNpdGVkTGlua3M6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3Ry
aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENv
bnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBh
Z2luYXRpb25Nb2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25CZWhh
dmVzTGlrZUNvbHVtbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnZUxlbmd0aDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRUZXh0Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRQYWdlWm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmlu
Z01hdGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5k
U3RyaW5nOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZp
bmRVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9y
SXRlbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRMYXlvdXRNb2RlOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NldEZpeGVkTGF5b3V0U2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c2V0Vmlld1NjYWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENPUlNEaXNhYmxpbmdQ
YXR0ZXJuczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRQcm9jZXNzRGlzcGxheU5hbWVX
aXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11
bUVmZmVjdGl2ZURldmljZVdpZHRoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dyYW50QWNj
ZXNzVG9QcmVmZXJlbmNlU2VydmljZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFNjcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldFBhZ2VNdXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVEYXRhRGV0
ZWN0ZWRMaW5rczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFj
a1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQ
cm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTExICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3RdIHNob3VsZCBo
YXZlIENTUyBgaG92ZXI6IGhvdmVyYCBhbmQgYHBvaW50ZXI6IGZpbmVgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCA1MWQ4NTQ3YjY4ZDQ3MjhhOWM1YTQ0MzQxZmM0ODM3M2ExMTNhOThjLi42MTVjZmI4
ZjBjOTRjMmIxNGYwOTUzZGNiYzA4ZjRhNmRhZjdlZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTYwOCw2ICs2MDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0
b3J5L0NhY2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9B
dXRvY2FwaXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hl
LmNwcAppbmRleCAyN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNh
ZWNhMTIyMmY4ZTk0Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRp
YyB2b2lkIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAg
ICBmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0Zv
cndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2Up
CitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVu
ZFBhZ2UoUGFnZSYgcGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAg
ICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1h
aW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5t
YWluRnJhbWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYg
KCFjYW5DYWNoZSgqcGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VT
dXNwZW5zaW9uID09IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlz
VXRpbGl0eVBhZ2UoKSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91
bGQgbmV2ZXIgZ28gaW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghcGFnZS5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1h
Z2UgcGFnZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAg
c2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFj
a0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3Vt
ZW50OjpBYm91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBt
YWluIGZyYW1lLCBkZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUp
LiBXZSBkbyB0aGlzIGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFj
ay9mb3J3YXJkIGNhY2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9j
dXMgZXZlbnRzLgotICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUo
KSkKLSAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdl
LT5tYWluRnJhbWUoKSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZy
YW1lKCkpCisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZw
YWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFs
bCBmcmFtZXMuCi0gICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJh
bWUoKSk7CisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgp
KTsKIAotICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0
cm95UmVuZGVyVHJlZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRz
IGFnYWluIGJlZm9yZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0
ZXIgZmlyaW5nIHRoZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkg
aGF2ZSBzdGFydGVkIHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsK
KyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7
CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFm
dGVyIGZpcmluZyB0aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAg
IC8vIGNvdWxkIGhhdmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZl
bnQgY2FjaGluZy4KLSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNr
Rm9yd2FyZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3Jj
ZVN1c3BlbnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9y
d2FyZENhY2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVT
dGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0Zv
cndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisg
ICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3Bl
LgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKwor
Ym9vbCBCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwg
UGFnZSogcGFnZSkKK3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1
c3BlbnNpb246Ok5vKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2
ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQ
YWdlKG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNo
ZWRQYWdlKFdURk1vdmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNv
biA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAg
ICB9CkBAIC00ODEsNiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNo
ZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZShQYWdlJiBwYWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJC
YWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVu
ZFBhZ2UocGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8
Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFn
ZSogcGFnZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJk
N2YxZDJjMzlkNDc1MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgx
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5z
aWduZWQpOyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVu
ZXMgaWYgbWF4U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlKEhpc3RvcnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFn
ZSopOwpAQCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3Jj
ZVN1c3BlbnNpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNo
ZWRQYWdlPiB0cnlTdXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lk
IHBydW5lKFBydW5pbmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIy
Yzk1ZTM4ODVkMjUuLjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENh
Y2hlZFBhZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAK
ICAgICBQYWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA2M2FmMDVjZGZhODA0YzU4MDYwNDg3ZjBk
Y2IwMTdiNTllMGVkMDI1Li4wOGYyMDI2MzRmNGMxM2ExNGIzMzA0MTk3ODY5NTVlNDI2NGY0MDRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE0Myw2ICsx
NDMsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVN0YXRlQ2xpZW50
QmFzZT4gewogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTkVWRVJfSU5MSU5F
IHZvaWQgY3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBp
ZiAocGFnZVJlZiAmJiB0b0ltcGwocGFnZVJlZiktPmlzU3VzcGVuZGVkKCkpCisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3I6IEF0dGVtcHQgdG8gY2FsbCBXS1BhZ2VSZWYgQVBJL1NQSSBvbiBh
IHN1c3BlbmRlZCBwYWdlLCB0aGlzIGlzIGEgY2xpZW50IGJ1Zy4iKTsKKyAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0UoIXBhZ2VSZWYgfHwgIXRvSW1wbChwYWdlUmVmKS0+aXNTdXNwZW5k
ZWQoKSwgIllvdSBjYW5ub3QgY2FsbCB0aGlzIEFQSS9TUEkgb24gYSBzdXNwZW5kZWQgcGFnZSIp
OworfQorCisjZGVmaW5lIENSQVNIX0lGX1NVU1BFTkRFRCBjcmFzaElmUGFnZUlzU3VzcGVuZGVk
KHBhZ2VSZWYpCisKIFdLVHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpCiB7CiAgICAgcmV0dXJuIHRv
QVBJKFdlYlBhZ2VQcm94eTo6QVBJVHlwZSk7CkBAIC0xNjUsNDkgKzE3NCw1OCBAQCBXS1BhZ2VD
b25maWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBV
UkxSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSk7CiB9CiAKIHZvaWQg
V0tQYWdlTG9hZFVSTFdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYsIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsVVJMcykKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVy
bmFsVVJMcyA/IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFs
bG93IDogV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxs
b3c7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKFVSTFJlZikpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkVVJMV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVS
TFJlZikpLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdywgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVl
c3QoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0UmVmKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIHJlc291cmNlUmVxdWVzdCA9IHRvSW1w
bCh1cmxSZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5sb2FkUmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCkpOwogfQogCiB2b2lkIFdLUGFn
ZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlcXVl
c3RSZWYgdXJsUmVxdWVzdFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIHJlc291cmNlUmVxdWVzdCA9IHRvSW1wbCh1cmxSZXF1
ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVx
dWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAog
dm9pZCBXS1BhZ2VMb2FkRmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgZmlsZVVSTCwg
V0tVUkxSZWYgcmVzb3VyY2VEaXJlY3RvcnlVUkwpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEZpbGUodG9XVEZTdHJpbmcoZmlsZVVSTCksIHRv
V1RGU3RyaW5nKHJlc291cmNlRGlyZWN0b3J5VVJMKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEZp
bGVXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIGZpbGVVUkwsIFdLVVJM
UmVmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEZpbGUodG9XVEZT
dHJpbmcoZmlsZVVSTCksIHRvV1RGU3RyaW5nKHJlc291cmNlRGlyZWN0b3J5VVJMKSwgdG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZERhdGEoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLRGF0YVJlZiBkYXRhUmVmLCBXS1N0cmluZ1JlZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdS
ZWYgZW5jb2RpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5k
YXRhUmVmZXJlbmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5j
b2RpbmdSZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9h
ZERhdGFXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiBkYXRhUmVmLCBX
S1N0cmluZ1JlZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdSZWYsIFdLVVJMUmVm
IGJhc2VVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwoZGF0YVJlZiktPmRh
dGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNv
ZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsK
IH0KIApAQCAtMjMzLDUyICsyNTEsNjIgQEAgc3RhdGljIHZvaWQgbG9hZFN0cmluZyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjb25zdCBTdHJpbmcmIG0KIAogdm9p
ZCBXS1BhZ2VMb2FkSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRt
bFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRoVXNlckRhdGEocGFnZVJlZiwgaHRtbFN0
cmluZ1JlZiwgYmFzZVVSTFJlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEhUTUxT
dHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJp
bmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBodG1sU3RyaW5n
UmVmLCAidGV4dC9odG1sIl9zLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwgdXNlckRhdGFSZWYp
OwogfQogCiB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1VS
TFJlZiB1bnJlYWNoYWJsZVVSTFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
V0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXNlckRhdGEocGFnZVJlZiwgaHRtbFN0
cmluZ1JlZiwgYmFzZVVSTFJlZiwgdW5yZWFjaGFibGVVUkxSZWYsIG51bGxwdHIpOwogfQogCiB2
b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBX
S1VSTFJlZiB1bnJlYWNoYWJsZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBTdHJpbmcgc3RyaW5nID0gdG9XVEZTdHJpbmcoaHRt
bFN0cmluZ1JlZik7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkQWx0ZXJuYXRlSFRNTChkYXRh
RnJvbShzdHJpbmcpLCBlbmNvZGluZ09mKHN0cmluZyksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmco
YmFzZVVSTFJlZikpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVucmVhY2hhYmxlVVJMUmVmKSks
IHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZ1JlZikKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dp
dGhVc2VyRGF0YShwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsIG51bGxwdHIpOwogfQogCiB2
b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBsb2FkU3RyaW5nKHBhZ2VSZWYsIHBs
YWluVGV4dFN0cmluZ1JlZiwgInRleHQvcGxhaW4iX3MsIGFib3V0QmxhbmtVUkwoKS5zdHJpbmco
KSwgdXNlckRhdGFSZWYpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRXZWJBcmNoaXZlRGF0YShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIHdlYkFyY2hpdmVEYXRhUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRXZWJBcmNoaXZlRGF0YSh0
b0ltcGwod2ViQXJjaGl2ZURhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2
ZURhdGFXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZl
RGF0YVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRXZWJBcmNoaXZlRGF0YSh0b0ltcGwod2ViQXJj
aGl2ZURhdGFSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VTdG9w
TG9hZGluZyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwogfQogCiB2b2lkIFdLUGFnZVJlbG9h
ZChXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgT3B0
aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYkNvcmU6OlNES1ZlcnNpb246OkZp
cnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQpAQCAtMjkwLDIxICszMTgsMjUgQEAg
dm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlUmVsb2Fk
V2l0aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2Fk
T3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRG
cm9tT3JpZ2luKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZyb21P
cmlnaW4pOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZEV4cGlyZWRPbmx5KFdLUGFnZVJlZiBwYWdl
UmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJl
bG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KTsKIH0KIAogYm9vbCBXS1Bh
Z2VUcnlDbG9zZShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+dHJ5Q2xvc2UoKTsKIH0KIApAQCAtMzIwLDYg
KzM1Miw3IEBAIGJvb2wgV0tQYWdlSXNDbG9zZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQg
V0tQYWdlR29Gb3J3YXJkKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdvRm9yd2FyZCgpOwogfQogCkBAIC0zMzAsNiAr
MzYzLDcgQEAgYm9vbCBXS1BhZ2VDYW5Hb0ZvcndhcmQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZv
aWQgV0tQYWdlR29CYWNrKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICBhdXRvJiBwYWdlID0gKnRvSW1wbChwYWdlUmVmKTsKICAgICBpZiAocGFnZS5w
YWdlQ2xpZW50KCkuaGFzU2FmZUJyb3dzaW5nV2FybmluZygpKSB7CiAgICAgICAgIFdLUGFnZVJl
bG9hZChwYWdlUmVmKTsKQEAgLTM0NSwxMSArMzc5LDEzIEBAIGJvb2wgV0tQYWdlQ2FuR29CYWNr
KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nb1RvQmFja0Zv
cndhcmRJdGVtKCp0b0ltcGwoaXRlbVJlZikpOwogfQogCiB2b2lkIFdLUGFnZVRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT50cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIH0K
IApAQCAtMzY1LDYgKzQwMSw3IEBAIGJvb2wgV0tQYWdlV2lsbEhhbmRsZUhvcml6b250YWxTY3Jv
bGxFdmVudHMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlVXBkYXRlV2Vic2l0ZVBv
bGljaWVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9s
aWNpZXNSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfTUVTU0FHRSghdG9JbXBsKHdlYnNpdGVQb2xpY2llc1JlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKSwgIlNldHRpbmcgV2Vic2l0ZVBvbGljaWVzLndlYnNpdGVEYXRhU3RvcmUgaXMgb25seSBz
dXBwb3J0ZWQgZHVyaW5nIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcygpLiIp
OwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghdG9JbXBsKHdlYnNpdGVQb2xpY2ll
c1JlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLCAiU2V0dGluZyBXZWJzaXRlUG9saWNpZXMu
dXNlckNvbnRlbnRDb250cm9sbGVyIGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMoKS4iKTsKICAgICBhdXRvIGRhdGEgPSB0b0ltcGwo
d2Vic2l0ZVBvbGljaWVzUmVmKS0+ZGF0YSgpOwpAQCAtNDIzLDYgKzQ2MCw3IEBAIFdLU3RyaW5n
UmVmIFdLUGFnZUNvcHlBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiAKIHZvaWQgV0tQYWdlU2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBhcHBsaWNhdGlvbk5hbWVSZWYpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50KHRvV1RGU3RyaW5nKGFwcGxpY2F0aW9uTmFtZVJlZikpOwogfQogCkBAIC00MzMs
NiArNDcxLDcgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weUN1c3RvbVVzZXJBZ2VudChXS1BhZ2VS
ZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHVzZXJBZ2VudFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDdXN0b21Vc2VyQWdlbnQodG9XVEZTdHJpbmco
dXNlckFnZW50UmVmKSk7CiB9CiAKQEAgLTQ1MywxMSArNDkyLDEzIEBAIFdLU3RyaW5nUmVmIFdL
UGFnZUNvcHlDdXN0b21UZXh0RW5jb2RpbmdOYW1lKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lk
IFdLUGFnZVNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIGVuY29kaW5nTmFtZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKHRvV1RGU3RyaW5nKGVu
Y29kaW5nTmFtZVJlZikpOwogfQogCiB2b2lkIFdLUGFnZVRlcm1pbmF0ZShXS1BhZ2VSZWYgcGFn
ZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gcHJvdGVjdGVkUHJvY2Vzc1Byb3h5KHRvSW1wbChwYWdlUmVmKS0+cHJvY2VzcygpKTsKICAg
ICBwcm90ZWN0ZWRQcm9jZXNzUHJveHktPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWlu
YXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50KTsKIH0KQEAgLTUxOCwxMSArNTU5LDEzIEBA
IHN0YXRpYyB2b2lkIHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1R5cGVSZWYgc2Vzc2lvblN0YXRlUmVmCiAKIHZvaWQgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9u
U3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNzaW9uU3RhdGVSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHBhZ2VS
ZWYsIHNlc3Npb25TdGF0ZVJlZiwgdHJ1ZSk7CiB9CiAKIHZvaWQgV0tQYWdlUmVzdG9yZUZyb21T
ZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBlUmVm
IHNlc3Npb25TdGF0ZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGUocGFnZVJlZiwgc2Vzc2lvblN0YXRlUmVmLCBmYWxzZSk7CiB9CiAK
QEAgLTUzOCw2ICs1ODEsNyBAQCBkb3VibGUgV0tQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdL
UGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rv
cihXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIGN1c3RvbVNjYWxlRmFjdG9yKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbURldmljZVNj
YWxlRmFjdG9yKGN1c3RvbVNjYWxlRmFjdG9yKTsKIH0KIApAQCAtNTQ4LDYgKzU5Miw3IEBAIGJv
b2wgV0tQYWdlU3VwcG9ydHNUZXh0Wm9vbShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VTZXRUZXh0Wm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHpvb21GYWN0b3Ip
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VGV4
dFpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKQEAgLTU1OCwxNiArNjAzLDE5IEBAIGRvdWJs
ZSBXS1BhZ2VHZXRQYWdlWm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VTZXRQYWdlWm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHpvb21GYWN0b3Ip
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFn
ZVpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycyhXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3Vi
bGUgdGV4dFpvb21GYWN0b3IpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhwYWdlWm9vbUZhY3RvciwgdGV4
dFpvb21GYWN0b3IpOwogfQogCiB2b2lkIFdLUGFnZVNldFNjYWxlRmFjdG9yKFdLUGFnZVJlZiBw
YWdlUmVmLCBkb3VibGUgc2NhbGUsIFdLUG9pbnQgb3JpZ2luKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNjYWxlUGFnZShzY2FsZSwgdG9JbnRQb2lu
dChvcmlnaW4pKTsKIH0KIApAQCAtNTc4LDExICs2MjYsMTMgQEAgZG91YmxlIFdLUGFnZUdldFNj
YWxlRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFVzZUZpeGVkTGF5
b3V0KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGZpeGVkKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRGaXhlZExheW91dFNpemUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU2l6
ZSBzaXplKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZikt
PnNldEZpeGVkTGF5b3V0U2l6ZSh0b0ludFNpemUoc2l6ZSkpOwogfQogCkBAIC01OTgsNiArNjQ4
LDcgQEAgV0tTaXplIFdLUGFnZUZpeGVkTGF5b3V0U2l6ZShXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0xheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5saXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHRvTGF5b3V0
TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiB9CiAKQEAgLTYxMyw2ICs2NjQsNyBAQCBib29sIFdL
UGFnZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFn
ZVNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBz
dXBwcmVzc0FuaW1hdGlvbnMpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0
aW9ucyk7CiB9CiAKQEAgLTY0OCw2ICs3MDAsNyBAQCBib29sIFdLUGFnZVJ1YmJlckJhbmRzQXRM
ZWZ0KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFJ1YmJlckJhbmRzQXRMZWZ0
KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRMZWZ0KQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFJ1YmJlckJhbmRzQXRMZWZ0
KHJ1YmJlckJhbmRzQXRMZWZ0KTsKIH0KIApAQCAtNjU4LDYgKzcxMSw3IEBAIGJvb2wgV0tQYWdl
UnViYmVyQmFuZHNBdFJpZ2h0KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFJ1
YmJlckJhbmRzQXRSaWdodChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBydWJiZXJCYW5kc0F0Umln
aHQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UnViYmVyQmFuZHNBdFJpZ2h0KHJ1YmJlckJhbmRzQXRSaWdodCk7CiB9CiAKQEAgLTY2OCw2ICs3
MjIsNyBAQCBib29sIFdLUGFnZVJ1YmJlckJhbmRzQXRUb3AoV0tQYWdlUmVmIHBhZ2VSZWYpCiAK
IHZvaWQgV0tQYWdlU2V0UnViYmVyQmFuZHNBdFRvcChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBy
dWJiZXJCYW5kc0F0VG9wKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwo
cGFnZVJlZiktPnNldFJ1YmJlckJhbmRzQXRUb3AocnViYmVyQmFuZHNBdFRvcCk7CiB9CiAKQEAg
LTY3OCw2ICs3MzMsNyBAQCBib29sIFdLUGFnZVJ1YmJlckJhbmRzQXRCb3R0b20oV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbShXS1BhZ2VSZWYg
cGFnZVJlZiwgYm9vbCBydWJiZXJCYW5kc0F0Qm90dG9tKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFJ1YmJlckJhbmRzQXRCb3R0b20ocnViYmVy
QmFuZHNBdEJvdHRvbSk7CiB9CiAKQEAgLTY4OCw2ICs3NDQsNyBAQCBib29sIFdLUGFnZVZlcnRp
Y2FsUnViYmVyQmFuZGluZ0lzRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wg
ZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPnNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFi
bGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOwogfQogCkBAIC02OTgsMTEgKzc1NSwxMyBAQCBib29s
IFdLUGFnZUhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVm
KQogCiB2b2lkIFdLUGFnZVNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKFdLUGFnZVJl
ZiBwYWdlUmVmLCBib29sIGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEVuYWJsZUhvcml6b250
YWxSdWJiZXJCYW5kaW5nKGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKTsKIH0KIAogdm9p
ZCBXS1BhZ2VTZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoV0tQYWdlUmVmIHBhZ2VSZWYs
IGJvb2wgYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFn
ZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpOwogfQogCkBAIC03MTMsNiArNzcyLDcgQEAg
Ym9vbCBXS1BhZ2VCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoV0tQYWdlUmVmIHBhZ2VSZWYp
CiAKIHZvaWQgV0tQYWdlU2V0UGFnaW5hdGlvbk1vZGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
aW5hdGlvbk1vZGUgcGFnaW5hdGlvbk1vZGUpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZTsKICAgICBzd2l0Y2ggKHBhZ2luYXRp
b25Nb2RlKSB7CiAgICAgY2FzZSBrV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOgpAQCAtNzU3
LDYgKzgxNyw3IEBAIFdLUGFnaW5hdGlvbk1vZGUgV0tQYWdlR2V0UGFnaW5hdGlvbk1vZGUoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29s
dW1ucyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnaW5hdGlvbkJl
aGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpOwogfQogCkBAIC03NjcsNiArODI4
LDcgQEAgYm9vbCBXS1BhZ2VHZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMZW5ndGgoV0tQYWdlUmVmIHBhZ2VSZWYs
IGRvdWJsZSBwYWdlTGVuZ3RoKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPnNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCk7CiB9CiAKQEAgLTc3Nyw2ICs4
MzksNyBAQCBkb3VibGUgV0tQYWdlR2V0UGFnZUxlbmd0aChXS1BhZ2VSZWYgcGFnZVJlZikKIAog
dm9pZCBXS1BhZ2VTZXRHYXBCZXR3ZWVuUGFnZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBn
YXApCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
R2FwQmV0d2VlblBhZ2VzKGdhcCk7CiB9CiAKQEAgLTc4Nyw2ICs4NTAsNyBAQCBkb3VibGUgV0tQ
YWdlR2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNl
dFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgbGluZUdy
aWRFbmFibGVkKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQobGluZUdyaWRFbmFibGVkKTsKIH0KIApA
QCAtODE3LDQ2ICs4ODEsNTUgQEAgYm9vbCBXS1BhZ2VJc0NvbnRlbnRFZGl0YWJsZShXS1BhZ2VS
ZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihX
S1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBuZXdWYWx1ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+c2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxl
Y3Rpb24obmV3VmFsdWUpOwogfQogCiB2b2lkIFdLUGFnZUNlbnRlclNlbGVjdGlvbkluVmlzaWJs
ZUFyZWEoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKTsK
IH0KIAogdm9pZCBXS1BhZ2VGaW5kU3RyaW5nTWF0Y2hlcyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgc3RyaW5nLCBXS0ZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
ZmluZFN0cmluZ01hdGNoZXModG9JbXBsKHN0cmluZyktPnN0cmluZygpLCB0b0ZpbmRPcHRpb25z
KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRJbWFnZUZvckZp
bmRNYXRjaChXS1BhZ2VSZWYgcGFnZVJlZiwgaW50MzJfdCBtYXRjaEluZGV4KQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldEltYWdlRm9yRmluZE1h
dGNoKG1hdGNoSW5kZXgpOwogfQogCiB2b2lkIFdLUGFnZVNlbGVjdEZpbmRNYXRjaChXS1BhZ2VS
ZWYgcGFnZVJlZiwgaW50MzJfdCBtYXRjaEluZGV4KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KTsKIH0K
IAogdm9pZCBXS1BhZ2VGaW5kU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBz
dHJpbmcsIFdLRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5maW5kU3RyaW5n
KHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSwgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4TWF0
Y2hDb3VudCk7CiB9CiAKIHZvaWQgV0tQYWdlSGlkZUZpbmRVSShXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5oaWRlRmlu
ZFVJKCk7CiB9CiAKIHZvaWQgV0tQYWdlQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdLRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5jb3VudFN0cmluZ01hdGNoZXModG9JbXBsKHN0cmluZyktPnN0cmluZygpLCB0b0Zp
bmRPcHRpb25zKG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQ
YWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRl
eHRNZW51Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZT4sIHB1
YmxpYyBBUEk6OkNvbnRleHRNZW51Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC05NzMsNiArMTA0
Niw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0Ns
aWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgRmluZENsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VGaW5kQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkZp
bmRDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgRmluZENsaWVudChjb25z
dCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtMTAxMSw2ICsxMDg1LDcgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
RmluZENsaWVudEJhc2UqIHdrQ2wKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSog
d2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIEZpbmRNYXRj
aGVzQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFz
ZT4sIHB1YmxpYyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IGV4cGxpY2l0IEZpbmRNYXRjaGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50
QmFzZSogY2xpZW50KQpAQCAtMTA1NCwxNiArMTEyOSwxOSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VG
aW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNo
ZXNDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiB3a0NsaWVudCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudCh3a0NsaWVudCk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1D
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZvcm1DbGllbnRCYXNlKiB3a0Ns
aWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgY2xhc3MgTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUxv
YWRlckNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoK
ICAgICAgICAgZXhwbGljaXQgTG9hZGVyQ2xpZW50KGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqIGNsaWVudCkKQEAgLTEyMzQsNiArMTMxMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBQb2xpY3lDbGllbnQgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tQYWdlUG9saWN5Q2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OlBvbGljeUNsaWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQb2xpY3lDbGllbnQoY29uc3QgV0tQYWdl
UG9saWN5Q2xpZW50QmFzZSogY2xpZW50KQpAQCAtMTQ5Myw2ICsxNTcyLDcgQEAgdm9pZCBXS1Bh
Z2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1SZXN1bHRMaXN0ZW5lckNhbGwoV0tQYWdlUmVx
dWVzdFN0b3JhZ2VBY2MKIAogdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIGNsYXNzIFVJQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdL
UGFnZVVJQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGV4cGxpY2l0IFVJQ2xpZW50KGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogY2xpZW50
KQpAQCAtMjEzOCw2ICsyMjE4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKIAogdm9pZCBX
S1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdL
UGFnZU5hdmlnYXRpb25DbGllbnRCYXNlPiwgcHVibGljIEFQSTo6TmF2aWdhdGlvbkNsaWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uQ2xpZW50KGNvbnN0IFdL
UGFnZU5hdmlnYXRpb25DbGllbnRCYXNlKiBjbGllbnQpCkBAIC0yNTAzLDE2ICsyNTg0LDE4IEBA
IHByaXZhdGU6CiAgICAgfQogfTsKIAotdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQ
YWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQordm9pZCBXS1BhZ2VT
ZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZVN0YXRlQ2xpZW50QmFz
ZSogY2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoY2xpZW50KQot
ICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVl
PFN0YXRlQ2xpZW50PihjbGllbnQpKTsKKyAgICAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CiAgICAg
ZWxzZQotICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxs
cHRyKTsKKyAgICAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIo
bnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0lt
cGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRy
dWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICBpZiAo
cmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdWx0LnZh
bHVlKCkuZ2V0KCkpLCBudWxscHRyLCBjb250ZXh0KTsKQEAgLTI1MzEsNiArMjYxNCw3IEBAIHN0
YXRpYyB2b2lkIGNhbGxSdW5KYXZhU2NyaXB0QmxvY2tBbmRSZWxlYXNlKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIHJlc3VsdFZhCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgV0tQYWdlUnVu
SmF2YVNjcmlwdEJsb2NrIGJsb2NrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBX
S1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUocGFnZVJlZiwgc2NyaXB0UmVmLCBCbG9ja19j
b3B5KGJsb2NrKSwgY2FsbFJ1bkphdmFTY3JpcHRCbG9ja0FuZFJlbGVhc2UpOwogfQogI2VuZGlm
CkBAIC0yNTQ0LDMxICsyNjI4LDM3IEBAIHN0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiB0b1N0cmluZ0NhbGxiYWNrKHZvaWQqIGNvbnRleHQsIHZvCiAKIHZvaWQg
V0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYs
IHZvaWQqIGNvbnRleHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVu
Y3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChw
YWdlUmVmKS0+Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24odG9TdHJpbmdDYWxs
YmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldFNvdXJjZUZvckZy
YW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZUZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldFNvdXJjZUZvckZyYW1lKHRv
SW1wbChmcmFtZVJlZiksIHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0K
IAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lk
KiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nRnVuY3Rpb24gY2FsbGJhY2spCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVu
dHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpObywgdG9TdHJp
bmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldEJ5dGVj
b2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Qnl0
ZWNvZGVQcm9maWxlRnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQcm9maWxlKHRvU3RyaW5nQ2FsbGJh
Y2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh0
b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4
dCwgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRh
KSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBjb250ZXh0KTsKICAg
ICB9KTsKQEAgLTI1NzYsNiArMjY2Niw3IEBAIHZvaWQgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlCiAKIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YUZ1bmN0aW9uIGNhbGxiYWNrKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKFtjb250ZXh0LCBjYWxsYmFja10gKEFQ
STo6RGF0YSogZGF0YSkgewogICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwgbnVsbHB0ciwg
Y29udGV4dCk7CkBAIC0yNTg5LDYgKzI2ODAsNyBAQCB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNN
SFRNTERhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbgog
CiB2b2lkIFdLUGFnZUZvcmNlUmVwYWludChXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4
dCwgV0tQYWdlRm9yY2VSZXBhaW50RnVuY3Rpb24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Zm9yY2VSZXBhaW50KFtjb250ZXh0LCBj
YWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0p
OwpAQCAtMjYyNiw2ICsyNzE4LDcgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weVN0YW5kYXJkVXNl
ckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShXS1N0cmluZ1JlZiBhcHBsaWNhdGkKIAogdm9pZCBX
S1BhZ2VWYWxpZGF0ZUNvbW1hbmQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGNvbW1h
bmQsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVZhbGlkYXRlQ29tbWFuZENhbGxiYWNrIGNhbGxiYWNr
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGNvbW1hbmROYW1lID0gdG9J
bXBsKGNvbW1hbmQpLT5zdHJpbmcoKTsKICAgICB0b0ltcGwocGFnZVJlZiktPnZhbGlkYXRlQ29t
bWFuZChjb21tYW5kTmFtZSwgW2NvbnRleHQsIGNhbGxiYWNrLCBjb21tYW5kTmFtZV0oYm9vbCBp
c0VuYWJsZWQsIGludDMyX3Qgc3RhdGUpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpT
dHJpbmc6OmNyZWF0ZShjb21tYW5kTmFtZSkucHRyKCkpLCBpc0VuYWJsZWQsIHN0YXRlLCBudWxs
cHRyLCBjb250ZXh0KTsKQEAgLTI2MzQsNiArMjcyNyw3IEBAIHZvaWQgV0tQYWdlVmFsaWRhdGVD
b21tYW5kKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBjb21tYW5kLCB2b2lkKiBjb250
ZXh0CiAKIHZvaWQgV0tQYWdlRXhlY3V0ZUNvbW1hbmQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3Ry
aW5nUmVmIGNvbW1hbmQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChw
YWdlUmVmKS0+ZXhlY3V0ZUVkaXRDb21tYW5kKHRvSW1wbChjb21tYW5kKS0+c3RyaW5nKCkpOwog
fQogCkBAIC0yNjQ2LDkgKzI3NDAsMTAgQEAgc3RhdGljIFByaW50SW5mbyBwcmludEluZm9Gcm9t
V0tQcmludEluZm8oY29uc3QgV0tQcmludEluZm8mIHByaW50SW5mbykKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIFdLUGFnZUNvbXB1
dGVQYWdlc0ZvclByaW50aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCit2b2lk
IFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2UpLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9t
V0tQcmludEluZm8ocHJpbnRJbmZvKSwgW2NvbnRleHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mIHJlY3RzLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4pIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyh0
b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHJlY3RzLCBkb3Vi
bGUgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBh
Z2VNYXJnaW4pIHsKICAgICAgICAgVmVjdG9yPFdLUmVjdD4gd2tSZWN0cyhyZWN0cy5zaXplKCkp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKQogICAg
ICAgICAgICAgd2tSZWN0c1tpXSA9IHRvQVBJKHJlY3RzW2ldKTsKQEAgLTI2NTcsMjIgKzI3NTIs
MjUgQEAgdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8KIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
dm9pZCBXS1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQs
IFdLUGFnZURyYXdUb1BERkZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQordm9pZCBX
S1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdL
UGFnZURyYXdUb1BERkZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIHRv
SW1wbChwYWdlKS0+ZHJhd1BhZ2VzVG9QREYodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdL
UHJpbnRJbmZvKHByaW50SW5mbyksIGZpcnN0LCBjb3VudCwgW2NvbnRleHQsIGNhbGxiYWNrXSAo
QVBJOjpEYXRhKiBkYXRhKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChw
YWdlUmVmKS0+ZHJhd1BhZ2VzVG9QREYodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJp
bnRJbmZvKHByaW50SW5mbyksIGZpcnN0LCBjb3VudCwgW2NvbnRleHQsIGNhbGxiYWNrXSAoQVBJ
OjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRhdGEpLCBudWxscHRyLCBj
b250ZXh0KTsKICAgICB9KTsKIH0KICNlbmRpZgogCi12b2lkIFdLUGFnZUJlZ2luUHJpbnRpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbykK
K3ZvaWQgV0tQYWdlQmVnaW5QcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvKQogewotICAgIHRvSW1wbChwYWdlKS0+YmVnaW5Q
cmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZv
KSk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+YmVnaW5Q
cmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZv
KSk7CiB9CiAKLXZvaWQgV0tQYWdlRW5kUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdL
UGFnZUVuZFByaW50aW5nKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvSW1wbChwYWdlKS0+
ZW5kUHJpbnRpbmcoKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5lbmRQcmludGluZygpOwogfQogCiBib29sIFdLUGFnZUdldElzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbihXS1BhZ2VSZWYgcGFnZSkKQEAgLTI2ODAsOSArMjc3OCwxMCBAQCBib29sIFdLUGFn
ZUdldElzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1cm4g
dG9JbXBsKHBhZ2UpLT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKTsKIH0KIAotdm9pZCBXS1Bh
Z2VTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlLCBib29sIGNvbnRyb2xs
ZWQpCit2b2lkIFdLUGFnZVNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgY29udHJvbGxlZCkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldENvbnRyb2xsZWRC
eUF1dG9tYXRpb24oY29udHJvbGxlZCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKTsKIH0K
IAogYm9vbCBXS1BhZ2VHZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlKQpA
QCAtMjY5NSwyMyArMjc5NCwyNiBAQCBib29sIFdLUGFnZUdldEFsbG93c1JlbW90ZUluc3BlY3Rp
b24oV0tQYWdlUmVmIHBhZ2UpCiAjZW5kaWYgICAgCiB9CiAKLXZvaWQgV0tQYWdlU2V0QWxsb3dz
UmVtb3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZSwgYm9vbCBhbGxvdykKK3ZvaWQgV0tQYWdl
U2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBhbGxvdykK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYWxsb3cpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwog
ICAgIFVOVVNFRF9QQVJBTShhbGxvdyk7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRp
YVZvbHVtZShXS1BhZ2VSZWYgcGFnZSwgZmxvYXQgdm9sdW1lKQordm9pZCBXS1BhZ2VTZXRNZWRp
YVZvbHVtZShXS1BhZ2VSZWYgcGFnZVJlZiwgZmxvYXQgdm9sdW1lKQogewotICAgIHRvSW1wbChw
YWdlKS0+c2V0TWVkaWFWb2x1bWUodm9sdW1lKTsgICAgCisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVkaWFWb2x1bWUodm9sdW1lKTsKIH0KIAotdm9p
ZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11dGVkU3RhdGUgbXV0ZWRT
dGF0ZSkKK3ZvaWQgV0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLTWVkaWFNdXRl
ZFN0YXRlIG11dGVkU3RhdGUpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBjb3JlU3RhdGU7CiAKICAgICBpZiAo
bXV0ZWRTdGF0ZSAmIGtXS01lZGlhQXVkaW9NdXRlZCkKQEAgLTI3MjEsMTIgKzI4MjMsMTMgQEAg
dm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11dGVkU3RhdGUgbXV0
ZWRTdGF0ZSkKICAgICBpZiAobXV0ZWRTdGF0ZSAmIGtXS01lZGlhU2NyZWVuQ2FwdHVyZU11dGVk
KQogICAgICAgICBjb3JlU3RhdGUuYWRkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3Rh
dGU6OlNjcmVlbkNhcHR1cmVJc011dGVkKTsKIAotICAgIHRvSW1wbChwYWdlKS0+c2V0TXV0ZWQo
Y29yZVN0YXRlKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldE11dGVkKGNvcmVTdGF0ZSk7CiB9
CiAKLXZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZSwgYm9v
bCBlbmFibGVkKQordm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBw
YWdlUmVmLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYUNhcHR1
cmVFbmFibGVkKGVuYWJsZWQpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIGJvb2wgV0tQ
YWdlR2V0TWVkaWFDYXB0dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZSkKQEAgLTI3MzQsMzAgKzI4
MzcsMzMgQEAgYm9vbCBXS1BhZ2VHZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdl
KQogICAgIHJldHVybiB0b0ltcGwocGFnZSktPm1lZGlhQ2FwdHVyZUVuYWJsZWQoKTsKIH0KIAot
dm9pZCBXS1BhZ2VEaWRBbGxvd1BvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1Bh
Z2VEaWRBbGxvd1BvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgIHRvSW1wbChwYWdlKS0+
ZGlkQWxsb3dQb2ludGVyTG9jaygpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlkQWxsb3dQb2lu
dGVyTG9jaygpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BB
UkFNKHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJVc2VyTWVkaWFTdGF0
ZShXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlQ2xlYXJVc2VyTWVkaWFTdGF0ZShXS1BhZ2VS
ZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICB0b0ltcGwocGFnZSktPmNsZWFyVXNlck1lZGlhU3RhdGUoKTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPmNsZWFyVXNlck1lZGlhU3RhdGUoKTsKICNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICNlbmRpZgogfQogCi12
b2lkIFdLUGFnZURpZERlbnlQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdl
RGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgIHRvSW1wbChwYWdlKS0+ZGlk
RGVueVBvaW50ZXJMb2NrKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaWREZW55UG9pbnRlckxv
Y2soKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShw
YWdlUmVmKTsKICNlbmRpZgogfQogCkBAIC0yNzkwLDE2ICsyODk2LDE4IEBAIFdLRnJhbWVSZWYg
V0tQYWdlTG9va1VwRnJhbWVGcm9tSGFuZGxlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lSGFu
ZGxlUmVmIGhhbmRsCiAKIHZvaWQgV0tQYWdlU2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhX
S1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBtYXlTdGFydE1lZGlhKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3cobWF5U3RhcnRNZWRpYSk7CiB9CiAKIAotdm9pZCBXS1BhZ2VTZWxlY3RDb250ZXh0TWVudUl0
ZW0oV0tQYWdlUmVmIHBhZ2UsIFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW0pCit2b2lkIFdLUGFn
ZVNlbGVjdENvbnRleHRNZW51SXRlbShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tDb250ZXh0TWVudUl0
ZW1SZWYgaXRlbSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi0gICAgdG9JbXBsKHBhZ2UpLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgodG9J
bXBsKGl0ZW0pLT5kYXRhKCkpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKCh0b0ltcGwoaXRlbSktPmRhdGEoKSkpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTShp
dGVtKTsKICNlbmRpZgogfQpAQCAtMjgyMSw4ICsyOTI5LDkgQEAgV0tTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgV0tQYWdlR2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlKQogICAg
IHJldHVybiBrV0tTY3JvbGxQaW5uaW5nQmVoYXZpb3JEb05vdFBpbjsKIH0KIAotdm9pZCBXS1Bh
Z2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdlUmVmIHBhZ2UsIFdLU2Nyb2xsUGlubmlu
Z0JlaGF2aW9yIHBpbm5pbmcpCit2b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgU2Nyb2xsUGlubmluZ0JlaGF2aW9yIGNvcmVQaW5u
aW5nID0gU2Nyb2xsUGlubmluZ0JlaGF2aW9yOjpEb05vdFBpbjsKIAogICAgIHN3aXRjaCAocGlu
bmluZykgewpAQCAtMjgzOSw3ICsyOTQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IoV0tQYWdlUmVmIHBhZ2UsIFdLU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm4KICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHRvSW1wbChwYWdl
KS0+c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKGNvcmVQaW5uaW5nKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihjb3JlUGlubmluZyk7CiB9CiAKIGJvb2wg
V0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSkKQEAgLTI4NDcsOSArMjk1
NiwxMCBAQCBib29sIFdLUGFnZUdldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2UpCiAg
ICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+YWRkc1Zpc2l0ZWRMaW5rcygpOwogfQogCi12b2lkIFdL
UGFnZVNldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgYWRkc1Zpc2l0ZWRM
aW5rcykKK3ZvaWQgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZVJlZiwg
Ym9vbCBhZGRzVmlzaXRlZExpbmtzKQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0QWRkc1Zpc2l0
ZWRMaW5rcyhhZGRzVmlzaXRlZExpbmtzKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRBZGRzVmlzaXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOwog
fQogCiBib29sIFdLUGFnZUlzUGxheWluZ0F1ZGlvKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjg4NCwy
MCArMjk5NCwyMyBAQCBXS01lZGlhU3RhdGUgV0tQYWdlR2V0TWVkaWFTdGF0ZShXS1BhZ2VSZWYg
cGFnZSkKIAogdm9pZCBXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcihXS1BhZ2VSZWYg
cGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5jbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpOwogfQogCiB2b2lkIFdLUGFnZUNhbGxBZnRl
ck5leHRQcmVzZW50YXRpb25VcGRhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZVBvc3RQcmVzZW50YXRpb25VcGRhdGVGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBD
UkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5jYWxsQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlKFtjb250ZXh0LCBjYWxsYmFja10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGNhbGxiYWNrKGVycm9yICE9IFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6
IDAsIGNvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9y
dFNjYWxlTGltaXRzKFdLUGFnZVJlZiBwYWdlLCBib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxlTGlt
aXRzKQordm9pZCBXS1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyhXS1BhZ2VSZWYg
cGFnZVJlZiwgYm9vbCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCi0gICAgdG9JbXBsKHBhZ2Up
LT5zZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShpZ25vcmVz
Vmlld3BvcnRTY2FsZUxpbWl0cyk7CiAjZW5kaWYKIH0KIApAQCAtMjkwNyw5MyArMzAyMCwxMDUg
QEAgUHJvY2Vzc0lEIFdLUGFnZUdldFByb2Nlc3NJZGVudGlmaWVyKFdLUGFnZVJlZiBwYWdlKQog
fQogCiAjaWZkZWYgX19CTE9DS1NfXwotdm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0
X2IoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9j
aykKK3ZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0QmxvY2sgYmxvY2spCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICB0b0lt
cGwocGFnZSktPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2Jsb2NrXShjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpIHsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2Jsb2NrXShjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpIHsKICAgICAgICAgYmxvY2soKTsK
ICAgICB9KTsKICNlbHNlIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBVTlVT
RURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIGJsb2NrKCk7
CiAjZW5kaWYgLy8gbm90IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIH0KICNlbmRpZgog
Ci12b2lkIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1BhZ2VSZWYgcGFnZSwg
V0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdl
KS0+ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmR1bXBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpIHsKICAgICAgICAgY2FsbGJhY2soV2ViS2l0Ojp0b0FQSShwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5pbXBsKCkpLCBjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQog
Ci12b2lkIFdLUGFnZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2Us
IFdLUGFnZUNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwo
cGFnZSktPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2Fs
bGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVz
dGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2YWx1ZSwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBj
YWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3Zl
cnJpZGVUaW1lckZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgdmFsdWUsIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyh2YWx1ZSwg
W2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKHZhbHVlLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewog
ICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdL
UGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVz
dGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxi
YWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VNYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OworICAgIHRvSW1wbChwYWdlUmVmKS0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7
CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoV0tQYWdl
UmVmIHBhZ2UsIFdLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0
YXJ0RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdl
U2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwo
cGFnZSktPnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFtjYWxs
YmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJl
c3RhcnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2so
Y2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCit2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlV
UkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nRnVuY3Rp
b24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSkt
PnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMKFVS
TCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgp
IHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9p
ZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VS
TFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkK
IHsKLSAgICB0b0ltcGwocGFnZSktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxs
YmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVy
ZVVSTEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNr
Q29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0
KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHNv
dXJjZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLUGFnZVNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tQYWdlU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nRnVuY3Rp
b24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSkt
PnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGlu
ZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHNvdXJjZVVSTCkpLCBVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKGRlc3RpbmF0aW9uVVJMKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTChVUkwoKSwg
dG9XVEZTdHJpbmcoc291cmNlVVJMKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoZGVzdGluYXRp
b25VUkwpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJh
Y2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VNYXJrUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tQ
YWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VNYXJrUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tQYWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdl
KS0+bWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxi
YWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5tYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFj
ayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHVu
bGlua2FibGVUb2tlbiwgV0tTdHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHNpZ25h
dHVyZSwgV0tTdHJpbmdSZWYga2V5SUQsIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVl
c0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9p
ZCBXS1BhZ2VTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiB1bmxpbmthYmxlVG9rZW4sIFdLU3RyaW5nUmVmIHNlY3JldFRv
a2VuLCBXS1N0cmluZ1JlZiBzaWduYXR1cmUsIFdLU3RyaW5nUmVmIGtleUlELCBXS1BhZ2VTZXRQ
Q01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldFBDTUZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmcodG9XVEZTdHJpbmcodW5saW5rYWJsZVRva2VuKSwgdG9XVEZT
dHJpbmcoc2VjcmV0VG9rZW4pLCB0b1dURlN0cmluZyhzaWduYXR1cmUpLCB0b1dURlN0cmluZyhr
ZXlJRCksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZyh0b1dURlN0cmluZyh1bmxpbmthYmxlVG9rZW4pLCB0b1dURlN0cmluZyhzZWNy
ZXRUb2tlbiksIHRvV1RGU3RyaW5nKHNpZ25hdHVyZSksIHRvV1RGU3RyaW5nKGtleUlEKSwgW2Nh
bGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tD
b250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRNb2NrQ2FtZXJhT3JpZW50YXRp
b24oV0tQYWdlUmVmIHBhZ2UsIHVpbnQ2NF90IG9yaWVudGF0aW9uKQordm9pZCBXS1BhZ2VTZXRN
b2NrQ2FtZXJhT3JpZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90IG9yaWVudGF0
aW9uKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB0b0ltcGwocGFnZSktPnNldE9yaWVudGF0aW9uRm9y
TWVkaWFDYXB0dXJlKG9yaWVudGF0aW9uKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldE9yaWVu
dGF0aW9uRm9yTWVkaWFDYXB0dXJlKG9yaWVudGF0aW9uKTsKICNlbmRpZgogfQogCkBAIC0zMDA2
LDM2ICszMTMxLDQwIEBAIFdLX0VYUE9SVCBib29sIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJFbmFibGVkKFdLUGFnZVJlZikKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZUxv
YWRlZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlTG9hZGVkU3VicmVz
b3VyY2VEb21haW5zRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3Zv
aWQgV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1Bh
Z2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHRvSW1wbChwYWdlKS0+Z2V0TG9hZGVkU3VicmVzb3Vy
Y2VEb21haW5zKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXShWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+JiYgZG9tYWlucykgeworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0TG9hZGVkU3VicmVz
b3VyY2VEb21haW5zKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXShWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+JiYgZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0
Pj4gYXBpRG9tYWlucyA9IFdURjo6bWFwKGRvbWFpbnMsIFtdKGF1dG8mIGRvbWFpbikgewogICAg
ICAgICAgICAgcmV0dXJuIFJlZlB0cjxBUEk6Ok9iamVjdD4oQVBJOjpTdHJpbmc6OmNyZWF0ZShX
VEZNb3ZlKGRvbWFpbi5zdHJpbmcoKSkpKTsKICAgICAgICAgfSk7CiAgICAgICAgIGNhbGxiYWNr
KHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURvbWFpbnMpKS5wdHIoKSksIGNh
bGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
KyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgY2FsbGJhY2sobnVsbHB0ciwgY2FsbGJh
Y2tDb250ZXh0KTsKICNlbmRpZgogfQogCi12b2lkIFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3Vy
Y2VEb21haW5zKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VDbGVhckxvYWRlZFN1YnJlc291
cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB0b0ltcGwocGFnZSkt
PmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5j
bGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQ
YWdlU2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdl
LCBkb3VibGUgZGVsYXkpCit2b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5
Rm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIGRlbGF5KQogewotICAgIHRvSW1w
bChwYWdlKS0+c2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxheSkpOwor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldE1lZGlhQ2Fw
dHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMoZGVsYXkpKTsKIH0KIAotdm9pZCBXS1BhZ2VEaXNw
YXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlKQordm9pZCBX
S1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdl
UmVmKQogewotICAgIHRvSW1wbChwYWdlKS0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9y
VGVzdGluZygpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZikt
PmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDY1ODI0MTNhY2Fj
ZTFkMzUzYmY3ZjcxZTI4MGMzNGI5MTBlYTRhNjguLjJlZTVmOTVjYzM3ZGNiOGJhNzMyMjQxYjU2
OGJlNGMwOTMwOTcyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMTk5LDYgKzE5OSw5IEBAIHN0YXRpYyBjb25zdCBCT09MIGRlZmF1
bHRGYXN0Q2xpY2tpbmdFbmFibGVkID0gTk87CiBzdGF0aWMgY29uc3QgdWludDMyX3QgZmlyc3RT
REtWZXJzaW9uV2l0aExpbmtQcmV2aWV3RW5hYmxlZEJ5RGVmYXVsdCA9IDB4QTAwMDA7CiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2RlZmluZSBUSFJPV19JRl9TVVNQRU5ERUQg
aWYgKF9wYWdlICYmIF9wYWdlLT5pc1N1c3BlbmRlZCgpKSBcCisgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZp
ZXcgaXMgc3VzcGVuZGVkIl0KKwogUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0
aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzKQogewog
ICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0pOwpAQCAtNzE4LDExICs3MjEsMTMgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkRGVs
ZWdhdGU6KGlkPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPilkZWxlZ2F0ZQogCiAtIChXS05hdmln
YXRpb24gKilsb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3QocmVx
dWVzdCkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwg
YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vzc1VSTAogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIVtVUkwgaXNGaWxlVVJMXSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiVAIGlz
IG5vdCBhIGZpbGUgVVJMIiwgVVJMXTsKIApAQCAtNzM0LDYgKzczOSw3IEBAIC0gKFdLTmF2aWdh
dGlvbiAqKWxvYWRGaWxlVVJMOihOU1VSTCAqKVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDoo
TlNVUkwgKilyZWFkCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ107CiAKICAgICByZXR1cm4gW3NlbGYgbG9hZERhdGE6ZGF0YSBNSU1F
VHlwZTpAInRleHQvaHRtbCIgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOkAiVVRGLTgiIGJhc2VVUkw6
YmFzZVVSTF07CkBAIC03NDEsMTEgKzc0NywxMyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkSFRN
TFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiAKIC0g
KFdLTmF2aWdhdGlvbiAqKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmlu
ZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJF
bmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNo
YXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCiAtICh2
b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+ZG93bmxvYWRSZXF1ZXN0KHJl
cXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvKiBkb3dubG9hZCkgewogICAgICAgICBpZiAoZG93bmxvYWQpCiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CkBAIC03NTYsNiArNzY0LDcg
QEAgLSAodm9pZClzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2kKIAogLSAodm9pZClyZXN1bWVEb3dubG9hZEZyb21S
ZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFs
bG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CiAgICAg
W3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9s
aWN5UmFpc2VFeGNlcHRpb25dOwogICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFt1bmFy
Y2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGlj
dGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVt
YmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3Qg
Y2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOwpAQCAt
NzgyLDYgKzc5MSw3IEBAIC0gKHZvaWQpcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pCiAKIC0gKFdLTmF2aWdhdGlv
biAqKWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVt
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5n
b1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0pKTsKIH0KIApAQCAtODQwLDYgKzg1MCw3IEBA
IC0gKEJPT0wpY2FuR29Gb3J3YXJkCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWdvQmFjawogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoc2VsZi5fc2FmZUJyb3dzaW5nV2FybmluZykK
ICAgICAgICAgcmV0dXJuIFtzZWxmIHJlbG9hZF07CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2Ut
PmdvQmFjaygpKTsKQEAgLTg0NywxMSArODU4LDEzIEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvQmFj
awogCiAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvRm9yd2FyZCgpKTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uICopcmVsb2FkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIE9wdGlv
blNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKGxpbmtl
ZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9h
ZEJlaGF2aW9yKSkKICAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0
aW9uOjpFeHBpcmVkT25seSk7CkBAIC04NjEsMjYgKzg3NCwzMSBAQCAtIChXS05hdmlnYXRpb24g
KilyZWxvYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKFdlYkNv
cmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbikpOwogfQogCiAtICh2b2lkKXN0b3BMb2FkaW5n
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zdG9wTG9hZGluZygpOwog
fQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVK
YXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VV
Ukw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVTIGluRnJhbWU6bmls
IGluV29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVu
dFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5p
bCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZCljYWxs
QXN5bmNKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXJndW1lbnRzOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJ
bmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0
ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhTb3Vy
Y2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6WUVTIGlu
RnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxl
dGlvbkhhbmRsZXJdOwogfQogCkBAIC05MjAsNiArOTM4LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRh
dGVBcmd1bWVudChpZCBhcmd1bWVudCkKIAogLSAodm9pZCljbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC05MzYsNiArOTU1LDcgQEAgLSAo
dm9pZCljbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGkKIAogLSAodm9pZClwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRo
Q29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpIHsKICAg
ICAgICAgX3BhZ2UtPnBhdXNlQWxsTWVkaWFQbGF5YmFjayhbXSB7IH0pOwogICAgICAgICByZXR1
cm47CkBAIC05NDYsNiArOTY2LDcgQEAgLSAodm9pZClwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRo
Q29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW4KIAogLSAodm9p
ZClzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOihCT09MKXN1c3BlbmRlZCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIgPSBbXSB7IH07CiAKQEAgLTk3Niw2ICs5OTcsNyBAQCBzdGF0aWMgV0tNZWRp
YVBsYXliYWNrU3RhdGUgdG9XS01lZGlhUGxheWJhY2tTdGF0ZShXZWJLaXQ6Ok1lZGlhUGxheWJh
Y2tTdGF0ZSBtZQogCiAtICh2b2lkKXJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGVXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTWVkaWFQbGF5YmFja1N0YXRlKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMDYsNiArMTAyOCw3IEBAIC0gKFdLTWVkaWFD
YXB0dXJlU3RhdGUpbWljcm9waG9uZUNhcHR1cmVTdGF0ZQogCiAtICh2b2lkKXNldE1pY3JvcGhv
bmVDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyID0gW10geyB9OwogCkBAIC0xMDI3LDYgKzEwNTAsNyBAQCAtICh2b2lkKXNldE1pY3Jv
cGhvbmVDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhh
bmRsZXI6KAogCiAtICh2b2lkKXNldENhbWVyYUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVT
dGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CiAKQEAgLTEwNDgsNiAr
MTA3Miw3IEBAIC0gKHZvaWQpc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0
YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9P
TClhc0FzeW5jRnVuY3Rpb24gd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgd2l0aEFy
Z3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVz
ZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgaW5GcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSBpbldvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxl
ciBjb3B5XSk7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcD4g
YXJndW1lbnRzTWFwOwpAQCAtMTEwOSw2ICsxMTM0LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZh
U2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09M
KWEKIAogLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoQ29jb2FJbWFnZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIGNvbnN0ZXhwciBib29sIHNuYXBzaG90RmFpbGVkVHJh
Y2VWYWx1ZSA9IGZhbHNlOwogICAgIHRyYWNlUG9pbnQoVGFrZVNuYXBzaG90U3RhcnQpOwogCkBA
IC0xMTgyLDYgKzEyMDgsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9u
OihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQogCiAtICh2b2lkKXNl
dEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBfaW1wbC0+c2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXMoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOwogI2VsaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTEyMjAsNiArMTI0Nyw3IEBAIC0gKE5TU3RyaW5nICopY3VzdG9t
VXNlckFnZW50CiAKIC0gKHZvaWQpc2V0Q3VzdG9tVXNlckFnZW50OihOU1N0cmluZyAqKWN1c3Rv
bVVzZXJBZ2VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0Q3Vz
dG9tVXNlckFnZW50KGN1c3RvbVVzZXJBZ2VudCk7CiB9CiAKQEAgLTEyMzQsNiArMTI2Miw3IEBA
IC0gKEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKIAogLSAodm9pZClzZXRBbGxvd3NMaW5rUHJldmll
dzooQk9PTClhbGxvd3NMaW5rUHJldmlldwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgX2ltcGwtPnNldEFsbG93c0xpbmtQcmV2aWV3KGFsbG93c0xp
bmtQcmV2aWV3KTsKICAgICByZXR1cm47CkBAIC0xMjU1LDYgKzEyODQsNyBAQCAtICh2b2lkKXNl
dEFsbG93c0xpbmtQcmV2aWV3OihCT09MKWFsbG93c0xpbmtQcmV2aWV3CiAKIC0gKHZvaWQpc2V0
UGFnZVpvb206KENHRmxvYXQpcGFnZVpvb20KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgX3BhZ2UtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29tKTsKIH0KIApAQCAtMTI3OSw2ICsx
MzA5LDcgQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRp
b25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKIAogLSAodm9pZClmaW5kU3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJhdGlvbjooV0tGaW5kQ29uZmlndXJhdGlvbiAq
KWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAq
cmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBpZiAoIXN0cmluZy5sZW5ndGgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHRO
UyhbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpOT10pLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTI5Niw2ICsxMzI3LDcgQEAgKyAoQk9PTCloYW5kbGVzVVJM
U2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQogCiAtICh2b2lkKXNldE1lZGlhVHlwZTooTlNT
dHJpbmcgKiltZWRpYVN0eWxlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdl
LT5zZXRPdmVycmlkZGVuTWVkaWFUeXBlKG1lZGlhU3R5bGUpOwogfQogCkBAIC0xMzExLDYgKzEz
NDMsNyBAQCAtIChpZClpbnRlcmFjdGlvblN0YXRlCiAKIC0gKHZvaWQpc2V0SW50ZXJhY3Rpb25T
dGF0ZTooaWQpaW50ZXJhY3Rpb25TdGF0ZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBpZiAoIVsoaWQpaW50ZXJhY3Rpb25TdGF0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3Nd
XSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzM1LDYgKzEzNjgsNyBAQCAtIChVSVNjcm9sbFZp
ZXcgKilzY3JvbGxWaWV3CiAKIC0gKHZvaWQpc2V0QWxsb3dzTWFnbmlmaWNhdGlvbjooQk9PTClh
bGxvd3NNYWduaWZpY2F0aW9uCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9pbXBs
LT5zZXRBbGxvd3NNYWduaWZpY2F0aW9uKGFsbG93c01hZ25pZmljYXRpb24pOwogfQogCkBAIC0x
MzQ1LDExICsxMzc5LDEzIEBAIC0gKEJPT0wpYWxsb3dzTWFnbmlmaWNhdGlvbgogCiAtICh2b2lk
KXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWduaWZpY2F0aW9uIGNlbnRlcmVkQXRQb2ludDoo
TlNQb2ludClwb2ludAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0
TWFnbmlmaWNhdGlvbihtYWduaWZpY2F0aW9uLCBOU1BvaW50VG9DR1BvaW50KHBvaW50KSk7CiB9
CiAKIC0gKHZvaWQpc2V0TWFnbmlmaWNhdGlvbjooZG91YmxlKW1hZ25pZmljYXRpb24KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwtPnNldE1hZ25pZmljYXRpb24obWFnbmlm
aWNhdGlvbik7CiB9CiAKQEAgLTEzNjAsNiArMTM5Niw3IEBAIC0gKGRvdWJsZSltYWduaWZpY2F0
aW9uCiAKIC0gKE5TUHJpbnRPcGVyYXRpb24gKilwcmludE9wZXJhdGlvbldpdGhQcmludEluZm86
KE5TUHJpbnRJbmZvICopcHJpbnRJbmZvCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IGlmIChhdXRvIHdlYkZyYW1lUHJveHkgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgIHJl
dHVybiBfaW1wbC0+cHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZvKHByaW50SW5mbywgKndlYkZy
YW1lUHJveHkpOwogICAgIHJldHVybiBuaWw7CkBAIC0xNTI3LDYgKzE1NjQsNyBAQCAtIChPcHRp
b25hbDxCT09MPilfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9y
VGVzdGluZwogCiAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihXS1BERkNvbmZp
Z3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0RhdGEgKnBkZkRvY3VtZW50RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEOwogICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkK
ICAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwpAQCAtMTU1Miw2ICsxNTkw
LDcgQEAgLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0
aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGUKIAogLSAodm9pZCljcmVhdGVXZWJBcmNoaXZl
RGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PmdldFdlYkFyY2hpdmVPZkZyYW1lKF9wYWdlLT5tYWluRnJhbWUoKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSksIG5pbCk7CiAgICAgfSk7
CkBAIC0xNjMzLDE3ICsxNjcyLDIwIEBAIC0gKHZvaWQpX2RpZENoYW5nZUVkaXRvclN0YXRlCiAK
IC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgcmVzcG9uc2VEYXRhOihO
U0RhdGEgKilkYXRhCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFw
cGVyKF9wYWdlLT5sb2FkU2ltdWxhdGVkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSwgeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0pKTsKIH0K
IAogLy8gRklYTUUoMjIzNjU4KTogUmVtb3ZlIHRoaXMgb25jZSBhZG9wdGVycyBoYXZlIG1vdmVk
IHRvIHRoZSBmaW5hbCBBUEkuCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKily
ZXNwb25zZSByZXNwb25zZURhdGE6KE5TRGF0YSAqKWRhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgcmV0dXJuIFtzZWxmIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlcXVlc3QgcmVz
cG9uc2U6cmVzcG9uc2UgcmVzcG9uc2VEYXRhOmRhdGFdOwogfQogCiAtIChXS05hdmlnYXRpb24g
Kilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNwb25zZUhU
TUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOwogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVj
dGVkQ29udGVudExlbmd0aDpzdHJpbmcubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6QCJVVEYtOCJd
KTsKIApAQCAtMTY1MywxMSArMTY5NSwxMyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxh
dGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNwb25zZUhUTUxTdHJpbgogLy8g
RklYTUUoMjIzNjU4KTogUmVtb3ZlIHRoaXMgb25jZSBhZG9wdGVycyBoYXZlIG1vdmVkIHRvIHRo
ZSBmaW5hbCBBUEkuCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gW3NlbGYgbG9hZFNp
bXVsYXRlZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZUhUTUxTdHJpbmc6c3RyaW5nXTsKIH0KIAog
LSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBVUkwgPSByZXF1ZXN0LlVSTDsKIAogICAgIGlm
ICghW1VSTCBpc0ZpbGVVUkxdKQpAQCAtMTY4Nyw3ICsxNzMxLDcgQEAgQGltcGxlbWVudGF0aW9u
IFdLV2ViVmlldyAoV0tQcml2YXRlKQogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jZGVmaW5lIFdF
QkNPUkVfUFJJVkFURV9DT01NQU5EKGNvbW1hbmQpIC0gKHZvaWQpXyMjY29tbWFuZDooaWQpc2Vu
ZGVyIHsgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBfcyk7IH0KKyNkZWZp
bmUgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoY29tbWFuZCkgLSAodm9pZClfIyNjb21tYW5kOihp
ZClzZW5kZXIgeyBUSFJPV19JRl9TVVNQRU5ERUQ7IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQo
I2NvbW1hbmQgIyMgX3MpOyB9CiAKIFdFQkNPUkVfUFJJVkFURV9DT01NQU5EKGFsaWduQ2VudGVy
KQogV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25KdXN0aWZpZWQpCkBAIC0xNzA2LDIxICsx
NzUwLDI1IEBAIFdFQkNPUkVfUFJJVkFURV9DT01NQU5EKHBhc3RlQW5kTWF0Y2hTdHlsZSkKIAog
LSAodm9pZClfdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoInN0cmlrZXRocm91Z2gi
X3MpOwogfQogCiAtICh2b2lkKV9pbmNyZWFzZUxpc3RMZXZlbDooaWQpc2VuZGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5pbmNyZWFzZUxpc3RMZXZlbCgpOwogfQog
CiAtICh2b2lkKV9kZWNyZWFzZUxpc3RMZXZlbDooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5kZWNyZWFzZUxpc3RMZXZlbCgpOwogfQogCiAtICh2b2lk
KV9jaGFuZ2VMaXN0VHlwZTooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9wYWdlLT5jaGFuZ2VMaXN0VHlwZSgpOwogfQogCkBAIC0xNzcyLDYgKzE4MjAsNyBAQCAt
IChDR1NpemUpX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMKIAogLSAodm9pZClfc2V0
Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czooQ0dTaXplKXZpZXdwb3J0U2l6ZQogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIHZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0
VW5pdHMgPSBXZWJDb3JlOjpJbnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAgICAgaWYgKHZpZXdwb3J0
U2l6ZUZvclZpZXdwb3J0VW5pdHMuaXNFbXB0eSgpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVmlld3BvcnQgc2l6ZSBzaG91
bGQgbm90IGJlIGVtcHR5Il07CkBAIC0xNzkzLDYgKzE4NDIsNyBAQCAtIChfV0tJbnNwZWN0b3Ig
KilfaW5zcGVjdG9yCiAKIC0gKHZvaWQpX2RpZEVuYWJsZUJyb3dzZXJFeHRlbnNpb25zOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilleHRlbnNpb25JRFRvTmFtZU1hcAog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB0
cmFuc2Zvcm1lZDsKICAgICB0cmFuc2Zvcm1lZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVu
c2lvbklEVG9OYW1lTWFwLmNvdW50KTsKICAgICBbZXh0ZW5zaW9uSURUb05hbWVNYXAgZW51bWVy
YXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOlsmXShOU1N0cmluZyAqZXh0ZW5zaW9uSUQsIE5T
U3RyaW5nICpleHRlbnNpb25OYW1lLCBCT09MICopIHsKQEAgLTE4MDMsNiArMTg1Myw3IEBAIC0g
KHZvaWQpX2RpZEVuYWJsZUJyb3dzZXJFeHRlbnNpb25zOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTlNTdHJpbmcgKj4gKilleHRlCiAKIC0gKHZvaWQpX2RpZERpc2FibGVCcm93c2VyRXh0ZW5z
aW9uczooTlNTZXQ8TlNTdHJpbmcgKj4gKilleHRlbnNpb25JRHMKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IHRyYW5zZm9ybWVkOwogICAgIHRyYW5zZm9y
bWVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXh0ZW5zaW9uSURzLmNvdW50KTsKICAgICBmb3Ig
KE5TU3RyaW5nICpleHRlbnNpb25JRCBpbiBleHRlbnNpb25JRHMpCkBAIC0xODUxLDYgKzE5MDIs
NyBAQCAtIChCT09MKV9pc0VkaXRhYmxlCiAKIC0gKHZvaWQpX3NldEVkaXRhYmxlOihCT09MKWVk
aXRhYmxlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGJvb2wgd2FzRWRpdGFibGUg
PSBfcGFnZS0+aXNFZGl0YWJsZSgpOwogICAgIF9wYWdlLT5zZXRFZGl0YWJsZShlZGl0YWJsZSk7
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTg2OCw2ICsxOTIwLDcgQEAgLSAodm9pZClfc2V0RWRp
dGFibGU6KEJPT0wpZWRpdGFibGUKIAogLSAodm9pZClfZXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0
cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6KE5TU3RyaW5nICopYXJndW1lbnQgY29tcGxldGlvbjoo
dm9pZCAoXikoQk9PTCkpY29tcGxldGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmQsIGFyZ3VtZW50LCBbY2FwdHVyZWRD
b21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIHsKICAgICAgICAgaWYg
KGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKQogICAgICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9u
QmxvY2soWUVTKTsKQEAgLTE5MDMsNiArMTk1Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIGlkPj4gY3JlYXRlVXNlckluZm8oY29uc3QgT3B0aW9uYWw8V2Vi
CiAKIC0gKHZvaWQpX3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjooX1dL
VGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb246
KHZvaWQoXikoKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICB1c2luZyBFeGNsdXNpb25SdWxlID0gV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6OkV4Y2x1c2lvblJ1bGU7CiAKICAgICBpZiAoIV90ZXh0TWFuaXB1bGF0aW9uRGVsZWdh
dGUgfHwgIV9wYWdlKSB7CkBAIC0xOTY3LDYgKzIwMjEsNyBAQCBzdGF0aWMgV2ViQ29yZTo6VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OlRva2VuSWRlbnRpZmllciBjb3JlVGV4dE1hbmlwdWxh
dGlvbgogCiAtICh2b2lkKV9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVs
YXRpb25JdGVtICopaXRlbSBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxl
dGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFfcGFnZSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIwMjQsNiArMjA3OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gd2tUZXh0TWFuaXB1
bGF0aW9uRXJyb3JzKE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAKIC0gKHZvaWQpX2Nv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICopaXRlbXMgY29tcGxldGlvbjoodm9pZCheKShOU0FycmF5PE5TRXJyb3IgKj4g
KmVycm9ycykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgaWYgKCFfcGFnZSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlRmFpbHVyZVNl
dEZvckFsbFRleHRNYW5pcHVsYXRpb25JdGVtcyhpdGVtcykuZ2V0KCkpOwogICAgICAgICByZXR1
cm47CkBAIC0yMDUxLDYgKzIxMDcsNyBAQCAtICh2b2lkKV9jb21wbGV0ZVRleHRNYW5pcHVsYXRp
b25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqKQogCiAtICh2
b2lkKV90YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb246KGlkKXNlbmRlcgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgW3NlbGYgX3Rha2VGaW5kU3Ry
aW5nRnJvbVNlbGVjdGlvbkludGVybmFsOnNlbmRlcl07CiAjZWxzZQpAQCAtMjEwNSw2ICsyMTYy
LDcgQEAgLSAodm9pZClfc2V0SGlzdG9yeURlbGVnYXRlOihpZCA8V0tIaXN0b3J5RGVsZWdhdGVQ
cml2YXRlPiloaXN0b3J5RGVsZWdhdGUKIAogLSAodm9pZClfdXBkYXRlTWVkaWFQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBIQVZFKFRPVUNI
X0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgIF9pbXBs
LT51cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAjZW5kaWYKQEAgLTIxMzAs
NiArMjE4OCw3IEBAIC0gKEJPT0wpX2lzUGljdHVyZUluUGljdHVyZUFjdGl2ZQogCiAtICh2b2lk
KV90b2dnbGVQaWN0dXJlSW5QaWN0dXJlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lm
IEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIp
CiAgICAgX2ltcGwtPnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKTsKICNlbmRpZgpAQCAtMjE0Miwy
NiArMjIwMSwzMSBAQCAtIChfV0tNZWRpYU11dGVkU3RhdGUpX21lZGlhTXV0ZWRTdGF0ZQogCiAt
ICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucwogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBbc2VsZiBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21wbGV0aW9u
SGFuZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9zdG9wTWVkaWFDYXB0dXJlCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zdG9wTWVkaWFDYXB0dXJlKFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvVmlkZW8pOwogfQogCiAtICh2b2lk
KV9zdG9wQWxsTWVkaWFQbGF5YmFjawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBb
c2VsZiBwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0K
IAogLSAodm9pZClfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgW3NlbGYgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6bmlsXTsKIH0KIAogLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjawog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBzZXRBbGxNZWRpYVBsYXliYWNr
U3VzcGVuZGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKQEAgLTIxNzgsNiArMjI0
Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoVmVjdG9yPFJlZjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4+JiBidWZmZXJzLCBOCiAKIC0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdo
bGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIFZlY3RvcjxSZWY8V2Vi
S2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwogCkBAIC0yMTkyLDYgKzIyNTcsNyBAQCAtICh2
b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRz
CiAKIC0gKHZvaWQpX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDooTlNEYXRhICopaGln
aGxpZ2h0CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKICAgICBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKICAg
ICAKQEAgLTIyMDQsNiArMjI3MCw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhp
Z2hsaWdodDooTlNEYXRhICopaGlnaGxpZ2h0CiAKIC0gKHZvaWQpX2FkZEFwcEhpZ2hsaWdodAog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAg
ICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmln
aW5hdGVkSW5BcHA6Olllcyk7CiAjZW5kaWYKQEAgLTIyMjMsMjMgKzIyOTAsMjcgQEAgLSAoTlNV
UkwgKilfbWFpbkZyYW1lVVJMCiAKIC0gKHZvaWQpX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgZm9yVW5yZWFjaGFibGVV
Ukw6KE5TVVJMICopdW5yZWFjaGFibGVVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ107CiAgICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MKHsgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCAiVVRGLTgiX3MsIGJhc2VV
UkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29k
aW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwg
KiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0
ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcsIFdlYktpdDo6T2JqQ09iamVj
dEdyYXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAq
KV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzOihCT09MKXNob3VsZE9wZW5FeHRlcm5hbFVSTHMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBwb2xpY3kgPSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzID8gX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeUFsbG93IDog
X1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeU5vdEFsbG93OwogICAgIHJldHVybiBbc2Vs
ZiBfbG9hZFJlcXVlc3Q6cmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OnBvbGlj
eV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OihfV0tTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KXNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBw
b2xpY3k7CiAgICAgc3dpdGNoIChzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSB7CiAgICAg
Y2FzZSBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Tm90QWxsb3c6CkBAIC0yMjU3LDI0
ICsyMzI4LDI4IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9sCiAKIC0gKHZvaWQpX2dyYW50QWNj
ZXNzVG9Bc3NldFNlcnZpY2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChf
cGFnZSkKICAgICAgICAgX3BhZ2UtPmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKCk7CiB9CiAK
IC0gKHZvaWQpX3Jldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2aWNlcwogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5yZXZva2VBY2Nlc3NUb0Fz
c2V0U2VydmljZXMoKTsKIH0KIAogLSAodm9pZClfc3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3Ry
eVRvVXNlckZvbnRSZWdpc3RyeQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAo
X3BhZ2UpCiAgICAgICAgIF9wYWdlLT5zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2Vy
Rm9udFJlZ2lzdHJ5KCk7CiB9CiAKIC0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JE
b21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtyZWdpc3RyYWJsZURvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChk
b21haW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFhcHBCb3Vu
ZERhdGEuY29udGV4dERhdGEuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwpAQCAtMjI4Nyw2ICsyMzYyLDcgQEAgLSAodm9p
ZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHYKIAogLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9p
ZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmRE
YXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREYXRhLmhh
c0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwogICAgIH0pOwpAQCAtMjI5NCwxMSArMjM3
MCwzNCBAQCAtICh2b2lkKV9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJl
c3VsdCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVx
dWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYg
YXBwQm91bmREYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91
bmREYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwogICAgIH0pOwogfQog
CistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZChbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
X3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYg
KCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIC0gKE5TQXJyYXkgKilfY2VydGlm
aWNhdGVDaGFpbgogewogICAgIGlmIChXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9
IF9wYWdlLT5tYWluRnJhbWUoKSkKQEAgLTIzMzIsNiArMjQzMSw3IEBAIC0gKE5TU3RyaW5nICop
X2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudAogCiAtICh2b2lkKV9zZXRBcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQ6KE5TU3RyaW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKICAgICBfcGFnZS0+c2V0
QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQpOwogfQpAQCAtMjM4NCw2ICsyNDg0LDcgQEAgLSAoQk9PTClfd2ViUHJvY2Vzc0lzUmVz
cG9uc2l2ZQogCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbc2VsZiBfaXNWYWxpZF0pCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjM5MiwxNiArMjQ5MywxOSBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MK
IAogLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChX
ZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKTsKIH0KIAogLSAo
V0tOYXZpZ2F0aW9uICopX3JlbG9hZEV4cGlyZWRPbmx5CiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0
aW9uOjpFeHBpcmVkT25seSkpOwogfQogCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NB
bmRSZXNldFN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFJlZjxXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eT4gcHJvdGVjdGVkUHJvY2Vzc1Byb3h5KF9wYWdlLT5wcm9jZXNzKCkp
OwogICAgIHByb3RlY3RlZFByb2Nlc3NQcm94eS0+cmVxdWVzdFRlcm1pbmF0aW9uKFdlYktpdDo6
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CiAKQEAgLTI0MTMs
NiArMjUxNyw3IEBAIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUK
IAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RD
b25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBSZXRhaW5QdHI8V0tQREZDb25maWd1cmF0aW9uPiBwZGZD
b25maWd1cmF0aW9uOwogICAgIGlmIChzbmFwc2hvdENvbmZpZ3VyYXRpb24pIHsKICAgICAgICAg
cGRmQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1BERkNvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTI0MjQsNiArMjUyOSw3IEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAKIC0g
KHZvaWQpX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOihfV0tGcmFtZUhhbmRsZSAqKWZyYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENHU2l6ZSkpY29tcGxldGlvbkhhbmRsZXIKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldFBERkZpcnN0UGFnZVNpemUo
ZnJhbWUtPl9mcmFtZUhhbmRsZS0+ZnJhbWVJRCgpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxDR1NpemU+KHNpemUpKTsKICAg
ICB9KTsKQEAgLTI0NTQsNiArMjU2MCw3IEBAIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9u
U3RhdGVXaXRoRmlsdGVyOihCT09MICheKShXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKml0CiAKIC0g
KHZvaWQpX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRl
RGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZGVjb2Rlci4KICAgICBXZWJLaXQ6
OlNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGU7CiAgICAgaWYgKCFXZWJLaXQ6OmRlY29kZUxlZ2Fj
eVNlc3Npb25TdGF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2Vzc2lvblN0YXRlRGF0
YS5ieXRlcyksIHNlc3Npb25TdGF0ZURhdGEubGVuZ3RoLCBzZXNzaW9uU3RhdGUpKQpAQCAtMjQ2
NCw2ICsyNTcxLDcgQEAgLSAodm9pZClfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOihOU0Rh
dGEgKilzZXNzaW9uU3RhdGVEYXRhCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZXN0b3JlU2Vzc2lv
blN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9uU3RhdGUgYW5kTmF2aWdhdGU6KEJPT0wp
bmF2aWdhdGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSA/IHNlc3Npb25TdGF0
ZS0+X3Nlc3Npb25TdGF0ZSA6IFdlYktpdDo6U2Vzc2lvblN0YXRlIHsgfSwgbmF2aWdhdGUpKTsK
IH0KIApAQCAtMjQ3NCw2ICsyNTgyLDcgQEAgLSAodm9pZClfY2xvc2UKIAogLSAoQk9PTClfdHJ5
Q2xvc2UKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9wYWdlLT50cnlD
bG9zZSgpOwogfQogCkBAIC0yNDg0LDYgKzI1OTMsNyBAQCAtIChCT09MKV9pc0Nsb3NlZAogCiAt
IChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5n
ICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNE
YXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25z
IGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAg
YXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0pOwogICAgIGlmIChmaWxlbmFtZSkKQEAgLTI0OTMs
MTIgKzI2MDMsMTQgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXAKIAogLSAoX1dLQXR0YWNobWVu
dCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmls
ZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgb3B0aW9uczooX1dL
QXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIHJldHVybiBbc2VsZiBfaW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlV3JhcHBlciBjb250ZW50VHlwZTpjb250ZW50VHlw
ZSBjb21wbGV0aW9uOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAoX1dLQXR0YWNobWVudCAq
KV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdy
YXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgY29tcGxldGlvbjoodm9p
ZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBpZGVudGlm
aWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogICAgIGF1dG8gYXR0YWNobWVudCA9
IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSk7CkBAIC0yNTE4LDYg
KzI2MzAsNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdy
YXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcgogCiAtIChfV0tBdHRhY2htZW50ICop
X2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBp
ZiAoYXV0byBhdHRhY2htZW50ID0gX3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpKQogICAgICAgICByZXR1cm4gd3JhcHBlcihhdHRhY2htZW50KTsKQEAgLTI1MjcsNiAr
MjY0MCw3IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfYXR0YWNobWVudEZvcklkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9zaW11bGF0ZURldmljZU9yaWVudGF0aW9u
Q2hhbmdlV2l0aEFscGhhOihkb3VibGUpYWxwaGEgYmV0YTooZG91YmxlKWJldGEgZ2FtbWE6KGRv
dWJsZSlnYW1tYQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2ltdWxh
dGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpOwogfQogCkBAIC0y
NTQyLDYgKzI2NTYsNyBAQCArIChCT09MKV93aWxsVXBncmFkZVRvSFRUUFM6KE5TVVJMICopdXJs
CiAKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRT
dHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9zaG93U2Fm
ZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHRpdGxlOnRpdGxlIHdhcm5pbmc6d2FybmluZyBk
ZXRhaWxzV2l0aExpbmtzOmRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIGNvbnRpbnVl
VW5zYWZlTG9hZCwgTlNVUkwgKnVybCkgewogICAgICAgICBBU1NFUlQoIXVybCk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNvbnRpbnVlVW5zYWZlTG9hZCk7CkBAIC0yNTUwLDYgKzI2NjUs
NyBAQCAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTooTlNTdHJpbmcg
Kil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKQogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5n
V2FybmluZ1dpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5p
bmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRh
aWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9zaG93U2FmZUJyb3dzaW5nV2Fy
bmluZ1dpdGhVUkw6bmlsIHRpdGxlOnRpdGxlIHdhcm5pbmc6d2FybmluZyBkZXRhaWxzV2l0aExp
bmtzOmRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIGNvbnRpbnVlVW5zYWZlTG9hZCwg
TlNVUkwgKnVybCkgewogICAgICAgICBBU1NFUlQoIXVybCk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRpbnVlVW5zYWZlTG9hZCk7CkBAIC0yNTU4LDYgKzI2NzQsNyBAQCAtICh2b2lk
KV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIHdhcgogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhV
Ukw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5n
ICopd2FybmluZyBkZXRhaWxzV2l0aExpbmtzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxz
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wsIE5TVVJMICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gc2FmZUJyb3dzaW5nV2Fy
bmluZyA9IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6Y3JlYXRlKHVybCwgdGl0bGUsIHdh
cm5pbmcsIGRldGFpbHMpOwogICAgIGF1dG8gd3JhcHBlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWYXJpYW50PFdlYktpdDo6Q29udGlu
dWVVbnNhZmVMb2FkLCBVUkw+JiYgdmFyaWFudCkgewogICAgICAgICBzd2l0Y2hPbih2YXJpYW50
LCBbJl0gKFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkIGNvbnRpbnVlVW5zYWZlTG9hZCkgewpA
QCAtMjU5MCw2ICsyNzA3LDcgQEAgKyAoTlNVUkwgKilfdmlzaXRVbnNhZmVXZWJzaXRlU2VudGlu
ZWwKIAogLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5pc0pJVEVuYWJsZWQo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJv
b2wgZW5hYmxlZCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKICAgICB9
KTsKQEAgLTI1OTcsMTEgKzI3MTUsMTMgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdp
dGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFT
Y3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1
bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gaW5GcmFtZTpuaWwgaW5Xb3JsZDpXS0NvbnRl
bnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwog
fQogCiAtICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0OihOU1N0cmluZyAqKWZ1bmN0aW9uQm9k
eSBhcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5G
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQg
Kiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICpl
cnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
W3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXNBc3luY0Z1bmN0aW9uOllF
UyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0
dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIApAQCAtMjYyNiwxMSArMjc0NiwxMyBAQCAtIChC
T09MKV9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWQKIAogLSAodm9pZClfZXZhbHVhdGVKYXZh
U2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8g
KilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJM
Om5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1l
IGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
XTsKIH0KIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgd2l0aFNvdXJjZVVSTDooTlNVUkwgKil1cmwgaW5GcmFtZTooV0tGcmFtZUluZm8g
KilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNlVVJM
OnVybCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1l
IGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
XTsKIH0KIApAQCAtMjY0MCw2ICsyNzYyLDcgQEAgLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGlj
aWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKIAogLSAodm9pZClfdXBk
YXRlV2VicGFnZVByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVm
ZXJlbmNlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAod2VicGFnZVByZWZl
cmVuY2VzLl93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVXBkYXRpbmcgV0tXZWJzaXRlRGF0YVN0
b3JlIGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uLiJdOwogICAgIGlmICh3ZWJwYWdlUHJlZmVyZW5jZXMuX3VzZXJDb250ZW50Q29udHJvbGxl
cikKQEAgLTI2NTAsMTEgKzI3NzMsMTMgQEAgLSAodm9pZClfdXBkYXRlV2VicGFnZVByZWZlcmVu
Y2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcwogCiAtICh2b2lk
KV9ub3RpZnlVc2VyU2NyaXB0cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFn
ZS0+bm90aWZ5VXNlclNjcmlwdHMoKTsKIH0KIAogLSAoQk9PTClfZGVmZXJyYWJsZVVzZXJTY3Jp
cHRzTmVlZE5vdGlmaWNhdGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1
cm4gX3BhZ2UtPnVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbigpOwogfQogCkBAIC0yNjY5LDYg
KzI3OTQsNyBAQCAtIChCT09MKV9hbGxvd3NSZW1vdGVJbnNwZWN0aW9uCiAKIC0gKHZvaWQpX3Nl
dEFsbG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxsb3cKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNldEFsbG93
c1JlbW90ZUluc3BlY3Rpb24oYWxsb3cpOwogI2VuZGlmCkBAIC0yNjg1LDYgKzI4MTEsNyBAQCAt
IChOU1N0cmluZyAqKV9yZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlCiAKIC0gKHZvaWQpX3Nl
dFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU6KE5TU3RyaW5nICopbmFtZQogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBfcGFn
ZS0+c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShuYW1lKTsKICNlbmRpZgpAQCAtMjY5
Nyw2ICsyODI0LDcgQEAgLSAoQk9PTClfYWRkc1Zpc2l0ZWRMaW5rcwogCiAtICh2b2lkKV9zZXRB
ZGRzVmlzaXRlZExpbmtzOihCT09MKWFkZHNWaXNpdGVkTGlua3MKIHsKKyAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zpc2l0ZWRMaW5r
cyk7CiB9CiAKQEAgLTI3NDQsNiArMjg3Miw3IEBAIC0gKHZvaWQpX3NldE9ic2VydmVkUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHM6KF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKW9ic2VydmVkCiAK
IC0gKHZvaWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShfcGFn
ZS0+bWFpbkZyYW1lKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3cmFwcGVyKGRhdGEpLCBuaWwpOwogICAgIH0pOwpAQCAtMjc1MSwxMSArMjg4MCwxMyBAQCAt
ICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKQogCiAtICh2b2lkKV9nZXRXZWJBcmNoaXZlRGF0YVdpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgY3JlYXRlV2Vi
QXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQog
CiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm8sIFtoYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewogICAgICAgICBoYW5k
bGVyKHN0cmluZywgbmlsKTsKICAgICB9KTsKQEAgLTI3NjMsNiArMjg5NCw3IEBAIC0gKHZvaWQp
X2dldENvbnRlbnRzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3Ry
aW5nICosIE5TRXJyb3IKIAogLSAodm9pZClfZ2V0Q29udGVudHNPZkFsbEZyYW1lc0FzU3RyaW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVudHNB
c1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Olllcywg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShTdHJpbmcgc3RyaW5n
KSB7CiAgICAgICAgIGhhbmRsZXIoc3RyaW5nKTsKICAgICB9KTsKQEAgLTI3NzAsNiArMjkwMiw3
IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcKIAogLSAodm9pZClfZ2V0Q29udGVudHNBc0F0dHJp
YnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXR0cmlidXRlZFN0
cmluZyAqLCBOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRBdHRyaWJ1dGVL
ZXksIGlkPiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhbaGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGF0dHJpYnV0ZWRT
dHJpbmcpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nKQogICAgICAgICAg
ICAgaGFuZGxlcihhdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSwgYXR0cmlidXRlZFN0cmlu
Zy5kb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCksIG5pbCk7CkBAIC0yNzgwLDYgKzI5MTMsNyBAQCAt
ICh2b2lkKV9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBdHRyaWJ1dAogCiAtICh2b2lkKV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBfcGFnZS0+Z2V0QXBwbGljYXRpb25NYW5pZmVz
dChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpIHsK
ICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0yODE3LDYgKzI5NTEsNyBAQCAt
IChfV0tQYWdpbmF0aW9uTW9kZSlfcGFnaW5hdGlvbk1vZGUKIAogLSAodm9pZClfc2V0UGFnaW5h
dGlvbk1vZGU6KF9XS1BhZ2luYXRpb25Nb2RlKXBhZ2luYXRpb25Nb2RlCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZTsKICAgICBz
d2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CiAgICAgY2FzZSBfV0tQYWdpbmF0aW9uTW9kZVVucGFn
aW5hdGVkOgpAQCAtMjg0OCw2ICsyOTgzLDcgQEAgLSAoQk9PTClfcGFnaW5hdGlvbkJlaGF2ZXNM
aWtlQ29sdW1ucwogCiAtICh2b2lkKV9zZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOihC
T09MKWJlaGF2ZXNMaWtlQ29sdW1ucwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMp
OwogfQogCkBAIC0yODU4LDYgKzI5OTQsNyBAQCAtIChDR0Zsb2F0KV9wYWdlTGVuZ3RoCiAKIC0g
KHZvaWQpX3NldFBhZ2VMZW5ndGg6KENHRmxvYXQpcGFnZUxlbmd0aAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKTsKIH0KIApA
QCAtMjg2OCw2ICszMDA1LDcgQEAgLSAoQ0dGbG9hdClfZ2FwQmV0d2VlblBhZ2VzCiAKIC0gKHZv
aWQpX3NldEdhcEJldHdlZW5QYWdlczooQ0dGbG9hdClnYXBCZXR3ZWVuUGFnZXMKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEdhcEJldHdlZW5QYWdlcyhnYXBCZXR3
ZWVuUGFnZXMpOwogfQogCkBAIC0yODc4LDYgKzMwMTYsNyBAQCAtIChCT09MKV9wYWdpbmF0aW9u
TGluZUdyaWRFbmFibGVkCiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQ6
KEJPT0wpbGluZUdyaWRFbmFibGVkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCk7CiB9CiAK
QEAgLTI4OTgsNiArMzAzNyw3IEBAIC0gKGRvdWJsZSlfdGV4dFpvb21GYWN0b3IKIAogLSAodm9p
ZClfc2V0VGV4dFpvb21GYWN0b3I6KGRvdWJsZSl6b29tRmFjdG9yCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0K
IApAQCAtMjkwOCw2ICszMDQ4LDcgQEAgLSAoZG91YmxlKV9wYWdlWm9vbUZhY3RvcgogCiAtICh2
b2lkKV9zZXRQYWdlWm9vbUZhY3RvcjooZG91YmxlKXpvb21GYWN0b3IKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgc2V0UGFnZVpvb206em9vbUZhY3Rvcl07CiB9CiAKQEAg
LTI5NjksNiArMzExMCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9w
dGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kCiAKIC0gKHZvaWQpX2Nv
dW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfY3VzdG9tQ29u
dGVudFZpZXcpIHsKICAgICAgICAgW19jdXN0b21Db250ZW50VmlldyB3ZWJfY291bnRTdHJpbmdN
YXRjaGVzOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnRdOwpAQCAtMjk4
MCw2ICszMTIyLDcgQEAgLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0
cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG0KIAogLSAodm9pZClfZmluZFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBt
YXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFdoaWxlIEFwcEtpdCBjb250YWlucyBs
b2dpYyBpbiBOU0JhclRleHRGaW5kZXIgdG8gYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIGZpbmQg
cGFzdGVib2FyZAogICAgIC8vIHdoZW4gdGhlIGZpbmQgc3RyaW5nIGNoYW5nZXMsIHRoaXMgKGFs
b25nIHdpdGggdGhlIGZpbmQgcGFzdGVib2FyZCBpdHNlbGYpIGFyZSBib3RoIG1pc3NpbmcKQEAg
LTI5OTYsNiArMzEzOSw3IEBAIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6CiAKIC0gKHZvaWQpX2hp
ZGVGaW5kVUkKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CiAgICAgICAgIFtfY3VzdG9tQ29u
dGVudFZpZXcgd2ViX2hpZGVGaW5kVUldOwpAQCAtMzAwNyw2ICszMTUxLDcgQEAgLSAodm9pZClf
aGlkZUZpbmRVSQogCiAtICh2b2lkKV9zYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAgICAgX3BhZ2UtPnJlY29yZE5hdmlnYXRp
b25TbmFwc2hvdChpdGVtLl9pdGVtKTsKQEAgLTMwMjAsNiArMzE2NSw3IEBAIC0gKHZvaWQpX3Nl
cnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAt
ICh2b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CkBAIC0zMDI3LDYgKzMxNzMsNyBAQCAtICh2b2lkKV9j
bGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lkKSljb21w
bGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9wcmVjb25uZWN0VG9TZXJ2ZXI6KE5TVVJMICopdXJs
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5wcmVjb25uZWN0VG8odXJs
KTsKIH0KIApAQCAtMzAzNyw2ICszMTg0LDcgQEAgLSAoQk9PTClfY2FuVXNlQ3JlZGVudGlhbFN0
b3JhZ2UKIAogLSAodm9pZClfc2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2UKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2Ut
PnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKTsKIH0K
IApAQCAtMzE3Nyw2ICszMzI1LDcgQEAgLSAoX1dLTGF5b3V0TW9kZSlfbGF5b3V0TW9kZQogCiAt
ICh2b2lkKV9zZXRMYXlvdXRNb2RlOihfV0tMYXlvdXRNb2RlKWxheW91dE1vZGUKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdLTGF5b3V0TW9kZSB3
a1ZpZXdMYXlvdXRNb2RlOwogICAgIHN3aXRjaCAobGF5b3V0TW9kZSkgewpAQCAtMzIwNywxMSAr
MzM1NiwxMyBAQCAtIChDR1NpemUpX2ZpeGVkTGF5b3V0U2l6ZQogCiAtICh2b2lkKV9zZXRGaXhl
ZExheW91dFNpemU6KENHU2l6ZSlmaXhlZExheW91dFNpemUKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNldEZpeGVkTGF5b3V0U2l6ZShXZWJDb3JlOjpleHBhbmRlZElu
dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGZpeGVkTGF5b3V0U2l6ZSkpKTsKIH0KIAogLSAodm9p
ZClfc2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOihCT09MKWJhY2tncm91bmRFeHRlbmRz
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRCYWNrZ3JvdW5kRXh0
ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHMpOwogfQogCkBAIC0zMjMxLDYgKzMzODIs
NyBAQCAtIChDR0Zsb2F0KV92aWV3U2NhbGUKIAogLSAodm9pZClfc2V0Vmlld1NjYWxlOihDR0Zs
b2F0KXZpZXdTY2FsZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAodmlld1Nj
YWxlIDw9IDAgfHwgaXNuYW4odmlld1NjYWxlKSB8fCBpc2luZih2aWV3U2NhbGUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAi
VmlldyBzY2FsZSBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXIiXTsKIApAQCAtMzI1MSwxMSAr
MzQwMywxMyBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cwogCiAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilwYXR0ZXJucwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0
Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOwogfQog
CiAtICh2b2lkKV9nZXRQcm9jZXNzRGlzcGxheU5hbWVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIF9wYWdlLT5nZXRQcm9jZXNzRGlzcGxheU5hbWUoW2hhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgbmFtZSkgewogICAgICAgICBoYW5k
bGVyKG5hbWUpOwogICAgIH0pOwpAQCAtMzI2Myw2ICszNDE3LDcgQEAgLSAodm9pZClfZ2V0UHJv
Y2Vzc0Rpc3BsYXlOYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAq
KSljb21wbGUKIAogLSAodm9pZClfc2V0TWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOihDR0Zs
b2F0KW1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcGFnZS0+bWluaW11bUVmZmVj
dGl2ZURldmljZVdpZHRoKCkgPT0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQogICAgICAg
ICByZXR1cm47CkBAIC0zMjg1LDYgKzM0NDAsNyBAQCAtIChDR0Zsb2F0KV9taW5pbXVtRWZmZWN0
aXZlRGV2aWNlV2lkdGgKIAogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNl
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3Bh
Z2UtPmdyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSgpOwogfQpAQCAtMzI5Myw2ICszNDQ5
LDcgQEAgLSAodm9pZClfZ3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlCiAKIC0gKHZvaWQp
X3NldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOihCT09MKWVuYWJsZWQK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFNjcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCkBAIC0zMzIzLDYgKzM0ODAs
NyBAQCAtIChCT09MKV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sKIAogLSAodm9p
ZClfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrOihCT09MKWZsYWcKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBfcGFn
ZS0+c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGZsYWcpOwogI2VuZGlmCkBA
IC0zMzYxLDYgKzM1MTksNyBAQCAtIChfV0tNZWRpYUNhcHR1cmVTdGF0ZURlcHJlY2F0ZWQpX21l
ZGlhQ2FwdHVyZVN0YXRlCiAKIC0gKHZvaWQpX3NldE1lZGlhQ2FwdHVyZUVuYWJsZWQ6KEJPT0wp
ZW5hYmxlZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0TWVkaWFD
YXB0dXJlRW5hYmxlZChlbmFibGVkKTsKIH0KIApAQCAtMzM3MSw2ICszNTMwLDcgQEAgLSAoQk9P
TClfbWVkaWFDYXB0dXJlRW5hYmxlZAogCiAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlh
TXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBjb3JlU3RhdGU7CiAKICAgICBp
ZiAobXV0ZWRTdGF0ZSAmIF9XS01lZGlhQXVkaW9NdXRlZCkKQEAgLTMzODUsNiArMzU0NSw3IEBA
IC0gKHZvaWQpX3NldFBhZ2VNdXRlZDooX1dLTWVkaWFNdXRlZFN0YXRlKW11dGVkU3RhdGUKIAog
LSAodm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxl
dGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCiAgICAgX3BhZ2UtPnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKFtjb21wbGV0aW9uID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb24pLCBwYWdlID0gbWFrZVdlYWtQdHIoX3BhZ2UuZ2V0KCkpXSAo
YXV0byYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChwYWdlKQpAQCAtMzQwMCwxMSArMzU2MSwxMyBA
QCAtICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczooZGlzcGF0Y2hfYmxvY2tfdCljb21w
bGV0aW9uCiAvLyBFeGVjdXRlIHRoZSBzdXBwbGllZCBibG9jayBhZnRlciB0aGUgbmV4dCB0cmFu
c2FjdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzLgogLSAodm9pZClfZG9BZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlOnVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6Tk8gd2l0aG91dFdhaXRp
bmdGb3JBbmltYXRlZFJlc2l6ZTpOT107CiB9CiAKIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2Vu
dGF0aW9uVXBkYXRlV2l0aG91dFdhaXRpbmdGb3JQYWludGluZzoodm9pZCAoXikodm9pZCkpdXBk
YXRlQmxvY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2ludGVybmFs
RG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6dXBkYXRlQmxvY2sgd2l0aG91dFdhaXRpbmdG
b3JQYWludGluZzpZRVMgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTpOT107CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDQ0OWJmMjMzZjU1NmE4ZDFjZDk2ZjQ2OTJhYzM2MjFiOTNiZWVjYzAuLjJk
ZmVhYmEwZGQ0Y2IzZDRlMDBlOWQ1ZmJhY2M4MzgyMDA3ZGYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDEw
LDYgKzQxMCw5IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyOwogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZjk2MzlhYTY1YzJiNTZlZWEzNzRmNGU2MzFk
YjM1OTAzOWJhNDEuLjkyMzA2ODM0Nzc5MTFjOGZlZTA3NzlkOTJhZjY4YmQ3NGM1M2Q5NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE0Niw3ICszMTQ2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VzcGVuZGVkLCB3aGlj
aCBzaG91bGQgYmUgdGhlIGNhc2UgZHVyaW5nIHBhbm5pbmcsIHBpbmNoaW5nCiAgICAgLy8gYW5k
IGFuaW1hdGlvbiBvbiB0aGUgcGFnZSBpdHNlbGYgKGtpbmV0aWMgc2Nyb2xsaW5nLCB0YXAgdG8g
em9vbSkgZXRjLCB0aGVuCiAgICAgLy8gd2UgZG8gbm90IHNlbmQgYW55IG9mIHRoZSBldmVudHMg
dG8gdGhlIHBhZ2UgZXZlbiBpZiBpcyBoYXMgbGlzdGVuZXJzLgotICAgIGlmICghbV9pc1BhZ2VT
dXNwZW5kZWQpIHsKKyAgICBpZiAoIW1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNT
dXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAg
ICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCkpOwpAQCAtMzU5NCwyNCArMzU5
NCw0NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgY3VzdG9tVXNlckFnZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8
fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFt
X2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworICAgIG1fYXJlQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQp
CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8IG1fYXJlQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNQYWdlU3Vz
cGVuZGVkID0gdHJ1ZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkID0gdHJ1ZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN1
c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdXNwZW5kOiIpOworICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc3Vt
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3VtZToiKTsKKworICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0
c1RleHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUgKDExODg0MCk6IFdlIHNob3Vs
ZCBwcm9iYWJseSBvbmx5IHN1cHBvcnQgdGhpcyBmb3IgdGV4dCBkb2N1bWVudHMsIG5vdCBhbGwg
bm9uLWltYWdlIGRvY3VtZW50cy4KQEAgLTYwODEsNyArNjEwMiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wTWVkaWFDYXB0dXJlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQga2lu
ZCwgQ29tcGxlCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tT
dGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE1l
ZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhUGxheWJhY2tTdGF0
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC03NzIyLDcgKzc3NDMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNz
VGVybWluYXRpb25SZWFzb24gdGVybWluYQogICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG51bGxw
dHI7CiAKICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gZmFsc2U7Ci0gICAgbV9pc1BhZ2VTdXNw
ZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkID0gZmFsc2U7CiAKICAgICBtX3VzZXJTY3JpcHRzTm90aWZpZWQgPSBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YjQ1N2RmYjYwMzFlZjYz
OWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAyLi5kNTEzYWFhM2JlMjdlNGE1MTYzMWVhYjEzZmZhY2E5
MmFmMWMwY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTA1
LDYgKzUwNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKTsKICAg
ICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCk7CiAKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdXNwZW5kZWQ7IH0KKwogICAgIFdlYkluc3BlY3RvclVJUHJveHkqIGluc3BlY3Rvcigp
IGNvbnN0OwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIGdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogCkBAIC0xMDE0LDcgKzEwMTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwog
ICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0
b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKLSAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2VTdXNwZW5kZWQ7IH0K
KyAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZDsg
fQogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCkBAIC0yNzUzLDcg
KzI3NTcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxl
PiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5k
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVl
IH07CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNlIH07CkBAIC0z
MDE1LDYgKzMwMTksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1J1bm5pbmdNb2RhbEphdmFTY3JpcHRE
aWFsb2cgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBhOWM3ZGQzMjNlYzY2ODIwYzRmMzVmNDZjNjM2ZWU0YTcwOGViNDI1Li43
YTAyODBmN2ExZjg1NjRhMTA3OGE0N2ZjOTU4NzIxMDc0ZmNkMjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUyLDYgKzE1Miw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jh
Y2tGb3J3YXJkQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21tb25WTS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGFjdHNSZXF1ZXN0RGF0YS5oPgpAQCAtMzU5Niw2ICszNTk3LDM3IEBAIHZvaWQgV2Vi
UGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIG1fcGFnZS0+
cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBXZWJQYWdl
OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3VzcGVuZDogbV9w
YWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIGZyZWV6ZUxheWVyVHJlZShMYXllclRy
ZWVGcmVlemVSZWFzb246OlBhZ2VTdXNwZW5kZWQpOworCisgICAgbV9jYWNoZWRQYWdlID0gQmFj
a0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCkuc3VzcGVuZFBhZ2UoKm1fcGFnZSk7CisgICAgQVNT
RVJUKG1fY2FjaGVkUGFnZSk7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpKQorICAgICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmRldGFjaEZyb21BbGxP
cGVuZWRGcmFtZXMoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN1bWU6
IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBhdXRvIGNhY2hlZFBhZ2UgPSBz
dGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0cik7CisgICAgQVNTRVJUKGNhY2hlZFBh
Z2UpOworICAgIGlmICghY2FjaGVkUGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKworICAgIGNhY2hlZFBhZ2UtPnJlc3RvcmUoKm1fcGFnZSk7CisgICAgdW5m
cmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVu
VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93
UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
ZWU0NDczYWRjNGI5ODBlMGRiOGQ3YTNlMDM0ODdiYjJmZTg5OGZiYy4uZmM5NjIxZTM3MmM1YjQw
NDJiOWVkYmNiY2YyZTMyMzY0M2FhZWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBD
YXB0dXJlRGV2aWNlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBEcmFnRGF0YTsKQEAg
LTE2NjksNiArMTY3MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zKCk7CiAKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwpAQCAtMjMxOCw2ICsyMzIy
LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNhY2hlZFBhZ2U+IG1fY2FjaGVk
UGFnZTsKKwogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAgICAgYm9vbCBtX2lwY1Rlc3Rp
bmdBUElFbmFibGVkIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX3Zpc2l0ZWRMaW5rVGFibGVJ
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IGUzN2E2NTljOTFiMzg5MmUyYjhmOTM4YzYyNmNkY2ZlODllNDE5MDQu
LjFiM2E2ODFmY2I1MWY0MTNlMjFiYTQyNTQ0MmI4YzBhMWZkNWUwYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MjUwLDYgKzI1MCw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpCiAKKyAgICBTdXNwZW5kKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAg
ICBSZXN1bWUoKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworCiAgICAgQ2xvc2UoKQogICAgIFRy
eUNsb3NlKCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2OGU2MWRmNjBhOWU1OTI0Y2U2MDhm
NjY5YTBiNTJiNjQxN2Q4YTAyLi45NDI0MWRlMjE3ZjkyNjNlNDQxZTAzNDExODlmMGRiMDk0YmI1
NDM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQgLyByZXN1bWUgYSBXS1dlYlZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTMzMworICAg
ICAgICA8cmRhcjovLzc3NDYyNTQzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVu
LgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW06Cisg
ICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sOiBBZGRlZC4KKwogMjAyMS0wNS0xMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY0NhdGFseXN0XSBzaG91
bGQgaGF2ZSBDU1MgYGhvdmVyOiBob3ZlcmAgYW5kIGBwb2ludGVyOiBmaW5lYApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkYzExN2IyNGQ5MjcyMmZlOTA2YzdlZTRmZTkwYjljN2VjOTA3YzI5
Li5iNzkzZDM3MmYzMWQ0NTk0MWVhNDIwNzU4ZGE2MWQ0YjY4NmQxY2Q2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2Miw3IEBACiAJCTQ2M0Y0NzIzMjU1QjQ5QjYwMEQ5RTBD
QyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjNGNDcyMjI1NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRl
Lm1tICovOyB9OwogCQk0NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1p
bmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgKi87IH07
CiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKKwkJNDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdG
IC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMyM0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBw
b3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsKIAkJNDY1RTI4MDcyNTVCMkE2QTAwNjNB
Nzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLzsg
fTsKIAkJNDY2QzM4NDMyMTA2MzdERTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNl
cnZlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3QzU2NTMyMUI1RUQxMzAwNTc1MTZEIC8qIEdldFNlc3Np
b25Db29raWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5o
dG1sICovOyB9OwpAQCAtMTY1MCw2ICsxNjUxLDcgQEAKIAkJCQkzRkNDNEZFODFFQzRFOENBMDA3
NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJRjQxNTA4NkQxREEwNDBDNTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2su
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwRUJCQ0M2NjFGRkY5RTBDMDBGQTQyQUIg
LyogcG9wLXVwLWNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNDY1QzIzQUYy
NjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUY0MUFCOUE4MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJh
dGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE5MUVGNDY5NkIwMDgz
RkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjZG
RERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTIwNjcsNiArMjA2OSw3IEBACiAJCTQ2M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBDQyAv
KiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAgLyog
QmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJCYWRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVFMjgwNjI1NUIyQTY5MDA2M0E3
ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NkMzODQy
MjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2
RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBH
ZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDcz
LDYgKzQwNzYsNyBAQAogCQkJCTlCN0Q3NDBFMUY4Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZk
Lmh0bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3RTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1
cmVEZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUwODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5
LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCisJCQkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8q
IHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovLAogCQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgz
RkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICovLAogCQkJCUY0MUFCOTlBMUVGNDY5MkMw
MDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgKi8sCiAJCQkJQTEyRERCRkYxRTgzNzNDMTAw
Q0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5odG1sICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3Vz
cGVuc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N1c3BlbnNpb24ubW0KaW5kZXggOTk2NjFiMzQwM2IwNGQxNDFhMWM0MjgxNDViN2Q2ZmY0Nzk4
ZGRjMi4uMGIwYjlhYzk2NzA1ODIxNmUwNDM5OGJlZjQ3NWVjYjdlMWY5MWQ4NiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
dXNwZW5zaW9uLm1tCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8d3RmL0Z1
bmN0aW9uLmg+CiAKIFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIENhbmNlbFdlYlByb2Nlc3NTdXNw
ZW5zaW9uKQogewpAQCAtODMsMyArODUsMTUxIEBAIFRFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERl
c3Ryb3lXZWJQYWdlRHVyaW5nV2ViUHJvY2Vzc1N1c3BlbnNpb24pCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6c2xlZXAoMSk7CiAgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3MyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdKTsKIH0KKworVEVTVChQcm9jZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3
U3VzcGVuZFBhZ2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gdGVzdE1lc3NhZ2VI
YW5kbGVyID0gYWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOnRlc3RNZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAg
ICBfX2Jsb2NrIHVuc2lnbmVkIHRpbWVyRmlyZWRDb3VudCA9IDA7CisgICAgW3Rlc3RNZXNzYWdl
SGFuZGxlciBhZGRNZXNzYWdlOkAidGltZXIgZmlyZWQiIHdpdGhIYW5kbGVyOl57CisgICAgICAg
ICsrdGltZXJGaXJlZENvdW50OworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllF
U10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBvc3RN
ZXNzYWdlLXJlZ3VsYXJseSJdOworCisgICAgYXV0byBwaWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShwaWQsIDApOworCisgICAgLy8gVGhlIHRpbWVy
IHNob3VsZCBiZSBmaXJpbmcuCisgICAgYXV0byBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZp
cmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291
bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBF
WFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAg
YXV0byB0ZXN0UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGlkIHRlc3RJbnRlcmFj
dGlvblN0YXRlID0gW3dlYlZpZXcgaW50ZXJhY3Rpb25TdGF0ZV07CisgICAgYXV0byBvcmlnaW5h
bFVSTCA9IFt3ZWJWaWV3IFVSTF07CisKKyAgICAvLyBTdXNwZW5kIHRoZSBwYWdlLgorICAgIFt3
ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgLy8gVGhlIHRpbWVyIHNo
b3VsZCBubyBsb25nZXIgYmUgZmlyaW5nLgorICAgIGxhc3RUaW1lckZpcmVDb3VudCA9IHRpbWVy
RmlyZWRDb3VudDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMDApOwor
ICAgIEVYUEVDVF9FUShsYXN0VGltZXJGaXJlQ291bnQsIHRpbWVyRmlyZWRDb3VudCk7CisKKyAg
ICBhdXRvIGNoZWNrVGhyb3dzID0gW10oRnVuY3Rpb248dm9pZCgpPiYmIGYpIHsKKyAgICAgICAg
QHRyeSB7CisgICAgICAgICAgICBmKCk7CisgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH07CisKKyAgICAvLyBNb3N0IG9wZXJhdGlvbnMgb24gV0tXZWJWaWV3IHNo
b3VsZCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBzdXNwZW5kZWQuCisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93Lm5h
bWUiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Ro
cm93cyhbJl0geyBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUyIl07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAImZvbyIgYmFzZVVSTDpuaWxdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06d2ViVmll
dy5nZXQoKS5iYWNrRm9yd2FyZExpc3QuY3VycmVudEl0ZW1dOyB9KSk7CisgICAgRVhQRUNUX1RS
VUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVsb2FkXTsgfSkpOworICAgIEVYUEVDVF9U
UlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJlbG9hZEZyb21PcmlnaW5dOyB9KSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29CYWNrXTsgfSkpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGdvRm9yd2FyZF07IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzdG9wTG9hZGlu
Z107IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBjbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcGF1c2VBbGxNZWRpYVBs
YXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOllF
UyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJv
d3MoWyZdIHsgW3dlYlZpZXcgcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9u
SGFuZGxlcjpeKFdLTWVkaWFQbGF5YmFja1N0YXRlKSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RS
VUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOldLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmUgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVY
UEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldE1pY3JvcGhvbmVDYXB0dXJl
U3RhdGU6V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9
KSk7CisjaWYgVEFSR0VUX09TX0lQSE9ORQorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsm
XSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpeKFVJSW1hZ2UgKnNuYXBzaG90LCBOU0Vycm9yICplcnJvcikgeyB9XTsgfSkpOwor
I2Vsc2UKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyB0YWtlU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0ltYWdlICpz
bmFwc2hvdCwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyNlbmRpZgorICAgIEVYUEVDVF9U
UlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9u
Om5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsg
fV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBjcmVh
dGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0g
eyB3ZWJWaWV3LmdldCgpLmFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gWUVT
OyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5j
dXN0b21Vc2VyQWdlbnQgPSBAImZvbyI7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0xpbmtQcmV2aWV3ID0gWUVTOyB9KSk7CisjaWYg
IVRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJW
aWV3LmdldCgpLmFsbG93c01hZ25pZmljYXRpb24gPSBZRVM7IH0pKTsKKyAgICBFWFBFQ1RfVFJV
RShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLm1hZ25pZmljYXRpb24gPSAxLjE7IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRNYWduaWZp
Y2F0aW9uOjEuMSBjZW50ZXJlZEF0UG9pbnQ6Q0dQb2ludE1ha2UoMCwgMCldOyB9KSk7CisjZW5k
aWYKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLnBhZ2Va
b29tID0gMS4xOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZp
ZXcgZmluZFN0cmluZzpAImZvbyIgd2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnRlc3RS
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsgfV07IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmludGVy
YWN0aW9uU3RhdGUgPSB0ZXN0SW50ZXJhY3Rpb25TdGF0ZTsgfSkpOworICAgIEVYUEVDVF9UUlVF
KGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCkubWVkaWFUeXBlID0gQCJ0ZXh0L2h0bWwi
OyB9KSk7CisKKyAgICAvLyBTb21lIG9mIHRoZSBiYXNpYyBBUEkgc3RpbGwgd29ya3MuCisgICAg
RVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcsIG9yaWdpbmFsVVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0
XS5iYWNrSXRlbSwgbmlsKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgdGl0bGVdLCBA
IiIpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKyAgICBFWFBFQ1Rf
RVEoW3dlYlZpZXcgZXN0aW1hdGVkUHJvZ3Jlc3NdLCAxLjApOworICAgIEVYUEVDVF9GQUxTRShb
d2ViVmlldyBjYW5Hb0JhY2tdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgY2FuR29Gb3J3
YXJkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGhhc09ubHlTZWN1cmVDb250ZW50XSk7
CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHNlcnZlclRydXN0XSwgbmlsKTsKKyAgICBFWFBFQ1Rf
RVEoW3dlYlZpZXcgY2FtZXJhQ2FwdHVyZVN0YXRlXSwgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUp
OworICAgIEVYUEVDVF9FUShbd2ViVmlldyBtaWNyb3Bob25lQ2FwdHVyZVN0YXRlXSwgV0tNZWRp
YUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBjdXN0b21V
c2VyQWdlbnRdLCBAIiIpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGFsbG93c0xpbmtQcmV2
aWV3XSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
YWxsb3dzTWFnbmlmaWNhdGlvbl0pOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBtYWduaWZpY2F0
aW9uXSwgMS4wKTsKKyNlbmRpZgorICAgIEVYUEVDVF9FUShbd2ViVmlldyBwYWdlWm9vbV0sIDEu
MCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IG1lZGlhVHlwZV0sIEAiIik7CisgICAg
RVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGludGVyYWN0aW9uU3RhdGVd
OyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRoZW1l
Q29sb3JdOyB9KSk7CisKKyAgICAvLyBSZXN1bWUgdGhlIHBhZ2UuCisgICAgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIFt3ZWJWaWV3IGFkZFRvVGVzdFdp
bmRvd107CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxkIHN0YXJ0IGZpcmluZyBhZ2Fpbi4KKyAg
ICBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RU
aW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQg
PiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRpZCBub3QgY3Jh
c2guCisgICAgRVhQRUNUX0VRKHBpZCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7
Cit9CisKK1RFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlYWxsb2NhdGVTdXNwZW5kZWRWaWV3KQor
eworICAgIC8vIERlYWxsb2NhdGluZyBhIHN1c3BlbmRlZCBXZWJWaWV3IHNob3VsZCBub3QgdGhy
b3cgb3IgY3Jhc2guCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV1dOworICAgICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisKKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAg
ICAgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAg
ICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgICAg
ICBbd2ViVmlldyBfY2xvc2VdOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZTAwZDhjYmRiZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRT4K
KzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0SW50ZXJ2YWwoKCkgPT4geworICAgIHdlYmtp
dC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ3RpbWVyIGZpcmVkJyk7
Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428342</attachid>
            <date>2021-05-11 21:05:44 -0700</date>
            <delta_ts>2021-05-11 21:26:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210511210544.patch</filename>
            <type>text/plain</type>
            <size>132300</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZWRhMzg4YTNjODY2
ZTRmYjMwYWM5MGE4OGY4NzU4NTRlODkyZi4uMTk5ZWY4MTE0Y2M3YjJiOGUyMDY5MGJjZmNlZmNj
OGEyMzZjMjYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9uIHRv
IEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hlZFBh
Z2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rvcmlu
ZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBpcyB1
c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRvIG5v
dCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdhdGlv
bikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFja0Zv
cndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0cnlT
dXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNh
Y2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFn
ZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICogaGlz
dG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc3MzQx
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkMTgxM2Q1YWQ3Y2VlOWExNjIzNjFhMGE4N2JjZDgyZjJiZjYyYTZjLi5j
M2M4ZmIwYjliOWYwY2Q1ZGRkYTQ4NDNmY2JkZDA0MmUwYjNhYzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwMCBAQAorMjAyMS0wNS0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAg
IDxyZGFyOi8vNzc0NjI1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisK
KyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBUaGlzIHN1
c3BlbmRzIHRoZSBwYWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlIGJ1dCB0aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVkIHRvIG5h
dmlnYXRlLgorICAgICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFydCBvZiB0
aGUgQmFjay9Gb3J3YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51bWJlciBv
ZiBzdXNwZW5kZWQgcGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICBNb3N0IG9m
IFdLV2ViVmlldydzIEFQSSAvIFNQSSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxl
ZCBvbiBhIHN1c3BlbmRlZAorICAgICAgICB2aWV3IChUaGUgV0tQYWdlUmVmQVBJIHdpbGwgUkVM
RUFTRV9BU1NFUlQoKSkuIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSB3aWxsIHN0YXkKKyAgICAgICAg
ZnVuY3Rpb25hbCAoVVJMLCBpc0xvYWRpbmcsIHRpdGxlLCAuLi4pLiBJdCBpcyBhbHNvIHNhZmUg
dG8gZGVhbGxvY2F0ZSAvIGNsb3NlCisgICAgICAgIGEgc3VzcGVuZGVkIFdLV2ViVmlldy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoY3Jhc2hJZlBh
Z2VJc1N1c3BlbmRlZCk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToKKyAgICAgICAgKFdLUGFn
ZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6CisgICAgICAgIChXS1Bh
Z2VMb2FkVVJMV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWRGaWxlKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKToKKyAg
ICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhV2l0aFVzZXJE
YXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxv
YWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVz
ZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VM
b2FkV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0
aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLUGFn
ZVJlbG9hZCk6CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKToK
KyAgICAgICAgKFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdlUmVsb2Fk
RXhwaXJlZE9ubHkpOgorICAgICAgICAoV0tQYWdlVHJ5Q2xvc2UpOgorICAgICAgICAoV0tQYWdl
Q2xvc2UpOgorICAgICAgICAoV0tQYWdlR29Gb3J3YXJkKToKKyAgICAgICAgKFdLUGFnZUdvQmFj
ayk6CisgICAgICAgIChXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChX
S1BhZ2VUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV0tQYWdlVXBkYXRlV2Vi
c2l0ZVBvbGljaWVzKToKKyAgICAgICAgKFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCk6CisgICAgICAgIChXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXS1BhZ2VUZXJtaW5hdGUp
OgorICAgICAgICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV0tQ
YWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbik6CisgICAgICAgIChX
S1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0VGV4
dFpvb21GYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChXS1BhZ2VTZXRT
Y2FsZUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VTZXRVc2VGaXhlZExheW91dCk6CisgICAgICAg
IChXS1BhZ2VTZXRGaXhlZExheW91dFNpemUpOgorICAgICAgICAoV0tQYWdlTGlzdGVuRm9yTGF5
b3V0TWlsZXN0b25lcyk6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMpOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQpOgorICAgICAgICAo
V0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KToKKyAgICAgICAgKFdLUGFnZVNldFJ1YmJlckJh
bmRzQXRUb3ApOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbSk6CisgICAg
ICAgIChXS1BhZ2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQ
YWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0
QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRp
b25Nb2RlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxlbmd0aCk6CisgICAgICAgIChXS1BhZ2VTZXRHYXBC
ZXR3ZWVuUGFnZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZCk6CisgICAgICAgIChXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbik6CisgICAg
ICAgIChXS1BhZ2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKToKKyAgICAgICAgKFdLUGFn
ZUZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNo
KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdEZpbmRNYXRjaCk6CisgICAgICAgIChXS1BhZ2VGaW5k
U3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUhpZGVGaW5kVUkpOgorICAgICAgICAoV0tQYWdlQ291
bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlRmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0
YXRlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6Cisg
ICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYik6CisgICAgICAgIChXS1Bh
Z2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRT
b3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAgKFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAg
ICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOgorICAgICAgICAoV0tQYWdlVmFsaWRhdGVDb21tYW5k
KToKKyAgICAgICAgKFdLUGFnZUV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdLUGFnZUNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdLUGFnZUJlZ2luUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRW5kUHJpbnRpbmcp
OgorICAgICAgICAoV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbik6CisgICAgICAgIChX
S1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlh
Vm9sdW1lKToKKyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1l
ZGlhQ2FwdHVyZUVuYWJsZWQpOgorICAgICAgICAoV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayk6
CisgICAgICAgIChXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKToKKyAgICAgICAgKFdLUGFnZURp
ZERlbnlQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbSk6CisgICAgICAg
IChXS1BhZ2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV0tQYWdlU2V0QWRk
c1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRv
cik6CisgICAgICAgIChXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKToKKyAg
ICAgICAgKFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKToKKyAgICAgICAgKFdL
UGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgIChXS1BhZ2VEdW1wUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6CisgICAgICAgIChX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0
dXJlVVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFy
a1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAo
V0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChX
S1BhZ2VTZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24pOgorICAgICAgICAoV0tQYWdlTG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9y
VGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
bG9hZEZpbGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9h
ZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3RvcExvYWRpbmddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDppbkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFt
ZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3Bl
bmRlZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RN
ZWRpYVBsYXliYWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5j
RnVuY3Rpb246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5G
cmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
dGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgc2V0UGFnZVpvb206XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
c2V0TWVkaWFUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0SW50ZXJhY3Rpb25TdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c01hZ25pZmljYXRpb246XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOmNlbnRlcmVkQXRQb2ludDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBwcmludE9wZXJhdGlvbldpdGhQcmludEluZm86XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9u
c2U6cmVzcG9uc2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJl
cXVlc3Q6d2l0aFJlc3BvbnNlOnJlc3BvbnNlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25zZUhUTUxTdHJpbmc6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVJlcXVlc3Q6YWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbmNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kZWNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9j
aGFuZ2VMaXN0VHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEVuYWJsZUJy
b3dzZXJFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZERpc2FibGVCcm93
c2VyRXh0ZW5zaW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRFZGl0YWJsZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0
aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlUGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc3RvcE1lZGlhQ2FwdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3BBbGxN
ZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2FkZEFwcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFibGVVUkw6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdO
YW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVl
c3Q6c2hvdWxkT3BlbkV4dGVybmFsVVJMczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2Fk
UmVxdWVzdDpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2dyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeV0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZFBhZ2U6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfcmVzdW1lUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
a2lsbFdlYkNvbnRlbnRQcm9jZXNzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0
aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZEV4cGly
ZWRPbmx5XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5k
UmVzZXRTdGF0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdHJ5Q2xvc2Vd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNv
bnRlbnRUeXBlOmRhdGE6b3B0aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6b3B0aW9uczpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOmJldGE6Z2FtbWE6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6d2Fy
bmluZzpkZXRhaWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDp0aXRsZTp3YXJuaW5nOmRldGFpbHM6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmdXaXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWlsc1dpdGhMaW5rczpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0phdmFT
Y3JpcHQ6YXJndW1lbnRzOmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5D
b250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0OndpdGhTb3VyY2VVUkw6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVXZWJwYWdl
UHJlZmVyZW5jZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbm90aWZ5VXNlclNjcmlwdHNd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZp
Y2F0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlv
bjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJy
aWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFkZHNWaXNpdGVkTGlua3M6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3Ry
aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENv
bnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBh
Z2luYXRpb25Nb2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25CZWhh
dmVzTGlrZUNvbHVtbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnZUxlbmd0aDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRUZXh0Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRQYWdlWm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmlu
Z01hdGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5k
U3RyaW5nOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZp
bmRVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9y
SXRlbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRMYXlvdXRNb2RlOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NldEZpeGVkTGF5b3V0U2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c2V0Vmlld1NjYWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENPUlNEaXNhYmxpbmdQ
YXR0ZXJuczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRQcm9jZXNzRGlzcGxheU5hbWVX
aXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11
bUVmZmVjdGl2ZURldmljZVdpZHRoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dyYW50QWNj
ZXNzVG9QcmVmZXJlbmNlU2VydmljZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFNjcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldFBhZ2VNdXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVEYXRhRGV0
ZWN0ZWRMaW5rczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFj
a1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQ
cm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTExICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3RdIHNob3VsZCBo
YXZlIENTUyBgaG92ZXI6IGhvdmVyYCBhbmQgYHBvaW50ZXI6IGZpbmVgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCA1MWQ4NTQ3YjY4ZDQ3MjhhOWM1YTQ0MzQxZmM0ODM3M2ExMTNhOThjLi42MTVjZmI4
ZjBjOTRjMmIxNGYwOTUzZGNiYzA4ZjRhNmRhZjdlZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTYwOCw2ICs2MDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0
b3J5L0NhY2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9B
dXRvY2FwaXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hl
LmNwcAppbmRleCAyN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNh
ZWNhMTIyMmY4ZTk0Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRp
YyB2b2lkIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAg
ICBmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0Zv
cndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2Up
CitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVu
ZFBhZ2UoUGFnZSYgcGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAg
ICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1h
aW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5t
YWluRnJhbWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYg
KCFjYW5DYWNoZSgqcGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VT
dXNwZW5zaW9uID09IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlz
VXRpbGl0eVBhZ2UoKSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91
bGQgbmV2ZXIgZ28gaW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghcGFnZS5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1h
Z2UgcGFnZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAg
c2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFj
a0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3Vt
ZW50OjpBYm91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBt
YWluIGZyYW1lLCBkZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUp
LiBXZSBkbyB0aGlzIGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFj
ay9mb3J3YXJkIGNhY2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9j
dXMgZXZlbnRzLgotICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUo
KSkKLSAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdl
LT5tYWluRnJhbWUoKSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZy
YW1lKCkpCisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZw
YWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFs
bCBmcmFtZXMuCi0gICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJh
bWUoKSk7CisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgp
KTsKIAotICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0
cm95UmVuZGVyVHJlZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRz
IGFnYWluIGJlZm9yZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0
ZXIgZmlyaW5nIHRoZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkg
aGF2ZSBzdGFydGVkIHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsK
KyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7
CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFm
dGVyIGZpcmluZyB0aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAg
IC8vIGNvdWxkIGhhdmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZl
bnQgY2FjaGluZy4KLSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNr
Rm9yd2FyZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3Jj
ZVN1c3BlbnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9y
d2FyZENhY2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVT
dGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0Zv
cndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisg
ICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3Bl
LgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKwor
Ym9vbCBCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwg
UGFnZSogcGFnZSkKK3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1
c3BlbnNpb246Ok5vKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2
ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQ
YWdlKG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNo
ZWRQYWdlKFdURk1vdmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNv
biA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAg
ICB9CkBAIC00ODEsNiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNo
ZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZShQYWdlJiBwYWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJC
YWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVu
ZFBhZ2UocGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8
Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFn
ZSogcGFnZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJk
N2YxZDJjMzlkNDc1MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgx
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5z
aWduZWQpOyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVu
ZXMgaWYgbWF4U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlKEhpc3RvcnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFn
ZSopOwpAQCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3Jj
ZVN1c3BlbnNpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNo
ZWRQYWdlPiB0cnlTdXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lk
IHBydW5lKFBydW5pbmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIy
Yzk1ZTM4ODVkMjUuLjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENh
Y2hlZFBhZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAK
ICAgICBQYWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA2M2FmMDVjZGZhODA0YzU4MDYwNDg3ZjBk
Y2IwMTdiNTllMGVkMDI1Li44N2ViMTJmMDEwMzBkMmQ3NTNhNTUzYTgwNWExZDVhY2IzOTU3Yzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE0Myw2ICsx
NDMsMTcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVN0YXRlQ2xpZW50
QmFzZT4gewogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTkVWRVJfSU5MSU5F
IHZvaWQgY3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICBp
ZiAoTElLRUxZKCFwYWdlUmVmIHx8ICF0b0ltcGwocGFnZVJlZiktPmlzU3VzcGVuZGVkKCkpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXVEZMb2dBbHdheXMoIkVycm9yOiBBdHRlbXB0IHRvIGNh
bGwgV0tQYWdlUmVmIEFQSS9TUEkgb24gYSBzdXNwZW5kZWQgcGFnZSwgdGhpcyBpcyBhIGNsaWVu
dCBidWcuIik7CisgICAgQ1JBU0goKTsKK30KKworI2RlZmluZSBDUkFTSF9JRl9TVVNQRU5ERUQg
Y3Jhc2hJZlBhZ2VJc1N1c3BlbmRlZChwYWdlUmVmKQorCiBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBl
SUQoKQogewogICAgIHJldHVybiB0b0FQSShXZWJQYWdlUHJveHk6OkFQSVR5cGUpOwpAQCAtMTY1
LDQ5ICsxNzYsNTggQEAgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBXS1BhZ2VDb3B5UGFnZUNvbmZp
Z3VyYXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdG9XVEZTdHJpbmco
VVJMUmVmKSkpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBib29sIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMgPyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyA6IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93OwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVl
c3QoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFVSTFdpdGhVc2VyRGF0YShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2
b2lkIFdLUGFnZUxvYWRVUkxSZXF1ZXN0KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlcXVlc3RS
ZWYgdXJsUmVxdWVzdFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBy
ZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJsUmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgp
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVl
c3QpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkVVJMUmVxdWVzdFdpdGhVc2VyRGF0YShXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZWYsIFdLVHlwZVJlZiB1c2Vy
RGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byByZXNvdXJjZVJl
cXVlc3QgPSB0b0ltcGwodXJsUmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgdG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEZpbGUoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLVVJMUmVmIGZpbGVVUkwsIFdLVVJMUmVmIHJlc291cmNlRGlyZWN0b3J5VVJMKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRGaWxlKHRv
V1RGU3RyaW5nKGZpbGVVUkwpLCB0b1dURlN0cmluZyhyZXNvdXJjZURpcmVjdG9yeVVSTCkpOwog
fQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1VSTFJlZiBmaWxlVVJMLCBXS1VSTFJlZiByZXNvdXJjZURpcmVjdG9yeVVSTCwgV0tUeXBlUmVm
IHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPmxvYWRGaWxlKHRvV1RGU3RyaW5nKGZpbGVVUkwpLCB0b1dURlN0cmluZyhyZXNvdXJj
ZURpcmVjdG9yeVVSTCksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWREYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYg
TUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVm
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRE
YXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlw
ZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikp
OwogfQogCiB2b2lkIFdLUGFnZUxvYWREYXRhV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVm
IGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERh
dGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVmZXJlbmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBl
UmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwg
dG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKQEAgLTIzMyw1MiArMjUzLDYyIEBAIHN0YXRpYyB2
b2lkIGxvYWRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwg
Y29uc3QgU3RyaW5nJiBtCiAKIHZvaWQgV0tQYWdlTG9hZEhUTUxTdHJpbmcoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVz
ZXJEYXRhKHBhZ2VSZWYsIGh0bWxTdHJpbmdSZWYsIGJhc2VVUkxSZWYsIG51bGxwdHIpOwogfQog
CiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJp
bmcocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwgInRleHQvaHRtbCJfcywgdG9XVEZTdHJpbmcoYmFz
ZVVSTFJlZiksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tV
UkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYgdW5yZWFjaGFibGVVUkxSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVz
ZXJEYXRhKHBhZ2VSZWYsIGh0bWxTdHJpbmdSZWYsIGJhc2VVUkxSZWYsIHVucmVhY2hhYmxlVVJM
UmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwg
V0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYgdW5yZWFjaGFibGVVUkxSZWYsIFdLVHlwZVJl
ZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgU3RyaW5nIHN0
cmluZyA9IHRvV1RGU3RyaW5nKGh0bWxTdHJpbmdSZWYpOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
bG9hZEFsdGVybmF0ZUhUTUwoZGF0YUZyb20oc3RyaW5nKSwgZW5jb2RpbmdPZihzdHJpbmcpLCBV
UkwoVVJMKCksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmlu
Zyh1bnJlYWNoYWJsZVVSTFJlZikpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBw
bGFpblRleHRTdHJpbmdSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFdLUGFn
ZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5n
UmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVz
ZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYs
IFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
bG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBh
Ym91dEJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VM
b2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZl
RGF0YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5sb2FkV2ViQXJjaGl2ZURhdGEodG9JbXBsKHdlYkFyY2hpdmVEYXRhUmVmKSk7CiB9CiAKIHZv
aWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkV2ViQXJj
aGl2ZURhdGEodG9JbXBsKHdlYkFyY2hpdmVEYXRhUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7
CiB9CiAKIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c3RvcExvYWRpbmcoKTsK
IH0KIAogdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9h
ZE9wdGlvbnM7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGxpbmtlZE9uT3JBZnRlcihX
ZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9yKSkK
QEAgLTI5MCwyMSArMzIwLDI1IEBAIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVm
KQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBh
Z2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+
cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vycyk7CiB9
CiAKIHZvaWQgV0tQYWdlUmVsb2FkRnJvbU9yaWdpbihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29y
ZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRFeHBp
cmVkT25seShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVk
T25seSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnRyeUNs
b3NlKCk7CiB9CiAKQEAgLTMyMCw2ICszNTQsNyBAQCBib29sIFdLUGFnZUlzQ2xvc2VkKFdLUGFn
ZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUdvRm9yd2FyZChXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nb0Zvcndh
cmQoKTsKIH0KIApAQCAtMzMwLDYgKzM2NSw3IEBAIGJvb2wgV0tQYWdlQ2FuR29Gb3J3YXJkKFdL
UGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUdvQmFjayhXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byYgcGFnZSA9ICp0b0ltcGwocGFn
ZVJlZik7CiAgICAgaWYgKHBhZ2UucGFnZUNsaWVudCgpLmhhc1NhZmVCcm93c2luZ1dhcm5pbmco
KSkgewogICAgICAgICBXS1BhZ2VSZWxvYWQocGFnZVJlZik7CkBAIC0zNDUsMTEgKzM4MSwxMyBA
QCBib29sIFdLUGFnZUNhbkdvQmFjayhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmIGl0ZW1SZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+Z29Ub0JhY2tGb3J3YXJkSXRlbSgqdG9JbXBsKGl0ZW1SZWYpKTsKIH0KIAog
dm9pZCBXS1BhZ2VUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+dHJ5UmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKQEAgLTM2NSw2ICs0MDMsNyBAQCBib29sIFdLUGFnZVdp
bGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lk
IFdLUGFnZVVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tXZWJzaXRl
UG9saWNpZXNSZWYgd2Vic2l0ZVBvbGljaWVzUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRvSW1wbCh3ZWJzaXRlUG9saWNp
ZXNSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCksICJTZXR0aW5nIFdlYnNpdGVQb2xpY2llcy53ZWJz
aXRlRGF0YVN0b3JlIGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJVc2VXaXRoUG9saWNpZXMoKS4iKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uo
IXRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSwgIlNl
dHRpbmcgV2Vic2l0ZVBvbGljaWVzLnVzZXJDb250ZW50Q29udHJvbGxlciBpcyBvbmx5IHN1cHBv
cnRlZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKCkuIik7CiAg
ICAgYXV0byBkYXRhID0gdG9JbXBsKHdlYnNpdGVQb2xpY2llc1JlZiktPmRhdGEoKTsKQEAgLTQy
Myw2ICs0NjIsNyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5QXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25O
YW1lUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZikt
PnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCh0b1dURlN0cmluZyhhcHBsaWNhdGlvbk5h
bWVSZWYpKTsKIH0KIApAQCAtNDMzLDYgKzQ3Myw3IEBAIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlD
dXN0b21Vc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9t
VXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiB1c2VyQWdlbnRSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9t
VXNlckFnZW50KHRvV1RGU3RyaW5nKHVzZXJBZ2VudFJlZikpOwogfQogCkBAIC00NTMsMTEgKzQ5
NCwxMyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1Bh
Z2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ05hbWVSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9tVGV4dEVuY29k
aW5nTmFtZSh0b1dURlN0cmluZyhlbmNvZGluZ05hbWVSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VU
ZXJtaW5hdGUoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3RlZFByb2Nlc3NQcm94eSh0b0ltcGwocGFn
ZVJlZiktPnByb2Nlc3MoKSk7CiAgICAgcHJvdGVjdGVkUHJvY2Vzc1Byb3h5LT5yZXF1ZXN0VGVy
bWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CiB9
CkBAIC01MTgsMTEgKzU2MSwxMyBAQCBzdGF0aWMgdm9pZCByZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBlUmVmIHNlc3Npb25TdGF0ZVJlZgogCiB2b2lkIFdL
UGFnZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYg
c2Vzc2lvblN0YXRlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZShwYWdlUmVmLCBzZXNzaW9uU3RhdGVSZWYsIHRydWUpOwogfQogCiB2
b2lkIFdLUGFnZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24oV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNzaW9uU3RhdGVSZWYpCiB7CisgICAgQ1JBU0hfSUZf
U1VTUEVOREVEOwogICAgIHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHBhZ2VSZWYsIHNlc3Npb25T
dGF0ZVJlZiwgZmFsc2UpOwogfQogCkBAIC01MzgsNiArNTgzLDcgQEAgZG91YmxlIFdLUGFnZUdl
dEJhY2tpbmdTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRD
dXN0b21CYWNraW5nU2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBjdXN0b21T
Y2FsZUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihjdXN0b21TY2FsZUZhY3Rvcik7CiB9CiAK
QEAgLTU0OCw2ICs1OTQsNyBAQCBib29sIFdLUGFnZVN1cHBvcnRzVGV4dFpvb20oV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0VGV4dFpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGRvdWJsZSB6b29tRmFjdG9yKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPnNldFRleHRab29tRmFjdG9yKHpvb21GYWN0b3IpOwogfQogCkBAIC01
NTgsMTYgKzYwNSwxOSBAQCBkb3VibGUgV0tQYWdlR2V0UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGRvdWJsZSB6b29tRmFjdG9yKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPnNldFBhZ2Vab29tRmFjdG9yKHpvb21GYWN0b3IpOwogfQogCiB2b2lk
IFdLUGFnZVNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJs
ZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMocGFnZVpvb21GYWN0b3IsIHRleHRab29tRmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRT
Y2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHNjYWxlLCBXS1BvaW50IG9yaWdp
bikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zY2Fs
ZVBhZ2Uoc2NhbGUsIHRvSW50UG9pbnQob3JpZ2luKSk7CiB9CiAKQEAgLTU3OCwxMSArNjI4LDEz
IEBAIGRvdWJsZSBXS1BhZ2VHZXRTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9p
ZCBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBmaXhlZCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVc2VG
aXhlZExheW91dChmaXhlZCk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0Rml4ZWRMYXlvdXRTaXplKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1NpemUgc2l6ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaXhlZExheW91dFNpemUodG9JbnRTaXplKHNpemUp
KTsKIH0KIApAQCAtNTk4LDYgKzY1MCw3IEBAIFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNpemUo
V0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25l
cyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bGlzdGVuRm9yTGF5
b3V0TWlsZXN0b25lcyh0b0xheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcykpOwogfQogCkBAIC02
MTMsNiArNjY2LDcgQEAgYm9vbCBXS1BhZ2VIYXNWZXJ0aWNhbFNjcm9sbGJhcihXS1BhZ2VSZWYg
cGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFN1cHByZXNzU2Nyb2xsYmFyQW5p
bWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpOwogfQogCkBAIC02NDgsNiArNzAyLDcgQEAgYm9v
bCBXS1BhZ2VSdWJiZXJCYW5kc0F0TGVmdChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1Bh
Z2VTZXRSdWJiZXJCYW5kc0F0TGVmdChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBydWJiZXJCYW5k
c0F0TGVmdCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRSdWJiZXJCYW5kc0F0TGVmdChydWJiZXJCYW5kc0F0TGVmdCk7CiB9CiAKQEAgLTY1OCw2
ICs3MTMsNyBAQCBib29sIFdLUGFnZVJ1YmJlckJhbmRzQXRSaWdodChXS1BhZ2VSZWYgcGFnZVJl
ZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGJvb2wgcnViYmVyQmFuZHNBdFJpZ2h0KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFJ1YmJlckJhbmRzQXRSaWdodChydWJiZXJCYW5kc0F0Umln
aHQpOwogfQogCkBAIC02NjgsNiArNzI0LDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0VG9w
KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFJ1YmJlckJhbmRzQXRUb3AoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdFRvcCkKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0VG9wKHJ1YmJl
ckJhbmRzQXRUb3ApOwogfQogCkBAIC02NzgsNiArNzM1LDcgQEAgYm9vbCBXS1BhZ2VSdWJiZXJC
YW5kc0F0Qm90dG9tKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFJ1YmJlckJh
bmRzQXRCb3R0b20oV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdEJvdHRvbSkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRSdWJi
ZXJCYW5kc0F0Qm90dG9tKHJ1YmJlckJhbmRzQXRCb3R0b20pOwogfQogCkBAIC02ODgsNiArNzQ2
LDcgQEAgYm9vbCBXS1BhZ2VWZXJ0aWNhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQYWdlUmVm
IHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKFdL
UGFnZVJlZiBwYWdlUmVmLCBib29sIGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRFbmFibGVWZXJ0
aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKTsKIH0KIApAQCAt
Njk4LDExICs3NTcsMTMgQEAgYm9vbCBXS1BhZ2VIb3Jpem9udGFsUnViYmVyQmFuZGluZ0lzRW5h
YmxlZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRFbmFibGVIb3Jpem9udGFs
UnViYmVyQmFuZGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVIb3Jpem9udGFsUnVi
YmVyQmFuZGluZykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnVi
YmVyQmFuZGluZyk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQ
YWdlKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRCYWNr
Z3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKTsKIH0K
IApAQCAtNzEzLDYgKzc3NCw3IEBAIGJvb2wgV0tQYWdlQmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQ
YWdlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2luYXRpb25Nb2RlIHBhZ2luYXRpb25Nb2RlKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGU7
CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9kZSkgewogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1v
ZGVVbnBhZ2luYXRlZDoKQEAgLTc1Nyw2ICs4MTksNyBAQCBXS1BhZ2luYXRpb25Nb2RlIFdLUGFn
ZUdldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldFBh
Z2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgYmVoYXZl
c0xpa2VDb2x1bW5zKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5z
KTsKIH0KIApAQCAtNzY3LDYgKzgzMCw3IEBAIGJvb2wgV0tQYWdlR2V0UGFnaW5hdGlvbkJlaGF2
ZXNMaWtlQ29sdW1ucyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdlTGVu
Z3RoKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgcGFnZUxlbmd0aCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlTGVuZ3RoKHBhZ2VMZW5n
dGgpOwogfQogCkBAIC03NzcsNiArODQxLDcgQEAgZG91YmxlIFdLUGFnZUdldFBhZ2VMZW5ndGgo
V0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFn
ZVJlZiBwYWdlUmVmLCBkb3VibGUgZ2FwKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldEdhcEJldHdlZW5QYWdlcyhnYXApOwogfQogCkBAIC03ODcs
NiArODUyLDcgQEAgZG91YmxlIFdLUGFnZUdldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKFdLUGFnZVJl
ZiBwYWdlUmVmLCBib29sIGxpbmVHcmlkRW5hYmxlZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxp
bmVHcmlkRW5hYmxlZCk7CiB9CiAKQEAgLTgxNyw0NiArODgzLDU1IEBAIGJvb2wgV0tQYWdlSXND
b250ZW50RWRpdGFibGUoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0TWFpbnRh
aW5zSW5hY3RpdmVTZWxlY3Rpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgbmV3VmFsdWUpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnNl
dE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKG5ld1ZhbHVlKTsKIH0KIAogdm9pZCBXS1BhZ2VD
ZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5jZW50ZXJTZWxl
Y3Rpb25JblZpc2libGVBcmVhKCk7CiB9CiAKIHZvaWQgV0tQYWdlRmluZFN0cmluZ01hdGNoZXMo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPmZpbmRTdHJpbmdNYXRjaGVzKHRvSW1wbChzdHJpbmcpLT5z
dHJpbmcoKSwgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIHZv
aWQgV0tQYWdlR2V0SW1hZ2VGb3JGaW5kTWF0Y2goV0tQYWdlUmVmIHBhZ2VSZWYsIGludDMyX3Qg
bWF0Y2hJbmRleCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KTsKIH0KIAogdm9pZCBXS1BhZ2VT
ZWxlY3RGaW5kTWF0Y2goV0tQYWdlUmVmIHBhZ2VSZWYsIGludDMyX3QgbWF0Y2hJbmRleCkKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZWxlY3RGaW5k
TWF0Y2gobWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV0tQYWdlRmluZFN0cmluZyhXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nLCBXS0ZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+ZmluZFN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZE9w
dGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFnZUhpZGVGaW5k
VUkoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+aGlkZUZpbmRVSSgpOwogfQogCiB2b2lkIFdLUGFnZUNvdW50U3RyaW5n
TWF0Y2hlcyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nLCBXS0ZpbmRPcHRp
b25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Y291bnRTdHJpbmdNYXRjaGVzKHRvSW1wbChz
dHJpbmcpLT5zdHJpbmcoKSwgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7
CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBjbGFz
cyBDb250ZXh0TWVudUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VDb250
ZXh0TWVudUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpDb250ZXh0TWVudUNsaWVudCB7CiAgICAg
cHVibGljOgpAQCAtOTczLDYgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRGlhZ25vcwogCiB2
b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIGNsYXNzIEZpbmRDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZENsaWVu
dEJhc2U+LCBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4
cGxpY2l0IEZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIGNsaWVudCkKQEAg
LTEwMTEsNiArMTA4Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tQYWdl
U2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VG
aW5kTWF0Y2hlc0NsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1Bh
Z2VGaW5kTWF0Y2hlc0NsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBX
S1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2UqIGNsaWVudCkKQEAgLTEwNTQsMTYgKzExMzEsMTkg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2wKIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2tDbGllbnQpOwogfQogCiB2
b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYkZvcm1DbGll
bnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIExvYWRlckNsaWVudCA6IHB1Ymxp
YyBBUEk6OkNsaWVudDxXS1BhZ2VMb2FkZXJDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6TG9hZGVy
Q2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChjb25z
dCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMjM0LDYgKzEzMTQsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogdm9pZCBXS1BhZ2VTZXRQYWdlUG9s
aWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNl
KiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgUG9saWN5
Q2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVBvbGljeUNsaWVudEJhc2U+LCBwdWJs
aWMgQVBJOjpQb2xpY3lDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUG9s
aWN5Q2xpZW50KGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTE0OTMs
NiArMTU3NCw3IEBAIHZvaWQgV0tQYWdlUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtUmVzdWx0
TGlzdGVuZXJDYWxsKFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjCiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBVSUNsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VVSUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpVSUNs
aWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBVSUNsaWVudChjb25zdCBXS1Bh
Z2VVSUNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTIxMzgsNiArMjIyMCw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJh
c2UqIHdrQ2xpZW50CiAKIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRCYXNlKiB3a0NsaWVudCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZT4sIHB1YmxpYyBB
UEk6Ok5hdmlnYXRpb25DbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgTmF2
aWdhdGlvbkNsaWVudChjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogY2xpZW50KQpA
QCAtMjUwMywxNiArMjU4NiwxOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLXZvaWQgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2Uq
IGNsaWVudCkKK3ZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CisgICAgICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVD
bGllbnQ+KGNsaWVudCkpOwogICAgIGVsc2UKLSAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIobnVsbHB0cik7CisgICAgICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQogCiB2b2lkIFdLUGFnZVJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVm
LCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBm
YWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8mJiBy
ZXN1bHQpIHsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIGNh
bGxiYWNrKHRvQVBJKHJlc3VsdC52YWx1ZSgpLmdldCgpKSwgbnVsbHB0ciwgY29udGV4dCk7CkBA
IC0yNTMxLDYgKzI2MTYsNyBAQCBzdGF0aWMgdm9pZCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5k
UmVsZWFzZShXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiByZXN1bHRWYQogCiB2b2lkIFdLUGFn
ZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzY3JpcHRSZWYsIFdLUGFnZVJ1bkphdmFTY3JpcHRCbG9jayBibG9jaykKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHBhZ2VS
ZWYsIHNjcmlwdFJlZiwgQmxvY2tfY29weShibG9jayksIGNhbGxSdW5KYXZhU2NyaXB0QmxvY2tB
bmRSZWxlYXNlKTsKIH0KICNlbmRpZgpAQCAtMjU0NCwzMSArMjYzMCwzNyBAQCBzdGF0aWMgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4gdG9TdHJpbmdDYWxsYmFjayh2b2lk
KiBjb250ZXh0LCB2bwogCiB2b2lkIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uKHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9p
ZCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBm
cmFtZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0U291cmNlRm9yRnJhbWVGdW5jdGlvbiBj
YWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCB0b1N0cmluZ0NhbGxiYWNrKGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmlu
Z0Z1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lczo6Tm8sIHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0K
IAogdm9pZCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQq
IGNvbnRleHQsIFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZUZ1bmN0aW9uIGNhbGxiYWNrKQogewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldEJ5dGVjb2Rl
UHJvZmlsZSh0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQg
V0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dEZ1bmN0aW9uIGNhbGxiYWNr
KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmdldFNh
bXBsaW5nUHJvZmlsZXJPdXRwdXQodG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykp
OwogfQogCiB2b2lkIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVm
IHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9J
bXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFtjb250ZXh0LCBjYWxs
YmFja10gKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBjYWxsYmFjayh0b0FQSShkYXRhKSwg
bnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7CkBAIC0yNTc2LDYgKzI2NjgsNyBAQCB2b2lkIFdL
UGFnZUdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQq
IGNvbnRleHQsIFdLUGFnZQogCiB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEoV0tQ
YWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERh
dGFGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5B
QkxFKE1IVE1MKQogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShb
Y29udGV4dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2so
dG9BUEkoZGF0YSksIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjU4OSw2ICsyNjgyLDcgQEAgdm9p
ZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1BhZ2VHZXRDb24KIAogdm9pZCBXS1BhZ2VGb3JjZVJlcGFpbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUZvcmNlUmVwYWludEZ1bmN0aW9uIGNhbGxi
YWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmZv
cmNlUmVwYWludChbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhudWxs
cHRyLCBjb250ZXh0KTsKICAgICB9KTsKQEAgLTI2MjYsNiArMjcyMCw3IEBAIFdLU3RyaW5nUmVm
IFdLUGFnZUNvcHlTdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoV0tTdHJpbmdS
ZWYgYXBwbGljYXRpCiAKIHZvaWQgV0tQYWdlVmFsaWRhdGVDb21tYW5kKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiBjb21tYW5kLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VWYWxpZGF0ZUNv
bW1hbmRDYWxsYmFjayBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
YXV0byBjb21tYW5kTmFtZSA9IHRvSW1wbChjb21tYW5kKS0+c3RyaW5nKCk7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT52YWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIFtjb250ZXh0LCBjYWxsYmFj
aywgY29tbWFuZE5hbWVdKGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlKSB7CiAgICAgICAg
IGNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoY29tbWFuZE5hbWUpLnB0cigpKSwg
aXNFbmFibGVkLCBzdGF0ZSwgbnVsbHB0ciwgY29udGV4dCk7CkBAIC0yNjM0LDYgKzI3MjksNyBA
QCB2b2lkIFdLUGFnZVZhbGlkYXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgY29tbWFuZCwgdm9pZCogY29udGV4dAogCiB2b2lkIFdLUGFnZUV4ZWN1dGVDb21tYW5kKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBjb21tYW5kKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmV4ZWN1dGVFZGl0Q29tbWFuZCh0b0ltcGwo
Y29tbWFuZCktPnN0cmluZygpKTsKIH0KIApAQCAtMjY0Niw5ICsyNzQyLDEwIEBAIHN0YXRpYyBQ
cmludEluZm8gcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKGNvbnN0IFdLUHJpbnRJbmZvJiBwcmlu
dEluZm8pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNG
b3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8g
cHJpbnRJbmZvLCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjb250ZXh0KQordm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCBX
S1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250
ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBs
KGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJbmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBj
YWxsYmFja10oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNj
YWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFy
Z2luKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJvbVdLUHJpbnRJ
bmZvKHByaW50SW5mbyksIFtjb250ZXh0LCBjYWxsYmFja10oY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiByZWN0cywgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9h
dEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luKSB7CiAgICAgICAgIFZlY3RvcjxXS1JlY3Q+
IHdrUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
ZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIHdrUmVjdHNbaV0gPSB0b0FQSShyZWN0c1tp
XSk7CkBAIC0yNjU3LDIyICsyNzU0LDI1IEBAIHZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywg
dm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9p
ZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChm
cmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBmaXJzdCwgY291bnQs
IFtjb250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRyYXdQYWdlc1RvUERGKHRvSW1wbChmcmFt
ZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBmaXJzdCwgY291bnQsIFtj
b250ZXh0LCBjYWxsYmFja10gKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBjYWxsYmFjayh0
b0FQSShkYXRhKSwgbnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7CiB9CiAjZW5kaWYKIAotdm9p
ZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1ByaW50SW5mbyBwcmludEluZm8pCit2b2lkIFdLUGFnZUJlZ2luUHJpbnRpbmcoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbykKIHsKLSAg
ICB0b0ltcGwocGFnZSktPmJlZ2luUHJpbnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJv
bVdLUHJpbnRJbmZvKHByaW50SW5mbykpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0
b0ltcGwocGFnZVJlZiktPmJlZ2luUHJpbnRpbmcodG9JbXBsKGZyYW1lKSwgcHJpbnRJbmZvRnJv
bVdLUHJpbnRJbmZvKHByaW50SW5mbykpOwogfQogCi12b2lkIFdLUGFnZUVuZFByaW50aW5nKFdL
UGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VFbmRQcmludGluZyhXS1BhZ2VSZWYgcGFnZVJlZikK
IHsKLSAgICB0b0ltcGwocGFnZSktPmVuZFByaW50aW5nKCk7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZW5kUHJpbnRpbmcoKTsKIH0KIAogYm9vbCBXS1Bh
Z2VHZXRJc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2UpCkBAIC0yNjgwLDkg
KzI3ODAsMTAgQEAgYm9vbCBXS1BhZ2VHZXRJc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdl
UmVmIHBhZ2UpCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+aXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uKCk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihXS1BhZ2VS
ZWYgcGFnZSwgYm9vbCBjb250cm9sbGVkKQordm9pZCBXS1BhZ2VTZXRDb250cm9sbGVkQnlBdXRv
bWF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGNvbnRyb2xsZWQpCiB7Ci0gICAgdG9JbXBs
KHBhZ2UpLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpOworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRyb2xsZWRCeUF1dG9t
YXRpb24oY29udHJvbGxlZCk7CiB9CiAKIGJvb2wgV0tQYWdlR2V0QWxsb3dzUmVtb3RlSW5zcGVj
dGlvbihXS1BhZ2VSZWYgcGFnZSkKQEAgLTI2OTUsMjMgKzI3OTYsMjYgQEAgYm9vbCBXS1BhZ2VH
ZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlKQogI2VuZGlmICAgIAogfQog
Ci12b2lkIFdLUGFnZVNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIGJv
b2wgYWxsb3cpCit2b2lkIFdLUGFnZVNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oV0tQYWdlUmVm
IHBhZ2VSZWYsIGJvb2wgYWxsb3cpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHRvSW1wbChwYWdlKS0+c2V0QWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbihhbGxvdyk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRBbGxvd3NSZW1vdGVJ
bnNwZWN0aW9uKGFsbG93KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVO
VVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0oYWxsb3cpOwogI2VuZGlmCiB9
CiAKLXZvaWQgV0tQYWdlU2V0TWVkaWFWb2x1bWUoV0tQYWdlUmVmIHBhZ2UsIGZsb2F0IHZvbHVt
ZSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFWb2x1bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIGZsb2F0IHZv
bHVtZSkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhVm9sdW1lKHZvbHVtZSk7ICAgIAor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldE1lZGlhVm9s
dW1lKHZvbHVtZSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2UsIFdL
TWVkaWFNdXRlZFN0YXRlIG11dGVkU3RhdGUpCit2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS01lZGlhTXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mg
Y29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVkU3RhdGUgJiBrV0tNZWRpYUF1ZGlvTXV0ZWQpCkBA
IC0yNzIxLDEyICsyODI1LDEzIEBAIHZvaWQgV0tQYWdlU2V0TXV0ZWQoV0tQYWdlUmVmIHBhZ2Us
IFdLTWVkaWFNdXRlZFN0YXRlIG11dGVkU3RhdGUpCiAgICAgaWYgKG11dGVkU3RhdGUgJiBrV0tN
ZWRpYVNjcmVlbkNhcHR1cmVNdXRlZCkKICAgICAgICAgY29yZVN0YXRlLmFkZChXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpTY3JlZW5DYXB0dXJlSXNNdXRlZCk7CiAKLSAgICB0
b0ltcGwocGFnZSktPnNldE11dGVkKGNvcmVTdGF0ZSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRNdXRlZChjb3JlU3RhdGUpOwogfQogCi12b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVuYWJs
ZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgZW5hYmxlZCkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0
dXJlRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1w
bChwYWdlKS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFibGVkKTsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYUNhcHR1cmVFbmFibGVkKGVu
YWJsZWQpOwogfQogCiBib29sIFdLUGFnZUdldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdlUmVm
IHBhZ2UpCkBAIC0yNzM0LDMwICsyODM5LDMzIEBAIGJvb2wgV0tQYWdlR2V0TWVkaWFDYXB0dXJl
RW5hYmxlZChXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5tZWRpYUNh
cHR1cmVFbmFibGVkKCk7CiB9CiAKLXZvaWQgV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayhXS1Bh
Z2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFn
ZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKLSAgICB0b0ltcGwocGFnZSktPmRpZEFsbG93UG9pbnRlckxvY2soKTsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPmRpZEFsbG93UG9pbnRlckxvY2soKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICNlbmRpZgogfQogCi12b2lkIFdL
UGFnZUNsZWFyVXNlck1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZUNsZWFy
VXNlck1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdG9JbXBsKHBhZ2UpLT5jbGVhclVz
ZXJNZWRpYVN0YXRlKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5jbGVhclVzZXJNZWRpYVN0YXRl
KCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFn
ZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdl
UmVmIHBhZ2UpCit2b2lkIFdLUGFnZURpZERlbnlQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJl
ZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
LSAgICB0b0ltcGwocGFnZSktPmRpZERlbnlQb2ludGVyTG9jaygpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+ZGlkRGVueVBvaW50ZXJMb2NrKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIApAQCAtMjc5MCwxNiAr
Mjg5OCwxOCBAQCBXS0ZyYW1lUmVmIFdLUGFnZUxvb2tVcEZyYW1lRnJvbUhhbmRsZShXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tGcmFtZUhhbmRsZVJlZiBoYW5kbAogCiB2b2lkIFdLUGFnZVNldE1heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3coV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgbWF5U3RhcnRNZWRp
YSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRN
YXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1heVN0YXJ0TWVkaWEpOwogfQogCiAKLXZvaWQgV0tQ
YWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJlZiBwYWdlLCBXS0NvbnRleHRNZW51SXRl
bVJlZiBpdGVtKQordm9pZCBXS1BhZ2VTZWxlY3RDb250ZXh0TWVudUl0ZW0oV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW0pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHRvSW1wbChwYWdlKS0+Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoKHRvSW1wbChpdGVtKS0+ZGF0YSgpKSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgodG9JbXBsKGl0ZW0pLT5kYXRhKCkpKTsK
ICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVm
KTsKICAgICBVTlVTRURfUEFSQU0oaXRlbSk7CiAjZW5kaWYKIH0KQEAgLTI4MjEsOCArMjkzMSw5
IEBAIFdLU2Nyb2xsUGlubmluZ0JlaGF2aW9yIFdLUGFnZUdldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cihXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1cm4ga1dLU2Nyb2xsUGlubmluZ0JlaGF2aW9yRG9O
b3RQaW47CiB9CiAKLXZvaWQgV0tQYWdlU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJl
ZiBwYWdlLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQordm9pZCBXS1BhZ2VTZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU2Nyb2xsUGlubmluZ0Jl
aGF2aW9yIHBpbm5pbmcpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFNjcm9sbFBp
bm5pbmdCZWhhdmlvciBjb3JlUGlubmluZyA9IFNjcm9sbFBpbm5pbmdCZWhhdmlvcjo6RG9Ob3RQ
aW47CiAKICAgICBzd2l0Y2ggKHBpbm5pbmcpIHsKQEAgLTI4MzksNyArMjk1MCw3IEBAIHZvaWQg
V0tQYWdlU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlLCBXS1Njcm9sbFBp
bm5pbmdCZWhhdmlvciBwaW5uCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
ICAgICAKLSAgICB0b0ltcGwocGFnZSktPnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihjb3JlUGlu
bmluZyk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoY29y
ZVBpbm5pbmcpOwogfQogCiBib29sIFdLUGFnZUdldEFkZHNWaXNpdGVkTGlua3MoV0tQYWdlUmVm
IHBhZ2UpCkBAIC0yODQ3LDkgKzI5NTgsMTAgQEAgYm9vbCBXS1BhZ2VHZXRBZGRzVmlzaXRlZExp
bmtzKFdLUGFnZVJlZiBwYWdlKQogICAgIHJldHVybiB0b0ltcGwocGFnZSktPmFkZHNWaXNpdGVk
TGlua3MoKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBw
YWdlLCBib29sIGFkZHNWaXNpdGVkTGlua3MpCit2b2lkIFdLUGFnZVNldEFkZHNWaXNpdGVkTGlu
a3MoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcykKIHsKLSAgICB0b0lt
cGwocGFnZSktPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QWRkc1Zpc2l0ZWRMaW5r
cyhhZGRzVmlzaXRlZExpbmtzKTsKIH0KIAogYm9vbCBXS1BhZ2VJc1BsYXlpbmdBdWRpbyhXS1Bh
Z2VSZWYgcGFnZSkKQEAgLTI4ODQsMjAgKzI5OTYsMjMgQEAgV0tNZWRpYVN0YXRlIFdLUGFnZUdl
dE1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2UpCiAKIHZvaWQgV0tQYWdlQ2xlYXJXaGVlbEV2ZW50
VGVzdE1vbml0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIH0K
IAogdm9pZCBXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdLUGFnZVJlZiBw
YWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VQb3N0UHJlc2VudGF0aW9uVXBkYXRlRnVuY3Rp
b24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbY29udGV4dCwgY2FsbGJhY2td
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBjYWxsYmFjayhl
cnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVy
cm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBX
S1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBp
Z25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKK3ZvaWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0
U2NhbGVMaW1pdHMoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVM
aW1pdHMpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNRVRBX1ZJRVdQ
T1JUKQotICAgIHRvSW1wbChwYWdlKS0+c2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoaWdub3Jl
c1ZpZXdwb3J0U2NhbGVMaW1pdHMpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9yY2VBbHdh
eXNVc2VyU2NhbGFibGUoaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOwogI2VuZGlmCiB9CiAK
QEAgLTI5MDcsOTMgKzMwMjIsMTA1IEBAIFByb2Nlc3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRp
ZmllcihXS1BhZ2VSZWYgcGFnZSkKIH0KIAogI2lmZGVmIF9fQkxPQ0tTX18KLXZvaWQgV0tQYWdl
R2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNh
dGlvbk1hbmlmZXN0QmxvY2sgYmxvY2spCit2b2lkIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZl
c3RfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJsb2Nr
IGJsb2NrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCi0gICAgdG9JbXBsKHBhZ2UpLT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFti
bG9ja10oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlm
ZXN0KSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFtibG9j
a10oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0
KSB7CiAgICAgICAgIGJsb2NrKCk7CiAgICAgfSk7CiAjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShw
YWdlUmVmKTsKICAgICBibG9jaygpOwogI2VuZGlmIC8vIG5vdCBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCiB9CiAjZW5kaWYKIAotdm9pZCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUR1bXBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlRHVtcFByaXZh
dGVDbGlja01lYXN1cmVtZW50RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4
dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2Fs
bGJhY2tDb250ZXh0LCBjYWxsYmFja10gKGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5k
dW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdIChj
b25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KSB7CiAgICAgICAgIGNhbGxiYWNr
KFdlYktpdDo6dG9BUEkocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaW1wbCgpKSwgY2FsbGJhY2tD
b250ZXh0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VDbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VDbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlQ2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlQ2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2Fs
bGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0Nv
bnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgdmFsdWUsIFdL
UGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmdGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdl
UmVmLCBib29sIHZhbHVlLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkK
IHsKLSAgICB0b0ltcGwocGFnZSktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVU
aW1lckZvclRlc3RpbmcodmFsdWUsIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyh2YWx1ZSwgW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1hcmtBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9u
IGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZU1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkK
IHsKLSAgICB0b0ltcGwocGFnZSktPm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPm1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhbY2FsbGJhY2tD
b250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQp
OwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Nlc3Npb25SZXN0YXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFj
a0NvbnRleHQpCit2b2lkIFdLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Np
b25SZXN0YXJ0KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXNzaW9uUmVzdGFydChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNpbXVsYXRlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAo
KSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRl
c3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFj
aywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tV
UkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGlj
S2V5VVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQp
CiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2Fs
bGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNL
ZXlVUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFj
a0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4
dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJl
ZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRl
c3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1Bh
Z2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2
b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RG
U3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJp
bmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNh
bGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdLUGFn
ZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRl
c3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1Bh
Z2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGlu
YXRpb25VUkwsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBv
cnRVUkxzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQp
CiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhzb3VyY2VVUkwp
KSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhkZXN0aW5hdGlvblVSTCkpLCBbY2FsbGJhY2tDb250
ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxz
Rm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHNvdXJjZVVSTCkpLCBVUkwoVVJMKCks
IHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uVVJMKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNr
XSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkK
K3ZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4
dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPm1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+bWFya1ByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2td
ICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKIH0KIAot
dm9pZCBXS1BhZ2VTZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdLUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiB1bmxpbmthYmxlVG9rZW4sIFdLU3RyaW5nUmVmIHNlY3JldFRv
a2VuLCBXS1N0cmluZ1JlZiBzaWduYXR1cmUsIFdLU3RyaW5nUmVmIGtleUlELCBXS1BhZ2VTZXRQ
Q01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdW5saW5rYWJsZVRva2Vu
LCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmlu
Z1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2UpLT5zZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHVu
bGlua2FibGVUb2tlbiksIHRvV1RGU3RyaW5nKHNlY3JldFRva2VuKSwgdG9XVEZTdHJpbmcoc2ln
bmF0dXJlKSwgdG9XVEZTdHJpbmcoa2V5SUQpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10g
KCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBD
TUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcodG9XVEZTdHJpbmcodW5saW5rYWJsZVRv
a2VuKSwgdG9XVEZTdHJpbmcoc2VjcmV0VG9rZW4pLCB0b1dURlN0cmluZyhzaWduYXR1cmUpLCB0
b1dURlN0cmluZyhrZXlJRCksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdl
U2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKFdLUGFnZVJlZiBwYWdlLCB1aW50NjRfdCBvcmllbnRh
dGlvbikKK3ZvaWQgV0tQYWdlU2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKFdLUGFnZVJlZiBwYWdl
UmVmLCB1aW50NjRfdCBvcmllbnRhdGlvbikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdG9JbXBsKHBh
Z2UpLT5zZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZShvcmllbnRhdGlvbik7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZShvcmllbnRhdGlvbik7
CiAjZW5kaWYKIH0KIApAQCAtMzAwNiwzNiArMzEzMyw0MCBAQCBXS19FWFBPUlQgYm9vbCBXS1Bh
Z2VJc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChXS1BhZ2VSZWYpCiAjZW5k
aWYKIH0KIAotdm9pZCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBh
Z2UsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lk
KiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB0b0ltcGwocGFn
ZSktPmdldExvYWRlZFN1YnJlc291cmNlRG9tYWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFj
a10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpIHsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmdldExvYWRlZFN1YnJlc291cmNlRG9tYWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxs
YmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpIHsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnMgPSBXVEY6Om1hcChkb21haW5zLCBb
XShhdXRvJiBkb21haW4pIHsKICAgICAgICAgICAgIHJldHVybiBSZWZQdHI8QVBJOjpPYmplY3Q+
KEFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGTW92ZShkb21haW4uc3RyaW5nKCkpKSk7CiAgICAgICAg
IH0pOwogICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShh
cGlEb21haW5zKSkucHRyKCkpLCBjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIGNh
bGxiYWNrKG51bGxwdHIsIGNhbGxiYWNrQ29udGV4dCk7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1Bh
Z2VDbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQ
YWdlQ2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5jbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsK
ICNlbmRpZgogfQogCi12b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9y
VGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgZG91YmxlIGRlbGF5KQordm9pZCBXS1BhZ2VTZXRNZWRp
YUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJs
ZSBkZWxheSkKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0Rl
bGF5KFNlY29uZHMoZGVsYXkpKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzKGRlbGF5KSk7
CiB9CiAKLXZvaWQgV0tQYWdlRGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZyhX
S1BhZ2VSZWYgcGFnZSkKK3ZvaWQgV0tQYWdlRGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9y
VGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b0ltcGwocGFnZSktPmRpc3BhdGNo
QWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0
aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCA2NTgyNDEzYWNhY2UxZDM1M2JmN2Y3MWUyODBjMzRiOTEwZWE0YTY4Li4yZWU1
Zjk1Y2MzN2RjYjhiYTczMjI0MWI1NjhiZTRjMDkzMDk3MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE5OSw2ICsxOTksOSBAQCBz
dGF0aWMgY29uc3QgQk9PTCBkZWZhdWx0RmFzdENsaWNraW5nRW5hYmxlZCA9IE5POwogc3RhdGlj
IGNvbnN0IHVpbnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhMaW5rUHJldmlld0VuYWJsZWRCeURl
ZmF1bHQgPSAweEEwMDAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNkZWZp
bmUgVEhST1dfSUZfU1VTUEVOREVEIGlmIChfcGFnZSAmJiBfcGFnZS0+aXNTdXNwZW5kZWQoKSkg
XAorICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlv
biBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IGlzIHN1c3BlbmRlZCJdCisKIFJldGFpblB0cjxOU0Vy
cm9yPiBuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscyYgZGV0YWlscykKIHsKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKQEAgLTcxOCwxMSArNzIxLDEzIEBAIC0gKHZv
aWQpX3NldFJlc291cmNlTG9hZERlbGVnYXRlOihpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4p
ZGVsZWdhdGUKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVlc3QpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9h
ZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJl
YWRBY2Nlc3NVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbVVJMIGlz
RmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3QgYSBmaWxlIFVSTCIsIFVSTF07CiAKQEAgLTczNCw2
ICs3MzksNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxs
b3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZAogCiAtIChXS05hdmlnYXRpb24gKils
b2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJM
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogCiAgICAgcmV0dXJuIFtz
ZWxmIGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGNoYXJhY3RlckVuY29kaW5n
TmFtZTpAIlVURi04IiBiYXNlVVJMOmJhc2VVUkxdOwpAQCAtNzQxLDExICs3NDcsMTMgQEAgLSAo
V0tOYXZpZ2F0aW9uICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6
KE5TVVJMICopYmFzZVVSTAogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRGF0YTooTlNEYXRhICop
ZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6
KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVS
TAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEu
bGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1
dGVTdHJpbmcpKTsKIH0KIAogLSAodm9pZClzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQg
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3Bh
Z2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKICAgICAgICAgaWYg
KGRvd25sb2FkKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9h
ZCkpOwpAQCAtNzU2LDYgKzc2NCw3IEBAIC0gKHZvaWQpc3RhcnREb3dubG9hZFVzaW5nUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pCiAKIC0gKHZv
aWQpcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMo
W1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVE
YXRhIGVycm9yOm5pbF0pOwogICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGlj
eTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKICAgICBOU0RpY3Rpb25h
cnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0
IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtO
U1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwg
Y2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2
ZVJvb3RPYmplY3RLZXkiXTsKQEAgLTc4Miw2ICs3OTEsNyBAQCAtICh2b2lkKXJlc3VtZURvd25s
b2FkRnJvbVJlc3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6
KHZvaQogCiAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNr
Rm9yd2FyZExpc3RJdGVtICopaXRlbQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBy
ZXR1cm4gd3JhcHBlcihfcGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CiB9
CiAKQEAgLTg0MCw2ICs4NTAsNyBAQCAtIChCT09MKWNhbkdvRm9yd2FyZAogCiAtIChXS05hdmln
YXRpb24gKilnb0JhY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKHNlbGYu
X3NhZmVCcm93c2luZ1dhcm5pbmcpCiAgICAgICAgIHJldHVybiBbc2VsZiByZWxvYWRdOwogICAg
IHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0JhY2soKSk7CkBAIC04NDcsMTEgKzg1OCwxMyBAQCAt
IChXS05hdmlnYXRpb24gKilnb0JhY2sKIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Gb3J3YXJkCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0Zv
cndhcmQoKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRP
cHRpb25zOwogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmly
c3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCiAgICAgICAgIHJlbG9hZE9wdGlvbnMu
YWRkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwpAQCAtODYxLDI2ICs4NzQs
MzEgQEAgLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9h
ZEZyb21PcmlnaW4KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBw
ZXIoX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKTsKIH0K
IAogLSAodm9pZClzdG9wTG9hZGluZwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAogLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5T
U3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQs
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNG
dW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOllFUyBpbkZyYW1lOm5pbCBpbldvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpZXZhbHVh
dGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFt
ZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUph
dmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aFNvdXJjZVVS
TDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFt
ZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxl
cl07CiB9CiAKIC0gKHZvaWQpY2FsbEFzeW5jSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3Vt
ZW50cyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRl
bnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5T
RXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3lu
Y0Z1bmN0aW9uOllFUyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBm
b3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIApAQCAtOTIwLDYgKzkzOCw3
IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCiAKIC0gKHZvaWQp
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpA
QCAtOTM2LDYgKzk1NSw3IEBAIC0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRo
Q29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpCiAKIC0gKHZvaWQpcGF1
c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNv
bXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIF9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2so
W10geyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTQ2LDYgKzk2Niw3IEBAIC0gKHZvaWQpcGF1
c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuCiAKIC0gKHZvaWQpc2V0QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDooQk9P
TClzdXNwZW5kZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9OwogCkBAIC05NzYsNiAr
OTk3LDcgQEAgc3RhdGljIFdLTWVkaWFQbGF5YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3Rh
dGUoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUgbWUKIAogLSAodm9pZClyZXF1ZXN0TWVkaWFQ
bGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS01lZGlhUGxheWJh
Y2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDA2LDYg
KzEwMjgsNyBAQCAtIChXS01lZGlhQ2FwdHVyZVN0YXRlKW1pY3JvcGhvbmVDYXB0dXJlU3RhdGUK
IAogLSAodm9pZClzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRl
KXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKIApAQCAtMTAyNyw2ICsxMDUw
LDcgQEAgLSAodm9pZClzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0
YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOigKIAogLSAodm9pZClzZXRDYW1lcmFDYXB0dXJl
U3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0g
W10geyB9OwogCkBAIC0xMDQ4LDYgKzEwNzIsNyBAQCAtICh2b2lkKXNldENhbWVyYUNhcHR1cmVT
dGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZAog
CiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYXNBc3luY0Z1bmN0aW9uIHdpdGhTb3VyY2VVUkw6KE5T
VVJMICopc291cmNlVVJMIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGlu
RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Xb3JsZDooV0tDb250ZW50V29ybGQgKil3b3Js
ZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBoYW5kbGVyID0gYWRv
cHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50c01hcDsKQEAgLTExMDksNiArMTEzNCw3IEBA
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAKIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZp
Z3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9u
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENvY29hSW1hZ2UgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBjb25zdGV4cHIg
Ym9vbCBzbmFwc2hvdEZhaWxlZFRyYWNlVmFsdWUgPSBmYWxzZTsKICAgICB0cmFjZVBvaW50KFRh
a2VTbmFwc2hvdFN0YXJ0KTsKIApAQCAtMTE4Miw2ICsxMjA4LDcgQEAgLSAodm9pZCl0YWtlU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hv
dENvbmZpZ3UKIAogLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
czooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcwogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgX2ltcGwtPnNldEFsbG93c0Jh
Y2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzKTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMjIwLDYgKzEyNDcsNyBA
QCAtIChOU1N0cmluZyAqKWN1c3RvbVVzZXJBZ2VudAogCiAtICh2b2lkKXNldEN1c3RvbVVzZXJB
Z2VudDooTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdlbnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPnNldEN1c3RvbVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpOwogfQog
CkBAIC0xMjM0LDYgKzEyNjIsNyBAQCAtIChCT09MKWFsbG93c0xpbmtQcmV2aWV3CiAKIC0gKHZv
aWQpc2V0QWxsb3dzTGlua1ByZXZpZXc6KEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9pbXBsLT5zZXRBbGxv
d3NMaW5rUHJldmlldyhhbGxvd3NMaW5rUHJldmlldyk7CiAgICAgcmV0dXJuOwpAQCAtMTI1NSw2
ICsxMjg0LDcgQEAgLSAodm9pZClzZXRBbGxvd3NMaW5rUHJldmlldzooQk9PTClhbGxvd3NMaW5r
UHJldmlldwogCiAtICh2b2lkKXNldFBhZ2Vab29tOihDR0Zsb2F0KXBhZ2Vab29tCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRQYWdlWm9vbUZhY3RvcihwYWdlWm9v
bSk7CiB9CiAKQEAgLTEyNzksNiArMTMwOSw3IEBAIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpG
aW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhXS0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1CiAK
IC0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246
KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW1tXS0ZpbmRSZXN1bHQgYWxsb2NdIF9pbml0V2l0aE1h
dGNoRm91bmQ6Tk9dKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyOTYsNiArMTMyNyw3
IEBAICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKIAogLSAo
dm9pZClzZXRNZWRpYVR5cGU6KE5TU3RyaW5nICopbWVkaWFTdHlsZQogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShtZWRpYVN0eWxl
KTsKIH0KIApAQCAtMTMxMSw2ICsxMzQzLDcgQEAgLSAoaWQpaW50ZXJhY3Rpb25TdGF0ZQogCiAt
ICh2b2lkKXNldEludGVyYWN0aW9uU3RhdGU6KGlkKWludGVyYWN0aW9uU3RhdGUKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbKGlkKWludGVyYWN0aW9uU3RhdGUgaXNLaW5k
T2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMzNSw2ICsx
MzY4LDcgQEAgLSAoVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogCiAtICh2b2lkKXNldEFsbG93
c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dzTWFnbmlmaWNhdGlvbgogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBfaW1wbC0+c2V0QWxsb3dzTWFnbmlmaWNhdGlvbihhbGxvd3NNYWdu
aWZpY2F0aW9uKTsKIH0KIApAQCAtMTM0NSwxMSArMTM3OSwxMyBAQCAtIChCT09MKWFsbG93c01h
Z25pZmljYXRpb24KIAogLSAodm9pZClzZXRNYWduaWZpY2F0aW9uOihkb3VibGUpbWFnbmlmaWNh
dGlvbiBjZW50ZXJlZEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX2ltcGwtPnNldE1hZ25pZmljYXRpb24obWFnbmlmaWNhdGlvbiwgTlNQb2lu
dFRvQ0dQb2ludChwb2ludCkpOwogfQogCiAtICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJs
ZSltYWduaWZpY2F0aW9uCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9pbXBsLT5z
ZXRNYWduaWZpY2F0aW9uKG1hZ25pZmljYXRpb24pOwogfQogCkBAIC0xMzYwLDYgKzEzOTYsNyBA
QCAtIChkb3VibGUpbWFnbmlmaWNhdGlvbgogCiAtIChOU1ByaW50T3BlcmF0aW9uICopcHJpbnRP
cGVyYXRpb25XaXRoUHJpbnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbwogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoYXV0byB3ZWJGcmFtZVByb3h5ID0gX3BhZ2UtPm1h
aW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gX2ltcGwtPnByaW50T3BlcmF0aW9uV2l0aFByaW50
SW5mbyhwcmludEluZm8sICp3ZWJGcmFtZVByb3h5KTsKICAgICByZXR1cm4gbmlsOwpAQCAtMTUy
Nyw2ICsxNTY0LDcgQEAgLSAoT3B0aW9uYWw8Qk9PTD4pX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0
SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3RpbmcKIAogLSAodm9pZCljcmVhdGVQREZXaXRoQ29u
ZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZEb2N1bWVudERhdGEsIE5TRXJyb3IgKmVy
cm9yKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRDsKICAgICBpZiAoYXV0byBtYWluRnJhbWUg
PSBfcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgIGZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1l
SUQoKTsKQEAgLTE1NTIsNiArMTU5MCw3IEBAIC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3Vy
YXRpb246KFdLUERGQ29uZmlndXJhdGlvbiAqKXBkZkNvbmZpZ3VyYXRpb24gY29tcGxlCiAKIC0g
KHZvaWQpY3JlYXRlV2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZGcmFtZShfcGFnZS0+bWFpbkZy
YW1lKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildKEFQSTo6RGF0YSogZGF0YSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVy
KGRhdGEpLCBuaWwpOwogICAgIH0pOwpAQCAtMTYzMywxNyArMTY3MiwyMCBAQCAtICh2b2lkKV9k
aWRDaGFuZ2VFZGl0b3JTdGF0ZQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJl
c3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFNpbXVsYXRlZFJlcXVlc3QocmVx
dWVzdCwgcmVzcG9uc2UsIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMp
LCBkYXRhLmxlbmd0aCB9KSk7CiB9CiAKIC8vIEZJWE1FKDIyMzY1OCk6IFJlbW92ZSB0aGlzIG9u
Y2UgYWRvcHRlcnMgaGF2ZSBtb3ZlZCB0byB0aGUgZmluYWwgQVBJLgogLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3Bv
bnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgcmVzcG9uc2VEYXRhOihOU0RhdGEgKilkYXRh
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiBbc2VsZiBsb2FkU2ltdWxh
dGVkUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIHJlc3BvbnNlRGF0YTpkYXRhXTsK
IH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgcmVzcG9uc2VIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRv
cHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RyaW5nLmxlbmd0aCB0ZXh0
RW5jb2RpbmdOYW1lOkAiVVRGLTgiXSk7CiAKQEAgLTE2NTMsMTEgKzE2OTUsMTMgQEAgLSAoV0tO
YXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
cmVzcG9uc2VIVE1MU3RyaW4KIC8vIEZJWE1FKDIyMzY1OCk6IFJlbW92ZSB0aGlzIG9uY2UgYWRv
cHRlcnMgaGF2ZSBtb3ZlZCB0byB0aGUgZmluYWwgQVBJLgogLSAoV0tOYXZpZ2F0aW9uICopbG9h
ZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlSFRN
TFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgcmV0dXJuIFtzZWxmIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2VIVE1M
U3RyaW5nOnN0cmluZ107CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKily
ZWFkQWNjZXNzVVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gVVJMID0g
cmVxdWVzdC5VUkw7CiAKICAgICBpZiAoIVtVUkwgaXNGaWxlVVJMXSkKQEAgLTE2ODcsNyArMTcz
MSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKIAogI2lmIFBMQVRG
T1JNKE1BQykKIAotI2RlZmluZSBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChjb21tYW5kKSAtICh2
b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRlciB7IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2Nv
bW1hbmQgIyMgX3MpOyB9CisjZGVmaW5lIFdFQkNPUkVfUFJJVkFURV9DT01NQU5EKGNvbW1hbmQp
IC0gKHZvaWQpXyMjY29tbWFuZDooaWQpc2VuZGVyIHsgVEhST1dfSUZfU1VTUEVOREVEOyBfcGFn
ZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfQogCiBXRUJDT1JFX1BSSVZB
VEVfQ09NTUFORChhbGlnbkNlbnRlcikKIFdFQkNPUkVfUFJJVkFURV9DT01NQU5EKGFsaWduSnVz
dGlmaWVkKQpAQCAtMTcwNiwyMSArMTc1MCwyNSBAQCBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChw
YXN0ZUFuZE1hdGNoU3R5bGUpCiAKIC0gKHZvaWQpX3RvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNl
bmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRD
b21tYW5kKCJzdHJpa2V0aHJvdWdoIl9zKTsKIH0KIAogLSAodm9pZClfaW5jcmVhc2VMaXN0TGV2
ZWw6KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+aW5j
cmVhc2VMaXN0TGV2ZWwoKTsKIH0KIAogLSAodm9pZClfZGVjcmVhc2VMaXN0TGV2ZWw6KGlkKXNl
bmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+ZGVjcmVhc2VMaXN0
TGV2ZWwoKTsKIH0KIAogLSAodm9pZClfY2hhbmdlTGlzdFR5cGU6KGlkKXNlbmRlcgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Y2hhbmdlTGlzdFR5cGUoKTsKIH0KIApA
QCAtMTc3Miw2ICsxODIwLDcgQEAgLSAoQ0dTaXplKV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzCiAKIC0gKHZvaWQpX3NldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM6KENH
U2l6ZSl2aWV3cG9ydFNpemUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byB2
aWV3cG9ydFNpemVGb3JWaWV3cG9ydFVuaXRzID0gV2ViQ29yZTo6SW50U2l6ZSh2aWV3cG9ydFNp
emUpOwogICAgIGlmICh2aWV3cG9ydFNpemVGb3JWaWV3cG9ydFVuaXRzLmlzRW1wdHkoKSkKICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIlZpZXdwb3J0IHNpemUgc2hvdWxkIG5vdCBiZSBlbXB0eSJdOwpAQCAtMTc5Myw2ICsxODQy
LDcgQEAgLSAoX1dLSW5zcGVjdG9yICopX2luc3BlY3RvcgogCiAtICh2b2lkKV9kaWRFbmFibGVC
cm93c2VyRXh0ZW5zaW9uczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICop
ZXh0ZW5zaW9uSURUb05hbWVNYXAKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gdHJhbnNmb3JtZWQ7CiAgICAgdHJhbnNmb3JtZWQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25JRFRvTmFtZU1hcC5jb3VudCk7CiAgICAgW2V4dGVu
c2lvbklEVG9OYW1lTWFwIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpbJl0oTlNT
dHJpbmcgKmV4dGVuc2lvbklELCBOU1N0cmluZyAqZXh0ZW5zaW9uTmFtZSwgQk9PTCAqKSB7CkBA
IC0xODAzLDYgKzE4NTMsNyBAQCAtICh2b2lkKV9kaWRFbmFibGVCcm93c2VyRXh0ZW5zaW9uczoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZXh0ZQogCiAtICh2b2lkKV9k
aWREaXNhYmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9u
SURzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIEhhc2hTZXQ8U3RyaW5nPiB0cmFu
c2Zvcm1lZDsKICAgICB0cmFuc2Zvcm1lZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lv
bklEcy5jb3VudCk7CiAgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uSUQgaW4gZXh0ZW5zaW9u
SURzKQpAQCAtMTg1MSw2ICsxOTAyLDcgQEAgLSAoQk9PTClfaXNFZGl0YWJsZQogCiAtICh2b2lk
KV9zZXRFZGl0YWJsZTooQk9PTCllZGl0YWJsZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBib29sIHdhc0VkaXRhYmxlID0gX3BhZ2UtPmlzRWRpdGFibGUoKTsKICAgICBfcGFnZS0+
c2V0RWRpdGFibGUoZWRpdGFibGUpOwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4NjgsNiArMTky
MCw3IEBAIC0gKHZvaWQpX3NldEVkaXRhYmxlOihCT09MKWVkaXRhYmxlCiAKIC0gKHZvaWQpX2V4
ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAq
KWFyZ3VtZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb24KIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5k
LCBhcmd1bWVudCwgW2NhcHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb24pXSB7CiAgICAgICAgIGlmIChjYXB0dXJlZENvbXBsZXRpb25CbG9jaykKICAgICAgICAg
ICAgIGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKFlFUyk7CkBAIC0xOTAzLDYgKzE5NTYsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4+IGNyZWF0ZVVzZXJJ
bmZvKGNvbnN0IE9wdGlvbmFsPFdlYgogCiAtICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25z
V2l0aENvbmZpZ3VyYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbiBjb21wbGV0aW9uOih2b2lkKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgdXNpbmcgRXhjbHVzaW9uUnVsZSA9IFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOwogCiAgICAgaWYgKCFf
dGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIHx8ICFfcGFnZSkgewpAQCAtMTk2Nyw2ICsyMDIxLDcg
QEAgc3RhdGljIFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpUb2tlbklkZW50
aWZpZXIgY29yZVRleHRNYW5pcHVsYXRpb24KIAogLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1
bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWl0ZW0gY29tcGxldGlvbjoodm9pZChe
KShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIGlmICghX3BhZ2UpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogICAgICAgICByZXR1cm47CkBAIC0yMDI0LDYgKzIwNzksNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyhOU0FycmF5PF9XS1RleHRNYW5pcHVs
YXRpb25JdAogCiAtICh2b2lkKV9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNB
cnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqKWl0ZW1zIGNvbXBsZXRpb246KHZvaWQo
XikoTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghX3BhZ2UpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZUZhaWx1cmVTZXRGb3JBbGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMoaXRlbXMp
LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1MSw2ICsyMTA3LDcgQEAgLSAodm9pZClf
Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW0gKj4gKikKIAogLSAodm9pZClfdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uOihp
ZClzZW5kZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFtzZWxmIF90YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb25JbnRlcm5hbDpzZW5kZXJdOwog
I2Vsc2UKQEAgLTIxMDUsNiArMjE2Miw3IEBAIC0gKHZvaWQpX3NldEhpc3RvcnlEZWxlZ2F0ZToo
aWQgPFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZT4paGlzdG9yeURlbGVnYXRlCiAKIC0gKHZvaWQp
X3VwZGF0ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJP
TFNfTUFOQUdFUikKICAgICBfaW1wbC0+dXBkYXRlTWVkaWFQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cigpOwogI2VuZGlmCkBAIC0yMTMwLDYgKzIxODgsNyBAQCAtIChCT09MKV9pc1BpY3R1cmVJblBp
Y3R1cmVBY3RpdmUKIAogLSAodm9pZClfdG9nZ2xlUGljdHVyZUluUGljdHVyZQogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICNpZiBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZ
QkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgIF9pbXBsLT50b2dnbGVQaWN0dXJlSW5QaWN0dXJl
KCk7CiAjZW5kaWYKQEAgLTIxNDIsMjYgKzIyMDEsMzEgQEAgLSAoX1dLTWVkaWFNdXRlZFN0YXRl
KV9tZWRpYU11dGVkU3RhdGUKIAogLSAodm9pZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgY2xvc2VBbGxNZWRpYVByZXNl
bnRhdGlvbnNXaXRoQ29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAogLSAodm9pZClfc3RvcE1l
ZGlhQ2FwdHVyZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c3RvcE1l
ZGlhQ2FwdHVyZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRp
b1ZpZGVvKTsKIH0KIAogLSAodm9pZClfc3RvcEFsbE1lZGlhUGxheWJhY2sKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBs
ZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKIC0gKHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNr
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJh
Y2tTdXNwZW5kZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKIC0gKHZvaWQpX3Jl
c3VtZUFsbE1lZGlhUGxheWJhY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3Nl
bGYgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OwogfQogCkBAIC0yMTc4LDYgKzIyNDIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0QW5kQWRkSGln
aGxpZ2h0KFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgYnVmZmVycywgTgogCiAt
ICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGln
aHRzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKICAgICBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKIApAQCAt
MjE5Miw2ICsyMjU3LDcgQEAgLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8
TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogCiAtICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBI
aWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdodAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJl
ZE1lbW9yeT4+IGJ1ZmZlcnM7CiAgICAgCkBAIC0yMjA0LDYgKzIyNzAsNyBAQCAtICh2b2lkKV9y
ZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdodAogCiAtICh2
b2lkKV9hZGRBcHBIaWdobGlnaHQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQogICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vLCBXZWJDb3Jl
OjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXMpOwogI2VuZGlmCkBAIC0yMjIz
LDIzICsyMjkwLDI3IEBAIC0gKE5TVVJMICopX21haW5GcmFtZVVSTAogCiAtICh2b2lkKV9sb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKili
YXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIF9wYWdlLT5sb2FkQWx0ZXJuYXRl
SFRNTCh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5n
dGggfSwgIlVURi04Il9zLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CiAKIC0gKFdLTmF2
aWdhdGlvbiAqKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilN
SU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1c2VyRGF0YTooaWQpdXNlckRhdGEKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRE
YXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3Ry
aW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSkpOwog
fQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMczooQk9PTClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzCiB7
CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgcG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMcyA/IF9XS1Nob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3lBbGxvdyA6IF9XS1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lOb3RB
bGxvdzsKICAgICByZXR1cm4gW3NlbGYgX2xvYWRSZXF1ZXN0OnJlcXVlc3Qgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTpwb2xpY3ldOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTooX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSlzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5OwogICAgIHN3aXRjaCAoc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSkgewogICAgIGNhc2UgX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eU5vdEFsbG93OgpAQCAtMjI1NywyNCArMjMyOCwyOCBAQCAtIChXS05hdmlnYXRpb24gKilfbG9h
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bAogCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcwogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICAgICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcygpOwogfQogCiAtICh2b2lkKV9yZXZva2VBY2Nlc3NUb0Fzc2V0U2Vydmlj
ZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlKQogICAgICAgICBf
cGFnZS0+cmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzKCk7CiB9CiAKIC0gKHZvaWQpX3N3aXRj
aEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlKQogICAgICAgICBfcGFnZS0+c3dpdGNoRnJvbVN0
YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpOwogfQogCiAtICh2b2lkKV9hcHBC
b3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9u
RGF0YShbcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3QoZG9tYWluKSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghYXBwQm91bmREYXRhLmNvbnRleHREYXRhLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKQEAgLTIy
ODcsNiArMjM2Miw3IEBAIC0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46
KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2CiAKIC0gKHZvaWQpX2RpZExv
YWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxl
cgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0
aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGFwcEJvdW5kRGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKICAg
ICB9KTsKQEAgLTIyOTQsMTEgKzIzNzAsMzQgQEAgLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQp
X2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+YXBwQm91
bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nKTsKICAgICB9KTsKIH0KIAorLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFfcGFnZSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnN1
c3BlbmQoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOwor
ICAgIH0pOworfQorCistICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5yZXN1bWUoW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNj
ZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOworfQor
CiAtIChOU0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KIHsKICAgICBpZiAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiBtYWluRnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCkBAIC0yMzMyLDYgKzI0
MzEsNyBAQCAtIChOU1N0cmluZyAqKV9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKIAogLSAo
dm9pZClfc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OihOU1N0cmluZyAqKWFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFn
ZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCk7CiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQo
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKIH0KQEAgLTIzODQsNiArMjQ4NCw3IEBAIC0g
KEJPT0wpX3dlYlByb2Nlc3NJc1Jlc3BvbnNpdmUKIAogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghW3NlbGYgX2lzVmFs
aWRdKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzOTIsMTYgKzI0OTMsMTkgQEAgLSAodm9pZClf
a2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRob3V0
Q29udGVudEJsb2NrZXJzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3
cmFwcGVyKF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVu
dEJsb2NrZXJzKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRFeHBpcmVkT25seQog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVs
b2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKTsKIH0KIAogLSAodm9pZClf
a2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBSZWY8V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk+IHByb3RlY3RlZFByb2Nlc3NQ
cm94eShfcGFnZS0+cHJvY2VzcygpKTsKICAgICBwcm90ZWN0ZWRQcm9jZXNzUHJveHktPnJlcXVl
c3RUZXJtaW5hdGlvbihXZWJLaXQ6OlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVk
QnlDbGllbnQpOwogCkBAIC0yNDEzLDYgKzI1MTcsNyBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVu
dFByb2Nlc3NBbmRSZXNldFN0YXRlCiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgUmV0YWluUHRyPFdL
UERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmlndXJhdGlvbjsKICAgICBpZiAoc25hcHNob3RDb25m
aWd1cmF0aW9uKSB7CiAgICAgICAgIHBkZkNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tQREZD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNDI0LDYgKzI1MjksNyBAQCAtICh2b2lk
KV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRp
b24gKilzbmFwc2hvdENvbgogCiAtICh2b2lkKV9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZToo
X1dLRnJhbWVIYW5kbGUgKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShDR1NpemUp
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdl
LT5nZXRQREZGaXJzdFBhZ2VTaXplKGZyYW1lLT5fZnJhbWVIYW5kbGUtPmZyYW1lSUQoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29y
ZTo6RmxvYXRTaXplIHNpemUpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nh
c3Q8Q0dTaXplPihzaXplKSk7CiAgICAgfSk7CkBAIC0yNDU0LDYgKzI1NjAsNyBAQCAtIChfV0tT
ZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNrRm9y
d2FyZExpc3RJdGVtICppdAogCiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGE6
KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRl
IGRlY29kZXIuCiAgICAgV2ViS2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlOwogICAgIGlm
ICghV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHNlc3Npb25TdGF0ZURhdGEuYnl0ZXMpLCBzZXNzaW9uU3RhdGVEYXRhLmxlbmd0aCwg
c2Vzc2lvblN0YXRlKSkKQEAgLTI0NjQsNiArMjU3MSw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlRGF0YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YQogCiAtIChXS05hdmln
YXRpb24gKilfcmVzdG9yZVNlc3Npb25TdGF0ZTooX1dLU2Vzc2lvblN0YXRlICopc2Vzc2lvblN0
YXRlIGFuZE5hdmlnYXRlOihCT09MKW5hdmlnYXRlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShzZXNz
aW9uU3RhdGUgPyBzZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUgOiBXZWJLaXQ6OlNlc3Npb25T
dGF0ZSB7IH0sIG5hdmlnYXRlKSk7CiB9CiAKQEAgLTI0NzQsNiArMjU4Miw3IEBAIC0gKHZvaWQp
X2Nsb3NlCiAKIC0gKEJPT0wpX3RyeUNsb3NlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIHJldHVybiBfcGFnZS0+dHJ5Q2xvc2UoKTsKIH0KIApAQCAtMjQ4NCw2ICsyNTkzLDcgQEAg
LSAoQk9PTClfaXNDbG9zZWQKIAogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50
V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAq
KWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERp
c3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2Vzcykp
Y29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgVU5VU0VE
X1BBUkFNKG9wdGlvbnMpOwogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKICAgICBp
ZiAoZmlsZW5hbWUpCkBAIC0yNDkzLDEyICsyNjAzLDE0IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilf
aW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50
VHlwCiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNv
bnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMg
Y29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICBy
ZXR1cm4gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIg
Y29udGVudFR5cGU6Y29udGVudFR5cGUgY29tcGxldGlvbjpjb21wbGV0aW9uSGFuZGxlcl07CiB9
CiAKIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjoo
TlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRl
bnRUeXBlIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxl
cgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQogICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsK
ICAgICBhdXRvIGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVy
LCAqX3BhZ2UpOwpAQCAtMjUxOCw2ICsyNjMwLDcgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNl
cnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIK
IAogLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcg
KilpZGVudGlmaWVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IF9wYWdlLT5hdHRhY2ht
ZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXIoYXR0
YWNobWVudCk7CkBAIC0yNTI3LDYgKzI2NDAsNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0dGFj
aG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAogLSAodm9pZClfc2lt
dWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZVdpdGhBbHBoYTooZG91YmxlKWFscGhhIGJldGE6
KGRvdWJsZSliZXRhIGdhbW1hOihkb3VibGUpZ2FtbWEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgX3BhZ2UtPnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJl
dGEsIGdhbW1hKTsKIH0KIApAQCAtMjU0Miw2ICsyNjU2LDcgQEAgKyAoQk9PTClfd2lsbFVwZ3Jh
ZGVUb0hUVFBTOihOU1VSTCAqKXVybAogCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2Fybmlu
Z1dpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcg
ZGV0YWlsczooTlNBdHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBbc2VsZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTp0
aXRsZSB3YXJuaW5nOndhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRpb25I
YW5kbGVyOl4oQk9PTCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAgICAg
QVNTRVJUKCF1cmwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2FmZUxv
YWQpOwpAQCAtMjU1MCw2ICsyNjY1LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5p
bmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKikKIAogLSAo
dm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZToo
TlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczooTlNB
dHRyaWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2Vs
ZiBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTp0aXRsZSB3YXJuaW5n
Ondhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczpkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9P
TCBjb250aW51ZVVuc2FmZUxvYWQsIE5TVVJMICp1cmwpIHsKICAgICAgICAgQVNTRVJUKCF1cmwp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250aW51ZVVuc2FmZUxvYWQpOwpAQCAtMjU1
OCw2ICsyNjc0LDcgQEAgLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihO
U1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXIKIAogLSAodm9pZClfc2hvd1Nh
ZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOihOU1VSTCAqKXVybCB0aXRsZTooTlNTdHJpbmcgKil0
aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsc1dpdGhMaW5rczooTlNBdHRy
aWJ1dGVkU3RyaW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MLCBO
U1VSTCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBhdXRvIHNhZmVCcm93c2luZ1dhcm5pbmcgPSBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmc6
OmNyZWF0ZSh1cmwsIHRpdGxlLCB3YXJuaW5nLCBkZXRhaWxzKTsKICAgICBhdXRvIHdyYXBwZXIg
PSBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
VmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmIHZhcmlhbnQpIHsKICAg
ICAgICAgc3dpdGNoT24odmFyaWFudCwgWyZdIChXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCBj
b250aW51ZVVuc2FmZUxvYWQpIHsKQEAgLTI1OTAsNiArMjcwNyw3IEBAICsgKE5TVVJMICopX3Zp
c2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsCiAKIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAg
ICBfcGFnZS0+aXNKSVRFbmFibGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CkBAIC0yNTk3LDExICsyNzE1LDEzIEBAIC0gKHZvaWQp
X2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lk
KV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNj
cmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2
YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRo
U291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOk5PIGluRnJh
bWU6bmlsIGluV29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfY2FsbEFzeW5jSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50
V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6ZnVuY3Rpb25C
b2R5IGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czph
cmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRl
bnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTI2
MjYsMTEgKzI3NDYsMTMgQEAgLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkCiAK
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdv
cmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJv
ciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVu
Y3Rpb246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2Vz
dHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhTb3VyY2VVUkw6KE5TVVJMICopdXJs
IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdv
cmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJv
ciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVu
Y3Rpb246Tk8gd2l0aFNvdXJjZVVSTDp1cmwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2Vz
dHVyZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKQEAgLTI2NDAsNiArMjc2Miw3IEBAIC0gKHZv
aWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vic2l0ZVBv
bGljaWVzCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgaWYgKHdlYnBhZ2VQcmVmZXJlbmNlcy5fd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVw
ZGF0aW5nIFdLV2Vic2l0ZURhdGFTdG9yZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4iXTsKICAgICBpZiAod2VicGFnZVByZWZlcmVuY2Vz
Ll91c2VyQ29udGVudENvbnRyb2xsZXIpCkBAIC0yNjUwLDExICsyNzczLDEzIEBAIC0gKHZvaWQp
X3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdl
UHJlZmVyZW5jZXMKIAogLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPm5vdGlmeVVzZXJTY3JpcHRzKCk7CiB9CiAKIC0gKEJP
T0wpX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24KIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIF9wYWdlLT51c2VyU2NyaXB0c05lZWROb3RpZmljYXRp
b24oKTsKIH0KIApAQCAtMjY2OSw2ICsyNzk0LDcgQEAgLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5z
cGVjdGlvbgogCiAtICh2b2lkKV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09MKWFsbG93
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgIF9wYWdlLT5zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGFsbG93KTsKICNlbmRpZgpA
QCAtMjY4NSw2ICsyODExLDcgQEAgLSAoTlNTdHJpbmcgKilfcmVtb3RlSW5zcGVjdGlvbk5hbWVP
dmVycmlkZQogCiAtICh2b2lkKV9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOihOU1N0
cmluZyAqKW5hbWUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCiAgICAgX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUo
bmFtZSk7CiAjZW5kaWYKQEAgLTI2OTcsNiArMjgyNCw3IEBAIC0gKEJPT0wpX2FkZHNWaXNpdGVk
TGlua3MKIAogLSAodm9pZClfc2V0QWRkc1Zpc2l0ZWRMaW5rczooQk9PTClhZGRzVmlzaXRlZExp
bmtzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRBZGRzVmlzaXRl
ZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOwogfQogCkBAIC0yNzQ0LDYgKzI4NzIsNyBAQCAtICh2
b2lkKV9zZXRPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOihfV0tSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50cylvYnNlcnZlZAogCiAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0TWFpblJl
c291cmNlRGF0YU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSwgbmlsKTsKICAgICB9KTsKQEAg
LTI3NTEsMTEgKzI4ODAsMTMgQEAgLSAodm9pZClfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikKIAogLSAodm9pZClf
Z2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAq
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOmNv
bXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29u
dGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6
Ok5vLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFN0cmluZyBz
dHJpbmcpIHsKICAgICAgICAgaGFuZGxlcihzdHJpbmcsIG5pbCk7CiAgICAgfSk7CkBAIC0yNzYz
LDYgKzI4OTQsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yCiAKIC0gKHZvaWQpX2dldENvbnRl
bnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNT
dHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgX3BhZ2UtPmdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNs
dWRlc0NoaWxkRnJhbWVzOjpZZXMsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oU3RyaW5nIHN0cmluZykgewogICAgICAgICBoYW5kbGVyKHN0cmluZyk7CiAgICAg
fSk7CkBAIC0yNzcwLDYgKzI5MDIsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c09mQWxsRnJhbWVz
QXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nCiAKIC0gKHZv
aWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0
cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0Q29udGVudHNB
c0F0dHJpYnV0ZWRTdHJpbmcoW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvJiBhdHRyaWJ1dGVkU3RyaW5nKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVkU3Ry
aW5nLnN0cmluZykKICAgICAgICAgICAgIGhhbmRsZXIoYXR0cmlidXRlZFN0cmluZy5zdHJpbmcu
Z2V0KCksIGF0dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpLCBuaWwpOwpA
QCAtMjc4MCw2ICsyOTEzLDcgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXR0cmlidXQKIAogLSAodm9pZClf
Z2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dL
QXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lG
X1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgX3BhZ2Ut
PmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgewpA
QCAtMjgxNyw2ICsyOTUxLDcgQEAgLSAoX1dLUGFnaW5hdGlvbk1vZGUpX3BhZ2luYXRpb25Nb2Rl
CiAKIC0gKHZvaWQpX3NldFBhZ2luYXRpb25Nb2RlOihfV0tQYWdpbmF0aW9uTW9kZSlwYWdpbmF0
aW9uTW9kZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpQYWdpbmF0
aW9uOjpNb2RlIG1vZGU7CiAgICAgc3dpdGNoIChwYWdpbmF0aW9uTW9kZSkgewogICAgIGNhc2Ug
X1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDoKQEAgLTI4NDgsNiArMjk4Myw3IEBAIC0gKEJP
T0wpX3BhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMKIAogLSAodm9pZClfc2V0UGFnaW5hdGlv
bkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnMKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVt
bnMoYmVoYXZlc0xpa2VDb2x1bW5zKTsKIH0KIApAQCAtMjg1OCw2ICsyOTk0LDcgQEAgLSAoQ0dG
bG9hdClfcGFnZUxlbmd0aAogCiAtICh2b2lkKV9zZXRQYWdlTGVuZ3RoOihDR0Zsb2F0KXBhZ2VM
ZW5ndGgKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2VMZW5n
dGgocGFnZUxlbmd0aCk7CiB9CiAKQEAgLTI4NjgsNiArMzAwNSw3IEBAIC0gKENHRmxvYXQpX2dh
cEJldHdlZW5QYWdlcwogCiAtICh2b2lkKV9zZXRHYXBCZXR3ZWVuUGFnZXM6KENHRmxvYXQpZ2Fw
QmV0d2VlblBhZ2VzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRH
YXBCZXR3ZWVuUGFnZXMoZ2FwQmV0d2VlblBhZ2VzKTsKIH0KIApAQCAtMjg3OCw2ICszMDE2LDcg
QEAgLSAoQk9PTClfcGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZAogCiAtICh2b2lkKV9zZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkOihCT09MKWxpbmVHcmlkRW5hYmxlZAogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChs
aW5lR3JpZEVuYWJsZWQpOwogfQogCkBAIC0yODk4LDYgKzMwMzcsNyBAQCAtIChkb3VibGUpX3Rl
eHRab29tRmFjdG9yCiAKIC0gKHZvaWQpX3NldFRleHRab29tRmFjdG9yOihkb3VibGUpem9vbUZh
Y3RvcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0VGV4dFpvb21G
YWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKQEAgLTI5MDgsNiArMzA0OCw3IEBAIC0gKGRvdWJsZSlf
cGFnZVpvb21GYWN0b3IKIAogLSAodm9pZClfc2V0UGFnZVpvb21GYWN0b3I6KGRvdWJsZSl6b29t
RmFjdG9yCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIHNldFBhZ2Vab29t
Onpvb21GYWN0b3JdOwogfQogCkBAIC0yOTY5LDYgKzMxMTAsNyBAQCBzdGF0aWMgaW5saW5lIE9w
dGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25z
IHdrRmluZAogCiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3RyaW5n
IG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4
Q291bnQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CiAgICAgICAgIFtfY3VzdG9tQ29udGVu
dFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hlczpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENv
dW50Om1heENvdW50XTsKQEAgLTI5ODAsNiArMzEyMiw3IEBAIC0gKHZvaWQpX2NvdW50U3RyaW5n
TWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9u
cyBtCiAKIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9X
S0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBX
aGlsZSBBcHBLaXQgY29udGFpbnMgbG9naWMgaW4gTlNCYXJUZXh0RmluZGVyIHRvIGF1dG9tYXRp
Y2FsbHkgdXBkYXRlIHRoZSBmaW5kIHBhc3RlYm9hcmQKICAgICAvLyB3aGVuIHRoZSBmaW5kIHN0
cmluZyBjaGFuZ2VzLCB0aGlzIChhbG9uZyB3aXRoIHRoZSBmaW5kIHBhc3RlYm9hcmQgaXRzZWxm
KSBhcmUgYm90aCBtaXNzaW5nCkBAIC0yOTk2LDYgKzMxMzksNyBAQCAtICh2b2lkKV9maW5kU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1h
eENvdW50OgogCiAtICh2b2lkKV9oaWRlRmluZFVJCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9jdXN0b21Db250ZW50Vmlldykg
ewogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9oaWRlRmluZFVJXTsKQEAgLTMwMDcs
NiArMzE1MSw3IEBAIC0gKHZvaWQpX2hpZGVGaW5kVUkKIAogLSAodm9pZClfc2F2ZUJhY2tGb3J3
YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogICAg
IF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbS5faXRlbSk7CkBAIC0zMDIwLDYg
KzMxNjUsNyBAQCAtICh2b2lkKV9zZXJ2aWNlV29ya2Vyc0VuYWJsZWQ6KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRPdmVycmlkZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50
T3ZlcnJpZGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpAQCAtMzAyNyw2
ICszMTczLDcgQEAgLSAodm9pZClfY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9pZClfcHJlY29ubmVj
dFRvU2VydmVyOihOU1VSTCAqKXVybAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+cHJlY29ubmVjdFRvKHVybCk7CiB9CiAKQEAgLTMwMzcsNiArMzE4NCw3IEBAIC0gKEJP
T0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiAKIC0gKHZvaWQpX3NldENhblVzZUNyZWRlbnRp
YWxTdG9yYWdlOihCT09MKWNhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiB7CisgICAgVEhST1dfSUZf
U1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShjYW5Vc2VD
cmVkZW50aWFsU3RvcmFnZSk7CiB9CiAKQEAgLTMxNzcsNiArMzMyNSw3IEBAIC0gKF9XS0xheW91
dE1vZGUpX2xheW91dE1vZGUKIAogLSAodm9pZClfc2V0TGF5b3V0TW9kZTooX1dLTGF5b3V0TW9k
ZSlsYXlvdXRNb2RlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBXS0xheW91dE1vZGUgd2tWaWV3TGF5b3V0TW9kZTsKICAgICBzd2l0Y2ggKGxheW91
dE1vZGUpIHsKQEAgLTMyMDcsMTEgKzMzNTYsMTMgQEAgLSAoQ0dTaXplKV9maXhlZExheW91dFNp
emUKIAogLSAodm9pZClfc2V0Rml4ZWRMYXlvdXRTaXplOihDR1NpemUpZml4ZWRMYXlvdXRTaXpl
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRGaXhlZExheW91dFNp
emUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShmaXhlZExheW91
dFNpemUpKSk7CiB9CiAKIC0gKHZvaWQpX3NldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZToo
Qk9PTCliYWNrZ3JvdW5kRXh0ZW5kcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzKTsK
IH0KIApAQCAtMzIzMSw2ICszMzgyLDcgQEAgLSAoQ0dGbG9hdClfdmlld1NjYWxlCiAKIC0gKHZv
aWQpX3NldFZpZXdTY2FsZTooQ0dGbG9hdCl2aWV3U2NhbGUKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgaWYgKHZpZXdTY2FsZSA8PSAwIHx8IGlzbmFuKHZpZXdTY2FsZSkgfHwgaXNp
bmYodmlld1NjYWxlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3Vt
ZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXcgc2NhbGUgc2hvdWxkIGJlIGEgcG9zaXRpdmUgbnVt
YmVyIl07CiAKQEAgLTMyNTEsMTEgKzM0MDMsMTMgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAqPiAq
KV9jb3JzRGlzYWJsaW5nUGF0dGVybnMKIAogLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRl
cm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVybnMKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgX3BhZ2UtPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtlVmVjdG9yPFN0
cmluZz4ocGF0dGVybnMpKTsKIH0KIAogLSAodm9pZClfZ2V0UHJvY2Vzc0Rpc3BsYXlOYW1lV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxl
cgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Z2V0UHJvY2Vzc0Rpc3Bs
YXlOYW1lKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYm
IG5hbWUpIHsKICAgICAgICAgaGFuZGxlcihuYW1lKTsKICAgICB9KTsKQEAgLTMyNjMsNiArMzQx
Nyw3IEBAIC0gKHZvaWQpX2dldFByb2Nlc3NEaXNwbGF5TmFtZVdpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNTdHJpbmcgKikpY29tcGxlCiAKIC0gKHZvaWQpX3NldE1pbmltdW1FZmZl
Y3RpdmVEZXZpY2VXaWR0aDooQ0dGbG9hdCltaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoX3BhZ2UtPm1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCgpID09IG1pbmltdW1FZmZlY3Rp
dmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI4NSw2ICszNDQwLDcgQEAgLSAo
Q0dGbG9hdClfbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoCiAKIC0gKHZvaWQpX2dyYW50QWNj
ZXNzVG9QcmVmZXJlbmNlU2VydmljZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBp
ZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5ncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2Uo
KTsKIH0KQEAgLTMyOTMsNiArMzQ0OSw3IEBAIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9QcmVmZXJl
bmNlU2VydmljZQogCiAtICh2b2lkKV9zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZDooQk9PTCllbmFibGVkCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChlbmFibGVkKTsK
IH0KIApAQCAtMzMyMyw2ICszNDgwLDcgQEAgLSAoQk9PTClfYWxsb3dzTWVkaWFEb2N1bWVudElu
bGluZVBsYXliYWNrCiAKIC0gKHZvaWQpX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5
YmFjazooQk9PTClmbGFnCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgX3BhZ2UtPnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5
YmFjayhmbGFnKTsKICNlbmRpZgpAQCAtMzM2MSw2ICszNTE5LDcgQEAgLSAoX1dLTWVkaWFDYXB0
dXJlU3RhdGVEZXByZWNhdGVkKV9tZWRpYUNhcHR1cmVTdGF0ZQogCiAtICh2b2lkKV9zZXRNZWRp
YUNhcHR1cmVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgX3BhZ2UtPnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKQEAgLTMz
NzEsNiArMzUzMCw3IEBAIC0gKEJPT0wpX21lZGlhQ2FwdHVyZUVuYWJsZWQKIAogLSAodm9pZClf
c2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVkU3RhdGUpbXV0ZWRTdGF0ZQogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxh
Z3MgY29yZVN0YXRlOwogCiAgICAgaWYgKG11dGVkU3RhdGUgJiBfV0tNZWRpYUF1ZGlvTXV0ZWQp
CkBAIC0zMzg1LDYgKzM1NDUsNyBAQCAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlhTXV0
ZWRTdGF0ZSltdXRlZFN0YXRlCiAKIC0gKHZvaWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOihk
aXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAj
aWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIF9wYWdlLT5yZW1vdmVEYXRhRGV0ZWN0ZWRM
aW5rcyhbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgcGFnZSA9IG1ha2VX
ZWFrUHRyKF9wYWdlLmdldCgpKV0gKGF1dG8mIHJlc3VsdCkgewogICAgICAgICBpZiAocGFnZSkK
QEAgLTM0MDAsMTEgKzM1NjEsMTMgQEAgLSAodm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6
KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbgogLy8gRXhlY3V0ZSB0aGUgc3VwcGxpZWQgYmxv
Y2sgYWZ0ZXIgdGhlIG5leHQgdHJhbnNhY3Rpb24gZnJvbSB0aGUgV2ViUHJvY2Vzcy4KIC0gKHZv
aWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVC
bG9jawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBfaW50ZXJuYWxEb0Fm
dGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0ZvclBh
aW50aW5nOk5PIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6Tk9dOwogfQogCiAtICh2
b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRp
bmc6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIFtzZWxmIF9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOnVwZGF0
ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6WUVTIHdpdGhvdXRXYWl0aW5nRm9yQW5p
bWF0ZWRSZXNpemU6Tk9dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0
NjkyYWMzNjIxYjkzYmVlY2MwLi4yZGZlYWJhMGRkNGNiM2Q0ZTAwZTlkNWZiYWNjODM4MjAwN2Rm
MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKQEAgLTQxMCw2ICs0MTAsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0g
KHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQg
KF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLSAodm9pZClfc3VzcGVuZFBh
Z2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN1bWVQYWdlOih2
b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBI
T05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1MmY5NjM5
YWE2NWMyYjU2ZWVhMzc0ZjRlNjMxZGIzNTkwMzliYTQxLi45MjMwNjgzNDc3OTExYzhmZWUwNzc5
ZDkyYWY2OGJkNzRjNTNkOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTMxNDYsNyArMzE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIC8vIElmIHRoZSBw
YWdlIGlzIHN1c3BlbmRlZCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBjYXNlIGR1cmluZyBwYW5uaW5n
LCBwaW5jaGluZwogICAgIC8vIGFuZCBhbmltYXRpb24gb24gdGhlIHBhZ2UgaXRzZWxmIChraW5l
dGljIHNjcm9sbGluZywgdGFwIHRvIHpvb20pIGV0YywgdGhlbgogICAgIC8vIHdlIGRvIG5vdCBz
ZW5kIGFueSBvZiB0aGUgZXZlbnRzIHRvIHRoZSBwYWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVy
cy4KLSAgICBpZiAoIW1faXNQYWdlU3VzcGVuZGVkKSB7CisgICAgaWYgKCFtX2FyZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1
ZXVlLmFwcGVuZChldmVudCk7CiAgICAgICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVz
c1RpbWVyKCk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZl
bnQpKTsKQEAgLTM1OTQsMjQgKzM1OTQsNDUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3Rv
bVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9hcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1
c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxz
ZTsKKyAgICBtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFs
c2U7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
IHx8IG1faXNQYWdlU3VzcGVuZGVkKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBt
X2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9hcmVBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7CiAKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAic3VzcGVuZDoiKTsKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgbV9pc1N1
c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAg
IG1faXNTdXNwZW5kZWQgPSB0cnVlOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6U3VzcGVuZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJyZXN1bWU6Iik7CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkgfHwgIW1faXNTdXNw
ZW5kZWQpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBt
X2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXN1bWUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBib29s
IFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIC8vIEZJ
WE1FICgxMTg4NDApOiBXZSBzaG91bGQgcHJvYmFibHkgb25seSBzdXBwb3J0IHRoaXMgZm9yIHRl
eHQgZG9jdW1lbnRzLCBub3QgYWxsIG5vbi1pbWFnZSBkb2N1bWVudHMuCkBAIC02MDgxLDcgKzYx
MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZShNZWRpYVByb2R1Y2Vy
OjpNZWRpYUNhcHR1cmVLaW5kIGtpbmQsIENvbXBsZQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChNZWRpYVBsYXliYWNrU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwpAQCAtNzcyMiw3ICs3NzQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRl
clByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3Zp
c2libGVQYWdlVG9rZW4gPSBudWxscHRyOwogCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IGZh
bHNlOwotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9hcmVBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZhbHNlOwogCiAgICAgbV91c2VyU2NyaXB0
c05vdGlmaWVkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNWI0NTdkZmI2MDMxZWY2MzlhZDNhZTNmY2JmZmZhZTZhNmQ4NTcwMi4uZDUxM2FhYTNi
ZTI3ZTRhNTE2MzFlYWIxM2ZmYWNhOTJhZjFjMGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTUwNSw2ICs1MDUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogCisgICAg
dm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIGJvb2wgaXNTdXNw
ZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGVkOyB9CisKICAgICBXZWJJbnNwZWN0
b3JVSVByb3h5KiBpbnNwZWN0b3IoKSBjb25zdDsKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5JiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigp
IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KIApAQCAt
MTAxNCw3ICsxMDE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5n
TmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4dEVuY29kaW5nTmFtZTsgfQogCi0gICAgYm9vbCBh
cmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQYWdlU3VzcGVuZGVkOyB9CisgICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0KICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKTsKIApAQCAtMjc1Myw3ICsyNzU3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
Q29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAg
ICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXJlQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9h
ZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwogCiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9t
YXRpb24geyBmYWxzZSB9OwpAQCAtMzAxNSw2ICszMDE5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNS
dW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNw
ZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTljN2RkMzIzZWM2NjgyMGM0ZjM1
ZjQ2YzYzNmVlNGE3MDhlYjQyNS4uN2EwMjgwZjdhMWY4NTY0YTEwNzhhNDdmYzk1ODcyMTA3NGZj
ZDIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTE1Miw2ICsxNTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFBhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tbW9u
Vk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRhY3RzUmVxdWVzdERhdGEuaD4KQEAgLTM1OTYs
NiArMzU5NywzNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCkKICAgICBtX3BhZ2UtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInN1c3BlbmQ6IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAgaWYgKCFt
X3BhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBm
cmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQYWdlU3VzcGVuZGVkKTsKKwor
ICAgIG1fY2FjaGVkUGFnZSA9IEJhY2tGb3J3YXJkQ2FjaGU6OnNpbmdsZXRvbigpLnN1c3BlbmRQ
YWdlKCptX3BhZ2UpOworICAgIEFTU0VSVChtX2NhY2hlZFBhZ2UpOworICAgIGlmIChhdXRvIG1h
aW5GcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAgbWFpbkZyYW1lLT5s
b2FkZXIoKS5kZXRhY2hGcm9tQWxsT3BlbmVkRnJhbWVzKCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAicmVzdW1lOiBtX3BhZ2U9JXAiLCBtX3BhZ2UuZ2V0KCkpOworICAgIGlm
ICghbV9wYWdlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisg
ICAgYXV0byBjYWNoZWRQYWdlID0gc3RkOjpleGNoYW5nZShtX2NhY2hlZFBhZ2UsIG51bGxwdHIp
OworICAgIEFTU0VSVChjYWNoZWRQYWdlKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBjYWNoZWRQYWdlLT5yZXN0
b3JlKCptX3BhZ2UpOworICAgIHVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNv
bjo6UGFnZVN1c3BlbmRlZCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKIElu
dFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQog
ewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVlNDQ3M2FkYzRiOTgwZTBkYjhkN2EzZTAzNDg3YmIyZmU4
OThmYmMuLmZjOTYyMWUzNzJjNWI0MDQyYjllZGJjYmNmMmUzMjM2NDNhYWVhMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE3Nyw2ICsxNzcsNyBA
QCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FwdHVyZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVy
OwogY2xhc3MgRHJhZ0RhdGE7CkBAIC0xNjY5LDYgKzE2NzAsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCisgICAgdm9pZCBzdXNwZW5kKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzdW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpOwogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rp
b24oKTsKQEAgLTIzMTgsNiArMjMyMiw4IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpDYWNoZWRQYWdlPiBtX2NhY2hlZFBhZ2U7CisKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJ
KQogICAgIGJvb2wgbV9pcGNUZXN0aW5nQVBJRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgdWludDY0
X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMzdhNjU5YzkxYjM4OTJlMmI4
ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4xYjNhNjgxZmNiNTFmNDEzZTIxYmE0MjU0NDJiOGMwYTFm
ZDVlMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1MCw2ICsyNTAsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogICAgIFN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgUmVz
dW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogCisgICAgU3VzcGVuZCgpIC0+IChi
b29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgUmVzdW1lKCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMK
KwogICAgIENsb3NlKCkKICAgICBUcnlDbG9zZSgpIC0+IChib29sIHNob3VsZENsb3NlKSBBc3lu
YwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NjhlNjFkZjYwYTllNTkyNGNlNjA4ZjY2OWEwYjUyYjY0MTdkOGEwMi4uOTQyNDFkZTIxN2Y5MjYz
ZTQ0MWUwMzQxMTg5ZjBkYjA5NGJiNTQzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTExICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8g
cmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2Uu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTdXNwZW5zaW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbDogQWRkZWQu
CisKIDIwMjEtMDUtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNDYXRhbHlzdF0gc2hvdWxkIGhhdmUgQ1NTIGBob3ZlcjogaG92ZXJgIGFuZCBgcG9p
bnRlcjogZmluZWAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGMxMTdiMjRkOTI3MjJmZTkw
NmM3ZWU0ZmU5MGI5YzdlYzkwN2MyOS4uYjc5M2QzNzJmMzFkNDU5NDFlYTQyMDc1OGRhNjFkNGI2
ODZkMWNkNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2Miw2ICsyNjIsNyBAQAogCQk0
NjNGNDcyMzI1NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRjQ3MjIyNTVCNDlCNjAwRDlF
MENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAqLzsgfTsKIAkJNDY0N0IxMjYxRUJBM0I4NTAwNDFE
N0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NE
aWRUZXJtaW5hdGUuY3BwICovOyB9OwogCQk0NjRDNzY0RDIzMERGODVDMDBBRkIwMjAgLyogQmFk
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEM3NjRDMjMwREY4MzIwMEFGQjAy
MCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87IH07CisJCTQ2
NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVDMjNB
RTI2NDBDM0M1MDBGMkZDN0YgLyogcG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi87IH07CiAJ
CTQ2NUUyODA3MjU1QjJBNkEwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3
IC8qIEdQVVByb2Nlc3MubW0gKi87IH07CiAJCTQ2NkMzODQzMjEwNjM3REUwMDZBODhERSAvKiBu
b3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyog
bm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgKi87IH07CiAJCTQ2N0M1NjUzMjFCNUVE
MTMwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZE
IC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLzsgfTsKQEAgLTE2NTAsNiArMTY1MSw3IEBACiAJ
CQkJM0ZDQzRGRTgxRUM0RThDQTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAv
KiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMEVC
QkNDNjYxRkZGOUUwQzAwRkE0MkFCIC8qIHBvcC11cC1jaGVjay5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCTQ2NUMyM0FGMjY0MEMzRkUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1
bGFybHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBODFFRjQ2OTZCMDA4
M0ZBMDggLyogcHJldmVudC1vcGVyYXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlGNDFBQjlBOTFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yMDY3LDYgKzIwNjksNyBAQAogCQk0NjNG
NDcyMjI1NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9j
ZXNzRGlkVGVybWluYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2
NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3Fs
aXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGU7IHBhdGggPSAiQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBv
c3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNl
TG9hZE9ic2VydmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJl
c291cmNlTG9hZE9ic2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDA3Myw2ICs0MDc2LDcgQEAKIAkJCQk5QjdENzQwRTFGODM3N0U2
MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovLAogCQkJCTNGQ0M0RkU2MUVDNEU4N0UwMDc2
RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUuaHRtbCAqLywKIAkJCQlGNDE1MDg2QzFE
QTA0MEMxMDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovLAorCQkJCTQ2NUMy
M0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLywKIAkJ
CQlGNDFBQjk5NDFFRjQ2OTJDMDA4M0ZBMDggLyogcHJldmVudC1vcGVyYXRpb24uaHRtbCAqLywK
IAkJCQlGNDFBQjk5QTFFRjQ2OTJDMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sICovLAog
CQkJCUExMkREQkZGMUU4MzczQzEwMENGNkNBRSAvKiByZW5kZXJlZC1pbWFnZS1leGNsdWRpbmct
b3ZlcmZsb3cuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCmluZGV4IDk5NjYxYjM0MDNiMDRk
MTQxYTFjNDI4MTQ1YjdkNmZmNDc5OGRkYzIuLjBiMGI5YWM5NjcwNTgyMTZlMDQzOThiZWY0NzVl
Y2I3ZTFmOTFkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQpAQCAtMjYsMTEgKzI2LDEzIEBACiAj
aW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiBURVNUKFByb2Nlc3NTdXNwZW5zaW9u
LCBDYW5jZWxXZWJQcm9jZXNzU3VzcGVuc2lvbikKIHsKQEAgLTgzLDMgKzg1LDE1MSBAQCBURVNU
KFByb2Nlc3NTdXNwZW5zaW9uLCBEZXN0cm95V2ViUGFnZUR1cmluZ1dlYlByb2Nlc3NTdXNwZW5z
aW9uKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDEpOwogICAgIEVYUEVDVF9FUShw
aWQxLCBbd2ViVmlldzMgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiB9CisKK1RFU1QoUHJvY2Vz
c1N1c3BlbnNpb24sIFdLV2ViVmlld1N1c3BlbmRQYWdlKQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisK
KyAgICBhdXRvIHRlc3RNZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0TWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjp0ZXN0TWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInRlc3RIYW5kbGVyIl07CisgICAgX19ibG9jayB1bnNpZ25lZCB0aW1lckZpcmVkQ291bnQg
PSAwOworICAgIFt0ZXN0TWVzc2FnZUhhbmRsZXIgYWRkTWVzc2FnZTpAInRpbWVyIGZpcmVkIiB3
aXRoSGFuZGxlcjpeeworICAgICAgICArK3RpbWVyRmlyZWRDb3VudDsKKyAgICB9XTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJwb3N0TWVzc2FnZS1yZWd1bGFybHkiXTsKKworICAgIGF1dG8gcGlk
ID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkLCAw
KTsKKworICAgIC8vIFRoZSB0aW1lciBzaG91bGQgYmUgZmlyaW5nLgorICAgIGF1dG8gbGFzdFRp
bWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENvdW50OworICAgIHdoaWxlIChsYXN0VGltZXJGaXJl
Q291bnQgPT0gdGltZXJGaXJlZENvdW50KQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgxMCk7CisgICAgRVhQRUNUX1RSVUUodGltZXJGaXJlZENvdW50ID4gbGFzdFRp
bWVyRmlyZUNvdW50KTsKKworICAgIGF1dG8gdGVzdFJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJd
XTsKKyAgICBpZCB0ZXN0SW50ZXJhY3Rpb25TdGF0ZSA9IFt3ZWJWaWV3IGludGVyYWN0aW9uU3Rh
dGVdOworICAgIGF1dG8gb3JpZ2luYWxVUkwgPSBbd2ViVmlldyBVUkxdOworCisgICAgLy8gU3Vz
cGVuZCB0aGUgcGFnZS4KKyAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJP
T0wgc3VjY2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIC8vIFRoZSB0aW1lciBzaG91bGQgbm8gbG9uZ2VyIGJlIGZpcmluZy4KKyAgICBsYXN0
VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c3BpblJ1bkxvb3AoMTAwKTsKKyAgICBFWFBFQ1RfRVEobGFzdFRpbWVyRmlyZUNvdW50LCB0
aW1lckZpcmVkQ291bnQpOworCisgICAgYXV0byBjaGVja1Rocm93cyA9IFtdKEZ1bmN0aW9uPHZv
aWQoKT4mJiBmKSB7CisgICAgICAgIEB0cnkgeworICAgICAgICAgICAgZigpOworICAgICAgICB9
IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgLy8gTW9zdCBvcGVy
YXRpb25zIG9uIFdLV2ViVmlldyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gc3VzcGVu
ZGVkLgorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpAIndpbmRvdy5uYW1lIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlMiJdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tU
aHJvd3MoWyZdIHsgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJmb28iIGJhc2VVUkw6bmlsXTsg
fSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtOndlYlZpZXcuZ2V0KCkuYmFja0ZvcndhcmRMaXN0LmN1cnJlbnRJdGVt
XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJlbG9h
ZF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyByZWxv
YWRGcm9tT3JpZ2luXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3
ZWJWaWV3IGdvQmFja107IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBb
d2ViVmlldyBnb0ZvcndhcmRdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgc3RvcExvYWRpbmddOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJv
d3MoWyZdIHsgW3dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNXaXRoQ29tcGxldGlv
bkhhbmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3
ZWJWaWV3IHBhdXNlQWxsTWVkaWFQbGF5YmFja1dpdGhDb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9
KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0QWxsTWVk
aWFQbGF5YmFja1N1c3BlbmRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworICAg
IEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXli
YWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihXS01lZGlhUGxheWJhY2tTdGF0ZSkgeyB9
XTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHNldENh
bWVyYUNhcHR1cmVTdGF0ZTpXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmll
dyBzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOldLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsgfSkpOworI2lmIFRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBF
Q1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmln
dXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihVSUltYWdlICpzbmFwc2hvdCwgTlNFcnJv
ciAqZXJyb3IpIHsgfV07IH0pKTsKKyNlbHNlCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3Mo
WyZdIHsgW3dlYlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNJbWFnZSAqc25hcHNob3QsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7
CisjZW5kaWYKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBjcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKmRh
dGEsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJv
d3MoWyZdIHsgW3dlYlZpZXcgY3JlYXRlV2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7IH1dOyB9KSk7CisgICAgRVhQRUNU
X1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5hbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlcyA9IFlFUzsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dz
KFsmXSB7IHdlYlZpZXcuZ2V0KCkuY3VzdG9tVXNlckFnZW50ID0gQCJmb28iOyB9KSk7CisgICAg
RVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5hbGxvd3NMaW5rUHJl
dmlldyA9IFlFUzsgfSkpOworI2lmICFUQVJHRVRfT1NfSVBIT05FCisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5hbGxvd3NNYWduaWZpY2F0aW9uID0gWUVT
OyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgd2ViVmlldy5nZXQoKS5t
YWduaWZpY2F0aW9uID0gMS4xOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgW3dlYlZpZXcgc2V0TWFnbmlmaWNhdGlvbjoxLjEgY2VudGVyZWRBdFBvaW50OkNHUG9pbnRN
YWtlKDAsIDApXTsgfSkpOworI2VuZGlmCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgd2ViVmlldy5nZXQoKS5wYWdlWm9vbSA9IDEuMTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNo
ZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJmb28iIHdpdGhDb25maWd1cmF0
aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7IH1dOyB9
KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc3RhcnREb3du
bG9hZFVzaW5nUmVxdWVzdDp0ZXN0UmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZd
IHsgd2ViVmlldy5nZXQoKS5pbnRlcmFjdGlvblN0YXRlID0gdGVzdEludGVyYWN0aW9uU3RhdGU7
IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLm1l
ZGlhVHlwZSA9IEAidGV4dC9odG1sIjsgfSkpOworCisgICAgLy8gU29tZSBvZiB0aGUgYmFzaWMg
QVBJIHN0aWxsIHdvcmtzLgorICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBVUkxdLmFic29s
dXRlU3RyaW5nLCBvcmlnaW5hbFVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgRVhQRUNUX0VRKFt3
ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdF0uYmFja0l0ZW0sIG5pbCk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3IHRpdGxlXSwgQCIiKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaXNM
b2FkaW5nXSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IGVzdGltYXRlZFByb2dyZXNzXSwgMS4w
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgY2FuR29CYWNrXSk7CisgICAgRVhQRUNUX0ZB
TFNFKFt3ZWJWaWV3IGNhbkdvRm9yd2FyZF0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBo
YXNPbmx5U2VjdXJlQ29udGVudF0pOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBzZXJ2ZXJUcnVz
dF0sIG5pbCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IGNhbWVyYUNhcHR1cmVTdGF0ZV0sIFdL
TWVkaWFDYXB0dXJlU3RhdGVOb25lKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgbWljcm9waG9u
ZUNhcHR1cmVTdGF0ZV0sIFdLTWVkaWFDYXB0dXJlU3RhdGVOb25lKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgY3VzdG9tVXNlckFnZW50XSwgQCIiKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBhbGxvd3NMaW5rUHJldmlld10pOworI2lmICFUQVJHRVRfT1NfSVBIT05FCisgICAg
RVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGFsbG93c01hZ25pZmljYXRpb25dKTsKKyAgICBFWFBFQ1Rf
RVEoW3dlYlZpZXcgbWFnbmlmaWNhdGlvbl0sIDEuMCk7CisjZW5kaWYKKyAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgcGFnZVpvb21dLCAxLjApOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBt
ZWRpYVR5cGVdLCBAIiIpOworICAgIEVYUEVDVF9GQUxTRShjaGVja1Rocm93cyhbJl0geyBbd2Vi
VmlldyBpbnRlcmFjdGlvblN0YXRlXTsgfSkpOworICAgIEVYUEVDVF9GQUxTRShjaGVja1Rocm93
cyhbJl0geyBbd2ViVmlldyB0aGVtZUNvbG9yXTsgfSkpOworCisgICAgLy8gUmVzdW1lIHRoZSBw
YWdlLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfcmVzdW1lUGFnZTpeKEJPT0wg
c3VjY2VzcykgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBbd2ViVmlldyBhZGRUb1Rlc3RXaW5kb3ddOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBz
dGFydCBmaXJpbmcgYWdhaW4uCisgICAgbGFzdFRpbWVyRmlyZUNvdW50ID0gdGltZXJGaXJlZENv
dW50OworICAgIHdoaWxlIChsYXN0VGltZXJGaXJlQ291bnQgPT0gdGltZXJGaXJlZENvdW50KQor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisgICAgRVhQRUNU
X1RSVUUodGltZXJGaXJlZENvdW50ID4gbGFzdFRpbWVyRmlyZUNvdW50KTsKKworICAgIC8vIE1h
a2Ugc3VyZSB3ZSBkaWQgbm90IGNyYXNoLgorICAgIEVYUEVDVF9FUShwaWQsIFt3ZWJWaWV3IF93
ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworfQorCitURVNUKFByb2Nlc3NTdXNwZW5zaW9uLCBEZWFs
bG9jYXRlU3VzcGVuZGVkVmlldykKK3sKKyAgICAvLyBEZWFsbG9jYXRpbmcgYSBzdXNwZW5kZWQg
V2ViVmlldyBzaG91bGQgbm90IHRocm93IG9yIGNyYXNoLgorICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKyAgICAgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IF9zdXNwZW5kUGFnZTpeKEJPT0wg
c3VjY2VzcykgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisKKyAgICAgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdl
LXJlZ3VsYXJseS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9w
b3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2E2YjA0YmQxNWUwMGQ4Y2Jk
YmVlY2ExNmRiMjk2NmVjNWE1OWU5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEU+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KK3NldEludGVy
dmFsKCgpID0+IHsKKyAgICB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKCd0aW1lciBmaXJlZCcpOworfSwgNSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428344</attachid>
            <date>2021-05-11 21:26:39 -0700</date>
            <delta_ts>2021-05-11 22:53:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225333-20210511212638.patch</filename>
            <type>text/plain</type>
            <size>132302</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZWRhMzg4YTNjODY2
ZTRmYjMwYWM5MGE4OGY4NzU4NTRlODkyZi4uMTk5ZWY4MTE0Y2M3YjJiOGUyMDY5MGJjZmNlZmNj
OGEyMzZjMjYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5k
IC8gcmVzdW1lIGEgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzMzMKKyAgICAgICAgPHJkYXI6Ly83NzQ2MjU0Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9uIHRv
IEJhY2tGb3J3YXJkQ2FjaGUgdG8gc3VzcGVuZCBhIHBhZ2UgYW5kIHJldHVybiBhIENhY2hlZFBh
Z2UKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBIaXN0b3J5SXRlbSBhbmQgc3Rvcmlu
ZyB0aGUgQ2FjaGVkUGFnZSBvbiB0aGF0IGhpc3RvcnkKKyAgICAgICAgaXRlbS4gVGhpcyBpcyB1
c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHN1c3BlbmQgdGhlIHBhZ2UgaW4tcGxhY2UgYW5kIGRvIG5v
dCB3YW50CisgICAgICAgIHRvIHJlcXVpcmUgYSBoaXN0b3J5IGl0ZW0gKG9yIGEgbmF2aWdhdGlv
bikuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIGhpc3RvcnkvQmFja0Zv
cndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjp0cnlT
dXNwZW5kUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNh
Y2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFn
ZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICogaGlz
dG9yeS9DYWNoZWRQYWdlLmg6CisKIDIwMjEtMDUtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc3MzQx
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkMTgxM2Q1YWQ3Y2VlOWExNjIzNjFhMGE4N2JjZDgyZjJiZjYyYTZjLi5j
M2M4ZmIwYjliOWYwY2Q1ZGRkYTQ4NDNmY2JkZDA0MmUwYjNhYzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwMCBAQAorMjAyMS0wNS0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTUEkgdG8gc3VzcGVuZCAvIHJlc3VtZSBhIFdLV2ViVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MzMzCisgICAgICAg
IDxyZGFyOi8vNzc0NjI1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisK
KyAgICAgICAgQWRkIFNQSSB0byBzdXNwZW5kIC8gcmVzdW1lIGEgV0tXZWJWaWV3LiBUaGlzIHN1
c3BlbmRzIHRoZSBwYWdlIGFzIGlmIGl0IHdhcyBpbgorICAgICAgICB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlIGJ1dCB0aGUgc3VzcGVuc2lvbiBoYXBwZW5zIGluLXBsYWNlLCBubyBuZWVkIHRvIG5h
dmlnYXRlLgorICAgICAgICBUaGUgc3VzcGVuZGVkIHBhZ2UgaXMgYWxzbyBub3QgcGFydCBvZiB0
aGUgQmFjay9Gb3J3YXJkIGNhY2hlIHNvIGl0cyBjYXAgb24gdGhlCisgICAgICAgIG51bWJlciBv
ZiBzdXNwZW5kZWQgcGFnZXMgZG9lcyBub3QgYXBwbHkgaGVyZS4KKworICAgICAgICBNb3N0IG9m
IFdLV2ViVmlldydzIEFQSSAvIFNQSSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxl
ZCBvbiBhIHN1c3BlbmRlZAorICAgICAgICB2aWV3IChUaGUgV0tQYWdlUmVmQVBJIHdpbGwgUkVM
RUFTRV9BU1NFUlQoKSkuIFNvbWUgb2YgdGhlIGJhc2ljIEFQSSB3aWxsIHN0YXkKKyAgICAgICAg
ZnVuY3Rpb25hbCAoVVJMLCBpc0xvYWRpbmcsIHRpdGxlLCAuLi4pLiBJdCBpcyBhbHNvIHNhZmUg
dG8gZGVhbGxvY2F0ZSAvIGNsb3NlCisgICAgICAgIGEgc3VzcGVuZGVkIFdLV2ViVmlldy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoY3Jhc2hJZlBh
Z2VJc1N1c3BlbmRlZCk6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToKKyAgICAgICAgKFdLUGFn
ZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6CisgICAgICAgIChXS1Bh
Z2VMb2FkVVJMV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0V2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZUxvYWRGaWxlKToKKyAgICAgICAgKFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKToKKyAg
ICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhV2l0aFVzZXJE
YXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxv
YWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVz
ZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VM
b2FkV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhV2l0
aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZVN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdLUGFn
ZVJlbG9hZCk6CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKToK
KyAgICAgICAgKFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdlUmVsb2Fk
RXhwaXJlZE9ubHkpOgorICAgICAgICAoV0tQYWdlVHJ5Q2xvc2UpOgorICAgICAgICAoV0tQYWdl
Q2xvc2UpOgorICAgICAgICAoV0tQYWdlR29Gb3J3YXJkKToKKyAgICAgICAgKFdLUGFnZUdvQmFj
ayk6CisgICAgICAgIChXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChX
S1BhZ2VUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV0tQYWdlVXBkYXRlV2Vi
c2l0ZVBvbGljaWVzKToKKyAgICAgICAgKFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCk6CisgICAgICAgIChXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXS1BhZ2VUZXJtaW5hdGUp
OgorICAgICAgICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV0tQ
YWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbik6CisgICAgICAgIChX
S1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0VGV4
dFpvb21GYWN0b3IpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyk6CisgICAgICAgIChXS1BhZ2VTZXRT
Y2FsZUZhY3Rvcik6CisgICAgICAgIChXS1BhZ2VTZXRVc2VGaXhlZExheW91dCk6CisgICAgICAg
IChXS1BhZ2VTZXRGaXhlZExheW91dFNpemUpOgorICAgICAgICAoV0tQYWdlTGlzdGVuRm9yTGF5
b3V0TWlsZXN0b25lcyk6CisgICAgICAgIChXS1BhZ2VTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMpOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdExlZnQpOgorICAgICAgICAo
V0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KToKKyAgICAgICAgKFdLUGFnZVNldFJ1YmJlckJh
bmRzQXRUb3ApOgorICAgICAgICAoV0tQYWdlU2V0UnViYmVyQmFuZHNBdEJvdHRvbSk6CisgICAg
ICAgIChXS1BhZ2VTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQ
YWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpOgorICAgICAgICAoV0tQYWdlU2V0
QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRp
b25Nb2RlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxlbmd0aCk6CisgICAgICAgIChXS1BhZ2VTZXRHYXBC
ZXR3ZWVuUGFnZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZCk6CisgICAgICAgIChXS1BhZ2VTZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbik6CisgICAg
ICAgIChXS1BhZ2VDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKToKKyAgICAgICAgKFdLUGFn
ZUZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZUdldEltYWdlRm9yRmluZE1hdGNo
KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdEZpbmRNYXRjaCk6CisgICAgICAgIChXS1BhZ2VGaW5k
U3RyaW5nKToKKyAgICAgICAgKFdLUGFnZUhpZGVGaW5kVUkpOgorICAgICAgICAoV0tQYWdlQ291
bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlRmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0
YXRlQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6Cisg
ICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYik6CisgICAgICAgIChXS1Bh
Z2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXS1BhZ2VHZXRT
b3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKToKKyAg
ICAgICAgKFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXS1BhZ2VHZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KToKKyAgICAgICAgKFdLUGFnZUdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEpOgorICAgICAgICAoV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YSk6CisgICAg
ICAgIChXS1BhZ2VGb3JjZVJlcGFpbnQpOgorICAgICAgICAoV0tQYWdlVmFsaWRhdGVDb21tYW5k
KToKKyAgICAgICAgKFdLUGFnZUV4ZWN1dGVDb21tYW5kKToKKyAgICAgICAgKFdLUGFnZUNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAgKFdLUGFnZURyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdLUGFnZUJlZ2luUHJpbnRpbmcpOgorICAgICAgICAoV0tQYWdlRW5kUHJpbnRpbmcp
OgorICAgICAgICAoV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbik6CisgICAgICAgIChX
S1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlh
Vm9sdW1lKToKKyAgICAgICAgKFdLUGFnZVNldE11dGVkKToKKyAgICAgICAgKFdLUGFnZVNldE1l
ZGlhQ2FwdHVyZUVuYWJsZWQpOgorICAgICAgICAoV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayk6
CisgICAgICAgIChXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRlKToKKyAgICAgICAgKFdLUGFnZURp
ZERlbnlQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KToKKyAgICAgICAgKFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbSk6CisgICAgICAg
IChXS1BhZ2VTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV0tQYWdlU2V0QWRk
c1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRv
cik6CisgICAgICAgIChXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKToKKyAg
ICAgICAgKFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKToKKyAgICAgICAgKFdL
UGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgIChXS1BhZ2VEdW1wUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6CisgICAgICAgIChX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0
dXJlVVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tQYWdlTWFy
a1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAo
V0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChX
S1BhZ2VTZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24pOgorICAgICAgICAoV0tQYWdlTG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zKToKKyAgICAgICAgKFdLUGFnZVNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9y
VGVzdGluZyk6CisgICAgICAgIChXS1BhZ2VEaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
bG9hZEZpbGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpiYXNlVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9h
ZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3RvcExvYWRpbmddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDppbkZyYW1lOmluQ29udGVudFdvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDphcmd1bWVudHM6aW5GcmFt
ZTppbkNvbnRlbnRXb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3Bl
bmRlZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RN
ZWRpYVBsYXliYWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q2FtZXJhQ2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5j
RnVuY3Rpb246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5G
cmFtZTppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
dGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldEFsbG93c0xpbmtQcmV2aWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgc2V0UGFnZVpvb206XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
c2V0TWVkaWFUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0SW50ZXJhY3Rpb25TdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c01hZ25pZmljYXRpb246XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOmNlbnRlcmVkQXRQb2ludDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1hZ25pZmljYXRpb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBwcmludE9wZXJhdGlvbldpdGhQcmludEluZm86XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVzcG9u
c2U6cmVzcG9uc2VEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJl
cXVlc3Q6d2l0aFJlc3BvbnNlOnJlc3BvbnNlRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OnJlc3BvbnNlSFRNTFN0cmluZzpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OndpdGhSZXNwb25zZUhUTUxTdHJpbmc6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVJlcXVlc3Q6YWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbmNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kZWNyZWFzZUxpc3RMZXZlbDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9j
aGFuZ2VMaXN0VHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZEVuYWJsZUJy
b3dzZXJFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZERpc2FibGVCcm93
c2VyRXh0ZW5zaW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRFZGl0YWJsZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0
aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF91cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdG9nZ2xlUGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc3RvcE1lZGlhQ2FwdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3BBbGxN
ZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2FkZEFwcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFibGVVUkw6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdO
YW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVl
c3Q6c2hvdWxkT3BlbkV4dGVybmFsVVJMczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2Fk
UmVxdWVzdDpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2dyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfcmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeV0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3VzcGVuZFBhZ2U6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfcmVzdW1lUGFnZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
a2lsbFdlYkNvbnRlbnRQcm9jZXNzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0
aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZEV4cGly
ZWRPbmx5XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5k
UmVzZXRTdGF0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9yZXN0b3JlU2Vzc2lvblN0YXRlOmFuZE5hdmlnYXRlOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2Nsb3NlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdHJ5Q2xvc2Vd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNv
bnRlbnRUeXBlOmRhdGE6b3B0aW9uczpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6b3B0aW9uczpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOmJldGE6Z2FtbWE6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6d2Fy
bmluZzpkZXRhaWxzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDp0aXRsZTp3YXJuaW5nOmRldGFpbHM6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmdXaXRoVVJMOnRpdGxlOndhcm5pbmc6ZGV0YWlsc1dpdGhMaW5rczpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0phdmFT
Y3JpcHQ6YXJndW1lbnRzOmluRnJhbWU6aW5Db250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluRnJhbWU6aW5D
b250ZW50V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0OndpdGhTb3VyY2VVUkw6aW5GcmFtZTppbkNvbnRlbnRXb3JsZDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVXZWJwYWdl
UHJlZmVyZW5jZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbm90aWZ5VXNlclNjcmlwdHNd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZp
Y2F0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlv
bjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJy
aWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEFkZHNWaXNpdGVkTGlua3M6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZ2V0TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzU3Ry
aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dldENv
bnRlbnRzT2ZBbGxGcmFtZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBh
Z2luYXRpb25Nb2RlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFBhZ2luYXRpb25CZWhh
dmVzTGlrZUNvbHVtbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UGFnZUxlbmd0aDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRUZXh0Wm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRQYWdlWm9vbUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb3VudFN0cmlu
Z01hdGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maW5k
U3RyaW5nOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGlkZUZp
bmRVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9y
SXRlbTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRMYXlvdXRNb2RlOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NldEZpeGVkTGF5b3V0U2l6ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
c2V0Vmlld1NjYWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldENPUlNEaXNhYmxpbmdQ
YXR0ZXJuczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRQcm9jZXNzRGlzcGxheU5hbWVX
aXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11
bUVmZmVjdGl2ZURldmljZVdpZHRoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2dyYW50QWNj
ZXNzVG9QcmVmZXJlbmNlU2VydmljZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFNjcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldFBhZ2VNdXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVEYXRhRGV0
ZWN0ZWRMaW5rczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZVdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFj
a1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQ
cm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTExICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3RdIHNob3VsZCBo
YXZlIENTUyBgaG92ZXI6IGhvdmVyYCBhbmQgYHBvaW50ZXI6IGZpbmVgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCA1MWQ4NTQ3YjY4ZDQ3MjhhOWM1YTQ0MzQxZmM0ODM3M2ExMTNhOThjLi42MTVjZmI4
ZjBjOTRjMmIxNGYwOTUzZGNiYzA4ZjRhNmRhZjdlZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTYwOCw2ICs2MDgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKICAgICBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmgKICAgICBoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKyAgICBoaXN0
b3J5L0NhY2hlZFBhZ2UuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaAogCiAgICAgaHRtbC9B
dXRvY2FwaXRhbGl6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hl
LmNwcAppbmRleCAyN2VkNzRjZDIxZDM2YWU3MGMzNWE4ZjBiMjA5MWIwYjVhNDc3YjkzLi45MDNh
ZWNhMTIyMmY4ZTk0Zjk3ZTE4ODRjOTUwNWEzNzBhNjc0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTQyNiw1MSArNDI2LDYyIEBAIHN0YXRp
YyB2b2lkIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZyYW1lKQogICAgICAg
ICBmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAKLWJvb2wgQmFja0Zv
cndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2Up
CitzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dHJ5U3VzcGVu
ZFBhZ2UoUGFnZSYgcGFnZSwgRm9yY2VTdXNwZW5zaW9uIGZvcmNlU3VzcGVuc2lvbikKIHsKLSAg
ICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBhZ2UtPm1h
aW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgcGFnZS5t
YWluRnJhbWUoKS5sb2FkZXIoKS5zdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpOwogCi0gICAgaWYg
KCFjYW5DYWNoZSgqcGFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm9yY2VT
dXNwZW5zaW9uID09IEZvcmNlU3VzcGVuc2lvbjo6Tm8gJiYgIWNhbkNhY2hlKHBhZ2UpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlz
VXRpbGl0eVBhZ2UoKSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91
bGQgbmV2ZXIgZ28gaW50byBCYWNrRm9yd2FyZENhY2hlIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghcGFnZS5pc1V0aWxpdHlQYWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1h
Z2UgcGFnZXMgc2hvdWxkIG5ldmVyIGdvIGludG8gQmFja0ZvcndhcmRDYWNoZSIpOwogCi0gICAg
c2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6QWJvdXRUb0VudGVyQmFj
a0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0ZvcndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3Vt
ZW50OjpBYm91dFRvRW50ZXJCYWNrRm9yd2FyZENhY2hlKTsKIAogICAgIC8vIEZvY3VzIHRoZSBt
YWluIGZyYW1lLCBkZWZvY3VzaW5nIGEgZm9jdXNlZCBzdWJmcmFtZSAoaWYgd2UgaGF2ZSBvbmUp
LiBXZSBkbyB0aGlzIGhlcmUsCiAgICAgLy8gYmVmb3JlIHRoZSBwYWdlIGVudGVycyB0aGUgYmFj
ay9mb3J3YXJkIGNhY2hlLCB3aGlsZSB3ZSBzdGlsbCBjYW4gZGlzcGF0Y2ggRE9NIGJsdXIvZm9j
dXMgZXZlbnRzLgotICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJhbWUo
KSkKLSAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZwYWdl
LT5tYWluRnJhbWUoKSk7CisgICAgaWYgKHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZy
YW1lKCkpCisgICAgICAgIHBhZ2UuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZw
YWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIEZpcmUgdGhlIHBhZ2VoaWRlIGV2ZW50IGluIGFs
bCBmcmFtZXMuCi0gICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLT5tYWluRnJh
bWUoKSk7CisgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShwYWdlLm1haW5GcmFtZSgp
KTsKIAotICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBkZXN0
cm95UmVuZGVyVHJlZShwYWdlLm1haW5GcmFtZSgpKTsKIAogICAgIC8vIFN0b3AgYWxsIGxvYWRz
IGFnYWluIGJlZm9yZSBjaGVja2luZyBpZiB3ZSBjYW4gc3RpbGwgY2FjaGUgdGhlIHBhZ2UgYWZ0
ZXIgZmlyaW5nIHRoZSBwYWdlaGlkZQogICAgIC8vIGV2ZW50LCBzaW5jZSB0aGUgcGFnZSBtYXkg
aGF2ZSBzdGFydGVkIHBpbmcgbG9hZHMgaW4gaXRzIHBhZ2VoaWRlIGV2ZW50IGhhbmRsZXIuCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RvcEZvckJhY2tGb3J3YXJkQ2FjaGUoKTsK
KyAgICBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLnN0b3BGb3JCYWNrRm9yd2FyZENhY2hlKCk7
CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIHBhZ2UtY2FjaGVhYmxlIGFm
dGVyIGZpcmluZyB0aGUgcGFnZWhpZGUgZXZlbnQuIFRoZSBKUyBldmVudCBoYW5kbGVycwogICAg
IC8vIGNvdWxkIGhhdmUgYWx0ZXJlZCB0aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZl
bnQgY2FjaGluZy4KLSAgICBpZiAoIWNhbkNhY2hlKCpwYWdlKSkgewotICAgICAgICBzZXRCYWNr
Rm9yd2FyZENhY2hlU3RhdGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJbkJhY2tGb3J3YXJkQ2FjaGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvcmNlU3VzcGVuc2lvbiA9PSBGb3Jj
ZVN1c3BlbnNpb246Ok5vICYmICFjYW5DYWNoZShwYWdlKSkgeworICAgICAgICBzZXRCYWNrRm9y
d2FyZENhY2hlU3RhdGUocGFnZSwgRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNldEJhY2tGb3J3YXJkQ2FjaGVT
dGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkluQmFja0ZvcndhcmRDYWNoZSk7CisgICAgc2V0QmFja0Zv
cndhcmRDYWNoZVN0YXRlKHBhZ2UsIERvY3VtZW50OjpJbkJhY2tGb3J3YXJkQ2FjaGUpOworCisg
ICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3Bl
LgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPihwYWdlKTsKK30KKwor
Ym9vbCBCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwg
UGFnZSogcGFnZSkKK3sKKyAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNoZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gY2FjaGVkUGFnZSA9IHRyeVN1c3BlbmRQYWdlKCpwYWdlLCBGb3JjZVN1
c3BlbnNpb246Ok5vKTsKKyAgICBpZiAoIWNhY2hlZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2
ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQ
YWdlKG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNo
ZWRQYWdlKFdURk1vdmUoY2FjaGVkUGFnZSkpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNv
biA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAg
ICB9CkBAIC00ODEsNiArNDkyLDEzIEBAIGJvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNo
ZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZENhY2hlOjpzdXNwZW5k
UGFnZShQYWdlJiBwYWdlKQoreworICAgIFJFTEVBU0VfTE9HKEJhY2tGb3J3YXJkQ2FjaGUsICJC
YWNrRm9yd2FyZENhY2hlOjpzdXNwZW5kUGFnZSgpIik7CisKKyAgICByZXR1cm4gdHJ5U3VzcGVu
ZFBhZ2UocGFnZSwgRm9yY2VTdXNwZW5zaW9uOjpZZXMpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8
Q2FjaGVkUGFnZT4gQmFja0ZvcndhcmRDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFn
ZSogcGFnZSkKIHsKICAgICBpZiAoIWl0ZW0ubV9jYWNoZWRQYWdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IGFkYWFmYWJhNmJhNjMxMjdjYzRkODJk
N2YxZDJjMzlkNDc1MzRmN2UuLjczZTc2ZTAwYjJhOTVlNDYzNjBiOTdmOTRhNzcxZDAwMWNhNDgx
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5z
aWduZWQpOyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IHN1c3BlbmRQYWdlKFBhZ2UmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVu
ZXMgaWYgbWF4U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlKEhpc3RvcnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFn
ZSopOwpAQCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgY2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSYpOwogCisgICAgZW51bSBjbGFzcyBGb3Jj
ZVN1c3BlbnNpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNo
ZWRQYWdlPiB0cnlTdXNwZW5kUGFnZShQYWdlJiwgRm9yY2VTdXNwZW5zaW9uKTsKICAgICB2b2lk
IHBydW5lKFBydW5pbmdSZWFzb24pOwogICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkUGFnZS5oCmluZGV4IDRlZWNmMWNiMGMyNWRhYzdlMWQ2ZjI0OThjYmIy
Yzk1ZTM4ODVkMjUuLjBmNzNjZjc4YWMzYjczZmRjNjU1ZjE0MzY0MTFjMTdhYzU1MjE3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIENh
Y2hlZFBhZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IENhY2hlZFBhZ2UoUGFnZSYpOwotICAgIH5DYWNoZWRQYWdlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkNhY2hlZFBhZ2UoKTsKIAotICAgIHZvaWQgcmVzdG9yZShQYWdlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlKFBhZ2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAK
ICAgICBQYWdlJiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA2M2FmMDVjZGZhODA0YzU4MDYwNDg3ZjBk
Y2IwMTdiNTllMGVkMDI1Li45OWI2NTVmYTRiNThkODQ5ZDlmNzNmMTg4NGFkMWRmZmUzOGRiNTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTE0Myw2ICsx
NDMsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVN0YXRlQ2xpZW50
QmFzZT4gewogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIE5FVkVSX0lOTElORSBzdGF0aWMgdm9pZCBjcmFzaEJlY2F1c2VQYWdlSXNTdXNwZW5kZWQo
KQoreworICAgIFdURkxvZ0Fsd2F5cygiRXJyb3I6IEF0dGVtcHQgdG8gY2FsbCBXS1BhZ2VSZWYg
QVBJL1NQSSBvbiBhIHN1c3BlbmRlZCBwYWdlLCB0aGlzIGlzIGEgY2xpZW50IGJ1Zy4iKTsKKyAg
ICBDUkFTSCgpOworfQorCisjZGVmaW5lIENSQVNIX0lGX1NVU1BFTkRFRCBpZiAoVU5MSUtFTFko
cGFnZVJlZiAmJiB0b0ltcGwocGFnZVJlZiktPmlzU3VzcGVuZGVkKCkpKSBcCisgICAgY3Jhc2hC
ZWNhdXNlUGFnZUlzU3VzcGVuZGVkKCkKKwogV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKIHsK
ICAgICByZXR1cm4gdG9BUEkoV2ViUGFnZVByb3h5OjpBUElUeXBlKTsKQEAgLTE2NSw0OSArMTc0
LDU4IEBAIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9u
KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLVVJMUmVmIFVSTFJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9J
bXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikp
KTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgYm9vbCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdzsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChV
UkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
OwogfQogCiB2b2lkIFdLUGFnZUxvYWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLVVJMUmVmIFVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwg
dG9XVEZTdHJpbmcoVVJMUmVmKSksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93LCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1Bh
Z2VMb2FkVVJMUmVxdWVzdChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJl
cXVlc3RSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VS
ZXF1ZXN0ID0gdG9JbXBsKHVybFJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0
b0ltcGwocGFnZVJlZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSk7CiB9
CiAKIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0ID0g
dG9JbXBsKHVybFJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICB0b0ltcGwocGFn
ZVJlZiktPmxvYWRSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHRvSW1wbCh1c2VyRGF0
YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRGaWxlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VS
TFJlZiBmaWxlVVJMLCBXS1VSTFJlZiByZXNvdXJjZURpcmVjdG9yeVVSTCkKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRmlsZSh0b1dURlN0cmlu
ZyhmaWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3RvcnlVUkwpKTsKIH0KIAogdm9p
ZCBXS1BhZ2VMb2FkRmlsZVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYg
ZmlsZVVSTCwgV0tVUkxSZWYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFdLVHlwZVJlZiB1c2VyRGF0
YVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5s
b2FkRmlsZSh0b1dURlN0cmluZyhmaWxlVVJMKSwgdG9XVEZTdHJpbmcocmVzb3VyY2VEaXJlY3Rv
cnlVUkwpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBl
UmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0lt
cGwoZGF0YVJlZiktPmRhdGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0
b1dURlN0cmluZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKIH0KIAog
dm9pZCBXS1BhZ2VMb2FkRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRh
UmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGlu
Z1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogeworICAg
IENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1w
bChkYXRhUmVmKS0+ZGF0YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRv
V1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1
c2VyRGF0YVJlZikpOwogfQogCkBAIC0yMzMsNTIgKzI1MSw2MiBAQCBzdGF0aWMgdm9pZCBsb2Fk
U3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNvbnN0IFN0
cmluZyYgbQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShw
YWdlUmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJMUmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJp
bmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJE
YXRhUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBsb2FkU3RyaW5nKHBhZ2VS
ZWYsIGh0bWxTdHJpbmdSZWYsICJ0ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYp
LCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmco
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJh
c2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShw
YWdlUmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJMUmVmLCB1bnJlYWNoYWJsZVVSTFJlZiwgbnVs
bHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXNlckRh
dGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVm
IGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIFN0cmluZyBzdHJpbmcgPSB0
b1dURlN0cmluZyhodG1sU3RyaW5nUmVmKTsKICAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRBbHRl
cm5hdGVIVE1MKGRhdGFGcm9tKHN0cmluZyksIGVuY29kaW5nT2Yoc3RyaW5nKSwgVVJMKFVSTCgp
LCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodW5yZWFj
aGFibGVVUkxSZWYpKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9h
ZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0
U3RyaW5nUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBXS1BhZ2VMb2FkUGxh
aW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIHBsYWluVGV4dFN0cmluZ1JlZiwgbnVs
bHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGxvYWRTdHJp
bmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgYWJvdXRCbGFu
a1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFy
Y2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdl
YkFyY2hpdmVEYXRhKHRvSW1wbCh3ZWJBcmNoaXZlRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFn
ZUxvYWRXZWJBcmNoaXZlRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRh
UmVmIHdlYkFyY2hpdmVEYXRhUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFdlYkFyY2hpdmVEYXRh
KHRvSW1wbCh3ZWJBcmNoaXZlRGF0YVJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2
b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lG
X1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CiB9CiAKIHZv
aWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25z
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViQ29yZTo6
U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCkBAIC0yOTAs
MjEgKzMxOCwyNSBAQCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9p
ZCBXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlUmVmKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChX
ZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwogfQogCiB2b2lk
IFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9h
ZE9wdGlvbjo6RnJvbU9yaWdpbik7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkRXhwaXJlZE9ubHko
V0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1w
bChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwog
fQogCiBib29sIFdLUGFnZVRyeUNsb3NlKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50cnlDbG9zZSgpOwog
fQogCkBAIC0zMjAsNiArMzUyLDcgQEAgYm9vbCBXS1BhZ2VJc0Nsb3NlZChXS1BhZ2VSZWYgcGFn
ZVJlZikKIAogdm9pZCBXS1BhZ2VHb0ZvcndhcmQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Gb3J3YXJkKCk7CiB9
CiAKQEAgLTMzMCw2ICszNjMsNyBAQCBib29sIFdLUGFnZUNhbkdvRm9yd2FyZChXS1BhZ2VSZWYg
cGFnZVJlZikKIAogdm9pZCBXS1BhZ2VHb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8mIHBhZ2UgPSAqdG9JbXBsKHBhZ2VSZWYpOwog
ICAgIGlmIChwYWdlLnBhZ2VDbGllbnQoKS5oYXNTYWZlQnJvd3NpbmdXYXJuaW5nKCkpIHsKICAg
ICAgICAgV0tQYWdlUmVsb2FkKHBhZ2VSZWYpOwpAQCAtMzQ1LDExICszNzksMTMgQEAgYm9vbCBX
S1BhZ2VDYW5Hb0JhY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiBpdGVtUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmdvVG9CYWNrRm9yd2FyZEl0ZW0oKnRvSW1wbChpdGVtUmVmKSk7CiB9CiAKIHZvaWQgV0tQ
YWdlVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnRyeVJlc3RvcmVTY3JvbGxQ
b3NpdGlvbigpOwogfQogCkBAIC0zNjUsNiArNDAxLDcgQEAgYm9vbCBXS1BhZ2VXaWxsSGFuZGxl
SG9yaXpvbnRhbFNjcm9sbEV2ZW50cyhXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VV
cGRhdGVXZWJzaXRlUG9saWNpZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLV2Vic2l0ZVBvbGljaWVz
UmVmIHdlYnNpdGVQb2xpY2llc1JlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpLCAiU2V0dGluZyBXZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFT
dG9yZSBpcyBvbmx5IHN1cHBvcnRlZCBkdXJpbmcgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0
aFBvbGljaWVzKCkuIik7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0b0ltcGwo
d2Vic2l0ZVBvbGljaWVzUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCksICJTZXR0aW5nIFdl
YnNpdGVQb2xpY2llcy51c2VyQ29udGVudENvbnRyb2xsZXIgaXMgb25seSBzdXBwb3J0ZWQgZHVy
aW5nIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcygpLiIpOwogICAgIGF1dG8g
ZGF0YSA9IHRvSW1wbCh3ZWJzaXRlUG9saWNpZXNSZWYpLT5kYXRhKCk7CkBAIC00MjMsNiArNDYw
LDcgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weUFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChX
S1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTmFtZVJlZikK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRBcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQodG9XVEZTdHJpbmcoYXBwbGljYXRpb25OYW1lUmVmKSk7
CiB9CiAKQEAgLTQzMyw2ICs0NzEsNyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5Q3VzdG9tVXNl
ckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEN1c3RvbVVzZXJBZ2Vu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdXNlckFnZW50UmVmKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVVzZXJBZ2Vu
dCh0b1dURlN0cmluZyh1c2VyQWdlbnRSZWYpKTsKIH0KIApAQCAtNDUzLDExICs0OTIsMTMgQEAg
V0tTdHJpbmdSZWYgV0tQYWdlQ29weUN1c3RvbVRleHRFbmNvZGluZ05hbWUoV0tQYWdlUmVmIHBh
Z2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdOYW1lUmVmKQogeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUo
dG9XVEZTdHJpbmcoZW5jb2RpbmdOYW1lUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlVGVybWluYXRl
KFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBwcm90ZWN0ZWRQcm9jZXNzUHJveHkodG9JbXBsKHBhZ2VSZWYpLT5w
cm9jZXNzKCkpOwogICAgIHByb3RlY3RlZFByb2Nlc3NQcm94eS0+cmVxdWVzdFRlcm1pbmF0aW9u
KFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwogfQpAQCAtNTE4
LDExICs1NTksMTMgQEAgc3RhdGljIHZvaWQgcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLVHlwZVJlZiBzZXNzaW9uU3RhdGVSZWYKIAogdm9pZCBXS1BhZ2VSZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tUeXBlUmVmIHNlc3Npb25T
dGF0ZVJlZikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgcmVzdG9yZUZyb21TZXNz
aW9uU3RhdGUocGFnZVJlZiwgc2Vzc2lvblN0YXRlUmVmLCB0cnVlKTsKIH0KIAogdm9pZCBXS1Bh
Z2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1R5cGVSZWYgc2Vzc2lvblN0YXRlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRF
RDsKICAgICByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShwYWdlUmVmLCBzZXNzaW9uU3RhdGVSZWYs
IGZhbHNlKTsKIH0KIApAQCAtNTM4LDYgKzU4MSw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRCYWNraW5n
U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0Q3VzdG9tQmFj
a2luZ1NjYWxlRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgY3VzdG9tU2NhbGVGYWN0
b3IpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IoY3VzdG9tU2NhbGVGYWN0b3IpOwogfQogCkBAIC01NDgs
NiArNTkyLDcgQEAgYm9vbCBXS1BhZ2VTdXBwb3J0c1RleHRab29tKFdLUGFnZVJlZiBwYWdlUmVm
KQogCiB2b2lkIFdLUGFnZVNldFRleHRab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3Vi
bGUgem9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIApAQCAtNTU4LDE2ICs2
MDMsMTkgQEAgZG91YmxlIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVm
KQogCiB2b2lkIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3Vi
bGUgem9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIAogdm9pZCBXS1BhZ2VT
ZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgcGFnZVpv
b21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcikKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHBhZ2Va
b29tRmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKIHZvaWQgV0tQYWdlU2V0U2NhbGVGYWN0
b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2NhbGVQYWdlKHNj
YWxlLCB0b0ludFBvaW50KG9yaWdpbikpOwogfQogCkBAIC01NzgsMTEgKzYyNiwxMyBAQCBkb3Vi
bGUgV0tQYWdlR2V0U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdl
U2V0VXNlRml4ZWRMYXlvdXQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZml4ZWQpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VXNlRml4ZWRMYXlv
dXQoZml4ZWQpOwogfQogCiB2b2lkIFdLUGFnZVNldEZpeGVkTGF5b3V0U2l6ZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTaXplIHNpemUpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0Rml4ZWRMYXlvdXRTaXplKHRvSW50U2l6ZShzaXplKSk7CiB9CiAK
QEAgLTU5OCw2ICs2NDgsNyBAQCBXS1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXplKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXModG9MYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKIH0KIApAQCAtNjEzLDYgKzY2
NCw3IEBAIGJvb2wgV0tQYWdlSGFzVmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYp
CiAKIHZvaWQgV0tQYWdlU2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKFdLUGFnZVJlZiBw
YWdlUmVmLCBib29sIHN1cHByZXNzQW5pbWF0aW9ucykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMo
c3VwcHJlc3NBbmltYXRpb25zKTsKIH0KIApAQCAtNjQ4LDYgKzcwMCw3IEBAIGJvb2wgV0tQYWdl
UnViYmVyQmFuZHNBdExlZnQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UnVi
YmVyQmFuZHNBdExlZnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgcnViYmVyQmFuZHNBdExlZnQp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnVi
YmVyQmFuZHNBdExlZnQocnViYmVyQmFuZHNBdExlZnQpOwogfQogCkBAIC02NTgsNiArNzExLDcg
QEAgYm9vbCBXS1BhZ2VSdWJiZXJCYW5kc0F0UmlnaHQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZv
aWQgV0tQYWdlU2V0UnViYmVyQmFuZHNBdFJpZ2h0KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1
YmJlckJhbmRzQXRSaWdodCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRSdWJiZXJCYW5kc0F0UmlnaHQocnViYmVyQmFuZHNBdFJpZ2h0KTsKIH0K
IApAQCAtNjY4LDYgKzcyMiw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdFRvcChXS1BhZ2VS
ZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0VG9wKFdLUGFnZVJlZiBw
YWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRUb3ApCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNBdFRvcChydWJiZXJCYW5kc0F0
VG9wKTsKIH0KIApAQCAtNjc4LDYgKzczMyw3IEBAIGJvb2wgV0tQYWdlUnViYmVyQmFuZHNBdEJv
dHRvbShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRSdWJiZXJCYW5kc0F0Qm90
dG9tKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIHJ1YmJlckJhbmRzQXRCb3R0b20pCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UnViYmVyQmFuZHNB
dEJvdHRvbShydWJiZXJCYW5kc0F0Qm90dG9tKTsKIH0KIApAQCAtNjg4LDYgKzc0NCw3IEBAIGJv
b2wgV0tQYWdlVmVydGljYWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKFdLUGFnZVJlZiBwYWdlUmVm
KQogCiB2b2lkIFdLUGFnZVNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhXS1BhZ2VSZWYg
cGFnZVJlZiwgYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpCiB7CisgICAgQ1JBU0hf
SUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RW5hYmxlVmVydGljYWxSdWJi
ZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyk7CiB9CiAKQEAgLTY5OCwxMSAr
NzU1LDEzIEBAIGJvb2wgV0tQYWdlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJh
bmRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmcpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmcpOwogfQogCiB2b2lkIFdLUGFnZVNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1Bh
Z2VSZWYgcGFnZVJlZiwgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QmFja2dyb3VuZEV4
dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSk7CiB9CiAKQEAgLTcx
Myw2ICs3NzIsNyBAQCBib29sIFdLUGFnZUJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShXS1Bh
Z2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9kZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tQYWdpbmF0aW9uTW9kZSBwYWdpbmF0aW9uTW9kZSkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtb2RlOwogICAgIHN3
aXRjaCAocGFnaW5hdGlvbk1vZGUpIHsKICAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdp
bmF0ZWQ6CkBAIC03NTcsNiArODE3LDcgQEAgV0tQYWdpbmF0aW9uTW9kZSBXS1BhZ2VHZXRQYWdp
bmF0aW9uTW9kZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogdm9pZCBXS1BhZ2VTZXRQYWdpbmF0aW9u
QmVoYXZlc0xpa2VDb2x1bW5zKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGJlaGF2ZXNMaWtlQ29s
dW1ucykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyk7CiB9CiAK
QEAgLTc2Nyw2ICs4MjgsNyBAQCBib29sIFdLUGFnZUdldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxlbmd0aChXS1Bh
Z2VSZWYgcGFnZVJlZiwgZG91YmxlIHBhZ2VMZW5ndGgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKTsKIH0K
IApAQCAtNzc3LDYgKzgzOSw3IEBAIGRvdWJsZSBXS1BhZ2VHZXRQYWdlTGVuZ3RoKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFn
ZVJlZiwgZG91YmxlIGdhcCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKTsKIH0KIApAQCAtNzg3LDYgKzg1MCw3
IEBAIGRvdWJsZSBXS1BhZ2VHZXRHYXBCZXR3ZWVuUGFnZXMoV0tQYWdlUmVmIHBhZ2VSZWYpCiAK
IHZvaWQgV0tQYWdlU2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJl
ZiwgYm9vbCBsaW5lR3JpZEVuYWJsZWQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVu
YWJsZWQpOwogfQogCkBAIC04MTcsNDYgKzg4MSw1NSBAQCBib29sIFdLUGFnZUlzQ29udGVudEVk
aXRhYmxlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiB2b2lkIFdLUGFnZVNldE1haW50YWluc0luYWN0
aXZlU2VsZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIG5ld1ZhbHVlKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5zZXRNYWludGFp
bnNJbmFjdGl2ZVNlbGVjdGlvbihuZXdWYWx1ZSk7CiB9CiAKIHZvaWQgV0tQYWdlQ2VudGVyU2Vs
ZWN0aW9uSW5WaXNpYmxlQXJlYShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+Y2VudGVyU2VsZWN0aW9uSW5W
aXNpYmxlQXJlYSgpOwogfQogCiB2b2lkIFdLUGFnZUZpbmRTdHJpbmdNYXRjaGVzKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdLRmluZE9wdGlvbnMgb3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9J
bXBsKHBhZ2VSZWYpLT5maW5kU3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCks
IHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdLUGFn
ZUdldEltYWdlRm9yRmluZE1hdGNoKFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5k
ZXgpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0
SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV0tQYWdlU2VsZWN0Rmlu
ZE1hdGNoKFdLUGFnZVJlZiBwYWdlUmVmLCBpbnQzMl90IG1hdGNoSW5kZXgpCiB7CisgICAgQ1JB
U0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2VsZWN0RmluZE1hdGNoKG1h
dGNoSW5kZXgpOwogfQogCiB2b2lkIFdLUGFnZUZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJl
ZiktPmZpbmRTdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpLCB0b0ZpbmRPcHRpb25zKG9w
dGlvbnMpLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXS1BhZ2VIaWRlRmluZFVJKFdLUGFn
ZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPmhpZGVGaW5kVUkoKTsKIH0KIAogdm9pZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMo
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ICAgICB0b0ltcGwocGFnZVJlZiktPmNvdW50U3RyaW5nTWF0Y2hlcyh0b0ltcGwoc3RyaW5nKS0+
c3RyaW5nKCksIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQogCiB2
b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9J
Rl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgY2xhc3MgQ29udGV4
dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVD
bGllbnRCYXNlPiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogICAgIHB1YmxpYzoK
QEAgLTk3Myw2ICsxMDQ2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZURpYWdub3MKIAogdm9pZCBXS1Bh
Z2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENs
aWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFz
cyBGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUZpbmRDbGllbnRCYXNlPiwg
cHVibGljIEFQSTo6RmluZENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBG
aW5kQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMDExLDYg
KzEwODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VG
aW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNo
ZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAg
Y2xhc3MgRmluZE1hdGNoZXNDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlRmluZE1h
dGNoZXNDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQgewogICAgIHB1
YmxpYzoKICAgICAgICAgZXhwbGljaXQgRmluZE1hdGNoZXNDbGllbnQoY29uc3QgV0tQYWdlRmlu
ZE1hdGNoZXNDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xMDU0LDE2ICsxMTI5LDE5IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VGaW5kTWF0Y2hlc0NsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJh
c2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1Bh
Z2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNs
aWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0lt
cGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICBjbGFzcyBMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tQYWdlTG9hZGVyQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkxvYWRlckNsaWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBMb2FkZXJDbGllbnQoY29uc3QgV0tQYWdl
TG9hZGVyQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtMTIzNCw2ICsxMzEyLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGll
bnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIFBvbGljeUNsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6
UG9saWN5Q2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBvbGljeUNsaWVu
dChjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKiBjbGllbnQpCkBAIC0xNDkzLDYgKzE1NzIs
NyBAQCB2b2lkIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybVJlc3VsdExpc3RlbmVy
Q2FsbChXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjYwogCiB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tQYWdlVUlDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6VUlDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiBjbGllbnQpCkBAIC0yMTM4LDYgKzIyMTgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VV
SUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0Ns
aWVudAogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7CisgICAg
Q1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IE5hdmlnYXRpb25D
bGllbnQoY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIGNsaWVudCkKQEAgLTI1MDMs
MTYgKzI1ODQsMTggQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi12b2lkIFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQp
Cit2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdl
U3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAg
IGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2Vy
dmVyKG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50Pihj
bGllbnQpKTsKICAgICBlbHNlCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKG51bGxwdHIpOworICAgICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VMb2Fk
U3RhdGVPYnNlcnZlcihudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogeworICAgIENS
QVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdU
Rjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7
CiAgICAgICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBjYWxsYmFjayh0
b0FQSShyZXN1bHQudmFsdWUoKS5nZXQoKSksIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjUzMSw2
ICsyNjE0LDcgQEAgc3RhdGljIHZvaWQgY2FsbFJ1bkphdmFTY3JpcHRCbG9ja0FuZFJlbGVhc2Uo
V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgcmVzdWx0VmEKIAogdm9pZCBXS1BhZ2VSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVfYihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0
UmVmLCBXS1BhZ2VSdW5KYXZhU2NyaXB0QmxvY2sgYmxvY2spCiB7CisgICAgQ1JBU0hfSUZfU1VT
UEVOREVEOwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShwYWdlUmVmLCBzY3Jp
cHRSZWYsIEJsb2NrX2NvcHkoYmxvY2spLCBjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFz
ZSk7CiB9CiAjZW5kaWYKQEAgLTI1NDQsMzEgKzI2MjgsMzcgQEAgc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+IHRvU3RyaW5nQ2FsbGJhY2sodm9pZCogY29udGV4
dCwgdm8KIAogdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXS1Bh
Z2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bih0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tQYWdl
R2V0U291cmNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U291
cmNlRm9yRnJhbWUodG9JbXBsKGZyYW1lUmVmKSwgdG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBj
YWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcoV0tQYWdlUmVm
IHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmdGdW5jdGlv
biBjYWxsYmFjaykKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5nZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFt
ZXM6Ok5vLCB0b1N0cmluZ0NhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQg
V0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGVGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29kZVByb2ZpbGUo
dG9TdHJpbmdDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLUGFnZUdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQs
IFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXRGdW5jdGlvbiBjYWxsYmFjaykKIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KHRvU3RyaW5nQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAog
dm9pZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhRnVuY3Rp
b24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdl
UmVmKS0+Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShbY29udGV4dCwgY2FsbGJhY2tdIChB
UEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0YSksIG51bGxwdHIs
IGNvbnRleHQpOwogICAgIH0pOwpAQCAtMjU3Niw2ICsyNjY2LDcgQEAgdm9pZCBXS1BhZ2VHZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1BhZ2UKIAogdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhRnVuY3Rp
b24gY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShNSFRN
TCkKICAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNNSFRNTERhdGEoW2NvbnRleHQs
IGNhbGxiYWNrXSAoQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGNhbGxiYWNrKHRvQVBJKGRh
dGEpLCBudWxscHRyLCBjb250ZXh0KTsKQEAgLTI1ODksNiArMjY4MCw3IEBAIHZvaWQgV0tQYWdl
R2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwg
V0tQYWdlR2V0Q29uCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJlZiBwYWdlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxsYmFjaykKIHsK
KyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFp
bnQoW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29u
dGV4dCk7CiAgICAgfSk7CkBAIC0yNjI2LDYgKzI3MTgsNyBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VD
b3B5U3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKFdLU3RyaW5nUmVmIGFwcGxp
Y2F0aQogCiB2b2lkIFdLUGFnZVZhbGlkYXRlQ29tbWFuZChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgY29tbWFuZCwgdm9pZCogY29udGV4dCwgV0tQYWdlVmFsaWRhdGVDb21tYW5kQ2Fs
bGJhY2sgY2FsbGJhY2spCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIGF1dG8gY29t
bWFuZE5hbWUgPSB0b0ltcGwoY29tbWFuZCktPnN0cmluZygpOwogICAgIHRvSW1wbChwYWdlUmVm
KS0+dmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBbY29udGV4dCwgY2FsbGJhY2ssIGNvbW1h
bmROYW1lXShib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSkgewogICAgICAgICBjYWxsYmFj
ayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGNvbW1hbmROYW1lKS5wdHIoKSksIGlzRW5hYmxl
ZCwgc3RhdGUsIG51bGxwdHIsIGNvbnRleHQpOwpAQCAtMjYzNCw2ICsyNzI3LDcgQEAgdm9pZCBX
S1BhZ2VWYWxpZGF0ZUNvbW1hbmQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGNvbW1h
bmQsIHZvaWQqIGNvbnRleHQKIAogdm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgY29tbWFuZCkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5leGVjdXRlRWRpdENvbW1hbmQodG9JbXBsKGNvbW1hbmQp
LT5zdHJpbmcoKSk7CiB9CiAKQEAgLTI2NDYsOSArMjc0MCwxMCBAQCBzdGF0aWMgUHJpbnRJbmZv
IHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhjb25zdCBXS1ByaW50SW5mbyYgcHJpbnRJbmZvKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5m
bywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCog
Y29udGV4dCkKK3ZvaWQgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgV0tQYWdlQ29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsK
LSAgICB0b0ltcGwocGFnZSktPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSks
IHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBbY29udGV4dCwgY2FsbGJhY2td
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3Rv
ciwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbikgewor
ICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmlu
dEluZm8pLCBbY29udGV4dCwgY2FsbGJhY2tdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYgcmVjdHMsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmIGNvbXB1dGVkUGFnZU1hcmdpbikgewogICAgICAgICBWZWN0b3I8V0tSZWN0PiB3a1JlY3Rz
KHJlY3RzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgICAgICB3a1JlY3RzW2ldID0gdG9BUEkocmVjdHNbaV0pOwpAQCAt
MjY1NywyMiArMjc1MiwyNSBAQCB2b2lkIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbwogfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi12b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNv
bnRleHQpCit2b2lkIFdLUGFnZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgV0tQYWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRl
eHQpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBw
cmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4
dCwgY2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmlu
dEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJbmZvKSwgZmlyc3QsIGNvdW50LCBbY29udGV4dCwg
Y2FsbGJhY2tdIChBUEk6OkRhdGEqIGRhdGEpIHsKICAgICAgICAgY2FsbGJhY2sodG9BUEkoZGF0
YSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdl
QmVnaW5QcmludGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcmludElu
Zm8gcHJpbnRJbmZvKQordm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8pCiB7Ci0gICAgdG9JbXBs
KHBhZ2UpLT5iZWdpblByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhwcmludEluZm8pKTsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5iZWdpblByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50
SW5mbyhwcmludEluZm8pKTsKIH0KIAotdm9pZCBXS1BhZ2VFbmRQcmludGluZyhXS1BhZ2VSZWYg
cGFnZSkKK3ZvaWQgV0tQYWdlRW5kUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAg
dG9JbXBsKHBhZ2UpLT5lbmRQcmludGluZygpOworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPmVuZFByaW50aW5nKCk7CiB9CiAKIGJvb2wgV0tQYWdlR2V0SXND
b250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdlKQpAQCAtMjY4MCw5ICsyNzc4LDEw
IEBAIGJvb2wgV0tQYWdlR2V0SXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFdLUGFnZVJlZiBwYWdl
KQogICAgIHJldHVybiB0b0ltcGwocGFnZSktPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpOwog
fQogCi12b2lkIFdLUGFnZVNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oV0tQYWdlUmVmIHBhZ2Us
IGJvb2wgY29udHJvbGxlZCkKK3ZvaWQgV0tQYWdlU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihX
S1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBjb250cm9sbGVkKQogewotICAgIHRvSW1wbChwYWdlKS0+
c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKTsKKyAgICBDUkFTSF9JRl9TVVNQ
RU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNv
bnRyb2xsZWQpOwogfQogCiBib29sIFdLUGFnZUdldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oV0tQ
YWdlUmVmIHBhZ2UpCkBAIC0yNjk1LDIzICsyNzk0LDI2IEBAIGJvb2wgV0tQYWdlR2V0QWxsb3dz
UmVtb3RlSW5zcGVjdGlvbihXS1BhZ2VSZWYgcGFnZSkKICNlbmRpZiAgICAKIH0KIAotdm9pZCBX
S1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBib29sIGFsbG93
KQordm9pZCBXS1BhZ2VTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
LCBib29sIGFsbG93KQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICB0b0ltcGwocGFnZSktPnNldEFsbG93c1JlbW90ZUluc3BlY3Rp
b24oYWxsb3cpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlv
bihhbGxvdyk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFS
QU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKGFsbG93KTsKICNlbmRpZgogfQogCi12b2lk
IFdLUGFnZVNldE1lZGlhVm9sdW1lKFdLUGFnZVJlZiBwYWdlLCBmbG9hdCB2b2x1bWUpCit2b2lk
IFdLUGFnZVNldE1lZGlhVm9sdW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBmbG9hdCB2b2x1bWUpCiB7
Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYVZvbHVtZSh2b2x1bWUpOyAgICAKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRNZWRpYVZvbHVtZSh2b2x1
bWUpOwogfQogCi12b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhTXV0
ZWRTdGF0ZSBtdXRlZFN0YXRlKQordm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tNZWRpYU11dGVkU3RhdGUgbXV0ZWRTdGF0ZSkKIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5E
RUQ7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIGNvcmVTdGF0
ZTsKIAogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFBdWRpb011dGVkKQpAQCAtMjcyMSwx
MiArMjgyMywxMyBAQCB2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlh
TXV0ZWRTdGF0ZSBtdXRlZFN0YXRlKQogICAgIGlmIChtdXRlZFN0YXRlICYga1dLTWVkaWFTY3Jl
ZW5DYXB0dXJlTXV0ZWQpCiAgICAgICAgIGNvcmVTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TXV0ZWRTdGF0ZTo6U2NyZWVuQ2FwdHVyZUlzTXV0ZWQpOwogCi0gICAgdG9JbXBsKHBh
Z2UpLT5zZXRNdXRlZChjb3JlU3RhdGUpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TXV0ZWQo
Y29yZVN0YXRlKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFn
ZVJlZiBwYWdlLCBib29sIGVuYWJsZWQpCit2b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVuYWJs
ZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocGFnZSkt
PnNldE1lZGlhQ2FwdHVyZUVuYWJsZWQoZW5hYmxlZCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVE
OworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFibGVkKTsK
IH0KIAogYm9vbCBXS1BhZ2VHZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlKQpA
QCAtMjczNCwzMCArMjgzNywzMyBAQCBib29sIFdLUGFnZUdldE1lZGlhQ2FwdHVyZUVuYWJsZWQo
V0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+bWVkaWFDYXB0dXJlRW5h
YmxlZCgpOwogfQogCi12b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBh
Z2UpCit2b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAg
dG9JbXBsKHBhZ2UpLT5kaWRBbGxvd1BvaW50ZXJMb2NrKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5kaWRBbGxvd1BvaW50ZXJMb2NrKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
KyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVh
clVzZXJNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VDbGVhclVzZXJNZWRp
YVN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJVc2VyTWVkaWFT
dGF0ZSgpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwog
I2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlRGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdl
KQordm9pZCBXS1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgdG9J
bXBsKHBhZ2UpLT5kaWREZW55UG9pbnRlckxvY2soKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRp
ZERlbnlQb2ludGVyTG9jaygpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAg
VU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogI2VuZGlmCiB9CiAKQEAgLTI3OTAsMTYgKzI4OTYsMTgg
QEAgV0tGcmFtZVJlZiBXS1BhZ2VMb29rVXBGcmFtZUZyb21IYW5kbGUoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLRnJhbWVIYW5kbGVSZWYgaGFuZGwKIAogdm9pZCBXS1BhZ2VTZXRNYXlTdGFydE1lZGlh
V2hlbkluV2luZG93KFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIG1heVN0YXJ0TWVkaWEpCiB7Cisg
ICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0TWF5U3RhcnRN
ZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKTsKIH0KIAogCi12b2lkIFdLUGFnZVNlbGVj
dENvbnRleHRNZW51SXRlbShXS1BhZ2VSZWYgcGFnZSwgV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRl
bSkKK3ZvaWQgV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0NvbnRleHRNZW51SXRlbVJlZiBpdGVtKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZSktPmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKCh0b0ltcGwoaXRlbSktPmRhdGEoKSkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoKHRvSW1wbChpdGVtKS0+ZGF0YSgpKSk7CiAjZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAg
VU5VU0VEX1BBUkFNKGl0ZW0pOwogI2VuZGlmCiB9CkBAIC0yODIxLDggKzI5MjksOSBAQCBXS1Nj
cm9sbFBpbm5pbmdCZWhhdmlvciBXS1BhZ2VHZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV0tQYWdl
UmVmIHBhZ2UpCiAgICAgcmV0dXJuIGtXS1Njcm9sbFBpbm5pbmdCZWhhdmlvckRvTm90UGluOwog
fQogCi12b2lkIFdLUGFnZVNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSwg
V0tTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKK3ZvaWQgV0tQYWdlU2V0U2Nyb2xsUGlu
bmluZ0JlaGF2aW9yKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1Njcm9sbFBpbm5pbmdCZWhhdmlvciBw
aW5uaW5nKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICBTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgY29yZVBpbm5pbmcgPSBTY3JvbGxQaW5uaW5nQmVoYXZpb3I6OkRvTm90UGluOwogCiAg
ICAgc3dpdGNoIChwaW5uaW5nKSB7CkBAIC0yODM5LDcgKzI5NDgsNyBAQCB2b2lkIFdLUGFnZVNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXS1BhZ2VSZWYgcGFnZSwgV0tTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgcGlubgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0g
ICAgdG9JbXBsKHBhZ2UpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoY29yZVBpbm5pbmcpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKGNvcmVQaW5uaW5n
KTsKIH0KIAogYm9vbCBXS1BhZ2VHZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFnZVJlZiBwYWdlKQpA
QCAtMjg0Nyw5ICsyOTU2LDEwIEBAIGJvb2wgV0tQYWdlR2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1Bh
Z2VSZWYgcGFnZSkKICAgICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5hZGRzVmlzaXRlZExpbmtzKCk7
CiB9CiAKLXZvaWQgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhXS1BhZ2VSZWYgcGFnZSwgYm9v
bCBhZGRzVmlzaXRlZExpbmtzKQordm9pZCBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFdLUGFn
ZVJlZiBwYWdlUmVmLCBib29sIGFkZHNWaXNpdGVkTGlua3MpCiB7Ci0gICAgdG9JbXBsKHBhZ2Up
LT5zZXRBZGRzVmlzaXRlZExpbmtzKGFkZHNWaXNpdGVkTGlua3MpOworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEFkZHNWaXNpdGVkTGlua3MoYWRkc1Zp
c2l0ZWRMaW5rcyk7CiB9CiAKIGJvb2wgV0tQYWdlSXNQbGF5aW5nQXVkaW8oV0tQYWdlUmVmIHBh
Z2UpCkBAIC0yODg0LDIwICsyOTk0LDIzIEBAIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0
YXRlKFdLUGFnZVJlZiBwYWdlKQogCiB2b2lkIFdLUGFnZUNsZWFyV2hlZWxFdmVudFRlc3RNb25p
dG9yKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0
b0ltcGwocGFnZVJlZiktPmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQg
V0tQYWdlQ2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwg
dm9pZCogY29udGV4dCwgV0tQYWdlUG9zdFByZXNlbnRhdGlvblVwZGF0ZUZ1bmN0aW9uIGNhbGxi
YWNrKQogeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICAgICB0b0ltcGwocGFnZVJlZiktPmNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW2NvbnRleHQsIGNhbGxiYWNrXShXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IgIT0g
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3Jl
YXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgaWdub3Jlc1Zp
ZXdwb3J0U2NhbGVMaW1pdHMpCit2b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGlt
aXRzKFdLUGFnZVJlZiBwYWdlUmVmLCBib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKQog
eworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKLSAg
ICB0b0ltcGwocGFnZSktPnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGlnbm9yZXNWaWV3cG9y
dFNjYWxlTGltaXRzKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlKGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKTsKICNlbmRpZgogfQogCkBAIC0yOTA3
LDkzICszMDIwLDEwNSBAQCBQcm9jZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQ
YWdlUmVmIHBhZ2UpCiB9CiAKICNpZmRlZiBfX0JMT0NLU19fCi12b2lkIFdLUGFnZUdldEFwcGxp
Y2F0aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5p
ZmVzdEJsb2NrIGJsb2NrKQordm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykK
IHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQotICAgIHRvSW1wbChwYWdlKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgewor
ICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgewogICAg
ICAgICBibG9jaygpOwogICAgIH0pOwogI2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7
CiAgICAgYmxvY2soKTsKICNlbmRpZiAvLyBub3QgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQogfQogI2VuZGlmCiAKLXZvaWQgV0tQYWdlRHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VEdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBj
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VEdW1wUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUR1bXBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0g
ICAgdG9JbXBsKHBhZ2UpLT5kdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KSB7
CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZHVtcFByaXZh
dGVDbGlja01lYXN1cmVtZW50KFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3Ry
aW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgewogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6
OnRvQVBJKHByaXZhdGVDbGlja01lYXN1cmVtZW50LmltcGwoKSksIGNhbGxiYWNrQ29udGV4dCk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
S1BhZ2VSZWYgcGFnZSwgV0tQYWdlQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZ1bmN0aW9u
IGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZUNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQog
ewotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2FsbGJh
Y2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NVU1BFTkRFRDsKKyAgICB0
b0ltcGwocGFnZVJlZiktPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBib29sIHZhbHVlLCBXS1BhZ2VTZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgYm9v
bCB2YWx1ZSwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9y
VGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAg
dG9JbXBsKHBhZ2UpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JU
ZXN0aW5nKHZhbHVlLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFsdWUsIFtjYWxsYmFja0NvbnRleHQsIGNh
bGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFj
aywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0gICAg
dG9JbXBsKHBhZ2UpLT5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5tYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoW2NhbGxiYWNrQ29udGV4dCwg
Y2FsbGJhY2tdICgpIHsKICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKICAgICB9
KTsKIH0KIAotdm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9u
UmVzdGFydChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0
KQordm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFy
dChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQog
ewotICAgIHRvSW1wbChwYWdlKS0+c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lv
blJlc3RhcnQoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydChbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAg
ICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVS
TFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZv
clRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAg
IHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29u
dGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0
LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAg
IH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nRnVu
Y3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhV
UkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9T
VVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJl
ZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxsYmFjayhj
YWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFn
ZSwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tQYWdlU2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nRnVu
Y3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3ZvaWQgV0tQYWdlU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJM
LCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0Zv
clRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAg
IHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoc291cmNlVVJMKSksIFVSTChV
UkwoKSwgdG9XVEZTdHJpbmcoZGVzdGluYXRpb25VUkwpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2Fs
bGJhY2tdICgpIHsKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rp
bmcoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhzb3VyY2VVUkwpKSwgVVJMKFVSTCgpLCB0b1dURlN0
cmluZyhkZXN0aW5hdGlvblVSTCkpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewog
ICAgICAgICBjYWxsYmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdL
UGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFn
ZVJlZiBwYWdlLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdL
UGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7Ci0g
ICAgdG9JbXBsKHBhZ2UpLT5tYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgeworICAgIENSQVNIX0lGX1NV
U1BFTkRFRDsKKyAgICB0b0ltcGwocGFnZVJlZiktPm1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgV0tT
dHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFj
a0NvbnRleHQpCit2b2lkIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJp
bmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tTdHJpbmdSZWYga2V5
SUQsIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmdGdW5jdGlvbiBj
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0
UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyh0b1dURlN0cmluZyh1bmxpbmthYmxl
VG9rZW4pLCB0b1dURlN0cmluZyhzZWNyZXRUb2tlbiksIHRvV1RGU3RyaW5nKHNpZ25hdHVyZSks
IHRvV1RGU3RyaW5nKGtleUlEKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAg
ICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQQ01GcmF1ZFBy
ZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKHVubGlua2FibGVUb2tlbiksIHRv
V1RGU3RyaW5nKHNlY3JldFRva2VuKSwgdG9XVEZTdHJpbmcoc2lnbmF0dXJlKSwgdG9XVEZTdHJp
bmcoa2V5SUQpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewogICAgICAgICBjYWxs
YmFjayhjYWxsYmFja0NvbnRleHQpOwogICAgIH0pOwogfQogCi12b2lkIFdLUGFnZVNldE1vY2tD
YW1lcmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZSwgdWludDY0X3Qgb3JpZW50YXRpb24pCit2
b2lkIFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1BhZ2VSZWYgcGFnZVJlZiwgdWlu
dDY0X3Qgb3JpZW50YXRpb24pCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHRvSW1wbChwYWdlKS0+c2V0
T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOworICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUob3JpZW50YXRpb24pOwogI2VuZGlm
CiB9CiAKQEAgLTMwMDYsMzYgKzMxMzEsNDAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoV0tQYWdlUmVmKQogI2VuZGlmCiB9CiAK
LXZvaWQgV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlLCBXS1Bh
Z2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQordm9pZCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0Z1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOwogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5nZXRM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5n
ZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zID0gV1RGOjptYXAoZG9tYWlucywgW10oYXV0byYg
ZG9tYWluKSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0
cmluZzo6Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAg
ICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlu
cykpLnB0cigpKSwgY2FsbGJhY2tDb250ZXh0KTsKICAgICB9KTsKICNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBjYWxsYmFjayhu
dWxscHRyLCBjYWxsYmFja0NvbnRleHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgV0tQYWdlQ2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2UpCit2b2lkIFdLUGFnZUNsZWFy
TG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFdLUGFnZVJlZiBwYWdlUmVmKQogeworICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IHRvSW1wbChwYWdlKS0+Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCk7CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAjZW5kaWYK
IH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2UsIGRvdWJsZSBkZWxheSkKK3ZvaWQgV0tQYWdlU2V0TWVkaWFDYXB0dXJl
UmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgZGVsYXkp
CiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNv
bmRzKGRlbGF5KSk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyhkZWxheSkpOwogfQogCi12
b2lkIFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoV0tQYWdlUmVm
IHBhZ2UpCit2b2lkIFdLUGFnZURpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rpbmco
V0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2UpLT5kaXNwYXRjaEFjdGl2aXR5
U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCk7CisgICAgQ1JBU0hfSUZfU1VTUEVOREVEOworICAgIHRv
SW1wbChwYWdlUmVmKS0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggNjU4MjQxM2FjYWNlMWQzNTNiZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4uMGViNWIzMjI5ZjNh
ZWZkMTdiZjZiNTIyYzU0NDI2ZGJkZTEyOWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xOTksNiArMTk5LDkgQEAgc3RhdGljIGNv
bnN0IEJPT0wgZGVmYXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBmaXJzdFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0g
MHhBMDAwMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisjZGVmaW5lIFRIUk9X
X0lGX1NVU1BFTkRFRCBpZiAoVU5MSUtFTFkoX3BhZ2UgJiYgX3BhZ2UtPmlzU3VzcGVuZGVkKCkp
KSBcCisgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0
aW9uIGZvcm1hdDpAIlRoZSBXS1dlYlZpZXcgaXMgc3VzcGVuZGVkIl0KKwogUmV0YWluUHRyPE5T
RXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtNzE4LDExICs3MjEsMTMgQEAgLSAo
dm9pZClfc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6KGlkPF9XS1Jlc291cmNlTG9hZERlbGVnYXRl
PilkZWxlZ2F0ZQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBl
cihfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVzdCkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKils
b2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICop
cmVhZEFjY2Vzc1VSTAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIVtVUkwg
aXNGaWxlVVJMXSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50
RXhjZXB0aW9uIGZvcm1hdDpAIiVAIGlzIG5vdCBhIGZpbGUgVVJMIiwgVVJMXTsKIApAQCAtNzM0
LDYgKzczOSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlVVJMOihOU1VSTCAqKVVSTCBh
bGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkCiAKIC0gKFdLTmF2aWdhdGlvbiAq
KWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VV
UkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgTlNEYXRhICpkYXRhID0gW3N0cmlu
ZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAKICAgICByZXR1cm4g
W3NlbGYgbG9hZERhdGE6ZGF0YSBNSU1FVHlwZTpAInRleHQvaHRtbCIgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOkAiVVRGLTgiIGJhc2VVUkw6YmFzZVVSTF07CkBAIC03NDEsMTEgKzc0NywxMyBAQCAt
IChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWREYXRhOihOU0RhdGEg
KilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFt
ZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNl
VVJMCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdl
LT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNv
bHV0ZVN0cmluZykpOwogfQogCiAtICh2b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9h
ZCAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBf
cGFnZS0+ZG93bmxvYWRSZXF1ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3dubG9hZCkgewogICAgICAgICBp
ZiAoZG93bmxvYWQpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25s
b2FkKSk7CkBAIC03NTYsNiArNzY0LDcgQEAgLSAodm9pZClzdGFydERvd25sb2FkVXNpbmdSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2kKIAogLSAo
dm9pZClyZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHRO
UyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3Vt
ZURhdGEgZXJyb3I6bmlsXSk7CiAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9s
aWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOwogICAgIE5TRGljdGlv
bmFyeSAqZGljdGlvbmFyeSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwg
W05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VS
TCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNo
aXZlUm9vdE9iamVjdEtleSJdOwpAQCAtNzgyLDYgKzc5MSw3IEBAIC0gKHZvaWQpcmVzdW1lRG93
bmxvYWRGcm9tUmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0pKTsK
IH0KIApAQCAtODQwLDYgKzg1MCw3IEBAIC0gKEJPT0wpY2FuR29Gb3J3YXJkCiAKIC0gKFdLTmF2
aWdhdGlvbiAqKWdvQmFjawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoc2Vs
Zi5fc2FmZUJyb3dzaW5nV2FybmluZykKICAgICAgICAgcmV0dXJuIFtzZWxmIHJlbG9hZF07CiAg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvQmFjaygpKTsKQEAgLTg0NywxMSArODU4LDEzIEBA
IC0gKFdLTmF2aWdhdGlvbiAqKWdvQmFjawogCiAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdv
Rm9yd2FyZCgpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9h
ZE9wdGlvbnM7CiAgICAgaWYgKGxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpG
aXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9yKSkKICAgICAgICAgcmVsb2FkT3B0aW9u
cy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CkBAIC04NjEsMjYgKzg3
NCwzMSBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVs
b2FkRnJvbU9yaWdpbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3Jh
cHBlcihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbikpOwog
fQogCiAtICh2b2lkKXN0b3BMb2FkaW5nCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5zdG9wTG9hZGluZygpOwogfQogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3lu
Y0Z1bmN0aW9uOk5PIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNl
ckdlc3R1cmU6WUVTIGluRnJhbWU6bmlsIGluV29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClldmFs
dWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBpbkZyYW1lOihXS0Zy
YW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRX
b3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRl
SmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291cmNl
VVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZy
YW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5k
bGVyXTsKIH0KIAogLSAodm9pZCljYWxsQXN5bmNKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFT
Y3JpcHRTdHJpbmcgYXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJn
dW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29u
dGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwg
TlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0Fz
eW5jRnVuY3Rpb246WUVTIHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6YXJndW1lbnRz
IGZvcmNlVXNlckdlc3R1cmU6WUVTIGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCkBAIC05MjAsNiArOTM4
LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKIAogLSAodm9p
ZCljbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CkBAIC05MzYsNiArOTU1LDcgQEAgLSAodm9pZCljbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dp
dGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGkKIAogLSAodm9pZClw
YXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICgh
Y29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgX3BhZ2UtPnBhdXNlQWxsTWVkaWFQbGF5YmFj
ayhbXSB7IH0pOwogICAgICAgICByZXR1cm47CkBAIC05NDYsNiArOTY2LDcgQEAgLSAodm9pZClw
YXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25IYW4KIAogLSAodm9pZClzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOihC
T09MKXN1c3BlbmRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFjb21wbGV0aW9u
SGFuZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CiAKQEAgLTk3Niw2
ICs5OTcsNyBAQCBzdGF0aWMgV0tNZWRpYVBsYXliYWNrU3RhdGUgdG9XS01lZGlhUGxheWJhY2tT
dGF0ZShXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSBtZQogCiAtICh2b2lkKXJlcXVlc3RNZWRp
YVBsYXliYWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTWVkaWFQbGF5
YmFja1N0YXRlKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMDYs
NiArMTAyOCw3IEBAIC0gKFdLTWVkaWFDYXB0dXJlU3RhdGUpbWljcm9waG9uZUNhcHR1cmVTdGF0
ZQogCiAtICh2b2lkKXNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3Rh
dGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmICghY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9OwogCkBAIC0xMDI3LDYgKzEw
NTAsNyBAQCAtICh2b2lkKXNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJl
U3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KAogCiAtICh2b2lkKXNldENhbWVyYUNhcHR1
cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH07CiAKQEAgLTEwNDgsNiArMTA3Miw3IEBAIC0gKHZvaWQpc2V0Q2FtZXJhQ2FwdHVy
ZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aFNvdXJjZVVSTDoo
TlNVUkwgKilzb3VyY2VVUkwgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUg
aW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbldvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOwpAQCAtMTEwOSw2ICsxMTM0LDcg
QEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJp
bmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWEKIAogLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRp
b24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQ29jb2FJbWFnZSAqLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIGNvbnN0ZXhw
ciBib29sIHNuYXBzaG90RmFpbGVkVHJhY2VWYWx1ZSA9IGZhbHNlOwogICAgIHRyYWNlUG9pbnQo
VGFrZVNuYXBzaG90U3RhcnQpOwogCkBAIC0xMTgyLDYgKzEyMDgsNyBAQCAtICh2b2lkKXRha2VT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBz
aG90Q29uZmlndQogCiAtICh2b2lkKXNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1
cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBfaW1wbC0+c2V0QWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9u
R2VzdHVyZXMpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEyMjAsNiArMTI0Nyw3
IEBAIC0gKE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50CiAKIC0gKHZvaWQpc2V0Q3VzdG9tVXNl
ckFnZW50OihOU1N0cmluZyAqKWN1c3RvbVVzZXJBZ2VudAogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+c2V0Q3VzdG9tVXNlckFnZW50KGN1c3RvbVVzZXJBZ2VudCk7CiB9
CiAKQEAgLTEyMzQsNiArMTI2Miw3IEBAIC0gKEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKIAogLSAo
dm9pZClzZXRBbGxvd3NMaW5rUHJldmlldzooQk9PTClhbGxvd3NMaW5rUHJldmlldwogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgX2ltcGwtPnNldEFs
bG93c0xpbmtQcmV2aWV3KGFsbG93c0xpbmtQcmV2aWV3KTsKICAgICByZXR1cm47CkBAIC0xMjU1
LDYgKzEyODQsNyBAQCAtICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09MKWFsbG93c0xp
bmtQcmV2aWV3CiAKIC0gKHZvaWQpc2V0UGFnZVpvb206KENHRmxvYXQpcGFnZVpvb20KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Va
b29tKTsKIH0KIApAQCAtMTI3OSw2ICsxMzA5LDcgQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6
OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UK
IAogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJhdGlv
bjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRo
TWF0Y2hGb3VuZDpOT10pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI5Niw2ICsxMzI3
LDcgQEAgKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQogCiAt
ICh2b2lkKXNldE1lZGlhVHlwZTooTlNTdHJpbmcgKiltZWRpYVN0eWxlCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRPdmVycmlkZGVuTWVkaWFUeXBlKG1lZGlhU3R5
bGUpOwogfQogCkBAIC0xMzExLDYgKzEzNDMsNyBAQCAtIChpZClpbnRlcmFjdGlvblN0YXRlCiAK
IC0gKHZvaWQpc2V0SW50ZXJhY3Rpb25TdGF0ZTooaWQpaW50ZXJhY3Rpb25TdGF0ZQogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoIVsoaWQpaW50ZXJhY3Rpb25TdGF0ZSBpc0tp
bmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzM1LDYg
KzEzNjgsNyBAQCAtIChVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiAKIC0gKHZvaWQpc2V0QWxs
b3dzTWFnbmlmaWNhdGlvbjooQk9PTClhbGxvd3NNYWduaWZpY2F0aW9uCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIF9pbXBsLT5zZXRBbGxvd3NNYWduaWZpY2F0aW9uKGFsbG93c01h
Z25pZmljYXRpb24pOwogfQogCkBAIC0xMzQ1LDExICsxMzc5LDEzIEBAIC0gKEJPT0wpYWxsb3dz
TWFnbmlmaWNhdGlvbgogCiAtICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWduaWZp
Y2F0aW9uIGNlbnRlcmVkQXRQb2ludDooTlNQb2ludClwb2ludAogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBfaW1wbC0+c2V0TWFnbmlmaWNhdGlvbihtYWduaWZpY2F0aW9uLCBOU1Bv
aW50VG9DR1BvaW50KHBvaW50KSk7CiB9CiAKIC0gKHZvaWQpc2V0TWFnbmlmaWNhdGlvbjooZG91
YmxlKW1hZ25pZmljYXRpb24KIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX2ltcGwt
PnNldE1hZ25pZmljYXRpb24obWFnbmlmaWNhdGlvbik7CiB9CiAKQEAgLTEzNjAsNiArMTM5Niw3
IEBAIC0gKGRvdWJsZSltYWduaWZpY2F0aW9uCiAKIC0gKE5TUHJpbnRPcGVyYXRpb24gKilwcmlu
dE9wZXJhdGlvbldpdGhQcmludEluZm86KE5TUHJpbnRJbmZvICopcHJpbnRJbmZvCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogICAgIGlmIChhdXRvIHdlYkZyYW1lUHJveHkgPSBfcGFnZS0+
bWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBfaW1wbC0+cHJpbnRPcGVyYXRpb25XaXRoUHJp
bnRJbmZvKHByaW50SW5mbywgKndlYkZyYW1lUHJveHkpOwogICAgIHJldHVybiBuaWw7CkBAIC0x
NTI3LDYgKzE1NjQsNyBAQCAtIChPcHRpb25hbDxCT09MPilfcmVzb2x1dGlvbkZvclNoYXJlU2hl
ZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZwogCiAtICh2b2lkKWNyZWF0ZVBERldpdGhD
b25maWd1cmF0aW9uOihXS1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKnBkZkRvY3VtZW50RGF0YSwgTlNFcnJvciAq
ZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOwogICAgIGlmIChhdXRvIG1haW5GcmFt
ZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKICAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJh
bWVJRCgpOwpAQCAtMTU1Miw2ICsxNTkwLDcgQEAgLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmln
dXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGUKIAog
LSAodm9pZCljcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPmdldFdlYkFyY2hpdmVPZkZyYW1lKF9wYWdlLT5tYWlu
RnJhbWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBw
ZXIoZGF0YSksIG5pbCk7CiAgICAgfSk7CkBAIC0xNjMzLDE3ICsxNjcyLDIwIEBAIC0gKHZvaWQp
X2RpZENoYW5nZUVkaXRvclN0YXRlCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11bGF0ZWRS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICop
cmVzcG9uc2UgcmVzcG9uc2VEYXRhOihOU0RhdGEgKilkYXRhCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkU2ltdWxhdGVkUmVxdWVzdChy
ZXF1ZXN0LCByZXNwb25zZSwgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRl
cyksIGRhdGEubGVuZ3RoIH0pKTsKIH0KIAogLy8gRklYTUUoMjIzNjU4KTogUmVtb3ZlIHRoaXMg
b25jZSBhZG9wdGVycyBoYXZlIG1vdmVkIHRvIHRoZSBmaW5hbCBBUEkuCiAtIChXS05hdmlnYXRp
b24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVz
cG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSByZXNwb25zZURhdGE6KE5TRGF0YSAqKWRh
dGEKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIFtzZWxmIGxvYWRTaW11
bGF0ZWRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgcmVzcG9uc2VEYXRhOmRhdGFd
OwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCByZXNwb25zZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIGF1dG8gcmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJpbmcubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6QCJVVEYtOCJdKTsKIApAQCAtMTY1MywxMSArMTY5NSwxMyBAQCAtIChX
S05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCByZXNwb25zZUhUTUxTdHJpbgogLy8gRklYTUUoMjIzNjU4KTogUmVtb3ZlIHRoaXMgb25jZSBh
ZG9wdGVycyBoYXZlIG1vdmVkIHRvIHRoZSBmaW5hbCBBUEkuCiAtIChXS05hdmlnYXRpb24gKils
b2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2VI
VE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICByZXR1cm4gW3NlbGYgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZUhU
TUxTdHJpbmc6c3RyaW5nXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAq
KXJlYWRBY2Nlc3NVUkwKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgYXV0byBVUkwg
PSByZXF1ZXN0LlVSTDsKIAogICAgIGlmICghW1VSTCBpc0ZpbGVVUkxdKQpAQCAtMTY4Nyw3ICsx
NzMxLDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tQcml2YXRlKQogCiAjaWYgUExB
VEZPUk0oTUFDKQogCi0jZGVmaW5lIFdFQkNPUkVfUFJJVkFURV9DT01NQU5EKGNvbW1hbmQpIC0g
KHZvaWQpXyMjY29tbWFuZDooaWQpc2VuZGVyIHsgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgj
Y29tbWFuZCAjIyBfcyk7IH0KKyNkZWZpbmUgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoY29tbWFu
ZCkgLSAodm9pZClfIyNjb21tYW5kOihpZClzZW5kZXIgeyBUSFJPV19JRl9TVVNQRU5ERUQ7IF9w
YWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CiAKIFdFQkNPUkVfUFJJ
VkFURV9DT01NQU5EKGFsaWduQ2VudGVyKQogV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25K
dXN0aWZpZWQpCkBAIC0xNzA2LDIxICsxNzUwLDI1IEBAIFdFQkNPUkVfUFJJVkFURV9DT01NQU5E
KHBhc3RlQW5kTWF0Y2hTdHlsZSkKIAogLSAodm9pZClfdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQp
c2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5leGVjdXRlRWRp
dENvbW1hbmQoInN0cmlrZXRocm91Z2giX3MpOwogfQogCiAtICh2b2lkKV9pbmNyZWFzZUxpc3RM
ZXZlbDooaWQpc2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5p
bmNyZWFzZUxpc3RMZXZlbCgpOwogfQogCiAtICh2b2lkKV9kZWNyZWFzZUxpc3RMZXZlbDooaWQp
c2VuZGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5kZWNyZWFzZUxp
c3RMZXZlbCgpOwogfQogCiAtICh2b2lkKV9jaGFuZ2VMaXN0VHlwZTooaWQpc2VuZGVyCiB7Cisg
ICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5jaGFuZ2VMaXN0VHlwZSgpOwogfQog
CkBAIC0xNzcyLDYgKzE4MjAsNyBAQCAtIChDR1NpemUpX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHMKIAogLSAodm9pZClfc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czoo
Q0dTaXplKXZpZXdwb3J0U2l6ZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRv
IHZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMgPSBXZWJDb3JlOjpJbnRTaXplKHZpZXdwb3J0
U2l6ZSk7CiAgICAgaWYgKHZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMuaXNFbXB0eSgpKQog
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiVmlld3BvcnQgc2l6ZSBzaG91bGQgbm90IGJlIGVtcHR5Il07CkBAIC0xNzkzLDYgKzE4
NDIsNyBAQCAtIChfV0tJbnNwZWN0b3IgKilfaW5zcGVjdG9yCiAKIC0gKHZvaWQpX2RpZEVuYWJs
ZUJyb3dzZXJFeHRlbnNpb25zOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4g
KilleHRlbnNpb25JRFRvTmFtZU1hcAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiB0cmFuc2Zvcm1lZDsKICAgICB0cmFuc2Zvcm1lZC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbklEVG9OYW1lTWFwLmNvdW50KTsKICAgICBbZXh0
ZW5zaW9uSURUb05hbWVNYXAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOlsmXShO
U1N0cmluZyAqZXh0ZW5zaW9uSUQsIE5TU3RyaW5nICpleHRlbnNpb25OYW1lLCBCT09MICopIHsK
QEAgLTE4MDMsNiArMTg1Myw3IEBAIC0gKHZvaWQpX2RpZEVuYWJsZUJyb3dzZXJFeHRlbnNpb25z
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilleHRlCiAKIC0gKHZvaWQp
X2RpZERpc2FibGVCcm93c2VyRXh0ZW5zaW9uczooTlNTZXQ8TlNTdHJpbmcgKj4gKilleHRlbnNp
b25JRHMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IHRy
YW5zZm9ybWVkOwogICAgIHRyYW5zZm9ybWVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXh0ZW5z
aW9uSURzLmNvdW50KTsKICAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb25JRCBpbiBleHRlbnNp
b25JRHMpCkBAIC0xODUxLDYgKzE5MDIsNyBAQCAtIChCT09MKV9pc0VkaXRhYmxlCiAKIC0gKHZv
aWQpX3NldEVkaXRhYmxlOihCT09MKWVkaXRhYmxlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogICAgIGJvb2wgd2FzRWRpdGFibGUgPSBfcGFnZS0+aXNFZGl0YWJsZSgpOwogICAgIF9wYWdl
LT5zZXRFZGl0YWJsZShlZGl0YWJsZSk7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTg2OCw2ICsx
OTIwLDcgQEAgLSAodm9pZClfc2V0RWRpdGFibGU6KEJPT0wpZWRpdGFibGUKIAogLSAodm9pZClf
ZXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6KE5TU3RyaW5n
ICopYXJndW1lbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbgogeworICAg
IFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1h
bmQsIGFyZ3VtZW50LCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbildIHsKICAgICAgICAgaWYgKGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKQogICAgICAg
ICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soWUVTKTsKQEAgLTE5MDMsNiArMTk1Niw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPj4gY3JlYXRlVXNl
ckluZm8oY29uc3QgT3B0aW9uYWw8V2ViCiAKIC0gKHZvaWQpX3N0YXJ0VGV4dE1hbmlwdWxhdGlv
bnNXaXRoQ29uZmlndXJhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gKilj
b25maWd1cmF0aW9uIGNvbXBsZXRpb246KHZvaWQoXikoKSljb21wbGV0aW9uSGFuZGxlcgogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICB1c2luZyBFeGNsdXNpb25SdWxlID0gV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU7CiAKICAgICBpZiAo
IV90ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgfHwgIV9wYWdlKSB7CkBAIC0xOTY3LDYgKzIwMjEs
NyBAQCBzdGF0aWMgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OlRva2VuSWRl
bnRpZmllciBjb3JlVGV4dE1hbmlwdWxhdGlvbgogCiAtICh2b2lkKV9jb21wbGV0ZVRleHRNYW5p
cHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopaXRlbSBjb21wbGV0aW9uOih2b2lk
KF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7CiAgICAgaWYgKCFfcGFnZSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwMjQsNiArMjA3OSw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNBcnJheT4gd2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5TQXJyYXk8X1dLVGV4dE1hbmlw
dWxhdGlvbkl0CiAKIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihO
U0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopaXRlbXMgY29tcGxldGlvbjoodm9p
ZCheKShOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFfcGFnZSkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlRmFpbHVyZVNldEZvckFsbFRleHRNYW5pcHVsYXRpb25JdGVtcyhpdGVt
cykuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0yMDUxLDYgKzIxMDcsNyBAQCAtICh2b2lk
KV9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1
bGF0aW9uSXRlbSAqPiAqKQogCiAtICh2b2lkKV90YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb246
KGlkKXNlbmRlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgW3NlbGYgX3Rha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbkludGVybmFsOnNlbmRlcl07
CiAjZWxzZQpAQCAtMjEwNSw2ICsyMTYyLDcgQEAgLSAodm9pZClfc2V0SGlzdG9yeURlbGVnYXRl
OihpZCA8V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlPiloaXN0b3J5RGVsZWdhdGUKIAogLSAodm9p
ZClfdXBkYXRlTWVkaWFQbGF5YmFja0NvbnRyb2xzTWFuYWdlcgogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICNpZiBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05U
Uk9MU19NQU5BR0VSKQogICAgIF9pbXBsLT51cGRhdGVNZWRpYVBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKCk7CiAjZW5kaWYKQEAgLTIxMzAsNiArMjE4OCw3IEBAIC0gKEJPT0wpX2lzUGljdHVyZUlu
UGljdHVyZUFjdGl2ZQogCiAtICh2b2lkKV90b2dnbGVQaWN0dXJlSW5QaWN0dXJlCiB7CisgICAg
VEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BM
QVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgX2ltcGwtPnRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUoKTsKICNlbmRpZgpAQCAtMjE0MiwyNiArMjIwMSwzMSBAQCAtIChfV0tNZWRpYU11dGVkU3Rh
dGUpX21lZGlhTXV0ZWRTdGF0ZQogCiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9u
cwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBjbG9zZUFsbE1lZGlhUHJl
c2VudGF0aW9uc1dpdGhDb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCiAtICh2b2lkKV9zdG9w
TWVkaWFDYXB0dXJlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zdG9w
TWVkaWFDYXB0dXJlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1
ZGlvVmlkZW8pOwogfQogCiAtICh2b2lkKV9zdG9wQWxsTWVkaWFQbGF5YmFjawogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBwYXVzZUFsbE1lZGlhUGxheWJhY2tXaXRoQ29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAogLSAodm9pZClfc3VzcGVuZEFsbE1lZGlhUGxheWJh
Y2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgc2V0QWxsTWVkaWFQbGF5
YmFja1N1c3BlbmRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAogLSAodm9pZClf
cmVzdW1lQWxsTWVkaWFQbGF5YmFjawogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBb
c2VsZiBzZXRBbGxNZWRpYVBsYXliYWNrU3VzcGVuZGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOm5p
bF07CiB9CiAKQEAgLTIxNzgsNiArMjI0Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRBbmRBZGRI
aWdobGlnaHQoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBidWZmZXJzLCBOCiAK
IC0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hs
aWdodHMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQogICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwogCkBA
IC0yMTkyLDYgKzIyNTcsNyBAQCAtICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJh
eTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiAKIC0gKHZvaWQpX3Jlc3RvcmVBbmRTY3JvbGxUb0Fw
cEhpZ2hsaWdodDooTlNEYXRhICopaGlnaGxpZ2h0CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVE
OwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBWZWN0b3I8UmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5Pj4gYnVmZmVyczsKICAgICAKQEAgLTIyMDQsNiArMjI3MCw3IEBAIC0gKHZvaWQp
X3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDooTlNEYXRhICopaGlnaGxpZ2h0CiAKIC0g
KHZvaWQpX2FkZEFwcEhpZ2hsaWdodAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2Vs
ZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8sIFdlYkNv
cmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllcyk7CiAjZW5kaWYKQEAgLTIy
MjMsMjMgKzIyOTAsMjcgQEAgLSAoTlNVUkwgKilfbWFpbkZyYW1lVVJMCiAKIC0gKHZvaWQpX2xv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgZm9yVW5yZWFjaGFibGVVUkw6KE5TVVJMICopdW5yZWFjaGFibGVVUkwKIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgX3BhZ2UtPmxvYWRBbHRlcm5h
dGVIVE1MKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxl
bmd0aCB9LCAiVVRGLTgiX3MsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uICopX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAq
KU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNv
ZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0YQog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9h
ZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVu
Z3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVT
dHJpbmcsIFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKSk7
CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzOihCT09MKXNob3VsZE9wZW5FeHRlcm5hbFVSTHMK
IHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBwb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gX1dLU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeUFsbG93IDogX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeU5v
dEFsbG93OwogICAgIHJldHVybiBbc2VsZiBfbG9hZFJlcXVlc3Q6cmVxdWVzdCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OnBvbGljeV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2Fk
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OihfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KXNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBwb2xpY3k7CiAgICAgc3dpdGNoIChzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KSB7CiAgICAgY2FzZSBfV0tTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5Tm90QWxsb3c6CkBAIC0yMjU3LDI0ICsyMzI4LDI4IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9s
b2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9sCiAKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogICAgIGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPmdyYW50QWNjZXNz
VG9Bc3NldFNlcnZpY2VzKCk7CiB9CiAKIC0gKHZvaWQpX3Jldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBpZiAoX3BhZ2UpCiAgICAgICAg
IF9wYWdlLT5yZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKTsKIH0KIAogLSAodm9pZClfc3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeQogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBpZiAoX3BhZ2UpCiAgICAgICAgIF9wYWdlLT5zd2l0Y2hGcm9t
U3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KCk7CiB9CiAKIC0gKHZvaWQpX2Fw
cEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRp
b25EYXRhKFtyZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChkb21haW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFhcHBCb3VuZERhdGEuY29udGV4dERhdGEuY29udGFpbnMocmVnaXN0
cmFibGVEb21haW4pKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwpAQCAt
MjI4Nyw2ICsyMzYyLDcgQEAgLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFp
bjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHYKIAogLSAodm9pZClfZGlk
TG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5hcHBCb3VuZE5hdmln
YXRpb25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwog
ICAgIH0pOwpAQCAtMjI5NCwxMSArMjM3MCwzNCBAQCAtICh2b2lkKV9kaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAodm9p
ZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5hcHBC
b3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRhYmxlIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcpOwogICAgIH0pOwogfQogCistICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIV9wYWdlKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+
c3VzcGVuZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFfcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZShbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1
Y2Nlc3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9
CisKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgogewogICAgIGlmIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKQEAgLTIzMzIsNiAr
MjQzMSw3IEBAIC0gKE5TU3RyaW5nICopX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudAogCiAt
ICh2b2lkKV9zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6KE5TU3RyaW5nICopYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9w
YWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KTsKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2Vu
dChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOwogfQpAQCAtMjM4NCw2ICsyNDg0LDcgQEAg
LSAoQk9PTClfd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZQogCiAtICh2b2lkKV9raWxsV2ViQ29udGVu
dFByb2Nlc3MKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFbc2VsZiBfaXNW
YWxpZF0pCiAgICAgICAgIHJldHVybjsKIApAQCAtMjM5MiwxNiArMjQ5MywxOSBAQCAtICh2b2lk
KV9raWxsV2ViQ29udGVudFByb2Nlc3MKIAogLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhv
dXRDb250ZW50QmxvY2tlcnMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJu
IHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250
ZW50QmxvY2tlcnMpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZEV4cGlyZWRPbmx5
CiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5y
ZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSkpOwogfQogCiAtICh2b2lk
KV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlCiB7CisgICAgVEhST1dfSUZfU1VT
UEVOREVEOwogICAgIFJlZjxXZWJLaXQ6OldlYlByb2Nlc3NQcm94eT4gcHJvdGVjdGVkUHJvY2Vz
c1Byb3h5KF9wYWdlLT5wcm9jZXNzKCkpOwogICAgIHByb3RlY3RlZFByb2Nlc3NQcm94eS0+cmVx
dWVzdFRlcm1pbmF0aW9uKFdlYktpdDo6UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0
ZWRCeUNsaWVudCk7CiAKQEAgLTI0MTMsNiArMjUxNyw3IEBAIC0gKHZvaWQpX2tpbGxXZWJDb250
ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKIAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENv
bmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0
aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBSZXRhaW5QdHI8
V0tQREZDb25maWd1cmF0aW9uPiBwZGZDb25maWd1cmF0aW9uOwogICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24pIHsKICAgICAgICAgcGRmQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1BE
RkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI0MjQsNiArMjUyOSw3IEBAIC0gKHZv
aWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJh
dGlvbiAqKXNuYXBzaG90Q29uCiAKIC0gKHZvaWQpX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1l
OihfV0tGcmFtZUhhbmRsZSAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKENHU2l6
ZSkpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3Bh
Z2UtPmdldFBERkZpcnN0UGFnZVNpemUoZnJhbWUtPl9mcmFtZUhhbmRsZS0+ZnJhbWVJRCgpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShXZWJD
b3JlOjpGbG9hdFNpemUgc2l6ZSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxDR1NpemU+KHNpemUpKTsKICAgICB9KTsKQEAgLTI0NTQsNiArMjU2MCw3IEBAIC0gKF9X
S1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGVXaXRoRmlsdGVyOihCT09MICheKShXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gKml0CiAKIC0gKHZvaWQpX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0
YTooTlNEYXRhICopc2Vzc2lvblN0YXRlRGF0YQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3Rh
dGUgZGVjb2Rlci4KICAgICBXZWJLaXQ6OlNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGU7CiAgICAg
aWYgKCFXZWJLaXQ6OmRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oc2Vzc2lvblN0YXRlRGF0YS5ieXRlcyksIHNlc3Npb25TdGF0ZURhdGEubGVuZ3Ro
LCBzZXNzaW9uU3RhdGUpKQpAQCAtMjQ2NCw2ICsyNTcxLDcgQEAgLSAodm9pZClfcmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVEYXRhOihOU0RhdGEgKilzZXNzaW9uU3RhdGVEYXRhCiAKIC0gKFdLTmF2
aWdhdGlvbiAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9u
U3RhdGUgYW5kTmF2aWdhdGU6KEJPT0wpbmF2aWdhdGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHNl
c3Npb25TdGF0ZSA/IHNlc3Npb25TdGF0ZS0+X3Nlc3Npb25TdGF0ZSA6IFdlYktpdDo6U2Vzc2lv
blN0YXRlIHsgfSwgbmF2aWdhdGUpKTsKIH0KIApAQCAtMjQ3NCw2ICsyNTgyLDcgQEAgLSAodm9p
ZClfY2xvc2UKIAogLSAoQk9PTClfdHJ5Q2xvc2UKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgcmV0dXJuIF9wYWdlLT50cnlDbG9zZSgpOwogfQogCkBAIC0yNDg0LDYgKzI1OTMsNyBA
QCAtIChCT09MKV9pc0Nsb3NlZAogCiAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5n
ICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50
RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNz
KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBVTlVT
RURfUEFSQU0ob3B0aW9ucyk7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0pOwogICAg
IGlmIChmaWxlbmFtZSkKQEAgLTI0OTMsMTIgKzI2MDMsMTQgQEAgLSAoX1dLQXR0YWNobWVudCAq
KV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRl
bnRUeXAKIAogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFw
cGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICop
Y29udGVudFR5cGUgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9u
cyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKIHsK
KyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAg
IHJldHVybiBbc2VsZiBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlV3JhcHBl
ciBjb250ZW50VHlwZTpjb250ZW50VHlwZSBjb21wbGV0aW9uOmNvbXBsZXRpb25IYW5kbGVyXTsK
IH0KIAogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVy
OihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29u
dGVudFR5cGUgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAgICAgYXV0byBpZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
OwogICAgIGF1dG8gYXR0YWNobWVudCA9IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZp
ZXIsICpfcGFnZSk7CkBAIC0yNTE4LDYgKzI2MzAsNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2lu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBl
cgogCiAtIChfV0tBdHRhY2htZW50ICopX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gX3BhZ2UtPmF0dGFj
aG1lbnRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gd3JhcHBlcihh
dHRhY2htZW50KTsKQEAgLTI1MjcsNiArMjY0MCw3IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfYXR0
YWNobWVudEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9z
aW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlV2l0aEFscGhhOihkb3VibGUpYWxwaGEgYmV0
YTooZG91YmxlKWJldGEgZ2FtbWE6KGRvdWJsZSlnYW1tYQogeworICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKICAgICBfcGFnZS0+c2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwg
YmV0YSwgZ2FtbWEpOwogfQogCkBAIC0yNTQyLDYgKzI2NTYsNyBAQCArIChCT09MKV93aWxsVXBn
cmFkZVRvSFRUUFM6KE5TVVJMICopdXJsCiAKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJu
aW5nV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2Fybmlu
ZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVO
REVEOwogICAgIFtzZWxmIF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHRpdGxl
OnRpdGxlIHdhcm5pbmc6d2FybmluZyBkZXRhaWxzV2l0aExpbmtzOmRldGFpbHMgY29tcGxldGlv
bkhhbmRsZXI6XihCT09MIGNvbnRpbnVlVW5zYWZlTG9hZCwgTlNVUkwgKnVybCkgewogICAgICAg
ICBBU1NFUlQoIXVybCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRpbnVlVW5zYWZl
TG9hZCk7CkBAIC0yNTUwLDYgKzI2NjUsNyBAQCAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2Fy
bmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKQogCiAt
ICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxl
OihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihO
U0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtz
ZWxmIF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHRpdGxlOnRpdGxlIHdhcm5p
bmc6d2FybmluZyBkZXRhaWxzV2l0aExpbmtzOmRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6XihC
T09MIGNvbnRpbnVlVW5zYWZlTG9hZCwgTlNVUkwgKnVybCkgewogICAgICAgICBBU1NFUlQoIXVy
bCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRpbnVlVW5zYWZlTG9hZCk7CkBAIC0y
NTU4LDYgKzI2NzQsNyBAQCAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6
KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcgogCiAtICh2b2lkKV9zaG93
U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6KE5TVVJMICopdXJsIHRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzV2l0aExpbmtzOihOU0F0
dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0ws
IE5TVVJMICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIGF1dG8gc2FmZUJyb3dzaW5nV2FybmluZyA9IFdlYktpdDo6U2FmZUJyb3dzaW5nV2Fybmlu
Zzo6Y3JlYXRlKHVybCwgdGl0bGUsIHdhcm5pbmcsIGRldGFpbHMpOwogICAgIGF1dG8gd3JhcHBl
ciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYgdmFyaWFudCkgewog
ICAgICAgICBzd2l0Y2hPbih2YXJpYW50LCBbJl0gKFdlYktpdDo6Q29udGludWVVbnNhZmVMb2Fk
IGNvbnRpbnVlVW5zYWZlTG9hZCkgewpAQCAtMjU5MCw2ICsyNzA3LDcgQEAgKyAoTlNVUkwgKilf
dmlzaXRVbnNhZmVXZWJzaXRlU2VudGluZWwKIAogLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lk
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIF9wYWdlLT5pc0pJVEVuYWJsZWQoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgZW5hYmxlZCkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihlbmFibGVkKTsKICAgICB9KTsKQEAgLTI1OTcsMTEgKzI3MTUsMTMgQEAgLSAodm9p
ZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZv
aWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZh
U2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBbc2VsZiBf
ZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdp
dGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gaW5G
cmFtZTpuaWwgaW5Xb3JsZDpXS0NvbnRlbnRXb3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWZ1bmN0aW9uQm9keSBhcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKilhcmd1bWVudHMgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRl
bnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBU
SFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpmdW5jdGlv
bkJvZHkgYXNBc3luY0Z1bmN0aW9uOllFUyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29u
dGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIApAQCAt
MjYyNiwxMSArMjc0NiwxMyBAQCAtIChCT09MKV9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWQK
IAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJp
bmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50
V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vy
cm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNG
dW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2Ny
aXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aFNvdXJjZVVSTDooTlNVUkwgKil1
cmwgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50
V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vy
cm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7
CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNG
dW5jdGlvbjpOTyB3aXRoU291cmNlVVJMOnVybCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIApAQCAtMjY0MCw2ICsyNzYyLDcgQEAgLSAo
dm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRl
UG9saWNpZXMKIAogLSAodm9pZClfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOihXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcwogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBpZiAod2VicGFnZVByZWZlcmVuY2VzLl93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAi
VXBkYXRpbmcgV0tXZWJzaXRlRGF0YVN0b3JlIGlzIG9ubHkgc3VwcG9ydGVkIGR1cmluZyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLiJdOwogICAgIGlmICh3ZWJwYWdlUHJlZmVyZW5j
ZXMuX3VzZXJDb250ZW50Q29udHJvbGxlcikKQEAgLTI2NTAsMTEgKzI3NzMsMTMgQEAgLSAodm9p
ZClfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBh
Z2VQcmVmZXJlbmNlcwogCiAtICh2b2lkKV9ub3RpZnlVc2VyU2NyaXB0cwogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+bm90aWZ5VXNlclNjcmlwdHMoKTsKIH0KIAogLSAo
Qk9PTClfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbgogeworICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKICAgICByZXR1cm4gX3BhZ2UtPnVzZXJTY3JpcHRzTmVlZE5vdGlmaWNh
dGlvbigpOwogfQogCkBAIC0yNjY5LDYgKzI3OTQsNyBAQCAtIChCT09MKV9hbGxvd3NSZW1vdGVJ
bnNwZWN0aW9uCiAKIC0gKHZvaWQpX3NldEFsbG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxs
b3cKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCiAgICAgX3BhZ2UtPnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYWxsb3cpOwogI2VuZGlm
CkBAIC0yNjg1LDYgKzI4MTEsNyBAQCAtIChOU1N0cmluZyAqKV9yZW1vdGVJbnNwZWN0aW9uTmFt
ZU92ZXJyaWRlCiAKIC0gKHZvaWQpX3NldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU6KE5T
U3RyaW5nICopbmFtZQogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKICAgICBfcGFnZS0+c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlk
ZShuYW1lKTsKICNlbmRpZgpAQCAtMjY5Nyw2ICsyODI0LDcgQEAgLSAoQk9PTClfYWRkc1Zpc2l0
ZWRMaW5rcwogCiAtICh2b2lkKV9zZXRBZGRzVmlzaXRlZExpbmtzOihCT09MKWFkZHNWaXNpdGVk
TGlua3MKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEFkZHNWaXNp
dGVkTGlua3MoYWRkc1Zpc2l0ZWRMaW5rcyk7CiB9CiAKQEAgLTI3NDQsNiArMjg3Miw3IEBAIC0g
KHZvaWQpX3NldE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM6KF9XS1JlbmRlcmluZ1By
b2dyZXNzRXZlbnRzKW9ic2VydmVkCiAKIC0gKHZvaWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRo
Q29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShfcGFnZS0+bWFpbkZyYW1lKCksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpLCBuaWwpOwogICAgIH0pOwpA
QCAtMjc1MSwxMSArMjg4MCwxMyBAQCAtICh2b2lkKV9nZXRNYWluUmVzb3VyY2VEYXRhV2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKQogCiAtICh2b2lk
KV9nZXRXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRh
ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgW3NlbGYgY3JlYXRlV2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6
Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRD
b250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1l
czo6Tm8sIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5n
IHN0cmluZykgewogICAgICAgICBoYW5kbGVyKHN0cmluZywgbmlsKTsKICAgICB9KTsKQEAgLTI3
NjMsNiArMjg5NCw3IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzQXNTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICosIE5TRXJyb3IKIAogLSAodm9pZClfZ2V0Q29u
dGVudHNPZkFsbEZyYW1lc0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U1N0cmluZyAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICAgICBfcGFnZS0+Z2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNvbnRlbnRBc1N0cmluZ0lu
Y2x1ZGVzQ2hpbGRGcmFtZXM6OlllcywgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShTdHJpbmcgc3RyaW5nKSB7CiAgICAgICAgIGhhbmRsZXIoc3RyaW5nKTsKICAg
ICB9KTsKQEAgLTI3NzAsNiArMjkwMiw3IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzT2ZBbGxGcmFt
ZXNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcKIAogLSAo
dm9pZClfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TQXR0cmlidXRlZFN0cmluZyAqLCBOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVk
U3RyaW5nRG9jdW1lbnRBdHRyaWJ1dGVLZXksIGlkPiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRDb250ZW50
c0FzQXR0cmlidXRlZFN0cmluZyhbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8mIGF0dHJpYnV0ZWRTdHJpbmcpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZWRT
dHJpbmcuc3RyaW5nKQogICAgICAgICAgICAgaGFuZGxlcihhdHRyaWJ1dGVkU3RyaW5nLnN0cmlu
Zy5nZXQoKSwgYXR0cmlidXRlZFN0cmluZy5kb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCksIG5pbCk7
CkBAIC0yNzgwLDYgKzI5MTMsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0
cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBdHRyaWJ1dAogCiAtICh2b2lk
KV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgVEhST1df
SUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBfcGFn
ZS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0PiYgbWFuaWZlc3QpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7
CkBAIC0yODE3LDYgKzI5NTEsNyBAQCAtIChfV0tQYWdpbmF0aW9uTW9kZSlfcGFnaW5hdGlvbk1v
ZGUKIAogLSAodm9pZClfc2V0UGFnaW5hdGlvbk1vZGU6KF9XS1BhZ2luYXRpb25Nb2RlKXBhZ2lu
YXRpb25Nb2RlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6OlBhZ2lu
YXRpb246Ok1vZGUgbW9kZTsKICAgICBzd2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CiAgICAgY2Fz
ZSBfV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOgpAQCAtMjg0OCw2ICsyOTgzLDcgQEAgLSAo
Qk9PTClfcGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucwogCiAtICh2b2lkKV9zZXRQYWdpbmF0
aW9uQmVoYXZlc0xpa2VDb2x1bW5zOihCT09MKWJlaGF2ZXNMaWtlQ29sdW1ucwogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29s
dW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpOwogfQogCkBAIC0yODU4LDYgKzI5OTQsNyBAQCAtIChD
R0Zsb2F0KV9wYWdlTGVuZ3RoCiAKIC0gKHZvaWQpX3NldFBhZ2VMZW5ndGg6KENHRmxvYXQpcGFn
ZUxlbmd0aAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+c2V0UGFnZUxl
bmd0aChwYWdlTGVuZ3RoKTsKIH0KIApAQCAtMjg2OCw2ICszMDA1LDcgQEAgLSAoQ0dGbG9hdClf
Z2FwQmV0d2VlblBhZ2VzCiAKIC0gKHZvaWQpX3NldEdhcEJldHdlZW5QYWdlczooQ0dGbG9hdCln
YXBCZXR3ZWVuUGFnZXMKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNl
dEdhcEJldHdlZW5QYWdlcyhnYXBCZXR3ZWVuUGFnZXMpOwogfQogCkBAIC0yODc4LDYgKzMwMTYs
NyBAQCAtIChCT09MKV9wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkCiAKIC0gKHZvaWQpX3NldFBh
Z2luYXRpb25MaW5lR3JpZEVuYWJsZWQ6KEJPT0wpbGluZUdyaWRFbmFibGVkCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVk
KGxpbmVHcmlkRW5hYmxlZCk7CiB9CiAKQEAgLTI4OTgsNiArMzAzNyw3IEBAIC0gKGRvdWJsZSlf
dGV4dFpvb21GYWN0b3IKIAogLSAodm9pZClfc2V0VGV4dFpvb21GYWN0b3I6KGRvdWJsZSl6b29t
RmFjdG9yCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5zZXRUZXh0Wm9v
bUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KIApAQCAtMjkwOCw2ICszMDQ4LDcgQEAgLSAoZG91Ymxl
KV9wYWdlWm9vbUZhY3RvcgogCiAtICh2b2lkKV9zZXRQYWdlWm9vbUZhY3RvcjooZG91YmxlKXpv
b21GYWN0b3IKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgW3NlbGYgc2V0UGFnZVpv
b206em9vbUZhY3Rvcl07CiB9CiAKQEAgLTI5NjksNiArMzExMCw3IEBAIHN0YXRpYyBpbmxpbmUg
T3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlv
bnMgd2tGaW5kCiAKIC0gKHZvaWQpX2NvdW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJp
bmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlcilt
YXhDb3VudAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChfY3VzdG9tQ29udGVudFZpZXcpIHsKICAgICAgICAgW19jdXN0b21Db250
ZW50VmlldyB3ZWJfY291bnRTdHJpbmdNYXRjaGVzOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4
Q291bnQ6bWF4Q291bnRdOwpAQCAtMjk4MCw2ICszMTIyLDcgQEAgLSAodm9pZClfY291bnRTdHJp
bmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRp
b25zIG0KIAogLSAodm9pZClfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczoo
X1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogewor
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IFdoaWxlIEFwcEtpdCBjb250YWlucyBsb2dpYyBpbiBOU0JhclRleHRGaW5kZXIgdG8gYXV0b21h
dGljYWxseSB1cGRhdGUgdGhlIGZpbmQgcGFzdGVib2FyZAogICAgIC8vIHdoZW4gdGhlIGZpbmQg
c3RyaW5nIGNoYW5nZXMsIHRoaXMgKGFsb25nIHdpdGggdGhlIGZpbmQgcGFzdGVib2FyZCBpdHNl
bGYpIGFyZSBib3RoIG1pc3NpbmcKQEAgLTI5OTYsNiArMzEzOSw3IEBAIC0gKHZvaWQpX2ZpbmRT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMg
bWF4Q291bnQ6CiAKIC0gKHZvaWQpX2hpZGVGaW5kVUkKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3
KSB7CiAgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2ViX2hpZGVGaW5kVUldOwpAQCAtMzAw
Nyw2ICszMTUxLDcgQEAgLSAodm9pZClfaGlkZUZpbmRVSQogCiAtICh2b2lkKV9zYXZlQmFja0Zv
cndhcmRTbmFwc2hvdEZvckl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKKyAg
ICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAg
ICAgX3BhZ2UtPnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtLl9pdGVtKTsKQEAgLTMwMjAs
NiArMzE2NSw3IEBAIC0gKHZvaWQpX3NlcnZpY2VXb3JrZXJzRW5hYmxlZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKICAgICBfcGFnZS0+Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRPdmVycmlkZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CkBAIC0zMDI3
LDYgKzMxNzMsNyBAQCAtICh2b2lkKV9jbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJy
aWRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9wcmVjb25u
ZWN0VG9TZXJ2ZXI6KE5TVVJMICopdXJsCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5wcmVjb25uZWN0VG8odXJsKTsKIH0KIApAQCAtMzAzNyw2ICszMTg0LDcgQEAgLSAo
Qk9PTClfY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKIAogLSAodm9pZClfc2V0Q2FuVXNlQ3JlZGVu
dGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKIHsKKyAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGNhblVz
ZUNyZWRlbnRpYWxTdG9yYWdlKTsKIH0KIApAQCAtMzE3Nyw2ICszMzI1LDcgQEAgLSAoX1dLTGF5
b3V0TW9kZSlfbGF5b3V0TW9kZQogCiAtICh2b2lkKV9zZXRMYXlvdXRNb2RlOihfV0tMYXlvdXRN
b2RlKWxheW91dE1vZGUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIFdLTGF5b3V0TW9kZSB3a1ZpZXdMYXlvdXRNb2RlOwogICAgIHN3aXRjaCAobGF5
b3V0TW9kZSkgewpAQCAtMzIwNywxMSArMzM1NiwxMyBAQCAtIChDR1NpemUpX2ZpeGVkTGF5b3V0
U2l6ZQogCiAtICh2b2lkKV9zZXRGaXhlZExheW91dFNpemU6KENHU2l6ZSlmaXhlZExheW91dFNp
emUKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgX3BhZ2UtPnNldEZpeGVkTGF5b3V0
U2l6ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGZpeGVkTGF5
b3V0U2l6ZSkpKTsKIH0KIAogLSAodm9pZClfc2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdl
OihCT09MKWJhY2tncm91bmRFeHRlbmRzCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IF9wYWdlLT5zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHMp
OwogfQogCkBAIC0zMjMxLDYgKzMzODIsNyBAQCAtIChDR0Zsb2F0KV92aWV3U2NhbGUKIAogLSAo
dm9pZClfc2V0Vmlld1NjYWxlOihDR0Zsb2F0KXZpZXdTY2FsZQogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBpZiAodmlld1NjYWxlIDw9IDAgfHwgaXNuYW4odmlld1NjYWxlKSB8fCBp
c2luZih2aWV3U2NhbGUpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVmlldyBzY2FsZSBzaG91bGQgYmUgYSBwb3NpdGl2ZSBu
dW1iZXIiXTsKIApAQCAtMzI1MSwxMSArMzQwMywxMyBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+
ICopX2NvcnNEaXNhYmxpbmdQYXR0ZXJucwogCiAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXR0ZXJucwogeworICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKICAgICBfcGFnZS0+c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8
U3RyaW5nPihwYXR0ZXJucykpOwogfQogCiAtICh2b2lkKV9nZXRQcm9jZXNzRGlzcGxheU5hbWVX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIF9wYWdlLT5nZXRQcm9jZXNzRGlz
cGxheU5hbWUoW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgbmFtZSkgewogICAgICAgICBoYW5kbGVyKG5hbWUpOwogICAgIH0pOwpAQCAtMzI2Myw2ICsz
NDE3LDcgQEAgLSAodm9pZClfZ2V0UHJvY2Vzc0Rpc3BsYXlOYW1lV2l0aENvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1N0cmluZyAqKSljb21wbGUKIAogLSAodm9pZClfc2V0TWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoOihDR0Zsb2F0KW1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aAog
eworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChfcGFnZS0+bWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKCkgPT0gbWluaW11bUVmZmVj
dGl2ZURldmljZVdpZHRoKQogICAgICAgICByZXR1cm47CkBAIC0zMjg1LDYgKzM0NDAsNyBAQCAt
IChDR0Zsb2F0KV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgKIAogLSAodm9pZClfZ3JhbnRB
Y2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAg
IGlmIChfcGFnZSkKICAgICAgICAgX3BhZ2UtPmdyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2Vydmlj
ZSgpOwogfQpAQCAtMzI5Myw2ICszNDQ5LDcgQEAgLSAodm9pZClfZ3JhbnRBY2Nlc3NUb1ByZWZl
cmVuY2VTZXJ2aWNlCiAKIC0gKHZvaWQpX3NldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rp
b25FbmFibGVkOihCT09MKWVuYWJsZWQKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAg
X3BhZ2UtPnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGVuYWJsZWQp
OwogfQogCkBAIC0zMzIzLDYgKzM0ODAsNyBAQCAtIChCT09MKV9hbGxvd3NNZWRpYURvY3VtZW50
SW5saW5lUGxheWJhY2sKIAogLSAodm9pZClfc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrOihCT09MKWZsYWcKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBfcGFnZS0+c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrKGZsYWcpOwogI2VuZGlmCkBAIC0zMzYxLDYgKzM1MTksNyBAQCAtIChfV0tNZWRpYUNh
cHR1cmVTdGF0ZURlcHJlY2F0ZWQpX21lZGlhQ2FwdHVyZVN0YXRlCiAKIC0gKHZvaWQpX3NldE1l
ZGlhQ2FwdHVyZUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogeworICAgIFRIUk9XX0lGX1NVU1BFTkRF
RDsKICAgICBfcGFnZS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFibGVkKTsKIH0KIApAQCAt
MzM3MSw2ICszNTMwLDcgQEAgLSAoQk9PTClfbWVkaWFDYXB0dXJlRW5hYmxlZAogCiAtICh2b2lk
KV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlhTXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiB7CisgICAgVEhS
T1dfSUZfU1VTUEVOREVEOwogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVG
bGFncyBjb3JlU3RhdGU7CiAKICAgICBpZiAobXV0ZWRTdGF0ZSAmIF9XS01lZGlhQXVkaW9NdXRl
ZCkKQEAgLTMzODUsNiArMzU0NSw3IEBAIC0gKHZvaWQpX3NldFBhZ2VNdXRlZDooX1dLTWVkaWFN
dXRlZFN0YXRlKW11dGVkU3RhdGUKIAogLSAodm9pZClfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6
KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbgogeworICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAgICAgX3BhZ2UtPnJlbW92ZURhdGFEZXRlY3Rl
ZExpbmtzKFtjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pLCBwYWdlID0gbWFr
ZVdlYWtQdHIoX3BhZ2UuZ2V0KCkpXSAoYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChwYWdl
KQpAQCAtMzQwMCwxMSArMzU2MSwxMyBAQCAtICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5r
czooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCiAvLyBFeGVjdXRlIHRoZSBzdXBwbGllZCBi
bG9jayBhZnRlciB0aGUgbmV4dCB0cmFuc2FjdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzLgogLSAo
dm9pZClfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0
ZUJsb2NrCiB7CisgICAgVEhST1dfSUZfU1VTUEVOREVEOwogICAgIFtzZWxmIF9pbnRlcm5hbERv
QWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOnVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9y
UGFpbnRpbmc6Tk8gd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTpOT107CiB9CiAKIC0g
KHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlV2l0aG91dFdhaXRpbmdGb3JQYWlu
dGluZzoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sKIHsKKyAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7CiAgICAgW3NlbGYgX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6dXBk
YXRlQmxvY2sgd2l0aG91dFdhaXRpbmdGb3JQYWludGluZzpZRVMgd2l0aG91dFdhaXRpbmdGb3JB
bmltYXRlZFJlc2l6ZTpOT107CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQ0OWJmMjMzZjU1NmE4ZDFjZDk2
ZjQ2OTJhYzM2MjFiOTNiZWVjYzAuLjJkZmVhYmEwZGQ0Y2IzZDRlMDBlOWQ1ZmJhY2M4MzgyMDA3
ZGYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtNDEwLDYgKzQxMCw5IEBAIGZvciB0aGlzIHByb3BlcnR5Lgog
LSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9p
ZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKV9zdXNwZW5k
UGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZVBhZ2U6
KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19J
UEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZjk2
MzlhYTY1YzJiNTZlZWEzNzRmNGU2MzFkYjM1OTAzOWJhNDEuLjkyMzA2ODM0Nzc5MTFjOGZlZTA3
NzlkOTJhZjY4YmQ3NGM1M2Q5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMzE0Niw3ICszMTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRv
dWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgLy8gSWYgdGhl
IHBhZ2UgaXMgc3VzcGVuZGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UgZHVyaW5nIHBhbm5p
bmcsIHBpbmNoaW5nCiAgICAgLy8gYW5kIGFuaW1hdGlvbiBvbiB0aGUgcGFnZSBpdHNlbGYgKGtp
bmV0aWMgc2Nyb2xsaW5nLCB0YXAgdG8gem9vbSkgZXRjLCB0aGVuCiAgICAgLy8gd2UgZG8gbm90
IHNlbmQgYW55IG9mIHRoZSBldmVudHMgdG8gdGhlIHBhZ2UgZXZlbiBpZiBpcyBoYXMgbGlzdGVu
ZXJzLgotICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsKKyAgICBpZiAoIW1fYXJlQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50
UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVu
ZXNzVGltZXIoKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChl
dmVudCkpOwpAQCAtMzU5NCwyNCArMzU5NCw0NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3Vz
dG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50KQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogewotICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2FyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZh
bHNlOworICAgIG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBm
YWxzZTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpIHx8
IG1fYXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX2FyZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gdHJ1ZTsKIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJzdXNwZW5kOiIpOworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCBtX2lz
U3VzcGVuZGVkKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisg
ICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdXNwZW5kKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwor
dm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInJlc3VtZToiKTsKKworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSB8fCAhbV9pc1N1
c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAg
IG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3VtZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIGJv
b2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUUgKDExODg0MCk6IFdlIHNob3VsZCBwcm9iYWJseSBvbmx5IHN1cHBvcnQgdGhpcyBmb3Ig
dGV4dCBkb2N1bWVudHMsIG5vdCBhbGwgbm9uLWltYWdlIGRvY3VtZW50cy4KQEAgLTYwODEsNyAr
NjEwMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0dXJlKE1lZGlhUHJvZHVj
ZXI6Ok1lZGlhQ2FwdHVyZUtpbmQga2luZCwgQ29tcGxlCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE1lZGlhUGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CkBAIC03NzIyLDcgKzc3NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYQogICAgIG1f
dmlzaWJsZVBhZ2VUb2tlbiA9IG51bGxwdHI7CiAKICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0g
ZmFsc2U7Ci0gICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICBtX2FyZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBtX3VzZXJTY3Jp
cHRzTm90aWZpZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA1YjQ1N2RmYjYwMzFlZjYzOWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAyLi5kNTEzYWFh
M2JlMjdlNGE1MTYzMWVhYjEzZmZhY2E5MmFmMWMwY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNTA1LDYgKzUwNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCk7CiAKKyAg
ICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBpc1N1
c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWQ7IH0KKwogICAgIFdlYkluc3Bl
Y3RvclVJUHJveHkqIGluc3BlY3RvcigpIGNvbnN0OwogICAgIEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkmIGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCkgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogCkBA
IC0xMDE0LDcgKzEwMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKLSAgICBib29s
IGFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1BhZ2VTdXNwZW5kZWQ7IH0KKyAgICBib29sIGFyZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZDsgfQogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOwogCkBAIC0yNzUzLDcgKzI3NTcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlPiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5kaWYKIAot
ICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hcmVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2FkZHNWaXNpdGVkTGlua3MgeyB0cnVlIH07CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0
b21hdGlvbiB7IGZhbHNlIH07CkBAIC0zMDE1LDYgKzMwMTksNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c1J1bm5pbmdNb2RhbEphdmFTY3JpcHREaWFsb2cgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N1
c3BlbmRlZCB7IGZhbHNlIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhOWM3ZGQzMjNlYzY2ODIwYzRm
MzVmNDZjNjM2ZWU0YTcwOGViNDI1Li43YTAyODBmN2ExZjg1NjRhMTA3OGE0N2ZjOTU4NzIxMDc0
ZmNkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTUyLDYgKzE1Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0JhY2tGb3J3YXJkQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21t
b25WTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGFjdHNSZXF1ZXN0RGF0YS5oPgpAQCAtMzU5
Niw2ICszNTk3LDM3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKQogICAgIG1fcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAic3VzcGVuZDogbV9wYWdlPSVwIiwgbV9wYWdlLmdldCgpKTsKKyAgICBpZiAo
IW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAg
IGZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlBhZ2VTdXNwZW5kZWQpOwor
CisgICAgbV9jYWNoZWRQYWdlID0gQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCkuc3VzcGVu
ZFBhZ2UoKm1fcGFnZSk7CisgICAgQVNTRVJUKG1fY2FjaGVkUGFnZSk7CisgICAgaWYgKGF1dG8g
bWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBtYWluRnJhbWUt
PmxvYWRlcigpLmRldGFjaEZyb21BbGxPcGVuZWRGcmFtZXMoKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJyZXN1bWU6IG1fcGFnZT0lcCIsIG1fcGFnZS5nZXQoKSk7CisgICAg
aWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisK
KyAgICBhdXRvIGNhY2hlZFBhZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkUGFnZSwgbnVsbHB0
cik7CisgICAgQVNTRVJUKGNhY2hlZFBhZ2UpOworICAgIGlmICghY2FjaGVkUGFnZSkKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIGNhY2hlZFBhZ2UtPnJl
c3RvcmUoKm1fcGFnZSk7CisgICAgdW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVh
c29uOjpQYWdlU3VzcGVuZGVkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwog
SW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZWU0NDczYWRjNGI5ODBlMGRiOGQ3YTNlMDM0ODdiYjJm
ZTg5OGZiYy4uZmM5NjIxZTM3MmM1YjQwNDJiOWVkYmNiY2YyZTMyMzY0M2FhZWEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc3LDYgKzE3Nyw3
IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYXB0dXJlRGV2aWNlOwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBEcmFnRGF0YTsKQEAgLTE2NjksNiArMTY3MCw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAKKyAgICB2b2lkIHN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVj
dGlvbigpOwpAQCAtMjMxOCw2ICsyMzIyLDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJp
bmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNhY2hlZFBhZ2U+IG1fY2FjaGVkUGFnZTsKKwogI2lmIEVOQUJMRShJUENfVEVTVElOR19B
UEkpCiAgICAgYm9vbCBtX2lwY1Rlc3RpbmdBUElFbmFibGVkIHsgZmFsc2UgfTsKICAgICB1aW50
NjRfdCBtX3Zpc2l0ZWRMaW5rVGFibGVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGUzN2E2NTljOTFiMzg5MmUy
YjhmOTM4YzYyNmNkY2ZlODllNDE5MDQuLjFiM2E2ODFmY2I1MWY0MTNlMjFiYTQyNTQ0MmI4YzBh
MWZkNWUwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUwLDYgKzI1MCw5IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAgICAgU3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBS
ZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKKyAgICBTdXNwZW5kKCkgLT4g
KGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBSZXN1bWUoKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3lu
YworCiAgICAgQ2xvc2UoKQogICAgIFRyeUNsb3NlKCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpIEFz
eW5jCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA2OGU2MWRmNjBhOWU1OTI0Y2U2MDhmNjY5YTBiNTJiNjQxN2Q4YTAyLi45NDI0MWRlMjE3Zjky
NjNlNDQxZTAzNDExODlmMGRiMDk0YmI1NDM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHN1c3BlbmQg
LyByZXN1bWUgYSBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTMzMworICAgICAgICA8cmRhcjovLzc3NDYyNTQzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N1c3BlbnNpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sOiBBZGRl
ZC4KKwogMjAyMS0wNS0xMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY0NhdGFseXN0XSBzaG91bGQgaGF2ZSBDU1MgYGhvdmVyOiBob3ZlcmAgYW5kIGBw
b2ludGVyOiBmaW5lYApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzExN2IyNGQ5MjcyMmZl
OTA2YzdlZTRmZTkwYjljN2VjOTA3YzI5Li5iNzkzZDM3MmYzMWQ0NTk0MWVhNDIwNzU4ZGE2MWQ0
YjY4NmQxY2Q2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2Miw3IEBACiAJ
CTQ2M0Y0NzIzMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGNDcyMjI1NUI0OUI2MDBE
OUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovOyB9OwogCQk0NjQ3QjEyNjFFQkEzQjg1MDA0
MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vz
c0RpZFRlcm1pbmF0ZS5jcHAgKi87IH07CiAJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBC
YWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0Qzc2NEMyMzBERjgzMjAwQUZC
MDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKKwkJ
NDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUMy
M0FFMjY0MEMzQzUwMEYyRkM3RiAvKiBwb3N0TWVzc2FnZS1yZWd1bGFybHkuaHRtbCAqLzsgfTsK
IAkJNDY1RTI4MDcyNTVCMkE2QTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFMjgwNjI1NUIyQTY5MDA2M0E3
ODcgLyogR1BVUHJvY2Vzcy5tbSAqLzsgfTsKIAkJNDY2QzM4NDMyMTA2MzdERTAwNkE4OERFIC8q
IG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAv
KiBub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLzsgfTsKIAkJNDY3QzU2NTMyMUI1
RUQxMzAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdDNTY1MTIxQjVFQ0RGMDA1NzUx
NkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovOyB9OwpAQCAtMTY1MCw2ICsxNjUxLDcgQEAK
IAkJCQkzRkNDNEZFODFFQzRFOENBMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxNTA4NkQxREEwNDBDNTAwNDRCRTlC
IC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkw
RUJCQ0M2NjFGRkY5RTBDMDBGQTQyQUIgLyogcG9wLXVwLWNoZWNrLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCisJCQkJNDY1QzIzQUYyNjQwQzNGRTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJl
Z3VsYXJseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE4MUVGNDY5NkIw
MDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUY0MUFCOUE5MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1c2gtc3Rh
dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTIwNjcsNiArMjA2OSw3IEBACiAJCTQ2
M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNz
RGlkVGVybWluYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b2Nlc3NEaWRUZXJtaW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRD
NzY0QzIzMERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5z
cWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgcGF0aCA9ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjVDMjNBRTI2NDBDM0M1MDBGMkZDN0YgLyog
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
cG9zdE1lc3NhZ2UtcmVndWxhcmx5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnkt
cmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MDczLDYgKzQwNzYsNyBAQAogCQkJCTlCN0Q3NDBFMUY4Mzc3
RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3RTAw
NzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUwODZD
MURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCisJCQkJNDY1
QzIzQUUyNjQwQzNDNTAwRjJGQzdGIC8qIHBvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sICovLAog
CQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICov
LAogCQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgKi8s
CiAJCQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1ZGlu
Zy1vdmVyZmxvdy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N1c3BlbnNpb24ubW0KaW5kZXggOTk2NjFiMzQwM2Iw
NGQxNDFhMWM0MjgxNDViN2Q2ZmY0Nzk4ZGRjMi4uMGIwYjlhYzk2NzA1ODIxNmUwNDM5OGJlZjQ3
NWVjYjdlMWY5MWQ4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3VzcGVuc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTdXNwZW5zaW9uLm1tCkBAIC0yNiwxMSArMjYsMTMgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVz
dGluZy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAKIFRFU1QoUHJvY2Vzc1N1c3BlbnNp
b24sIENhbmNlbFdlYlByb2Nlc3NTdXNwZW5zaW9uKQogewpAQCAtODMsMyArODUsMTUxIEBAIFRF
U1QoUHJvY2Vzc1N1c3BlbnNpb24sIERlc3Ryb3lXZWJQYWdlRHVyaW5nV2ViUHJvY2Vzc1N1c3Bl
bnNpb24pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMSk7CiAgICAgRVhQRUNUX0VR
KHBpZDEsIFt3ZWJWaWV3MyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KKworVEVTVChQcm9j
ZXNzU3VzcGVuc2lvbiwgV0tXZWJWaWV3U3VzcGVuZFBhZ2UpCit7CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KworICAgIGF1dG8gdGVzdE1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOnRlc3RNZXNzYWdlSGFuZGxlci5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBfX2Jsb2NrIHVuc2lnbmVkIHRpbWVyRmlyZWRDb3Vu
dCA9IDA7CisgICAgW3Rlc3RNZXNzYWdlSGFuZGxlciBhZGRNZXNzYWdlOkAidGltZXIgZmlyZWQi
IHdpdGhIYW5kbGVyOl57CisgICAgICAgICsrdGltZXJGaXJlZENvdW50OworICAgIH1dOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkVGVzdFBhZ2VOYW1lZDpAInBvc3RNZXNzYWdlLXJlZ3VsYXJseSJdOworCisgICAgYXV0byBw
aWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShwaWQs
IDApOworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBiZSBmaXJpbmcuCisgICAgYXV0byBsYXN0
VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVkQ291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZp
cmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0
VGltZXJGaXJlQ291bnQpOworCisgICAgYXV0byB0ZXN0UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcv
Il1dOworICAgIGlkIHRlc3RJbnRlcmFjdGlvblN0YXRlID0gW3dlYlZpZXcgaW50ZXJhY3Rpb25T
dGF0ZV07CisgICAgYXV0byBvcmlnaW5hbFVSTCA9IFt3ZWJWaWV3IFVSTF07CisKKyAgICAvLyBT
dXNwZW5kIHRoZSBwYWdlLgorICAgIFt3ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4o
Qk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworCisgICAgLy8gVGhlIHRpbWVyIHNob3VsZCBubyBsb25nZXIgYmUgZmlyaW5nLgorICAgIGxh
c3RUaW1lckZpcmVDb3VudCA9IHRpbWVyRmlyZWRDb3VudDsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgxMDApOworICAgIEVYUEVDVF9FUShsYXN0VGltZXJGaXJlQ291bnQs
IHRpbWVyRmlyZWRDb3VudCk7CisKKyAgICBhdXRvIGNoZWNrVGhyb3dzID0gW10oRnVuY3Rpb248
dm9pZCgpPiYmIGYpIHsKKyAgICAgICAgQHRyeSB7CisgICAgICAgICAgICBmKCk7CisgICAgICAg
IH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICAvLyBNb3N0IG9w
ZXJhdGlvbnMgb24gV0tXZWJWaWV3IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBzdXNw
ZW5kZWQuCisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAid2luZG93Lm5hbWUiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IH0pKTsK
KyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUyIl07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVj
a1Rocm93cyhbJl0geyBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAImZvbyIgYmFzZVVSTDpuaWxd
OyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZ29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW06d2ViVmlldy5nZXQoKS5iYWNrRm9yd2FyZExpc3QuY3VycmVudEl0
ZW1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVs
b2FkXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHJl
bG9hZEZyb21PcmlnaW5dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsg
W3dlYlZpZXcgZ29CYWNrXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7
IFt3ZWJWaWV3IGdvRm9yd2FyZF07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyBzdG9wTG9hZGluZ107IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Ro
cm93cyhbJl0geyBbd2ViVmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc1dpdGhDb21wbGV0
aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsg
W3dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrV2l0aENvbXBsZXRpb25IYW5kbGVyOm5pbF07
IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzZXRBbGxN
ZWRpYVBsYXliYWNrU3VzcGVuZGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgcmVxdWVzdE1lZGlhUGxh
eWJhY2tTdGF0ZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKFdLTWVkaWFQbGF5YmFja1N0YXRlKSB7
IH1dOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgc2V0
Q2FtZXJhQ2FwdHVyZVN0YXRlOldLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUgY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJW
aWV3IHNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSBj
b21wbGV0aW9uSGFuZGxlcjpuaWxdOyB9KSk7CisjaWYgVEFSR0VUX09TX0lQSE9ORQorICAgIEVY
UEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJSW1hZ2UgKnNuYXBzaG90LCBOU0Vy
cm9yICplcnJvcikgeyB9XTsgfSkpOworI2Vsc2UKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93
cyhbJl0geyBbd2ViVmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0ltYWdlICpzbmFwc2hvdCwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0p
KTsKKyNlbmRpZgorICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IFt3ZWJWaWV3IGNy
ZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAq
ZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Ro
cm93cyhbJl0geyBbd2ViVmlldyBjcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsgfV07IH0pKTsKKyAgICBFWFBF
Q1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0JhY2tGb3J3YXJk
TmF2aWdhdGlvbkdlc3R1cmVzID0gWUVTOyB9KSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tUaHJv
d3MoWyZdIHsgd2ViVmlldy5nZXQoKS5jdXN0b21Vc2VyQWdlbnQgPSBAImZvbyI7IH0pKTsKKyAg
ICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c0xpbmtQ
cmV2aWV3ID0gWUVTOyB9KSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICBFWFBFQ1RfVFJV
RShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgpLmFsbG93c01hZ25pZmljYXRpb24gPSBZ
RVM7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyB3ZWJWaWV3LmdldCgp
Lm1hZ25pZmljYXRpb24gPSAxLjE7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyBbd2ViVmlldyBzZXRNYWduaWZpY2F0aW9uOjEuMSBjZW50ZXJlZEF0UG9pbnQ6Q0dQb2lu
dE1ha2UoMCwgMCldOyB9KSk7CisjZW5kaWYKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyB3ZWJWaWV3LmdldCgpLnBhZ2Vab29tID0gMS4xOyB9KSk7CisgICAgRVhQRUNUX1RSVUUo
Y2hlY2tUaHJvd3MoWyZdIHsgW3dlYlZpZXcgZmluZFN0cmluZzpAImZvbyIgd2l0aENvbmZpZ3Vy
YXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsgfV07
IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhbJl0geyBbd2ViVmlldyBzdGFydERv
d25sb2FkVXNpbmdSZXF1ZXN0OnRlc3RSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsgfV07IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja1Rocm93cyhb
Jl0geyB3ZWJWaWV3LmdldCgpLmludGVyYWN0aW9uU3RhdGUgPSB0ZXN0SW50ZXJhY3Rpb25TdGF0
ZTsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrVGhyb3dzKFsmXSB7IHdlYlZpZXcuZ2V0KCku
bWVkaWFUeXBlID0gQCJ0ZXh0L2h0bWwiOyB9KSk7CisKKyAgICAvLyBTb21lIG9mIHRoZSBiYXNp
YyBBUEkgc3RpbGwgd29ya3MuCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0uYWJz
b2x1dGVTdHJpbmcsIG9yaWdpbmFsVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XS5iYWNrSXRlbSwgbmlsKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgdGl0bGVdLCBAIiIpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBp
c0xvYWRpbmddKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgZXN0aW1hdGVkUHJvZ3Jlc3NdLCAx
LjApOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBjYW5Hb0JhY2tdKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW3dlYlZpZXcgY2FuR29Gb3J3YXJkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3
IGhhc09ubHlTZWN1cmVDb250ZW50XSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHNlcnZlclRy
dXN0XSwgbmlsKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgY2FtZXJhQ2FwdHVyZVN0YXRlXSwg
V0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBtaWNyb3Bo
b25lQ2FwdHVyZVN0YXRlXSwgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpOworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBjdXN0b21Vc2VyQWdlbnRdLCBAIiIpOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IGFsbG93c0xpbmtQcmV2aWV3XSk7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgYWxsb3dzTWFnbmlmaWNhdGlvbl0pOworICAgIEVYUEVD
VF9FUShbd2ViVmlldyBtYWduaWZpY2F0aW9uXSwgMS4wKTsKKyNlbmRpZgorICAgIEVYUEVDVF9F
UShbd2ViVmlldyBwYWdlWm9vbV0sIDEuMCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IG1lZGlhVHlwZV0sIEAiIik7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhyb3dzKFsmXSB7IFt3
ZWJWaWV3IGludGVyYWN0aW9uU3RhdGVdOyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoZWNrVGhy
b3dzKFsmXSB7IFt3ZWJWaWV3IHRoZW1lQ29sb3JdOyB9KSk7CisKKyAgICAvLyBSZXN1bWUgdGhl
IHBhZ2UuCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXN1bWVQYWdlOl4oQk9P
TCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIFt3ZWJWaWV3IGFkZFRvVGVzdFdpbmRvd107CisKKyAgICAvLyBUaGUgdGltZXIgc2hvdWxk
IHN0YXJ0IGZpcmluZyBhZ2Fpbi4KKyAgICBsYXN0VGltZXJGaXJlQ291bnQgPSB0aW1lckZpcmVk
Q291bnQ7CisgICAgd2hpbGUgKGxhc3RUaW1lckZpcmVDb3VudCA9PSB0aW1lckZpcmVkQ291bnQp
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBF
Q1RfVFJVRSh0aW1lckZpcmVkQ291bnQgPiBsYXN0VGltZXJGaXJlQ291bnQpOworCisgICAgLy8g
TWFrZSBzdXJlIHdlIGRpZCBub3QgY3Jhc2guCisgICAgRVhQRUNUX0VRKHBpZCwgW3dlYlZpZXcg
X3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CisKK1RFU1QoUHJvY2Vzc1N1c3BlbnNpb24sIERl
YWxsb2NhdGVTdXNwZW5kZWRWaWV3KQoreworICAgIC8vIERlYWxsb2NhdGluZyBhIHN1c3BlbmRl
ZCBXZWJWaWV3IHNob3VsZCBub3QgdGhyb3cgb3IgY3Jhc2guCisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAgICAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgX3N1c3BlbmRQYWdlOl4oQk9P
TCBzdWNjZXNzKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKworICAgICAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcG9zdE1lc3Nh
Z2UtcmVndWxhcmx5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYTZiMDRiZDE1ZTAwZDhj
YmRiZWVjYTE2ZGIyOTY2ZWM1YTU5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Bvc3RNZXNzYWdlLXJlZ3VsYXJseS5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0SW50
ZXJ2YWwoKCkgPT4geworICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9z
dE1lc3NhZ2UoJ3RpbWVyIGZpcmVkJyk7Cit9LCA1KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>