<?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>221909</bug_id>
          
          <creation_ts>2021-02-15 10:21:49 -0800</creation_ts>
          <short_desc>Add support for non app-bound requests</short_desc>
          <delta_ts>2021-02-18 13:22:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729219</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 10:21:49 -0800</bug_when>
    <thetext>We should add support for specifying non app-bound requests, mainly populating sub resource loads with this value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729220</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 10:22:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/73512988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729240</commentid>
    <comment_count>2</comment_count>
      <attachid>420337</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 11:05:30 -0800</bug_when>
    <thetext>Created attachment 420337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729245</commentid>
    <comment_count>3</comment_count>
      <attachid>420337</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 11:11:03 -0800</bug_when>
    <thetext>Comment on attachment 420337
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:2334
&gt; +    m_requestIsNonAppBound = requestIsNonAppBound;

Can be moved inline in the header.

&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt; +bool ResourceRequestBase::isNonAppBound() const

Can be inline in header.

&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:778
&gt; +void ResourceRequestBase::setIsNonAppBound(bool isNonAppBound)

ditto.

&gt; Source/WebCore/platform/network/ResourceRequestBase.h:264
&gt; +    bool m_isNonAppBound : 1;

Should probably be moved before the Optional data member and with the other bits for better packing.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:90
&gt; +- (void)_isNonAppBoundRequest:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Internally this is IOS_FAMILY only, so why is the SPI both macOS too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729287</commentid>
    <comment_count>4</comment_count>
      <attachid>420337</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 12:10:25 -0800</bug_when>
    <thetext>Comment on attachment 420337
Patch

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

&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt;&gt; +bool ResourceRequestBase::isNonAppBound() const
&gt; 
&gt; Can be inline in header.

Will fix both of these.

&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.h:264
&gt;&gt; +    bool m_isNonAppBound : 1;
&gt; 
&gt; Should probably be moved before the Optional data member and with the other bits for better packing.

Ok, I will move this.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:90
&gt;&gt; +- (void)_isNonAppBoundRequest:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Internally this is IOS_FAMILY only, so why is the SPI both macOS too?

Mistake, I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729309</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 13:00:50 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #4)
&gt; Comment on attachment 420337 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420337&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt; &gt;&gt; +bool ResourceRequestBase::isNonAppBound() const
&gt; &gt; 
&gt; &gt; Can be inline in header.
&gt; 
&gt; Will fix both of these.
&gt; 

I get this complaint from the style bot: Inline functions should not be annotated with WEBCORE_EXPORT. Remove the macro, or move the inline function definition out-of-line. Moving back to cpp file for this reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729310</commentid>
    <comment_count>6</comment_count>
      <attachid>420337</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-15 13:01:41 -0800</bug_when>
    <thetext>Comment on attachment 420337
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt;&gt;&gt;&gt; +bool ResourceRequestBase::isNonAppBound() const
&gt;&gt;&gt; 
&gt;&gt;&gt; Can be inline in header.
&gt;&gt; 
&gt;&gt; Will fix both of these.
&gt; 
&gt; I get this complaint from the style bot: Inline functions should not be annotated with WEBCORE_EXPORT. Remove the macro, or move the inline function definition out-of-line. Moving back to cpp file for this reason.

Ignore stylebot in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729315</commentid>
    <comment_count>7</comment_count>
      <attachid>420354</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 13:10:36 -0800</bug_when>
    <thetext>Created attachment 420354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729343</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 13:36:36 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 420337 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420337&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt; &gt;&gt;&gt;&gt; +bool ResourceRequestBase::isNonAppBound() const
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Can be inline in header.
&gt; &gt;&gt; 
&gt; &gt;&gt; Will fix both of these.
&gt; &gt; 
&gt; &gt; I get this complaint from the style bot: Inline functions should not be annotated with WEBCORE_EXPORT. Remove the macro, or move the inline function definition out-of-line. Moving back to cpp file for this reason.
&gt; 
&gt; Ignore stylebot in this case.

I think it may be causing failures on the debug bot now:

ERROR: WebCore has a weak external symbol in it (/Volumes/Data/worker/macOS-Catalina-Debug-Build-EWS/build/WebKitBuild/Debug/WebCore.framework/Versions/A/WebCore)
ERROR: A weak external symbol is generated when a symbol is defined in multiple compilation units and is also marked as being exported from the library.
ERROR: A common cause of weak external symbols is when an inline function is listed in the linker export file.
ERROR: symbol __ZN7WebCore19ResourceRequestBase16setIsNonAppBoundEb
ERROR: symbol __ZNK7WebCore19ResourceRequestBase13isNonAppBoundEv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729365</commentid>
    <comment_count>9</comment_count>
      <attachid>420354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 14:11:35 -0800</bug_when>
    <thetext>Comment on attachment 420354
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:2332
&gt; +void DocumentLoader::setRequestIsNonAppBound(bool requestIsNonAppBound)

Please move to header.

&gt; Source/WebCore/loader/DocumentLoader.h:425
&gt; +    WEBCORE_EXPORT void setRequestIsNonAppBound(bool);

Drop WEBCORE_EXPORT once you&apos;ve inlined in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729366</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 14:12:15 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 420337 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420337&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt; &gt;&gt;&gt;&gt; +bool ResourceRequestBase::isNonAppBound() const
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Can be inline in header.
&gt; &gt;&gt; 
&gt; &gt;&gt; Will fix both of these.
&gt; &gt; 
&gt; &gt; I get this complaint from the style bot: Inline functions should not be annotated with WEBCORE_EXPORT. Remove the macro, or move the inline function definition out-of-line. Moving back to cpp file for this reason.
&gt; 
&gt; Ignore stylebot in this case.

I believe the correct fix is to stop the WEBCORE_EXPORT on the inline function in the header, as the style bot suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729382</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 14:33:01 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Alex Christensen from comment #6)
&gt; &gt; Comment on attachment 420337 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=420337&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:773
&gt; &gt; &gt;&gt;&gt;&gt; +bool ResourceRequestBase::isNonAppBound() const
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; Can be inline in header.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Will fix both of these.
&gt; &gt; &gt; 
&gt; &gt; &gt; I get this complaint from the style bot: Inline functions should not be annotated with WEBCORE_EXPORT. Remove the macro, or move the inline function definition out-of-line. Moving back to cpp file for this reason.
&gt; &gt; 
&gt; &gt; Ignore stylebot in this case.
&gt; 
&gt; I believe the correct fix is to stop the WEBCORE_EXPORT on the inline
&gt; function in the header, as the style bot suggested.

I see. I didn&apos;t realize that WEBCORE_EXPORT is not needed if the function is inlined in the header, but that makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729386</commentid>
    <comment_count>12</comment_count>
      <attachid>420375</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 14:39:37 -0800</bug_when>
    <thetext>Created attachment 420375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729397</commentid>
    <comment_count>13</comment_count>
      <attachid>420375</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 14:48:58 -0800</bug_when>
    <thetext>Comment on attachment 420375
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.h:424
&gt; +    bool requestIsNonAppBound() const { return m_requestIsNonAppBound; }

I am no familiar with the &apos;app-bound&apos; feature at all but I am wondering why we have the negative here in the API. Why aren&apos;t we using &quot;isAppBound&quot; instead of &quot;isNonAppBound&quot;. Seems to be (at least) that it would be more readable.

&gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:30
&gt;  enum class NavigatingToAppBoundDomain : bool { Yes, No };

Ugh. Please reverse the No and Yes here so that 0 means No and 1 means Yes.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:312
&gt; +- (void)_isNonAppBoundRequest:(void(^)(BOOL))completionHandler

Again, I wish this was called isAppBoundRequest

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:314
&gt; +#if PLATFORM(IOS_FAMILY)

Seems like this should cover those whole _isNonAppBoundRequest method implementation now that this method is iOS only?

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2901
&gt; +    bool m_requestIsNonAppBound { false };

It is super fishy don&apos;t have a flag like this on the WebPageProxy. A page is so far from a request. You can make many requests in a single page.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2237
&gt; +    bool m_requestIsNonAppBound { false };

Again, I don&apos;t see how a request being app bound is related to a WebPage since you can make MANY requests in a WebPage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729419</commentid>
    <comment_count>14</comment_count>
      <attachid>420375</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 15:12:44 -0800</bug_when>
    <thetext>Comment on attachment 420375
Patch

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

&gt;&gt; Source/WebCore/loader/DocumentLoader.h:424
&gt;&gt; +    bool requestIsNonAppBound() const { return m_requestIsNonAppBound; }
&gt; 
&gt; I am no familiar with the &apos;app-bound&apos; feature at all but I am wondering why we have the negative here in the API. Why aren&apos;t we using &quot;isAppBound&quot; instead of &quot;isNonAppBound&quot;. Seems to be (at least) that it would be more readable.

Hmm, yes I left it in the negative to match the call in CFNetwork but I am thinking now it would be better to reverse it at those call sites only and then store it as isAppBound in WebKit.

&gt;&gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:30
&gt;&gt;  enum class NavigatingToAppBoundDomain : bool { Yes, No };
&gt; 
&gt; Ugh. Please reverse the No and Yes here so that 0 means No and 1 means Yes.

I am sorry for my past self.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:314
&gt;&gt; +#if PLATFORM(IOS_FAMILY)
&gt; 
&gt; Seems like this should cover those whole _isNonAppBoundRequest method implementation now that this method is iOS only?

Right, will fix.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2901
&gt;&gt; +    bool m_requestIsNonAppBound { false };
&gt; 
&gt; It is super fishy don&apos;t have a flag like this on the WebPageProxy. A page is so far from a request. You can make many requests in a single page.

I use it as a holding place after WebPageProxy::loadRequest is called until it gets sent to the WebPage and stored in the main frame&apos;s document loader. Maybe &quot;currentRequestIsNonAppBound&quot;?

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2237
&gt;&gt; +    bool m_requestIsNonAppBound { false };
&gt; 
&gt; Again, I don&apos;t see how a request being app bound is related to a WebPage since you can make MANY requests in a WebPage.

Again, maybe &quot;currentRequestIsNonAppBound&quot; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729427</commentid>
    <comment_count>15</comment_count>
      <attachid>420375</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-15 15:26:38 -0800</bug_when>
    <thetext>Comment on attachment 420375
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2901
&gt;&gt;&gt; +    bool m_requestIsNonAppBound { false };
&gt;&gt; 
&gt;&gt; It is super fishy don&apos;t have a flag like this on the WebPageProxy. A page is so far from a request. You can make many requests in a single page.
&gt; 
&gt; I use it as a holding place after WebPageProxy::loadRequest is called until it gets sent to the WebPage and stored in the main frame&apos;s document loader. Maybe &quot;currentRequestIsNonAppBound&quot;?

Or, currentRequestIsAppBound if I reverse it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729458</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 16:39:22 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #15)
&gt; Comment on attachment 420375 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420375&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2901
&gt; &gt;&gt;&gt; +    bool m_requestIsNonAppBound { false };
&gt; &gt;&gt; 
&gt; &gt;&gt; It is super fishy don&apos;t have a flag like this on the WebPageProxy. A page is so far from a request. You can make many requests in a single page.
&gt; &gt; 
&gt; &gt; I use it as a holding place after WebPageProxy::loadRequest is called until it gets sent to the WebPage and stored in the main frame&apos;s document loader. Maybe &quot;currentRequestIsNonAppBound&quot;?
&gt; 
&gt; Or, currentRequestIsAppBound if I reverse it.

Does it reset after we&apos;re done navigating? If not, it sounds like it should be lastRequestWasAppBound, no? or maybe even better: lastNavigationWasAppBound. I personally find &quot;request&quot; at page level to be confusing (although I understand it matches WKWebView.loadRequest API). Internally, the loadRequest results in a main frame navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729806</commentid>
    <comment_count>17</comment_count>
      <attachid>420501</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-16 11:12:55 -0800</bug_when>
    <thetext>Created attachment 420501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729815</commentid>
    <comment_count>18</comment_count>
      <attachid>420505</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-16 11:18:50 -0800</bug_when>
    <thetext>Created attachment 420505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729816</commentid>
    <comment_count>19</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-16 11:19:25 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; (In reply to katherine_cheney from comment #15)
&gt; &gt; Comment on attachment 420375 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=420375&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2901
&gt; &gt; &gt;&gt;&gt; +    bool m_requestIsNonAppBound { false };
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; It is super fishy don&apos;t have a flag like this on the WebPageProxy. A page is so far from a request. You can make many requests in a single page.
&gt; &gt; &gt; 
&gt; &gt; &gt; I use it as a holding place after WebPageProxy::loadRequest is called until it gets sent to the WebPage and stored in the main frame&apos;s document loader. Maybe &quot;currentRequestIsNonAppBound&quot;?
&gt; &gt; 
&gt; &gt; Or, currentRequestIsAppBound if I reverse it.
&gt; 
&gt; Does it reset after we&apos;re done navigating? If not, it sounds like it should
&gt; be lastRequestWasAppBound, no? or maybe even better:
&gt; lastNavigationWasAppBound. I personally find &quot;request&quot; at page level to be
&gt; confusing (although I understand it matches WKWebView.loadRequest API).
&gt; Internally, the loadRequest results in a main frame navigation.

I agree this makes more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730337</commentid>
    <comment_count>20</comment_count>
      <attachid>420505</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-17 09:58:19 -0800</bug_when>
    <thetext>Comment on attachment 420505
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:112
&gt; +        request.setIsAppBound(frame.mainFrame().document()-&gt;loader()-&gt;lastNavigationWasAppBound());

These need null checks

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:769
&gt; +    request.setIsAppBound(webPage.mainFrame()-&gt;document()-&gt;loader()-&gt;lastNavigationWasAppBound());

ditto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:51
&gt; +#else
&gt; +#define APP_BOUND_REQUEST_ADDITIONS

This isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730384</commentid>
    <comment_count>21</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-17 10:49:11 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #20)
&gt; Comment on attachment 420505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420505&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:112
&gt; &gt; +        request.setIsAppBound(frame.mainFrame().document()-&gt;loader()-&gt;lastNavigationWasAppBound());
&gt; 
&gt; These need null checks

Will fix.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:769
&gt; &gt; +    request.setIsAppBound(webPage.mainFrame()-&gt;document()-&gt;loader()-&gt;lastNavigationWasAppBound());
&gt; 
&gt; ditto

Will fix.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:51
&gt; &gt; +#else
&gt; &gt; +#define APP_BOUND_REQUEST_ADDITIONS
&gt; 
&gt; This isn&apos;t needed.

It will always use the Internal SDK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730398</commentid>
    <comment_count>22</comment_count>
      <attachid>420505</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-17 11:04:18 -0800</bug_when>
    <thetext>Comment on attachment 420505
Patch

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

I think this looks great, but I don&apos;t think we want to limit this concept to iOS-only. r- to fix that, but otherwise this is ready to go.

&gt; Source/WebCore/loader/DocumentLoader.h:423
&gt; +#if PLATFORM(IOS_FAMILY)

I don&apos;t think this concept is limited to IOS_FAMILY only, is it?

&gt; Source/WebCore/loader/DocumentLoader.h:666
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1363
&gt; +    parameters.request.setIsAppBound(lastNavigationWasAppBound == LastNavigationWasAppBound::Yes ? true : false);

nit: I think you just need &quot;lastNavigationWasAppBound == LastNavigationWasAppBound::Yes&quot; (the additional ternary operation is redundant)

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:880
&gt; +        redirectRequest.setIsAppBound(request.isAppBound());

I wonder if the test is really necessary before setting. Maybe just always set the app-bound state of the redirect to match the original request, since we always want the redirect to have the state of the originating request.

&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:174
&gt; +#if PLATFORM(IOS_FAMILY)

I don&apos;t think this is limited to IOS.

&gt; Source/WebKit/Shared/WebPageCreationParameters.h:245
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1322
&gt; +#if PLATFORM(IOS_FAMILY)

I don&apos;t think this should be iOS-only

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:-7880
&gt; -    

Nit: Unneeded whitespace change.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1842
&gt; +#if PLATFORM(IOS_FAMILY)

I don&apos;t thin this should be iOS-only

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:517
&gt; +#if PLATFORM(IOS_FAMILY)

Not iOS-only

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1624
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6427
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1411
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2236
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto

&gt; Source/WebKit/WebProcess/WebPage/WebPage.messages.in:633
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:51
&gt;&gt;&gt; +#define APP_BOUND_REQUEST_ADDITIONS
&gt;&gt; 
&gt;&gt; This isn&apos;t needed.
&gt; 
&gt; It will always use the Internal SDK?

Your test says APPLE_INTERNAL_SDK only, so it seems like yes?

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.h:70
&gt; +#if PLATFORM(IOS_FAMILY)

Not iOS-only

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:242
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730732</commentid>
    <comment_count>23</comment_count>
      <attachid>420794</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-17 21:31:48 -0800</bug_when>
    <thetext>Created attachment 420794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730733</commentid>
    <comment_count>24</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-17 21:32:21 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #22)
&gt; Comment on attachment 420505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420505&amp;action=review
&gt; 
&gt; I think this looks great, but I don&apos;t think we want to limit this concept to
&gt; iOS-only. r- to fix that, but otherwise this is ready to go.
&gt; 

Thanks! Latest patch makes these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730965</commentid>
    <comment_count>25</comment_count>
      <attachid>420794</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-18 12:09:06 -0800</bug_when>
    <thetext>Comment on attachment 420794
Patch

Excellent! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731006</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 13:22:37 -0800</bug_when>
    <thetext>Committed r273102: &lt;https://commits.webkit.org/r273102&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420794.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420337</attachid>
            <date>2021-02-15 11:05:30 -0800</date>
            <delta_ts>2021-02-15 13:10:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221909-20210215110529.patch</filename>
            <type>text/plain</type>
            <size>37377</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uZjhmZDhiMDQ3M2Y4ZjQyYjFlN2IwMTE4Y2UwNDU5
OGFlZTdkNGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAyLTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHJlcXVlc3RJc05vbkFwcEJvdW5kIGluIHRoZSBEb2N1bWVudExvYWRlciBzbyB3ZSBj
YW4gcGFzcyBpdAorICAgICAgICB0byBhbGwgc3ViIHJlc291cmNlIGxvYWRzLiBTZWUgV2ViS2l0
IGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0
SXNOb25BcHBCb3VuZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVxdWVzdElzTm9uQXBwQm91bmQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRBc0lzb2xhdGVkQ29weSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjppc05vbkFwcEJvdW5kIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldElzTm9uQXBw
Qm91bmQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmRlY29kZUJh
c2UpOgorCiAyMDIxLTAyLTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIFdlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCB0byBQ
YWdlIFNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiZTlhNzhmNDZkNWY2YWVlZTFkYWM4ZjM5MDgwNWY1
NWI4ZDhjMGEuLjY1ODIyNTA0OTIzNjMyNzU2YjQyNGMwYzRiYTI5YzU5NmZhY2FjYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjEtMDItMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG5vbiBhcHAtYm91
bmQgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzM1MTI5ODg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHBhcmFtZXRl
ciB0byB0aGUgUmVzb3VyY2VSZXF1ZXN0IGNsYXNzIHNwZWNpZnlpbmcgbm9uLWFwcAorICAgICAg
ICBib3VuZCByZXF1ZXN0cyBhbmQgcG9wdWxhdGUgc3VicmVzb3VyY2UgbG9hZHMgYW5kIHByZWNv
bm5lY3QgdGFza3Mgd2l0aCB0aGlzIHZhbHVlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJl
Y29ubmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9OYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46
OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9pc05vbkFwcEJvdW5kUmVxdWVzdDpdKToKKyAgICAgICAgU1BJIGZv
ciB0ZXN0aW5nLgorCisgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOb25BcHBCb3VuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNOb25BcHBCb3VuZFJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAgICAgICAgRm9yIHRoZSBjYXNlIG9mIGEgbWFp
biByZXNvdXJjZSBsb2FkIHdpdGhvdXQgYSBuYXZpZ2F0aW9uLCBsaWtlIGZyb20gYWJvdXQ6Ymxh
bmssCisgICAgICAgIHRoZSBtYWluIHJlc291cmNlIGxvYWQgdXNlcyB0aGUgb3JpZ2luYWwgZG9j
dW1lbnQgbG9hZGVyIHdoaWNoIHdhcyBjcmVhdGVkIGJlZm9yZQorICAgICAgICBXZWJQYWdlOjps
b2FkUmVxdWVzdCBzZXRzIHRoZSB2YWx1ZSBvZiBtX3JlcXVlc3RJc05vbkFwcEJvdW5kLiBGb3Ig
dGhpcyByZWFzb24sCisgICAgICAgIHdlIHNob3VsZCBub3QgY2hlY2sgdGhlIGRvY3VtZW50IGxv
YWRlciB2YWx1ZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UgYW5kCisgICAgICAgIGtub3cgdGhhdCB0
aGUgcmVzb3VyY2UgcmVxdWVzdCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuIAorCisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9yZXF1ZXN0SXNO
b25BcHBCb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICBX
ZSBzaG91bGQgc3RvcmUgaXNOb25BcHBCb3VuZFJlcXVlc3QgaW4gdGhlIGRvY3VtZW50IGxvYWRl
ciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBwYWdlIHNvIHdlIGRvbid0IGFmZmVjdCBwcmV2aW91
cyBsb2FkcyB3aGlsZSBpbml0aWF0aW5nIHRoZQorICAgICAgICBuYXZpZ2F0aW9uIHRvIHRoZSBu
ZXh0IHNpdGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRSZXF1ZXN0SXNOb25BcHBCb3VuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjppc05vbkFwcEJvdW5kUmVxdWVzdCk6CisKIDIwMjEtMDItMTUgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjcyODMxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YWQ1M2Y3MTk4NjRjYTNjYjI2MDNiOTg5ZmQ1ODhiZDU1NDY3MmI3Ny4uYmU5MzIzNzk4M2YwMmY3
MWYxYjZkYzA3OWJhOTVjOTQ0YjViNGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMzI4LDYgKzIzMjgsMTMgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVu
dExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cgogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCit2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0SXNOb25BcHBCb3Vu
ZChib29sIHJlcXVlc3RJc05vbkFwcEJvdW5kKQoreworICAgIG1fcmVxdWVzdElzTm9uQXBwQm91
bmQgPSByZXF1ZXN0SXNOb25BcHBCb3VuZDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICN1bmRlZiBQQUdFX0lECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCmluZGV4IGI2M2QxN2IxZmIzYjZkNTQyNTFiNDg0NTRiYjIwMjU4YjRhMjIxNjguLjgxNDM5
MzE0MjE0YzllMDk1Y2IyY2JkMjFjN2JhZjRmN2VmN2NhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCkBAIC00MTksNiArNDE5LDExIEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
Jik7CiAjZW5kaWYKKyAgICAgICAgCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBib29s
IHJlcXVlc3RJc05vbkFwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SXNOb25BcHBC
b3VuZDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdElzTm9uQXBwQm91bmQo
Ym9vbCk7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CkBA
IC02NTcsNiArNjYyLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYWxsb3dzV2ViQXJjaGl2
ZUZvck1haW5GcmFtZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0RhdGFVUkxzRm9yTWFp
bkZyYW1lIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBt
X3JlcXVlc3RJc05vbkFwcEJvdW5kIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogaW5saW5lIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlY29yZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVyZUNsaWVudE5v
dGlmaWNhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApp
bmRleCA5ZGNlOTE3ZTJhODk1MDcyYTk0YTBiYTdiNjliMTA0OWFhZWRhZWNmLi42NDBjZWFkMDZl
OTYyNzY2MzM0ZGJjYTM2NTU3ZmQ0MWZmN2QyNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTk1LDYg
Kzk1LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRBc0lzb2xhdGVkQ29weShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIG90aGVyKQogICAgIGlmIChvdGhlci5tX2h0dHBCb2R5KQogICAg
ICAgICBzZXRIVFRQQm9keShvdGhlci5tX2h0dHBCb2R5LT5pc29sYXRlZENvcHkoKSk7CiAgICAg
c2V0QWxsb3dDb29raWVzKG90aGVyLm1fYWxsb3dDb29raWVzKTsKKyAgICBzZXRJc05vbkFwcEJv
dW5kKG90aGVyLmlzTm9uQXBwQm91bmQoKSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aXNFbXB0eSgpIGNvbnN0CkBAIC03NjksNCArNzcwLDE0IEBAIFN0cmluZyBSZXNvdXJjZVJl
cXVlc3RCYXNlOjpwYXJ0aXRpb25OYW1lKGNvbnN0IFN0cmluZyYgZG9tYWluKQogI2VuZGlmCiB9
CiAKK2Jvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNOb25BcHBCb3VuZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faXNOb25BcHBCb3VuZDsKK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNl
OjpzZXRJc05vbkFwcEJvdW5kKGJvb2wgaXNOb25BcHBCb3VuZCkKK3sKKyAgICBtX2lzTm9uQXBw
Qm91bmQgPSBpc05vbkFwcEJvdW5kOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDdkM2M4NjMzZTJi
ZTExY2RiMmJkYTVmN2Y2N2UwMmM0Yzc2M2YxNjUuLjdjY2RkNjRkMmUxN2FkZmNjYjBiNmY3MGYx
MjNmMDE5NzNmMTBjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xOTUsNiArMTk1LDkgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzTm9uQXBwQm91bmQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzTm9u
QXBwQm91bmQoYm9vbCk7CisKIHByb3RlY3RlZDoKICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VS
ZXF1ZXN0IGlzIGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgcmVxdWVzdAogICAgIFJlc291cmNlUmVxdWVzdEJhc2UoKQpAQCAtMjA1LDYgKzIwOCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkKHRydWUp
CiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yKGZhbHNlKQogICAgICAgICAsIG1faXNU
b3BTaXRlKGZhbHNlKQorICAgICAgICAsIG1faXNOb25BcHBCb3VuZChmYWxzZSkKICAgICB7CiAg
ICAgfQogCkBAIC0yMjAsNiArMjI0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fcGxhdGZv
cm1SZXF1ZXN0Qm9keVVwZGF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVj
dG9yKGZhbHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQorICAgICAgICAsIG1faXNO
b25BcHBCb3VuZChmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC0yNTYsNiArMjYxLDcgQEAgcHJv
dGVjdGVkOgogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBPcHRpb25hbDxTeXN0ZW1QcmV2
aWV3SW5mbz4gbV9zeXN0ZW1QcmV2aWV3SW5mbzsKICNlbmRpZgorICAgIGJvb2wgbV9pc05vbkFw
cEJvdW5kIDogMTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGFzUmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3Q7CkBAIC0yODgsNiArMjk0LDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IG1faXNUb3BTaXRlOwogICAgIGVuY29kZXIgPDwgbV9wcmlvcml0
eTsKICAgICBlbmNvZGVyIDw8IG1fcmVxdWVzdGVyOworICAgIGVuY29kZXIgPDwgbV9pc05vbkFw
cEJvdW5kOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMzY1LDYgKzM3MiwxMiBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIgPSAq
cmVxdWVzdGVyOwogCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNOb25BcHBCb3VuZDsKKyAgICBkZWNv
ZGVyID4+IGlzTm9uQXBwQm91bmQ7CisgICAgaWYgKCFpc05vbkFwcEJvdW5kKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgbV9pc05vbkFwcEJvdW5kID0gKmlzTm9uQXBwQm91bmQ7CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCA3YTkzMTk0OGEwNTZlYjkyZWNiZDNmMmQyNzRkZjE0NGRm
MDFhOTVlLi5lMjc3MjY5NDQ0YjIyZThmN2VlMGUxNDRiYTE1OTNlMWQ5MmU0MWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM0
NCw3ICsxMzQ0LDcgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzczo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERlYnVnTW9kZUVuYWJsZWQ7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNv
bm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBBcHBCb3VuZFJlcXVlc3QgaXNBcHBCb3VuZFJlcXVlc3QpCiB7CiAgICAgTE9HKE5ldHdv
cmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGludClzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTEzNjAsNiArMTM2MCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpCiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKKyAgICBwYXJh
bWV0ZXJzLnJlcXVlc3Quc2V0SXNOb25BcHBCb3VuZChpc0FwcEJvdW5kUmVxdWVzdCA9PSBBcHBC
b3VuZFJlcXVlc3Q6Ok5vID8gdHJ1ZSA6IGZhbHNlKTsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQ
cm94eUlEID0gd2ViUGFnZVByb3h5SUQ7CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQ
YWdlSUQ7CiAgICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxMTI2MmE4NTZiMTM4MTMxNjkyYzI1NTQ4MmIzYmE2
NTc0NDVlYjIxLi40YzVjNzJmMDNjYWQ2YzMzMTIxNmMwZWRiMGQ0NDg3MjYyMmI5YjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yODQs
NyArMjg0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBjYWNoZVN0
b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFj
ayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNz
aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBBcHBCb3VuZFJlcXVlc3Qp
OwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNThiM2U0Yzg2OGM3MDEy
Y2RiMzU2NTZlYWFiZjJiNjE4MWYyYmM3ZS4uNzM2Y2Y4YzBkYzBlNzA4OWU3NjE1YjM0NjlmZDQx
NTAxNDE1NjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Nyw3ICs3Nyw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJv
b2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3Vt
ZSgpCiAKLSAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisgICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFVSTCB1cmwsIFN0cmlu
ZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGVu
dW06Ym9vbCBXZWJLaXQ6OkFwcEJvdW5kUmVxdWVzdCBpc0FwcEJvdW5kUmVxdWVzdCk7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIENsZWFyUHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IDFlMjRkZjBiYTU3Y2NiZDEzODIwYWJjY2E5MzUyNmI3YmRmODIz
NDEuLmVkZmIwM2Q3MzQwZWMzMjY2NzBiODk3MWMxMWE4YjZmMWU4MGZjNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNzM2LDYgKzczNiw3IEBAIGRlZiBo
ZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6
IFsnIkVkaXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092
ZXJ3cml0ZSc6IFsnIkRvd25sb2FkSUQuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6QXBwQm91bmRS
ZXF1ZXN0JzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAgJ1dl
YktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2Vy
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250
ZW50V29ybGRTaGFyZWQuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oCmluZGV4IGFlZGMxNjliMzkwMTZhZjMwMjJiOTFhNmFjMDk3
MDZhM2MwMGFhMzkuLjgxNDc5YjI2OWEzODZlNTYxNWE1NDJiMGFiNTQ0NDlmZmRhYWZlNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4u
aApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBib29sIHsgWWVzLCBObyB9OworZW51bSBjbGFzcyBB
cHBCb3VuZFJlcXVlc3QgOiBib29sIHsgTm8sIFllcyB9OwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMGY4Yjgx
OTczMWIyZDI3ZDU0MWIzNDY0OTk3Y2M4NGNjNTVjOGEzNi4uMTcyYjlmNDViMDNkNzBjZDUxMTZk
NmZmYTVlYTE1Mjk5ZGU5NTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3MCw2ICsxNzAsOSBAQCB2b2lkIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGVuY29kZXIgPDwgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWluczsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ZW5jb2RlciA8PCByZXF1ZXN0SXNOb25BcHBCb3VuZDsKICNlbmRpZgogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBjYW5V
c2VDcmVkZW50aWFsU3RvcmFnZTsKQEAgLTU1OCw3ICs1NjEsMTAgQEAgT3B0aW9uYWw8V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAj
ZW5kaWYKLQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnJlcXVlc3RJc05vbkFwcEJvdW5kKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCBiMjMyMGJiODA1NTNhMTMxNWUyZjM3MDZmOWRjZjk5YmJiYWM0NTUwLi42
M2E5Y2QzOTIyMzNkMWQ4NDg2ZDEwNDc0YzE4MGViZTMyNjM0ZTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yNDEsNiArMjQx
LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKICAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsg
ZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCByZXF1
ZXN0SXNOb25BcHBCb3VuZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBib29sIGNhblVzZUNyZWRl
bnRpYWxTdG9yYWdlIHsgdHJ1ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCBmNTJlYWJmMWQyNWFmODYzMmQ2
NjdiYmVjZTNjZTg1MGYwOTFhOWE3Li5iYmRhOWI3ZjBjNDc1ZGI4ZWM3NzM5YTNmZjdlOGYwYjU5
YjgyNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0KQEAgLTIxMyw2ICsyMTMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVu
Y29kZQogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJl
cXVlc3QucmVxdWVzdGVyKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuY2FjaGVQ
b2xpY3koKTsKKyAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5pc05vbkFwcEJvdW5kKCk7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCkBAIC0yNTYsNiArMjU3LDExIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYg
ZGVjb2RlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0Q2Fj
aGVQb2xpY3koY2FjaGVQb2xpY3kpOwogCisgICAgYm9vbCBpc05vbkFwcEJvdW5kOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaXNOb25BcHBCb3VuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNOb25BcHBCb3VuZChpc05vbkFwcEJvdW5kKTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDk3
NDQzNDEwMWY4NGVjNTI0OTE4YWJjMTRjM2YzMWZiN2FiZTZiY2IuLjU0ODFmYjg3ZDE1NTIzOTY4
N2Q0MWU3ZjcwMzRlN2RjMWE4YzljMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBA
IC04Nyw0ICs4Nyw2IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOihCT09MKW92ZXJyaWRlVGltZXIgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Nl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3Rpbmc6KE5TVVJMICop
dXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0g
KHZvaWQpX2lzTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1Rlc3RpbmcubW0KaW5kZXggMGZhNWRiMGZmZWUzZmI2OWFkOWU5MTI1ZjFkMTU0YmNh
Y2JkZThiMC4uYWEyN2FkMWM0MmQ4MWExYmQ3ZjQ5MmMyZjBiYmM5MGUzZjgzM2YxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rpbmcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW0KQEAgLTMwOSw2ICszMDksMTQgQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfaXNOb25B
cHBCb3VuZFJlcXVlc3Q6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBf
cGFnZS0+aXNOb25BcHBCb3VuZFJlcXVlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNOb25BcHBCb3VuZCkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihpc05vbkFwcEJvdW5kKTsKKyAgICB9KTsKK30KKworCiAtICh2b2lk
KV9kaWRQcmVzZW50Q29udGFjdFBpY2tlcgogewogICAgIC8vIEZvciBzdWJjbGFzc2VzIHRvIG92
ZXJyaWRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQppbmRleCBlMTVmMTBjYTIwMTU5MjBhMTQyZTZkZWFjZDYyMjVkNDY5ZWM4NTA4
Li5jNzEyY2M2YTg4YmM5MzYzNTRkNGIwYTFmZGZhYmYzOTQxZWQ3MmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNzIs
NiArNzIsMTIgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1dl
YkZpbHRlckV2YWx1YXRvclNQSS5oPgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNp
bXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KKyNlbHNlCisj
ZGVmaW5lIFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworI2VuZGlmCisKIFNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhXZWJDb250ZW50QW5hbHlzaXMpOwogU09GVF9MSU5LX0NMQVNTKFdlYkNv
bnRlbnRBbmFseXNpcywgV2ViRmlsdGVyRXZhbHVhdG9yKTsKICNlbmRpZgpAQCAtNTc1LDYgKzU4
MSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvbwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbygpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNldElzTm9uQXBwQm91bmQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQor
eworICAgIFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworICAgIG1fcmVxdWVzdElzTm9uQXBwQm91
bmQgPSByZXF1ZXN0LmlzTm9uQXBwQm91bmQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6Omlz
Tm9uQXBwQm91bmRSZXF1ZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpJc05vbkFwcEJvdW5kUmVxdWVzdCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNL
X0NPTVBMRVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGEzMDk4MmUyYWEyZWY3ZDU3M2IxZTAxM2I0
OTE5ZTQ1YzdlYTVlNjUuLmJmNDRiNjg0YzBlNzc5ZGRlOTFkYmEwY2NiYzFmODI1ZGE4ODEyNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTU1NCwxMSArMTU1NCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIEFwcEJvdW5kUmVxdWVzdCBpc0FwcEJvdW5kUmVxdWVzdCkKIHsKICAgICBpZiAoIXVybC5p
c1ZhbGlkKCkgfHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHNlc3Np
b25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSwgMCk7CisgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdl
YlBhZ2VQcm94eUlELCB3ZWJQYWdlSUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgaXNBcHBCb3VuZFJlcXVlc3Qp
LCAwKTsKIH0KIAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2ViUHJv
Y2Vzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTMzMzkwYTJkN2EyYTA4NTc5OGI5YjY0N2E5MzFhNWY3
YmE0YTJlZC4uNTc1NmVmN2I3ZWNiOGZhYTE1ZTNhOWI0NjgzOTc4MTZiNTJkZWYxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExvY2FsU3Rv
cmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCi0g
ICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIEFwcEJvdW5kUmVxdWVzdCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRS
ZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggNDhkNzRlMmZhNTdmNDQwOWQ5ZTMwMWI3NmI5NTUxOTY5ZTM2MGY2My4uMGEy
MWY1OWVjNTNlNGFiMjk1YmE1ZTY2ZTIzOWE5Y2VjMWZmYjY4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzE5LDYgKzEzMTksMTAgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTaG8KICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JD
bGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRp
b25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGll
bnQgbmF2aWdhdGlvbiJfcykpOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzZXRJ
c05vbkFwcEJvdW5kKHJlcXVlc3QpOworI2VuZGlmCisKICAgICBsb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpKTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KQEAgLTQyOTksNyAr
NDMwMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1cmwp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBt
X2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZSA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKLSAg
ICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVjb25uZWN0VG8oc2Vzc2lv
bklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVybCwgdXNlckFnZW50KCksIHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkpOworICAg
IHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyhzZXNzaW9u
SUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgbV9yZXF1
ZXN0SXNOb25BcHBCb3VuZCA/IEFwcEJvdW5kUmVxdWVzdDo6Tm8gOiBBcHBCb3VuZFJlcXVlc3Q6
Olllcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFn
ZShib29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKQpAQCAtNzg1OSw2ICs3ODYzLDkgQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhX
ZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5
SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNo
b3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
ID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworI2VuZGlmCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3RJc05vbkFwcEJvdW5kID0g
bV9yZXF1ZXN0SXNOb25BcHBCb3VuZDsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAgICAgcGFyYW1ldGVycy5jYW5Vc2VDcmVkZW50
aWFsU3RvcmFnZSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CkBAIC03ODc3LDcgKzc4ODQs
NyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKICAgICBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyA9IHByZWZl
cmVuY2VzKCkubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCk7CiAjZW5kaWYKLSAgICAK
KwogICAgIHBhcmFtZXRlcnMudGV4dEludGVyYWN0aW9uRW5hYmxlZCA9IHByZWZlcmVuY2VzKCku
dGV4dEludGVyYWN0aW9uRW5hYmxlZCgpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDMxNGRhMzU0YTc0Y2IxOWVjYTQx
N2M0NGU2ODk0OGQ5MGRiYWI3MzguLjViNjkyMDEzYjE1ZmUzN2MwODQzNzVmOTI1ODM5N2EwNjg3
NWE4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODM5LDYg
KzE4MzksMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0
U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBzZXRJc05vbkFw
cEJvdW5kKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgaXNOb25BcHBCb3Vu
ZFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpOwpAQCAtMjg5NCw2ICsyODk5LDkgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdXNwZW5k
TWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIGJvb2wgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCB7IGZhbHNl
IH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4
IDQ4YjNhMjI1ZGZiNmIzMGRhMGM1ZDFmZmVhOWZlYzc2NWUxM2I5NjkuLjkwMDZjMzk2Nzg1ZWQ5
MmIxZGNjYTIzMzBkNmFlMTkyZTk0ZmQ4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEwNyw2ICsxMDcs
MTEgQEAgV2ViTG9hZGVyU3RyYXRlZ3k6On5XZWJMb2FkZXJTdHJhdGVneSgpCiAKIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBl
OjpNYWluUmVzb3VyY2UpCisgICAgICAgIHJlcXVlc3Quc2V0SXNOb25BcHBCb3VuZChmcmFtZS5t
YWluRnJhbWUoKS5kb2N1bWVudCgpLT5sb2FkZXIoKS0+cmVxdWVzdElzTm9uQXBwQm91bmQoKSk7
CisjZW5kaWYKKwogICAgIFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNl
LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBbdGhpcywgcmVmZXJyZXJQb2xpY3kgPSBvcHRp
b25zLnJlZmVycmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCByZXNvdXJjZSA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
PigmcmVzb3VyY2UpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpXSAoUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiYmIGxvYWRlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChsb2FkZXIpCiAgICAgICAg
ICAgICBzY2hlZHVsZUxvYWQoKmxvYWRlciwgcmVzb3VyY2UuZ2V0KCksIHJlZmVycmVyUG9saWN5
ID09IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CkBAIC03NjAsNiAr
NzY1LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRl
ciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnByZWNvbm5lY3RUbyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJQ
YWdlJiB3ZWJQYWdlLCBXZWJGcmFtZSYgd2ViRnJhbWUsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIHJlcXVlc3Quc2V0SXNOb25BcHBCb3VuZCh3ZWJQYWdlLm1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpLT5sb2FkZXIoKS0+cmVxdWVzdElzTm9uQXBwQm91bmQoKSk7CisjZW5kaWYKKwogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoY29tcGxl
dGlvbkhhbmRsZXIpIHsKICAgICAgICAgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJMb2Fk
ZXJTdHJhdGVneTo6Z2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4NTU2YzEzZDVlNmE3N2FiZDk0MDE1
N2U5ODFlZmEyMDY1MGE4ZTQwLi4yODQyMDY0ODFkZTQwZjgyYTJiNmJhNDkxMzZjMTE4MmE2N2Nk
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNTE0LDYgKzUxNCw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnMocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKQogI2VuZGlm
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAsIG1fcmVxdWVzdElzTm9uQXBwQm91bmQo
cGFyYW1ldGVycy5yZXF1ZXN0SXNOb25BcHBCb3VuZCkKKyNlbmRpZgogewogICAgIEFTU0VSVCht
X2lkZW50aWZpZXIpOwogCkBAIC0xNjE4LDYgKzE2MjEsMTAgQEAgdm9pZCBXZWJQYWdlOjpwbGF0
Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBh
cmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQogeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgc2V0UmVxdWVzdElz
Tm9uQXBwQm91bmQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc05vbkFwcEJvdW5kKCkpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwogI2VuZGlmCkBAIC02NDE3LDYgKzY0MjQsMTAgQEAg
UmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYg
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmUKIHsKICAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRv
Y3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0
dXRlRGF0YSk7CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGRvY3VtZW50TG9hZGVy
LT5zZXRSZXF1ZXN0SXNOb25BcHBCb3VuZChtX3JlcXVlc3RJc05vbkFwcEJvdW5kKTsKKyNlbmRp
ZgorCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1fcGVuZGlu
Z05hdmlnYXRpb25JRCkgewogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRp
b25JRChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGNmMDQyNjJmNzFkOWEwZDE3ODUwMDFhOTA5ZDEwNTY5MWEz
NjEzMTIuLjA0NWIwZTQ0MWU4NTdkNTZkOWEyNDQ2NzY1ODE0ODYwYzlkZDBiMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0MDcsNyArMTQwNywx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJl
YWJsZUJpdG1hcChXZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gV1RGOjpudWxsb3B0KSBjb25zdDsKLQorICAgIAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBzZXRSZXF1ZXN0SXNOb25BcHBCb3Vu
ZChib29sIGlzTm9uQXBwQm91bmQpIHsgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCA9IGlzTm9uQXBw
Qm91bmQ7IH0KKyAgICB2b2lkIGlzTm9uQXBwQm91bmRSZXF1ZXN0KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCisgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAg
LTIyMjcsNiArMjIzMiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmF2aWdhdGlvbkhhc09j
Y3VyZWQgeyBmYWxzZSB9OwogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IGJvb2wgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29s
IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDM0YjEyYzQ2NDQ0ZmYxNTVh
NWUxNDMyMTk5YWQ4YTE3ODk5MTU4MmIuLjYzOTZhZjNhMTgwZTFmNzk5NmE2NTZjNTQ1YTQ4Y2Fk
YjYzMDczZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjI5LDQgKzYyOSw4IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAjZW5kaWYKIAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmco
V2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYworCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBJc05vbkFwcEJvdW5kUmVxdWVzdCgpIC0+IChi
b29sIGlzTm9uQXBwQm91bmQpIEFzeW5jCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZjY3MDNkNzA0Yzlm
YTY0YzBkMDBhYzlhMGNiYjhkNzFjNjQ3NDIxNy4uZjNiM2I2YmQ1ODU3Y2NiNWZjNjU0OTRjY2U2
ODNiNDQyZmE4ZjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ0NjAsNiArNDQ2MCwxMSBAQCB2b2lkIFdlYlBhZ2U6
OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgYW5p
bWF0ZWRFbGVtZQogICAgICAgICBzY2hlZHVsZUVkaXRvclN0YXRlVXBkYXRlRm9yU3RhcnRPckVu
ZENvbnRhaW5lck5vZGVJZk5lZWRlZChlbmRDb250YWluZXIuZ2V0KCkpOwogfQogCit2b2lkIFdl
YlBhZ2U6OmlzTm9uQXBwQm91bmRSZXF1ZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZyYW1l
KCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5yZXF1ZXN0SXNOb25BcHBCb3VuZCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJhNDEz
MTAwY2ZkYzdiMTZlZGI2NDU2NmIzYzlkYzZkMWRiMjgzNC4uMDZmYTEyYWJlZDI5M2Y5NjUxY2Iw
ZGI1ZmIzYTBlMWRlOGMxZWJlZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAyLTE1ICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBu
b24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNTEyOTg4Pgor
CisgICAgICAgIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGlzTm9uQXBwQm91bmRSZXF1ZXN0Ol0pOgorCiAy
MDIxLTAyLTE1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YGdpdCBjb21taXQgLXZgIHN1cHBvcnQgdG8gY29tbWl0LWxvZy1lZGl0b3IKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQppbmRleCBlYjFjNmI4NWE4OTI2ZGE3ODZiM2VkZTc3OGJlZmU5M2E2ZmRjMWU0
Li5lMWI1NzNjMjE3MzgwY2QwZDBmZjFjYjYyMzBjNjJiMjBlOWE5ZGNiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCkBAIC00NSw2ICs0NSwxMiBAQAogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9JbkFwcEJyb3dzZXJQcml2YWN5QWRkaXRpb25zLmg+CisjZWxzZQorI2RlZmluZSBB
UFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBpc0RvbmU7
CiAKIEBpbnRlcmZhY2UgQXBwQm91bmREb21haW5EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmln
YXRpb25EZWxlZ2F0ZT4KQEAgLTE0MTUsNCArMTQyMSw1NiBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAorI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkK
K3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtp
dC5vcmciOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0g
W05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
dXJsXV07CisgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IGlzTm9uQXBwQm91bmRSZXF1ZXN0Ol4oQk9PTCBpc05vbkFwcEJvdW5k
UmVxdWVzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc05vbkFwcEJvdW5kUmVxdWVzdCk7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb24pCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNTdHJpbmcg
KnN0YXJ0aW5nVVJMID0gQCJodHRwczovL3d3dy53ZWJraXQub3JnIjsKKyAgICBOU1N0cmluZyAq
bm9uQXBwQm91bmRVUkwgPSBAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSI7CisKKyAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpzdGFydGluZ1JlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpzdGFydGluZ1VSTF1dOworCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c3RhcnRpbmdSZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpu
b25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpub25BcHBCb3VuZFVSTF1dOworICAgIEFQUF9CT1VORF9SRVFV
RVNUX0FERElUSU9OUworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1
ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisK
KyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBpc05vbkFwcEJv
dW5kUmVxdWVzdDpeKEJPT0wgaXNOb25BcHBCb3VuZFJlcXVlc3QpIHsKKyAgICAgICAgRVhQRUNU
X1RSVUUoaXNOb25BcHBCb3VuZFJlcXVlc3QpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorI2VuZGlm
CisKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCAyMmE0ODI2YzQxMmIyOTQ5M2U1YzM0ZGQ0YWVjODM0
MDdmMWY5MzI4Li5lYTdhMjNlYWJlZTIyODcwNTc2ZDRmN2UxMzFiYjJiY2YxZWI3ODU5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjcsNiArNjcsNyBA
QAogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7
CiAtIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNjcmlwdCB3
aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJyb3IgKiop
ZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1bnNpZ25lZCll
eHBlY3RlZENsaWVudFdpZHRoOworLSAodm9pZClpc05vbkFwcEJvdW5kUmVxdWVzdDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0TWVzc2Fn
ZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA4NzEzNzkwYmE3OGIwODA1YWM4
Y2I4MzIzNDRkNjdjMzhjOTFiNzgyLi40MjU2YWVhZDQ5MGM5NzkxMWU5YTJlYzUyM2Q5ZmFmMDk4
OTNkMjU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBA
IC0yMzksNiArMjM5LDExIEBAIHN0YXRpYyBOU1N0cmluZyAqb3ZlcnJpZGVCdW5kbGVJZGVudGlm
aWVyKGlkLCBTRUwpCiAgICAgcmV0dXJuIGNsaWVudFdpZHRoOwogfQogCistICh2b2lkKWlzTm9u
QXBwQm91bmRSZXF1ZXN0Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
W3NlbGYgX2lzTm9uQXBwQm91bmRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdE1lc3NhZ2VIYW5kbGVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420354</attachid>
            <date>2021-02-15 13:10:36 -0800</date>
            <delta_ts>2021-02-15 14:39:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221909-20210215131035.patch</filename>
            <type>text/plain</type>
            <size>37013</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uMzcyMGE1NzVkOGNmYjI3NzU2NzFjM2QwYWZkNTFi
MDA4MWViMzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAyLTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHJlcXVlc3RJc05vbkFwcEJvdW5kIGluIHRoZSBEb2N1bWVudExvYWRlciBzbyB3ZSBj
YW4gcGFzcyBpdAorICAgICAgICB0byBhbGwgc3ViIHJlc291cmNlIGxvYWRzLiBTZWUgV2ViS2l0
IGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0
SXNOb25BcHBCb3VuZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVxdWVzdElzTm9uQXBwQm91bmQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRBc0lzb2xhdGVkQ29weSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZSk6CisK
IDIwMjEtMDItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgV2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkIHRvIFBhZ2UgU2V0
dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggYmJlOWE3OGY0NmQ1ZjZhZWVlMWRhYzhmMzkwODA1ZjU1YjhkOGMw
YS4uMTU3ODk4MzA0MTg0MGQxZjBmOGJhNTI0NWY2ZjI3YzZiN2ZhMmI5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2NyBAQAorMjAyMS0wMi0xNSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
OTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzUxMjk4OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHRvIHRo
ZSBSZXNvdXJjZVJlcXVlc3QgY2xhc3Mgc3BlY2lmeWluZyBub24tYXBwCisgICAgICAgIGJvdW5k
IHJlcXVlc3RzIGFuZCBwb3B1bGF0ZSBzdWJyZXNvdXJjZSBsb2FkcyBhbmQgcHJlY29ubmVjdCB0
YXNrcyB3aXRoIHRoaXMgdmFsdWUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0
VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9pc05vbkFwcEJvdW5kUmVxdWVzdDpdKToKKyAgICAgICAgU1BJIGZvciB0ZXN0aW5nLgorCisg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOb25BcHBCb3VuZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aXNOb25BcHBCb3VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9h
ZFJlc291cmNlKToKKyAgICAgICAgRm9yIHRoZSBjYXNlIG9mIGEgbWFpbiByZXNvdXJjZSBsb2Fk
IHdpdGhvdXQgYSBuYXZpZ2F0aW9uLCBsaWtlIGZyb20gYWJvdXQ6YmxhbmssCisgICAgICAgIHRo
ZSBtYWluIHJlc291cmNlIGxvYWQgdXNlcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnQgbG9hZGVyIHdo
aWNoIHdhcyBjcmVhdGVkIGJlZm9yZQorICAgICAgICBXZWJQYWdlOjpsb2FkUmVxdWVzdCBzZXRz
IHRoZSB2YWx1ZSBvZiBtX3JlcXVlc3RJc05vbkFwcEJvdW5kLiBGb3IgdGhpcyByZWFzb24sCisg
ICAgICAgIHdlIHNob3VsZCBub3QgY2hlY2sgdGhlIGRvY3VtZW50IGxvYWRlciB2YWx1ZSBmb3Ig
dGhlIG1haW4gcmVzb3VyY2UgYW5kCisgICAgICAgIGtub3cgdGhhdCB0aGUgcmVzb3VyY2UgcmVx
dWVzdCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVy
U3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3JlcXVlc3RJc05vbkFwcEJvdW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIFdlIHNob3VsZCBzdG9yZSBy
ZXF1ZXN0SXNOb25BcHBCb3VuZCBpbiB0aGUgZG9jdW1lbnQgbG9hZGVyIGluc3RlYWQKKyAgICAg
ICAgb2YgdGhlIHBhZ2Ugc28gd2UgZG9uJ3QgYWZmZWN0IHByZXZpb3VzIGxvYWRzIHdoaWxlIGlu
aXRpYXRpbmcgdGhlCisgICAgICAgIG5hdmlnYXRpb24gdG8gdGhlIG5leHQgc2l0ZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldFJlcXVlc3RJc05vbkFwcEJvdW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzTm9uQXBwQm91
bmRSZXF1ZXN0KToKKwogMjAyMS0wMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzI4MzEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBhZDUzZjcxOTg2NGNhM2Ni
MjYwM2I5ODlmZDU4OGJkNTU0NjcyYjc3Li5iZTkzMjM3OTgzZjAyZjcxZjFiNmRjMDc5YmE5NWM5
NDRiNWI0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAg
LTIzMjgsNiArMjMyOCwxMyBAQCBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3RJc05vbkFwcEJvdW5kKGJvb2wgcmVxdWVzdElz
Tm9uQXBwQm91bmQpCit7CisgICAgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCA9IHJlcXVlc3RJc05v
bkFwcEJvdW5kOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVm
IFBBR0VfSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYjYzZDE3
YjFmYjNiNmQ1NDI1MWI0ODQ1NGJiMjAyNThiNGEyMjE2OC4uMGVjMmYwYjU4YWQ4OWMyZDBhMjU5
Zjk4MDZmODI5MmE4YzMwMzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IGJvb2wgcmVxdWVzdElzTm9uQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RJc05v
bkFwcEJvdW5kOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0SXNOb25BcHBC
b3VuZChib29sKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9j
dW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
KTsKIApAQCAtNjU3LDYgKzY2MiwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FsbG93c1dl
YkFyY2hpdmVGb3JNYWluRnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NEYXRhVVJM
c0Zvck1haW5GcmFtZSB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IGJvb2wgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIGlu
bGluZSB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1cmVD
bGllbnROb3RpZmljYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAKaW5kZXggOWRjZTkxN2UyYTg5NTA3MmE5NGEwYmE3YjY5YjEwNDlhYWVkYWVjZi4uMjE0
ZmFhYTQ0N2M3NjIwNjFmZGNlZDZiOGNlMGFkNDlhMjgwN2FjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBA
IC05NSw2ICs5NSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29sYXRlZENv
cHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvdGhlcikKICAgICBpZiAob3RoZXIubV9odHRwQm9k
eSkKICAgICAgICAgc2V0SFRUUEJvZHkob3RoZXIubV9odHRwQm9keS0+aXNvbGF0ZWRDb3B5KCkp
OwogICAgIHNldEFsbG93Q29va2llcyhvdGhlci5tX2FsbG93Q29va2llcyk7CisgICAgc2V0SXNO
b25BcHBCb3VuZChvdGhlci5pc05vbkFwcEJvdW5kKCkpOwogfQogCiBib29sIFJlc291cmNlUmVx
dWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCA3ZDNjODYzM2UyYmUxMWNk
YjJiZGE1ZjdmNjdlMDJjNGM3NjNmMTY1Li45MGRmYTg2NTZjZGQzMWFiZDNmODRhYmY0MTBhYTI5
YTRjYmE2MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTk1LDYgKzE5NSw5IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc05v
bkFwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc05vbkFwcEJvdW5kOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJc05vbkFwcEJvdW5kKGJvb2wgaXNOb25BcHBCb3VuZCkgeyBtX2lz
Tm9uQXBwQm91bmQgPSBpc05vbkFwcEJvdW5kOyB9OworCiBwcm90ZWN0ZWQ6CiAgICAgLy8gVXNl
ZCB3aGVuIFJlc291cmNlUmVxdWVzdCBpcyBpbml0aWFsaXplZCBmcm9tIGEgcGxhdGZvcm0gcmVw
cmVzZW50YXRpb24gb2YgdGhlIHJlcXVlc3QKICAgICBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKQEAg
LTIwNSw2ICsyMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RC
b2R5VXBkYXRlZCh0cnVlKQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3RvcihmYWxzZSkK
ICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKKyAgICAgICAgLCBtX2lzTm9uQXBwQm91bmQo
ZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMjIwLDYgKzIyNCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkKGZhbHNlKQogICAgICAgICAsIG1f
aGlkZGVuRnJvbUluc3BlY3RvcihmYWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkK
KyAgICAgICAgLCBtX2lzTm9uQXBwQm91bmQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMjUz
LDYgKzI1OCw3IEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVl
c3RCb2R5VXBkYXRlZCA6IDE7CiAgICAgYm9vbCBtX2hpZGRlbkZyb21JbnNwZWN0b3IgOiAxOwog
ICAgIGJvb2wgbV9pc1RvcFNpdGUgOiAxOworICAgIGJvb2wgbV9pc05vbkFwcEJvdW5kIDogMTsK
ICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgT3B0aW9uYWw8U3lzdGVtUHJldmlld0luZm8+
IG1fc3lzdGVtUHJldmlld0luZm87CiAjZW5kaWYKQEAgLTI4OCw2ICsyOTQsNyBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZW5jb2RlQmFzZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9pc1RvcFNpdGU7CiAgICAgZW5jb2RlciA8PCBt
X3ByaW9yaXR5OwogICAgIGVuY29kZXIgPDwgbV9yZXF1ZXN0ZXI7CisgICAgZW5jb2RlciA8PCBt
X2lzTm9uQXBwQm91bmQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0zNjUsNiAr
MzcyLDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVC
YXNlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVl
c3RlciA9ICpyZXF1ZXN0ZXI7CiAKKyAgICBPcHRpb25hbDxib29sPiBpc05vbkFwcEJvdW5kOwor
ICAgIGRlY29kZXIgPj4gaXNOb25BcHBCb3VuZDsKKyAgICBpZiAoIWlzTm9uQXBwQm91bmQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2lzTm9uQXBwQm91bmQgPSAqaXNOb25BcHBCb3Vu
ZDsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdhOTMxOTQ4YTA1NmViOTJlY2JkM2YyZDI3
NGRmMTQ0ZGYwMWE5NWUuLmUyNzcyNjk0NDRiMjJlOGY3ZWUwZTE0NGJhMTU5M2UxZDkyZTQxYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIEFwcEJvdW5kUmVxdWVzdCBpc0FwcEJvdW5kUmVxdWVzdCkKIHsKICAgICBM
T0coTmV0d29yaywgIihOZXR3b3JrUHJvY2VzcykgUHJlY29ubmVjdGluZyB0byBVUkwgJXMgKHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5ICVpKSIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAo
aW50KXN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIApAQCAtMTM2MCw2ICsxMzYwLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmkKIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9Owor
ICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc05vbkFwcEJvdW5kKGlzQXBwQm91bmRSZXF1ZXN0
ID09IEFwcEJvdW5kUmVxdWVzdDo6Tm8gPyB0cnVlIDogZmFsc2UpOwogICAgIHBhcmFtZXRlcnMu
d2ViUGFnZVByb3h5SUQgPSB3ZWJQYWdlUHJveHlJRDsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJ
RCA9IHdlYlBhZ2VJRDsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDExMjYyYTg1NmIxMzgxMzE2OTJjMjU1
NDgyYjNiYTY1NzQ0NWViMjEuLjRjNWM3MmYwM2NhZDZjMzMxMjE2YzBlZGIwZDQ0ODcyNjIyYjli
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBh
dGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKICAgICB2b2lk
IGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0
aENhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQ
QUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIEFwcEJvdW5k
UmVxdWVzdCk7CiAKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1OGIzZTRj
ODY4YzcwMTJjZGIzNTY1NmVhYWJmMmI2MTgxZjJiYzdlLi43MzZjZjhjMGRjMGU3MDg5ZTc2MTVi
MzQ2OWZkNDE1MDE0MTU2MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc3LDcgKzc3LDcgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZXBhcmVUb1N1
c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAgICBQcm9jZXNz
RGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBQcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVy
bCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2Vi
S2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgZW51bTpib29sIFdlYktpdDo6QXBwQm91bmRSZXF1ZXN0IGlzQXBwQm91bmRSZXF1ZXN0
KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2
YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMWUyNGRmMGJhNTdjY2JkMTM4MjBhYmNjYTkzNTI2
YjdiZGY4MjM0MS4uZWRmYjAzZDczNDBlYzMyNjY3MGI4OTcxYzExYThiNmYxZTgwZmM1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC03MzYsNiArNzM2LDcg
QEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rp
b25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlT
dGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJRC5oIiddLAorICAgICAgICAnV2ViS2l0OjpB
cHBCb3VuZFJlcXVlc3QnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9h
ZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6
IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5kZXggYWVkYzE2OWIzOTAxNmFmMzAyMmI5
MWE2YWMwOTcwNmEzYzAwYWEzOS4uODE0NzliMjY5YTM4NmU1NjE1YTU0MmIwYWI1NDQ0OWZmZGFh
ZmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBj
bGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IGJvb2wgeyBZZXMsIE5vIH07CitlbnVt
IGNsYXNzIEFwcEJvdW5kUmVxdWVzdCA6IGJvb2wgeyBObywgWWVzIH07CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCAwZjhiODE5NzMxYjJkMjdkNTQxYjM0NjQ5OTdjYzg0Y2M1NWM4YTM2Li4xNzJiOWY0NWIwM2Q3
MGNkNTExNmQ2ZmZhNWVhMTUyOTlkZTk1OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTcwLDYgKzE3MCw5IEBAIHZv
aWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgZW5jb2RlciA8PCBu
ZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7CiAgICAgZW5jb2RlciA8PCBsaW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc05vbkFwcEJvdW5kOwogI2VuZGlmCiAgICAgZW5j
b2RlciA8PCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsKICAgICBlbmNvZGVy
IDw8IGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlOwpAQCAtNTU4LDcgKzU2MSwxMCBAQCBPcHRpb25h
bDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICNlbmRpZgotCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMucmVxdWVzdElzTm9uQXBwQm91bmQpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IGIyMzIwYmI4MDU1M2ExMzE1ZTJmMzcwNmY5ZGNmOTliYmJh
YzQ1NTAuLjYzYTljZDM5MjIzM2QxZDg0ODZkMTA0NzRjMTgwZWJlMzI2MzRlMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI0
MSw2ICsyNDEsOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzIHsgZmFsc2UgfTsKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBi
b29sIHJlcXVlc3RJc05vbkFwcEJvdW5kIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgY2Fu
VXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IGY1MmVhYmYxZDI1
YWY4NjMyZDY2N2JiZWNlM2NlODUwZjA5MWE5YTcuLmJiZGE5YjdmMGM0NzVkYjhlYzc3MzlhM2Zm
N2U4ZjBiNTliODI2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5j
b2RlciYgZW5jb2RlCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKICAgICBlbmNvZGVyIDw8IHJl
c291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVz
dC5jYWNoZVBvbGljeSgpOworICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LmlzTm9uQXBw
Qm91bmQoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTI1Niw2ICsyNTcsMTEgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWNvZGVyJiBkZWNvZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc291cmNlUmVxdWVz
dC5zZXRDYWNoZVBvbGljeShjYWNoZVBvbGljeSk7CiAKKyAgICBib29sIGlzTm9uQXBwQm91bmQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc05vbkFwcEJvdW5kKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRJc05vbkFwcEJvdW5kKGlzTm9uQXBwQm91
bmQpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgK
aW5kZXggOTc0NDM0MTAxZjg0ZWM1MjQ5MThhYmMxNGMzZjMxZmI3YWJlNmJjYi4uMzM3NDM3MGM2
OTIzZjYwOWVjNTYxZjJjMzEwNGVjNWI1MzhjMWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nLmgKQEAgLTg3LDQgKzg3LDYgQEAgdHlwZWRlZiBlbnVtIHsKIC0gKHZvaWQpX3NldFByaXZh
dGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6KEJPT0wpb3ZlcnJpZGVU
aW1lciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAo
dm9pZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZzoo
TlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAorLSAodm9pZClfaXNOb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVz
dGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0
aW5nLm1tCmluZGV4IDBmYTVkYjBmZmVlM2ZiNjlhZDllOTEyNWYxZDE1NGJjYWNiZGU4YjAuLmY5
NWIxMWFjZWQyZGQ4M2Q5OGQzZmI5OTQ3M2VkODVmODE2YTUzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0z
MDksNiArMzA5LDE2IEBACiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX2lzTm9uQXBwQm91bmRSZXF1
ZXN0Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBfcGFnZS0+aXNOb25BcHBCb3VuZFJlcXVlc3QoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNOb25BcHBCb3Vu
ZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc05vbkFwcEJvdW5kKTsKKyAgICB9KTsK
KyNlbmRpZgorfQorCisKIC0gKHZvaWQpX2RpZFByZXNlbnRDb250YWN0UGlja2VyCiB7CiAgICAg
Ly8gRm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGUxNWYxMGNhMjAxNTkyMGEx
NDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLmM3MTJjYzZhODhiYzkzNjM1NGQ0YjBhMWZkZmFiZjM5
NDFlZDcyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC03Miw2ICs3MiwxMiBAQAogI2lmIFBMQVRGT1JNKElPUykKICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmg+CiAKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VQcm94
eUFkZGl0aW9ucy5oPgorI2Vsc2UKKyNkZWZpbmUgV0VCX1BBR0VfUFJPWFlfQURESVRJT05TCisj
ZW5kaWYKKwogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYkNvbnRlbnRBbmFseXNpcyk7
CiBTT0ZUX0xJTktfQ0xBU1MoV2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3Ip
OwogI2VuZGlmCkBAIC01NzUsNiArNTgxLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93
UGxheWluZ1Nlc3Npb25JbmZvKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SXNOb25BcHBCb3VuZChSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgV0VCX1BBR0VfUFJPWFlfQURESVRJT05TCisg
ICAgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCA9IHJlcXVlc3QuaXNOb25BcHBCb3VuZCgpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aXNOb25BcHBCb3VuZFJlcXVlc3QoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OklzTm9uQXBwQm91bmRSZXF1ZXN0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTMw
OTgyZTJhYTJlZjdkNTczYjFlMDEzYjQ5MTllNDVjN2VhNWU2NS4uYmY0NGI2ODRjMGU3NzlkZGU5
MWRiYTBjY2JjMWY4MjVkYTg4MTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTU0LDExICsxNTU0
LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNz
aW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgQXBwQm91bmRSZXF1ZXN0IGlzQXBwQm91bmRSZXF1
ZXN0KQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlELCB1
cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pLCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJl
Y29ubmVjdFRvKHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2Vy
QWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBpc0FwcEJvdW5kUmVxdWVzdCksIDApOwogfQogCiBzdGF0aWMgYm9vbCBhbnlQcm9jZXNz
UG9vbEhhc0ZvcmVncm91bmRXZWJQcm9jZXNzZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxMzMzOTBhMmQ3
YTJhMDg1Nzk4YjliNjQ3YTkzMWE1ZjdiYTRhMmVkLi41NzU2ZWY3YjdlY2I4ZmFhMTVlM2E5YjQ2
ODM5NzgxNmI1MmRlZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiYmKT4mJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOworICAgIHZvaWQgcHJlY29ubmVj
dFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgQXBw
Qm91bmRSZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0OGQ3NGUyZmE1N2Y0NDA5ZDllMzAx
Yjc2Yjk1NTE5NjllMzYwZjYzLi4wYTIxZjU5ZWM1M2U0YWIyOTViYTVlNjZlMjM5YTljZWMxZmZi
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzMTks
NiArMTMxOSwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChzaG91bGRGb3Jj
ZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdh
dGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5m
b3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CiAKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIHNldElzTm9uQXBwQm91bmQocmVxdWVzdCk7CisjZW5kaWYKKwog
ICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkpOwogICAgIHJldHVybiBuYXZp
Z2F0aW9uOwogfQpAQCAtNDI5OSw3ICs0MzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNv
bm5lY3RUbyhjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlOwotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vz
cygpLnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwg
dXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNz
KCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1
cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBtX3JlcXVlc3RJc05vbkFwcEJvdW5kID8gQXBwQm91bmRSZXF1ZXN0
OjpObyA6IEFwcEJvdW5kUmVxdWVzdDo6WWVzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBA
IC03ODU5LDYgKzc4NjMsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94
eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRl
cnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKS5jb25maWd1cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnM7CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHBhcmFtZXRlcnMu
cmVxdWVzdElzTm9uQXBwQm91bmQgPSBtX3JlcXVlc3RJc05vbkFwcEJvdW5kOwogI2VuZGlmCiAg
ICAgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IG1fY29u
ZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKICAgICBw
YXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlID0gbV9jYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZTsKQEAgLTc4NzcsNyArNzg4NCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHBhcmFtZXRlcnMubmVlZHNJbkFwcEJyb3dz
ZXJQcml2YWN5UXVpcmtzID0gcHJlZmVyZW5jZXMoKS5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3MoKTsKICNlbmRpZgotICAgIAorCiAgICAgcGFyYW1ldGVycy50ZXh0SW50ZXJhY3Rpb25F
bmFibGVkID0gcHJlZmVyZW5jZXMoKS50ZXh0SW50ZXJhY3Rpb25FbmFibGVkKCk7CiAKICAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggMzE0ZGEzNTRhNzRjYjE5ZWNhNDE3YzQ0ZTY4OTQ4ZDkwZGJhYjczOC4uNjdkMGM0YTliMjky
NmM0YjdmYjBiNmE3MGUxODY3YzZhZWQ5NzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE4MzksNiArMTgzOSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
c3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2b2lkIHNldElzTm9uQXBwQm91bmQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgdm9pZCBpc05vbkFwcEJvdW5kUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yODkzLDcgKzI4OTgsMTAgQEAgcHJpdmF0
ZToKIAogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAor
ICAgIGJvb2wgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCB7IGZhbHNlIH07CisKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNDhi
M2EyMjVkZmI2YjMwZGEwYzVkMWZmZWE5ZmVjNzY1ZTEzYjk2OS4uOTAwNmMzOTY3ODVlZDkyYjFk
Y2NhMjMzMGQ2YWUxOTJlOTRmZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDYgKzEwNywxMSBA
QCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGlmIChyZXNvdXJjZS50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1h
aW5SZXNvdXJjZSkKKyAgICAgICAgcmVxdWVzdC5zZXRJc05vbkFwcEJvdW5kKGZyYW1lLm1haW5G
cmFtZSgpLmRvY3VtZW50KCktPmxvYWRlcigpLT5yZXF1ZXN0SXNOb25BcHBCb3VuZCgpKTsKKyNl
bmRpZgorCiAgICAgU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFt0aGlzLCByZWZlcnJlclBvbGljeSA9IG9wdGlvbnMu
cmVmZXJyZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc291cmNlID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KCZy
ZXNvdXJjZSksIGZyYW1lID0gbWFrZVJlZihmcmFtZSldIChSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+JiYgbG9hZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAg
IHNjaGVkdWxlTG9hZCgqbG9hZGVyLCByZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0g
UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKQEAgLTc2MCw2ICs3NjUs
MTAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2Um
IHdlYlBhZ2UsIFdlYkZyYW1lJiB3ZWJGcmFtZSwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
cmVxdWVzdC5zZXRJc05vbkFwcEJvdW5kKHdlYlBhZ2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCkt
PmxvYWRlcigpLT5yZXF1ZXN0SXNOb25BcHBCb3VuZCgpKTsKKyNlbmRpZgorCiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIGlmIChjb21wbGV0aW9u
SGFuZGxlcikgewogICAgICAgICBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkxvYWRlclN0
cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg1NTZjMTNkNWU2YTc3YWJkOTQwMTU3ZTk4
MWVmYTIwNjUwYThlNDAuLjI4NDIwNjQ4MWRlNDBmODJhMmI2YmE0OTEzNmMxMTgyYTY3Y2Q1YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01
MTQsNiArNTE0LDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhw
YXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCiAjZW5kaWYKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICwgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZChwYXJh
bWV0ZXJzLnJlcXVlc3RJc05vbkFwcEJvdW5kKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1faWRl
bnRpZmllcik7CiAKQEAgLTE2MTgsNiArMTYyMSwxMCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1l
dAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFt
ZXRlcnMpCiB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzZXRSZXF1ZXN0SXNOb25B
cHBCb3VuZChsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LmlzTm9uQXBwQm91bmQoKSk7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
ICZtX21haW5GcmFtZS5nZXQoKSk7CiAjZW5kaWYKQEAgLTY0MTcsNiArNjQyNCwxMCBAQCBSZWY8
RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZQogewogICAgIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1l
bnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVE
YXRhKTsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZG9jdW1lbnRMb2FkZXItPnNl
dFJlcXVlc3RJc05vbkFwcEJvdW5kKG1fcmVxdWVzdElzTm9uQXBwQm91bmQpOworI2VuZGlmCisK
ICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAobV9wZW5kaW5nTmF2
aWdhdGlvbklEKSB7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0TmF2aWdhdGlvbklE
KG1fcGVuZGluZ05hdmlnYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggY2YwNDI2MmY3MWQ5YTBkMTc4NTAwMWE5MDlkMTA1NjkxYTM2MTMx
Mi4uYTczYjU1ZDZjZTcwNjQwYjk4N2IzMDc2MGExNmEyODBlNmUwNDI0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQwOCw2ICsxNDA4LDExIEBA
IHB1YmxpYzoKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlYWJsZUJpdG1hcChX
ZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2NyZWVu
U2l6ZUluUGl4ZWxzID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgdm9pZCBzZXRSZXF1ZXN0SXNOb25BcHBCb3VuZChib29sIGlzTm9uQXBwQm91
bmQpIHsgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCA9IGlzTm9uQXBwQm91bmQ7IH0KKyAgICB2b2lk
IGlzTm9uQXBwQm91bmRSZXF1ZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMjIyNyw2ICsyMjMyLDEwIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCB7IGZhbHNlIH07CiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBtX3JlcXVlc3RJc05vbkFw
cEJvdW5kIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZSB7IHRydWUgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggMzRiMTJjNDY0NDRmZjE1NWE1ZTE0MzIxOTlhZDhhMTc4OTkxNTgy
Yi4uNjM5NmFmM2ExODBlMWY3OTk2YTY1NmM1NDVhNDhjYWRiNjMwNzNmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC02MjksNCArNjI5LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNlbmRpZgogCiAgICAg
RGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQg
ZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5jCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIElzTm9uQXBwQm91bmRSZXF1ZXN0KCkgLT4gKGJvb2wgaXNOb25BcHBCb3VuZCkgQXN5
bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQppbmRleCBmNjcwM2Q3MDRjOWZhNjRjMGQwMGFjOWEwY2JiOGQ3MWM2
NDc0MjE3Li5mM2IzYjZiZDU4NTdjY2I1ZmM2NTQ5NGNjZTY4M2I0NDJmYThmOGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtNDQ2MCw2ICs0NDYwLDExIEBAIHZvaWQgV2ViUGFnZTo6YW5pbWF0aW9uRGlkRmluaXNoRm9y
RWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBhbmltYXRlZEVsZW1lCiAgICAgICAgIHNj
aGVkdWxlRWRpdG9yU3RhdGVVcGRhdGVGb3JTdGFydE9yRW5kQ29udGFpbmVyTm9kZUlmTmVlZGVk
KGVuZENvbnRhaW5lci5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aXNOb25BcHBCb3VuZFJl
cXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVy
KCktPnJlcXVlc3RJc05vbkFwcEJvdW5kKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmE0MTMxMDBjZmRjN2IxNmVkYjY0NTY2YjNj
OWRjNmQxZGIyODM0Li4wNmZhMTJhYmVkMjkzZjk2NTFjYjBkYjVmYjNhMGUxZGU4YzFlYmVkIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMDItMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG5vbiBhcHAtYm91bmQgcmVxdWVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkwOQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzM1MTI5ODg+CisKKyAgICAgICAgQVBJIHRlc3QgY292
ZXJhZ2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgaXNOb25BcHBCb3VuZFJlcXVlc3Q6XSk6CisKIDIwMjEtMDItMTUgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBgZ2l0IGNvbW1pdCAtdmAgc3VwcG9y
dCB0byBjb21taXQtbG9nLWVkaXRvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IGViMWM2
Yjg1YTg5MjZkYTc4NmIzZWRlNzc4YmVmZTkzYTZmZGMxZTQuLmRhNGY0OWUxNjZkMmQ1MTBlNjgy
NDk1OGJmNGQzMjgwNThkMjRjODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTQ1LDYg
KzQ1LDEyIEBACiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKKyNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0luQXBwQnJvd3NlclBy
aXZhY3lBZGRpdGlvbnMuaD4KKyNlbHNlCisjZGVmaW5lIEFQUF9CT1VORF9SRVFVRVNUX0FERElU
SU9OUworI2VuZGlmCisKIHN0YXRpYyBib29sIGlzRG9uZTsKIAogQGludGVyZmFjZSBBcHBCb3Vu
ZERvbWFpbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpAQCAtMTQx
NSw0ICsxNDIxLDU2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZy
YW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwogfQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CisKKyAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKKyAgICBBUFBfQk9VTkRf
UkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5k
UmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25d
OworCisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgaXNOb25B
cHBCb3VuZFJlcXVlc3Q6XihCT09MIGlzTm9uQXBwQm91bmRSZXF1ZXN0KSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGlzTm9uQXBwQm91bmRSZXF1ZXN0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKwor
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikK
K3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqc3RhcnRpbmdVUkwgPSBAImh0dHBz
Oi8vd3d3LndlYmtpdC5vcmciOworICAgIE5TU3RyaW5nICpub25BcHBCb3VuZFVSTCA9IEAiaHR0
cHM6Ly93d3cuYXBwbGUuY29tIjsKKworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnN0YXJ0aW5n
UmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOnN0YXJ0aW5nVVJMXV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzdGFy
dGluZ1JlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKKworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEJvdW5kVVJMXV07CisgICAgQVBQ
X0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25B
cHBCb3VuZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IGlzTm9uQXBwQm91bmRSZXF1ZXN0Ol4oQk9PTCBpc05v
bkFwcEJvdW5kUmVxdWVzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc05vbkFwcEJvdW5kUmVx
dWVzdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmlu
ZGV4IDIyYTQ4MjZjNDEyYjI5NDkzZTVjMzRkZDRhZWM4MzQwN2YxZjkzMjguLmVhN2EyM2VhYmVl
MjI4NzA1NzZkNGY3ZTEzMWJiMmJjZjFlYjc4NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCkBAIC02Nyw2ICs2Nyw3IEBACiAtIChpZClvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5Q2FsbGlu
Z0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlv
bmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsKIC0gKHVuc2lnbmVk
KXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7Cist
ICh2b2lkKWlzTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyOwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tCmluZGV4IDg3MTM3OTBiYTc4YjA4MDVhYzhjYjgzMjM0NGQ2N2MzOGM5MWI3ODIu
LjQyNTZhZWFkNDkwYzk3OTExZTlhMmVjNTIzZDlmYWYwOTg5M2QyNTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTIzOSw2ICsyMzksMTEgQEAgc3Rh
dGljIE5TU3RyaW5nICpvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoaWQsIFNFTCkKICAgICByZXR1
cm4gY2xpZW50V2lkdGg7CiB9CiAKKy0gKHZvaWQpaXNOb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBbc2VsZiBfaXNOb25BcHBCb3VuZFJl
cXVlc3Q6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBU
ZXN0TWVzc2FnZUhhbmRsZXIgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420375</attachid>
            <date>2021-02-15 14:39:37 -0800</date>
            <delta_ts>2021-02-16 11:12:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221909-20210215143936.patch</filename>
            <type>text/plain</type>
            <size>36454</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uZTIxNjI2MTVhNDU0NmMzMzg4OTlmMjFiYTIzMDEz
YjdiNjA5MmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAyLTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHJlcXVlc3RJc05vbkFwcEJvdW5kIGluIHRoZSBEb2N1bWVudExvYWRlciBzbyB3ZSBj
YW4gcGFzcyBpdAorICAgICAgICB0byBhbGwgc3ViIHJlc291cmNlIGxvYWRzLiBTZWUgV2ViS2l0
IGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVxdWVzdElzTm9u
QXBwQm91bmQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRB
c0lzb2xhdGVkQ29weSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmVu
Y29kZUJhc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6
ZGVjb2RlQmFzZSk6CisKIDIwMjEtMDItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgV2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFi
bGVkIHRvIFBhZ2UgU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmJlOWE3OGY0NmQ1ZjZhZWVlMWRhYzhm
MzkwODA1ZjU1YjhkOGMwYS4uMTU3ODk4MzA0MTg0MGQxZjBmOGJhNTI0NWY2ZjI3YzZiN2ZhMmI5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAyMS0wMi0xNSAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9u
IGFwcC1ib3VuZCByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIxOTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzUxMjk4OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcg
cGFyYW1ldGVyIHRvIHRoZSBSZXNvdXJjZVJlcXVlc3QgY2xhc3Mgc3BlY2lmeWluZyBub24tYXBw
CisgICAgICAgIGJvdW5kIHJlcXVlc3RzIGFuZCBwb3B1bGF0ZSBzdWJyZXNvdXJjZSBsb2FkcyBh
bmQgcHJlY29ubmVjdCB0YXNrcyB3aXRoIHRoaXMgdmFsdWUuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hh
cmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9pc05vbkFwcEJvdW5kUmVxdWVzdDpdKToKKyAgICAgICAgU1BJIGZv
ciB0ZXN0aW5nLgorCisgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOb25BcHBCb3VuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNOb25BcHBCb3VuZFJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAgICAgICAgRm9yIHRoZSBjYXNlIG9mIGEgbWFp
biByZXNvdXJjZSBsb2FkIHdpdGhvdXQgYSBuYXZpZ2F0aW9uLCBsaWtlIGZyb20gYWJvdXQ6Ymxh
bmssCisgICAgICAgIHRoZSBtYWluIHJlc291cmNlIGxvYWQgdXNlcyB0aGUgb3JpZ2luYWwgZG9j
dW1lbnQgbG9hZGVyIHdoaWNoIHdhcyBjcmVhdGVkIGJlZm9yZQorICAgICAgICBXZWJQYWdlOjps
b2FkUmVxdWVzdCBzZXRzIHRoZSB2YWx1ZSBvZiBtX3JlcXVlc3RJc05vbkFwcEJvdW5kLiBGb3Ig
dGhpcyByZWFzb24sCisgICAgICAgIHdlIHNob3VsZCBub3QgY2hlY2sgdGhlIGRvY3VtZW50IGxv
YWRlciB2YWx1ZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UgYW5kCisgICAgICAgIGtub3cgdGhhdCB0
aGUgcmVzb3VyY2UgcmVxdWVzdCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3JlcXVlc3RJc05v
bkFwcEJvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIFdl
IHNob3VsZCBzdG9yZSByZXF1ZXN0SXNOb25BcHBCb3VuZCBpbiB0aGUgZG9jdW1lbnQgbG9hZGVy
IGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHBhZ2Ugc28gd2UgZG9uJ3QgYWZmZWN0IHByZXZpb3Vz
IGxvYWRzIHdoaWxlIGluaXRpYXRpbmcgdGhlCisgICAgICAgIG5hdmlnYXRpb24gdG8gdGhlIG5l
eHQgc2l0ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFJlcXVlc3RJc05vbkFwcEJvdW5kKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmlzTm9uQXBwQm91bmRSZXF1ZXN0KToKKwogMjAyMS0wMi0xNSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyNzI4MzEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGI2M2Qx
N2IxZmIzYjZkNTQyNTFiNDg0NTRiYjIwMjU4YjRhMjIxNjguLjQ4NzI5MTU1NjY3ZmM3YjYyZWE0
N2JiMTA2YWI3YWZjN2M2MzM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCkBAIC00MjAsNiArNDIwLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNldENvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYmKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBib29sIHJlcXVlc3RJc05vbkFwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SXNO
b25BcHBCb3VuZDsgfQorICAgIHZvaWQgc2V0UmVxdWVzdElzTm9uQXBwQm91bmQoYm9vbCByZXF1
ZXN0SXNOb25BcHBCb3VuZCkgeyBtX3JlcXVlc3RJc05vbkFwcEJvdW5kID0gcmVxdWVzdElzTm9u
QXBwQm91bmQ7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9j
dW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
KTsKIApAQCAtNjU3LDYgKzY2MiwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FsbG93c1dl
YkFyY2hpdmVGb3JNYWluRnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NEYXRhVVJM
c0Zvck1haW5GcmFtZSB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IGJvb2wgbV9yZXF1ZXN0SXNOb25BcHBCb3VuZCB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIGlu
bGluZSB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1cmVD
bGllbnROb3RpZmljYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAKaW5kZXggOWRjZTkxN2UyYTg5NTA3MmE5NGEwYmE3YjY5YjEwNDlhYWVkYWVjZi4uMjE0
ZmFhYTQ0N2M3NjIwNjFmZGNlZDZiOGNlMGFkNDlhMjgwN2FjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBA
IC05NSw2ICs5NSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29sYXRlZENv
cHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvdGhlcikKICAgICBpZiAob3RoZXIubV9odHRwQm9k
eSkKICAgICAgICAgc2V0SFRUUEJvZHkob3RoZXIubV9odHRwQm9keS0+aXNvbGF0ZWRDb3B5KCkp
OwogICAgIHNldEFsbG93Q29va2llcyhvdGhlci5tX2FsbG93Q29va2llcyk7CisgICAgc2V0SXNO
b25BcHBCb3VuZChvdGhlci5pc05vbkFwcEJvdW5kKCkpOwogfQogCiBib29sIFJlc291cmNlUmVx
dWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCA3ZDNjODYzM2UyYmUxMWNk
YjJiZGE1ZjdmNjdlMDJjNGM3NjNmMTY1Li4yYmM3ZGI5MjUyOGIwZGRlNTRkODlhYTY5YmMzNWNi
NTVlZmM1ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTk1LDYgKzE5NSw5IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCisgICAgYm9vbCBpc05vbkFwcEJvdW5kKCkgY29u
c3QgeyByZXR1cm4gbV9pc05vbkFwcEJvdW5kOyB9CisgICAgdm9pZCBzZXRJc05vbkFwcEJvdW5k
KGJvb2wgaXNOb25BcHBCb3VuZCkgeyBtX2lzTm9uQXBwQm91bmQgPSBpc05vbkFwcEJvdW5kOyB9
OworCiBwcm90ZWN0ZWQ6CiAgICAgLy8gVXNlZCB3aGVuIFJlc291cmNlUmVxdWVzdCBpcyBpbml0
aWFsaXplZCBmcm9tIGEgcGxhdGZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcXVlc3QKICAg
ICBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKQEAgLTIwNSw2ICsyMDgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCh0cnVlKQogICAgICAgICAsIG1f
aGlkZGVuRnJvbUluc3BlY3RvcihmYWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkK
KyAgICAgICAgLCBtX2lzTm9uQXBwQm91bmQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMjIw
LDYgKzIyNCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlV
cGRhdGVkKGZhbHNlKQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3RvcihmYWxzZSkKICAg
ICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKKyAgICAgICAgLCBtX2lzTm9uQXBwQm91bmQoZmFs
c2UpCiAgICAgewogICAgIH0KIApAQCAtMjUzLDYgKzI1OCw3IEBAIHByb3RlY3RlZDoKICAgICBt
dXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCA6IDE7CiAgICAgYm9vbCBt
X2hpZGRlbkZyb21JbnNwZWN0b3IgOiAxOwogICAgIGJvb2wgbV9pc1RvcFNpdGUgOiAxOworICAg
IGJvb2wgbV9pc05vbkFwcEJvdW5kIDogMTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
T3B0aW9uYWw8U3lzdGVtUHJldmlld0luZm8+IG1fc3lzdGVtUHJldmlld0luZm87CiAjZW5kaWYK
QEAgLTI4OCw2ICsyOTQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6ZW5jb2RlQmFzZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9p
c1RvcFNpdGU7CiAgICAgZW5jb2RlciA8PCBtX3ByaW9yaXR5OwogICAgIGVuY29kZXIgPDwgbV9y
ZXF1ZXN0ZXI7CisgICAgZW5jb2RlciA8PCBtX2lzTm9uQXBwQm91bmQ7CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CkBAIC0zNjUsNiArMzcyLDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVCYXNlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RlciA9ICpyZXF1ZXN0ZXI7CiAKKyAgICBPcHRp
b25hbDxib29sPiBpc05vbkFwcEJvdW5kOworICAgIGRlY29kZXIgPj4gaXNOb25BcHBCb3VuZDsK
KyAgICBpZiAoIWlzTm9uQXBwQm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2lz
Tm9uQXBwQm91bmQgPSAqaXNOb25BcHBCb3VuZDsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDdhOTMxOTQ4YTA1NmViOTJlY2JkM2YyZDI3NGRmMTQ0ZGYwMWE5NWUuLmUyNzcyNjk0NDRiMjJl
OGY3ZWUwZTE0NGJhMTU5M2UxZDkyZTQxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBib29sIE5l
dHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxl
ZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIEFwcEJvdW5kUmVxdWVzdCBp
c0FwcEJvdW5kUmVxdWVzdCkKIHsKICAgICBMT0coTmV0d29yaywgIihOZXR3b3JrUHJvY2Vzcykg
UHJlY29ubmVjdGluZyB0byBVUkwgJXMgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICVpKSIsIHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAoaW50KXN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsK
IApAQCAtMTM2MCw2ICsxMzYwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKIAogICAgIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IHVybCB9OworICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc05v
bkFwcEJvdW5kKGlzQXBwQm91bmRSZXF1ZXN0ID09IEFwcEJvdW5kUmVxdWVzdDo6Tm8gPyB0cnVl
IDogZmFsc2UpOwogICAgIHBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQgPSB3ZWJQYWdlUHJveHlJ
RDsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2VJRDsKICAgICBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IDExMjYyYTg1NmIxMzgxMzE2OTJjMjU1NDgyYjNiYTY1NzQ0NWViMjEuLjRjNWM3MmYwM2Nh
ZDZjMzMxMjE2YzBlZGIwZDQ0ODcyNjIyYjliMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vz
c2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBwcmVj
b25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4sIEFwcEJvdW5kUmVxdWVzdCk7CiAKICAgICB2b2lkIHNldFNlc3Np
b25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJv
b2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA1OGIzZTRjODY4YzcwMTJjZGIzNTY1NmVhYWJmMmI2MTgxZjJi
YzdlLi43MzZjZjhjMGRjMGU3MDg5ZTc2MTViMzQ2OWZkNDE1MDE0MTU2MjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTc3LDcgKzc3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVu
dCkgLT4gKCkgQXN5bmMKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwg
dXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBPcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKTsKKyAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJL
aXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50
OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgZW51bTpib29sIFdlYktpdDo6QXBwQm91
bmRSZXF1ZXN0IGlzQXBwQm91bmRSZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAo
KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMWUy
NGRmMGJhNTdjY2JkMTM4MjBhYmNjYTkzNTI2YjdiZGY4MjM0MS4uZWRmYjAzZDczNDBlYzMyNjY3
MGI4OTcxYzExYThiNmYxZTgwZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC03MzYsNiArNzM2LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6
CiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJ
bmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJ
RC5oIiddLAorICAgICAgICAnV2ViS2l0OjpBcHBCb3VuZFJlcXVlc3QnOiBbJyJOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERv
d25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgK
aW5kZXggYWVkYzE2OWIzOTAxNmFmMzAyMmI5MWE2YWMwOTcwNmEzYzAwYWEzOS4uODE0NzliMjY5
YTM4NmU1NjE1YTU0MmIwYWI1NDQ0OWZmZGFhZmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0yOCw2ICsyOCw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biA6IGJvb2wgeyBZZXMsIE5vIH07CitlbnVtIGNsYXNzIEFwcEJvdW5kUmVxdWVzdCA6IGJvb2wg
eyBObywgWWVzIH07CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAwZjhiODE5NzMxYjJkMjdkNTQxYjM0NjQ5OTdj
Yzg0Y2M1NWM4YTM2Li4xNzJiOWY0NWIwM2Q3MGNkNTExNmQ2ZmZhNWVhMTUyOTlkZTk1OWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcApAQCAtMTcwLDYgKzE3MCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgZW5jb2RlciA8PCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7
CiAgICAgZW5jb2RlciA8PCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworI2Vu
ZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc05v
bkFwcEJvdW5kOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZzsKICAgICBlbmNvZGVyIDw8IGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlOwpA
QCAtNTU4LDcgKzU2MSwxMCBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgotCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucmVxdWVzdElz
Tm9uQXBwQm91bmQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGIyMzIwYmI4
MDU1M2ExMzE1ZTJmMzcwNmY5ZGNmOTliYmJhYzQ1NTAuLjYzYTljZDM5MjIzM2QxZDg0ODZkMTA0
NzRjMTgwZWJlMzI2MzRlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI0MSw2ICsyNDEsOSBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJv
b2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsKICAgICBib29sIGxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworI2VuZGlmCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBib29sIHJlcXVlc3RJc05vbkFwcEJvdW5kIHsgZmFs
c2UgfTsKICNlbmRpZgogICAgIGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCmluZGV4IGY1MmVhYmYxZDI1YWY4NjMyZDY2N2JiZWNlM2NlODUwZjA5MWE5YTcu
LmJiZGE5YjdmMGM0NzVkYjhlYzc3MzlhM2ZmN2U4ZjBiNTliODI2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAt
MjEzLDYgKzIxMyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlCiAgICAgZW5jb2RlciA8PCBy
ZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKTsKICAg
ICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5jYWNoZVBvbGljeSgpOworICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VSZXF1ZXN0LmlzTm9uQXBwQm91bmQoKTsKIH0KIAogYm9vbCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAg
LTI1Niw2ICsyNTcsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShjYWNoZVBvbGljeSk7
CiAKKyAgICBib29sIGlzTm9uQXBwQm91bmQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc05v
bkFwcEJvdW5kKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc291cmNlUmVxdWVzdC5z
ZXRJc05vbkFwcEJvdW5kKGlzTm9uQXBwQm91bmQpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5kZXggOTc0NDM0MTAxZjg0ZWM1MjQ5MThhYmMx
NGMzZjMxZmI3YWJlNmJjYi4uMzM3NDM3MGM2OTIzZjYwOWVjNTYxZjJjMzEwNGVjNWI1MzhjMWM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTg3LDQgKzg3LDYgQEAgdHlwZWRl
ZiBlbnVtIHsKIC0gKHZvaWQpX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1l
ckZvclRlc3Rpbmc6KEJPT0wpb3ZlcnJpZGVUaW1lciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfaXNOb25BcHBCb3VuZFJl
cXVlc3Q6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShp
b3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmluZGV4IDBmYTVkYjBmZmVlM2ZiNjlh
ZDllOTEyNWYxZDE1NGJjYWNiZGU4YjAuLmY5NWIxMWFjZWQyZGQ4M2Q5OGQzZmI5OTQ3M2VkODVm
ODE2YTUzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0zMDksNiArMzA5LDE2IEBACiAgICAgfSk7CiB9CiAK
Ky0gKHZvaWQpX2lzTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBfcGFnZS0+aXNOb25BcHBC
b3VuZFJlcXVlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGJvb2wgaXNOb25BcHBCb3VuZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihpc05vbkFwcEJvdW5kKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCisKIC0gKHZvaWQpX2RpZFBy
ZXNlbnRDb250YWN0UGlja2VyCiB7CiAgICAgLy8gRm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IGUxNWYxMGNhMjAxNTkyMGExNDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLmNjMmE1
NTBjMTM3N2JkNzUzMGYzNWE1Zjg0MjZhYjY3OTBkMTVmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC03Niw2ICs3Niwx
MiBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsKIFNP
RlRfTElOS19DTEFTUyhXZWJDb250ZW50QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7CiAj
ZW5kaWYKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRp
dGlvbnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+CisjZWxzZQorI2RlZmluZSBXRUJfUEFHRV9Q
Uk9YWV9BRERJVElPTlMKKyNlbmRpZgorCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9u
KSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQog
I2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBN
RVNTQUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0
aW9uKCksIGNvbXBsZXRpb24pCiAKQEAgLTU3NSw2ICs1ODEsMTkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVl
c3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJc05vbkFw
cEJvdW5kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBXRUJfUEFHRV9QUk9YWV9B
RERJVElPTlMKKyAgICBtX3JlcXVlc3RJc05vbkFwcEJvdW5kID0gcmVxdWVzdC5pc05vbkFwcEJv
dW5kKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojppc05vbkFwcEJvdW5kUmVxdWVzdChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SXNOb25BcHBCb3VuZFJlcXVlc3Qo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBhMzA5ODJlMmFhMmVmN2Q1NzNiMWUwMTNiNDkxOWU0NWM3ZWE1ZTY1Li5iZjQ0YjY4
NGMwZTc3OWRkZTkxZGJhMGNjYmMxZjgyNWRhODgxMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1
NTQsMTEgKzE1NTQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBBcHBCb3VuZFJlcXVlc3QgaXNB
cHBCb3VuZFJlcXVlc3QpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3
ZWJQYWdlSUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlE
LCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIGlzQXBwQm91bmRSZXF1ZXN0KSwgMCk7CiB9CiAKIHN0YXRpYyBib29s
IGFueVByb2Nlc3NQb29sSGFzRm9yZWdyb3VuZFdlYlByb2Nlc3NlcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDEzMzM5MGEyZDdhMmEwODU3OThiOWI2NDdhOTMxYTVmN2JhNGEyZWQuLjU3NTZlZjdiN2VjYjhm
YWExNWUzYTliNDY4Mzk3ODE2YjUyZGVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBB
TDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9p
ZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBBcHBCb3VuZFJlcXVlc3QpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ4ZDc0ZTJmYTU3
ZjQ0MDlkOWUzMDFiNzZiOTU1MTk2OWUzNjBmNjMuLjBhMjFmNTllYzUzZTRhYjI5NWJhNWU2NmUy
MzlhOWNlYzFmZmI2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMTMxOSw2ICsxMzE5LDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYg
KHNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAg
ICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkocHJvY2VzcygpLnRo
cm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpKTsKIAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgc2V0SXNOb25BcHBCb3VuZChyZXF1ZXN0KTsK
KyNlbmRpZgorCiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0
KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSk7CiAgICAg
cmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC00Mjk5LDcgKzQzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFn
ZSA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5l
dHdvcmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdl
YlBhZ2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0
d29ya1Byb2Nlc3MoKS5wcmVjb25uZWN0VG8oc2Vzc2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2Vi
UGFnZUlEKCksIHVybCwgdXNlckFnZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIG1fcmVxdWVzdElzTm9uQXBwQm91bmQgPyBBcHBC
b3VuZFJlcXVlc3Q6Ok5vIDogQXBwQm91bmRSZXF1ZXN0OjpZZXMpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCBjYW5Vc2VDcmVkZW50aWFs
U3RvcmFnZSkKQEAgLTc4NTksNiArNzg2Myw5IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAg
ICAgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzID0gbV9wcm9jZXNz
LT5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQ
cm9jZXNzKCk7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHBhcmFtZXRlcnMu
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWluczsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
cGFyYW1ldGVycy5yZXF1ZXN0SXNOb25BcHBCb3VuZCA9IG1fcmVxdWVzdElzTm9uQXBwQm91bmQ7
CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZygpOwogICAgIHBhcmFtZXRlcnMuY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBtX2NhblVzZUNy
ZWRlbnRpYWxTdG9yYWdlOwpAQCAtNzg3Nyw3ICs3ODg0LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkm
IHByb2MKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5uZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgPSBwcmVmZXJlbmNlcygpLm5lZWRzSW5BcHBCcm93
c2VyUHJpdmFjeVF1aXJrcygpOwogI2VuZGlmCi0gICAgCisKICAgICBwYXJhbWV0ZXJzLnRleHRJ
bnRlcmFjdGlvbkVuYWJsZWQgPSBwcmVmZXJlbmNlcygpLnRleHRJbnRlcmFjdGlvbkVuYWJsZWQo
KTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCAzMTRkYTM1NGE3NGNiMTllY2E0MTdjNDRlNjg5NDhkOTBkYmFiNzM4Li42
N2QwYzRhOWIyOTI2YzRiN2ZiMGI2YTcwZTE4NjdjNmFlZDk3NmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTgzOSw2ICsxODM5LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVl
bEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIHZvaWQgc2V0SXNOb25BcHBCb3VuZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICB2b2lkIGlzTm9uQXBwQm91bmRSZXF1ZXN0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4OTMsNyArMjg5OCwx
MCBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVy
IHsgMCB9OwogCisgICAgYm9vbCBtX3JlcXVlc3RJc05vbkFwcEJvdW5kIHsgZmFsc2UgfTsKKwog
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50OworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAppbmRleCA0OGIzYTIyNWRmYjZiMzBkYTBjNWQxZmZlYTlmZWM3NjVlMTNiOTY5Li45MDA2YzM5
Njc4NWVkOTJiMWRjY2EyMzMwZDZhZTE5MmU5NGZkODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMDcs
NiArMTA3LDExIEBAIFdlYkxvYWRlclN0cmF0ZWd5Ojp+V2ViTG9hZGVyU3RyYXRlZ3koKQogCiB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgaWYgKHJlc291cmNlLnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6TWFpblJlc291cmNlKQorICAgICAgICByZXF1ZXN0LnNldElzTm9uQXBwQm91bmQo
ZnJhbWUubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+bG9hZGVyKCktPnJlcXVlc3RJc05vbkFwcEJv
dW5kKCkpOworI2VuZGlmCisKICAgICBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBy
ZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgW3RoaXMsIHJlZmVycmVyUG9saWN5
ID0gb3B0aW9ucy5yZWZlcnJlclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgcmVzb3VyY2UgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4oJnJlc291cmNlKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKV0gKFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpIG11dGFibGUgewogICAgICAgICBpZiAobG9hZGVyKQog
ICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCpsb2FkZXIsIHJlc291cmNlLmdldCgpLCByZWZlcnJl
clBvbGljeSA9PSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOwpAQCAt
NzYwLDYgKzc2NSwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJh
bWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgV2ViUGFnZSYgd2ViUGFnZSwgV2ViRnJhbWUmIHdlYkZyYW1lLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICByZXF1ZXN0LnNldElzTm9uQXBwQm91bmQod2ViUGFnZS5tYWluRnJhbWUoKS0+
ZG9jdW1lbnQoKS0+bG9hZGVyKCktPnJlcXVlc3RJc05vbkFwcEJvdW5kKCkpOworI2VuZGlmCisK
ICAgICBPcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgaWYg
KGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIHByZWNvbm5lY3Rpb25JZGVudGlmaWVyID0g
V2ViTG9hZGVyU3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODU1NmMxM2Q1ZTZhNzdh
YmQ5NDAxNTdlOTgxZWZhMjA2NTBhOGU0MC4uMjg0MjA2NDgxZGU0MGY4MmEyYjZiYTQ5MTM2YzEx
ODJhNjdjZDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTUxNCw2ICs1MTQsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLCBtX3JlcXVlc3RJc05vbkFw
cEJvdW5kKHBhcmFtZXRlcnMucmVxdWVzdElzTm9uQXBwQm91bmQpCisjZW5kaWYKIHsKICAgICBB
U1NFUlQobV9pZGVudGlmaWVyKTsKIApAQCAtMTYxOCw2ICsxNjIxLDEwIEBAIHZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMm
IGxvYWRQYXJhbWV0CiAKIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMm
JiBsb2FkUGFyYW1ldGVycykKIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHNldFJl
cXVlc3RJc05vbkFwcEJvdW5kKGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QuaXNOb25BcHBCb3VuZCgp
KTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNldElzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKICNlbmRpZgpAQCAtNjQxNyw2ICs2NDI0
LDEwIEBAIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIo
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlCiB7CiAgICAgUmVmPFdlYkRvY3VtZW50TG9h
ZGVyPiBkb2N1bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwg
c3Vic3RpdHV0ZURhdGEpOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBkb2N1bWVu
dExvYWRlci0+c2V0UmVxdWVzdElzTm9uQXBwQm91bmQobV9yZXF1ZXN0SXNOb25BcHBCb3VuZCk7
CisjZW5kaWYKKwogICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmICht
X3BlbmRpbmdOYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRO
YXZpZ2F0aW9uSUQobV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjZjA0MjYyZjcxZDlhMGQxNzg1MDAxYTkwOWQx
MDU2OTFhMzYxMzEyLi5hNzNiNTVkNmNlNzA2NDBiOTg3YjMwNzYwYTE2YTI4MGU2ZTA0MjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDA4LDYg
KzE0MDgsMTEgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVh
YmxlQml0bWFwKFdlYkNvcmU6OlJlbmRlckltYWdlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRT
aXplPiBzY3JlZW5TaXplSW5QaXhlbHMgPSBXVEY6Om51bGxvcHQpIGNvbnN0OwogCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIHNldFJlcXVlc3RJc05vbkFwcEJvdW5kKGJvb2wg
aXNOb25BcHBCb3VuZCkgeyBtX3JlcXVlc3RJc05vbkFwcEJvdW5kID0gaXNOb25BcHBCb3VuZDsg
fQorICAgIHZvaWQgaXNOb25BcHBCb3VuZFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0yMjI3LDYgKzIy
MzIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5k
RG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25hdmlnYXRpb25IYXNPY2N1cmVkIHsgZmFs
c2UgfTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBib29sIG1fcmVx
dWVzdElzTm9uQXBwQm91bmQgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX2NhblVzZUNy
ZWRlbnRpYWxTdG9yYWdlIHsgdHJ1ZSB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9jb3JzRGlz
YWJsaW5nUGF0dGVybnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAzNGIxMmM0NjQ0NGZmMTU1YTVlMTQzMjE5OWFk
OGExNzg5OTE1ODJiLi42Mzk2YWYzYTE4MGUxZjc5OTZhNjU2YzU0NWE0OGNhZGI2MzA3M2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTYyOSw0ICs2MjksOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2Vu
ZGlmCiAKICAgICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKFdlYktpdDo6V2Vi
V2hlZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgSXNOb25BcHBCb3VuZFJlcXVlc3QoKSAtPiAoYm9vbCBpc05vbkFw
cEJvdW5kKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGY2NzAzZDcwNGM5ZmE2NGMwZDAwYWM5
YTBjYmI4ZDcxYzY0NzQyMTcuLmYzYjNiNmJkNTg1N2NjYjVmYzY1NDk0Y2NlNjgzYjQ0MmZhOGY4
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC00NDYwLDYgKzQ0NjAsMTEgQEAgdm9pZCBXZWJQYWdlOjphbmltYXRpb25E
aWRGaW5pc2hGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGFuaW1hdGVkRWxlbWUK
ICAgICAgICAgc2NoZWR1bGVFZGl0b3JTdGF0ZVVwZGF0ZUZvclN0YXJ0T3JFbmRDb250YWluZXJO
b2RlSWZOZWVkZWQoZW5kQ29udGFpbmVyLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlOjppc05v
bkFwcEJvdW5kUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpLT5sb2FkZXIoKS0+cmVxdWVzdElzTm9uQXBwQm91bmQoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEyYTQxMzEwMGNmZGM3YjE2
ZWRiNjQ1NjZiM2M5ZGM2ZDFkYjI4MzQuLjA2ZmExMmFiZWQyOTNmOTY1MWNiMGRiNWZiM2EwZTFk
ZThjMWViZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0xNSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3Vu
ZCByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxOTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzUxMjk4OD4KKworICAgICAgICBB
UEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBpc05vbkFwcEJvdW5kUmVxdWVzdDpdKToKKwogMjAyMS0wMi0xNSAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGBnaXQgY29tbWl0
IC12YCBzdXBwb3J0IHRvIGNvbW1pdC1sb2ctZWRpdG9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
aW5kZXggZWIxYzZiODVhODkyNmRhNzg2YjNlZGU3NzhiZWZlOTNhNmZkYzFlNC4uZGE0ZjQ5ZTE2
NmQyZDUxMGU2ODI0OTU4YmY0ZDMyODA1OGQyNGM4OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQpAQCAtNDUsNiArNDUsMTIgQEAKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIAor
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvSW5B
cHBCcm93c2VyUHJpdmFjeUFkZGl0aW9ucy5oPgorI2Vsc2UKKyNkZWZpbmUgQVBQX0JPVU5EX1JF
UVVFU1RfQURESVRJT05TCisjZW5kaWYKKwogc3RhdGljIGJvb2wgaXNEb25lOwogCiBAaW50ZXJm
YWNlIEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGU+CkBAIC0xNDE1LDQgKzE0MjEsNTYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91
dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3VuZCkKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCit7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKKwor
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOworICAg
IEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
bm9uQXBwQm91bmRSZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBpc05vbkFwcEJvdW5kUmVxdWVzdDpeKEJPT0wgaXNOb25BcHBCb3VuZFJlcXVlc3QpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoaXNOb25BcHBCb3VuZFJlcXVlc3QpOworICAgICAgICBpc0Rv
bmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5nICpzdGFydGluZ1VS
TCA9IEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZyI7CisgICAgTlNTdHJpbmcgKm5vbkFwcEJvdW5k
VVJMID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20iOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqc3RhcnRpbmdSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6c3RhcnRpbmdVUkxdXTsKKworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnN0YXJ0aW5nUmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOworCisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxd
XTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRp
ZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW3dlYlZpZXcgaXNOb25BcHBCb3VuZFJlcXVlc3Q6
XihCT09MIGlzTm9uQXBwQm91bmRSZXF1ZXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzTm9u
QXBwQm91bmRSZXF1ZXN0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKyNlbmRpZgorCiAjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmgKaW5kZXggMjJhNDgyNmM0MTJiMjk0OTNlNWMzNGRkNGFlYzgzNDA3ZjFmOTMyOC4u
ZWE3YTIzZWFiZWUyMjg3MDU3NmQ0ZjdlMTMxYmIyYmNmMWViNzg1OSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTY3LDYgKzY3LDcgQEAKIC0gKGlkKW9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2Jq
ZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50
czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0Owog
LSAodW5zaWduZWQpd2FpdFVudGlsQ2xpZW50V2lkdGhJczoodW5zaWduZWQpZXhwZWN0ZWRDbGll
bnRXaWR0aDsKKy0gKHZvaWQpaXNOb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXI7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVGVzdE1lc3NhZ2VIYW5kbGVyIDog
TlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggODcxMzc5MGJhNzhiMDgwNWFjOGNiODMyMzQ0ZDY3
YzM4YzkxYjc4Mi4uNDI1NmFlYWQ0OTBjOTc5MTFlOWEyZWM1MjNkOWZhZjA5ODkzZDI1OSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMjM5LDYgKzIz
OSwxMSBAQCBzdGF0aWMgTlNTdHJpbmcgKm92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcihpZCwgU0VM
KQogICAgIHJldHVybiBjbGllbnRXaWR0aDsKIH0KIAorLSAodm9pZClpc05vbkFwcEJvdW5kUmVx
dWVzdDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtzZWxmIF9pc05v
bkFwcEJvdW5kUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFRlc3RNZXNzYWdlSGFuZGxlciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420501</attachid>
            <date>2021-02-16 11:12:55 -0800</date>
            <delta_ts>2021-02-16 11:18:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221909-20210216111254.patch</filename>
            <type>text/plain</type>
            <size>37952</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uNzI2NWQ2YTdmYTJjNWJiYTFkOTc5ZWYyOGFiMTQy
YjA4ZjNkODE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHJlcXVlc3RJc05vbkFwcEJvdW5kIGluIHRoZSBEb2N1bWVudExvYWRlciBzbyB3ZSBj
YW4gcGFzcyBpdAorICAgICAgICB0byBhbGwgc3ViIHJlc291cmNlIGxvYWRzLiBTZWUgV2ViS2l0
IGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dEJhc2U6OmlzQXBwQm91bmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SXNBcHBCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6OmVuY29kZUJhc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZSk6CisKIDIwMjEtMDItMTUgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgV2ViUlRDUGxhdGZvcm1Db2RlY3NJ
bkdQVVByb2Nlc3NFbmFibGVkIHRvIFBhZ2UgU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmJlOWE3OGY0
NmQ1ZjZhZWVlMWRhYzhmMzkwODA1ZjU1YjhkOGMwYS4uODE2ZjYyODlkN2M4MTMxMWYzZDQwNjJj
ZjQxY2I5MWZiMTcwMWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAyMS0wMi0xNiAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83MzUxMjk4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHRvIHRoZSBSZXNvdXJjZVJlcXVlc3QgY2xhc3Mgc3Bl
Y2lmeWluZyBub24tYXBwCisgICAgICAgIGJvdW5kIHJlcXVlc3RzIGFuZCBwb3B1bGF0ZSBzdWJy
ZXNvdXJjZSBsb2FkcywgcmVkaXJlY3RzLCBhbmQKKyAgICAgICAgcHJlY29ubmVjdCB0YXNrcyB3
aXRoIHRoaXMgdmFsdWUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgor
ICAgICAgICBTZXQgdGhlIHJlZGlyZWN0ZWQgcmVxdWVzdCB0byBoYXZlIHRoZSBzYW1lIHZhbHVl
IGFzIHRoZSBvcmlnaW5hbCBvbmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0
ZUZvclRlc3RpbmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdU
ZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0
VG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICBGb3Ig
dGhlIGNhc2Ugb2YgYSBtYWluIHJlc291cmNlIGxvYWQgd2l0aG91dCBhIG5hdmlnYXRpb24sIGxp
a2UgZnJvbSBhYm91dDpibGFuaywKKyAgICAgICAgdGhlIG1haW4gcmVzb3VyY2UgbG9hZCB1c2Vz
IHRoZSBvcmlnaW5hbCBkb2N1bWVudCBsb2FkZXIgd2hpY2ggd2FzIGNyZWF0ZWQgYmVmb3JlCisg
ICAgICAgIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0IHNldHMgdGhlIHZhbHVlIG9mIG1fcmVxdWVzdElz
Tm9uQXBwQm91bmQuIEZvciB0aGlzIHJlYXNvbiwKKyAgICAgICAgd2Ugc2hvdWxkIG5vdCBjaGVj
ayB0aGUgZG9jdW1lbnQgbG9hZGVyIHZhbHVlIGZvciB0aGUgbWFpbiByZXNvdXJjZSBhbmQKKyAg
ICAgICAga25vdyB0aGF0IHRoZSByZXNvdXJjZSByZXF1ZXN0IGhhcyB0aGUgY29ycmVjdCB2YWx1
ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1l
bnRMb2FkZXIpOgorICAgICAgICBXZSBzaG91bGQgc3RvcmUgbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCBpbiB0aGUgZG9jdW1lbnQgbG9hZGVyCisgICAgICAgIGluc3RlYWQgb2YgdGhlIHBhZ2Ug
c28gd2UgZG9uJ3QgYWZmZWN0IHByZXZpb3VzIGxvYWRzIHdoaWxlIGluaXRpYXRpbmcKKyAgICAg
ICAgdGhlIG5hdmlnYXRpb24gdG8gdGhlIG5leHQgc2l0ZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCk6CisKIDIwMjEtMDItMTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjcyODMxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiNjNkMTdiMWZiM2I2ZDU0MjUxYjQ4NDU0
YmIyMDI1OGI0YTIyMTY4Li43NzNiYTE4OWVkODBmYTVkMDZhY2U1ODViNGU5NzdmYzNhOTliZmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNDIwLDYgKzQyMCwx
MSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDb250cm9sbGluZ1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OyB9CisgICAgdm9pZCBzZXRsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVf
RVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJik7CiAKQEAgLTY1Nyw2ICs2NjIsMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9hbGxvd3NXZWJBcmNoaXZlRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxs
b3dzRGF0YVVSTHNGb3JNYWluRnJhbWUgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07Cisj
ZW5kaWYKIH07CiAKIGlubGluZSB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWNvcmRNZW1vcnlDYWNo
ZUxvYWRGb3JGdXR1cmVDbGllbnROb3RpZmljYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggOWRjZTkxN2UyYTg5NTA3MmE5NGEwYmE3YjY5YjEw
NDlhYWVkYWVjZi4uZTA2OTg2ODg2NTdiMWZjMWUzNTUxN2M3YjRlMjJjOWY3ZjEwYjhlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwCkBAIC05NSw2ICs5NSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
c2V0QXNJc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvdGhlcikKICAgICBpZiAo
b3RoZXIubV9odHRwQm9keSkKICAgICAgICAgc2V0SFRUUEJvZHkob3RoZXIubV9odHRwQm9keS0+
aXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldEFsbG93Q29va2llcyhvdGhlci5tX2FsbG93Q29va2ll
cyk7CisgICAgc2V0SXNBcHBCb3VuZChvdGhlci5pc0FwcEJvdW5kKCkpOwogfQogCiBib29sIFJl
c291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCA3ZDNjODYz
M2UyYmUxMWNkYjJiZGE1ZjdmNjdlMDJjNGM3NjNmMTY1Li5lYWUwNTY5OTkxNGM1MjRiNzA1OTE5
NDgzZjczZGQ2MGRkNTM3ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTk1LDYgKzE5NSw5IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCisgICAgYm9vbCBpc0FwcEJvdW5k
KCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9CisgICAgdm9pZCBzZXRJc0FwcEJvdW5k
KGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBpc0FwcEJvdW5kOyB9OworCiBwcm90
ZWN0ZWQ6CiAgICAgLy8gVXNlZCB3aGVuIFJlc291cmNlUmVxdWVzdCBpcyBpbml0aWFsaXplZCBm
cm9tIGEgcGxhdGZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcXVlc3QKICAgICBSZXNvdXJj
ZVJlcXVlc3RCYXNlKCkKQEAgLTIwNSw2ICsyMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwg
bV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCh0cnVlKQogICAgICAgICAsIG1faGlkZGVuRnJv
bUluc3BlY3RvcihmYWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKKyAgICAgICAg
LCBtX2lzQXBwQm91bmQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMjIwLDYgKzIyNCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkKGZhbHNl
KQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3RvcihmYWxzZSkKICAgICAgICAgLCBtX2lz
VG9wU2l0ZShmYWxzZSkKKyAgICAgICAgLCBtX2lzQXBwQm91bmQoZmFsc2UpCiAgICAgewogICAg
IH0KIApAQCAtMjUzLDYgKzI1OCw3IEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIGJvb2wgbV9w
bGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCA6IDE7CiAgICAgYm9vbCBtX2hpZGRlbkZyb21JbnNw
ZWN0b3IgOiAxOwogICAgIGJvb2wgbV9pc1RvcFNpdGUgOiAxOworICAgIGJvb2wgbV9pc0FwcEJv
dW5kIDogMTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgT3B0aW9uYWw8U3lzdGVtUHJl
dmlld0luZm8+IG1fc3lzdGVtUHJldmlld0luZm87CiAjZW5kaWYKQEAgLTI4OCw2ICsyOTQsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZW5jb2RlQmFzZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9pc1RvcFNpdGU7CiAgICAgZW5j
b2RlciA8PCBtX3ByaW9yaXR5OwogICAgIGVuY29kZXIgPDwgbV9yZXF1ZXN0ZXI7CisgICAgZW5j
b2RlciA8PCBtX2lzQXBwQm91bmQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0z
NjUsNiArMzcyLDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpk
ZWNvZGVCYXNlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X3JlcXVlc3RlciA9ICpyZXF1ZXN0ZXI7CiAKKyAgICBPcHRpb25hbDxib29sPiBpc0FwcEJvdW5k
OworICAgIGRlY29kZXIgPj4gaXNBcHBCb3VuZDsKKyAgICBpZiAoIWlzQXBwQm91bmQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2lzQXBwQm91bmQgPSAqaXNBcHBCb3VuZDsKKwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdhOTMxOTQ4YTA1NmViOTJlY2JkM2YyZDI3NGRmMTQ0ZGYw
MWE5NWUuLmFmNWVjZDM4Yzc1M2U2MzhkYzhiMzM3OTFkM2UzYjZhNmRlYTE1OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzQ0
LDcgKzEzNDQsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkK
IHsKICAgICBMT0coTmV0d29yaywgIihOZXR3b3JrUHJvY2VzcykgUHJlY29ubmVjdGluZyB0byBV
UkwgJXMgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICVpKSIsIHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCAoaW50KXN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIApAQCAtMTM2MCw2ICsxMzYw
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7
IHVybCB9OworICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc0FwcEJvdW5kKGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQgPT0gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzID8gdHJ1ZSA6
IGZhbHNlKTsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2ViUGFnZVByb3h5SUQ7
CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlSUQ7CiAgICAgcGFyYW1ldGVycy5p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCAxMTI2MmE4NTZiMTM4MTMxNjkyYzI1NTQ4MmIzYmE2NTc0NDVlYjIxLi5kMzAzNTc0ZGE3MWM2
YzFmMzBjOWZhYTY3YzQ3Y2NiYzAwODc2YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Np
b25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29u
bmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7
CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogICAgIHZvaWQg
c2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7
CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklE
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU4YjNlNGM4NjhjNzAxMmNkYjM1NjU2ZWFhYmYy
YjYxODFmMmJjN2UuLjI4YWQ5ZDA0MzZhNzNmZmRmZTQ2NDZiZTBkMDI5M2MwZjkxMzYwMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtNzcsNyArNzcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lv
bkltbWluZW50KSAtPiAoKSBBc3luYwogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQogCi0gICAgUHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIFVSTCB1cmwsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZW51bTpib29sIE9w
dGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOworICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0
OjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZWRjY2Qx
OTZiNmFjYzQ5NzU2NmI5ZjgyN2Q3NTcyZjYyODE4MjMwYi4uYjg4Mjg3MjQ5ZjkwZTIwYmQ4MzFh
MTNlOGIzNzEzN2VhMGU3NjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtODc2LDYgKzg3Niw5IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250
aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKQogeworICAgIGlmIChyZXF1ZXN0LmlzQXBwQm91bmQoKSAhPSByZWRpcmVjdFJlcXVl
c3QuaXNBcHBCb3VuZCgpKQorICAgICAgICByZWRpcmVjdFJlcXVlc3Quc2V0SXNBcHBCb3VuZChy
ZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250
aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Q6IChtX2lzS2VwdEFsaXZlPSVkLCBoYXNBZENs
aWNrQ29udmVyc2lvbj0lZCkiLCBtX2lzS2VwdEFsaXZlLCAhIXByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSk7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAxZTI0ZGYw
YmE1N2NjYmQxMzgyMGFiY2NhOTM1MjZiN2JkZjgyMzQxLi4xOGE2NGQ2NWFmMjVlNmExZWFlZTQ3
MWMxOTI4MDY0OGYxNDg3N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTczNiw2ICs3MzYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAg
ICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvblJlY3QnOiBbJyJFZGl0b3JTdGF0ZS5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8u
aCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgi
J10sCisgICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6
Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAg
J1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLmgKaW5kZXggYWVkYzE2OWIzOTAxNmFmMzAyMmI5MWE2YWMwOTcwNmEzYzAwYWEzOS4uMzFl
MDcxNTU5NjZiYjdmYjZkNzNhZGJiNjNhN2E3OTMzYjg2OWI0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0yNyw3ICsyNyw4
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIDogYm9vbCB7IFllcywgTm8gfTsKK2VudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDBmOGI4MTk3
MzFiMmQyN2Q1NDFiMzQ2NDk5N2NjODRjYzU1YzhhMzYuLmYyZDEzMzE5Mzc3NGY0YTM5OTJkNjVk
YWVmMmJiZDkxMTFjNzU1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzAsNiArMTcwLDkgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBlbmNvZGVyIDw8IG5lZWRzSW5BcHBC
cm93c2VyUHJpdmFjeVF1aXJrczsKICAgICBlbmNvZGVyIDw8IGxpbWl0c05hdmlnYXRpb25zVG9B
cHBCb3VuZERvbWFpbnM7CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGVu
Y29kZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKICNlbmRpZgogICAgIGVuY29kZXIg
PDwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBj
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsKQEAgLTU1OCw3ICs1NjEsMTAgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAjZW5kaWYKLQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IGIyMzIwYmI4MDU1M2ExMzE1ZTJmMzcwNmY5ZGNmOTliYmJh
YzQ1NTAuLjVhZGQ0ZjgzNTQ3YWU2ODNjYmMwN2Q2YzFmNThiZGRkMWZhNTMwYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI0
MSw2ICsyNDEsOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzIHsgZmFsc2UgfTsKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBi
b29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9v
bCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZjUyZWFi
ZjFkMjVhZjg2MzJkNjY3YmJlY2UzY2U4NTBmMDkxYTlhNy4uODNjMmE4NzMzYzhhNWFkMjc5NGY5
MTMwZjY0YzI4YTY5MDE2NWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiBlbmNvZGUKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VS
ZXF1ZXN0LmNhY2hlUG9saWN5KCk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNB
cHBCb3VuZCgpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQpAQCAtMjU2LDYgKzI1NywxMSBAQCBib29sIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImIGRlY29kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzb3VyY2VSZXF1
ZXN0LnNldENhY2hlUG9saWN5KGNhY2hlUG9saWN5KTsKIAorICAgIGJvb2wgaXNBcHBCb3VuZDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXBwQm91bmQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwQm91bmQoaXNBcHBCb3VuZCk7CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCmluZGV4IGYw
MGM1OTA1OWIwYjk3NjA1Yjk5YWFmNDVjN2Y5YTdiMTM5NGY1NDMuLmE5NWI2ZWI4ZmIyNDRlNTcx
NmZiM2IwMjcxMTBiYmZiMGFmNGE0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgK
QEAgLTgyLDYgKzgyLDggQEAKIAogLSAodm9pZClfc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlRm9yVGVzdGluZzsKIAorLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKwogQGVuZAogCiAjZW5kaWYgLy8gVEFSR0VU
X09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IDgxYjIxOTVkODRlZDFhNGE1NGZhMjUyYTRhYTMy
Yzg2NTU2YWU1ZDQuLjIzM2NhMzY3ZGFhMDg1YzljYjEwNjFhNDIwZmZlM2JkM2EwMWQzZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGlu
Z0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rl
c3RpbmdJT1MubW0KQEAgLTM1OCw2ICszNTgsMTMgQEAKICAgICAgICAgX3BhZ2UtPnNldERldmlj
ZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3RpbmcoKTsKIH0KIAorLSAodm9pZClfbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIF9wYWdlLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwQm91bmQpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNBcHBCb3VuZCk7CisgICAgfSk7Cit9CisKIEBlbmQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGUxNWYxMGNhMjAxNTky
MGExNDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLjExNDk1MTFkOGRmNWJlZDQ4MmJiNTEwZTgwOTll
M2I5ZDMxMzgyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCkBAIC03Niw2ICs3NiwxMiBAQCBTT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsKIFNPRlRfTElOS19DTEFTUyhXZWJDb250ZW50
QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7CiAjZW5kaWYKIAorI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRp
b25zLmg+CisjZWxzZQorI2RlZmluZSBXRUJfUEFHRV9QUk9YWV9BRERJVElPTlMKKyNlbmRpZgor
CiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNz
ZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NP
TVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT05f
QkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9uKCksIGNvbXBsZXRpb24pCiAKQEAg
LTU3NSw2ICs1ODEsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5
aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib28KICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lv
bkluZm8oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBXRUJfUEFHRV9QUk9YWV9BRERJVElPTlMKKyAg
ICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBhMzA5ODJlMmFhMmVmN2Q1NzNiMWUwMTNiNDkxOWU0NWM3ZWE1ZTY1Li5hMmJlZWQ4
MzVhMzRmYmUxOTYwMzhmYmZlYThmN2EyYmYyNDY5OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1
NTQsMTEgKzE1NTQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpIHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQs
IHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdlSUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIDApOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdl
UHJveHlJRCwgd2ViUGFnZUlELCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpLCAwKTsKIH0KIAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2Vi
UHJvY2Vzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTMzMzkwYTJkN2EyYTA4NTc5OGI5YjY0N2E5MzFh
NWY3YmE0YTJlZC4uZWY5MjExZDljMDFkNjhjNTIzOTBjMzQzNWYzYTE0N2U5N2VkZWY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExvY2Fs
U3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwog
Ci0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ4ZDc0ZTJmYTU3ZjQ0MDlkOWUzMDFiNzZiOTU1MTk2
OWUzNjBmNjMuLjM2NDYxMDRlMmUzYTJiYzQ4Mjg4NjU2YjhiODA4YjczNWJlN2U2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMxOSw2ICsxMzE5LDEw
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKHNob3VsZEZvcmNlRm9yZWdyb3Vu
ZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRD
bGllbnROYXZpZ2F0aW9uQWN0aXZpdHkocHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRB
Y3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpKTsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChyZXF1ZXN0KTsKKyNlbmRpZgor
CiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSk7CiAgICAgcmV0dXJuIG5h
dmlnYXRpb247CiB9CkBAIC00Mjk5LDcgKzQzMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJl
Y29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA/IFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9j
ZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgp
LCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nl
c3MoKS5wcmVjb25uZWN0VG8oc2Vzc2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCks
IHVybCwgdXNlckFnZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCksIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA/IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wg
Y2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBAIC03ODU5LDYgKzc4NjMsOSBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJv
Y2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBtX2xp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CisjZW5kaWYKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIHBhcmFtZXRlcnMubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAgICAgcGFyYW1ldGVycy5jYW5Vc2VDcmVk
ZW50aWFsU3RvcmFnZSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CkBAIC03ODc3LDcgKzc4
ODQsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKICAgICBwYXJhbWV0ZXJzLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyA9IHBy
ZWZlcmVuY2VzKCkubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCk7CiAjZW5kaWYKLSAg
ICAKKwogICAgIHBhcmFtZXRlcnMudGV4dEludGVyYWN0aW9uRW5hYmxlZCA9IHByZWZlcmVuY2Vz
KCkudGV4dEludGVyYWN0aW9uRW5hYmxlZCgpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDMxNGRhMzU0YTc0Y2IxOWVj
YTQxN2M0NGU2ODk0OGQ5MGRiYWI3MzguLjFjMmRhNTg2NGE1MjE4Y2YwNmY4MWEwNzNiMjI2ZDI3
OTcyZjEzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODM5
LDYgKzE4MzksMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRo
b3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBzZXRMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZv
aWQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50Jiwg
V2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yODkzLDYgKzI4OTgsOCBAQCBwcml2YXRlOgog
CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCisgICAg
Ym9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworCiAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNDhiM2EyMjVkZmI2YjMwZGEwYzVkMWZmZWE5
ZmVjNzY1ZTEzYjk2OS4uYTM4ZTZjOTQ3OTZmNGU0Y2RkYmQ4MTUzYjIwZWExYzUzMWI5ODAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcApAQCAtMTA3LDYgKzEwNywxMSBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldl
YkxvYWRlclN0cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNl
KEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChyZXNvdXJjZS50
eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkKKyAgICAgICAgcmVx
dWVzdC5zZXRJc0FwcEJvdW5kKGZyYW1lLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmxvYWRlcigp
LT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworI2VuZGlmCisKICAgICBTdWJyZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCByZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9u
cywgW3RoaXMsIHJlZmVycmVyUG9saWN5ID0gb3B0aW9ucy5yZWZlcnJlclBvbGljeSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzb3VyY2UgPSBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4oJnJlc291cmNlKSwgZnJhbWUgPSBtYWtl
UmVmKGZyYW1lKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpIG11dGFibGUg
ewogICAgICAgICBpZiAobG9hZGVyKQogICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCpsb2FkZXIs
IHJlc291cmNlLmdldCgpLCByZWZlcnJlclBvbGljeSA9PSBSZWZlcnJlclBvbGljeTo6Tm9SZWZl
cnJlcldoZW5Eb3duZ3JhZGUpOwpAQCAtNzYwLDYgKzc2NSwxMCBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwm
IHVybCwgUwogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViUGFnZSYgd2ViUGFnZSwgV2ViRnJhbWUmIHdl
YkZyYW1lLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXF1ZXN0LnNldElzQXBwQm91bmQo
d2ViUGFnZS5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQoKSk7CisjZW5kaWYKKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25u
ZWN0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJMb2FkZXJTdHJhdGVneTo6Z2VuZXJhdGVMb2Fk
SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA4NTU2YzEzZDVlNmE3N2FiZDk0MDE1N2U5ODFlZmEyMDY1MGE4ZTQwLi40ZWJh
NWY4YjZhMTYzZDA1MWQwNGY5NTZiMDQwYmVmYzllNzg0ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTE0LDYgKzUxNCw5IEBAIFdlYlBh
Z2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBt
X2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKQogI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICAsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChwYXJhbWV0ZXJzLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9pZGVudGlmaWVyKTsK
IApAQCAtMTYxOCw2ICsxNjIxLDEwIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZl
TG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0CiAKIHZvaWQg
V2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEJvdW5kKCkpOworI2VuZGlmCisKICNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWlu
RnJhbWUuZ2V0KCkpOwogI2VuZGlmCkBAIC02NDE3LDYgKzY0MjQsMTAgQEAgUmVmPERvY3VtZW50
TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmUKIHsKICAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVy
ID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGRvY3VtZW50TG9hZGVyLT5zZXRsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisjZW5kaWYK
KwogICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChtX3BlbmRpbmdO
YXZpZ2F0aW9uSUQpIHsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXROYXZpZ2F0aW9u
SUQobV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCBjZjA0MjYyZjcxZDlhMGQxNzg1MDAxYTkwOWQxMDU2OTFhMzYx
MzEyLi40ZTJlMzRkZjZmYWE2MmFjODM3ZjhlYzI0NmU5YjdjZWViYjkxM2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDA4LDYgKzE0MDgsMTEg
QEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVhYmxlQml0bWFw
KFdlYkNvcmU6OlJlbmRlckltYWdlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBzY3Jl
ZW5TaXplSW5QaXhlbHMgPSBXVEY6Om51bGxvcHQpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNB
cHBCb3VuZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSB3YXNBcHBCb3VuZDsgfQor
ICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTIyMjcsNiAr
MjIzMiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgeyBm
YWxzZSB9OwogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGJvb2wgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIGJvb2wgbV9j
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1f
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMzRiMTJjNDY0NDRmZjE1NWE1ZTE0
MzIxOTlhZDhhMTc4OTkxNTgyYi4uYmNmNjNkNzhlNGZkODgxZDRhZDMxMTVkMjAxYjI4NGQ0NmM2
ZGMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC02MjksNCArNjI5LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICNlbmRpZgogCiAgICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJL
aXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5jCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSAtPiAo
Ym9vbCB3YXNBcHBCb3VuZCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBmNjcwM2Q3MDRjOWZh
NjRjMGQwMGFjOWEwY2JiOGQ3MWM2NDc0MjE3Li4wMDAxZjg2MGRjYjI2NGY3ZGYxNDYxMzUyMDAy
YzMzMTRmNzVjOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDQ2MCw2ICs0NDYwLDExIEBAIHZvaWQgV2ViUGFnZTo6
YW5pbWF0aW9uRGlkRmluaXNoRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBhbmlt
YXRlZEVsZW1lCiAgICAgICAgIHNjaGVkdWxlRWRpdG9yU3RhdGVVcGRhdGVGb3JTdGFydE9yRW5k
Q29udGFpbmVyTm9kZUlmTmVlZGVkKGVuZENvbnRhaW5lci5nZXQoKSk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1haW5G
cmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9B
TExPV0VECmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMTJhNDEzMTAwY2ZkYzdiMTZlZGI2NDU2NmIzYzlkYzZkMWRiMjgzNC4uZjRhYWQ4ZThmMDEz
ZGNiMGQ0MTkzZjMxODYyYjQxMWYyMjEwY2UyYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGlzTm9uQXBwQm91bmRSZXF1ZXN0
Ol0pOgorCiAyMDIxLTAyLTE1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYGdpdCBjb21taXQgLXZgIHN1cHBvcnQgdG8gY29tbWl0LWxvZy1lZGl0b3IKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBlYjFjNmI4NWE4OTI2ZGE3ODZiM2VkZTc3OGJlZmU5
M2E2ZmRjMWU0Li5hMWU0MTM1NzE3ZjE2MDk3OWMwNTNmMDcyMTAzMTU0YmZiNzY0YzFkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC00NSw2ICs0NSwxMiBAQAogCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9JbkFwcEJyb3dzZXJQcml2YWN5QWRkaXRpb25zLmg+CisjZWxzZQor
I2RlZmluZSBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyNlbmRpZgorCiBzdGF0aWMgYm9v
bCBpc0RvbmU7CiAKIEBpbnRlcmZhY2UgQXBwQm91bmREb21haW5EZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAgLTE0MTUsNCArMTQyMSw1NiBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJv
dW5kKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAorI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5k
UmVxdWVzdCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRw
czovL3dlYmtpdC5vcmciOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRS
ZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6dXJsXV07CisgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIHN0YXRpYyBib29sIGlzRG9u
ZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09M
IGlzQXBwQm91bmQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJv
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5nICpzdGFy
dGluZ1VSTCA9IEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZyI7CisgICAgTlNTdHJpbmcgKm5vbkFw
cEJvdW5kVVJMID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20iOworCisgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqc3RhcnRpbmdSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6c3RhcnRpbmdVUkxdXTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnN0YXJ0aW5nUmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7
CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91
bmRVUkxdXTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW3dlYlZpZXcgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNB
cHBCb3VuZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
CmluZGV4IDIyYTQ4MjZjNDEyYjI5NDkzZTVjMzRkZDRhZWM4MzQwN2YxZjkzMjguLjg1MmE3YzM0
ZWI0N2UyY2UwMTI2ZDRjYjcyMjhiNDY3YTc5Y2RiNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC02Nyw2ICs2Nyw5IEBACiAtIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGlj
dGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsKIC0gKHVuc2ln
bmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKy0gKHZvaWQpbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogQGVuZAogCiBA
aW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4
IDg3MTM3OTBiYTc4YjA4MDVhYzhjYjgzMjM0NGQ2N2MzOGM5MWI3ODIuLjE5N2JhNTY2ZWU3NmEx
ZWUyY2I2NmU5NzgxZGZiOTUyN2NjMzVjZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KQEAgLTIzOSw2ICsyMzksMTIgQEAgc3RhdGljIE5TU3RyaW5nICpv
dmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoaWQsIFNFTCkKICAgICByZXR1cm4gY2xpZW50V2lkdGg7
CiB9CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorLSAodm9pZClsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYg
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Y29tcGxldGlvbkhhbmRsZXJdOworfQorI2VuZGlm
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0TWVzc2FnZUhhbmRsZXIgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420505</attachid>
            <date>2021-02-16 11:18:50 -0800</date>
            <delta_ts>2021-02-17 21:31:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221909-20210216111849.patch</filename>
            <type>text/plain</type>
            <size>37979</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uOWNhZGQxODk3ZDA3OTY2MTcyY2FjM2U0NDU4M2Yz
N2ZjZWQ1ZGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHdoZXRoZXIgdGhlIGxhc3QgbmF2aWdhdGlvbiB3YXMgYXBwLWJvdW5kIGluIHRoZSBE
b2N1bWVudExvYWRlcgorICAgICAgICBzbyB3ZSBjYW4gcGFzcyBpdCB0byBhbGwgc3ViIHJlc291
cmNlIGxvYWRzLiBTZWUgV2ViS2l0IGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmlzQXBwQm91bmQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SXNBcHBCb3VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZSk6CisKIDIwMjEt
MDItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUg
V2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkIHRvIFBhZ2UgU2V0dGluZ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmJlOWE3OGY0NmQ1ZjZhZWVlMWRhYzhmMzkwODA1ZjU1YjhkOGMwYS4uNDJk
YTQzOWIwODA1Nzg2NWE4ODE4ZjRkMzY1NjljNjBjMTg2NWRiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3MCBAQAorMjAyMS0wMi0xNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTA5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzUxMjk4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHRvIHRoZSBSZXNv
dXJjZVJlcXVlc3QgY2xhc3Mgc3BlY2lmeWluZyBhcHAKKyAgICAgICAgYm91bmQgcmVxdWVzdHMg
YW5kIHBvcHVsYXRlIHN1YnJlc291cmNlIGxvYWRzLCByZWRpcmVjdHMsIGFuZAorICAgICAgICBw
cmVjb25uZWN0IHRhc2tzIHdpdGggdGhpcyB2YWx1ZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdCk6CisgICAgICAgIFNldCB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0IHRvIGhh
dmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIG9yaWdpbmFsIG9uZS4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbi5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZSk6CisgICAgICAgIEZvciB0aGUgY2FzZSBvZiBhIG1haW4gcmVzb3VyY2UgbG9hZCB3aXRob3V0
IGEgbmF2aWdhdGlvbiwgbGlrZSBmcm9tIGFib3V0OmJsYW5rLAorICAgICAgICB0aGUgbWFpbiBy
ZXNvdXJjZSBsb2FkIHVzZXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50IGxvYWRlciB3aGljaCB3YXMg
Y3JlYXRlZCBiZWZvcmUKKyAgICAgICAgV2ViUGFnZTo6bG9hZFJlcXVlc3Qgc2V0cyB0aGUgdmFs
dWUgb2YgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kLiBGb3IgdGhpcyByZWFzb24sCisgICAg
ICAgIHdlIHNob3VsZCBub3QgY2hlY2sgdGhlIGRvY3VtZW50IGxvYWRlciB2YWx1ZSBmb3IgdGhl
IG1haW4gcmVzb3VyY2UgYW5kCisgICAgICAgIGtub3cgdGhhdCB0aGUgcmVzb3VyY2UgcmVxdWVz
dCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3Ry
YXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgV2Ugc2hvdWxkIHN0b3Jl
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgaW4gdGhlIGRvY3VtZW50IGxvYWRlcgorICAgICAg
ICBpbnN0ZWFkIG9mIHRoZSBwYWdlIHNvIHdlIGRvbid0IGFmZmVjdCBwcmV2aW91cyBsb2FkcyB3
aGlsZSBpbml0aWF0aW5nCisgICAgICAgIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXh0IHNpdGUu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorCiAyMDIxLTAyLTE1ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI3MjgzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYjYz
ZDE3YjFmYjNiNmQ1NDI1MWI0ODQ1NGJiMjAyNThiNGEyMjE2OC4uNzczYmExODllZDgwZmE1ZDA2
YWNlNTg1YjRlOTc3ZmMzYTk5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhJiYpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQorICAgIHZvaWQgc2V0bGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQorI2VuZGlmCisKIHBy
b3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogCkBAIC02NTcsNiArNjYyLDEwIEBA
IHByaXZhdGU6CiAKICAgICBib29sIG1fYWxsb3dzV2ViQXJjaGl2ZUZvck1haW5GcmFtZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiBpbmxpbmUgdm9pZCBEb2N1bWVudExv
YWRlcjo6cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZpY2F0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDlkY2U5MTdl
MmE4OTUwNzJhOTRhMGJhN2I2OWIxMDQ5YWFlZGFlY2YuLmUwNjk4Njg4NjU3YjFmYzFlMzU1MTdj
N2I0ZTIyYzlmN2YxMGI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgb3RoZXIpCiAgICAgaWYgKG90aGVyLm1faHR0cEJvZHkpCiAgICAgICAgIHNldEhUVFBC
b2R5KG90aGVyLm1faHR0cEJvZHktPmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRBbGxvd0Nvb2tp
ZXMob3RoZXIubV9hbGxvd0Nvb2tpZXMpOworICAgIHNldElzQXBwQm91bmQob3RoZXIuaXNBcHBC
b3VuZCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0VtcHR5KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKaW5kZXggN2QzYzg2MzNlMmJlMTFjZGIyYmRhNWY3ZjY3ZTAyYzRjNzYzZjE2NS4u
ZWFlMDU2OTk5MTRjNTI0YjcwNTkxOTQ4M2Y3M2RkNjBkZDUzN2UyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAg
LTE5NSw2ICsxOTUsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
IAorICAgIGJvb2wgaXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcHBCb3VuZDsgfQor
ICAgIHZvaWQgc2V0SXNBcHBCb3VuZChib29sIGlzQXBwQm91bmQpIHsgbV9pc0FwcEJvdW5kID0g
aXNBcHBCb3VuZDsgfTsKKwogcHJvdGVjdGVkOgogICAgIC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJl
cXVlc3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRmb3JtIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSByZXF1ZXN0CiAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCkBAIC0yMDUsNiArMjA4LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkK
ICAgICAgICAgLCBtX2hpZGRlbkZyb21JbnNwZWN0b3IoZmFsc2UpCiAgICAgICAgICwgbV9pc1Rv
cFNpdGUoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEJvdW5kKGZhbHNlKQogICAgIHsKICAgICB9
CiAKQEAgLTIyMCw2ICsyMjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9wbGF0Zm9ybVJl
cXVlc3RCb2R5VXBkYXRlZChmYWxzZSkKICAgICAgICAgLCBtX2hpZGRlbkZyb21JbnNwZWN0b3Io
ZmFsc2UpCiAgICAgICAgICwgbV9pc1RvcFNpdGUoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEJv
dW5kKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTI1Myw2ICsyNTgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAg
IGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yIDogMTsKICAgICBib29sIG1faXNUb3BTaXRlIDog
MTsKKyAgICBib29sIG1faXNBcHBCb3VuZCA6IDE7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIE9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBtX3N5c3RlbVByZXZpZXdJbmZvOwogI2Vu
ZGlmCkBAIC0yODgsNiArMjk0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IG1faXNUb3BTaXRlOwogICAgIGVuY29kZXIgPDwgbV9wcmlvcml0eTsKICAgICBlbmNvZGVyIDw8
IG1fcmVxdWVzdGVyOworICAgIGVuY29kZXIgPDwgbV9pc0FwcEJvdW5kOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMzY1LDYgKzM3MiwxMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIgPSAqcmVxdWVzdGVyOwogCisgICAgT3B0
aW9uYWw8Ym9vbD4gaXNBcHBCb3VuZDsKKyAgICBkZWNvZGVyID4+IGlzQXBwQm91bmQ7CisgICAg
aWYgKCFpc0FwcEJvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9pc0FwcEJvdW5k
ID0gKmlzQXBwQm91bmQ7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3YTkzMTk0OGEwNTZl
YjkyZWNiZDNmMmQyNzRkZjE0NGRmMDFhOTVlLi5hZjVlY2QzOGM3NTNlNjM4ZGM4YjMzNzkxZDNl
M2I2YTZkZWExNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzczo6
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QKICAgICByZXR1
cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQ7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoTmV0d29ya1Byb2Nl
c3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAlaSki
LCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGludClzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSk7CiAKQEAgLTEzNjAsNiArMTM2MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAKICAg
ICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0
SXNBcHBCb3VuZChsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQ6OlllcyA/IHRydWUgOiBmYWxzZSk7CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlUHJv
eHlJRCA9IHdlYlBhZ2VQcm94eUlEOwogICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFn
ZUlEOwogICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMTEyNjJhODU2YjEzODEzMTY5MmMyNTU0ODJiM2JhNjU3
NDQ1ZWIyMS4uZDMwMzU3NGRhNzFjNmMxZjMwYzlmYWE2N2M0N2NjYmMwMDg3NmMzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjg0LDcg
KzI4NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwogICAgIHZvaWQgY2FjaGVTdG9y
YWdlUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sm
Jik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4pOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCk7CiAKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1OGIzZTRj
ODY4YzcwMTJjZGIzNTY1NmVhYWJmMmI2MTgxZjJiYzdlLi4yOGFkOWQwNDM2YTczZmZkZmU0NjQ2
YmUwZDAyOTNjMGY5MTM2MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc3LDcgKzc3LDcgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZXBhcmVUb1N1
c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAgICBQcm9jZXNz
RGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBQcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVy
bCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2Vi
S2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgZW51bTpib29sIFdlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGVkY2NkMTk2YjZhY2M0OTc1NjZiOWY4MjdkNzU3MmY2MjgxODIzMGIu
LmI4ODI4NzI0OWY5MGUyMGJkODMxYTEzZThiMzcxMzdlYTBlNzYzMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTg3Niw2ICs4NzYsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKKyAgICBpZiAocmVxdWVzdC5pc0FwcEJv
dW5kKCkgIT0gcmVkaXJlY3RSZXF1ZXN0LmlzQXBwQm91bmQoKSkKKyAgICAgICAgcmVkaXJlY3RS
ZXF1ZXN0LnNldElzQXBwQm91bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkpOworCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0OiAobV9p
c0tlcHRBbGl2ZT0lZCwgaGFzQWRDbGlja0NvbnZlcnNpb249JWQpIiwgbV9pc0tlcHRBbGl2ZSwg
ISFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOwogICAgIEFT
U0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggMWUyNGRmMGJhNTdjY2JkMTM4MjBhYmNjYTkzNTI2YjdiZGY4MjM0MS4u
MThhNjRkNjVhZjI1ZTZhMWVhZWU0NzFjMTkyODA2NDhmMTQ4NzdiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC03MzYsNiArNzM2LDcgQEAgZGVmIGhlYWRl
cnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyci
RWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlE
JzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlJzogWyciRG93bmxvYWRJRC5oIiddLAorICAgICAgICAnV2ViS2l0OjpMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRN
YW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBb
JyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCmluZGV4IGFlZGMxNjliMzkwMTZhZjMwMjJiOTFh
NmFjMDk3MDZhM2MwMGFhMzkuLjMxZTA3MTU1OTY2YmI3ZmI2ZDczYWRiYjYzYTdhNzkzM2I4Njli
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaApAQCAtMjcsNyArMjcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBj
bGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IGJvb2wgeyBZZXMsIE5vIH07CitlbnVt
IGNsYXNzIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIDogYm9vbCB7IE5vLCBZZXMgfTsKK2Vu
dW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA6IGJvb2wgeyBObywgWWVzIH07CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCAwZjhiODE5NzMxYjJkMjdkNTQxYjM0NjQ5OTdjYzg0Y2M1NWM4YTM2Li5m
MmQxMzMxOTM3NzRmNGEzOTkyZDY1ZGFlZjJiYmQ5MTExYzc1NTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTcwLDYg
KzE3MCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
ZW5jb2RlciA8PCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7CiAgICAgZW5jb2RlciA8
PCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworI2VuZGlmCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBlbmNvZGVyIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7
CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nOwogICAgIGVuY29kZXIgPDwgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CkBAIC01NTgsNyAr
NTYxLDEwIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCi0KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiMjMyMGJiODA1NTNh
MTMxNWUyZjM3MDZmOWRjZjk5YmJiYWM0NTUwLi41YWRkNGY4MzU0N2FlNjgzY2JjMDdkNmMxZjU4
YmRkZDFmYTUzMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCkBAIC0yNDEsNiArMjQxLDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAgICAgYm9vbCBsaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFs
c2UgfTsKICNlbmRpZgogICAgIGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCmluZGV4IGY1MmVhYmYxZDI1YWY4NjMyZDY2N2JiZWNlM2NlODUwZjA5MWE5YTcu
LjgzYzJhODczM2M4YTVhZDI3OTRmOTEzMGY2NGMyOGE2OTAxNjViZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAt
MjEzLDYgKzIxMyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlCiAgICAgZW5jb2RlciA8PCBy
ZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKTsKICAg
ICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5jYWNoZVBvbGljeSgpOworICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VSZXF1ZXN0LmlzQXBwQm91bmQoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTI1
Niw2ICsyNTcsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShjYWNoZVBvbGljeSk7CiAK
KyAgICBib29sIGlzQXBwQm91bmQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0FwcEJvdW5k
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRJc0FwcEJv
dW5kKGlzQXBwQm91bmQpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJ
T1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmdJT1MuaAppbmRleCBmMDBjNTkwNTliMGI5NzYwNWI5OWFhZjQ1YzdmOWE3YjEzOTRm
NTQzLi5hOTViNmViOGZiMjQ0ZTU3MTZmYjNiMDI3MTEwYmJmYjBhZjRhNGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC04Miw2ICs4Miw4IEBACiAKIC0gKHZvaWQpX3NldERl
dmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3Rpbmc7CiAKKy0gKHZvaWQpX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CisKIEBl
bmQKIAogI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQppbmRleCA4MWIyMTk1
ZDg0ZWQxYTRhNTRmYTI1MmE0YWEzMmM4NjU1NmFlNWQ0Li4yMzNjYTM2N2RhYTA4NWM5Y2IxMDYx
YTQyMGZmZTNiZDNhMDFkM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC0zNTgsNiArMzU4LDEzIEBACiAg
ICAgICAgIF9wYWdlLT5zZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0aW5nKCk7
CiB9CiAKKy0gKHZvaWQpX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
Ym9vbCBpc0FwcEJvdW5kKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzQXBwQm91bmQp
OworICAgIH0pOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQppbmRleCBlMTVmMTBjYTIwMTU5MjBhMTQyZTZkZWFjZDYyMjVkNDY5ZWM4NTA4Li4xMTQ5NTEx
ZDhkZjViZWQ0ODJiYjUxMGU4MDk5ZTNiOWQzMTM4MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNzYsNiArNzYsMTIg
QEAgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYkNvbnRlbnRBbmFseXNpcyk7CiBTT0ZU
X0xJTktfQ0xBU1MoV2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3IpOwogI2Vu
ZGlmCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1dlYlBhZ2VQcm94eUFkZGl0aW9ucy5oPgorI2Vsc2UKKyNkZWZpbmUgV0VCX1BBR0VfUFJP
WFlfQURESVRJT05TCisjZW5kaWYKKwogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikg
TUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5lY3Rpb24oKSkKICNk
ZWZpbmUgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgTUVT
U0FHRV9DSEVDS19DT01QTEVUSU9OX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlv
bigpLCBjb21wbGV0aW9uKQogCkBAIC01NzUsNiArNTgxLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgV0VCX1BB
R0VfUFJPWFlfQURESVRJT05TCisgICAgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gcmVx
dWVzdC5pc0FwcEJvdW5kKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTMwOTgyZTJhYTJlZjdkNTczYjFlMDEzYjQ5
MTllNDVjN2VhNWU2NS4uYTJiZWVkODM1YTM0ZmJlMTk2MDM4ZmJmZWE4ZjdhMmJmMjQ2OThjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xNTU0LDExICsxNTU0LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
R2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQog
ewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQ
cmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlELCB1cmwsIHVz
ZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pLCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVj
dFRvKHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQs
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwgMCk7CiB9CiAKIHN0YXRpYyBib29sIGFueVByb2Nl
c3NQb29sSGFzRm9yZWdyb3VuZFdlYlByb2Nlc3NlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDEzMzM5MGEy
ZDdhMmEwODU3OThiOWI2NDdhOTMxYTVmN2JhNGEyZWQuLmVmOTIxMWQ5YzAxZDY4YzUyMzkwYzM0
MzVmM2ExNDdlOTdlZGVmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9y
aWdpbkRldGFpbHM+JiYpPiYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCBwcmVjb25u
ZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0OGQ3NGUyZmE1
N2Y0NDA5ZDllMzAxYjc2Yjk1NTE5NjllMzYwZjYzLi4zNjQ2MTA0ZTJlM2EyYmM0ODI4ODY1NmI4
YjgwOGI3MzViZTdlNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTEzMTksNiArMTMxOSwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlm
IChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAg
ICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50
aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQocmVxdWVzdCk7CisjZW5kaWYKKwogICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdU
Rk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCkpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQpAQCAtNDI5OSw3ICs0MzAzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDog
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRl
bnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSk7CisgICAgd2Vic2l0ZURh
dGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVu
dGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOjpObyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5Vc2VD
cmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKQpAQCAtNzg1OSw2
ICs3ODYzLDkgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY29u
ZmlndXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBwYXJhbWV0ZXJzLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAjZW5kaWYK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gbV9j
b25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOwogICAg
IHBhcmFtZXRlcnMuY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBtX2NhblVzZUNyZWRlbnRpYWxT
dG9yYWdlOwpAQCAtNzg3Nyw3ICs3ODg0LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBX
ZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5uZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3MgPSBwcmVmZXJlbmNlcygpLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrcygpOwogI2VuZGlmCi0gICAgCisKICAgICBwYXJhbWV0ZXJzLnRleHRJbnRlcmFjdGlv
bkVuYWJsZWQgPSBwcmVmZXJlbmNlcygpLnRleHRJbnRlcmFjdGlvbkVuYWJsZWQoKTsKIAogICAg
IHJldHVybiBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAzMTRkYTM1NGE3NGNiMTllY2E0MTdjNDRlNjg5NDhkOTBkYmFiNzM4Li4xYzJkYTU4NjRh
NTIxOGNmMDZmODFhMDczYjIyNmQyNzk3MmYxMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTgzOSw2ICsxODM5LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg5Myw2
ICsyODk4LDggQEAgcHJpdmF0ZToKIAogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNr
Q291bnRlciB7IDAgfTsKIAorICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsg
ZmFsc2UgfTsKKwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDQ4YjNh
MjI1ZGZiNmIzMGRhMGM1ZDFmZmVhOWZlYzc2NWUxM2I5NjkuLmEzOGU2Yzk0Nzk2ZjRlNGNkZGJk
ODE1M2IyMGVhMWM1MzFiOTgwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEwNyw2ICsxMDcsMTEgQEAg
V2ViTG9hZGVyU3RyYXRlZ3k6On5XZWJMb2FkZXJTdHJhdGVneSgpCiAKIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWlu
UmVzb3VyY2UpCisgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChmcmFtZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpKTsKKyNl
bmRpZgorCiAgICAgU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFt0aGlzLCByZWZlcnJlclBvbGljeSA9IG9wdGlvbnMu
cmVmZXJyZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc291cmNlID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KCZy
ZXNvdXJjZSksIGZyYW1lID0gbWFrZVJlZihmcmFtZSldIChSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+JiYgbG9hZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAg
IHNjaGVkdWxlTG9hZCgqbG9hZGVyLCByZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0g
UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKQEAgLTc2MCw2ICs3NjUs
MTAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2Um
IHdlYlBhZ2UsIFdlYkZyYW1lJiB3ZWJGcmFtZSwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
cmVxdWVzdC5zZXRJc0FwcEJvdW5kKHdlYlBhZ2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmxv
YWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworI2VuZGlmCisKICAgICBPcHRp
b25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKGNvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIHByZWNvbm5lY3Rpb25JZGVudGlmaWVyID0gV2ViTG9hZGVy
U3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODU1NmMxM2Q1ZTZhNzdhYmQ5NDAxNTdl
OTgxZWZhMjA2NTBhOGU0MC4uNGViYTVmOGI2YTE2M2QwNTFkMDRmOTU2YjA0MGJlZmM5ZTc4NGU5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTUxNCw2ICs1MTQsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgRU5BQkxFKEFQUF9C
T1VORF9ET01BSU5TKQogICAgICwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKICNlbmRpZgor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorI2VuZGlmCiB7CiAgICAg
QVNTRVJUKG1faWRlbnRpZmllcik7CiAKQEAgLTE2MTgsNiArMTYyMSwxMCBAQCB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJz
JiBsb2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMpCiB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzZXRM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBCb3Vu
ZCgpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKICNlbmRpZgpAQCAtNjQxNyw2ICs2
NDI0LDEwIEBAIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlCiB7CiAgICAgUmVmPFdlYkRvY3VtZW50
TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVz
dCwgc3Vic3RpdHV0ZURhdGEpOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBkb2N1
bWVudExvYWRlci0+c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOworI2VuZGlmCisKICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewog
ICAgICAgICBpZiAobV9wZW5kaW5nTmF2aWdhdGlvbklEKSB7CiAgICAgICAgICAgICBkb2N1bWVu
dExvYWRlci0+c2V0TmF2aWdhdGlvbklEKG1fcGVuZGluZ05hdmlnYXRpb25JRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggY2YwNDI2MmY3MWQ5YTBk
MTc4NTAwMWE5MDlkMTA1NjkxYTM2MTMxMi4uNGUyZTM0ZGY2ZmFhNjJhYzgzN2Y4ZWMyNDZlOWI3
Y2VlYmI5MTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTQwOCw2ICsxNDA4LDExIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IHNoYXJlYWJsZUJpdG1hcChXZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gV1RGOjpudWxsb3B0KSBjb25z
dDsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kID0gd2FzQXBwQm91bmQ7IH0KKyAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogCkBAIC0yMjI3LDYgKzIyMzIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25h
dmlnYXRpb25IYXNPY2N1cmVkIHsgZmFsc2UgfTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07
CisjZW5kaWYKICAgICBib29sIG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IDM0YjEyYzQ2NDQ0ZmYxNTVhNWUxNDMyMTk5YWQ4YTE3ODk5MTU4MmIuLmJjZjYzZDc4ZTRmZDg4
MWQ0YWQzMTE1ZDIwMWIyODRkNDZjNmRjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjI5LDQgKzYyOSw4IEBA
IEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjZW5kaWYKIAogICAgIERpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBo
YW5kbGVkKSBBc3luYworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCisjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggZjY3MDNkNzA0YzlmYTY0YzBkMDBhYzlhMGNiYjhkNzFjNjQ3NDIxNy4uMDAwMWY4
NjBkY2IyNjRmN2RmMTQ2MTM1MjAwMmMzMzE0Zjc1YzljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ0NjAsNiArNDQ2
MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQoY29uc3Qg
V2ViQ29yZTo6RWxlbWVudCYgYW5pbWF0ZWRFbGVtZQogICAgICAgICBzY2hlZHVsZUVkaXRvclN0
YXRlVXBkYXRlRm9yU3RhcnRPckVuZENvbnRhaW5lck5vZGVJZk5lZWRlZChlbmRDb250YWluZXIu
Z2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEyYTQxMzEwMGNmZGM3YjE2ZWRiNjQ1NjZiM2M5ZGM2
ZDFkYjI4MzQuLjNhMWNmM2VhNDAxMTFlMTdlZTA0ODZlY2UzMDMzZmNiMzIyYTc4MTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMS0wMi0xNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTA5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83MzUxMjk4OD4KKworICAgICAgICBBUEkgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl0pOgorCiAyMDIxLTAyLTE1ICBBZGFtIFJvYmVu
ICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYGdpdCBjb21taXQgLXZgIHN1cHBv
cnQgdG8gY29tbWl0LWxvZy1lZGl0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBlYjFj
NmI4NWE4OTI2ZGE3ODZiM2VkZTc3OGJlZmU5M2E2ZmRjMWU0Li5hMWU0MTM1NzE3ZjE2MDk3OWMw
NTNmMDcyMTAzMTU0YmZiNzY0YzFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC00NSw2
ICs0NSwxMiBAQAogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogCisjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9JbkFwcEJyb3dzZXJQ
cml2YWN5QWRkaXRpb25zLmg+CisjZWxzZQorI2RlZmluZSBBUFBfQk9VTkRfUkVRVUVTVF9BRERJ
VElPTlMKKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBpc0RvbmU7CiAKIEBpbnRlcmZhY2UgQXBwQm91
bmREb21haW5EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAgLTE0
MTUsNCArMTQyMSw1NiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJG
cmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIH0KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCitURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKK3sKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CisgICAgQVBQX0JPVU5E
X1JFUVVFU1RfQURESVRJT05TCisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3Vu
ZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKGlzQXBwQm91bmQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQoreworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIE5TU3RyaW5nICpzdGFydGluZ1VSTCA9IEAiaHR0cHM6Ly93d3cud2Via2l0
Lm9yZyI7CisgICAgTlNTdHJpbmcgKm5vbkFwcEJvdW5kVVJMID0gQCJodHRwczovL3d3dy5hcHBs
ZS5jb20iOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqc3RhcnRpbmdSZXF1ZXN0ID0gW05T
TXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6c3Rh
cnRpbmdVUkxdXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnN0YXJ0aW5nUmVxdWVzdF07
CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAg
c3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9u
QXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxdXTsKKyAgICBBUFBfQk9VTkRfUkVRVUVT
VF9BRERJVElPTlMKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVz
dF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisg
ICAgW3dlYlZpZXcgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkg
eworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7CisgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9
CisjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDIyYTQ4MjZjNDEyYjI5NDkzZTVjMzRk
ZDRhZWM4MzQwN2YxZjkzMjguLjg1MmE3YzM0ZWI0N2UyY2UwMTI2ZDRjYjcyMjhiNDY3YTc5Y2Ri
NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC02Nyw2
ICs2Nyw5IEBACiAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAq
KXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICop
c2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNF
cnJvciAqKillcnJvck91dDsKIC0gKHVuc2lnbmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVu
c2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKy0g
KHZvaWQpbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcjsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6
IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDg3MTM3OTBiYTc4YjA4MDVhYzhjYjgzMjM0NGQ2
N2MzOGM5MWI3ODIuLjE5N2JhNTY2ZWU3NmExZWUyY2I2NmU5NzgxZGZiOTUyN2NjMzVjZGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTIzOSw2ICsy
MzksMTIgQEAgc3RhdGljIE5TU3RyaW5nICpvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoaWQsIFNF
TCkKICAgICByZXR1cm4gY2xpZW50V2lkdGg7CiB9CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorLSAodm9pZClsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOih2b2lkKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Y29t
cGxldGlvbkhhbmRsZXJdOworfQorI2VuZGlmCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0
TWVzc2FnZUhhbmRsZXIgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420794</attachid>
            <date>2021-02-17 21:31:48 -0800</date>
            <delta_ts>2021-02-18 13:22:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221909-20210217213147.patch</filename>
            <type>text/plain</type>
            <size>36617</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA1N2QwYzA3MmU1NzIw
NTM0MGZmMjc2NDEzMzBmYmJmOWRkYmJiNi4uNWUyNWJkNzU5N2JmYTg4NzViN2IxOTRlYzI3MDgz
MWM4YzRhYWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
NTEyOTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHdoZXRoZXIgdGhlIGxhc3QgbmF2aWdhdGlvbiB3YXMgYXBwLWJvdW5kIGluIHRoZSBE
b2N1bWVudExvYWRlcgorICAgICAgICBzbyB3ZSBjYW4gcGFzcyBpdCB0byBhbGwgc3ViIHJlc291
cmNlIGxvYWRzLiBTZWUgV2ViS2l0IGNoYW5nZWxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmlzQXBwQm91bmQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SXNBcHBCb3VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZSk6CisKIDIwMjEt
MDItMTcgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdW0ZDUl0gQWRkIG5ldyBkYXRhbGlzdCBkcm9wZG93biBmb3IgdGV4dCBpbnB1dHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggOTk0Zjc0OWU1MmQyOTA0NzIwOTVhMDgyYjI1ZmFhZWFjMGVjOGVlMC4uNTc2NDgwYWVi
OTc5OGYxMTk4YWU3YmFkZmFiMWU3YmUwYWQwYWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBA
QAorMjAyMS0wMi0xNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTA5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MzUxMjk4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHRvIHRoZSBSZXNvdXJjZVJl
cXVlc3QgY2xhc3Mgc3BlY2lmeWluZyBhcHAKKyAgICAgICAgYm91bmQgcmVxdWVzdHMgYW5kIHBv
cHVsYXRlIHN1YnJlc291cmNlIGxvYWRzLCByZWRpcmVjdHMsIGFuZAorICAgICAgICBwcmVjb25u
ZWN0IHRhc2tzIHdpdGggdGhpcyB2YWx1ZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNv
bm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
ICogU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgICogU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
clN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICBGb3IgdGhlIGNhc2Ugb2YgYSBtYWlu
IHJlc291cmNlIGxvYWQgd2l0aG91dCBhIG5hdmlnYXRpb24sIGxpa2UgZnJvbSBhYm91dDpibGFu
aywKKyAgICAgICAgdGhlIG1haW4gcmVzb3VyY2UgbG9hZCB1c2VzIHRoZSBvcmlnaW5hbCBkb2N1
bWVudCBsb2FkZXIgd2hpY2ggd2FzIGNyZWF0ZWQgYmVmb3JlCisgICAgICAgIFdlYlBhZ2U6Omxv
YWRSZXF1ZXN0IHNldHMgdGhlIHZhbHVlIG9mIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZC4g
Rm9yIHRoaXMgcmVhc29uLAorICAgICAgICB3ZSBzaG91bGQgbm90IGNoZWNrIHRoZSBkb2N1bWVu
dCBsb2FkZXIgdmFsdWUgZm9yIHRoZSBtYWluIHJlc291cmNlIGFuZAorICAgICAgICBrbm93IHRo
YXQgdGhlIHJlc291cmNlIHJlcXVlc3QgaGFzIHRoZSBjb3JyZWN0IHZhbHVlLgorCisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6Cisg
ICAgICAgIFdlIHNob3VsZCBzdG9yZSBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGluIHRoZSBk
b2N1bWVudCBsb2FkZXIKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgcGFnZSBzbyB3ZSBkb24ndCBh
ZmZlY3QgcHJldmlvdXMgbG9hZHMgd2hpbGUgaW5pdGlhdGluZworICAgICAgICB0aGUgbmF2aWdh
dGlvbiB0byB0aGUgbmV4dCBzaXRlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDIxLTAyLTE3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhZGRpdGlvbnMgdG8gTG9jYWxDb25uZWN0aW9uLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGI2M2QxN2IxZmIzYjZkNTQyNTFiNDg0
NTRiYjIwMjU4YjRhMjIxNjguLmVhYjcxMGEyN2RlZmQ4ZGQ1ZTNlYWIyMjcyZTg4YTFmMzM2Y2Rh
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MjAsNiArNDIw
LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q29udHJvbGxpbmdTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwog
I2VuZGlmCiAKKyAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICB2b2lkIHNldGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKwog
cHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTY1Nyw2ICs2NjAsOCBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FsbG93c1dlYkFyY2hpdmVGb3JNYWluRnJhbWUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NEYXRhVVJMc0Zvck1haW5GcmFtZSB7IGZhbHNlIH07
CisKKyAgICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CiB9Owog
CiBpbmxpbmUgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0
dXJlQ2xpZW50Tm90aWZpY2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCmluZGV4IDlkY2U5MTdlMmE4OTUwNzJhOTRhMGJhN2I2OWIxMDQ5YWFlZGFlY2Yu
LmUwNjk4Njg4NjU3YjFmYzFlMzU1MTdjN2I0ZTIyYzlmN2YxMGI4ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0
ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiAgICAgaWYgKG90aGVyLm1faHR0
cEJvZHkpCiAgICAgICAgIHNldEhUVFBCb2R5KG90aGVyLm1faHR0cEJvZHktPmlzb2xhdGVkQ29w
eSgpKTsKICAgICBzZXRBbGxvd0Nvb2tpZXMob3RoZXIubV9hbGxvd0Nvb2tpZXMpOworICAgIHNl
dElzQXBwQm91bmQob3RoZXIuaXNBcHBCb3VuZCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjppc0VtcHR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggN2QzYzg2MzNlMmJlMTFjZGIy
YmRhNWY3ZjY3ZTAyYzRjNzYzZjE2NS4uZWFlMDU2OTk5MTRjNTI0YjcwNTkxOTQ4M2Y3M2RkNjBk
ZDUzN2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTE5NSw2ICsxOTUsOSBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAorICAgIGJvb2wgaXNBcHBCb3VuZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBcHBCb3VuZDsgfQorICAgIHZvaWQgc2V0SXNBcHBCb3VuZChib29sIGlzQXBw
Qm91bmQpIHsgbV9pc0FwcEJvdW5kID0gaXNBcHBCb3VuZDsgfTsKKwogcHJvdGVjdGVkOgogICAg
IC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJlcXVlc3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRm
b3JtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0CiAgICAgUmVzb3VyY2VSZXF1ZXN0QmFz
ZSgpCkBAIC0yMDUsNiArMjA4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fcGxhdGZvcm1S
ZXF1ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkKICAgICAgICAgLCBtX2hpZGRlbkZyb21JbnNwZWN0b3Io
ZmFsc2UpCiAgICAgICAgICwgbV9pc1RvcFNpdGUoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEJv
dW5kKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTIyMCw2ICsyMjQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZChmYWxzZSkKICAgICAgICAg
LCBtX2hpZGRlbkZyb21JbnNwZWN0b3IoZmFsc2UpCiAgICAgICAgICwgbV9pc1RvcFNpdGUoZmFs
c2UpCisgICAgICAgICwgbV9pc0FwcEJvdW5kKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTI1
Myw2ICsyNTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1
ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yIDogMTsK
ICAgICBib29sIG1faXNUb3BTaXRlIDogMTsKKyAgICBib29sIG1faXNBcHBCb3VuZCA6IDE7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIE9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBt
X3N5c3RlbVByZXZpZXdJbmZvOwogI2VuZGlmCkBAIC0yODgsNiArMjk0LDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1faXNUb3BTaXRlOwogICAgIGVuY29kZXIgPDwgbV9w
cmlvcml0eTsKICAgICBlbmNvZGVyIDw8IG1fcmVxdWVzdGVyOworICAgIGVuY29kZXIgPDwgbV9p
c0FwcEJvdW5kOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMzY1LDYgKzM3Miwx
MiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIg
PSAqcmVxdWVzdGVyOwogCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNBcHBCb3VuZDsKKyAgICBkZWNv
ZGVyID4+IGlzQXBwQm91bmQ7CisgICAgaWYgKCFpc0FwcEJvdW5kKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgbV9pc0FwcEJvdW5kID0gKmlzQXBwQm91bmQ7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA3YTkzMTk0OGEwNTZlYjkyZWNiZDNmMmQyNzRkZjE0NGRmMDFhOTVlLi40M2Q4
ZDYwMWU4NzU4MGI3YzU1Y2ZlZjRmNGVjNDExODgwMDc3MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcg
QEAgYm9vbCBOZXR3b3JrUHJvY2Vzczo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
TW9kZUVuYWJsZWQ7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgTE9H
KE5ldHdvcmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGlu
dClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTEzNjAsNiArMTM2MCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpCiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKKyAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0SXNBcHBCb3VuZChsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7CiAgICAgcGFyYW1ldGVycy53
ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2VQcm94eUlEOwogICAgIHBhcmFtZXRlcnMud2ViUGFnZUlE
ID0gd2ViUGFnZUlEOwogICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMTEyNjJhODU2YjEzODEzMTY5MmMyNTU0
ODJiM2JhNjU3NDQ1ZWIyMS4uZDMwMzU3NGRhNzFjNmMxZjMwYzlmYWE2N2M0N2NjYmMwMDg3NmMz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0
aENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwogICAgIHZvaWQg
Y2FjaGVTdG9yYWdlUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVJvb3RQYXRo
Q2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFBB
TDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCk7CiAKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1
dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJv
bGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA1OGIzZTRjODY4YzcwMTJjZGIzNTY1NmVhYWJmMmI2MTgxZjJiYzdlLi4yOGFkOWQwNDM2YTcz
ZmZkZmU0NjQ2YmUwZDAyOTNjMGY5MTM2MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc3LDcgKzc3
LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFBy
ZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAg
ICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFn
ZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBQcmVj
b25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgT3B0
aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgZW51bTpib29sIFdlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAo
KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVkY2NkMTk2YjZhY2M0OTc1NjZiOWY4MjdkNzU3MmY2
MjgxODIzMGIuLmM1YzM0MWFjZmRlZmZlMWRjZGE4Yzc2ODNlOWZkYjExMDQ3YzcyOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTg3Niw2ICs4NzYsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIE9wdGlvbmFsPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKKyAgICByZWRpcmVjdFJl
cXVlc3Quc2V0SXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Q6IChtX2lz
S2VwdEFsaXZlPSVkLCBoYXNBZENsaWNrQ29udmVyc2lvbj0lZCkiLCBtX2lzS2VwdEFsaXZlLCAh
IXByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSk7CiAgICAgQVNT
RVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQppbmRleCA2NDk4NGQ3MmYxYzAwOTc2NTEwMjdhMDIyMDU5ZTg0YTQ3MjgzMWY0Li5k
NTQzMDIyNzUzYWRmMzE5MzYyNDBjZjJhNDhmNTFiNzIzOWQ1ZWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTc0Myw2ICs3NDMsNyBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvblJlY3QnOiBbJyJF
ZGl0b3JTdGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQn
OiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3Jp
dGUnOiBbJyJEb3dubG9hZElELmgiJ10sCisgICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCIn
XSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1h
bmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsn
IkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5kZXggYWVkYzE2OWIzOTAxNmFmMzAyMmI5MWE2
YWMwOTcwNmEzYzAwYWEzOS4uMzFlMDcxNTU5NjZiYjdmYjZkNzNhZGJiNjNhN2E3OTMzYjg2OWI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oCkBAIC0yNyw3ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNs
YXNzIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIDogYm9vbCB7IFllcywgTm8gfTsKK2VudW0g
Y2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBib29sIHsgTm8sIFllcyB9OworZW51
bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDk5OWQ0ZTJhN2ZhNTg2MDY5MjQxNmUxOWQzYzhjYjdhYjhjNGU0MzYuLmIy
NjIxYWFkMWJjNDMwZjNlNzY0OTM5MDIwMmY1OWViMGYwMjc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzQsNiAr
MTc0LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzOwogICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWluczsKICNlbmRpZgorICAgIGVuY29kZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsK
ICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAg
IGVuY29kZXIgPDwgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAKQEAgLTU3MCw2ICs1NzEsOCBA
QCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICNlbmRpZgorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
MTZjNGEzZTNiYmZlODE1ODVjNzU0ZTAzMjJiYWUxYTY3NWU5YTBiZS4uN2E4MmM2MGFkZTRhZmFi
N2MwY2FiNGQwN2RjZDgzZjM3NzczYWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjQ1LDYgKzI0NSw3IEBAIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJp
dmFjeVF1aXJrcyB7IGZhbHNlIH07CiAgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCB7IGZhbHNlIH07CiAgICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRy
dWUgfTsKIAogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCBmNTJlYWJmMWQy
NWFmODYzMmQ2NjdiYmVjZTNjZTg1MGYwOTFhOWE3Li44M2MyYTg3MzNjOGE1YWQyNzk0ZjkxMzBm
NjRjMjhhNjkwMTY1YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTIxMyw2ICsyMTMsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVu
Y29kZXImIGVuY29kZQogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiAgICAgZW5jb2RlciA8PCBy
ZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVl
c3QuY2FjaGVQb2xpY3koKTsKKyAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5pc0FwcEJv
dW5kKCk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC0yNTYsNiArMjU3LDExIEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNvdXJjZVJlcXVlc3Qu
c2V0Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3kpOwogCisgICAgYm9vbCBpc0FwcEJvdW5kOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaXNBcHBCb3VuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNBcHBCb3VuZChpc0FwcEJvdW5kKTsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDk3NDQzNDEw
MWY4NGVjNTI0OTE4YWJjMTRjM2YzMWZiN2FiZTZiY2IuLmM5ZDI1MWViNWU5Zjc1YzUzNDZmN2Y3
YmRkZTA1NzU0MzIzNTExNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC04Nyw0
ICs4Nyw2IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOihCT09MKW92ZXJyaWRlVGltZXIgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3NldFByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3Rpbmc6KE5TVVJMICopdXJsIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQp
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXI7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggMGZhNWRiMGZmZWUzZmI2OWFkOWU5MTI1ZjFkMTU0
YmNhY2JkZThiMC4uN2RiNjE5Y2IxMWRjNDVlNzk5MzI5ZGE0YjQwMjNjMmQzN2VhNjY2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rl
c3RpbmcubW0KQEAgLTMyNiw0ICszMjYsMTEgQEAKICNlbmRpZgogfQogCistICh2b2lkKV9sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgX3BhZ2UtPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgaXNBcHBCb3VuZCkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc0FwcEJvdW5kKTsKKyAgICB9KTsKK30KKwogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQppbmRleCA5NDVjOWEzNDliMzgxODM0YzRhZDFhMGI2MWRmNWJkMzEyOWMxNDZjLi42OWRk
YzdjMzU3NmExNDc3YzlmYzQ0YmM5NWI3OWFhNTI4MmIyZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtODAsNiArODAs
MTIgQEAgU09GVF9MSU5LX0NMQVNTKFdlYkNvbnRlbnRBbmFseXNpcywgV2ViRmlsdGVyRXZhbHVh
dG9yKTsKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlDb2NvYUFkZGl0aW9u
c0JlZm9yZS5tbT4KICNlbmRpZgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBv
cnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KKyNlbHNlCisjZGVm
aW5lIFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworI2VuZGlmCisKICNkZWZpbmUgTUVTU0FHRV9D
SEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5j
b25uZWN0aW9uKCkpCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24s
IGNvbXBsZXRpb24pIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTl9CQVNFKGFzc2VydGlvbiwgcHJv
Y2VzcygpLmNvbm5lY3Rpb24oKSwgY29tcGxldGlvbikKIApAQCAtNTk5LDYgKzYwNSwxNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvbwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbygpLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBXRUJfUEFHRV9QUk9YWV9B
RERJVElPTlMKKyAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBw
Qm91bmQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBhMzA5ODJlMmFhMmVmN2Q1NzNiMWUwMTNiNDkxOWU0NWM3ZWE1ZTY1Li5hMmJlZWQ4
MzVhMzRmYmUxOTYwMzhmYmZlYThmN2EyYmYyNDY5OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1
NTQsMTEgKzE1NTQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpIHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQs
IHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdlSUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIDApOworICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdl
UHJveHlJRCwgd2ViUGFnZUlELCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpLCAwKTsKIH0KIAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2Vi
UHJvY2Vzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTMzMzkwYTJkN2EyYTA4NTc5OGI5YjY0N2E5MzFh
NWY3YmE0YTJlZC4uZWY5MjExZDljMDFkNjhjNTIzOTBjMzQzNWYzYTE0N2U5N2VkZWY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExvY2Fs
U3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwog
Ci0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhkNzQyYTg0ZDQzYTNhOTk0NTUwYmFlYTg5NmEwM2U3
MTIzMDJjNDguLmJmM2VjODg5OGQ3OTFhODUxM2RiOTg3YmFjMGRhYTVkYjcyMTk3NjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMyMCw2ICsxMzIwLDEw
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKHNob3VsZEZvcmNlRm9yZWdyb3Vu
ZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRD
bGllbnROYXZpZ2F0aW9uQWN0aXZpdHkocHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRB
Y3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocmVxdWVzdCk7CisjZW5kaWYKKwogICAg
IGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93
ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkpOwogICAgIHJldHVybiBuYXZpZ2F0
aW9uOwogfQpAQCAtNDM1NCw3ICs0MzU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5l
Y3RUbyhjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkRvTm90VXNlOwotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vzcygp
LnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJs
LCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCku
cHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmws
IHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPyBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObyk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVz
ZUNyZWRlbnRpYWxTdG9yYWdlKQpAQCAtNzk1Miw2ICs3OTU2LDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJv
eHkmIHByb2MKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zOwogI2VuZGlmCisgICAgcGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kID0gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIHBhcmFtZXRlcnMu
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPnNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAgICAgcGFyYW1ldGVycy5jYW5V
c2VDcmVkZW50aWFsU3RvcmFnZSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjkyNDA2YzliZjZjYWU3NzFiZGQx
YzI5MWE2NWIzZWQxMzBmYzBlYS4uNjUwZTU4NGM4YTcxNGRjNTI3NzMzZGQzZTY2NzBhMDE5NjJk
OGUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4NTAsNiAr
MTg1MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEltYWdlRXh0cmFjdGlvblByZXZpZXco
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBzZXRMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJv
Y2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yOTA0LDYgKzI5MDksOCBAQCBwcml2YXRlOgogCiAgICAg
c2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCisgICAgYm9vbCBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworCiAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDQ4YjNhMjI1
ZGZiNmIzMGRhMGM1ZDFmZmVhOWZlYzc2NWUxM2I5NjkuLmNjMjIwM2ZlOGM5N2E1OTdhZGMzMDY5
YjgwYTc4Nzg4ZmJkNWUzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEwNyw2ICsxMDcsMTMgQEAgV2Vi
TG9hZGVyU3RyYXRlZ3k6On5XZWJMb2FkZXJTdHJhdGVneSgpCiAKIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKHJlc291cmNlLnR5cGUoKSAh
PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7CisgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGZyYW1lLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpIHsKKyAgICAgICAgICAg
IGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+bG9hZGVyKCkpCisgICAgICAgICAgICAgICAgcmVx
dWVzdC5zZXRJc0FwcEJvdW5kKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFN1YnJlc291cmNlTG9hZGVyOjpj
cmVhdGUoZnJhbWUsIHJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBbdGhpcywg
cmVmZXJyZXJQb2xpY3kgPSBvcHRpb25zLnJlZmVycmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNvdXJjZSA9IENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPigmcmVzb3VyY2UpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUp
XSAoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmIGxvYWRlcikgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChsb2FkZXIpCiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKmxvYWRlciwgcmVzb3VyY2Uu
Z2V0KCksIHJlZmVycmVyUG9saWN5ID09IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRv
d25ncmFkZSk7CkBAIC03NjAsNiArNzY3LDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBy
ZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAK
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBXZWJQYWdlJiB3ZWJQYWdlLCBXZWJGcmFtZSYgd2ViRnJhbWUsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSB3ZWJQYWdlLm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKSB7Cisg
ICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+bG9hZGVyKCkpCisgICAgICAgICAgICBy
ZXF1ZXN0LnNldElzQXBwQm91bmQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKCkpOworICAgIH0KKwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0
aW9uSWRlbnRpZmllcjsKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgcHJl
Y29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJMb2FkZXJTdHJhdGVneTo6Z2VuZXJhdGVMb2FkSWRl
bnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5ZjZlYjZjZGU2ODczMzQ0NTkwNGRlNzdjNWI3N2U5OWVjNWEyMzIxLi44MDhiZTYy
ZDRmZGMzYmVjMTYxNmEzZmI5ZDY5NjA2ZWEyODAyM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTE1LDYgKzUxNSw3IEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX2xp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zKQogI2VuZGlmCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQogewogICAgIEFT
U0VSVChtX2lkZW50aWZpZXIpOwogCkBAIC0xNjM0LDYgKzE2MzUsOCBAQCB2b2lkIFdlYlBhZ2U6
OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBs
b2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYg
bG9hZFBhcmFtZXRlcnMpCiB7CisgICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwog
I2VuZGlmCkBAIC02NDcyLDYgKzY0NzUsOCBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6
OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZQogewog
ICAgIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIAorICAgIGRvY3VtZW50TG9h
ZGVyLT5zZXRsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCk7CisKICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAobV9w
ZW5kaW5nTmF2aWdhdGlvbklEKSB7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0TmF2
aWdhdGlvbklEKG1fcGVuZGluZ05hdmlnYXRpb25JRCk7CkBAIC03MzQxLDYgKzczNDYsMTEgQEAg
dm9pZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkgKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2U6Omxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKS0+bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGYzZWI3MmQyZGU5
OGYwMDJhNmZmNzg5ZDJkYTMyZmFiYTk0MDVmYmIuLjFhNTUwMGIzNTM3OTU3MGRlMGMxZWYyZDk3
ZjQyZDhiYTdmNDU3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE0MDYsNiArMTQwNiw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFVzZVBE
RlBsdWdpbihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBTdHJpbmdWaWV3IHBhdGgpIGNvbnN0
OwogI2VuZGlmCiAKKyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3
YXNBcHBCb3VuZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSB3YXNBcHBCb3VuZDsg
fQorICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0yMjI2LDYgKzIyMjks
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21h
aW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgeyBmYWxzZSB9
OwogI2VuZGlmCisKKyAgICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNl
IH07CisKICAgICBib29sIG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDA4
N2M5MGExMzRjYjRlNjE4YzNkN2QyNDgxMjhkZDljMTRjNGY0OWEuLjMwMGY3MzYxZmQzZDM2YzFh
YTgzZDllNjM0ZGEzNmQ1ZmM2NWUyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjMwLDQgKzYzMCw2IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjZW5kaWYKIAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdp
dGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5k
bGVkKSBBc3luYworCisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpIC0+IChib29sIHdh
c0FwcEJvdW5kKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGZiMzk3NDk4NjM3ODQ1ZTNhOTA4Mzg1MTMzYjc4NzkxNGFlMjA0OWMu
LjJmZGFlMGMwMTFjZjE5MTM5OGUzM2YyMmE2Y2ZlOGMwZmFkOTA2NTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0wMi0xNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTA5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MzUxMjk4OD4KKworICAgICAgICBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOl0pOgorCiAyMDIxLTAyLTE3ICBBZGl0eWEgS2VlcnRoaSAgPGFr
ZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIEFkZCBuZXcgZGF0YWxpc3Qg
ZHJvcGRvd24gZm9yIHRleHQgaW5wdXRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggN2M4
NzgyNmZlZTZmNGU0NDE5NzA3YmU3NWQyMDZkY2U4NWE2NGU3NC4uMDFiZjRmNDA3Mzg1NjRiNDlj
YzIwMWVmZmNjYWUzMjA5NDMxYzY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtNDMs
NiArNDMsMTAgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvSW5BcHBCcm93c2VyUHJpdmFjeUFkZGl0aW9ucy5oPgorI2VuZGlmCisKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKIHN0YXRpYyBib29sIGlzRG9uZTsKQEAgLTE0
MTIsMyArMTQxNiw1NSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJG
cmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCitURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBO
U1N0cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgc3RhdGljIGJvb2wg
aXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1
ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6dXJsXV07CisgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KGlzQXBwQm91bmQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIE5TU3RyaW5nICpzdGFydGluZ1VSTCA9IEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZyI7
CisgICAgTlNTdHJpbmcgKm5vbkFwcEJvdW5kVVJMID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20i
OworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqc3RhcnRpbmdSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6c3RhcnRpbmdV
UkxdXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnN0YXJ0aW5nUmVxdWVzdF07CisgICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91
bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxdXTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJ
VElPTlMKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07Cisg
ICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW3dl
YlZpZXcgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgeworICAg
ICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggMjJhNDgy
NmM0MTJiMjk0OTNlNWMzNGRkNGFlYzgzNDA3ZjFmOTMyOC4uYzFkYzA4Y2ZhNGNmMDYxMzM1MjQ1
N2JmMTFhOGVlMzA2MTA3YWU4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmgKQEAgLTY3LDYgKzY3LDcgQEAKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5j
dGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJn
dW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVudGls
Q2xpZW50V2lkdGhJczoodW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKKy0gKHZvaWQpbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsK
IEBlbmQKIAogQGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQppbmRleCA4NzEzNzkwYmE3OGIwODA1YWM4Y2I4MzIzNDRkNjdjMzhjOTFiNzgyLi4zNjBl
N2Q2ZjdmMDdkZWYwZDJjZWZkNzUzNmU2OGZkMzFkYjFkYzdiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yMzksNiArMjM5LDEwIEBAIHN0YXRpYyBO
U1N0cmluZyAqb3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyKGlkLCBTRUwpCiAgICAgcmV0dXJuIGNs
aWVudFdpZHRoOwogfQogCistICh2b2lkKWxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBbc2VsZiBfbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDpjb21wbGV0aW9uSGFuZGxlcl07Cit9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBUZXN0TWVzc2FnZUhhbmRsZXIgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>