<?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>210398</bug_id>
          
          <creation_ts>2020-04-11 21:00:55 -0700</creation_ts>
          <short_desc>Move -_requestTextInputContextsInRect to WKContentView to simplify implementation</short_desc>
          <delta_ts>2020-04-16 13:39:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210405</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210610</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210558</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1640634</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-11 21:00:55 -0700</bug_when>
    <thetext>Move -_requestTextInputContextsInRect to WKContentView to simplify implementation. -_requestTextInputContextsInRect is defined in WKWebView, but is not needed on Mac and this unnecessarily complicates its implementation: it has to deal with coordinate space differences due to differences in what is the root view on Mac and iOS + it has to know about iOS&apos;s custom content views. This can all be removed once moved to WKContentView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640635</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-11 21:01:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/61656931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640637</commentid>
    <comment_count>2</comment_count>
      <attachid>396205</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-11 21:08:19 -0700</bug_when>
    <thetext>Created attachment 396205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640638</commentid>
    <comment_count>3</comment_count>
      <attachid>396206</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-11 21:11:12 -0700</bug_when>
    <thetext>Created attachment 396206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640639</commentid>
    <comment_count>4</comment_count>
      <attachid>396207</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-11 21:13:26 -0700</bug_when>
    <thetext>Created attachment 396207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640685</commentid>
    <comment_count>5</comment_count>
      <attachid>396223</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 09:13:09 -0700</bug_when>
    <thetext>Created attachment 396223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640686</commentid>
    <comment_count>6</comment_count>
      <attachid>396224</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 09:28:44 -0700</bug_when>
    <thetext>Created attachment 396224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640687</commentid>
    <comment_count>7</comment_count>
      <attachid>396224</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 09:29:40 -0700</bug_when>
    <thetext>Comment on attachment 396224
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:51
&gt;  - (NSArray&lt;_WKTextInputContext *&gt; *)synchronouslyRequestTextInputContextsInRect:(CGRect)rect
&gt;  {
&gt;      __block bool finished = false;
&gt;      __block RetainPtr&lt;NSArray&lt;_WKTextInputContext *&gt;&gt; result;
&gt; -    [self _requestTextInputContextsInRect:rect completionHandler:^(NSArray&lt;_WKTextInputContext *&gt; *contexts) {
&gt; +    [[self wkContentView] _requestTextInputContextsInRect:rect completionHandler:^(NSArray&lt;_WKTextInputContext *&gt; *contexts) {
&gt;          result = contexts;
&gt;          finished = true;
&gt;      }];

This could be shared between this file and DocumentEditingContext.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640692</commentid>
    <comment_count>8</comment_count>
      <attachid>396226</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 09:57:36 -0700</bug_when>
    <thetext>Created attachment 396226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640738</commentid>
    <comment_count>9</comment_count>
      <attachid>396226</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-12 14:27:46 -0700</bug_when>
    <thetext>Comment on attachment 396226
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5064
&gt; +- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler

Outside of the tests, where is the code that invokes this? Is this something defined by iOS that we are implementing/overriding?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:53
&gt;  @interface WKContentView ()
&gt; +- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler;
&gt;  - (void)requestDocumentContext:(UIWKDocumentRequest *)request completionHandler:(void (^)(UIWKDocumentContext *))completionHandler;
&gt;  - (void)adjustSelectionWithDelta:(NSRange)deltaRange completionHandler:(void (^)(void))completionHandler;
&gt;  @end

This doesn’t seem like a good way to expose methods for testing. Can we instead put this into a header accessible to the tests, like the PrivateForTesting ones?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:42
&gt; +@interface WKContentView ()
&gt; +- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler;
&gt; +@end

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640740</commentid>
    <comment_count>10</comment_count>
      <attachid>396226</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 14:35:11 -0700</bug_when>
    <thetext>Comment on attachment 396226
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5064
&gt;&gt; +- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler
&gt; 
&gt; Outside of the tests, where is the code that invokes this? Is this something defined by iOS that we are implementing/overriding?

Invoking code is in WebKitAdditions. It&apos;s something so that WebKitAdditions code can call this.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:53
&gt;&gt;  @end
&gt; 
&gt; This doesn’t seem like a good way to expose methods for testing. Can we instead put this into a header accessible to the tests, like the PrivateForTesting ones?

OK

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:42
&gt;&gt; +@end
&gt; 
&gt; Ditto.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640743</commentid>
    <comment_count>11</comment_count>
      <attachid>396240</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 14:43:26 -0700</bug_when>
    <thetext>Created attachment 396240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640744</commentid>
    <comment_count>12</comment_count>
      <attachid>396240</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 14:55:29 -0700</bug_when>
    <thetext>Comment on attachment 396240
Patch

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

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:33
&gt; +@interface WKContentView (WKTestingIOS)

This is wrong. WKContentView is not defined and the WKContentView.h is a project header. We don&apos;t want to expose that because its an implementation detail. Could define stub WKContentView here, but it&apos;s already in TestWKWebView.h. so, I&apos;ll move this there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640745</commentid>
    <comment_count>13</comment_count>
      <attachid>396240</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 15:00:11 -0700</bug_when>
    <thetext>Comment on attachment 396240
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:33
&gt;&gt; +@interface WKContentView (WKTestingIOS)
&gt; 
&gt; This is wrong. WKContentView is not defined and the WKContentView.h is a project header. We don&apos;t want to expose that because its an implementation detail. Could define stub WKContentView here, but it&apos;s already in TestWKWebView.h. so, I&apos;ll move this there.

No, I&apos;m not doing that either because I think it&apos;s going in the wrong direction: TestWebKitAPI should only test API or SPI so that it doesn&apos;t need to entangle itself in the guts of the dependent frameworks. I think that was the original intention of TestWebKitAPI. So, &apos;ll expose new WKWebView testing SPI here and then WKWebViewPrivateForTestingIOS.cpp will have its implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640746</commentid>
    <comment_count>14</comment_count>
      <attachid>396241</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-12 15:23:51 -0700</bug_when>
    <thetext>Created attachment 396241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640893</commentid>
    <comment_count>15</comment_count>
      <attachid>396290</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-13 08:50:43 -0700</bug_when>
    <thetext>Created attachment 396290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641041</commentid>
    <comment_count>16</comment_count>
      <attachid>396290</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-13 12:41:37 -0700</bug_when>
    <thetext>Comment on attachment 396290
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5065
&gt; +    if (WebKit::mayContainEditableElementsInRect(self, rect)) {

This is wrong. This needs to be negated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641143</commentid>
    <comment_count>17</comment_count>
      <attachid>396344</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-13 15:30:53 -0700</bug_when>
    <thetext>Created attachment 396344
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641153</commentid>
    <comment_count>18</comment_count>
      <attachid>396349</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-13 15:52:52 -0700</bug_when>
    <thetext>Created attachment 396349
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641458</commentid>
    <comment_count>19</comment_count>
      <attachid>396441</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-14 11:16:40 -0700</bug_when>
    <thetext>Created attachment 396441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641470</commentid>
    <comment_count>20</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-14 11:27:50 -0700</bug_when>
    <thetext>Created attachment 396444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641913</commentid>
    <comment_count>21</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-15 12:37:49 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt; Source/WebKit/ChangeLog:26
&gt; +        for the returned contexts to be in WKWebView coordinates. This keeps existings tests passing

existings =&gt; existing

&gt; Source/WebKit/ChangeLog:27
&gt; +        as mekes using this function intuitive since callers specify and get rects in WKWebView coordinates.

mekes =&gt; makes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641915</commentid>
    <comment_count>22</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-15 12:38:16 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt; Source/WebKit/ChangeLog:11
&gt; +        in what is the root view on Mac and iOS + it has to know about iOS&apos;s custom content views.

iOS&apos;s =&gt; iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641928</commentid>
    <comment_count>23</comment_count>
      <attachid>396444</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-15 13:03:17 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:-339
&gt; -- (BOOL)_mayContainEditableElementsInRect:(CGRect)rect;
&gt; -- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0));

I’m surprised we can simply remove these.

Typically we can’t remove things from &quot;Private.h&quot; headers without making some allowance for who might be calling on purpose or by accident. Two issues: 1) Things, especially inside Apple, that will fail to compile because of the header change. 2) Callers of these methods that will crash with a method not found exception. In this case, I believe you are asserting that the only callers we need to worry about are in internal Apple software and you have researched and there are none that aren’t updated in lock step with WebKit?

Sometimes to mitigate issue (1) we leave the methods in the header with some kind of deprecation annotation, and to mitigate issue (2) we leave the methods in place and have them do nothing, to reduce risk. I am not doubting your choice here, but I don’t see the explicit statement of how you determined this was safe and neither of those were necessary. My intuition says you might be right.

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:48
&gt; +    CGRect adjustedRect = [self convertRect:rect toView:_contentView.get()];

I&apos;d suggest auto here.

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:55
&gt; +        auto adjustedContexts = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.count]);

I’m shocked that Foundation doesn’t offer a way to make one NSArray from another using a block to describe how to map each element, but I can’t find one. Seems like WTF should add one so that so we’re not writing loops like this out. But still wondering if I just missed something.

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:57
&gt; +            WebCore::ElementContext adjustedContext = context._textInputContext;

I’d suggest auto here:

    auto adjustedContext = context._textInputContext;

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:61
&gt; +        completionHandler(adjustedContexts.autorelease());

The use of autorelease here is unnecessary and arguably incorrect. Should be:

    completionHandler(adjustedContexts.get());

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:67
&gt; +    [(id&lt;UIWKInteractionViewProtocol&gt;)_contentView requestDocumentContext:request completionHandler:completionHandler];

Why is this cast needed? Isn’t there a header that exposes the fact that WKWebView implements UIWKInteractionViewProtocol that the test can include?

If not, and we have to work around that, we could consider declaring a WKWebView category to state this fact, rather than writing typecasts.

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:72
&gt; +    [(id&lt;UIWKInteractionViewProtocol&gt;)_contentView adjustSelectionWithDelta:deltaRange completionHandler:completionHandler];

Ditto.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5102
&gt; +        auto elements = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.size()]);
&gt; +        for (const auto&amp; context : contexts)
&gt; +            [elements addObject:adoptNS([[_WKTextInputContext alloc] _initWithTextInputContext:context]).get()];
&gt; +        completionHandler(elements.get());

Should do as Sam Weinig suggested and add an overload of createNSArray in VectorCocoa.h that takes a lambda, and then rewrite as follows:

    completionHandler(createNSArray(contexts, [] (const WebCore::ElementContext&amp; context) {
        return adoptNS([[_WKTextInputContext alloc] _initWithTextInputContext:context]);
    }).get());

Maybe can even use auto&amp; for the lambda argument type.

I’m not saying this needs to be done in this patch, but that should be our future direction.

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:841
&gt; +    CGRect contentRect = CGRectMake(x, y, width, height);

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641931</commentid>
    <comment_count>24</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-15 13:15:35 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

Thanks for the review.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:-339
&gt;&gt; -- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0));
&gt; 
&gt; I’m surprised we can simply remove these.
&gt; 
&gt; Typically we can’t remove things from &quot;Private.h&quot; headers without making some allowance for who might be calling on purpose or by accident. Two issues: 1) Things, especially inside Apple, that will fail to compile because of the header change. 2) Callers of these methods that will crash with a method not found exception. In this case, I believe you are asserting that the only callers we need to worry about are in internal Apple software and you have researched and there are none that aren’t updated in lock step with WebKit?
&gt; 
&gt; Sometimes to mitigate issue (1) we leave the methods in the header with some kind of deprecation annotation, and to mitigate issue (2) we leave the methods in place and have them do nothing, to reduce risk. I am not doubting your choice here, but I don’t see the explicit statement of how you determined this was safe and neither of those were necessary. My intuition says you might be right.

Your assumption is 100% correct: I did research these. These SPI are only used by WebKitAdditions: 0 other clients.

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:48
&gt;&gt; +    CGRect adjustedRect = [self convertRect:rect toView:_contentView.get()];
&gt; 
&gt; I&apos;d suggest auto here.

OK

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:55
&gt;&gt; +        auto adjustedContexts = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.count]);
&gt; 
&gt; I’m shocked that Foundation doesn’t offer a way to make one NSArray from another using a block to describe how to map each element, but I can’t find one. Seems like WTF should add one so that so we’re not writing loops like this out. But still wondering if I just missed something.

I can add one... thought this was a one off, but I didn&apos;t grep, yet.

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:57
&gt;&gt; +            WebCore::ElementContext adjustedContext = context._textInputContext;
&gt; 
&gt; I’d suggest auto here:
&gt; 
&gt;     auto adjustedContext = context._textInputContext;

OK

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:61
&gt;&gt; +        completionHandler(adjustedContexts.autorelease());
&gt; 
&gt; The use of autorelease here is unnecessary and arguably incorrect. Should be:
&gt; 
&gt;     completionHandler(adjustedContexts.get());

yeah, I&apos;ll change.

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:67
&gt;&gt; +    [(id&lt;UIWKInteractionViewProtocol&gt;)_contentView requestDocumentContext:request completionHandler:completionHandler];
&gt; 
&gt; Why is this cast needed? Isn’t there a header that exposes the fact that WKWebView implements UIWKInteractionViewProtocol that the test can include?
&gt; 
&gt; If not, and we have to work around that, we could consider declaring a WKWebView category to state this fact, rather than writing typecasts.

Not necessary given I need to include the content view interaction header for -_requestTextInputContextsInRect. Will remove.

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:72
&gt;&gt; +    [(id&lt;UIWKInteractionViewProtocol&gt;)_contentView adjustSelectionWithDelta:deltaRange completionHandler:completionHandler];
&gt; 
&gt; Ditto.

Will remove

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5102
&gt;&gt; +        completionHandler(elements.get());
&gt; 
&gt; Should do as Sam Weinig suggested and add an overload of createNSArray in VectorCocoa.h that takes a lambda, and then rewrite as follows:
&gt; 
&gt;     completionHandler(createNSArray(contexts, [] (const WebCore::ElementContext&amp; context) {
&gt;         return adoptNS([[_WKTextInputContext alloc] _initWithTextInputContext:context]);
&gt;     }).get());
&gt; 
&gt; Maybe can even use auto&amp; for the lambda argument type.
&gt; 
&gt; I’m not saying this needs to be done in this patch, but that should be our future direction.

I knew you were working on this clean up and thought you were going to add it. When I wrote this patch I don&apos;t think you landed your change, yet. Is it landed now? If it&apos;s landed then I will try to add createNSArray() and use it.

&gt;&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:841
&gt;&gt; +    CGRect contentRect = CGRectMake(x, y, width, height);
&gt; 
&gt; auto

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642007</commentid>
    <comment_count>25</comment_count>
      <attachid>396444</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-15 15:37:05 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:-339
&gt;&gt;&gt; -- (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void(^)(NSArray&lt;_WKTextInputContext *&gt; *))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0));
&gt;&gt; 
&gt;&gt; I’m surprised we can simply remove these.
&gt;&gt; 
&gt;&gt; Typically we can’t remove things from &quot;Private.h&quot; headers without making some allowance for who might be calling on purpose or by accident. Two issues: 1) Things, especially inside Apple, that will fail to compile because of the header change. 2) Callers of these methods that will crash with a method not found exception. In this case, I believe you are asserting that the only callers we need to worry about are in internal Apple software and you have researched and there are none that aren’t updated in lock step with WebKit?
&gt;&gt; 
&gt;&gt; Sometimes to mitigate issue (1) we leave the methods in the header with some kind of deprecation annotation, and to mitigate issue (2) we leave the methods in place and have them do nothing, to reduce risk. I am not doubting your choice here, but I don’t see the explicit statement of how you determined this was safe and neither of those were necessary. My intuition says you might be right.
&gt; 
&gt; Your assumption is 100% correct: I did research these. These SPI are only used by WebKitAdditions: 0 other clients.

Should say this in change log. Something like: &apos;While these were in the &quot;SPI&quot; header, there is no software at Apple that was using these outside of WebKit, and I will assume no non-Apple software was using them either.&apos;

&gt;&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:55
&gt;&gt;&gt; +        auto adjustedContexts = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.count]);
&gt;&gt; 
&gt;&gt; I’m shocked that Foundation doesn’t offer a way to make one NSArray from another using a block to describe how to map each element, but I can’t find one. Seems like WTF should add one so that so we’re not writing loops like this out. But still wondering if I just missed something.
&gt; 
&gt; I can add one... thought this was a one off, but I didn&apos;t grep, yet.

Not saying you should do that; it’s OK to do it later or not at all. I’m just sort of shocked; seems like a huge pattern, &quot;map&quot;, and surprised it’s not in Foundation.

&gt;&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5102
&gt;&gt;&gt; +        auto elements = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.size()]);
&gt;&gt;&gt; +        for (const auto&amp; context : contexts)
&gt;&gt;&gt; +            [elements addObject:adoptNS([[_WKTextInputContext alloc] _initWithTextInputContext:context]).get()];
&gt;&gt;&gt; +        completionHandler(elements.get());
&gt;&gt; 
&gt;&gt; Should do as Sam Weinig suggested and add an overload of createNSArray in VectorCocoa.h that takes a lambda, and then rewrite as follows:
&gt;&gt; 
&gt;&gt;     completionHandler(createNSArray(contexts, [] (const WebCore::ElementContext&amp; context) {
&gt;&gt;         return adoptNS([[_WKTextInputContext alloc] _initWithTextInputContext:context]);
&gt;&gt;     }).get());
&gt;&gt; 
&gt;&gt; Maybe can even use auto&amp; for the lambda argument type.
&gt;&gt; 
&gt;&gt; I’m not saying this needs to be done in this patch, but that should be our future direction.
&gt; 
&gt; I knew you were working on this clean up and thought you were going to add it. When I wrote this patch I don&apos;t think you landed your change, yet. Is it landed now? If it&apos;s landed then I will try to add createNSArray() and use it.

I added createNSArray and VectorCocoa.h, but no, I have *not* added the createNSArray overload that takes a lambda. Haven’t even started on that yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642020</commentid>
    <comment_count>26</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-15 16:00:30 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:55
&gt;&gt;&gt;&gt; +        auto adjustedContexts = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.count]);
&gt;&gt;&gt; 
&gt;&gt;&gt; I’m shocked that Foundation doesn’t offer a way to make one NSArray from another using a block to describe how to map each element, but I can’t find one. Seems like WTF should add one so that so we’re not writing loops like this out. But still wondering if I just missed something.
&gt;&gt; 
&gt;&gt; I can add one... thought this was a one off, but I didn&apos;t grep, yet.
&gt; 
&gt; Not saying you should do that; it’s OK to do it later or not at all. I’m just sort of shocked; seems like a huge pattern, &quot;map&quot;, and surprised it’s not in Foundation.

OK. Quick grep for initWithCapacity:\w+\.count shows that a &quot;transform&quot; or map or whatever you want to call this helper function could be used in 4 places + this one (So 5 total). But where to put such a function?

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5102
&gt;&gt;&gt;&gt; +        completionHandler(elements.get());
&gt;&gt;&gt; 
&gt;&gt;&gt; Should do as Sam Weinig suggested and add an overload of createNSArray in VectorCocoa.h that takes a lambda, and then rewrite as follows:
&gt;&gt;&gt; 
&gt;&gt;&gt;     completionHandler(createNSArray(contexts, [] (const WebCore::ElementContext&amp; context) {
&gt;&gt;&gt;         return adoptNS([[_WKTextInputContext alloc] _initWithTextInputContext:context]);
&gt;&gt;&gt;     }).get());
&gt;&gt;&gt; 
&gt;&gt;&gt; Maybe can even use auto&amp; for the lambda argument type.
&gt;&gt;&gt; 
&gt;&gt;&gt; I’m not saying this needs to be done in this patch, but that should be our future direction.
&gt;&gt; 
&gt;&gt; I knew you were working on this clean up and thought you were going to add it. When I wrote this patch I don&apos;t think you landed your change, yet. Is it landed now? If it&apos;s landed then I will try to add createNSArray() and use it.
&gt; 
&gt; I added createNSArray and VectorCocoa.h, but no, I have *not* added the createNSArray overload that takes a lambda. Haven’t even started on that yet.

Ok. I added it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642025</commentid>
    <comment_count>27</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-15 16:06:03 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:55
&gt;&gt;&gt;&gt;&gt; +        auto adjustedContexts = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.count]);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I’m shocked that Foundation doesn’t offer a way to make one NSArray from another using a block to describe how to map each element, but I can’t find one. Seems like WTF should add one so that so we’re not writing loops like this out. But still wondering if I just missed something.
&gt;&gt;&gt; 
&gt;&gt;&gt; I can add one... thought this was a one off, but I didn&apos;t grep, yet.
&gt;&gt; 
&gt;&gt; Not saying you should do that; it’s OK to do it later or not at all. I’m just sort of shocked; seems like a huge pattern, &quot;map&quot;, and surprised it’s not in Foundation.
&gt; 
&gt; OK. Quick grep for initWithCapacity:\w+\.count shows that a &quot;transform&quot; or map or whatever you want to call this helper function could be used in 4 places + this one (So 5 total). But where to put such a function?

Also should it be a standalone helper or on a category with a prefixed function name? If I do it, I&apos;m leaning towards putting it in a category with a _web_ prefixed function name, thinking _web_transform (that&apos;s naming it after the C++ function). I would put it in WebCore/platform/cocoa/WebCoreNSArrayExtras.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642028</commentid>
    <comment_count>28</comment_count>
      <attachid>396444</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-15 16:06:52 -0700</bug_when>
    <thetext>Comment on attachment 396444
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:55
&gt;&gt;&gt;&gt;&gt;&gt; +        auto adjustedContexts = adoptNS([[NSMutableArray alloc] initWithCapacity:contexts.count]);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; I’m shocked that Foundation doesn’t offer a way to make one NSArray from another using a block to describe how to map each element, but I can’t find one. Seems like WTF should add one so that so we’re not writing loops like this out. But still wondering if I just missed something.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I can add one... thought this was a one off, but I didn&apos;t grep, yet.
&gt;&gt;&gt; 
&gt;&gt;&gt; Not saying you should do that; it’s OK to do it later or not at all. I’m just sort of shocked; seems like a huge pattern, &quot;map&quot;, and surprised it’s not in Foundation.
&gt;&gt; 
&gt;&gt; OK. Quick grep for initWithCapacity:\w+\.count shows that a &quot;transform&quot; or map or whatever you want to call this helper function could be used in 4 places + this one (So 5 total). But where to put such a function?
&gt; 
&gt; Also should it be a standalone helper or on a category with a prefixed function name? If I do it, I&apos;m leaning towards putting it in a category with a _web_ prefixed function name, thinking _web_transform (that&apos;s naming it after the C++ function). I would put it in WebCore/platform/cocoa/WebCoreNSArrayExtras.h

I&apos;ve decided I&apos;m going to do ^^^ in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642284</commentid>
    <comment_count>29</comment_count>
      <attachid>396656</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-16 09:35:43 -0700</bug_when>
    <thetext>Created attachment 396656
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642292</commentid>
    <comment_count>30</comment_count>
      <attachid>396656</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-16 09:47:57 -0700</bug_when>
    <thetext>Comment on attachment 396656
To Land

Clearing flags on attachment: 396656

Committed r260192: &lt;https://trac.webkit.org/changeset/260192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642293</commentid>
    <comment_count>31</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-16 09:48:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642296</commentid>
    <comment_count>32</comment_count>
      <attachid>396656</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-16 09:52:38 -0700</bug_when>
    <thetext>Comment on attachment 396656
To Land

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

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:64
&gt; +template&lt;typename VectorType, typename MapFunction&gt; RetainPtr&lt;NSArray&gt; createNSArray(const VectorType&amp; vector, MapFunction mapFunction)

Although this is already landed, some further feedback:

- I would have considered naming the template argument MapFunctionType since it’s not a function, it’s the type of a function. Note that the other templates here use that convention. Could also consider removing the word &quot;Type&quot; from those other template argument names, but I think it makes more sense to add the Type suffix, for here and now at least.

- I would have used the type const MapFunction&amp; because there is no reason to copy the function.

- I would have named the argument function, because why not use one word instead of two in such a small, unambiguous context?

- Since the comment above carefully documents createNSArray and makeVector, should probably document this new overload too by reading the comment over, and adding a few words to it to cover this case.

Thanks for adding this, by the way!

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:67
&gt; +    auto size = vector.size();
&gt; +    auto array = adoptNS([[NSMutableArray alloc] initWithCapacity:size]);

No need for a local variable here for size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642304</commentid>
    <comment_count>33</comment_count>
      <attachid>396656</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-16 10:00:19 -0700</bug_when>
    <thetext>Comment on attachment 396656
To Land

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

&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:64
&gt;&gt; +template&lt;typename VectorType, typename MapFunction&gt; RetainPtr&lt;NSArray&gt; createNSArray(const VectorType&amp; vector, MapFunction mapFunction)
&gt; 
&gt; Although this is already landed, some further feedback:
&gt; 
&gt; - I would have considered naming the template argument MapFunctionType since it’s not a function, it’s the type of a function. Note that the other templates here use that convention. Could also consider removing the word &quot;Type&quot; from those other template argument names, but I think it makes more sense to add the Type suffix, for here and now at least.
&gt; 
&gt; - I would have used the type const MapFunction&amp; because there is no reason to copy the function.
&gt; 
&gt; - I would have named the argument function, because why not use one word instead of two in such a small, unambiguous context?
&gt; 
&gt; - Since the comment above carefully documents createNSArray and makeVector, should probably document this new overload too by reading the comment over, and adding a few words to it to cover this case.
&gt; 
&gt; Thanks for adding this, by the way!

OK

&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:67
&gt;&gt; +    auto array = adoptNS([[NSMutableArray alloc] initWithCapacity:size]);
&gt; 
&gt; No need for a local variable here for size.

There was no reason for the local in the above function either....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642305</commentid>
    <comment_count>34</comment_count>
      <attachid>396656</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-16 10:05:22 -0700</bug_when>
    <thetext>Comment on attachment 396656
To Land

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

&gt;&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:67
&gt;&gt;&gt; +    auto array = adoptNS([[NSMutableArray alloc] initWithCapacity:size]);
&gt;&gt; 
&gt;&gt; No need for a local variable here for size.
&gt; 
&gt; There was no reason for the local in the above function either....

Yes, should fix both!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642318</commentid>
    <comment_count>35</comment_count>
      <attachid>396656</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-16 10:28:22 -0700</bug_when>
    <thetext>Comment on attachment 396656
To Land

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:67
&gt;&gt;&gt;&gt; +    auto array = adoptNS([[NSMutableArray alloc] initWithCapacity:size]);
&gt;&gt;&gt; 
&gt;&gt;&gt; No need for a local variable here for size.
&gt;&gt; 
&gt;&gt; There was no reason for the local in the above function either....
&gt; 
&gt; Yes, should fix both!

OK I&apos;ll do that + I fix makeVector() as well: it over allocates and never corrects. Posted patch at bug #210610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642423</commentid>
    <comment_count>36</comment_count>
      <attachid>396656</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-16 13:39:38 -0700</bug_when>
    <thetext>Comment on attachment 396656
To Land

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

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm:77
&gt; +    return WebKit::mayContainEditableElementsInRect(_contentView.get(), [self convertRect:rect toView:_contentView.get()]);

This needs to be compile-time guarded behind ENABLE(EDITABLE_REGION). Fixed in &lt;https://trac.webkit.org/changeset/260218&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396205</attachid>
            <date>2020-04-11 21:08:19 -0700</date>
            <delta_ts>2020-04-11 21:11:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200411210818.patch</filename>
            <type>text/plain</type>
            <size>12281</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLmQyNjAyODcwMGNhNDUzOTYzZGZiZWZhYzM2MmJmNDJj
ZWMxZDkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMTEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29ycmVjdCBieSByZW1vdmluZyBh
biBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAgIFdLQ29udGVudFZpZXcgaXMg
bG9jYXRlZCBhdCB0aGUgb3JpZ2luIGluIFRlc3RXZWJLaXRBUEkncyB0ZXN0IHZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmllZC4KKwogMjAy
MC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi4xYWE0NDdjMmMwOTgxZTFiOTVhM2M1Yjg1YWY4YTkyNDZi
NzgzMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTIwNzEsNzMgKzIwNzEsNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nl
c3NBbmRSZXNldFN0YXRlCiAgICAgfQogfQogCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJv
b3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzCi17Ci0g
ICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gdGFsayBhYm91dCBXS1dlYlZpZXcg
Y29vcmRpbmF0ZXMgaW4gYSBjb25zaXN0ZW50IGFuZCBjcm9zcy1wbGF0Zm9ybSB3YXkuCi0gICAg
Ly8gQ3VycmVudGx5LCBuZWl0aGVyICJyb290IHZpZXciIG5vciAid2luZG93IiBtZWFuICJXS1dl
YlZpZXcgY29vcmRpbmF0ZXMiIG9uIGJvdGggcGxhdGZvcm1zLgotICAgIC8vIFNlZSBodHRwczov
L3dlYmtpdC5vcmcvYi8xOTM2NDkgYW5kIHJlbGF0ZWQgYnVncy4KLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzIGZyb21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJldHVybiBy
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwotI2VuZGlmCi19Ci0KLS0gKENHUmVjdClfY29udmVy
dFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29vcmRpbmF0
ZXMKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0
UmVjdDpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07
Ci0jZWxzZQotICAgIHJldHVybiByZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5kaWYKLX0K
LQotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0
Ci17Ci0jaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQotICAgICAgICByZXR1
cm4gTk87Ci0jZW5kaWYKLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtz
ZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0XTsKLSAgICByZXR1cm4g
V2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcuZ2V0
KCksIHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOwotI2Vsc2UKLSAgICByZXR1cm4gTk87Ci0j
ZW5kaWYKLX0KLQotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1Jl
Y3QpcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgotewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50
Vmlld10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAgaWYgKCFb
c2VsZiBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6cmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzXSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAW10pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5XZWJWaWV3
Q29vcmRpbmF0ZXNdOwotCi0gICAgYXV0byB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmll
dz4oc2VsZik7Ci0gICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJblJvb3RW
aWV3Q29vcmRpbmF0ZXMsIFt3ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RWxl
bWVudENvbnRleHQ+JiBjb250ZXh0cykgewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOwotCi0gICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdl
YWtTZWxmLmdldCgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0
cykgewotICAgICAgICAgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dFdpdGhXZWJW
aWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKLSAgICAgICAgICAgIGNvbnRleHRXaXRoV2ViVmll
d0JvdW5kaW5nUmVjdC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJlY3RGcm9t
Um9vdFZpZXdDb29yZGluYXRlczpjb250ZXh0LmJvdW5kaW5nUmVjdF07Ci0gICAgICAgICAgICBb
ZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBf
aW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdF0p
LmdldCgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIo
ZWxlbWVudHMuZ2V0KCkpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3NmU1YWVi
YmZlYmU2N2YuLmViZDU4N2RlMDcyZTJiNTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaApAQCAtMzM1LDggKzMzNSw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfcmVz
dW1lQWxsTWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
OwogCi0tIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJl
Y3Q7Ci0tICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAq
PiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29u
dGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4w
KSk7CiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBz
aG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCmluZGV4IDBmMmQ1OGMzNTcz
ODEzNGVkOTJkNTg2MzQ4OTI0MTFjMTQ5YTNmOWEuLjNkMmEzZTY2ODM1OWQzOGE0ZDkzMmExMTk3
NjA1Y2YxODhjMmU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKQEAgLTQ0LDYg
KzQ0LDggQEAKIC0gKHZvaWQpX2Rpc21pc3NGaWxlUGlja2VyOwogLSAodm9pZClzZWxlY3RGb3Jt
QWNjZXNzb3J5UGlja2VyUm93OihpbnQpcm93SW5kZXg7CiAKKy0gKEJPT0wpX21heUNvbnRhaW5F
ZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3QpcmVjdDsKKwogLSAodm9pZClzZXRUaW1lUGlj
a2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsK
IAogLSAodm9pZClhcHBseUF1dG9jb3JyZWN0aW9uOihOU1N0cmluZyAqKW5ld1N0cmluZyB0b1N0
cmluZzooTlNTdHJpbmcgKilvbGRTdHJpbmcgd2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQppbmRleCAzYjJhMDFlYTZjZjE2
YWM0NjQ3NmQ2MjM1MDBlNWFmNjQ4YzA3Nzk1Li44NTQ0MGE0YTM0NjZjY2JhZDQ0NTc5ZWUxNWVh
MzYyYWJjOGYzMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldLV2ViVmlld0lPUy5oIgpAQCAtMzcsNiArMzgsMTEgQEAK
IAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tUZXN0aW5nSU9TKQogCistIChCT09MKV9t
YXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICByZXR1
cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcu
Z2V0KCksIHJlY3QpOworfQorCiAtICh2b2lkKWtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dAogewog
ICAgIFtfY29udGVudFZpZXcgYWNjZXNzb3J5VGFiOllFU107CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZThm
MWI3MzEwMTBiYjk4YzM4N2Q1MmI4OGQwYjdiN2IzZDVkM2E4YS4uMTg4MjZmZGYyOGU2MDdmMTMy
YjBhNjJkOGQwMWE3MjM3YzVlNDM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNTY1LDYgKzU2NSw3IEBA
IEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRW
SUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAjZW5kaWYKIAogI2lmIFVTRShURVhUX0lOVEVSQUNU
SU9OX0FERElUSU9OUykKKy0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5w
dXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfd2lsbEJlZ2luVGV4
dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29u
dGV4dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4
dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDljZjNmOWFlNzI1OWM3MDc3YzRkZmM0YTJlMDZkNjJmNTZkMzExMmQuLmZhMWVlYzIyNGJi
ZmEwNDg4OWQ4MGExNGRlZjAxYjQ4YmI4ZmZlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTA2MSw2
ICs1MDYxLDI3IEBAIC0gKENHUmVjdClyZWN0Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uCiAKICNp
ZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCiAKKy0gKHZvaWQpX3JlcXVlc3RUZXh0
SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7
CisjaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKKyAgICBpZiAoV2ViS2l0OjptYXlDb250YWlu
RWRpdGFibGVFbGVtZW50c0luUmVjdChzZWxmLCByZWN0KSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihAWyBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIF9wYWdl
LT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0LCBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxX
S0NvbnRlbnRWaWV3PihzZWxmKSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYg
Y29udGV4dHMpIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Cisg
ICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBjb250ZXh0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGF1dG8gZWxlbWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29udGV4dHMuc2l6ZSgpXSk7CisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY29udGV4dCA6IGNvbnRleHRzKQorICAgICAgICAgICAgW2VsZW1lbnRzIGFkZE9i
amVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxvY10gX2luaXRXaXRoVGV4dElu
cHV0Q29udGV4dDpjb250ZXh0XSkuZ2V0KCldOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
bGVtZW50cy5nZXQoKSk7CisgICAgfSk7Cit9CisKIC0gKHZvaWQpX3dpbGxCZWdpblRleHRJbnRl
cmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQK
IHsKICAgICBBU1NFUlQoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMDE4MGZjYzE2OTA3N2YwZTJlMTIxYzQ5YzNiOTk4NjhmODY0
MGU4NC4uNjU3MzZmNWM5NDE2YmFmNmE4Y2IzY2ExODFjMTI4YTM5NzJmZjRlMyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTA0LTExICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IHRvIFdLQ29udGVudFZpZXcg
dG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5
MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRlc3Qgbm93IHRoYXQgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgaGFzIG1v
dmVkIGZyb20gV0tXZWJWaWV3IHRvIFdLQ29udGVudFZpZXcuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW06CisgICAg
ICAgICgtW1Rlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdDpdKToKKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgVHJhY2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGlu
Z0NvbnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3Vt
ZW50RWRpdGluZ0NvbnRleHQubW0KaW5kZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4
ZTU2NmNmOWFjZC4uODJhNTNlZDYxOWM0OWE0NGY1NGVkMDE5ZDM2ZjAzMzRkODMwNmEwOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVk
aXRpbmdDb250ZXh0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRl
eHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTE1MSw3ICsxNTEsNyBAQCAtIChO
U0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0OgogewogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNl
OwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPj4g
cmVzdWx0OwotICAgIFtzZWxmIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4
dHMpIHsKKyAgICBbW3NlbGYgd2tDb250ZW50Vmlld10gX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdDpyZWN0IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250
ZXh0ICo+ICpjb250ZXh0cykgewogICAgICAgICByZXN1bHQgPSBjb250ZXh0czsKICAgICAgICAg
ZmluaXNoZWQgPSB0cnVlOwogICAgIH1dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396206</attachid>
            <date>2020-04-11 21:11:12 -0700</date>
            <delta_ts>2020-04-11 21:13:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200411211111.patch</filename>
            <type>text/plain</type>
            <size>12513</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLmQyNjAyODcwMGNhNDUzOTYzZGZiZWZhYzM2MmJmNDJj
ZWMxZDkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMTEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29ycmVjdCBieSByZW1vdmluZyBh
biBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAgIFdLQ29udGVudFZpZXcgaXMg
bG9jYXRlZCBhdCB0aGUgb3JpZ2luIGluIFRlc3RXZWJLaXRBUEkncyB0ZXN0IHZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmllZC4KKwogMjAy
MC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZmMzBhZGFkZWE0MDFlMDEwZWE1
ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dSZWN0KV9jb252ZXJ0UmVjdEZy
b21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcwot
ewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRhbGsgYWJvdXQgV0tXZWJW
aWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jvc3MtcGxhdGZvcm0gd2F5Lgot
ICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBub3IgIndpbmRvdyIgbWVhbiAi
V0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jtcy4KLSAgICAvLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1Z3MuCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1
cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgotfQotCi0tIChDR1JlY3QpX2Nv
bnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzOwotI2VuZGlm
Ci19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKLSAgICAgICAg
cmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdF07Ci0gICAgcmV0
dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3
LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29u
dGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotICAgIGlm
ICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OnJlY3RJbldlYlZpZXdD
b29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dl
YlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogY29u
dGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICBjb250ZXh0V2l0aFdl
YlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGluZ1JlY3RdOwotICAgICAgICAg
ICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1Jl
Y3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZm9jdXNUZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVmNzZl
NWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQp
X3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCAwZjJkNThj
MzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi4zZDJhM2U2NjgzNTlkMzhhNGQ5MzJh
MTE5NzYwNWNmMTg4YzJlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC00
NCw2ICs0NCw4IEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsKIC0gKHZvaWQpc2VsZWN0
Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCistIChCT09MKV9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CisKIC0gKHZvaWQpc2V0VGlt
ZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CiAKIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcg
dG9TdHJpbmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2
Y2YxNmFjNDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uODU0NDBhNGEzNDY2Y2NiYWQ0NDU3OWVl
MTVlYTM2MmFiYzhmMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKQEAgLTM3LDYgKzM4LDEx
IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAoQk9P
TClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
cmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRW
aWV3LmdldCgpLCByZWN0KTsKK30KKwogLSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQK
IHsKICAgICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJiODhkMGI3YjdiM2Q1ZDNhOGEuLjE4ODI2ZmRmMjhlNjA3
ZjEzMmIwYTYyZDhkMDFhNzIzN2M1ZTQzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NSw2ICs1NjUs
NyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVF9JTlRF
UkFDVElPTl9BRERJVElPTlMpCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdp
blRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAq
KWNvbnRleHQ7CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMxMTJkLi5mYTFlZWMy
MjRiYmZhMDQ4ODlkODBhMTRkZWYwMWI0OGJiOGZmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUw
NjEsNiArNTA2MSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbgog
CiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCistICh2b2lkKV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxl
cgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6bWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBf
cGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBh
ZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRl
eHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0
SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUyZTEyMWM0OWMzYjk5ODY4
Zjg2NDBlODQuLjY1NzM2ZjVjOTQxNmJhZjZhOGNiM2NhMTgxYzEyOGEzOTcyZmY0ZTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRW
aWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
NjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IGhh
cyBtb3ZlZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29u
dGV4dHNJblJlY3Q6XSk6CisKIDIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFRyYWNrIGVkaXRhYmxlIGVsZW1lbnRzIG9uIHNjcmVlbgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVk
aXRpbmdDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4IGEzOWQwZjNmZGM5MDI4NzliYjdjOWI0OWQ5
NWUwOGU1NjZjZjlhY2QuLjgyYTUzZWQ2MTljNDlhNDRmNTRlZDAxOWQzNmYwMzM0ZDgzMDZhMDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1l
bnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0SW5wdXRD
b250ZXh0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xNTEsNyArMTUxLDcgQEAg
LSAoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdDoKIHsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBm
YWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQg
Kj4+IHJlc3VsdDsKLSAgICBbc2VsZiBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OnJl
Y3QgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNv
bnRleHRzKSB7CisgICAgW1tzZWxmIHdrQ29udGVudFZpZXddIF9yZXF1ZXN0VGV4dElucHV0Q29u
dGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0
Q29udGV4dCAqPiAqY29udGV4dHMpIHsKICAgICAgICAgcmVzdWx0ID0gY29udGV4dHM7CiAgICAg
ICAgIGZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396207</attachid>
            <date>2020-04-11 21:13:26 -0700</date>
            <delta_ts>2020-04-12 09:13:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200411211325.patch</filename>
            <type>text/plain</type>
            <size>12966</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLmQyNjAyODcwMGNhNDUzOTYzZGZiZWZhYzM2MmJmNDJj
ZWMxZDkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMTEgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29ycmVjdCBieSByZW1vdmluZyBh
biBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAgIFdLQ29udGVudFZpZXcgaXMg
bG9jYXRlZCBhdCB0aGUgb3JpZ2luIGluIFRlc3RXZWJLaXRBUEkncyB0ZXN0IHZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmllZC4KKwogMjAy
MC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZmMzBhZGFkZWE0MDFlMDEwZWE1
ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dSZWN0KV9jb252ZXJ0UmVjdEZy
b21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcwot
ewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRhbGsgYWJvdXQgV0tXZWJW
aWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jvc3MtcGxhdGZvcm0gd2F5Lgot
ICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBub3IgIndpbmRvdyIgbWVhbiAi
V0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jtcy4KLSAgICAvLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1Z3MuCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1
cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgotfQotCi0tIChDR1JlY3QpX2Nv
bnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzOwotI2VuZGlm
Ci19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKLSAgICAgICAg
cmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdF07Ci0gICAgcmV0
dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3
LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29u
dGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotICAgIGlm
ICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OnJlY3RJbldlYlZpZXdD
b29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dl
YlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogY29u
dGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICBjb250ZXh0V2l0aFdl
YlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGluZ1JlY3RdOwotICAgICAgICAg
ICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1Jl
Y3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZm9jdXNUZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVmNzZl
NWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQp
X3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCAwZjJkNThj
MzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi4zZDJhM2U2NjgzNTlkMzhhNGQ5MzJh
MTE5NzYwNWNmMTg4YzJlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC00
NCw2ICs0NCw4IEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsKIC0gKHZvaWQpc2VsZWN0
Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCistIChCT09MKV9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CisKIC0gKHZvaWQpc2V0VGlt
ZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CiAKIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcg
dG9TdHJpbmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2
Y2YxNmFjNDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uODU0NDBhNGEzNDY2Y2NiYWQ0NDU3OWVl
MTVlYTM2MmFiYzhmMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKQEAgLTM3LDYgKzM4LDEx
IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAoQk9P
TClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
cmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRW
aWV3LmdldCgpLCByZWN0KTsKK30KKwogLSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQK
IHsKICAgICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJiODhkMGI3YjdiM2Q1ZDNhOGEuLjE4ODI2ZmRmMjhlNjA3
ZjEzMmIwYTYyZDhkMDFhNzIzN2M1ZTQzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NSw2ICs1NjUs
NyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVF9JTlRF
UkFDVElPTl9BRERJVElPTlMpCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdp
blRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAq
KWNvbnRleHQ7CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMxMTJkLi5mYTFlZWMy
MjRiYmZhMDQ4ODlkODBhMTRkZWYwMWI0OGJiOGZmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUw
NjEsNiArNTA2MSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbgog
CiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCistICh2b2lkKV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxl
cgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6bWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBf
cGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBh
ZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRl
eHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0
SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUyZTEyMWM0OWMzYjk5ODY4
Zjg2NDBlODQuLjY1NzM2ZjVjOTQxNmJhZjZhOGNiM2NhMTgxYzEyOGEzOTcyZmY0ZTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRW
aWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
NjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IGhh
cyBtb3ZlZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29u
dGV4dHNJblJlY3Q6XSk6CisKIDIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFRyYWNrIGVkaXRhYmxlIGVsZW1lbnRzIG9uIHNjcmVlbgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVk
aXRpbmdDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4IGEzOWQwZjNmZGM5MDI4NzliYjdjOWI0OWQ5
NWUwOGU1NjZjZjlhY2QuLmZkZDdhZTE2NjdiNmIwNjExZmRmOTQ2NjEzODAwZTk0OGExMTY1ODcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1l
bnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
VGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDgsNiAr
NDcsNyBAQAogICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwgWyhOU0F0dHJpYnV0ZWRTdHJp
bmcgKilhY3R1YWwgc3RyaW5nXSk7CiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoKQorLSAo
dm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29t
cGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tEb2N1
bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLRG9j
dW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClhZGp1c3RTZWxlY3Rp
b25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiBAZW5kCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAo
TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0c0luUmVjdDoKIHsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxz
ZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4+
IHJlc3VsdDsKLSAgICBbc2VsZiBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OnJlY3Qg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRl
eHRzKSB7CisgICAgW1tzZWxmIHdrQ29udGVudFZpZXddIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4
dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29u
dGV4dCAqPiAqY29udGV4dHMpIHsKICAgICAgICAgcmVzdWx0ID0gY29udGV4dHM7CiAgICAgICAg
IGZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396223</attachid>
            <date>2020-04-12 09:13:09 -0700</date>
            <delta_ts>2020-04-12 09:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200412091308.patch</filename>
            <type>text/plain</type>
            <size>14308</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjIzZWFlMWE2YjgzMGVjMjE2YmI5MzlhZGQxYzlmOTBj
Mzk5NDFkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29ycmVjdCBieSByZW1vdmluZyBh
biBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAgIFdLQ29udGVudFZpZXcgaXMg
bG9jYXRlZCBhdCB0aGUgb3JpZ2luIGluIFRlc3RXZWJLaXRBUEkncyB0ZXN0IHZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmllZC4KKwogMjAy
MC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZmMzBhZGFkZWE0MDFlMDEwZWE1
ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dSZWN0KV9jb252ZXJ0UmVjdEZy
b21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcwot
ewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRhbGsgYWJvdXQgV0tXZWJW
aWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jvc3MtcGxhdGZvcm0gd2F5Lgot
ICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBub3IgIndpbmRvdyIgbWVhbiAi
V0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jtcy4KLSAgICAvLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1Z3MuCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1
cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgotfQotCi0tIChDR1JlY3QpX2Nv
bnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzOwotI2VuZGlm
Ci19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKLSAgICAgICAg
cmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdF07Ci0gICAgcmV0
dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3
LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29u
dGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotICAgIGlm
ICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OnJlY3RJbldlYlZpZXdD
b29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dl
YlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogY29u
dGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICBjb250ZXh0V2l0aFdl
YlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGluZ1JlY3RdOwotICAgICAgICAg
ICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1Jl
Y3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZm9jdXNUZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVmNzZl
NWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQp
X3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCAwZjJkNThj
MzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi4zZDJhM2U2NjgzNTlkMzhhNGQ5MzJh
MTE5NzYwNWNmMTg4YzJlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC00
NCw2ICs0NCw4IEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsKIC0gKHZvaWQpc2VsZWN0
Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCistIChCT09MKV9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CisKIC0gKHZvaWQpc2V0VGlt
ZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CiAKIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcg
dG9TdHJpbmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2
Y2YxNmFjNDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uODU0NDBhNGEzNDY2Y2NiYWQ0NDU3OWVl
MTVlYTM2MmFiYzhmMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKQEAgLTM3LDYgKzM4LDEx
IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAoQk9P
TClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
cmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRW
aWV3LmdldCgpLCByZWN0KTsKK30KKwogLSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQK
IHsKICAgICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJiODhkMGI3YjdiM2Q1ZDNhOGEuLjE4ODI2ZmRmMjhlNjA3
ZjEzMmIwYTYyZDhkMDFhNzIzN2M1ZTQzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NSw2ICs1NjUs
NyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVF9JTlRF
UkFDVElPTl9BRERJVElPTlMpCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdp
blRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAq
KWNvbnRleHQ7CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMxMTJkLi5mYTFlZWMy
MjRiYmZhMDQ4ODlkODBhMTRkZWYwMWI0OGJiOGZmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUw
NjEsNiArNTA2MSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbgog
CiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCistICh2b2lkKV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxl
cgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6bWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBf
cGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBh
ZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRl
eHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0
SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUyZTEyMWM0OWMzYjk5ODY4
Zjg2NDBlODQuLmMzNGQ4ZDNmYWJhNzc2MTliNWIzZWM4OWI0N2VjZWJhOGU4MmFkNWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wNC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRW
aWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
NjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IGhh
cyBtb3ZlZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29u
dGV4dHNJblJlY3Q6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHN5bmNo
cm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6XSk6CisKIDIwMjAtMDQtMDgg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRyYWNrIGVkaXRh
YmxlIGVsZW1lbnRzIG9uIHNjcmVlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4
IGEzOWQwZjNmZGM5MDI4NzliYjdjOWI0OWQ5NWUwOGU1NjZjZjlhY2QuLmZkZDdhZTE2NjdiNmIw
NjExZmRmOTQ2NjEzODAwZTk0OGExMTY1ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQu
bW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQg
IlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4K
LSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgpAQCAtNDgsNiArNDcsNyBAQAogICAgIEVYUEVDVF9XS19TVFJFUShl
eHBlY3RlZCwgWyhOU0F0dHJpYnV0ZWRTdHJpbmcgKilhY3R1YWwgc3RyaW5nXSk7CiAKIEBpbnRl
cmZhY2UgV0tDb250ZW50VmlldyAoKQorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlcXVl
c3REb2N1bWVudENvbnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShVSVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5k
bGVyOwogLSAodm9pZClhZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiBA
ZW5kCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+
ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoKIHsKICAgICBf
X2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Fy
cmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4+IHJlc3VsdDsKLSAgICBbc2VsZiBfcmVxdWVzdFRl
eHRJbnB1dENvbnRleHRzSW5SZWN0OnJlY3QgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzKSB7CisgICAgW1tzZWxmIHdrQ29udGVudFZp
ZXddIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMpIHsKICAgICAgICAg
cmVzdWx0ID0gY29udGV4dHM7CiAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCmluZGV4IGJmYWE5ODUwOGMzZTUxYzdjN2FiODBl
MTk3ZDBkZjE5NmE3MzA3ODQuLmRkZjE1MTBiYjQ4ODgwY2Q4MmUzMTFlNDhlMzcxYjI2YjM5NGZl
MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVx
dWVzdFRleHRJbnB1dENvbnRleHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpAQCAtMzUsMTMgKzM1LDE3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKKy0gKHZvaWQpX3JlcXVl
c3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyOworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChTeW5jaHJvbm91c1RleHRJ
bnB1dENvbnRleHQpCiAKIC0gKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKXN5bmNo
cm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0CiB7CiAg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+PiByZXN1bHQ7Ci0gICAgW3NlbGYgX3JlcXVl
c3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpyZWN0IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cykgeworICAgIFtbc2VsZiB3a0NvbnRl
bnRWaWV3XSBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OnJlY3QgY29tcGxldGlvbkhh
bmRsZXI6XihOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzKSB7CiAgICAg
ICAgIHJlc3VsdCA9IGNvbnRleHRzOwogICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396224</attachid>
            <date>2020-04-12 09:28:44 -0700</date>
            <delta_ts>2020-04-12 09:57:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200412092843.patch</filename>
            <type>text/plain</type>
            <size>14674</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjIzZWFlMWE2YjgzMGVjMjE2YmI5MzlhZGQxYzlmOTBj
Mzk5NDFkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29ycmVjdCBieSByZW1vdmluZyBh
biBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAgIFdLQ29udGVudFZpZXcgaXMg
bG9jYXRlZCBhdCB0aGUgb3JpZ2luIGluIFRlc3RXZWJLaXRBUEkncyB0ZXN0IHZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmllZC4KKwogMjAy
MC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZmMzBhZGFkZWE0MDFlMDEwZWE1
ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dSZWN0KV9jb252ZXJ0UmVjdEZy
b21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcwot
ewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRhbGsgYWJvdXQgV0tXZWJW
aWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jvc3MtcGxhdGZvcm0gd2F5Lgot
ICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBub3IgIndpbmRvdyIgbWVhbiAi
V0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jtcy4KLSAgICAvLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1Z3MuCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1
cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgotfQotCi0tIChDR1JlY3QpX2Nv
bnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzOwotI2VuZGlm
Ci19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKLSAgICAgICAg
cmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdF07Ci0gICAgcmV0
dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3
LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29u
dGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotICAgIGlm
ICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OnJlY3RJbldlYlZpZXdD
b29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dl
YlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogY29u
dGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICBjb250ZXh0V2l0aFdl
YlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGluZ1JlY3RdOwotICAgICAgICAg
ICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1Jl
Y3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZm9jdXNUZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVmNzZl
NWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQp
X3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCAwZjJkNThj
MzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi4zZDJhM2U2NjgzNTlkMzhhNGQ5MzJh
MTE5NzYwNWNmMTg4YzJlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC00
NCw2ICs0NCw4IEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsKIC0gKHZvaWQpc2VsZWN0
Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCistIChCT09MKV9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CisKIC0gKHZvaWQpc2V0VGlt
ZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CiAKIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcg
dG9TdHJpbmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2
Y2YxNmFjNDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uODU0NDBhNGEzNDY2Y2NiYWQ0NDU3OWVl
MTVlYTM2MmFiYzhmMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKQEAgLTM3LDYgKzM4LDEx
IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAoQk9P
TClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
cmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRW
aWV3LmdldCgpLCByZWN0KTsKK30KKwogLSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQK
IHsKICAgICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJiODhkMGI3YjdiM2Q1ZDNhOGEuLjE4ODI2ZmRmMjhlNjA3
ZjEzMmIwYTYyZDhkMDFhNzIzN2M1ZTQzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NSw2ICs1NjUs
NyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVF9JTlRF
UkFDVElPTl9BRERJVElPTlMpCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdp
blRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAq
KWNvbnRleHQ7CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMxMTJkLi5mYTFlZWMy
MjRiYmZhMDQ4ODlkODBhMTRkZWYwMWI0OGJiOGZmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUw
NjEsNiArNTA2MSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbgog
CiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCistICh2b2lkKV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxl
cgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6bWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBf
cGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBh
ZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRl
eHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0
SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUyZTEyMWM0OWMzYjk5ODY4
Zjg2NDBlODQuLjY4ZjVkNWYyNjYxYzhmNDBiNzhhMjQxMTM4ZTU4YmU2ZDhiN2EwOGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAyMC0wNC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRW
aWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
NjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IGhh
cyBtb3ZlZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29u
dGV4dHNJblJlY3Q6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBz
eW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJ
bnB1dENvbnRleHQ6XSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgaGVscGVyIGZ1bmN0aW9ucyBm
cm9tIGEgV0tXZWJWaWV3IGNhdGVnb3J5IHRvIGEgVGVzdFdLV2ViVmlldyBjYXRlZ29yeSBzbyB0
aGF0CisgICAgICAgIEkgY2FuIG1ha2UgdXNlIG9mIC1bVGVzdFdLV2ViVmlldyB3a0NvbnRlbnRW
aWV3XS4KKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVHJhY2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRl
eHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRp
dGluZ0NvbnRleHQubW0KaW5kZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNm
OWFjZC4uZmRkN2FlMTY2N2I2YjA2MTFmZGY5NDY2MTM4MDBlOTQ4YTExNjU4NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdD
b250ZXh0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9j
dW1lbnRFZGl0aW5nQ29udGV4dC5tbQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0SW5wdXRD
b250ZXh0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC00OCw2ICs0Nyw3IEBACiAg
ICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkLCBbKE5TQXR0cmlidXRlZFN0cmluZyAqKWFjdHVh
bCBzdHJpbmddKTsKIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3ICgpCistICh2b2lkKV9yZXF1
ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRl
eHQgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0
YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKQEAgLTE1MSw3ICsxNTEsNyBAQCAtIChOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0OgogewogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPj4gcmVzdWx0Owot
ICAgIFtzZWxmIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMpIHsKKyAg
ICBbW3NlbGYgd2tDb250ZW50Vmlld10gX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpy
ZWN0IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpj
b250ZXh0cykgewogICAgICAgICByZXN1bHQgPSBjb250ZXh0czsKICAgICAgICAgZmluaXNoZWQg
PSB0cnVlOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0KaW5kZXggYmZh
YTk4NTA4YzNlNTFjN2M3YWI4MGUxOTdkMGRmMTk2YTczMDc4NC4uNDFmOTNlMDdjOWY5OTg3MmI0
ZGQzNTkxYjU4OWQ1ZTEzY2NmMGRmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1t
CkBAIC0zNSwxMyArMzUsMTcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0SW5wdXRDb250ZXh0
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZp
ZXcgKFN5bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKK0BpbnRlcmZhY2UgV0tDb250ZW50Vmll
dyAoKQorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVj
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tX
ZWJWaWV3IChTeW5jaHJvbm91c1RleHRJbnB1dENvbnRleHQpCiAKIC0gKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3Q6KENHUmVjdClyZWN0CiB7CiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7
CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+PiBy
ZXN1bHQ7Ci0gICAgW3NlbGYgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpyZWN0IGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0
cykgeworICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OnJlY3QgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKmNvbnRleHRzKSB7CiAgICAgICAgIHJlc3VsdCA9IGNvbnRleHRzOwogICAgICAgICBm
aW5pc2hlZCA9IHRydWU7CiAgICAgfV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396226</attachid>
            <date>2020-04-12 09:57:36 -0700</date>
            <delta_ts>2020-04-12 14:43:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200412095736.patch</filename>
            <type>text/plain</type>
            <size>15081</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjIzZWFlMWE2YjgzMGVjMjE2YmI5MzlhZGQxYzlmOTBj
Mzk5NDFkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29ycmVjdCBieSByZW1vdmluZyBh
biBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAgIFdLQ29udGVudFZpZXcgaXMg
bG9jYXRlZCBhdCB0aGUgb3JpZ2luIGluIFRlc3RXZWJLaXRBUEkncyB0ZXN0IHZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmllZC4KKwogMjAy
MC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZmMzBhZGFkZWE0MDFlMDEwZWE1
ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dSZWN0KV9jb252ZXJ0UmVjdEZy
b21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcwot
ewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRhbGsgYWJvdXQgV0tXZWJW
aWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jvc3MtcGxhdGZvcm0gd2F5Lgot
ICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBub3IgIndpbmRvdyIgbWVhbiAi
V0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jtcy4KLSAgICAvLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1Z3MuCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1
cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgotfQotCi0tIChDR1JlY3QpX2Nv
bnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzOwotI2VuZGlm
Ci19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKLSAgICAgICAg
cmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdF07Ci0gICAgcmV0
dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3
LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29u
dGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotICAgIGlm
ICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OnJlY3RJbldlYlZpZXdD
b29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dl
YlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogY29u
dGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICBjb250ZXh0V2l0aFdl
YlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGluZ1JlY3RdOwotICAgICAgICAg
ICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1Jl
Y3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZm9jdXNUZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVmNzZl
NWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQp
X3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCAwZjJkNThj
MzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi4zZDJhM2U2NjgzNTlkMzhhNGQ5MzJh
MTE5NzYwNWNmMTg4YzJlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC00
NCw2ICs0NCw4IEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsKIC0gKHZvaWQpc2VsZWN0
Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCistIChCT09MKV9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CisKIC0gKHZvaWQpc2V0VGlt
ZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CiAKIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcg
dG9TdHJpbmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2
Y2YxNmFjNDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uODU0NDBhNGEzNDY2Y2NiYWQ0NDU3OWVl
MTVlYTM2MmFiYzhmMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKQEAgLTM3LDYgKzM4LDEx
IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAoQk9P
TClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
cmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRW
aWV3LmdldCgpLCByZWN0KTsKK30KKwogLSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQK
IHsKICAgICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJiODhkMGI3YjdiM2Q1ZDNhOGEuLjE4ODI2ZmRmMjhlNjA3
ZjEzMmIwYTYyZDhkMDFhNzIzN2M1ZTQzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NSw2ICs1NjUs
NyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVF9JTlRF
UkFDVElPTl9BRERJVElPTlMpCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdp
blRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAq
KWNvbnRleHQ7CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMxMTJkLi5mYTFlZWMy
MjRiYmZhMDQ4ODlkODBhMTRkZWYwMWI0OGJiOGZmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUw
NjEsNiArNTA2MSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbgog
CiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCistICh2b2lkKV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxl
cgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6bWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBf
cGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBh
ZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRl
eHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0
SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUyZTEyMWM0OWMzYjk5ODY4
Zjg2NDBlODQuLjY4ZjVkNWYyNjYxYzhmNDBiNzhhMjQxMTM4ZTU4YmU2ZDhiN2EwOGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAyMC0wNC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRW
aWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYx
NjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IGhh
cyBtb3ZlZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29u
dGV4dHNJblJlY3Q6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBz
eW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJ
bnB1dENvbnRleHQ6XSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgaGVscGVyIGZ1bmN0aW9ucyBm
cm9tIGEgV0tXZWJWaWV3IGNhdGVnb3J5IHRvIGEgVGVzdFdLV2ViVmlldyBjYXRlZ29yeSBzbyB0
aGF0CisgICAgICAgIEkgY2FuIG1ha2UgdXNlIG9mIC1bVGVzdFdLV2ViVmlldyB3a0NvbnRlbnRW
aWV3XS4KKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVHJhY2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRl
eHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRp
dGluZ0NvbnRleHQubW0KaW5kZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNm
OWFjZC4uZmRkN2FlMTY2N2I2YjA2MTFmZGY5NDY2MTM4MDBlOTQ4YTExNjU4NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdD
b250ZXh0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9j
dW1lbnRFZGl0aW5nQ29udGV4dC5tbQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0SW5wdXRD
b250ZXh0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC00OCw2ICs0Nyw3IEBACiAg
ICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkLCBbKE5TQXR0cmlidXRlZFN0cmluZyAqKWFjdHVh
bCBzdHJpbmddKTsKIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3ICgpCistICh2b2lkKV9yZXF1
ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRl
eHQgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0
YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKQEAgLTE1MSw3ICsxNTEsNyBAQCAtIChOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0OgogewogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPj4gcmVzdWx0Owot
ICAgIFtzZWxmIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMpIHsKKyAg
ICBbW3NlbGYgd2tDb250ZW50Vmlld10gX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpy
ZWN0IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpj
b250ZXh0cykgewogICAgICAgICByZXN1bHQgPSBjb250ZXh0czsKICAgICAgICAgZmluaXNoZWQg
PSB0cnVlOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0KaW5kZXggYmZh
YTk4NTA4YzNlNTFjN2M3YWI4MGUxOTdkMGRmMTk2YTczMDc4NC4uYzhhMGY0MTQ4MzUyZDRjNjJj
OGQ4YzdiZWI5YjM4MjNlY2QxYWFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1t
CkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKwogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRl
c3RDb2NvYS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtMzUsMTMg
KzM3LDE3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChTeW5jaHJv
bm91c1RleHRJbnB1dENvbnRleHQpCitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKKy0gKHZv
aWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBs
ZXRpb25IYW5kbGVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoU3lu
Y2hyb25vdXNUZXh0SW5wdXRDb250ZXh0KQogCiAtIChOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1Jl
Y3QpcmVjdAogewogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPj4gcmVzdWx0OwotICAg
IFtzZWxmIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMpIHsKKyAgICBb
W3NlbGYgd2tDb250ZW50Vmlld10gX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpyZWN0
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250
ZXh0cykgewogICAgICAgICByZXN1bHQgPSBjb250ZXh0czsKICAgICAgICAgZmluaXNoZWQgPSB0
cnVlOwogICAgIH1dOwpAQCAtMjYzLDMgKzI2OSw1IEBAIFRFU1QoUmVxdWVzdFRleHRJbnB1dENv
bnRleHQsIERJU0FCTEVEX0ZvY3VzVGV4dElucHV0Q29udGV4dCkKICAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCIiXTsKICAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
c3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDp0ZXh0QXJlYS5nZXQoKV0pOwogfQor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396240</attachid>
            <date>2020-04-12 14:43:26 -0700</date>
            <delta_ts>2020-04-12 15:23:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200412144325.patch</filename>
            <type>text/plain</type>
            <size>19486</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjI4NTIxMWZhYzYyZWMxOTVkY2QzYTA4MTk4OWZkZmYw
MDFmMTE1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29t
cGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oOiBBZGQgc29tZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0Ol0pOiBNb3ZlZCBmcm9tIFdLV2ViVmll
dy5tbSBhbmQgc2ltcGxpZmllZC4KKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBtYWtlcyB0aGUg
Y29kZSBtb3JlIGNvcnJlY3QgYnkgcmVtb3ZpbmcgYW4gaW1wbGljaXQgYXNzdW1wdGlvbiB0aGF0
IHRoZQorICAgICAgICBXS0NvbnRlbnRWaWV3IGlzIGxvY2F0ZWQgYXQgdGhlIG9yaWdpbiBpbiBU
ZXN0V2ViS2l0QVBJJ3MgdGVzdCB2aWV3LiBUaG91Z2ggbm93IGhpdC10ZXN0LWZpeGVkLmh0bWwK
KyAgICAgICAgbmVlZHMgdG8gYmUgdXBkYXRlZCB0byBhY2NvdW50IGZvciBzY3JvbGwgYXMgd2Vs
bCBhcyBhbnkgZnV0dXJlIHRlc3QgYmVjYXVzZSBVSVNjcmlwdENvbnRyb2xsZXIubWF5Q29udGFp
bkVkaXRhYmxlRWxlbWVudHNJblJlY3QoKQorICAgICAgICBub3cgZXhwZWN0cyB0aGUgcGFzc2Vk
IHJlY3QgdG8gYmUgaW4gY29udGVudCBjb29yZGluYXRlcy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9y
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6IE1vdmVk
IGZyb20gV0tXZWJWaWV3Lm1tIGFuZCBzaW1wbGlmaWVkLgorCiAyMDIwLTA0LTExICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGV4dCBpbnRlcmFjdGlv
biBkZWxlZ2F0ZSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDVlMWRhNWZhNGMwOTZmMjExZjM4NzcyMzliMGI2NWMwNzRi
OTIzNWEuLjU5MzVjNzk4NGY2M2NmNmYzMGFkYWRlYTQwMWUwMTBlYTVmYTUyNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTQ5LDcg
KzE0OSw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgotI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3Mu
aCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNpbXBvcnQg
IlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKQEAgLTIw
NzEsNzMgKzIwNzAsNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0
YXRlCiAgICAgfQogfQogCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRp
bmF0ZXM6KENHUmVjdClyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzCi17Ci0gICAgLy8gRklYTUU6
IEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gdGFsayBhYm91dCBXS1dlYlZpZXcgY29vcmRpbmF0ZXMg
aW4gYSBjb25zaXN0ZW50IGFuZCBjcm9zcy1wbGF0Zm9ybSB3YXkuCi0gICAgLy8gQ3VycmVudGx5
LCBuZWl0aGVyICJyb290IHZpZXciIG5vciAid2luZG93IiBtZWFuICJXS1dlYlZpZXcgY29vcmRp
bmF0ZXMiIG9uIGJvdGggcGxhdGZvcm1zLgotICAgIC8vIFNlZSBodHRwczovL3dlYmtpdC5vcmcv
Yi8xOTM2NDkgYW5kIHJlbGF0ZWQgYnVncy4KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzIGZyb21W
aWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJldHVybiByZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzOwotI2VuZGlmCi19Ci0KLS0gKENHUmVjdClfY29udmVydFJlY3RUb1Jvb3RW
aWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMKLXsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5X
ZWJWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAg
IHJldHVybiByZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5kaWYKLX0KLQotLSAoQk9PTClf
bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Ci17Ci0jaWYgRU5B
QkxFKEVESVRBQkxFX1JFR0lPTikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICgh
W3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQotICAgICAgICByZXR1cm4gTk87Ci0jZW5k
aWYKLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0
UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0XTsKLSAgICByZXR1cm4gV2ViS2l0OjptYXlD
b250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcuZ2V0KCksIHJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMpOwotI2Vsc2UKLSAgICByZXR1cm4gTk87Ci0jZW5kaWYKLX0KLQot
LSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgotewotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10pIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNl
bmRpZgotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAgaWYgKCFbc2VsZiBfbWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzXSkgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAW10pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxmIF9j
b252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXNd
OwotCi0gICAgYXV0byB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2VsZik7Ci0g
ICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMsIFt3ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+
JiBjb250ZXh0cykgewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGVsZW1lbnRz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRl
eHRzLnNpemUoKV0pOwotCi0gICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykgewotICAgICAg
ICAgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dFdpdGhXZWJWaWV3Qm91bmRpbmdS
ZWN0ID0gY29udGV4dDsKLSAgICAgICAgICAgIGNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVj
dC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXdDb29y
ZGluYXRlczpjb250ZXh0LmJvdW5kaW5nUmVjdF07Ci0gICAgICAgICAgICBbZWxlbWVudHMgYWRk
T2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBfaW5pdFdpdGhUZXh0
SW5wdXRDb250ZXh0OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdF0pLmdldCgpXTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIoZWxlbWVudHMuZ2V0
KCkpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1Rl
eHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3NmU1YWViYmZlYmU2N2YuLmVi
ZDU4N2RlMDcyZTJiNTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzM1
LDggKzMzNSw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQ
bGF5YmFjazsKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOwogCi0tIChCT09M
KV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7Ci0tICh2b2lk
KV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0g
KHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJ
bnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKIC0gKHZv
aWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJh
dGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCmluZGV4IDBmMmQ1OGMzNTczODEzNGVkOTJkNTg2
MzQ4OTI0MTFjMTQ5YTNmOWEuLjRlMzE1MmVlNTI3NDFhYjViY2QxN2JiMzlhOTk3ZjhmNDM4ODBh
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKQEAgLTI3LDYgKzI3LDE1IEBACiAK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKK0BjbGFzcyBfV0tUZXh0SW5wdXRDb250ZXh0OworQGNs
YXNzIFVJV0tEb2N1bWVudFJlcXVlc3Q7CisKK0BpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoV0tU
ZXN0aW5nSU9TKQorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1Jl
Y3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENv
bnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXJlcXVlc3REb2N1bWVudENv
bnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShVSVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9p
ZClhZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CitAZW5kCisKIEBpbnRl
cmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmdJT1MpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNTdHJpbmcgKnRleHRDb250ZW50VHlwZUZvclRlc3Rpbmc7CkBAIC00NCw2ICs1
Myw4IEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsKIC0gKHZvaWQpc2VsZWN0Rm9ybUFj
Y2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCistIChCT09MKV9tYXlDb250YWluRWRp
dGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CisKIC0gKHZvaWQpc2V0VGltZVBpY2tl
clZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGU7CiAK
IC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcgdG9TdHJp
bmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2Y2YxNmFj
NDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uODU0NDBhNGEzNDY2Y2NiYWQ0NDU3OWVlMTVlYTM2
MmFiYzhmMzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKQEAgLTM3LDYgKzM4LDExIEBACiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAoQk9PTClfbWF5
Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgcmV0dXJu
IFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3Lmdl
dCgpLCByZWN0KTsKK30KKwogLSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQKIHsKICAg
ICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGU4ZjFi
NzMxMDEwYmI5OGMzODdkNTJiODhkMGI3YjdiM2Q1ZDNhOGEuLjE4ODI2ZmRmMjhlNjA3ZjEzMmIw
YTYyZDhkMDFhNzIzN2M1ZTQzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NSw2ICs1NjUsNyBAQCBG
T1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklF
V19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVF9JTlRFUkFDVElP
Tl9BRERJVElPTlMpCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENH
UmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0
Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dpbGxCZWdpblRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRl
eHQ7CiAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6
KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMxMTJkLi5mYTFlZWMyMjRiYmZh
MDQ4ODlkODBhMTRkZWYwMWI0OGJiOGZmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUwNjEsNiAr
NTA2MSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbgogCiAjaWYg
VVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCistICh2b2lkKV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgorewor
I2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6bWF5Q29udGFpbkVk
aXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBfcGFnZS0+
dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIGNv
bnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBhZGRPYmpl
Y3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRleHRJbnB1
dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZWxl
bWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJh
Y3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CiB7
CiAgICAgQVNTRVJUKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUyZTEyMWM0OWMzYjk5ODY4Zjg2NDBl
ODQuLmFmYjE2YTFkNzYxNzljMDJlMTM2NzQxZjA3YTQxZGQ0MzQyOTM1Y2YgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wNC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRWaWV3IHRv
IHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjU2OTMx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IGhhcyBtb3Zl
ZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3LgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgorICAgICAg
ICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3Q6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1
ZXN0VGV4dElucHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENv
bnRleHQ6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFRyYWNrIGVkaXRhYmxlIGVsZW1lbnRzIG9uIHNjcmVlbgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVu
dEVkaXRpbmdDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4IGEzOWQwZjNmZGM5MDI4NzliYjdjOWI0
OWQ5NWUwOGU1NjZjZjlhY2QuLmFhYWIyNjNkYTZkYWUzMzQ1NGVlZjZlNWFkMzBmY2JhMzU5OTQx
ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9j
dW1lbnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDcs
MTEgKzQ2LDYgQEAKICAgICBFWFBFQ1RfVFJVRShbYWN0dWFsIGlzS2luZE9mQ2xhc3M6W05TQXR0
cmlidXRlZFN0cmluZyBjbGFzc11dKTsgXAogICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwg
WyhOU0F0dHJpYnV0ZWRTdHJpbmcgKilhY3R1YWwgc3RyaW5nXSk7CiAKLUBpbnRlcmZhY2UgV0tD
b250ZW50VmlldyAoKQotLSAodm9pZClyZXF1ZXN0RG9jdW1lbnRDb250ZXh0OihVSVdLRG9jdW1l
bnRSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0RvY3Vt
ZW50Q29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpYWRqdXN0U2VsZWN0aW9u
V2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwotQGVuZAotCiBzdGF0aWMgVUlXS0RvY3VtZW50UmVx
dWVzdCAqbWFrZVJlcXVlc3QoVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdzIGZsYWdzLCBVSVRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgTlNJbnRlZ2VyIGdyYW51bGFyaXR5Q291bnQsIENHUmVj
dCBkb2N1bWVudFJlY3QgPSBDR1JlY3RaZXJvLCBpZCA8TlNDb3B5aW5nPiBpbnB1dEVsZW1lbnRJ
ZGVudGlmaWVyID0gbmlsKQogewogICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tVSVdLRG9j
dW1lbnRSZXF1ZXN0IGFsbG9jXSBpbml0XSk7CkBAIC0xNTEsNyArMTQ1LDcgQEAgLSAoTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRD
b250ZXh0c0luUmVjdDoKIHsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKICAg
ICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4+IHJlc3Vs
dDsKLSAgICBbc2VsZiBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OnJlY3QgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzKSB7
CisgICAgW1tzZWxmIHdrQ29udGVudFZpZXddIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6cmVjdCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAq
PiAqY29udGV4dHMpIHsKICAgICAgICAgcmVzdWx0ID0gY29udGV4dHM7CiAgICAgICAgIGZpbmlz
aGVkID0gdHJ1ZTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCmluZGV4
IGJmYWE5ODUwOGMzZTUxYzdjN2FiODBlMTk3ZDBkZjE5NmE3MzA3ODQuLjk4NjNjZmVhYTUyY2Jj
ZDJmNzcwNjYyNGQwOThiZGQ0NTRiYmFlZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4
dC5tbQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJUZXN0Q29jb2EuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKQEAgLTM1
LDEzICszNywxMyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoU3lu
Y2hyb25vdXNUZXh0SW5wdXRDb250ZXh0KQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcg
KFN5bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJheTxfV0tUZXh0SW5wdXRD
b250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3QKIHsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKICAgICBf
X2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4+IHJlc3VsdDsK
LSAgICBbc2VsZiBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OnJlY3QgY29tcGxldGlv
bkhhbmRsZXI6XihOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzKSB7Cisg
ICAgW1tzZWxmIHdrQ29udGVudFZpZXddIF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAq
Y29udGV4dHMpIHsKICAgICAgICAgcmVzdWx0ID0gY29udGV4dHM7CiAgICAgICAgIGZpbmlzaGVk
ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTI2MywzICsyNjUsNSBAQCBURVNUKFJlcXVlc3RUZXh0SW5w
dXRDb250ZXh0LCBESVNBQkxFRF9Gb2N1c1RleHRJbnB1dENvbnRleHQpCiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0KCldKTsK
IH0KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGU2ZTk5MjUwMjg4
MGY3NWE3ZTk1ZTk1YTg3MGM2ODk0OGM0NzU2Ny4uMzIyMjdiYjU2ODFhM2Q3MWEwYWIxZDZiZTI4
YTk4NGIwNzQzOTZjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTEyICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIC1fcmVxdWVzdFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0IHRvIFdLQ29udGVudFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MDM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgYW5kIGV4cGVjdGVk
IHJlc3VsdHMgbm93IHRoYXQgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJsZUVs
ZW1lbnRzSW5SZWN0KCkKKyAgICAgICAgZXhwZWN0cyB0aGUgcGFzc2VkIHJlY3QgdG8gYmUgaW4g
Y29udGVudCBjb29yZGluYXRlcy4KKworICAgICAgICBJIHJlcGxhY2VkIG9uZSBzdWItdGVzdCBv
ZiBhIHJlY3QgcHJlLXNjcm9sbCB3aXRoIGFub3RoZXIgdGhhdCB0ZXN0cyB0aGUgbG9jYXRpb24K
KyAgICAgICAgb2YgYSByZWN0IHRoYXQgd2lsbCBoYXZlIGVkaXRhYmxlIGVsZW1lbnRzIGFmdGVy
IHNjcm9sbC4gVGhlIHB1cnBvc2Ugb2YgdGhhdCBzdWItdGVzdAorICAgICAgICBoYXNuJ3QgY2hh
bmdlZCwgYnV0IGl0IG5vdyBtYWtlcyB0aGUgc3ViLXRlc3RzJyByZWN0cyBzeW1tZXRyaWMgZm9y
IGJlZm9yZSBhbmQgYWZ0ZXIKKyAgICAgICAgc2Nyb2xsLiBJIGFsc28gYWRkZWQgZGVidWcoKSBz
dGF0ZW1lbnRzIHRvIGRlbWFyY2F0ZSB0aGUgYmVmb3JlIHNjcm9sbCBhbmQgYWZ0ZXIgc2Nyb2xs
CisgICAgICAgIHN1Yi10ZXN0cyBpbiB0aGUgcmVzdWx0cyB0byBtYWtlIGl0IGVhc2llciB0byB1
bmRlcnN0YW5kIHdoYXQgdGhpcyB0ZXN0IGZpbGUgaXMgdGVzdGluZy4KKworICAgICAgICAqIGVk
aXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBlZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5odG1sOgorCiAyMDIw
LTA0LTA5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
bGF5b3V0IHRlc3RzIGFmdGVyIHIyNTk3NjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dApp
bmRleCA4NDQ1MzBkZWE3YWVjMzFiZWFkZjE0YjZlZDRkM2FmN2MxMzBhY2U5Li4yMmNjZmQ4ZTQx
MTkxNTA1NDFiNWE4YjMyYmM3NjFlYjMwYTExMmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0
ZWQudHh0CkBAIC0yLDEwICsyLDEzIEBAIEhpdCB0ZXN0IGZpeGVkIHBvc2l0aW9uZWQgZWRpdGFi
bGUgZWxlbWVudC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCitCZWZvcmUgc2Nyb2xs
OgorUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5z
IGVkaXRhYmxlIGVsZW1lbnRzLgorUEFTUyAoeCA9IDAsIHkgPSAyMDAsIHdpZHRoID0gMjAwLCBo
ZWlnaHQgPSA0MCkgZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KIAotUEFTUyAo
eCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxl
IGVsZW1lbnRzLgotUEFTUyAoeCA9IDAsIHkgPSAxMDAsIHdpZHRoID0gNTAsIGhlaWdodCA9IDUw
KSBkb2VzIG5vdCBjb250YWluIGVkaXRhYmxlIGVsZW1lbnRzLgotUEFTUyAoeCA9IDAsIHkgPSAw
LCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRzLgor
QWZ0ZXIgc2Nyb2xsOgorUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0g
NDApIGRvZXMgbm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVudHMuCitQQVNTICh4ID0gMCwgeSA9
IDIwMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBlbGVtZW50
cy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZp
eGVkLmh0bWwKaW5kZXggNjJhYWE1YjMwYmZiZDNlZjVkMmQ5Nzg4ZjIzMzk3ZWM1YzgwNDVkOC4u
YmYzMDAzNDM5MWUxYjExOTU4ZWYzYTZjNzMwNDlkYzgxYTg4MzQ2NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5odG1s
CkBAIC0yOSwxMiArMjksMTcgQEAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBkZWJ1ZygiQmVmb3JlIHNjcm9sbDoiKTsKICAgICBhd2FpdCBz
aG91bGRIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAwLCAyMDAsIDQwKTsKLSAgICBhd2Fp
dCBzaG91bGROb3RIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAxMDAsIDUwLCA1MCk7Cisg
ICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMjAwLCAyMDAs
IDQwKTsKIAotICAgIHdpbmRvdy5zY3JvbGxUbygwLCAyMDApOwogCi0gICAgYXdhaXQgc2hvdWxk
SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgbGV0IG5ld1lP
ZmZzZXQgPSAyMDA7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIG5ld1lPZmZzZXQpOworCisgICAg
ZGVidWcoIjxicj5BZnRlciBzY3JvbGw6Iik7CisgICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVkaXRh
YmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgYXdhaXQgc2hvdWxkSGF2ZUVk
aXRhYmxlRWxlbWVudHNJblJlY3QoMCwgbmV3WU9mZnNldCwgMjAwLCA0MCk7CiAKICAgICBsZXQg
dGVzdENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIp
OwogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396241</attachid>
            <date>2020-04-12 15:23:51 -0700</date>
            <delta_ts>2020-04-13 08:50:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200412152350.patch</filename>
            <type>text/plain</type>
            <size>20855</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3NTY1NjlkZGFlMmI0ZjA2
YjY2M2JiZjI4Y2RkZTZmNmY4MGY2MzguLjRlNDZlMmRjNGViY2FkNzdlZWFiNDgxZTJjYjAzYTQ0
ZjQ4YmRjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0u
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkOyBtb3ZlZCB0byBXS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVx
dWVzdERvY3VtZW50Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLV2ViVmlldyBfYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9tYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdDpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcubW0gYW5kIHNpbXBsaWZpZWQuCisg
ICAgICAgIFRoaXMgY2hhbmdlIGFsc28gbWFrZXMgdGhlIGNvZGUgbW9yZSBjb3JyZWN0IGJ5IHJl
bW92aW5nIGFuIGltcGxpY2l0IGFzc3VtcHRpb24gdGhhdCB0aGUKKyAgICAgICAgV0tDb250ZW50
VmlldyBpcyBsb2NhdGVkIGF0IHRoZSBvcmlnaW4gaW4gVGVzdFdlYktpdEFQSSdzIHRlc3Qgdmll
dy4gVGhvdWdoIG5vdyBoaXQtdGVzdC1maXhlZC5odG1sCisgICAgICAgIG5lZWRzIHRvIGJlIHVw
ZGF0ZWQgdG8gYWNjb3VudCBmb3Igc2Nyb2xsIGFzIHdlbGwgYXMgYW55IGZ1dHVyZSB0ZXN0IGJl
Y2F1c2UgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0
KCkKKyAgICAgICAgbm93IGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0IHRvIGJlIGluIGNvbnRlbnQg
Y29vcmRpbmF0ZXMuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQg
c2ltcGxpZmllZC4KKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBm
aXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMg
cmVzaWduZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDcwOGI0OTZiN2UxOWEzMGM5YjAyYTRlMGU5ZmJkYzUyMTA3NWEwYTAuLmYzZGU2
ZTM4ODk5YzU4N2JhMjE4YTFkODI0YTk5MTI1ZWM0OGVlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTUwLDcgKzE1MCw2IEBACiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5oIgotI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQg
IlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKQEAgLTIwNzIsNzMgKzIwNzEs
NiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlCiAgICAgfQog
fQogCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVj
dClyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzCi17Ci0gICAgLy8gRklYTUU6IEl0IHNob3VsZCBi
ZSBlYXNpZXIgdG8gdGFsayBhYm91dCBXS1dlYlZpZXcgY29vcmRpbmF0ZXMgaW4gYSBjb25zaXN0
ZW50IGFuZCBjcm9zcy1wbGF0Zm9ybSB3YXkuCi0gICAgLy8gQ3VycmVudGx5LCBuZWl0aGVyICJy
b290IHZpZXciIG5vciAid2luZG93IiBtZWFuICJXS1dlYlZpZXcgY29vcmRpbmF0ZXMiIG9uIGJv
dGggcGxhdGZvcm1zLgotICAgIC8vIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi8xOTM2NDkgYW5k
IHJlbGF0ZWQgYnVncy4KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2Vs
ZiBjb252ZXJ0UmVjdDpyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzIGZyb21WaWV3Ol9jb250ZW50
Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJldHVybiByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
OwotI2VuZGlmCi19Ci0KLS0gKENHUmVjdClfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0
ZXM6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMKLXsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5XZWJWaWV3Q29vcmRp
bmF0ZXMgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJldHVybiByZWN0
SW5XZWJWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5kaWYKLX0KLQotLSAoQk9PTClfbWF5Q29udGFpbkVk
aXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Ci17Ci0jaWYgRU5BQkxFKEVESVRBQkxF
X1JFR0lPTikKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0
YW5kYXJkQ29udGVudFZpZXddKQotICAgICAgICByZXR1cm4gTk87Ci0jZW5kaWYKLSAgICBDR1Jl
Y3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZp
ZXdDb29yZGluYXRlczpyZWN0XTsKLSAgICByZXR1cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFi
bGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcuZ2V0KCksIHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMpOwotI2Vsc2UKLSAgICByZXR1cm4gTk87Ci0jZW5kaWYKLX0KLQotLSAodm9pZClfcmVx
dWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3JkaW5h
dGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4
dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10pIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVO
QUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAgaWYgKCFbc2VsZiBfbWF5Q29udGFpbkVkaXRhYmxl
RWxlbWVudHNJblJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzXSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihAW10pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRv
Um9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXNdOwotCi0gICAgYXV0
byB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2VsZik7Ci0gICAgX3BhZ2UtPnRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIFt3ZWFrU2Vs
ZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBjb250ZXh0cykg
ewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGVsZW1lbnRzID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0p
OwotCi0gICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykgewotICAgICAgICAgICAgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQgY29udGV4dFdpdGhXZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4
dDsKLSAgICAgICAgICAgIGNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdC5ib3VuZGluZ1Jl
Y3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXdDb29yZGluYXRlczpjb250
ZXh0LmJvdW5kaW5nUmVjdF07Ci0gICAgICAgICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0
TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0
OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdF0pLmdldCgpXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIoZWxlbWVudHMuZ2V0KCkpOwotICAgIH0p
OwotfQotCiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRl
eHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3NmU1YWViYmZlYmU2N2YuLmViZDU4N2RlMDcyZTJi
NTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzM1LDggKzMzNSw2IEBA
IGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKIC0g
KHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOwogCi0tIChCT09MKV9tYXlDb250YWlu
RWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7Ci0tICh2b2lkKV9yZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2ZvY3Vz
VGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKIC0gKHZvaWQpX3Rha2VQREZT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBz
aG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZT
bmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Z0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZ0lPUy5oCmluZGV4IDBmMmQ1OGMzNTczODEzNGVkOTJkNTg2MzQ4OTI0MTFjMTQ5
YTNmOWEuLjEyYmU1ODUyMjg5ZTU2YTRjZWE1OTgxZWQyOWRmNTM4OGU0ZTk1OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRl
c3RpbmdJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIFRBUkdFVF9P
U19JUEhPTkUKIAorQGNsYXNzIF9XS1RleHRJbnB1dENvbnRleHQ7CitAY2xhc3MgVUlXS0RvY3Vt
ZW50UmVxdWVzdDsKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGV4dENvbnRlbnRUeXBlRm9y
VGVzdGluZzsKQEAgLTQ0LDYgKzQ3LDExIEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsK
IC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCist
IChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7Cist
ICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3JlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tE
b2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdL
RG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYWRqdXN0U2Vs
ZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOworCiAtICh2b2lkKXNldFRpbWVQaWNrZXJW
YWx1ZVRvSG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwogCiAt
ICh2b2lkKWFwcGx5QXV0b2NvcnJlY3Rpb246KE5TU3RyaW5nICopbmV3U3RyaW5nIHRvU3RyaW5n
OihOU1N0cmluZyAqKW9sZFN0cmluZyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IDNiMmEwMWVhNmNmMTZhYzQ2
NDc2ZDYyMzUwMGU1YWY2NDhjMDc3OTUuLjY1ZGE3ODhlMjU0OWI5NTk0YWVlOWVjMTQ1NWMxNWY2
MjkyMmRmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmgi
CisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SU9TLmgiCkBAIC0zNyw2ICszOCwyNiBAQAogCiBA
aW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1Rlc3RpbmdJT1MpCiAKKy0gKHZvaWQpX3JlcXVl
c3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgW19jb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0
OnJlY3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCistICh2b2lk
KV9yZXF1ZXN0RG9jdW1lbnRDb250ZXh0OihVSVdLRG9jdW1lbnRSZXF1ZXN0ICopcmVxdWVzdCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0RvY3VtZW50Q29udGV4dCAqKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIFtfY29udGVudFZpZXcgcmVxdWVzdERvY3VtZW50Q29udGV4dDpy
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKworLSAodm9p
ZClfYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW19jb250
ZW50VmlldyBhZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6ZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKKy0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0OihDR1JlY3QpcmVjdAoreworICAgIHJldHVybiBXZWJLaXQ6Om1heUNv
bnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0KF9jb250ZW50Vmlldy5nZXQoKSwgcmVjdCk7Cit9
CisKIC0gKHZvaWQpa2V5Ym9hcmRBY2Nlc3NvcnlCYXJOZXh0CiB7CiAgICAgW19jb250ZW50Vmll
dyBhY2Nlc3NvcnlUYWI6WUVTXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA1YmUyMTBiYjQ1YjA0YTRhZmVl
ZjYzZGVjMWZiNTgxNjE1YzEzYjY2Li4wYTE0ZTUwMGNjZDk2OWEzOWI4NjU5MjAyMGIzZTI2Yzcw
ODY2M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC01NzAsNiArNTcwLDcgQEAgRk9SX0VBQ0hfUFJJVkFU
RV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9X
RUJfVklFVykKICNlbmRpZgogCiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQor
LSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRl
eHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogLSAodm9pZClf
ZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRD
b250ZXh0ICopY29udGV4dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZWI0YzhkZTIwYmM5
YzcwNzY5NjcwZTI5NTEwNDg1OTQ1ODhiOWE4MS4uNDExNmQ2M2FjZGI1MjI4NDIwOTgyYTk2MmI0
MTk5MmM3NDRkODlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01MDg0LDYgKzUwODQsMjcgQEAgLSAo
Q0dSZWN0KXJlY3RDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24KIAogI2lmIFVTRShURVhUX0lOVEVS
QUNUSU9OX0FERElUSU9OUykKIAorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5S
ZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1Rl
eHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoRURJ
VEFCTEVfUkVHSU9OKQorICAgIGlmIChXZWJLaXQ6Om1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRz
SW5SZWN0KHNlbGYsIHJlY3QpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgX3BhZ2UtPnRleHRJbnB1dENvbnRl
eHRzSW5SZWN0KHJlY3QsIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNl
bGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBjb250ZXh0cykgeworICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJv
bmdTZWxmIHx8IGNvbnRleHRzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQFsgXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXV0
byBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTpjb250ZXh0cy5zaXplKCldKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0
IDogY29udGV4dHMpCisgICAgICAgICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tf
V0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRl
eHRdKS5nZXQoKV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVsZW1lbnRzLmdldCgpKTsK
KyAgICB9KTsKK30KKwogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAogewogICAgIEFTU0VSVChj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4MTFmMzQ3OWIzYWM0MmYzNDlkMmMwMjAxYTUxMzljNWFmNjg0ZjFlLi4xNTJhNDBkZjQw
Y2EzZWI1MTY2M2E3MzEyZmQzNDFkMGJlNGRlNTlmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMTIgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEwMzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdCBub3cgdGhh
dCAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCBoYXMgbW92ZWQgZnJvbSBXS1dlYlZp
ZXcgdG8gV0tDb250ZW50Vmlldy4KKyAgICAgICAgSSBleHBvc2UgbmV3IHRlc3Rpbmctb25seSBX
S1dlYlZpZXcgU1BJIHRvIGFjY2VzcyBpdCBvbiB0aGUgY29udGVudCB2aWV3LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0
Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0RG9jdW1l
bnRDb250ZXh0Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlBZGp1
c3RTZWxlY3Rpb25XaXRoRGVsdGE6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250
ZXh0Ol0pOiBEZWxldGVkLgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFs
eXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQppbmRleCBhMzlkMGYz
ZmRjOTAyODc5YmI3YzliNDlkOTVlMDhlNTY2Y2Y5YWNkLi45Zjk4Yjg5NGMzY2E4MjE0MjcyMmFl
NWI0MzgwMmRhZjgyNTU1MmUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCkBAIC0y
OSwxMiArMjksOSBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VGVzdENvY29hLmgiCi0jaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgotI2ltcG9ydCA8V2ViS2l0
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29u
dGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgpAQCAtNDcsMTEgKzQ0LDYgQEAKICAgICBFWFBFQ1RfVFJVRShbYWN0dWFsIGlzS2luZE9mQ2xh
c3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKTsgXAogICAgIEVYUEVDVF9XS19TVFJFUShl
eHBlY3RlZCwgWyhOU0F0dHJpYnV0ZWRTdHJpbmcgKilhY3R1YWwgc3RyaW5nXSk7CiAKLUBpbnRl
cmZhY2UgV0tDb250ZW50VmlldyAoKQotLSAodm9pZClyZXF1ZXN0RG9jdW1lbnRDb250ZXh0OihV
SVdLRG9jdW1lbnRSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
VUlXS0RvY3VtZW50Q29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpYWRqdXN0
U2VsZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwotQGVuZAotCiBzdGF0aWMgVUlXS0Rv
Y3VtZW50UmVxdWVzdCAqbWFrZVJlcXVlc3QoVUlXS0RvY3VtZW50UmVxdWVzdEZsYWdzIGZsYWdz
LCBVSVRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgTlNJbnRlZ2VyIGdyYW51bGFyaXR5Q291
bnQsIENHUmVjdCBkb2N1bWVudFJlY3QgPSBDR1JlY3RaZXJvLCBpZCA8TlNDb3B5aW5nPiBpbnB1
dEVsZW1lbnRJZGVudGlmaWVyID0gbmlsKQogewogICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMo
W1tVSVdLRG9jdW1lbnRSZXF1ZXN0IGFsbG9jXSBpbml0XSk7CkBAIC0xMzAsNyArMTIyLDcgQEAg
LSAoVUlXS0RvY3VtZW50Q29udGV4dCAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RG9jdW1lbnRDb250
ZXh0OihVSVdLRG9jdW1lbnRSZXF1ZXMKIHsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBm
YWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxVSVdLRG9jdW1lbnRDb250ZXh0PiByZXN1bHQ7
Ci0gICAgW1tzZWxmIHdrQ29udGVudFZpZXddIHJlcXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVz
dCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJV0tEb2N1bWVudENvbnRleHQgKmNvbnRleHQpIHsKKyAg
ICBbc2VsZiBfcmVxdWVzdERvY3VtZW50Q29udGV4dDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Ol4oVUlXS0RvY3VtZW50Q29udGV4dCAqY29udGV4dCkgewogICAgICAgICByZXN1bHQgPSBjb250
ZXh0OwogICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07CkBAIC0xNDEsNyArMTMzLDcg
QEAgLSAoVUlXS0RvY3VtZW50Q29udGV4dCAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RG9jdW1lbnRD
b250ZXh0OihVSVdLRG9jdW1lbnRSZXF1ZXMKIC0gKHZvaWQpc3luY2hyb25vdXNseUFkanVzdFNl
bGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlyYW5nZQogewogICAgIF9fYmxvY2sgYm9vbCBmaW5p
c2hlZCA9IGZhbHNlOwotICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSBhZGp1c3RTZWxlY3Rpb25X
aXRoRGVsdGE6cmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbc2VsZiBfYWRqdXN0
U2VsZWN0aW9uV2l0aERlbHRhOnJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAg
IGZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmZpbmlzaGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCmluZGV4IGJmYWE5ODUw
OGMzZTUxYzdjN2FiODBlMTk3ZDBkZjE5NmE3MzA3ODQuLjdiNGRiNjViZDYxNjRlZjU0Njc0ZjI0
NDM2OGE4Yzg4ZmY1MzQzNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpAQCAt
MjUsMTcgKzI1LDE4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKwogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RD
b2NvYS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+
Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChTeW5jaHJvbm91c1RleHRJbnB1
dENvbnRleHQpCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoU3luY2hyb25vdXNUZXh0
SW5wdXRDb250ZXh0KQogCiAtIChOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKilzeW5j
aHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdAogewpA
QCAtMjYzLDMgKzI2NCw1IEBAIFRFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIERJU0FCTEVE
X0ZvY3VzVGV4dElucHV0Q29udGV4dCkKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCIiXTsKICAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3luY2hyb25vdXNseUZv
Y3VzVGV4dElucHV0Q29udGV4dDp0ZXh0QXJlYS5nZXQoKV0pOwogfQorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZDYxNmEyZDJmNWQ2Zjg1MzJkMmMzZWQ5N2YyNjZm
MTM5NDU5NGYxLi4zNWViNzQ3YTg3YWJlMmIwMjM1NTNhY2E4NjQ0MmMzOGE4NjQ3YTM1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Qg
dG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzk4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgdGVzdCBhbmQgZXhwZWN0ZWQgcmVzdWx0cyBub3cgdGhhdCBV
SVNjcmlwdENvbnRyb2xsZXIubWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoKQorICAg
ICAgICBleHBlY3RzIHRoZSBwYXNzZWQgcmVjdCB0byBiZSBpbiBjb250ZW50IGNvb3JkaW5hdGVz
LgorCisgICAgICAgIEkgcmVwbGFjZWQgb25lIHN1Yi10ZXN0IG9mIGEgcmVjdCBwcmUtc2Nyb2xs
IHdpdGggYW5vdGhlciB0aGF0IHRlc3RzIHRoZSBsb2NhdGlvbgorICAgICAgICBvZiBhIHJlY3Qg
dGhhdCB3aWxsIGhhdmUgZWRpdGFibGUgZWxlbWVudHMgYWZ0ZXIgc2Nyb2xsLiBUaGUgcHVycG9z
ZSBvZiB0aGF0IHN1Yi10ZXN0CisgICAgICAgIGhhc24ndCBjaGFuZ2VkLCBidXQgaXQgbm93IG1h
a2VzIHRoZSBzdWItdGVzdHMnIHJlY3RzIHN5bW1ldHJpYyBmb3IgYmVmb3JlIGFuZCBhZnRlcgor
ICAgICAgICBzY3JvbGwuIEkgYWxzbyBhZGRlZCBkZWJ1ZygpIHN0YXRlbWVudHMgdG8gZGVtYXJj
YXRlIHRoZSBiZWZvcmUgc2Nyb2xsIGFuZCBhZnRlciBzY3JvbGwKKyAgICAgICAgc3ViLXRlc3Rz
IGluIHRoZSByZXN1bHRzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlz
IHRlc3QgZmlsZSBpcyB0ZXN0aW5nLgorCisgICAgICAgICogZWRpdGluZy9lZGl0YWJsZS1yZWdp
b24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZWRpdGFi
bGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLmh0bWw6CisKIDIwMjAtMDMtMjUgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFNob3VsZCBzaG93IGlucHV0
IHZpZXcgd2hlbiBiZWNhbWUgZmlyc3QgcmVzcG9uZGVyIGlmIGtleWJvYXJkIHdhcyBzaG93aW5n
IHdoZW4gdGhlIHZpZXcgd2FzIHJlc2lnbmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQK
aW5kZXggODQ0NTMwZGVhN2FlYzMxYmVhZGYxNGI2ZWQ0ZDNhZjdjMTMwYWNlOS4uMjJjY2ZkOGU0
MTE5MTUwNTQxYjVhOGIzMmJjNzYxZWIzMGExMTJhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVj
dGVkLnR4dApAQCAtMiwxMCArMiwxMyBAQCBIaXQgdGVzdCBmaXhlZCBwb3NpdGlvbmVkIGVkaXRh
YmxlIGVsZW1lbnQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAorQmVmb3JlIHNjcm9s
bDoKK1BBU1MgKHggPSAwLCB5ID0gMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlu
cyBlZGl0YWJsZSBlbGVtZW50cy4KK1BBU1MgKHggPSAwLCB5ID0gMjAwLCB3aWR0aCA9IDIwMCwg
aGVpZ2h0ID0gNDApIGRvZXMgbm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVudHMuCiAKLVBBU1Mg
KHggPSAwLCB5ID0gMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJs
ZSBlbGVtZW50cy4KLVBBU1MgKHggPSAwLCB5ID0gMTAwLCB3aWR0aCA9IDUwLCBoZWlnaHQgPSA1
MCkgZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KLVBBU1MgKHggPSAwLCB5ID0g
MCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBlbGVtZW50cy4K
K0FmdGVyIHNjcm9sbDoKK1BBU1MgKHggPSAwLCB5ID0gMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9
IDQwKSBkb2VzIG5vdCBjb250YWluIGVkaXRhYmxlIGVsZW1lbnRzLgorUEFTUyAoeCA9IDAsIHkg
PSAyMDAsIHdpZHRoID0gMjAwLCBoZWlnaHQgPSA0MCkgY29udGFpbnMgZWRpdGFibGUgZWxlbWVu
dHMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZp
eGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1m
aXhlZC5odG1sCmluZGV4IDYyYWFhNWIzMGJmYmQzZWY1ZDJkOTc4OGYyMzM5N2VjNWM4MDQ1ZDgu
LmJmMzAwMzQzOTFlMWIxMTk1OGVmM2E2YzczMDQ5ZGM4MWE4ODM0NjQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRt
bApAQCAtMjksMTIgKzI5LDE3IEBAIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgZGVidWcoIkJlZm9yZSBzY3JvbGw6Iik7CiAgICAgYXdhaXQg
c2hvdWxkSGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7Ci0gICAgYXdh
aXQgc2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMTAwLCA1MCwgNTApOwor
ICAgIGF3YWl0IHNob3VsZE5vdEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDIwMCwgMjAw
LCA0MCk7CiAKLSAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMjAwKTsKIAotICAgIGF3YWl0IHNob3Vs
ZEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOworICAgIGxldCBuZXdZ
T2Zmc2V0ID0gMjAwOworICAgIHdpbmRvdy5zY3JvbGxUbygwLCBuZXdZT2Zmc2V0KTsKKworICAg
IGRlYnVnKCI8YnI+QWZ0ZXIgc2Nyb2xsOiIpOworICAgIGF3YWl0IHNob3VsZE5vdEhhdmVFZGl0
YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOworICAgIGF3YWl0IHNob3VsZEhhdmVF
ZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIG5ld1lPZmZzZXQsIDIwMCwgNDApOwogCiAgICAgbGV0
IHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWluZXIi
KTsKICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396290</attachid>
            <date>2020-04-13 08:50:43 -0700</date>
            <delta_ts>2020-04-13 15:30:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200413085042.patch</filename>
            <type>text/plain</type>
            <size>20800</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjJlMWI4YzM5ZDFlYWFkMjJjNWUyNTNmMmVmZWQ0MTZk
MWEyYzA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0u
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkOyBtb3ZlZCB0byBXS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVx
dWVzdERvY3VtZW50Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLV2ViVmlldyBfYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9tYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdDpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcubW0gYW5kIHNpbXBsaWZpZWQuCisg
ICAgICAgIFRoaXMgY2hhbmdlIGFsc28gbWFrZXMgdGhlIGNvZGUgbW9yZSBjb3JyZWN0IGJ5IHJl
bW92aW5nIGFuIGltcGxpY2l0IGFzc3VtcHRpb24gdGhhdCB0aGUKKyAgICAgICAgV0tDb250ZW50
VmlldyBpcyBsb2NhdGVkIGF0IHRoZSBvcmlnaW4gaW4gVGVzdFdlYktpdEFQSSdzIHRlc3Qgdmll
dy4gVGhvdWdoIG5vdyBoaXQtdGVzdC1maXhlZC5odG1sCisgICAgICAgIG5lZWRzIHRvIGJlIHVw
ZGF0ZWQgdG8gYWNjb3VudCBmb3Igc2Nyb2xsIGFzIHdlbGwgYXMgYW55IGZ1dHVyZSB0ZXN0IGJl
Y2F1c2UgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0
KCkKKyAgICAgICAgbm93IGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0IHRvIGJlIGluIGNvbnRlbnQg
Y29vcmRpbmF0ZXMuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQg
c2ltcGxpZmllZC4KKwogMjAyMC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1
ZTFkYTVmYTRjMDk2ZjIxMWYzODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZm
MzBhZGFkZWE0MDFlMDEwZWE1ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aCIKLSNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dS
ZWN0KV9jb252ZXJ0UmVjdEZyb21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcwotewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRv
IHRhbGsgYWJvdXQgV0tXZWJWaWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jv
c3MtcGxhdGZvcm0gd2F5LgotICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBu
b3IgIndpbmRvdyIgbWVhbiAiV0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jt
cy4KLSAgICAvLyBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1
Z3MuCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJl
Y3Q6cmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCld
OwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgot
fQotCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3Qp
cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmll
dzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nv
b3JkaW5hdGVzOwotI2VuZGlmCi19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1l
bnRzSW5SZWN0OihDR1JlY3QpcmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRl
bnRWaWV3XSkKLSAgICAgICAgcmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0
ZXM6cmVjdF07Ci0gICAgcmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJ
blJlY3QoX2NvbnRlbnRWaWV3LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNl
bHNlCi0gICAgcmV0dXJuIE5POwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5w
dXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29t
cGxldGlvbkhhbmRsZXIKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3Nl
bGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEBbXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFC
TEVfUkVHSU9OKQotICAgIGlmICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5S
ZWN0OnJlY3RJbldlYlZpZXdDb29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQFtdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29v
cmRpbmF0ZXM6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYg
PSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250
ZXh0c0luUmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVk
Q29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAg
ICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBjb250ZXh0IDogY29udGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0IGNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAg
ICAgICBjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9u
Z1NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGlu
Z1JlY3RdOwotICAgICAgICAgICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4
dElucHV0Q29udGV4dCBhbGxvY10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0
aFdlYlZpZXdCb3VuZGluZ1JlY3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0
dXJlZENvbXBsZXRpb25IYW5kbGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAo
dm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElu
cHV0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcgogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJk
NGM2OWRkN2M0Y2U0ZjVmNzZlNWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUw
MTE3ZTFiNmRjYzg0MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBw
cm9wZXJ0eS4KIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6KENHUmVjdClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5
PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRo
Q29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3Vy
YXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRh
LCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJ
T1MuaAppbmRleCAwZjJkNThjMzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi4xMmJl
NTg1MjI4OWU1NmE0Y2VhNTk4MWVkMjlkZjUzODhlNGU5NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9y
VGVzdGluZ0lPUy5oCkBAIC0yNyw2ICsyNyw5IEBACiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAK
K0BjbGFzcyBfV0tUZXh0SW5wdXRDb250ZXh0OworQGNsYXNzIFVJV0tEb2N1bWVudFJlcXVlc3Q7
CisKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmdJT1MpCiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKnRleHRDb250ZW50VHlwZUZvclRlc3Rpbmc7CkBA
IC00NCw2ICs0NywxMSBAQAogLSAodm9pZClfZGlzbWlzc0ZpbGVQaWNrZXI7CiAtICh2b2lkKXNl
bGVjdEZvcm1BY2Nlc3NvcnlQaWNrZXJSb3c6KGludClyb3dJbmRleDsKIAorLSAoQk9PTClfbWF5
Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0OworLSAodm9pZClfcmVx
dWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhh
bmRsZXI7CistICh2b2lkKV9yZXF1ZXN0RG9jdW1lbnRDb250ZXh0OihVSVdLRG9jdW1lbnRSZXF1
ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0RvY3VtZW50Q29u
dGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FkanVzdFNlbGVjdGlvbldpdGhE
ZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcjsKKwogLSAodm9pZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6
KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKIAogLSAodm9pZClhcHBs
eUF1dG9jb3JyZWN0aW9uOihOU1N0cmluZyAqKW5ld1N0cmluZyB0b1N0cmluZzooTlNTdHJpbmcg
KilvbGRTdHJpbmcgd2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbQppbmRleCAzYjJhMDFlYTZjZjE2YWM0NjQ3NmQ2MjM1MDBl
NWFmNjQ4YzA3Nzk1Li5iZDFlZjIyM2I0ZTMzNmE5ODdkODUxNTJlNTY1NmYzOTA4ODJlMzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3Rp
bmdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdU
ZXN0aW5nSU9TLm1tCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAi
UmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogI2ltcG9y
dCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SU9T
LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTM3LDYgKzM5LDI2IEBACiAKIEBpbXBs
ZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAodm9pZClfcmVxdWVzdFRl
eHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBbX2NvbnRlbnRWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVj
dCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKKy0gKHZvaWQpX3Jl
cXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgW19jb250ZW50VmlldyByZXF1ZXN0RG9jdW1lbnRDb250ZXh0OnJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCistICh2b2lkKV9h
ZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBbX2NvbnRlbnRW
aWV3IGFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKworLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgcmV0dXJuIFdlYktpdDo6bWF5Q29udGFp
bkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3LmdldCgpLCByZWN0KTsKK30KKwog
LSAodm9pZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQKIHsKICAgICBbX2NvbnRlbnRWaWV3IGFj
Y2Vzc29yeVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJi
ODhkMGI3YjdiM2Q1ZDNhOGEuLjdlOGU4MjIwMGYwNmQ5ZmQ3MDU0MWUwNzAyNTYyNjAwYzA3ZmMx
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2NCw2ICs1NjQsOCBAQCBGT1JfRUFDSF9QUklWQVRFX1dL
Q09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9W
SUVXKQogLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJhd2luZ0Nvb3JkaW5hdG9yOwogI2Vu
ZGlmCiAKKy0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJl
Y3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOworCiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURE
SVRJT05TKQogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250
ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRl
eHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNv
bnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYy
ZjU2ZDMxMTJkLi4yNWM1M2QzMzdmZWFjYWVjY2FhNjY3YWViMGVlMmNmOTE4YjcwZTIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTUwNTksNiArNTA1OSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5p
bmdDYXJldFNlbGVjdGlvbgogICAgIHJldHVybiBDR1JlY3RaZXJvOwogfQogCistICh2b2lkKV9y
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9u
SGFuZGxlcgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKFdlYktpdDo6
bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KyAgICBfcGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vh
a09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50
Q29udGV4dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxm
LmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVt
ZW50cyBhZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0
V2l0aFRleHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAjaWYgVVNFKFRFWFRfSU5U
RVJBQ1RJT05fQURESVRJT05TKQogCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25J
blRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDE4MGZjYzE2OTA3
N2YwZTJlMTIxYzQ5YzNiOTk4NjhmODY0MGU4NC4uOTQyNzhlZTRlMTNhZTYwYjNmNGQ2NTVkOWZl
ZDM1NWYzNTYzMmE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA0LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0IHRvIFdLQ29udGVudFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM5OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3Qgbm93IHRoYXQgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgaGFzIG1vdmVkIGZyb20gV0tXZWJWaWV3IHRvIFdLQ29udGVudFZp
ZXcuCisgICAgICAgIEkgZXhwb3NlIG5ldyB0ZXN0aW5nLW9ubHkgV0tXZWJWaWV3IFNQSSB0byBh
Y2Nlc3MgaXQgb24gdGhlIGNvbnRlbnQgdmlldy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKC1b
VGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDpdKToKKyAg
ICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5QWRqdXN0U2VsZWN0aW9uV2l0aERl
bHRhOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVz
dFRleHRJbnB1dENvbnRleHQubW06CisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJvbm91c2x5
UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpdKTogRGVsZXRlZC4K
KwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJhY2sgZWRpdGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0Nv
bnRleHQubW0KaW5kZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNmOWFjZC4u
OWY5OGI4OTRjM2NhODIxNDI3MjJhZTViNDM4MDJkYWY4MjU1NTJlMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5tbQpAQCAtMjksMTIgKzI5LDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgotI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRT
UEkuaCIKLSNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ3LDExICs0NCw2IEBACiAgICAgRVhQRUNUX1RS
VUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSk7IFwK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIFsoTlNBdHRyaWJ1dGVkU3RyaW5nICopYWN0
dWFsIHN0cmluZ10pOwogCi1AaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKLS0gKHZvaWQpcmVx
dWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhh
bmRsZXI7Ci0tICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJh
bmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsK
LUBlbmQKLQogc3RhdGljIFVJV0tEb2N1bWVudFJlcXVlc3QgKm1ha2VSZXF1ZXN0KFVJV0tEb2N1
bWVudFJlcXVlc3RGbGFncyBmbGFncywgVUlUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE5T
SW50ZWdlciBncmFudWxhcml0eUNvdW50LCBDR1JlY3QgZG9jdW1lbnRSZWN0ID0gQ0dSZWN0WmVy
bywgaWQgPE5TQ29weWluZz4gaW5wdXRFbGVtZW50SWRlbnRpZmllciA9IG5pbCkKIHsKICAgICBh
dXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbVUlXS0RvY3VtZW50UmVxdWVzdCBhbGxvY10gaW5pdF0p
OwpAQCAtMTMwLDcgKzEyMiw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91
c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiB7CiAgICAgX19i
bG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8VUlXS0Rv
Y3VtZW50Q29udGV4dD4gcmVzdWx0OwotICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSByZXF1ZXN0
RG9jdW1lbnRDb250ZXh0OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihVSVdLRG9jdW1lbnRD
b250ZXh0ICpjb250ZXh0KSB7CisgICAgW3NlbGYgX3JlcXVlc3REb2N1bWVudENvbnRleHQ6cmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJV0tEb2N1bWVudENvbnRleHQgKmNvbnRleHQpIHsK
ICAgICAgICAgcmVzdWx0ID0gY29udGV4dDsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAg
IH1dOwpAQCAtMTQxLDcgKzEzMyw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJv
bm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiAtICh2b2lk
KXN5bmNocm9ub3VzbHlBZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpcmFuZ2UKIHsK
ICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBbW3NlbGYgd2tDb250ZW50
Vmlld10gYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOnJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgW3NlbGYgX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpyYW5nZSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewogICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29u
dGV4dC5tbQppbmRleCBiZmFhOTg1MDhjM2U1MWM3YzdhYjgwZTE5N2QwZGYxOTZhNzMwNzg0Li43
YjRkYjY1YmQ2MTY0ZWY1NDY3NGYyNDQzNjhhOGM4OGZmNTM0Mzc0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW0KQEAgLTI1LDE3ICsyNSwxOCBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJUZXN0Q29jb2EuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyAoU3luY2hyb25vdXNUZXh0SW5wdXRDb250ZXh0KQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dl
YlZpZXcgKFN5bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJheTxfV0tUZXh0
SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0lu
UmVjdDooQ0dSZWN0KXJlY3QKIHsKQEAgLTI2MywzICsyNjQsNSBAQCBURVNUKFJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0LCBESVNBQkxFRF9Gb2N1c1RleHRJbnB1dENvbnRleHQpCiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CiAgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0KCld
KTsKIH0KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGU2ZTk5MjUw
Mjg4MGY3NWE3ZTk1ZTk1YTg3MGM2ODk0OGM0NzU2Ny4uMzIyMjdiYjU2ODFhM2Q3MWEwYWIxZDZi
ZTI4YTk4NGIwNzQzOTZjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTEyICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIC1fcmVxdWVzdFRl
eHRJbnB1dENvbnRleHRzSW5SZWN0IHRvIFdLQ29udGVudFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5MzE+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgYW5kIGV4cGVj
dGVkIHJlc3VsdHMgbm93IHRoYXQgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0KCkKKyAgICAgICAgZXhwZWN0cyB0aGUgcGFzc2VkIHJlY3QgdG8gYmUg
aW4gY29udGVudCBjb29yZGluYXRlcy4KKworICAgICAgICBJIHJlcGxhY2VkIG9uZSBzdWItdGVz
dCBvZiBhIHJlY3QgcHJlLXNjcm9sbCB3aXRoIGFub3RoZXIgdGhhdCB0ZXN0cyB0aGUgbG9jYXRp
b24KKyAgICAgICAgb2YgYSByZWN0IHRoYXQgd2lsbCBoYXZlIGVkaXRhYmxlIGVsZW1lbnRzIGFm
dGVyIHNjcm9sbC4gVGhlIHB1cnBvc2Ugb2YgdGhhdCBzdWItdGVzdAorICAgICAgICBoYXNuJ3Qg
Y2hhbmdlZCwgYnV0IGl0IG5vdyBtYWtlcyB0aGUgc3ViLXRlc3RzJyByZWN0cyBzeW1tZXRyaWMg
Zm9yIGJlZm9yZSBhbmQgYWZ0ZXIKKyAgICAgICAgc2Nyb2xsLiBJIGFsc28gYWRkZWQgZGVidWco
KSBzdGF0ZW1lbnRzIHRvIGRlbWFyY2F0ZSB0aGUgYmVmb3JlIHNjcm9sbCBhbmQgYWZ0ZXIgc2Ny
b2xsCisgICAgICAgIHN1Yi10ZXN0cyBpbiB0aGUgcmVzdWx0cyB0byBtYWtlIGl0IGVhc2llciB0
byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0ZXN0IGZpbGUgaXMgdGVzdGluZy4KKworICAgICAgICAq
IGVkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBlZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5odG1sOgorCiAy
MDIwLTA0LTA5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggbGF5b3V0IHRlc3RzIGFmdGVyIHIyNTk3NjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4
dAppbmRleCA4NDQ1MzBkZWE3YWVjMzFiZWFkZjE0YjZlZDRkM2FmN2MxMzBhY2U5Li4yMmNjZmQ4
ZTQxMTkxNTA1NDFiNWE4YjMyYmM3NjFlYjMwYTExMmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0yLDEwICsyLDEzIEBAIEhpdCB0ZXN0IGZpeGVkIHBvc2l0aW9uZWQgZWRp
dGFibGUgZWxlbWVudC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCitCZWZvcmUgc2Ny
b2xsOgorUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRh
aW5zIGVkaXRhYmxlIGVsZW1lbnRzLgorUEFTUyAoeCA9IDAsIHkgPSAyMDAsIHdpZHRoID0gMjAw
LCBoZWlnaHQgPSA0MCkgZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KIAotUEFT
UyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRh
YmxlIGVsZW1lbnRzLgotUEFTUyAoeCA9IDAsIHkgPSAxMDAsIHdpZHRoID0gNTAsIGhlaWdodCA9
IDUwKSBkb2VzIG5vdCBjb250YWluIGVkaXRhYmxlIGVsZW1lbnRzLgotUEFTUyAoeCA9IDAsIHkg
PSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRz
LgorQWZ0ZXIgc2Nyb2xsOgorUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0
ID0gNDApIGRvZXMgbm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVudHMuCitQQVNTICh4ID0gMCwg
eSA9IDIwMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBlbGVt
ZW50cy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3Qt
Zml4ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0
LWZpeGVkLmh0bWwKaW5kZXggNjJhYWE1YjMwYmZiZDNlZjVkMmQ5Nzg4ZjIzMzk3ZWM1YzgwNDVk
OC4uYmYzMDAzNDM5MWUxYjExOTU4ZWYzYTZjNzMwNDlkYzgxYTg4MzQ2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5o
dG1sCkBAIC0yOSwxMiArMjksMTcgQEAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBkZWJ1ZygiQmVmb3JlIHNjcm9sbDoiKTsKICAgICBhd2Fp
dCBzaG91bGRIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAwLCAyMDAsIDQwKTsKLSAgICBh
d2FpdCBzaG91bGROb3RIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAxMDAsIDUwLCA1MCk7
CisgICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMjAwLCAy
MDAsIDQwKTsKIAotICAgIHdpbmRvdy5zY3JvbGxUbygwLCAyMDApOwogCi0gICAgYXdhaXQgc2hv
dWxkSGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgbGV0IG5l
d1lPZmZzZXQgPSAyMDA7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIG5ld1lPZmZzZXQpOworCisg
ICAgZGVidWcoIjxicj5BZnRlciBzY3JvbGw6Iik7CisgICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVk
aXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgYXdhaXQgc2hvdWxkSGF2
ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgbmV3WU9mZnNldCwgMjAwLCA0MCk7CiAKICAgICBs
ZXQgdGVzdENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5l
ciIpOwogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396344</attachid>
            <date>2020-04-13 15:30:53 -0700</date>
            <delta_ts>2020-04-13 15:52:50 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-210398-20200413153052.patch</filename>
            <type>text/plain</type>
            <size>22220</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjJlMWI4YzM5ZDFlYWFkMjJjNWUyNTNmMmVmZWQ0MTZk
MWEyYzA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0u
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkOyBtb3ZlZCB0byBXS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVx
dWVzdERvY3VtZW50Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLV2ViVmlldyBfYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9tYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdDpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcubW0gYW5kIHNpbXBsaWZpZWQuCisg
ICAgICAgIFRoaXMgY2hhbmdlIGFsc28gbWFrZXMgdGhlIGNvZGUgbW9yZSBjb3JyZWN0IGJ5IHJl
bW92aW5nIGFuIGltcGxpY2l0IGFzc3VtcHRpb24gdGhhdCB0aGUKKyAgICAgICAgV0tDb250ZW50
VmlldyBpcyBsb2NhdGVkIGF0IHRoZSBvcmlnaW4gaW4gVGVzdFdlYktpdEFQSSdzIHRlc3Qgdmll
dy4gVGhvdWdoIG5vdyBoaXQtdGVzdC1maXhlZC5odG1sCisgICAgICAgIG5lZWRzIHRvIGJlIHVw
ZGF0ZWQgdG8gYWNjb3VudCBmb3Igc2Nyb2xsIGFzIHdlbGwgYXMgYW55IGZ1dHVyZSB0ZXN0IGJl
Y2F1c2UgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0
KCkKKyAgICAgICAgbm93IGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0IHRvIGJlIGluIGNvbnRlbnQg
Y29vcmRpbmF0ZXMuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQg
c2ltcGxpZmllZC4KKwogMjAyMC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDg0ZThhMjZhZTRm
ZjYyNjk0ZDEyZjQwYzcxMjI5OGE3MzdjYjU0MTMuLjcwY2E3ZDQ0YmY0ZDhjZTM0MGQ0NjIwMmM1
MWI4YjkzYmMzNmM1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCkBAIC02ODAsNyArNjgwLDEyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tH
ZXN0dXJlVHlwZSkgewogQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFkb25seSkgQ0dG
bG9hdCBfbWF4aW11bUJlYW1TbmFwcGluZ0xlbmd0aDsKIEBlbmQKIAorQGNsYXNzIFVJV0tEb2N1
bWVudFJlcXVlc3Q7CitAY2xhc3MgVUlXS0RvY3VtZW50Q29udGV4dDsKKwogQHByb3RvY29sIFVJ
V0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbAorLSAodm9pZClyZXF1ZXN0RG9jdW1lbnRDb250ZXh0
OihVSVdLRG9jdW1lbnRSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoVUlXS0RvY3VtZW50Q29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2Vs
ZWN0UG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50IHdpdGhDb250ZXh0UmVxdWVzdDooVUlX
S0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJ
V0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWNoYW5nZVNl
bGVjdGlvbldpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0
dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlz
dGF0ZTsKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQg
d2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6
KEJPT0wpYmFzZUlzU3RhcnQgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7CiAt
ICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaGVzRnJvbTooQ0dQb2ludClmcm9tIHRvOihD
R1BvaW50KXRvIHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0
YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpZ2VzdHVyZVN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNWUxZGE1ZmE0YzA5
NmYyMTFmMzg3NzIzOWIwYjY1YzA3NGI5MjM1YS4uNTkzNWM3OTg0ZjYzY2Y2ZjMwYWRhZGVhNDAx
ZTAxMGVhNWZhNTI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0xNDksNyArMTQ5LDYgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW1wb3J0
ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oIgpAQCAtMjA3MSw3MyArMjA3MCw2IEBAIC0gKHZvaWQpX2tpbGxXZWJD
b250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKICAgICB9CiB9CiAKLS0gKENHUmVjdClfY29udmVy
dFJlY3RGcm9tUm9vdFZpZXdDb29yZGluYXRlczooQ0dSZWN0KXJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMKLXsKLSAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIGVhc2llciB0byB0YWxrIGFib3V0
IFdLV2ViVmlldyBjb29yZGluYXRlcyBpbiBhIGNvbnNpc3RlbnQgYW5kIGNyb3NzLXBsYXRmb3Jt
IHdheS4KLSAgICAvLyBDdXJyZW50bHksIG5laXRoZXIgInJvb3QgdmlldyIgbm9yICJ3aW5kb3ci
IG1lYW4gIldLV2ViVmlldyBjb29yZGluYXRlcyIgb24gYm90aCBwbGF0Zm9ybXMuCi0gICAgLy8g
U2VlIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzY0OSBhbmQgcmVsYXRlZCBidWdzLgotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRSZWN0OnJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMgZnJvbVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKLSNlbHNlCi0g
ICAgcmV0dXJuIHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5kaWYKLX0KLQotLSAoQ0dS
ZWN0KV9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczooQ0dSZWN0KXJlY3RJbldlYlZp
ZXdDb29yZGluYXRlcwotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIFtz
ZWxmIGNvbnZlcnRSZWN0OnJlY3RJbldlYlZpZXdDb29yZGluYXRlcyB0b1ZpZXc6X2NvbnRlbnRW
aWV3LmdldCgpXTsKLSNlbHNlCi0gICAgcmV0dXJuIHJlY3RJbldlYlZpZXdDb29yZGluYXRlczsK
LSNlbmRpZgotfQotCi0tIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDoo
Q0dSZWN0KXJlY3QKLXsKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10pCi0g
ICAgICAgIHJldHVybiBOTzsKLSNlbmRpZgotICAgIENHUmVjdCByZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzID0gW3NlbGYgX2NvbnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOnJlY3RdOwot
ICAgIHJldHVybiBXZWJLaXQ6Om1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0KF9jb250
ZW50Vmlldy5nZXQoKSwgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyk7Ci0jZWxzZQotICAgIHJl
dHVybiBOTzsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3Q6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFu
ZGFyZENvbnRlbnRWaWV3XSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAW10pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikK
LSAgICBpZiAoIVtzZWxmIF9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpyZWN0SW5X
ZWJWaWV3Q29vcmRpbmF0ZXNdKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIENHUmVjdCByZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gW3NlbGYgX2NvbnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOnJl
Y3RJbldlYlZpZXdDb29yZGluYXRlc107Ci0KLSAgICBhdXRvIHdlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tXZWJWaWV3PihzZWxmKTsKLSAgICBfcGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3Qo
cmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgW3dlYWtTZWxmLCBjYXB0dXJlZENvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIGNvbnRleHRzKSB7Ci0gICAgICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gZWxlbWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6Y29udGV4dHMuc2l6ZSgpXSk7Ci0KLSAgICAgICAgYXV0byBzdHJv
bmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4
dCA6IGNvbnRleHRzKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250
ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1JlY3QgPSBjb250ZXh0OwotICAgICAgICAgICAgY29udGV4
dFdpdGhXZWJWaWV3Qm91bmRpbmdSZWN0LmJvdW5kaW5nUmVjdCA9IFtzdHJvbmdTZWxmIF9jb252
ZXJ0UmVjdEZyb21Sb290Vmlld0Nvb3JkaW5hdGVzOmNvbnRleHQuYm91bmRpbmdSZWN0XTsKLSAg
ICAgICAgICAgIFtlbGVtZW50cyBhZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRl
eHQgYWxsb2NdIF9pbml0V2l0aFRleHRJbnB1dENvbnRleHQ6Y29udGV4dFdpdGhXZWJWaWV3Qm91
bmRpbmdSZWN0XSkuZ2V0KCldOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FwdHVyZWRDb21wbGV0
aW9uSGFuZGxlcihlbGVtZW50cy5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KIC0gKHZvaWQpX2ZvY3Vz
VGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dENvbnRleHQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggY2Q2MjM0M2UyZDRjNjlkZDdjNGNl
NGY1Zjc2ZTVhZWJiZmViZTY3Zi4uZWJkNTg3ZGUwNzJlMmI1NTE5YjM0N2FlMDExN2UxYjZkY2M4
NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMzUsOCArMzM1LDYgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAt
ICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrOwogLSAodm9pZClfY2xvc2VBbGxNZWRpYVBy
ZXNlbnRhdGlvbnM7CiAKLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0
OihDR1JlY3QpcmVjdDsKLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5w
dXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTUpLCBpb3MoMTMuMCkpOwogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tU
ZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxlbWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1
KSwgaW9zKDEzLjApKTsKIAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRp
b246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAq
ZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKaW5kZXgg
MGYyZDU4YzM1NzM4MTM0ZWQ5MmQ1ODYzNDg5MjQxMWMxNDlhM2Y5YS4uZjI1ZWY3Mzc2MDE3Njdj
MDBkZTg3YWI2ZjM4ODg3N2UwYjk1NzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1Mu
aApAQCAtMjcsNiArMjcsMTAgQEAKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIAorQGNsYXNzIF9X
S1RleHRJbnB1dENvbnRleHQ7CitAY2xhc3MgVUlXS0RvY3VtZW50Q29udGV4dDsKK0BjbGFzcyBV
SVdLRG9jdW1lbnRSZXF1ZXN0OworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nSU9T
KQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0ZXh0Q29udGVu
dFR5cGVGb3JUZXN0aW5nOwpAQCAtNDQsNiArNDgsMTEgQEAKIC0gKHZvaWQpX2Rpc21pc3NGaWxl
UGlja2VyOwogLSAodm9pZClzZWxlY3RGb3JtQWNjZXNzb3J5UGlja2VyUm93OihpbnQpcm93SW5k
ZXg7CiAKKy0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdDsKKy0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJl
Y3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4
dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9h
ZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CisKIC0gKHZvaWQpc2V0VGlt
ZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CiAKIC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmcg
dG9TdHJpbmc6KE5TU3RyaW5nICopb2xkU3RyaW5nIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2
Y2YxNmFjNDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uYjAwYzI2ZmU5MmZkZDlkM2FjZDU4ZmY0
ZDYwZDhhMzQ2ZDJiMWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMjksNyArMjksMTAgQEAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5LmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgogI2ltcG9ydCAiUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNp
bXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SU9TLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKQEAgLTM3LDYgKzQwLDI2IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dl
YlZpZXcgKFdLVGVzdGluZ0lPUykKIAorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBbX2NvbnRl
bnRWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6cmVjdCBjb21wbGV0aW9uSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKKy0gKHZvaWQpX3JlcXVlc3REb2N1bWVudENv
bnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShVSVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
WyhpZDxVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2w+KV9jb250ZW50VmlldyByZXF1ZXN0RG9j
dW1lbnRDb250ZXh0OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJd
OworfQorCistICh2b2lkKV9hZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFS
YW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBbKGlkPFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbD4pX2NvbnRlbnRWaWV3IGFk
anVzdFNlbGVjdGlvbldpdGhEZWx0YTpkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyXTsKK30KKworLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJ
blJlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgcmV0dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRh
YmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3LmdldCgpLCByZWN0KTsKK30KKwogLSAodm9p
ZClrZXlib2FyZEFjY2Vzc29yeUJhck5leHQKIHsKICAgICBbX2NvbnRlbnRWaWV3IGFjY2Vzc29y
eVRhYjpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGU4ZjFiNzMxMDEwYmI5OGMzODdkNTJiODhkMGI3
YjdiM2Q1ZDNhOGEuLjdlOGU4MjIwMGYwNmQ5ZmQ3MDU0MWUwNzAyNTYyNjAwYzA3ZmMxMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKQEAgLTU2NCw2ICs1NjQsOCBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVO
VFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQog
LSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJhd2luZ0Nvb3JkaW5hdG9yOwogI2VuZGlmCiAK
Ky0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICop
KWNvbXBsZXRpb25IYW5kbGVyOworCiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05T
KQogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Oihf
V0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRleHRJbnRl
cmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCA5Y2YzZjlhZTcyNTljNzA3N2M0ZGZjNGEyZTA2ZDYyZjU2ZDMx
MTJkLi42NTFmZDMzNWExZGZjMjQ1YjBiOTMzYzFjMjBjZjIyNWI4ZmZjYjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTUwNTksNiArNTA1OSwyNyBAQCAtIChDR1JlY3QpcmVjdENvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbgogICAgIHJldHVybiBDR1JlY3RaZXJvOwogfQogCistICh2b2lkKV9yZXF1ZXN0
VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxl
cgoreworI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCisgICAgaWYgKCFXZWJLaXQ6Om1heUNv
bnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0KHNlbGYsIHJlY3QpKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKEBbIF0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
X3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QsIFt3ZWFrU2VsZiA9IFdlYWtPYmpD
UHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+JiBjb250ZXh0cykgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQo
KTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8IGNvbnRleHRzLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgYXV0byBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBjb250ZXh0IDogY29udGV4dHMpCisgICAgICAgICAgICBbZWxlbWVudHMg
YWRkT2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBfaW5pdFdpdGhU
ZXh0SW5wdXRDb250ZXh0OmNvbnRleHRdKS5nZXQoKV07CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKKyAgICB9KTsKK30KKwogI2lmIFVTRShURVhUX0lOVEVSQUNU
SU9OX0FERElUSU9OUykKIAogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0
SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAxODBmY2MxNjkwNzdmMGUy
ZTEyMWM0OWMzYjk5ODY4Zjg2NDBlODQuLjk0Mjc4ZWU0ZTEzYWU2MGIzZjRkNjU1ZDlmZWQzNTVm
MzU2MzJhN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNC0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dCB0byBXS0NvbnRlbnRWaWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzYxNjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IG5vdyB0aGF0IC1fcmVxdWVzdFRleHRJbnB1dENv
bnRleHRzSW5SZWN0IGhhcyBtb3ZlZCBmcm9tIFdLV2ViVmlldyB0byBXS0NvbnRlbnRWaWV3Lgor
ICAgICAgICBJIGV4cG9zZSBuZXcgdGVzdGluZy1vbmx5IFdLV2ViVmlldyBTUEkgdG8gYWNjZXNz
IGl0IG9uIHRoZSBjb250ZW50IHZpZXcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW06CisgICAgICAgICgtW1Rlc3RX
S1dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3REb2N1bWVudENvbnRleHQ6XSk6CisgICAgICAg
ICgtW1Rlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0
SW5wdXRDb250ZXh0Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVl
c3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJW
aWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6XSk6IERlbGV0ZWQuCisKIDIw
MjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRy
YWNrIGVkaXRhYmxlIGVsZW1lbnRzIG9uIHNjcmVlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0
Lm1tCmluZGV4IGEzOWQwZjNmZGM5MDI4NzliYjdjOWI0OWQ5NWUwOGU1NjZjZjlhY2QuLjlmOThi
ODk0YzNjYTgyMTQyNzIyYWU1YjQzODAyZGFmODI1NTUyZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGlu
Z0NvbnRleHQubW0KQEAgLTI5LDEyICsyOSw5IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJUZXN0Q29jb2EuaCIKLSNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgi
Ci0jaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KLSNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tUZXh0SW5wdXRDb250ZXh0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvVmVjdG9yLmg+CkBAIC00NywxMSArNDQsNiBAQAogICAgIEVYUEVDVF9UUlVFKFth
Y3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pOyBcCiAgICAg
RVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkLCBbKE5TQXR0cmlidXRlZFN0cmluZyAqKWFjdHVhbCBz
dHJpbmddKTsKIAotQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3ICgpCi0tICh2b2lkKXJlcXVlc3RE
b2N1bWVudENvbnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShVSVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVy
OwotLSAodm9pZClhZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7Ci1AZW5k
Ci0KIHN0YXRpYyBVSVdLRG9jdW1lbnRSZXF1ZXN0ICptYWtlUmVxdWVzdChVSVdLRG9jdW1lbnRS
ZXF1ZXN0RmxhZ3MgZmxhZ3MsIFVJVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBOU0ludGVn
ZXIgZ3JhbnVsYXJpdHlDb3VudCwgQ0dSZWN0IGRvY3VtZW50UmVjdCA9IENHUmVjdFplcm8sIGlk
IDxOU0NvcHlpbmc+IGlucHV0RWxlbWVudElkZW50aWZpZXIgPSBuaWwpCiB7CiAgICAgYXV0byBy
ZXF1ZXN0ID0gYWRvcHROUyhbW1VJV0tEb2N1bWVudFJlcXVlc3QgYWxsb2NdIGluaXRdKTsKQEAg
LTEzMCw3ICsxMjIsNyBAQCAtIChVSVdLRG9jdW1lbnRDb250ZXh0ICopc3luY2hyb25vdXNseVJl
cXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlcwogewogICAgIF9fYmxvY2sg
Ym9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIF9fYmxvY2sgUmV0YWluUHRyPFVJV0tEb2N1bWVu
dENvbnRleHQ+IHJlc3VsdDsKLSAgICBbW3NlbGYgd2tDb250ZW50Vmlld10gcmVxdWVzdERvY3Vt
ZW50Q29udGV4dDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oVUlXS0RvY3VtZW50Q29udGV4
dCAqY29udGV4dCkgeworICAgIFtzZWxmIF9yZXF1ZXN0RG9jdW1lbnRDb250ZXh0OnJlcXVlc3Qg
Y29tcGxldGlvbkhhbmRsZXI6XihVSVdLRG9jdW1lbnRDb250ZXh0ICpjb250ZXh0KSB7CiAgICAg
ICAgIHJlc3VsdCA9IGNvbnRleHQ7CiAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XTsK
QEAgLTE0MSw3ICsxMzMsNyBAQCAtIChVSVdLRG9jdW1lbnRDb250ZXh0ICopc3luY2hyb25vdXNs
eVJlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tEb2N1bWVudFJlcXVlcwogLSAodm9pZClzeW5j
aHJvbm91c2x5QWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKXJhbmdlCiB7CiAgICAg
X19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgW1tzZWxmIHdrQ29udGVudFZpZXdd
IGFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpyYW5nZSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgIFtzZWxmIF9hZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6cmFuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQu
bW0KaW5kZXggYmZhYTk4NTA4YzNlNTFjN2M3YWI4MGUxOTdkMGRmMTk2YTczMDc4NC4uN2I0ZGI2
NWJkNjE2NGVmNTQ2NzRmMjQ0MzY4YThjODhmZjUzNDM3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5w
dXRDb250ZXh0Lm1tCkBAIC0yNSwxNyArMjUsMTggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdENvY29hLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJl
bmNlc1JlZlByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+Ci0j
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0SW5wdXRDb250ZXh0Lmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFN5
bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3
IChTeW5jaHJvbm91c1RleHRJbnB1dENvbnRleHQpCiAKIC0gKE5TQXJyYXk8X1dLVGV4dElucHV0
Q29udGV4dCAqPiAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6
KENHUmVjdClyZWN0CiB7CkBAIC0yNjMsMyArMjY0LDUgQEAgVEVTVChSZXF1ZXN0VGV4dElucHV0
Q29udGV4dCwgRElTQUJMRURfRm9jdXNUZXh0SW5wdXRDb250ZXh0KQogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIiJdOwogICAgIEVYUEVDVF9GQUxTRShbd2ViVmll
dyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OnRleHRBcmVhLmdldCgpXSk7CiB9
CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlNmU5OTI1MDI4ODBm
NzVhN2U5NWU5NWE4NzBjNjg5NDhjNDc1NjcuLjMyMjI3YmI1NjgxYTNkNzFhMGFiMWQ2YmUyOGE5
ODRiMDc0Mzk2Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNC0xMiAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5w
dXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRWaWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAz
OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjU2OTMxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IGFuZCBleHBlY3RlZCBy
ZXN1bHRzIG5vdyB0aGF0IFVJU2NyaXB0Q29udHJvbGxlci5tYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdCgpCisgICAgICAgIGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0IHRvIGJlIGluIGNv
bnRlbnQgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgSSByZXBsYWNlZCBvbmUgc3ViLXRlc3Qgb2Yg
YSByZWN0IHByZS1zY3JvbGwgd2l0aCBhbm90aGVyIHRoYXQgdGVzdHMgdGhlIGxvY2F0aW9uCisg
ICAgICAgIG9mIGEgcmVjdCB0aGF0IHdpbGwgaGF2ZSBlZGl0YWJsZSBlbGVtZW50cyBhZnRlciBz
Y3JvbGwuIFRoZSBwdXJwb3NlIG9mIHRoYXQgc3ViLXRlc3QKKyAgICAgICAgaGFzbid0IGNoYW5n
ZWQsIGJ1dCBpdCBub3cgbWFrZXMgdGhlIHN1Yi10ZXN0cycgcmVjdHMgc3ltbWV0cmljIGZvciBi
ZWZvcmUgYW5kIGFmdGVyCisgICAgICAgIHNjcm9sbC4gSSBhbHNvIGFkZGVkIGRlYnVnKCkgc3Rh
dGVtZW50cyB0byBkZW1hcmNhdGUgdGhlIGJlZm9yZSBzY3JvbGwgYW5kIGFmdGVyIHNjcm9sbAor
ICAgICAgICBzdWItdGVzdHMgaW4gdGhlIHJlc3VsdHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdW5k
ZXJzdGFuZCB3aGF0IHRoaXMgdGVzdCBmaWxlIGlzIHRlc3RpbmcuCisKKyAgICAgICAgKiBlZGl0
aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbDoKKwogMjAyMC0w
NC0wOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGxh
eW91dCB0ZXN0cyBhZnRlciByMjU5NzYyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQKaW5k
ZXggODQ0NTMwZGVhN2FlYzMxYmVhZGYxNGI2ZWQ0ZDNhZjdjMTMwYWNlOS4uMjJjY2ZkOGU0MTE5
MTUwNTQxYjVhOGIzMmJjNzYxZWIzMGExMTJhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVk
LnR4dApAQCAtMiwxMCArMiwxMyBAQCBIaXQgdGVzdCBmaXhlZCBwb3NpdGlvbmVkIGVkaXRhYmxl
IGVsZW1lbnQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAorQmVmb3JlIHNjcm9sbDoK
K1BBU1MgKHggPSAwLCB5ID0gMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBl
ZGl0YWJsZSBlbGVtZW50cy4KK1BBU1MgKHggPSAwLCB5ID0gMjAwLCB3aWR0aCA9IDIwMCwgaGVp
Z2h0ID0gNDApIGRvZXMgbm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVudHMuCiAKLVBBU1MgKHgg
PSAwLCB5ID0gMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBl
bGVtZW50cy4KLVBBU1MgKHggPSAwLCB5ID0gMTAwLCB3aWR0aCA9IDUwLCBoZWlnaHQgPSA1MCkg
ZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KLVBBU1MgKHggPSAwLCB5ID0gMCwg
d2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBlbGVtZW50cy4KK0Fm
dGVyIHNjcm9sbDoKK1BBU1MgKHggPSAwLCB5ID0gMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQw
KSBkb2VzIG5vdCBjb250YWluIGVkaXRhYmxlIGVsZW1lbnRzLgorUEFTUyAoeCA9IDAsIHkgPSAy
MDAsIHdpZHRoID0gMjAwLCBoZWlnaHQgPSA0MCkgY29udGFpbnMgZWRpdGFibGUgZWxlbWVudHMu
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhl
ZC5odG1sCmluZGV4IDYyYWFhNWIzMGJmYmQzZWY1ZDJkOTc4OGYyMzM5N2VjNWM4MDQ1ZDguLmJm
MzAwMzQzOTFlMWIxMTk1OGVmM2E2YzczMDQ5ZGM4MWE4ODM0NjQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbApA
QCAtMjksMTIgKzI5LDE3IEBAIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgZGVidWcoIkJlZm9yZSBzY3JvbGw6Iik7CiAgICAgYXdhaXQgc2hv
dWxkSGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7Ci0gICAgYXdhaXQg
c2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMTAwLCA1MCwgNTApOworICAg
IGF3YWl0IHNob3VsZE5vdEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDIwMCwgMjAwLCA0
MCk7CiAKLSAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMjAwKTsKIAotICAgIGF3YWl0IHNob3VsZEhh
dmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOworICAgIGxldCBuZXdZT2Zm
c2V0ID0gMjAwOworICAgIHdpbmRvdy5zY3JvbGxUbygwLCBuZXdZT2Zmc2V0KTsKKworICAgIGRl
YnVnKCI8YnI+QWZ0ZXIgc2Nyb2xsOiIpOworICAgIGF3YWl0IHNob3VsZE5vdEhhdmVFZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOworICAgIGF3YWl0IHNob3VsZEhhdmVFZGl0
YWJsZUVsZW1lbnRzSW5SZWN0KDAsIG5ld1lPZmZzZXQsIDIwMCwgNDApOwogCiAgICAgbGV0IHRl
c3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWluZXIiKTsK
ICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396349</attachid>
            <date>2020-04-13 15:52:52 -0700</date>
            <delta_ts>2020-04-14 11:16:38 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-210398-20200413155251.patch</filename>
            <type>text/plain</type>
            <size>22327</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwYzEzNDgyZTU0NDI5NjEy
OGEyYzU0MmY5MTk0MDBmYTUzMDdmMDguLjJlMWI4YzM5ZDFlYWFkMjJjNWUyNTNmMmVmZWQ0MTZk
MWEyYzA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IERlbGV0ZWQ7IG1vdmVkIHRvIFdLV2ViVmlld1Rlc3RpbmdJT1MubW0u
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkOyBtb3ZlZCB0byBXS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVx
dWVzdERvY3VtZW50Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAg
ICgtW1dLV2ViVmlldyBfYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9tYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdDpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcubW0gYW5kIHNpbXBsaWZpZWQuCisg
ICAgICAgIFRoaXMgY2hhbmdlIGFsc28gbWFrZXMgdGhlIGNvZGUgbW9yZSBjb3JyZWN0IGJ5IHJl
bW92aW5nIGFuIGltcGxpY2l0IGFzc3VtcHRpb24gdGhhdCB0aGUKKyAgICAgICAgV0tDb250ZW50
VmlldyBpcyBsb2NhdGVkIGF0IHRoZSBvcmlnaW4gaW4gVGVzdFdlYktpdEFQSSdzIHRlc3Qgdmll
dy4gVGhvdWdoIG5vdyBoaXQtdGVzdC1maXhlZC5odG1sCisgICAgICAgIG5lZWRzIHRvIGJlIHVw
ZGF0ZWQgdG8gYWNjb3VudCBmb3Igc2Nyb2xsIGFzIHdlbGwgYXMgYW55IGZ1dHVyZSB0ZXN0IGJl
Y2F1c2UgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0
KCkKKyAgICAgICAgbm93IGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0IHRvIGJlIGluIGNvbnRlbnQg
Y29vcmRpbmF0ZXMuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQg
c2ltcGxpZmllZC4KKwogMjAyMC0wNC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHRleHQgaW50ZXJhY3Rpb24gZGVsZWdhdGUgZnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDg0ZThhMjZhZTRm
ZjYyNjk0ZDEyZjQwYzcxMjI5OGE3MzdjYjU0MTMuLmQ5NWE1Mzc4NzNkMjNjOTFmNDlkOGY2ZDZl
NmI4Mjg3YTI1NjBjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCkBAIC02ODAsNyArNjgwLDEzIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tH
ZXN0dXJlVHlwZSkgewogQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFkb25seSkgQ0dG
bG9hdCBfbWF4aW11bUJlYW1TbmFwcGluZ0xlbmd0aDsKIEBlbmQKIAorQGNsYXNzIFVJV0tEb2N1
bWVudFJlcXVlc3Q7CitAY2xhc3MgVUlXS0RvY3VtZW50Q29udGV4dDsKKwogQHByb3RvY29sIFVJ
V0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbAorLSAodm9pZClhZGp1c3RTZWxlY3Rpb25XaXRoRGVs
dGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXJlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tE
b2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdL
RG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZWxlY3RQb3Np
dGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0OihVSVdLRG9jdW1l
bnRSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0RvY3Vt
ZW50Q29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9u
V2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBl
KWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlOwog
LSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2Vs
ZWN0aW9uVG91Y2g6KFVJV0tTZWxlY3Rpb25Ub3VjaCl0b3VjaCBiYXNlSXNTdGFydDooQk9PTCli
YXNlSXNTdGFydCB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylmbGFnczsKIC0gKHZvaWQp
Y2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoZXNGcm9tOihDR1BvaW50KWZyb20gdG86KENHUG9pbnQp
dG8gd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6KFVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlnZXN0dXJlU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTFkYTVmYTRjMDk2ZjIxMWYz
ODc3MjM5YjBiNjVjMDc0YjkyMzVhLi41OTM1Yzc5ODRmNjNjZjZmMzBhZGFkZWE0MDFlMDEwZWE1
ZmE1MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE0OSw3ICsxNDksNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgiCkBAIC0yMDcxLDczICsyMDcwLDYgQEAgLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZQogICAgIH0KIH0KIAotLSAoQ0dSZWN0KV9jb252ZXJ0UmVjdEZy
b21Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcwot
ewotICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRhbGsgYWJvdXQgV0tXZWJW
aWV3IGNvb3JkaW5hdGVzIGluIGEgY29uc2lzdGVudCBhbmQgY3Jvc3MtcGxhdGZvcm0gd2F5Lgot
ICAgIC8vIEN1cnJlbnRseSwgbmVpdGhlciAicm9vdCB2aWV3IiBub3IgIndpbmRvdyIgbWVhbiAi
V0tXZWJWaWV3IGNvb3JkaW5hdGVzIiBvbiBib3RoIHBsYXRmb3Jtcy4KLSAgICAvLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNjQ5IGFuZCByZWxhdGVkIGJ1Z3MuCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29udmVydFJlY3Q6cmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotI2Vsc2UKLSAgICByZXR1
cm4gcmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKLSNlbmRpZgotfQotCi0tIChDR1JlY3QpX2Nv
bnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3Jk
aW5hdGVzCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZXR1cm4gW3NlbGYgY29u
dmVydFJlY3Q6cmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOwotI2Vsc2UKLSAgICByZXR1cm4gcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzOwotI2VuZGlm
Ci19Ci0KLS0gKEJPT0wpX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OihDR1JlY3Qp
cmVjdAotewotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkKLSAgICAgICAg
cmV0dXJuIE5POwotI2VuZGlmCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdF07Ci0gICAgcmV0
dXJuIFdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoX2NvbnRlbnRWaWV3
LmdldCgpLCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDoo
Q0dSZWN0KXJlY3RJbldlYlZpZXdDb29yZGluYXRlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29u
dGVudFZpZXddKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQotICAgIGlm
ICghW3NlbGYgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0OnJlY3RJbldlYlZpZXdD
b29yZGluYXRlc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgQ0dSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6cmVjdEluV2Vi
Vmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIGF1dG8gd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dl
YlZpZXc+KHNlbGYpOwotICAgIF9wYWdlLT50ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBbd2Vha1NlbGYsIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiYgY29udGV4dHMpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb250ZXh0cy5zaXplKCldKTsKLQotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0IDogY29u
dGV4dHMpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICBjb250ZXh0V2l0aFdl
YlZpZXdCb3VuZGluZ1JlY3QuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6Y29udGV4dC5ib3VuZGluZ1JlY3RdOwotICAgICAgICAg
ICAgW2VsZW1lbnRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDpjb250ZXh0V2l0aFdlYlZpZXdCb3VuZGluZ1Jl
Y3RdKS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25IYW5k
bGVyKGVsZW1lbnRzLmdldCgpKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZm9jdXNUZXh0SW5w
dXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDYyMzQzZTJkNGM2OWRkN2M0Y2U0ZjVmNzZl
NWFlYmJmZWJlNjdmLi5lYmQ1ODdkZTA3MmUyYjU1MTliMzQ3YWUwMTE3ZTFiNmRjYzg0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTMzNSw4ICszMzUsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQp
X3Jlc3VtZUFsbE1lZGlhUGxheWJhY2s7CiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczsKIAotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0OwotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRFbGVtZW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogCiAtICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAppbmRleCAwZjJkNThj
MzU3MzgxMzRlZDkyZDU4NjM0ODkyNDExYzE0OWEzZjlhLi5mMjVlZjczNzYwMTc2N2MwMGRlODdh
YjZmMzg4ODc3ZTBiOTU3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCkBAIC0y
Nyw2ICsyNywxMCBAQAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCitAY2xhc3MgX1dLVGV4dElu
cHV0Q29udGV4dDsKK0BjbGFzcyBVSVdLRG9jdW1lbnRDb250ZXh0OworQGNsYXNzIFVJV0tEb2N1
bWVudFJlcXVlc3Q7CisKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmdJT1MpCiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKnRleHRDb250ZW50VHlwZUZv
clRlc3Rpbmc7CkBAIC00NCw2ICs0OCwxMSBAQAogLSAodm9pZClfZGlzbWlzc0ZpbGVQaWNrZXI7
CiAtICh2b2lkKXNlbGVjdEZvcm1BY2Nlc3NvcnlQaWNrZXJSb3c6KGludClyb3dJbmRleDsKIAor
LSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0Owor
LSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9yZXF1ZXN0RG9jdW1lbnRDb250ZXh0OihVSVdL
RG9jdW1lbnRSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlX
S0RvY3VtZW50Q29udGV4dCAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FkanVzdFNl
bGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKKwogLSAodm9pZClzZXRUaW1lUGlja2Vy
VmFsdWVUb0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKIAog
LSAodm9pZClhcHBseUF1dG9jb3JyZWN0aW9uOihOU1N0cmluZyAqKW5ld1N0cmluZyB0b1N0cmlu
ZzooTlNTdHJpbmcgKilvbGRTdHJpbmcgd2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQppbmRleCAzYjJhMDFlYTZjZjE2YWM0
NjQ3NmQ2MjM1MDBlNWFmNjQ4YzA3Nzk1Li5iMDBjMjZmZTkyZmRkOWQzYWNkNThmZjRkNjBkOGEz
NDZkMmIxYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC0yOSw3ICsyOSwxMCBAQAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgpAQCAtMzcsNiArNDAsMjYgQEAKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAo
V0tUZXN0aW5nSU9TKQogCistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6
KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElu
cHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtfY29udGVudFZpZXcg
X3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpyZWN0IGNvbXBsZXRpb25IYW5kbGVyOmNv
bXBsZXRpb25IYW5kbGVyXTsKK30KKworLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4dDoo
VUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBbKGlkPFVJ
V0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbD4pX2NvbnRlbnRWaWV3IHJlcXVlc3REb2N1bWVudENv
bnRleHQ6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisK
Ky0gKHZvaWQpX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IFsoaWQ8VUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sPilfY29udGVudFZpZXcgYWRqdXN0U2Vs
ZWN0aW9uV2l0aERlbHRhOmRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOworfQorCistIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDoo
Q0dSZWN0KXJlY3QKK3sKKyAgICByZXR1cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdChfY29udGVudFZpZXcuZ2V0KCksIHJlY3QpOworfQorCiAtICh2b2lkKWtleWJv
YXJkQWNjZXNzb3J5QmFyTmV4dAogewogICAgIFtfY29udGVudFZpZXcgYWNjZXNzb3J5VGFiOllF
U107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgKaW5kZXggZThmMWI3MzEwMTBiYjk4YzM4N2Q1MmI4OGQwYjdiN2IzZDVk
M2E4YS4uN2U4ZTgyMjAwZjA2ZDlmZDcwNTQxZTA3MDI1NjI2MDBjMDdmYzExYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaApAQCAtNTY0LDYgKzU2NCw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19B
Q1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChXS0Ry
YXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7CiAjZW5kaWYKIAorLSAodm9p
ZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxl
dGlvbkhhbmRsZXI7CisKICNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCiAtICh2
b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJ
bnB1dENvbnRleHQgKiljb250ZXh0OwogLSAodm9pZClfZGlkRmluaXNoVGV4dEludGVyYWN0aW9u
SW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDljZjNmOWFlNzI1OWM3MDc3YzRkZmM0YTJlMDZkNjJmNTZkMzExMmQuLjY1
MWZkMzM1YTFkZmMyNDViMGI5MzNjMWMyMGNmMjI1YjhmZmNiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNTA1OSw2ICs1MDU5LDI3IEBAIC0gKENHUmVjdClyZWN0Q29udGFpbmluZ0NhcmV0U2VsZWN0
aW9uCiAgICAgcmV0dXJuIENHUmVjdFplcm87CiB9CiAKKy0gKHZvaWQpX3JlcXVlc3RUZXh0SW5w
dXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7Cisj
aWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKKyAgICBpZiAoIVdlYktpdDo6bWF5Q29udGFpbkVk
aXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBfcGFnZS0+
dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIGNv
bnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBhZGRPYmpl
Y3Q6YWRvcHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRleHRJbnB1
dENvbnRleHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZWxl
bWVudHMuZ2V0KCkpOworICAgIH0pOworfQorCiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURE
SVRJT05TKQogCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDE4MGZjYzE2OTA3N2YwZTJlMTIxYzQ5
YzNiOTk4NjhmODY0MGU4NC4uOTQyNzhlZTRlMTNhZTYwYjNmNGQ2NTVkOWZlZDM1NWYzNTYzMmE3
YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIwLTA0LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IHRvIFdL
Q29udGVudFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM5OAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjE2NTY5MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIHRlc3Qgbm93IHRoYXQgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3QgaGFzIG1vdmVkIGZyb20gV0tXZWJWaWV3IHRvIFdLQ29udGVudFZpZXcuCisgICAgICAg
IEkgZXhwb3NlIG5ldyB0ZXN0aW5nLW9ubHkgV0tXZWJWaWV3IFNQSSB0byBhY2Nlc3MgaXQgb24g
dGhlIGNvbnRlbnQgdmlldy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmll
dyBzeW5jaHJvbm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlldyBzeW5jaHJvbm91c2x5QWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENv
bnRleHQubW06CisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJ
bnB1dENvbnRleHRzSW5SZWN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgc3lu
Y2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpdKTogRGVsZXRlZC4KKwogMjAyMC0wNC0w
OCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVHJhY2sgZWRp
dGFibGUgZWxlbWVudHMgb24gc2NyZWVuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KaW5k
ZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNmOWFjZC4uOWY5OGI4OTRjM2Nh
ODIxNDI3MjJhZTViNDM4MDJkYWY4MjU1NTJlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4
dC5tbQpAQCAtMjksMTIgKzI5LDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRlc3RDb2NvYS5oIgotI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBv
cnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Rl
eHRJbnB1dENvbnRleHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KQEAgLTQ3LDExICs0NCw2IEBACiAgICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBp
c0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSk7IFwKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXhwZWN0ZWQsIFsoTlNBdHRyaWJ1dGVkU3RyaW5nICopYWN0dWFsIHN0cmluZ10p
OwogCi1AaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKLS0gKHZvaWQpcmVxdWVzdERvY3VtZW50
Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2
b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKLUBlbmQKLQogc3Rh
dGljIFVJV0tEb2N1bWVudFJlcXVlc3QgKm1ha2VSZXF1ZXN0KFVJV0tEb2N1bWVudFJlcXVlc3RG
bGFncyBmbGFncywgVUlUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE5TSW50ZWdlciBncmFu
dWxhcml0eUNvdW50LCBDR1JlY3QgZG9jdW1lbnRSZWN0ID0gQ0dSZWN0WmVybywgaWQgPE5TQ29w
eWluZz4gaW5wdXRFbGVtZW50SWRlbnRpZmllciA9IG5pbCkKIHsKICAgICBhdXRvIHJlcXVlc3Qg
PSBhZG9wdE5TKFtbVUlXS0RvY3VtZW50UmVxdWVzdCBhbGxvY10gaW5pdF0pOwpAQCAtMTMwLDcg
KzEyMiw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91c2x5UmVxdWVzdERv
Y3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiB7CiAgICAgX19ibG9jayBib29sIGZp
bmlzaGVkID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8VUlXS0RvY3VtZW50Q29udGV4
dD4gcmVzdWx0OwotICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSByZXF1ZXN0RG9jdW1lbnRDb250
ZXh0OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihVSVdLRG9jdW1lbnRDb250ZXh0ICpjb250
ZXh0KSB7CisgICAgW3NlbGYgX3JlcXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVzdCBjb21wbGV0
aW9uSGFuZGxlcjpeKFVJV0tEb2N1bWVudENvbnRleHQgKmNvbnRleHQpIHsKICAgICAgICAgcmVz
dWx0ID0gY29udGV4dDsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMTQx
LDcgKzEzMyw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91c2x5UmVxdWVz
dERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiAtICh2b2lkKXN5bmNocm9ub3Vz
bHlBZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpcmFuZ2UKIHsKICAgICBfX2Jsb2Nr
IGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBbW3NlbGYgd2tDb250ZW50Vmlld10gYWRqdXN0
U2VsZWN0aW9uV2l0aERlbHRhOnJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW3Nl
bGYgX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpyYW5nZSBjb21wbGV0aW9uSGFuZGxlcjpeKCkg
ewogICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQppbmRl
eCBiZmFhOTg1MDhjM2U1MWM3YzdhYjgwZTE5N2QwZGYxOTZhNzMwNzg0Li43YjRkYjY1YmQ2MTY0
ZWY1NDY3NGYyNDQzNjhhOGM4OGZmNTM0Mzc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRl
eHQubW0KQEAgLTI1LDE3ICsyNSwxOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUZXN0Q29jb2EuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVz
dGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoU3luY2hyb25v
dXNUZXh0SW5wdXRDb250ZXh0KQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKFN5bmNo
cm9ub3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0
ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0
KXJlY3QKIHsKQEAgLTI2MywzICsyNjQsNSBAQCBURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
LCBESVNBQkxFRF9Gb2N1c1RleHRJbnB1dENvbnRleHQpCiAgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0KCldKTsKIH0KKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGU2ZTk5MjUwMjg4MGY3NWE3ZTk1
ZTk1YTg3MGM2ODk0OGM0NzU2Ny4uMzIyMjdiYjU2ODFhM2Q3MWEwYWIxZDZiZTI4YTk4NGIwNzQz
OTZjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTEyICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIC1fcmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0IHRvIFdLQ29udGVudFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM5OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgYW5kIGV4cGVjdGVkIHJlc3VsdHMg
bm93IHRoYXQgVUlTY3JpcHRDb250cm9sbGVyLm1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5S
ZWN0KCkKKyAgICAgICAgZXhwZWN0cyB0aGUgcGFzc2VkIHJlY3QgdG8gYmUgaW4gY29udGVudCBj
b29yZGluYXRlcy4KKworICAgICAgICBJIHJlcGxhY2VkIG9uZSBzdWItdGVzdCBvZiBhIHJlY3Qg
cHJlLXNjcm9sbCB3aXRoIGFub3RoZXIgdGhhdCB0ZXN0cyB0aGUgbG9jYXRpb24KKyAgICAgICAg
b2YgYSByZWN0IHRoYXQgd2lsbCBoYXZlIGVkaXRhYmxlIGVsZW1lbnRzIGFmdGVyIHNjcm9sbC4g
VGhlIHB1cnBvc2Ugb2YgdGhhdCBzdWItdGVzdAorICAgICAgICBoYXNuJ3QgY2hhbmdlZCwgYnV0
IGl0IG5vdyBtYWtlcyB0aGUgc3ViLXRlc3RzJyByZWN0cyBzeW1tZXRyaWMgZm9yIGJlZm9yZSBh
bmQgYWZ0ZXIKKyAgICAgICAgc2Nyb2xsLiBJIGFsc28gYWRkZWQgZGVidWcoKSBzdGF0ZW1lbnRz
IHRvIGRlbWFyY2F0ZSB0aGUgYmVmb3JlIHNjcm9sbCBhbmQgYWZ0ZXIgc2Nyb2xsCisgICAgICAg
IHN1Yi10ZXN0cyBpbiB0aGUgcmVzdWx0cyB0byBtYWtlIGl0IGVhc2llciB0byB1bmRlcnN0YW5k
IHdoYXQgdGhpcyB0ZXN0IGZpbGUgaXMgdGVzdGluZy4KKworICAgICAgICAqIGVkaXRpbmcvZWRp
dGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0
aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5odG1sOgorCiAyMDIwLTA0LTA5ICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGF5b3V0IHRl
c3RzIGFmdGVyIHIyNTk3NjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFi
bGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dAppbmRleCA4NDQ1
MzBkZWE3YWVjMzFiZWFkZjE0YjZlZDRkM2FmN2MxMzBhY2U5Li4yMmNjZmQ4ZTQxMTkxNTA1NDFi
NWE4YjMyYmM3NjFlYjMwYTExMmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2Vk
aXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0ZWQudHh0CkBA
IC0yLDEwICsyLDEzIEBAIEhpdCB0ZXN0IGZpeGVkIHBvc2l0aW9uZWQgZWRpdGFibGUgZWxlbWVu
dC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCitCZWZvcmUgc2Nyb2xsOgorUEFTUyAo
eCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxl
IGVsZW1lbnRzLgorUEFTUyAoeCA9IDAsIHkgPSAyMDAsIHdpZHRoID0gMjAwLCBoZWlnaHQgPSA0
MCkgZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KIAotUEFTUyAoeCA9IDAsIHkg
PSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRz
LgotUEFTUyAoeCA9IDAsIHkgPSAxMDAsIHdpZHRoID0gNTAsIGhlaWdodCA9IDUwKSBkb2VzIG5v
dCBjb250YWluIGVkaXRhYmxlIGVsZW1lbnRzLgotUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9
IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRzLgorQWZ0ZXIgc2Ny
b2xsOgorUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGRvZXMg
bm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVudHMuCitQQVNTICh4ID0gMCwgeSA9IDIwMCwgd2lk
dGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBlbGVtZW50cy4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLmh0bWwK
aW5kZXggNjJhYWE1YjMwYmZiZDNlZjVkMmQ5Nzg4ZjIzMzk3ZWM1YzgwNDVkOC4uYmYzMDAzNDM5
MWUxYjExOTU4ZWYzYTZjNzMwNDlkYzgxYTg4MzQ2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5odG1sCkBAIC0yOSwx
MiArMjksMTcgQEAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBkZWJ1ZygiQmVmb3JlIHNjcm9sbDoiKTsKICAgICBhd2FpdCBzaG91bGRIYXZl
RWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAwLCAyMDAsIDQwKTsKLSAgICBhd2FpdCBzaG91bGRO
b3RIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAxMDAsIDUwLCA1MCk7CisgICAgYXdhaXQg
c2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMjAwLCAyMDAsIDQwKTsKIAot
ICAgIHdpbmRvdy5zY3JvbGxUbygwLCAyMDApOwogCi0gICAgYXdhaXQgc2hvdWxkSGF2ZUVkaXRh
YmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgbGV0IG5ld1lPZmZzZXQgPSAy
MDA7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIG5ld1lPZmZzZXQpOworCisgICAgZGVidWcoIjxi
cj5BZnRlciBzY3JvbGw6Iik7CisgICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVu
dHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgYXdhaXQgc2hvdWxkSGF2ZUVkaXRhYmxlRWxl
bWVudHNJblJlY3QoMCwgbmV3WU9mZnNldCwgMjAwLCA0MCk7CiAKICAgICBsZXQgdGVzdENvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpOwogICAgIGRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396441</attachid>
            <date>2020-04-14 11:16:40 -0700</date>
            <delta_ts>2020-04-14 11:27:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200414111639.patch</filename>
            <type>text/plain</type>
            <size>24340</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5NTIyYzk2ZjViNTI2ZTdh
ZTljZmQ0MmNhNzkwZDg4YTNmYTZmZDYuLmY3ZjQ2NTZkYTg1NzJlMGU0OWZmNmJiYmJmYzRjMjdl
NzM0NDQ0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMDQtMTQgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb252ZXJ0
UmVjdEZyb21Sb290Vmlld0Nvb3JkaW5hdGVzOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NvbnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0Ol0pOiBE
ZWxldGVkOyBtb3ZlZCB0byBXS1dlYlZpZXdUZXN0aW5nSU9TLm1tLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpd
KTogRGVsZXRlZDsgbW92ZWQgdG8gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6IEFkZGVkLiBUdXJucyBhcm91bmQgYW5kCisgICAgICAgIGNhbGxzIHRoZSBmdW5jdGlv
biBvZiB0aGUgc2FtZSBuYW1lIG9uIHRoZSBXS0NvbnRlbnRWaWV3LiBJdCB0YWtlcyBjYXJlIHRv
IGNvbnZlcnQgdGhlIHNwZWNpZmllZAorICAgICAgICByZWN0IGZyb20gV0tXZWJWaWV3IGNvb3Jk
aW5hdGVzIHRvIFdLQ29udGVudFZpZXcgY29vcmRpbmF0ZXMgYW5kIGZpeGVzIHVwIHRoZSBib3Vu
ZGluZyByZWN0cworICAgICAgICBmb3IgdGhlIHJldHVybmVkIGNvbnRleHRzIHRvIGJlIGluIFdL
V2ViVmlldyBjb29yZGluYXRlcy4gVGhpcyBrZWVwcyBleGlzdGluZ3MgdGVzdHMgcGFzc2luZwor
ICAgICAgICBhcyBtZWtlcyB1c2luZyB0aGlzIGZ1bmN0aW9uIGludHVpdGl2ZSBzaW5jZSBjYWxs
ZXJzIHNwZWNpZnkgYW5kIGdldCByZWN0cyBpbiBXS1dlYlZpZXcgY29vcmRpbmF0ZXMuCisgICAg
ICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdERvY3VtZW50Q29udGV4dDpjb21wbGV0aW9uSGFuZGxl
cjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfYWRqdXN0U2VsZWN0aW9uV2l0aERl
bHRhOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9t
YXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcu
bW0uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmll
ZC4KKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNw
b25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNmY2YmFmYWQz
NGFmOTgwNDNmNjU5YzJkZGY1MWU5NGVmZmJjM2FjZC4uMDgxMDlmNDVkNDkzNTk2M2YxN2NmOGFi
MTZiMWNlNTJjM2RiMjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmgKQEAgLTY5Myw3ICs2OTMsMTMgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlX
S0dlc3R1cmVUeXBlKSB7CiBAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBD
R0Zsb2F0IF9tYXhpbXVtQmVhbVNuYXBwaW5nTGVuZ3RoOwogQGVuZAogCitAY2xhc3MgVUlXS0Rv
Y3VtZW50UmVxdWVzdDsKK0BjbGFzcyBVSVdLRG9jdW1lbnRDb250ZXh0OworCiBAcHJvdG9jb2wg
VUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sCistICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhE
ZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlX
S0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJ
V0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNlbGVjdFBv
c2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1
bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLRG9j
dW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZCljaGFuZ2VTZWxlY3Rp
b25XaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5
cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGU7
CiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhT
ZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGJhc2VJc1N0YXJ0OihCT09M
KWJhc2VJc1N0YXJ0IHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzOwogLSAodm9p
ZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206KENHUG9pbnQpZnJvbSB0bzooQ0dQb2lu
dCl0byB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZToo
VUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDcwOGI0OTZiN2UxOWEzMGM5
YjAyYTRlMGU5ZmJkYzUyMTA3NWEwYTAuLmYzZGU2ZTM4ODk5YzU4N2JhMjE4YTFkODI0YTk5MTI1
ZWM0OGVlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMTUwLDcgKzE1MCw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgotI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaCIKQEAgLTIwNzIsNzMgKzIwNzEsNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVu
dFByb2Nlc3NBbmRSZXNldFN0YXRlCiAgICAgfQogfQogCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
Ci17Ci0gICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gdGFsayBhYm91dCBXS1dl
YlZpZXcgY29vcmRpbmF0ZXMgaW4gYSBjb25zaXN0ZW50IGFuZCBjcm9zcy1wbGF0Zm9ybSB3YXku
Ci0gICAgLy8gQ3VycmVudGx5LCBuZWl0aGVyICJyb290IHZpZXciIG5vciAid2luZG93IiBtZWFu
ICJXS1dlYlZpZXcgY29vcmRpbmF0ZXMiIG9uIGJvdGggcGxhdGZvcm1zLgotICAgIC8vIFNlZSBo
dHRwczovL3dlYmtpdC5vcmcvYi8xOTM2NDkgYW5kIHJlbGF0ZWQgYnVncy4KLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzIGZyb21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJl
dHVybiByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwotI2VuZGlmCi19Ci0KLS0gKENHUmVjdClf
Y29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29v
cmRpbmF0ZXMKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBj
b252ZXJ0UmVjdDpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3Ol9jb250ZW50Vmlldy5n
ZXQoKV07Ci0jZWxzZQotICAgIHJldHVybiByZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5k
aWYKLX0KLQotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0Ci17Ci0jaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQotICAgICAg
ICByZXR1cm4gTk87Ci0jZW5kaWYKLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0XTsKLSAgICBy
ZXR1cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZp
ZXcuZ2V0KCksIHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOwotI2Vsc2UKLSAgICByZXR1cm4g
Tk87Ci0jZW5kaWYKLX0KLQotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0
OihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgot
ewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRD
b250ZW50Vmlld10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAg
aWYgKCFbc2VsZiBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6cmVjdEluV2ViVmll
d0Nvb3JkaW5hdGVzXSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAW10pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5X
ZWJWaWV3Q29vcmRpbmF0ZXNdOwotCi0gICAgYXV0byB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdL
V2ViVmlldz4oc2VsZik7Ci0gICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMsIFt3ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RWxlbWVudENvbnRleHQ+JiBjb250ZXh0cykgewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOwotCi0gICAgICAgIGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBj
b250ZXh0cykgewotICAgICAgICAgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dFdp
dGhXZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKLSAgICAgICAgICAgIGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJl
Y3RGcm9tUm9vdFZpZXdDb29yZGluYXRlczpjb250ZXh0LmJvdW5kaW5nUmVjdF07Ci0gICAgICAg
ICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFs
bG9jXSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5n
UmVjdF0pLmdldCgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhh
bmRsZXIoZWxlbWVudHMuZ2V0KCkpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9mb2N1c1RleHRJ
bnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3
NmU1YWViYmZlYmU2N2YuLmViZDU4N2RlMDcyZTJiNTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtMzM1LDggKzMzNSw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9p
ZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zOwogCi0tIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dS
ZWN0KXJlY3Q7Ci0tICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVj
dClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29u
dGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1
KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElu
cHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlv
cygxMy4wKSk7CiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihX
S1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9y
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCmluZGV4IDBmMmQ1
OGMzNTczODEzNGVkOTJkNTg2MzQ4OTI0MTFjMTQ5YTNmOWEuLmYyNWVmNzM3NjAxNzY3YzAwZGU4
N2FiNmYzODg4NzdlMGI5NTczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKQEAg
LTI3LDYgKzI3LDEwIEBACiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKK0BjbGFzcyBfV0tUZXh0
SW5wdXRDb250ZXh0OworQGNsYXNzIFVJV0tEb2N1bWVudENvbnRleHQ7CitAY2xhc3MgVUlXS0Rv
Y3VtZW50UmVxdWVzdDsKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGV4dENvbnRlbnRUeXBl
Rm9yVGVzdGluZzsKQEAgLTQ0LDYgKzQ4LDExIEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tl
cjsKIC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4Owog
CistIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7
CistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAq
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3JlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJ
V0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShV
SVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYWRqdXN0
U2VsZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOworCiAtICh2b2lkKXNldFRpbWVQaWNr
ZXJWYWx1ZVRvSG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwog
CiAtICh2b2lkKWFwcGx5QXV0b2NvcnJlY3Rpb246KE5TU3RyaW5nICopbmV3U3RyaW5nIHRvU3Ry
aW5nOihOU1N0cmluZyAqKW9sZFN0cmluZyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IDNiMmEwMWVhNmNmMTZh
YzQ2NDc2ZDYyMzUwMGU1YWY2NDhjMDc3OTUuLmVlZDRjODE5ZTBjMTI5MzdkZjFkYzZlYTk2ZDhk
ZDJlMmM2MzZmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KQEAgLTI5LDE0ICsyOSw0OSBAQAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9y
dCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3Jl
L0VsZW1lbnRDb250ZXh0Lmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGlu
Z0lPUykKIAorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBBZGp1c3QgcmV0dXJuZWQgYm91
bmRpbmcgcmVjdHMgdG8gYmUgaW4gV0tXZWJWaWV3IGNvb3JkaW5hdGVzLgorICAgIENHUmVjdCBh
ZGp1c3RlZFJlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0IHRvVmlldzpfY29udGVudFZpZXcu
Z2V0KCldOworICAgIFtfY29udGVudFZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDphZGp1c3RlZFJlY3QgY29tcGxldGlvbkhhbmRsZXI6W3NlbGYsIGNvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNBcnJheTxfV0tUZXh0SW5wdXRD
b250ZXh0ICo+ICpjb250ZXh0cykgeworICAgICAgICBhdXRvIGFkanVzdGVkQ29udGV4dHMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29udGV4dHMu
Y291bnRdKTsKKyAgICAgICAgZm9yIChfV0tUZXh0SW5wdXRDb250ZXh0ICpjb250ZXh0IGluIGNv
bnRleHRzKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBhZGp1c3RlZENv
bnRleHQgPSBjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0OworICAgICAgICAgICAgYWRqdXN0ZWRD
b250ZXh0LmJvdW5kaW5nUmVjdCA9IFtzZWxmIGNvbnZlcnRSZWN0OmFkanVzdGVkQ29udGV4dC5i
b3VuZGluZ1JlY3QgZnJvbVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKKyAgICAgICAgICAgIFth
ZGp1c3RlZENvbnRleHRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBh
bGxvY10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDphZGp1c3RlZENvbnRleHRdKS5nZXQoKV07
CisgICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRqdXN0ZWRDb250ZXh0cy5h
dXRvcmVsZWFzZSgpKTsKKyAgICB9XTsKK30KKworLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29u
dGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBb
KGlkPFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbD4pX2NvbnRlbnRWaWV3IHJlcXVlc3REb2N1
bWVudENvbnRleHQ6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07
Cit9CisKKy0gKHZvaWQpX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJh
bmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIFsoaWQ8VUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sPilfY29udGVudFZpZXcgYWRq
dXN0U2VsZWN0aW9uV2l0aERlbHRhOmRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxl
dGlvbkhhbmRsZXJdOworfQorCistIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0lu
UmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICByZXR1cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFi
bGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcuZ2V0KCksIFtzZWxmIGNvbnZlcnRSZWN0OnJl
Y3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV0pOworfQorCiAtICh2b2lkKWtleWJvYXJkQWNj
ZXNzb3J5QmFyTmV4dAogewogICAgIFtfY29udGVudFZpZXcgYWNjZXNzb3J5VGFiOllFU107CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKaW5kZXggNWJlMjEwYmI0NWIwNGE0YWZlZWY2M2RlYzFmYjU4MTYxNWMxM2I2Ni4u
NzgwY2I5NDZhYzA4ZWVhMmFiYzJlMDBjMTkxOTZjMWZiMDhmMDg0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApA
QCAtNTY5LDYgKzU2OSw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04o
REVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChXS0RyYXdpbmdD
b29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7CiAjZW5kaWYKIAorLSAodm9pZClfcmVx
dWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhh
bmRsZXI7CisKICNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCiAtICh2b2lkKV93
aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENv
bnRleHQgKiljb250ZXh0OwogLSAodm9pZClfZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0
SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IGViNGM4ZGUyMGJjOWM3MDc2OTY3MGUyOTUxMDQ4NTk0NTg4YjlhODEuLjg5NmNjYjRl
MmMzNzQxNzM2MmI0MGNlYTVhMzM0MmE0MGFiMjIzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTA4
Miw2ICs1MDgyLDI3IEBAIC0gKENHUmVjdClyZWN0Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uCiAg
ICAgcmV0dXJuIENHUmVjdFplcm87CiB9CiAKKy0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250
ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5B
QkxFKEVESVRBQkxFX1JFR0lPTikKKyAgICBpZiAoIVdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxl
RWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
QFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBfcGFnZS0+dGV4dElu
cHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50
Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIGNvbnRleHRz
KSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBp
ZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBhdXRvIGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNvbnRleHQgOiBjb250ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBhZGRPYmplY3Q6YWRv
cHROUyhbW19XS1RleHRJbnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRleHRJbnB1dENvbnRl
eHQ6Y29udGV4dF0pLmdldCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZWxlbWVudHMu
Z2V0KCkpOworICAgIH0pOworfQorCiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05T
KQogCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6
KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDVhYjJiNDdkMTI3NzFlMzcyODNkNDQ3OWJkMzNi
MWIxZmJkOTUyOC4uMGFkNmY2NmFkZmI4MDJlZDU0ODc1ZWMzMGE4MmZkYmNmZDAxYjAyNSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDIwLTA0LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IHRvIFdLQ29udGVu
dFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjE2NTY5MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHRlc3Qgbm93IHRoYXQgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Qg
aGFzIG1vdmVkIGZyb20gV0tXZWJWaWV3IHRvIFdLQ29udGVudFZpZXcuCisgICAgICAgIEkgZXhw
b3NlIG5ldyB0ZXN0aW5nLW9ubHkgV0tXZWJWaWV3IFNQSSB0byBhY2Nlc3MgaXQgb24gdGhlIGNv
bnRlbnQgdmlldy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5j
aHJvbm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBzeW5jaHJvbm91c2x5QWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOl0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENv
bnRleHRzSW5SZWN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgc3luY2hyb25v
dXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpdKTogRGVsZXRlZC4KKwogMjAxOS0wOS0xMyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGlu
ZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0Nv
bnRleHQubW0KaW5kZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNmOWFjZC4u
OWY5OGI4OTRjM2NhODIxNDI3MjJhZTViNDM4MDJkYWY4MjU1NTJlMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5tbQpAQCAtMjksMTIgKzI5LDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgotI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRT
UEkuaCIKLSNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ3LDExICs0NCw2IEBACiAgICAgRVhQRUNUX1RS
VUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSk7IFwK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIFsoTlNBdHRyaWJ1dGVkU3RyaW5nICopYWN0
dWFsIHN0cmluZ10pOwogCi1AaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKLS0gKHZvaWQpcmVx
dWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhh
bmRsZXI7Ci0tICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJh
bmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsK
LUBlbmQKLQogc3RhdGljIFVJV0tEb2N1bWVudFJlcXVlc3QgKm1ha2VSZXF1ZXN0KFVJV0tEb2N1
bWVudFJlcXVlc3RGbGFncyBmbGFncywgVUlUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE5T
SW50ZWdlciBncmFudWxhcml0eUNvdW50LCBDR1JlY3QgZG9jdW1lbnRSZWN0ID0gQ0dSZWN0WmVy
bywgaWQgPE5TQ29weWluZz4gaW5wdXRFbGVtZW50SWRlbnRpZmllciA9IG5pbCkKIHsKICAgICBh
dXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbVUlXS0RvY3VtZW50UmVxdWVzdCBhbGxvY10gaW5pdF0p
OwpAQCAtMTMwLDcgKzEyMiw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91
c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiB7CiAgICAgX19i
bG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8VUlXS0Rv
Y3VtZW50Q29udGV4dD4gcmVzdWx0OwotICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSByZXF1ZXN0
RG9jdW1lbnRDb250ZXh0OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihVSVdLRG9jdW1lbnRD
b250ZXh0ICpjb250ZXh0KSB7CisgICAgW3NlbGYgX3JlcXVlc3REb2N1bWVudENvbnRleHQ6cmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJV0tEb2N1bWVudENvbnRleHQgKmNvbnRleHQpIHsK
ICAgICAgICAgcmVzdWx0ID0gY29udGV4dDsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAg
IH1dOwpAQCAtMTQxLDcgKzEzMyw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJv
bm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiAtICh2b2lk
KXN5bmNocm9ub3VzbHlBZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpcmFuZ2UKIHsK
ICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBbW3NlbGYgd2tDb250ZW50
Vmlld10gYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOnJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgW3NlbGYgX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpyYW5nZSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewogICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29u
dGV4dC5tbQppbmRleCBiZmFhOTg1MDhjM2U1MWM3YzdhYjgwZTE5N2QwZGYxOTZhNzMwNzg0Li43
YjRkYjY1YmQ2MTY0ZWY1NDY3NGYyNDQzNjhhOGM4OGZmNTM0Mzc0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW0KQEAgLTI1LDE3ICsyNSwxOCBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJUZXN0Q29jb2EuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyAoU3luY2hyb25vdXNUZXh0SW5wdXRDb250ZXh0KQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dl
YlZpZXcgKFN5bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJheTxfV0tUZXh0
SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0lu
UmVjdDooQ0dSZWN0KXJlY3QKIHsKQEAgLTI2MywzICsyNjQsNSBAQCBURVNUKFJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0LCBESVNBQkxFRF9Gb2N1c1RleHRJbnB1dENvbnRleHQpCiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CiAgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0KCld
KTsKIH0KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGVkMmI3
NzZkNDU5ZTY3NDEwYWUwYjIzMDIyNDMzZjFhNDMyODUzOC4uNDkwMTRiODkyMTAxMTcxM2FhZmU5
MDAyYjk5Yjg2MGIzYWFiM2E5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtODM4LDcgKzgzOCw4IEBAIEpTT2JqZWN0
UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6cHJvcGVydGllc09mTGF5ZXJXaXRoSUQodWludDY0
X3QgbGF5ZXJJRCkgY29uCiAKIGJvb2wgVUlTY3JpcHRDb250cm9sbGVySU9TOjptYXlDb250YWlu
RWRpdGFibGVFbGVtZW50c0luUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewotICAgIHJldHVybiBbd2ViVmlldygpIF9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWlnaHQp
XTsKKyAgICBDR1JlY3QgY29udGVudFJlY3QgPSBDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWln
aHQpOworICAgIHJldHVybiBbd2ViVmlldygpIF9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0lu
UmVjdDpbd2ViVmlldygpIGNvbnZlcnRSZWN0OmNvbnRlbnRSZWN0IGZyb21WaWV3OnBsYXRmb3Jt
Q29udGVudFZpZXcoKV1dOwogfQogCiBzdGF0aWMgVUlEZXZpY2VPcmllbnRhdGlvbiB0b1VJRGV2
aWNlT3JpZW50YXRpb24oRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZm
MDMzODYxZTgxN2U1MDE5ZTU1NWUxNmIwZTliNzA3ZGUwMDIyN2UuLmU1YTA4MTExMjZiN2Y1NGQy
NDNjYjE2ZjFiNDY4M2JjNDU3YjEwMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNC0x
NCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAtX3Jl
cXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRWaWV3IHRvIHNpbXBsaWZ5
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAzOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjU2OTMxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IGFu
ZCBleHBlY3RlZCByZXN1bHRzIG5vdyB0aGF0IFVJU2NyaXB0Q29udHJvbGxlci5tYXlDb250YWlu
RWRpdGFibGVFbGVtZW50c0luUmVjdCgpCisgICAgICAgIGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0
IHRvIGJlIGluIGNvbnRlbnQgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgSSByZXBsYWNlZCBvbmUg
c3ViLXRlc3Qgb2YgYSByZWN0IHByZS1zY3JvbGwgd2l0aCBhbm90aGVyIHRoYXQgdGVzdHMgdGhl
IGxvY2F0aW9uCisgICAgICAgIG9mIGEgcmVjdCB0aGF0IHdpbGwgaGF2ZSBlZGl0YWJsZSBlbGVt
ZW50cyBhZnRlciBzY3JvbGwuIFRoZSBwdXJwb3NlIG9mIHRoYXQgc3ViLXRlc3QKKyAgICAgICAg
aGFzbid0IGNoYW5nZWQsIGJ1dCBpdCBub3cgbWFrZXMgdGhlIHN1Yi10ZXN0cycgcmVjdHMgc3lt
bWV0cmljIGZvciBiZWZvcmUgYW5kIGFmdGVyCisgICAgICAgIHNjcm9sbC4gSSBhbHNvIGFkZGVk
IGRlYnVnKCkgc3RhdGVtZW50cyB0byBkZW1hcmNhdGUgdGhlIGJlZm9yZSBzY3JvbGwgYW5kIGFm
dGVyIHNjcm9sbAorICAgICAgICBzdWItdGVzdHMgaW4gdGhlIHJlc3VsdHMgdG8gbWFrZSBpdCBl
YXNpZXIgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGVzdCBmaWxlIGlzIHRlc3RpbmcuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRt
bDoKKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNw
b25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0
LWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9u
L2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dAppbmRleCA4NDQ1MzBkZWE3YWVjMzFiZWFkZjE0
YjZlZDRkM2FmN2MxMzBhY2U5Li5iYTNmZGQ0NjcyMzBmNGQ0OTQ0NWEyOTkzMmEwMGJkZGU5MjMw
Y2IyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQt
dGVzdC1maXhlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJs
ZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsMTMgQEAgSGl0
IHRlc3QgZml4ZWQgcG9zaXRpb25lZCBlZGl0YWJsZSBlbGVtZW50LgogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiAKK0JlZm9yZSBzY3JvbGw6CiBQQVNTICh4ID0gMCwgeSA9IDAsIHdpZHRo
ID0gMjAwLCBoZWlnaHQgPSA0MCkgY29udGFpbnMgZWRpdGFibGUgZWxlbWVudHMuCi1QQVNTICh4
ID0gMCwgeSA9IDEwMCwgd2lkdGggPSA1MCwgaGVpZ2h0ID0gNTApIGRvZXMgbm90IGNvbnRhaW4g
ZWRpdGFibGUgZWxlbWVudHMuCi1QQVNTICh4ID0gMCwgeSA9IDAsIHdpZHRoID0gMjAwLCBoZWln
aHQgPSA0MCkgY29udGFpbnMgZWRpdGFibGUgZWxlbWVudHMuCitQQVNTICh4ID0gMCwgeSA9IDIw
MCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBkb2VzIG5vdCBjb250YWluIGVkaXRhYmxlIGVs
ZW1lbnRzLgorCitBZnRlciBzY3JvbGw6CitQQVNTICh4ID0gMCwgeSA9IDAsIHdpZHRoID0gMjAw
LCBoZWlnaHQgPSA0MCkgZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KK1BBU1Mg
KHggPSAwLCB5ID0gMjAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRh
YmxlIGVsZW1lbnRzLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9o
aXQtdGVzdC1maXhlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24v
aGl0LXRlc3QtZml4ZWQuaHRtbAppbmRleCA2MmFhYTViMzBiZmJkM2VmNWQyZDk3ODhmMjMzOTdl
YzVjODA0NWQ4Li5kMmI0NDM0N2Y3Y2RiOWNhZGQ0ODE5M2JkYjgwZjY1YWYwNzQ3ZGM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0
LWZpeGVkLmh0bWwKQEAgLTI5LDEyICsyOSwxNiBAQCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGRlYnVnKCJCZWZvcmUgc2Nyb2xsOiIpOwog
ICAgIGF3YWl0IHNob3VsZEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDAp
OwotICAgIGF3YWl0IHNob3VsZE5vdEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDEwMCwg
NTAsIDUwKTsKKyAgICBhd2FpdCBzaG91bGROb3RIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgw
LCAyMDAsIDIwMCwgNDApOwogCi0gICAgd2luZG93LnNjcm9sbFRvKDAsIDIwMCk7CisgICAgbGV0
IG5ld1lPZmZzZXQgPSAyMDA7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIG5ld1lPZmZzZXQpOwog
Ci0gICAgYXdhaXQgc2hvdWxkSGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0
MCk7CisgICAgZGVidWcoIjxicj5BZnRlciBzY3JvbGw6Iik7CisgICAgYXdhaXQgc2hvdWxkTm90
SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgYXdhaXQgc2hv
dWxkSGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgbmV3WU9mZnNldCwgMjAwLCA0MCk7CiAK
ICAgICBsZXQgdGVzdENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNv
bnRhaW5lciIpOwogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396444</attachid>
            <date>2020-04-14 11:27:50 -0700</date>
            <delta_ts>2020-04-16 09:35:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210398-20200414112750.patch</filename>
            <type>text/plain</type>
            <size>24553</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5NTIyYzk2ZjViNTI2ZTdh
ZTljZmQ0MmNhNzkwZDg4YTNmYTZmZDYuLmY3ZjQ2NTZkYTg1NzJlMGU0OWZmNmJiYmJmYzRjMjdl
NzM0NDQ0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMDQtMTQgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0
ZXMKKyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3Jk
aW5hdGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdo
YXQgaXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0
IGlPUydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBNb3ZpbmcgdGhpcyBmdW5jdGlv
biB0byBXS0NvbnRlbnRWaWV3IGxldHMgbWUgcmVtb3ZlIHRoZXNlIGNvbXBsZXhpdGllcy4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb252ZXJ0
UmVjdEZyb21Sb290Vmlld0Nvb3JkaW5hdGVzOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NvbnZlcnRSZWN0VG9Sb290Vmlld0Nvb3JkaW5hdGVzOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX21heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0Ol0pOiBE
ZWxldGVkOyBtb3ZlZCB0byBXS1dlYlZpZXdUZXN0aW5nSU9TLm1tLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpd
KTogRGVsZXRlZDsgbW92ZWQgdG8gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6IEFkZGVkLiBUdXJucyBhcm91bmQgYW5kCisgICAgICAgIGNhbGxzIHRoZSBmdW5jdGlv
biBvZiB0aGUgc2FtZSBuYW1lIG9uIHRoZSBXS0NvbnRlbnRWaWV3LiBJdCB0YWtlcyBjYXJlIHRv
IGNvbnZlcnQgdGhlIHNwZWNpZmllZAorICAgICAgICByZWN0IGZyb20gV0tXZWJWaWV3IGNvb3Jk
aW5hdGVzIHRvIFdLQ29udGVudFZpZXcgY29vcmRpbmF0ZXMgYW5kIGZpeGVzIHVwIHRoZSBib3Vu
ZGluZyByZWN0cworICAgICAgICBmb3IgdGhlIHJldHVybmVkIGNvbnRleHRzIHRvIGJlIGluIFdL
V2ViVmlldyBjb29yZGluYXRlcy4gVGhpcyBrZWVwcyBleGlzdGluZ3MgdGVzdHMgcGFzc2luZwor
ICAgICAgICBhcyBtZWtlcyB1c2luZyB0aGlzIGZ1bmN0aW9uIGludHVpdGl2ZSBzaW5jZSBjYWxs
ZXJzIHNwZWNpZnkgYW5kIGdldCByZWN0cyBpbiBXS1dlYlZpZXcgY29vcmRpbmF0ZXMuCisgICAg
ICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdERvY3VtZW50Q29udGV4dDpjb21wbGV0aW9uSGFuZGxl
cjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfYWRqdXN0U2VsZWN0aW9uV2l0aERl
bHRhOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9t
YXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcu
bW0uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBmcm9tIFdLV2ViVmlldy5tbSBhbmQgc2ltcGxpZmll
ZC4KKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNw
b25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNmY2YmFmYWQz
NGFmOTgwNDNmNjU5YzJkZGY1MWU5NGVmZmJjM2FjZC4uMDgxMDlmNDVkNDkzNTk2M2YxN2NmOGFi
MTZiMWNlNTJjM2RiMjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmgKQEAgLTY5Myw3ICs2OTMsMTMgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlX
S0dlc3R1cmVUeXBlKSB7CiBAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBD
R0Zsb2F0IF9tYXhpbXVtQmVhbVNuYXBwaW5nTGVuZ3RoOwogQGVuZAogCitAY2xhc3MgVUlXS0Rv
Y3VtZW50UmVxdWVzdDsKK0BjbGFzcyBVSVdLRG9jdW1lbnRDb250ZXh0OworCiBAcHJvdG9jb2wg
VUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sCistICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhE
ZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlX
S0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJ
V0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNlbGVjdFBv
c2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1
bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLRG9j
dW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZCljaGFuZ2VTZWxlY3Rp
b25XaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5
cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGU7
CiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhT
ZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGJhc2VJc1N0YXJ0OihCT09M
KWJhc2VJc1N0YXJ0IHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzOwogLSAodm9p
ZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206KENHUG9pbnQpZnJvbSB0bzooQ0dQb2lu
dCl0byB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZToo
VUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDcwOGI0OTZiN2UxOWEzMGM5
YjAyYTRlMGU5ZmJkYzUyMTA3NWEwYTAuLmYzZGU2ZTM4ODk5YzU4N2JhMjE4YTFkODI0YTk5MTI1
ZWM0OGVlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMTUwLDcgKzE1MCw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgotI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaCIKQEAgLTIwNzIsNzMgKzIwNzEsNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVu
dFByb2Nlc3NBbmRSZXNldFN0YXRlCiAgICAgfQogfQogCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
Ci17Ci0gICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gdGFsayBhYm91dCBXS1dl
YlZpZXcgY29vcmRpbmF0ZXMgaW4gYSBjb25zaXN0ZW50IGFuZCBjcm9zcy1wbGF0Zm9ybSB3YXku
Ci0gICAgLy8gQ3VycmVudGx5LCBuZWl0aGVyICJyb290IHZpZXciIG5vciAid2luZG93IiBtZWFu
ICJXS1dlYlZpZXcgY29vcmRpbmF0ZXMiIG9uIGJvdGggcGxhdGZvcm1zLgotICAgIC8vIFNlZSBo
dHRwczovL3dlYmtpdC5vcmcvYi8xOTM2NDkgYW5kIHJlbGF0ZWQgYnVncy4KLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzIGZyb21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJl
dHVybiByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwotI2VuZGlmCi19Ci0KLS0gKENHUmVjdClf
Y29udmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29v
cmRpbmF0ZXMKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBj
b252ZXJ0UmVjdDpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3Ol9jb250ZW50Vmlldy5n
ZXQoKV07Ci0jZWxzZQotICAgIHJldHVybiByZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5k
aWYKLX0KLQotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVj
dClyZWN0Ci17Ci0jaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQotICAgICAg
ICByZXR1cm4gTk87Ci0jZW5kaWYKLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0XTsKLSAgICBy
ZXR1cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZp
ZXcuZ2V0KCksIHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOwotI2Vsc2UKLSAgICByZXR1cm4g
Tk87Ci0jZW5kaWYKLX0KLQotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0
OihDR1JlY3QpcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgot
ewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRD
b250ZW50Vmlld10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAg
aWYgKCFbc2VsZiBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6cmVjdEluV2ViVmll
d0Nvb3JkaW5hdGVzXSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAW10pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5X
ZWJWaWV3Q29vcmRpbmF0ZXNdOwotCi0gICAgYXV0byB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdL
V2ViVmlldz4oc2VsZik7Ci0gICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMsIFt3ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RWxlbWVudENvbnRleHQ+JiBjb250ZXh0cykgewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOwotCi0gICAgICAgIGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBj
b250ZXh0cykgewotICAgICAgICAgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dFdp
dGhXZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKLSAgICAgICAgICAgIGNvbnRleHRXaXRo
V2ViVmlld0JvdW5kaW5nUmVjdC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJl
Y3RGcm9tUm9vdFZpZXdDb29yZGluYXRlczpjb250ZXh0LmJvdW5kaW5nUmVjdF07Ci0gICAgICAg
ICAgICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFs
bG9jXSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5n
UmVjdF0pLmdldCgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhh
bmRsZXIoZWxlbWVudHMuZ2V0KCkpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9mb2N1c1RleHRJ
bnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3
NmU1YWViYmZlYmU2N2YuLmViZDU4N2RlMDcyZTJiNTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtMzM1LDggKzMzNSw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9p
ZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zOwogCi0tIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dS
ZWN0KXJlY3Q7Ci0tICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVj
dClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29u
dGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1
KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElu
cHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlv
cygxMy4wKSk7CiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihX
S1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9y
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCmluZGV4IDBmMmQ1
OGMzNTczODEzNGVkOTJkNTg2MzQ4OTI0MTFjMTQ5YTNmOWEuLmYyNWVmNzM3NjAxNzY3YzAwZGU4
N2FiNmYzODg4NzdlMGI5NTczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKQEAg
LTI3LDYgKzI3LDEwIEBACiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKK0BjbGFzcyBfV0tUZXh0
SW5wdXRDb250ZXh0OworQGNsYXNzIFVJV0tEb2N1bWVudENvbnRleHQ7CitAY2xhc3MgVUlXS0Rv
Y3VtZW50UmVxdWVzdDsKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGV4dENvbnRlbnRUeXBl
Rm9yVGVzdGluZzsKQEAgLTQ0LDYgKzQ4LDExIEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tl
cjsKIC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4Owog
CistIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7
CistICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAq
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3JlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJ
V0tEb2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShV
SVdLRG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYWRqdXN0
U2VsZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOworCiAtICh2b2lkKXNldFRpbWVQaWNr
ZXJWYWx1ZVRvSG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwog
CiAtICh2b2lkKWFwcGx5QXV0b2NvcnJlY3Rpb246KE5TU3RyaW5nICopbmV3U3RyaW5nIHRvU3Ry
aW5nOihOU1N0cmluZyAqKW9sZFN0cmluZyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IDNiMmEwMWVhNmNmMTZh
YzQ2NDc2ZDYyMzUwMGU1YWY2NDhjMDc3OTUuLmFjNGMwMTU3ZjdiN2ExZWEyZmFmM2Q3OGFkNWY0
OGM1YWIzZmM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KQEAgLTI5LDE0ICsyOSw1NCBAQAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9y
dCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3Jl
L0VsZW1lbnRDb250ZXh0Lmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGlu
Z0lPUykKIAorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3Qp
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRl
eHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBBZGp1c3QgcmV0dXJuZWQgYm91
bmRpbmcgcmVjdHMgdG8gYmUgaW4gV0tXZWJWaWV3IGNvb3JkaW5hdGVzLgorICAgIENHUmVjdCBh
ZGp1c3RlZFJlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0IHRvVmlldzpfY29udGVudFZpZXcu
Z2V0KCldOworICAgIFtfY29udGVudFZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDphZGp1c3RlZFJlY3QgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tXZWJWaWV3PihzZWxmKSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzKSB7
CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAo
IXN0cm9uZ1NlbGYgfHwgIWNvbnRleHRzLmNvdW50KSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIGFkanVzdGVkQ29udGV4dHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6Y29udGV4dHMuY291bnRdKTsKKyAgICAgICAgZm9yIChfV0tUZXh0SW5w
dXRDb250ZXh0ICpjb250ZXh0IGluIGNvbnRleHRzKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpF
bGVtZW50Q29udGV4dCBhZGp1c3RlZENvbnRleHQgPSBjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0
OworICAgICAgICAgICAgYWRqdXN0ZWRDb250ZXh0LmJvdW5kaW5nUmVjdCA9IFtzdHJvbmdTZWxm
IGNvbnZlcnRSZWN0OmFkanVzdGVkQ29udGV4dC5ib3VuZGluZ1JlY3QgZnJvbVZpZXc6c3Ryb25n
U2VsZi0+X2NvbnRlbnRWaWV3LmdldCgpXTsKKyAgICAgICAgICAgIFthZGp1c3RlZENvbnRleHRz
IGFkZE9iamVjdDphZG9wdE5TKFtbX1dLVGV4dElucHV0Q29udGV4dCBhbGxvY10gX2luaXRXaXRo
VGV4dElucHV0Q29udGV4dDphZGp1c3RlZENvbnRleHRdKS5nZXQoKV07CisgICAgICAgIH0KKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWRqdXN0ZWRDb250ZXh0cy5hdXRvcmVsZWFzZSgpKTsK
KyAgICB9XTsKK30KKworLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3Vt
ZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1
bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBbKGlkPFVJV0tJbnRlcmFj
dGlvblZpZXdQcm90b2NvbD4pX2NvbnRlbnRWaWV3IHJlcXVlc3REb2N1bWVudENvbnRleHQ6cmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKKy0gKHZvaWQp
X2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFsoaWQ8VUlX
S0ludGVyYWN0aW9uVmlld1Byb3RvY29sPilfY29udGVudFZpZXcgYWRqdXN0U2VsZWN0aW9uV2l0
aERlbHRhOmRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwor
fQorCistIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJl
Y3QKK3sKKyAgICByZXR1cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVj
dChfY29udGVudFZpZXcuZ2V0KCksIFtzZWxmIGNvbnZlcnRSZWN0OnJlY3QgdG9WaWV3Ol9jb250
ZW50Vmlldy5nZXQoKV0pOworfQorCiAtICh2b2lkKWtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dAog
ewogICAgIFtfY29udGVudFZpZXcgYWNjZXNzb3J5VGFiOllFU107CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXgg
NWJlMjEwYmI0NWIwNGE0YWZlZWY2M2RlYzFmYjU4MTYxNWMxM2I2Ni4uNzgwY2I5NDZhYzA4ZWVh
MmFiYzJlMDBjMTkxOTZjMWZiMDhmMDg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNTY5LDYgKzU2OSw4
IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRF
TlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9k
cmF3aW5nQ29vcmRpbmF0b3I7CiAjZW5kaWYKIAorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENv
bnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Fy
cmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CisKICNpZiBV
U0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50
ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0
OwogLSAodm9pZClfZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Oihf
V0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGViNGM4ZGUy
MGJjOWM3MDc2OTY3MGUyOTUxMDQ4NTk0NTg4YjlhODEuLjg5NmNjYjRlMmMzNzQxNzM2MmI0MGNl
YTVhMzM0MmE0MGFiMjIzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTA4Miw2ICs1MDgyLDI3IEBA
IC0gKENHUmVjdClyZWN0Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uCiAgICAgcmV0dXJuIENHUmVj
dFplcm87CiB9CiAKKy0gKHZvaWQpX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dS
ZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRD
b250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEVESVRBQkxFX1JF
R0lPTikKKyAgICBpZiAoIVdlYktpdDo6bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Qo
c2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFsgXSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBfcGFnZS0+dGV4dElucHV0Q29udGV4dHNJblJl
Y3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIGNvbnRleHRzKSB7CisgICAgICAgIGF1
dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYg
fHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihA
WyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGVsZW1l
bnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNv
bnRleHRzLnNpemUoKV0pOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250
ZXh0cykKKyAgICAgICAgICAgIFtlbGVtZW50cyBhZGRPYmplY3Q6YWRvcHROUyhbW19XS1RleHRJ
bnB1dENvbnRleHQgYWxsb2NdIF9pbml0V2l0aFRleHRJbnB1dENvbnRleHQ6Y29udGV4dF0pLmdl
dCgpXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZWxlbWVudHMuZ2V0KCkpOworICAgIH0p
OworfQorCiAjaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogCiAtICh2b2lkKV93
aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENv
bnRleHQgKiljb250ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZDVhYjJiNDdkMTI3NzFlMzcyODNkNDQ3OWJkMzNiMWIxZmJkOTUyOC4uMGFk
NmY2NmFkZmI4MDJlZDU0ODc1ZWMzMGE4MmZkYmNmZDAxYjAyNSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA0
LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIC1f
cmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0IHRvIFdLQ29udGVudFZpZXcgdG8gc2ltcGxp
ZnkgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5MzE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3Qg
bm93IHRoYXQgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgaGFzIG1vdmVkIGZyb20g
V0tXZWJWaWV3IHRvIFdLQ29udGVudFZpZXcuCisgICAgICAgIEkgZXhwb3NlIG5ldyB0ZXN0aW5n
LW9ubHkgV0tXZWJWaWV3IFNQSSB0byBhY2Nlc3MgaXQgb24gdGhlIGNvbnRlbnQgdmlldy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5n
Q29udGV4dC5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVz
dERvY3VtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJvbm91
c2x5QWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElu
cHV0Q29udGV4dDpdKTogRGVsZXRlZC4KKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1h
YyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KaW5kZXgg
YTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNmOWFjZC4uOWY5OGI4OTRjM2NhODIx
NDI3MjJhZTViNDM4MDJkYWY4MjU1NTJlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5t
bQpAQCAtMjksMTIgKzI5LDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3RDb2NvYS5oIgotI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQg
PFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJ
bnB1dENvbnRleHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTQ3LDExICs0NCw2IEBACiAgICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBpc0tp
bmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSk7IFwKICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXhwZWN0ZWQsIFsoTlNBdHRyaWJ1dGVkU3RyaW5nICopYWN0dWFsIHN0cmluZ10pOwog
Ci1AaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKLS0gKHZvaWQpcmVxdWVzdERvY3VtZW50Q29u
dGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lk
KWFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKLUBlbmQKLQogc3RhdGlj
IFVJV0tEb2N1bWVudFJlcXVlc3QgKm1ha2VSZXF1ZXN0KFVJV0tEb2N1bWVudFJlcXVlc3RGbGFn
cyBmbGFncywgVUlUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE5TSW50ZWdlciBncmFudWxh
cml0eUNvdW50LCBDR1JlY3QgZG9jdW1lbnRSZWN0ID0gQ0dSZWN0WmVybywgaWQgPE5TQ29weWlu
Zz4gaW5wdXRFbGVtZW50SWRlbnRpZmllciA9IG5pbCkKIHsKICAgICBhdXRvIHJlcXVlc3QgPSBh
ZG9wdE5TKFtbVUlXS0RvY3VtZW50UmVxdWVzdCBhbGxvY10gaW5pdF0pOwpAQCAtMTMwLDcgKzEy
Miw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91c2x5UmVxdWVzdERvY3Vt
ZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiB7CiAgICAgX19ibG9jayBib29sIGZpbmlz
aGVkID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8VUlXS0RvY3VtZW50Q29udGV4dD4g
cmVzdWx0OwotICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSByZXF1ZXN0RG9jdW1lbnRDb250ZXh0
OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihVSVdLRG9jdW1lbnRDb250ZXh0ICpjb250ZXh0
KSB7CisgICAgW3NlbGYgX3JlcXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVzdCBjb21wbGV0aW9u
SGFuZGxlcjpeKFVJV0tEb2N1bWVudENvbnRleHQgKmNvbnRleHQpIHsKICAgICAgICAgcmVzdWx0
ID0gY29udGV4dDsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMTQxLDcg
KzEzMyw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91c2x5UmVxdWVzdERv
Y3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiAtICh2b2lkKXN5bmNocm9ub3VzbHlB
ZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpcmFuZ2UKIHsKICAgICBfX2Jsb2NrIGJv
b2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBbW3NlbGYgd2tDb250ZW50Vmlld10gYWRqdXN0U2Vs
ZWN0aW9uV2l0aERlbHRhOnJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW3NlbGYg
X2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpyYW5nZSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewog
ICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZmaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQppbmRleCBi
ZmFhOTg1MDhjM2U1MWM3YzdhYjgwZTE5N2QwZGYxOTZhNzMwNzg0Li43YjRkYjY1YmQ2MTY0ZWY1
NDY3NGYyNDQzNjhhOGM4OGZmNTM0Mzc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQu
bW0KQEAgLTI1LDE3ICsyNSwxOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJUZXN0Q29jb2EuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Zy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoU3luY2hyb25vdXNU
ZXh0SW5wdXRDb250ZXh0KQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKFN5bmNocm9u
b3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+
ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJl
Y3QKIHsKQEAgLTI2MywzICsyNjQsNSBAQCBURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBE
SVNBQkxFRF9Gb2N1c1RleHRJbnB1dENvbnRleHQpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiIl07CiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0KCldKTsKIH0KKworI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGVkMmI3NzZkNDU5ZTY3NDEwYWUw
YjIzMDIyNDMzZjFhNDMyODUzOC4uNDkwMTRiODkyMTAxMTcxM2FhZmU5MDAyYjk5Yjg2MGIzYWFi
M2E5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQpAQCAtODM4LDcgKzgzOCw4IEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29u
dHJvbGxlcklPUzo6cHJvcGVydGllc09mTGF5ZXJXaXRoSUQodWludDY0X3QgbGF5ZXJJRCkgY29u
CiAKIGJvb2wgVUlTY3JpcHRDb250cm9sbGVySU9TOjptYXlDb250YWluRWRpdGFibGVFbGVtZW50
c0luUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0KQogewotICAgIHJldHVybiBbd2ViVmlldygpIF9tYXlDb250YWluRWRpdGFibGVFbGVt
ZW50c0luUmVjdDpDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWlnaHQpXTsKKyAgICBDR1JlY3Qg
Y29udGVudFJlY3QgPSBDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIHJldHVy
biBbd2ViVmlldygpIF9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpbd2ViVmlldygp
IGNvbnZlcnRSZWN0OmNvbnRlbnRSZWN0IGZyb21WaWV3OnBsYXRmb3JtQ29udGVudFZpZXcoKV1d
OwogfQogCiBzdGF0aWMgVUlEZXZpY2VPcmllbnRhdGlvbiB0b1VJRGV2aWNlT3JpZW50YXRpb24o
RGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZmMDMzODYxZTgxN2U1MDE5
ZTU1NWUxNmIwZTliNzA3ZGUwMDIyN2UuLmU1YTA4MTExMjZiN2Y1NGQyNDNjYjE2ZjFiNDY4M2Jj
NDU3YjEwMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNC0xNCAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAtX3JlcXVlc3RUZXh0SW5wdXRD
b250ZXh0c0luUmVjdCB0byBXS0NvbnRlbnRWaWV3IHRvIHNpbXBsaWZ5IGltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzOTgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjU2OTMxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IGFuZCBleHBlY3RlZCByZXN1
bHRzIG5vdyB0aGF0IFVJU2NyaXB0Q29udHJvbGxlci5tYXlDb250YWluRWRpdGFibGVFbGVtZW50
c0luUmVjdCgpCisgICAgICAgIGV4cGVjdHMgdGhlIHBhc3NlZCByZWN0IHRvIGJlIGluIGNvbnRl
bnQgY29vcmRpbmF0ZXMuCisKKyAgICAgICAgSSByZXBsYWNlZCBvbmUgc3ViLXRlc3Qgb2YgYSBy
ZWN0IHByZS1zY3JvbGwgd2l0aCBhbm90aGVyIHRoYXQgdGVzdHMgdGhlIGxvY2F0aW9uCisgICAg
ICAgIG9mIGEgcmVjdCB0aGF0IHdpbGwgaGF2ZSBlZGl0YWJsZSBlbGVtZW50cyBhZnRlciBzY3Jv
bGwuIFRoZSBwdXJwb3NlIG9mIHRoYXQgc3ViLXRlc3QKKyAgICAgICAgaGFzbid0IGNoYW5nZWQs
IGJ1dCBpdCBub3cgbWFrZXMgdGhlIHN1Yi10ZXN0cycgcmVjdHMgc3ltbWV0cmljIGZvciBiZWZv
cmUgYW5kIGFmdGVyCisgICAgICAgIHNjcm9sbC4gSSBhbHNvIGFkZGVkIGRlYnVnKCkgc3RhdGVt
ZW50cyB0byBkZW1hcmNhdGUgdGhlIGJlZm9yZSBzY3JvbGwgYW5kIGFmdGVyIHNjcm9sbAorICAg
ICAgICBzdWItdGVzdHMgaW4gdGhlIHJlc3VsdHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdW5kZXJz
dGFuZCB3aGF0IHRoaXMgdGVzdCBmaWxlIGlzIHRlc3RpbmcuCisKKyAgICAgICAgKiBlZGl0aW5n
L2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRtbDoKKwogMjAyMC0wMy0y
NSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hv
dWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5Ym9h
cmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVk
LWV4cGVjdGVkLnR4dAppbmRleCA4NDQ1MzBkZWE3YWVjMzFiZWFkZjE0YjZlZDRkM2FmN2MxMzBh
Y2U5Li5iYTNmZGQ0NjcyMzBmNGQ0OTQ0NWEyOTkzMmEwMGJkZGU5MjMwY2IyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRl
c3QtZml4ZWQtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsMTMgQEAgSGl0IHRlc3QgZml4ZWQgcG9z
aXRpb25lZCBlZGl0YWJsZSBlbGVtZW50LgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAK
K0JlZm9yZSBzY3JvbGw6CiBQQVNTICh4ID0gMCwgeSA9IDAsIHdpZHRoID0gMjAwLCBoZWlnaHQg
PSA0MCkgY29udGFpbnMgZWRpdGFibGUgZWxlbWVudHMuCi1QQVNTICh4ID0gMCwgeSA9IDEwMCwg
d2lkdGggPSA1MCwgaGVpZ2h0ID0gNTApIGRvZXMgbm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVu
dHMuCi1QQVNTICh4ID0gMCwgeSA9IDAsIHdpZHRoID0gMjAwLCBoZWlnaHQgPSA0MCkgY29udGFp
bnMgZWRpdGFibGUgZWxlbWVudHMuCitQQVNTICh4ID0gMCwgeSA9IDIwMCwgd2lkdGggPSAyMDAs
IGhlaWdodCA9IDQwKSBkb2VzIG5vdCBjb250YWluIGVkaXRhYmxlIGVsZW1lbnRzLgorCitBZnRl
ciBzY3JvbGw6CitQQVNTICh4ID0gMCwgeSA9IDAsIHdpZHRoID0gMjAwLCBoZWlnaHQgPSA0MCkg
ZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50cy4KK1BBU1MgKHggPSAwLCB5ID0gMjAw
LCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRzLgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQu
aHRtbAppbmRleCA2MmFhYTViMzBiZmJkM2VmNWQyZDk3ODhmMjMzOTdlYzVjODA0NWQ4Li5kMmI0
NDM0N2Y3Y2RiOWNhZGQ0ODE5M2JkYjgwZjY1YWYwNzQ3ZGM2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhlZC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLmh0bWwKQEAg
LTI5LDEyICsyOSwxNiBAQCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGRlYnVnKCJCZWZvcmUgc2Nyb2xsOiIpOwogICAgIGF3YWl0IHNob3Vs
ZEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOwotICAgIGF3YWl0IHNo
b3VsZE5vdEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDEwMCwgNTAsIDUwKTsKKyAgICBh
d2FpdCBzaG91bGROb3RIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAyMDAsIDIwMCwgNDAp
OwogCi0gICAgd2luZG93LnNjcm9sbFRvKDAsIDIwMCk7CisgICAgbGV0IG5ld1lPZmZzZXQgPSAy
MDA7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIG5ld1lPZmZzZXQpOwogCi0gICAgYXdhaXQgc2hv
dWxkSGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgZGVidWco
Ijxicj5BZnRlciBzY3JvbGw6Iik7CisgICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxl
bWVudHNJblJlY3QoMCwgMCwgMjAwLCA0MCk7CisgICAgYXdhaXQgc2hvdWxkSGF2ZUVkaXRhYmxl
RWxlbWVudHNJblJlY3QoMCwgbmV3WU9mZnNldCwgMjAwLCA0MCk7CiAKICAgICBsZXQgdGVzdENv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpOwogICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396656</attachid>
            <date>2020-04-16 09:35:43 -0700</date>
            <delta_ts>2020-04-16 09:35:43 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-210398-20200416093543.patch</filename>
            <type>text/plain</type>
            <size>27185</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0NzU2NWE1ZDYxZmE1NmMzMzgxMDk3
YjRiMDQ4NTQ1OGM5N2Q2OWQuLjY2MDU5OTgxZjE3NmFjMjRkOTJhNjUxNTQzYzQzYTgxY2U2Nzk0
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJ
blJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzk4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBBZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgYW4g
TlNBcnJheSBmcm9tIGEgV1RGOjpWZWN0b3Igd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbi4KKyAg
ICAgICAgVGhlIHRyYW5mb3JtIGZ1bmN0aW9uIGNhbiBlaXRoZXIgcmV0dXJuIGEgUmV0YWluUHRy
IG9yIGFuIGlkLgorCisgICAgICAgICogd3RmL2NvY29hL1ZlY3RvckNvY29hLmg6CisgICAgICAg
IChXVEY6OmNyZWF0ZU5TQXJyYXkpOiBBZGRlZC4KKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQg
Zm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5NTIyYzk2ZjViNTI2ZTdh
ZTljZmQ0MmNhNzkwZDg4YTNmYTZmZDYuLmJjYzI3NjA5YTE5NjA1MWYzYjJjZDUxYWI0NGVhNmI0
ZWE4ODQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDQtMTYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
Mzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAtX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0lu
UmVjdCBpcyBub3QgbmVlZGVkIG9uIE1hYywgYnV0IHN1cHBvcnRpbmcgaXQgY29tcGxpY2F0ZXMK
KyAgICAgICAgaXRzIGltcGxlbWVudGF0aW9uOiBpdCBoYXMgdG8gZGVhbCB3aXRoIGNvb3JkaW5h
dGUgc3BhY2UgZGlmZmVyZW5jZXMgZHVlIHRvIGRpZmZlcmVuY2VzCisgICAgICAgIGluIHdoYXQg
aXMgdGhlIHJvb3QgdmlldyBvbiBNYWMgYW5kIGlPUyArIGl0IGhhcyB0byBrbm93IGFib3V0IGlP
UydzIGN1c3RvbSBjb250ZW50IHZpZXdzLgorICAgICAgICBXaGlsZSB0aGlzIGZ1bmN0aW9uIHdh
cyBpbiB0aGUgIlNQSSIgaGVhZGVyLCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBhdCBBcHBsZSB0aGF0
IHdhcyB1c2luZworICAgICAgICB0aGVzZSBvdXRzaWRlIG9mIFdlYktpdCwgYW5kIEkgd2lsbCBh
c3N1bWUgbm8gbm9uLUFwcGxlIHNvZnR3YXJlIHdhcyB1c2luZyB0aGVtIGVpdGhlci4KKyAgICAg
ICAgTW92aW5nIHRoaXMgZnVuY3Rpb24gdG8gV0tDb250ZW50VmlldyBsZXRzIG1lIHNpbXBsaWZ5
IHRoZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaDogQWRkIG1vcmUgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udmVydFJl
Y3RGcm9tUm9vdFZpZXdDb29yZGluYXRlczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpdKTogRGVs
ZXRlZDsgbW92ZWQgdG8gV0tXZWJWaWV3VGVzdGluZ0lPUy5tbS4KKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6
IERlbGV0ZWQ7IG1vdmVkIHRvIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBBZGRlZC4gVHVybnMgYXJvdW5kIGFuZAorICAgICAgICBjYWxscyB0aGUgZnVuY3Rpb24g
b2YgdGhlIHNhbWUgbmFtZSBvbiB0aGUgV0tDb250ZW50Vmlldy4gSXQgdGFrZXMgY2FyZSB0byBj
b252ZXJ0IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgcmVjdCBmcm9tIFdLV2ViVmlldyBjb29yZGlu
YXRlcyB0byBXS0NvbnRlbnRWaWV3IGNvb3JkaW5hdGVzIGFuZCBmaXhlcyB1cCB0aGUgYm91bmRp
bmcgcmVjdHMKKyAgICAgICAgZm9yIHRoZSByZXR1cm5lZCBjb250ZXh0cyB0byBiZSBpbiBXS1dl
YlZpZXcgY29vcmRpbmF0ZXMuIFRoaXMga2VlcHMgZXhpc3RpbmdzIHRlc3RzIHBhc3NpbmcKKyAg
ICAgICAgYXMgbWVrZXMgdXNpbmcgdGhpcyBmdW5jdGlvbiBpbnR1aXRpdmUgc2luY2UgY2FsbGVy
cyBzcGVjaWZ5IGFuZCBnZXQgcmVjdHMgaW4gV0tXZWJWaWV3IGNvb3JkaW5hdGVzLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3JlcXVlc3REb2N1bWVudENvbnRleHQ6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0
YTpjb21wbGV0aW9uSGFuZGxlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5
Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6XSk6IE1vdmVkIGZyb20gV0tXZWJWaWV3Lm1t
LgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3JlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpjb21w
bGV0aW9uSGFuZGxlcjpdKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcubW0gYW5kIHNpbXBsaWZpZWQu
CisKIDIwMjAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIFNob3VsZCBzaG93IGlucHV0IHZpZXcgd2hlbiBiZWNhbWUgZmlyc3QgcmVzcG9u
ZGVyIGlmIGtleWJvYXJkIHdhcyBzaG93aW5nIHdoZW4gdGhlIHZpZXcgd2FzIHJlc2lnbmVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvVmVjdG9yQ29jb2EuaAppbmRleCBlNjI5YzJmM2MxODQwZWUwMWNlMDRhOTZl
N2JmNzI4OWUzYjQ2OWQwLi5kYjVkYTMwMDcwNTk1NGUyNzE0MzYwOTRjZTM2MGRmZjYwNTkyZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAvLyAgICBPcHRpb25hbDxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvckVs
ZW1lbnQoY29uc3QgVmVjdG9yRWxlbWVudFR5cGUqLCBpZCBhcnJheUVsZW1lbnQpOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNBcnJh
eShjb25zdCBWZWN0b3JUeXBlJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBl
bmFtZSBNYXBGdW5jdGlvbj4gUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJyYXkoY29uc3Qg
VmVjdG9yVHlwZSYsIE1hcEZ1bmN0aW9uKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvckVsZW1l
bnRUeXBlPiBWZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3IoTlNBcnJheSAqKTsK
IAogLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgZnVuY3Rpb24gdGVtcGxhdGVzIGFi
b3ZlLgpAQCAtNjAsNiArNjEsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4gUmV0
YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJyYXkoY29uc3QgVmVjdG9yVHlwZSYKICAgICByZXR1
cm4gYXJyYXk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIE1h
cEZ1bmN0aW9uPiBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNBcnJheShjb25zdCBWZWN0b3JU
eXBlJiB2ZWN0b3IsIE1hcEZ1bmN0aW9uIG1hcEZ1bmN0aW9uKQoreworICAgIGF1dG8gc2l6ZSA9
IHZlY3Rvci5zaXplKCk7CisgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogdmVjdG9yKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmdldFB0cihtYXBGdW5jdGlvbihl
bGVtZW50KSldOworICAgIHJldHVybiBhcnJheTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVmVj
dG9yRWxlbWVudFR5cGU+IFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0Fy
cmF5ICphcnJheSkKIHsKICAgICBWZWN0b3I8VmVjdG9yRWxlbWVudFR5cGU+IHZlY3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNmY2YmFmYWQzNGFm
OTgwNDNmNjU5YzJkZGY1MWU5NGVmZmJjM2FjZC4uMDgxMDlmNDVkNDkzNTk2M2YxN2NmOGFiMTZi
MWNlNTJjM2RiMjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9z
L1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJ
LmgKQEAgLTY5Myw3ICs2OTMsMTMgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0dl
c3R1cmVUeXBlKSB7CiBAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBDR0Zs
b2F0IF9tYXhpbXVtQmVhbVNuYXBwaW5nTGVuZ3RoOwogQGVuZAogCitAY2xhc3MgVUlXS0RvY3Vt
ZW50UmVxdWVzdDsKK0BjbGFzcyBVSVdLRG9jdW1lbnRDb250ZXh0OworCiBAcHJvdG9jb2wgVUlX
S0ludGVyYWN0aW9uVmlld1Byb3RvY29sCistICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0
YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0Rv
Y3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tE
b2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNlbGVjdFBvc2l0
aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1bWVu
dFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdLRG9jdW1l
bnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25X
aXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUp
Z2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGU7CiAt
ICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxl
Y3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGJhc2VJc1N0YXJ0OihCT09MKWJh
c2VJc1N0YXJ0IHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzOwogLSAodm9pZClj
aGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206KENHUG9pbnQpZnJvbSB0bzooQ0dQb2ludCl0
byB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDcwOGI0OTZiN2UxOWEzMGM5YjAy
YTRlMGU5ZmJkYzUyMTA3NWEwYTAuLmYzZGU2ZTM4ODk5YzU4N2JhMjE4YTFkODI0YTk5MTI1ZWM0
OGVlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtMTUwLDcgKzE1MCw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgotI2ltcG9ydCAiUmVtb3Rl
TGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaCIKQEAgLTIwNzIsNzMgKzIwNzEsNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFBy
b2Nlc3NBbmRSZXNldFN0YXRlCiAgICAgfQogfQogCi0tIChDR1JlY3QpX2NvbnZlcnRSZWN0RnJv
bVJvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzCi17
Ci0gICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gdGFsayBhYm91dCBXS1dlYlZp
ZXcgY29vcmRpbmF0ZXMgaW4gYSBjb25zaXN0ZW50IGFuZCBjcm9zcy1wbGF0Zm9ybSB3YXkuCi0g
ICAgLy8gQ3VycmVudGx5LCBuZWl0aGVyICJyb290IHZpZXciIG5vciAid2luZG93IiBtZWFuICJX
S1dlYlZpZXcgY29vcmRpbmF0ZXMiIG9uIGJvdGggcGxhdGZvcm1zLgotICAgIC8vIFNlZSBodHRw
czovL3dlYmtpdC5vcmcvYi8xOTM2NDkgYW5kIHJlbGF0ZWQgYnVncy4KLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdDpyZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzIGZyb21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0jZWxzZQotICAgIHJldHVy
biByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwotI2VuZGlmCi19Ci0KLS0gKENHUmVjdClfY29u
dmVydFJlY3RUb1Jvb3RWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdClyZWN0SW5XZWJWaWV3Q29vcmRp
bmF0ZXMKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBbc2VsZiBjb252
ZXJ0UmVjdDpyZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXMgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQo
KV07Ci0jZWxzZQotICAgIHJldHVybiByZWN0SW5XZWJWaWV3Q29vcmRpbmF0ZXM7Ci0jZW5kaWYK
LX0KLQotLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdCly
ZWN0Ci17Ci0jaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQotICAgICAgICBy
ZXR1cm4gTk87Ci0jZW5kaWYKLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9
IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0XTsKLSAgICByZXR1
cm4gV2ViS2l0OjptYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcu
Z2V0KCksIHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpOwotI2Vsc2UKLSAgICByZXR1cm4gTk87
Ci0jZW5kaWYKLX0KLQotLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihD
R1JlY3QpcmVjdEluV2ViVmlld0Nvb3JkaW5hdGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgotewot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250
ZW50Vmlld10pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQFtdKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAgaWYg
KCFbc2VsZiBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6cmVjdEluV2ViVmlld0Nv
b3JkaW5hdGVzXSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAW10pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBDR1JlY3QgcmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdFRvUm9vdFZpZXdDb29yZGluYXRlczpyZWN0SW5XZWJW
aWV3Q29vcmRpbmF0ZXNdOwotCi0gICAgYXV0byB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2Vi
Vmlldz4oc2VsZik7Ci0gICAgX3BhZ2UtPnRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMsIFt3ZWFrU2VsZiwgY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+JiBjb250ZXh0cykgewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGVsZW1lbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OmNvbnRleHRzLnNpemUoKV0pOwotCi0gICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9
IHdlYWtTZWxmLmdldCgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRleHQgOiBjb250
ZXh0cykgewotICAgICAgICAgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgY29udGV4dFdpdGhX
ZWJWaWV3Qm91bmRpbmdSZWN0ID0gY29udGV4dDsKLSAgICAgICAgICAgIGNvbnRleHRXaXRoV2Vi
Vmlld0JvdW5kaW5nUmVjdC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBfY29udmVydFJlY3RG
cm9tUm9vdFZpZXdDb29yZGluYXRlczpjb250ZXh0LmJvdW5kaW5nUmVjdF07Ci0gICAgICAgICAg
ICBbZWxlbWVudHMgYWRkT2JqZWN0OmFkb3B0TlMoW1tfV0tUZXh0SW5wdXRDb250ZXh0IGFsbG9j
XSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRleHRXaXRoV2ViVmlld0JvdW5kaW5nUmVj
dF0pLmdldCgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRs
ZXIoZWxlbWVudHMuZ2V0KCkpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9mb2N1c1RleHRJbnB1
dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkNjIzNDNlMmQ0YzY5ZGQ3YzRjZTRmNWY3NmU1
YWViYmZlYmU2N2YuLmViZDU4N2RlMDcyZTJiNTUxOWIzNDdhZTAxMTdlMWI2ZGNjODQwN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaApAQCAtMzM1LDggKzMzNSw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClf
cmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRp
b25zOwogCi0tIChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0
KXJlY3Q7Ci0tICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdCly
ZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4
dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwg
aW9zKDEzLjApKTsKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0
Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCmluZGV4IDBmMmQ1OGMz
NTczODEzNGVkOTJkNTg2MzQ4OTI0MTFjMTQ5YTNmOWEuLmYyNWVmNzM3NjAxNzY3YzAwZGU4N2Fi
NmYzODg4NzdlMGI5NTczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKQEAgLTI3
LDYgKzI3LDEwIEBACiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKK0BjbGFzcyBfV0tUZXh0SW5w
dXRDb250ZXh0OworQGNsYXNzIFVJV0tEb2N1bWVudENvbnRleHQ7CitAY2xhc3MgVUlXS0RvY3Vt
ZW50UmVxdWVzdDsKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZ0lPUykKIAogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGV4dENvbnRlbnRUeXBlRm9y
VGVzdGluZzsKQEAgLTQ0LDYgKzQ4LDExIEBACiAtICh2b2lkKV9kaXNtaXNzRmlsZVBpY2tlcjsK
IC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooaW50KXJvd0luZGV4OwogCist
IChCT09MKV9tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7Cist
ICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3JlcXVlc3REb2N1bWVudENvbnRleHQ6KFVJV0tE
b2N1bWVudFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVdL
RG9jdW1lbnRDb250ZXh0ICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYWRqdXN0U2Vs
ZWN0aW9uV2l0aERlbHRhOihOU1JhbmdlKWRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOworCiAtICh2b2lkKXNldFRpbWVQaWNrZXJW
YWx1ZVRvSG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwogCiAt
ICh2b2lkKWFwcGx5QXV0b2NvcnJlY3Rpb246KE5TU3RyaW5nICopbmV3U3RyaW5nIHRvU3RyaW5n
OihOU1N0cmluZyAqKW9sZFN0cmluZyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IDNiMmEwMWVhNmNmMTZhYzQ2
NDc2ZDYyMzUwMGU1YWY2NDhjMDc3OTUuLmQ1ZTA1MDg5NzE4ZjAzZmMwOGY1YWY4MmU0NTE5NTNk
ZGM1ODBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KQEAgLTI5LDE0ICsyOSw1NCBAQAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJT1MuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2lt
cG9ydCAiX1dLVGV4dElucHV0Q29udGV4dEludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Vs
ZW1lbnRDb250ZXh0Lmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZ0lP
UykKIAorLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVj
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBBZGp1c3QgcmV0dXJuZWQgYm91bmRp
bmcgcmVjdHMgdG8gYmUgaW4gV0tXZWJWaWV3IGNvb3JkaW5hdGVzLgorICAgIGF1dG8gYWRqdXN0
ZWRSZWN0ID0gW3NlbGYgY29udmVydFJlY3Q6cmVjdCB0b1ZpZXc6X2NvbnRlbnRWaWV3LmdldCgp
XTsKKyAgICBbX2NvbnRlbnRWaWV3IF9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6YWRq
dXN0ZWRSZWN0IGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2Vi
Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cykgeworICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJv
bmdTZWxmIHx8ICFjb250ZXh0cy5jb3VudCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQFsgXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXV0byBh
ZGp1c3RlZENvbnRleHRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OmNvbnRleHRzLmNvdW50XSk7CisgICAgICAgIGZvciAoX1dLVGV4dElucHV0Q29u
dGV4dCAqY29udGV4dCBpbiBjb250ZXh0cykgeworICAgICAgICAgICAgYXV0byBhZGp1c3RlZENv
bnRleHQgPSBjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0OworICAgICAgICAgICAgYWRqdXN0ZWRD
b250ZXh0LmJvdW5kaW5nUmVjdCA9IFtzdHJvbmdTZWxmIGNvbnZlcnRSZWN0OmFkanVzdGVkQ29u
dGV4dC5ib3VuZGluZ1JlY3QgZnJvbVZpZXc6c3Ryb25nU2VsZi0+X2NvbnRlbnRWaWV3LmdldCgp
XTsKKyAgICAgICAgICAgIFthZGp1c3RlZENvbnRleHRzIGFkZE9iamVjdDphZG9wdE5TKFtbX1dL
VGV4dElucHV0Q29udGV4dCBhbGxvY10gX2luaXRXaXRoVGV4dElucHV0Q29udGV4dDphZGp1c3Rl
ZENvbnRleHRdKS5nZXQoKV07CisgICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YWRqdXN0ZWRDb250ZXh0cy5hdXRvcmVsZWFzZSgpKTsKKyAgICB9XTsKK30KKworLSAodm9pZClf
cmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHJlcXVlc3REb2N1bWVudENvbnRleHQ6cmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKKy0gKHZvaWQp
X2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJhbmdlIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtfY29udGVu
dFZpZXcgYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOmRlbHRhUmFuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCistIChCT09MKV9tYXlDb250YWluRWRpdGFibGVF
bGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICByZXR1cm4gV2ViS2l0OjptYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChfY29udGVudFZpZXcuZ2V0KCksIFtzZWxmIGNvbnZl
cnRSZWN0OnJlY3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV0pOworfQorCiAtICh2b2lkKWtl
eWJvYXJkQWNjZXNzb3J5QmFyTmV4dAogewogICAgIFtfY29udGVudFZpZXcgYWNjZXNzb3J5VGFi
OllFU107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNWJlMjEwYmI0NWIwNGE0YWZlZWY2M2RlYzFmYjU4MTYx
NWMxM2I2Ni4uNzgwY2I5NDZhYzA4ZWVhMmFiYzJlMDBjMTkxOTZjMWZiMDhmMDg0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaApAQCAtNTY5LDYgKzU2OSw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklF
V19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChX
S0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7CiAjZW5kaWYKIAorLSAo
dm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29t
cGxldGlvbkhhbmRsZXI7CisKICNpZiBVU0UoVEVYVF9JTlRFUkFDVElPTl9BRERJVElPTlMpCiAt
ICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1Rl
eHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogLSAodm9pZClfZGlkRmluaXNoVGV4dEludGVyYWN0
aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IGViNGM4ZGUyMGJjOWM3MDc2OTY3MGUyOTUxMDQ4NTk0NTg4YjlhODEu
LmI2YmY0MzFjODAxNTI3YTk2MTkxNmE3YzhhNmUxY2VhMWQxZmQ2MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtNTA4Miw2ICs1MDgyLDI2IEBAIC0gKENHUmVjdClyZWN0Q29udGFpbmluZ0NhcmV0U2Vs
ZWN0aW9uCiAgICAgcmV0dXJuIENHUmVjdFplcm87CiB9CiAKKy0gKHZvaWQpX3JlcXVlc3RUZXh0
SW5wdXRDb250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7
CisjaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKKyAgICBpZiAoIVdlYktpdDo6bWF5Q29udGFp
bkVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2VsZiwgcmVjdCkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBfcGFn
ZS0+dGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCwgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4m
IGNvbnRleHRzKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwor
ICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgY29udGV4dHMuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVOU0FycmF5KGNvbnRleHRzLCBb
XSAoY29uc3QgYXV0byYgY29udGV4dCkgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tf
V0tUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBfaW5pdFdpdGhUZXh0SW5wdXRDb250ZXh0OmNvbnRl
eHRdKTsKKyAgICAgICAgfSkuZ2V0KCkpOworICAgIH0pOworfQorCiAjaWYgVVNFKFRFWFRfSU5U
RVJBQ1RJT05fQURESVRJT05TKQogCiAtICh2b2lkKV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25J
blRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDVhYjJiNDdkMTI3
NzFlMzcyODNkNDQ3OWJkMzNiMWIxZmJkOTUyOC4uNTM1ZTUzMjZkYjAyYWZlYjg0NzJjMjBhODBl
YTc5Y2I4MzdmYWYxZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA0LTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIC1fcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0IHRvIFdLQ29udGVudFZpZXcgdG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM5OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjE2NTY5MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgVXBkYXRlIHRlc3Qgbm93IHRoYXQgLV9yZXF1ZXN0VGV4dElucHV0
Q29udGV4dHNJblJlY3QgaGFzIG1vdmVkIGZyb20gV0tXZWJWaWV3IHRvIFdLQ29udGVudFZpZXcu
CisgICAgICAgIEkgZXhwb3NlIG5ldyB0ZXN0aW5nLW9ubHkgV0tXZWJWaWV3IFNQSSB0byBhY2Nl
c3MgaXQgb24gdGhlIGNvbnRlbnQgdmlldy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKC1bVGVz
dFdLV2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDpdKTogQWRkZWQ7
IGR1ZSB0byBjYXRlZ29yeSBuYW1lIGNoYW5nZS4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBz
eW5jaHJvbm91c2x5QWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOl0pOiBBZGRlZDsgZHVlIHRvIGNh
dGVnb3J5IG5hbWUgY2hhbmdlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW06CisgICAgICAgICgtW1dLV2ViVmlldyBz
eW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Ol0pOiBEZWxldGVkOyBk
dWUgdG8gY2F0ZWdvcnkgbmFtZSBjaGFuZ2UuCisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJv
bm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0Ol0pOiBEZWxldGVkOyBkdWUgdG8gY2F0ZWdvcnkg
bmFtZSBjaGFuZ2UuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heUNv
bnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0KTogQ29udmVydCBmcm9tIGNvbnRlbnQgY29vcmRp
bmF0ZXMKKyAgICAgICAgdG8gV0tXZWJWaWV3IGNvb3JkaW5hdGVzIG5vdyB0aGF0IC1fbWF5Q29u
dGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QgZXhwZWN0cyBpdC4KKwogMjAxOS0wOS0xMyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGlu
ZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RvY3VtZW50RWRpdGluZ0Nv
bnRleHQubW0KaW5kZXggYTM5ZDBmM2ZkYzkwMjg3OWJiN2M5YjQ5ZDk1ZTA4ZTU2NmNmOWFjZC4u
OWY5OGI4OTRjM2NhODIxNDI3MjJhZTViNDM4MDJkYWY4MjU1NTJlMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb2N1bWVudEVkaXRpbmdDb250ZXh0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5tbQpAQCAtMjksMTIgKzI5LDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgotI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlLaXRT
UEkuaCIKLSNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ3LDExICs0NCw2IEBACiAgICAgRVhQRUNUX1RS
VUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSk7IFwK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIFsoTlNBdHRyaWJ1dGVkU3RyaW5nICopYWN0
dWFsIHN0cmluZ10pOwogCi1AaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKCkKLS0gKHZvaWQpcmVx
dWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhh
bmRsZXI7Ci0tICh2b2lkKWFkanVzdFNlbGVjdGlvbldpdGhEZWx0YTooTlNSYW5nZSlkZWx0YVJh
bmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsK
LUBlbmQKLQogc3RhdGljIFVJV0tEb2N1bWVudFJlcXVlc3QgKm1ha2VSZXF1ZXN0KFVJV0tEb2N1
bWVudFJlcXVlc3RGbGFncyBmbGFncywgVUlUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE5T
SW50ZWdlciBncmFudWxhcml0eUNvdW50LCBDR1JlY3QgZG9jdW1lbnRSZWN0ID0gQ0dSZWN0WmVy
bywgaWQgPE5TQ29weWluZz4gaW5wdXRFbGVtZW50SWRlbnRpZmllciA9IG5pbCkKIHsKICAgICBh
dXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbVUlXS0RvY3VtZW50UmVxdWVzdCBhbGxvY10gaW5pdF0p
OwpAQCAtMTMwLDcgKzEyMiw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJvbm91
c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiB7CiAgICAgX19i
bG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8VUlXS0Rv
Y3VtZW50Q29udGV4dD4gcmVzdWx0OwotICAgIFtbc2VsZiB3a0NvbnRlbnRWaWV3XSByZXF1ZXN0
RG9jdW1lbnRDb250ZXh0OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihVSVdLRG9jdW1lbnRD
b250ZXh0ICpjb250ZXh0KSB7CisgICAgW3NlbGYgX3JlcXVlc3REb2N1bWVudENvbnRleHQ6cmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFVJV0tEb2N1bWVudENvbnRleHQgKmNvbnRleHQpIHsK
ICAgICAgICAgcmVzdWx0ID0gY29udGV4dDsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAg
IH1dOwpAQCAtMTQxLDcgKzEzMyw3IEBAIC0gKFVJV0tEb2N1bWVudENvbnRleHQgKilzeW5jaHJv
bm91c2x5UmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzCiAtICh2b2lk
KXN5bmNocm9ub3VzbHlBZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpcmFuZ2UKIHsK
ICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBbW3NlbGYgd2tDb250ZW50
Vmlld10gYWRqdXN0U2VsZWN0aW9uV2l0aERlbHRhOnJhbmdlIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgW3NlbGYgX2FkanVzdFNlbGVjdGlvbldpdGhEZWx0YTpyYW5nZSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewogICAgICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29u
dGV4dC5tbQppbmRleCBiZmFhOTg1MDhjM2U1MWM3YzdhYjgwZTE5N2QwZGYxOTZhNzMwNzg0Li43
YjRkYjY1YmQ2MTY0ZWY1NDY3NGYyNDQzNjhhOGM4OGZmNTM0Mzc0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW0KQEAgLTI1LDE3ICsyNSwxOCBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJUZXN0Q29jb2EuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1RleHRJbnB1dENvbnRleHQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyAoU3luY2hyb25vdXNUZXh0SW5wdXRDb250ZXh0KQorQGltcGxlbWVudGF0aW9uIFRlc3RXS1dl
YlZpZXcgKFN5bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJheTxfV0tUZXh0
SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0lu
UmVjdDooQ0dSZWN0KXJlY3QKIHsKQEAgLTI2MywzICsyNjQsNSBAQCBURVNUKFJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0LCBESVNBQkxFRF9Gb2N1c1RleHRJbnB1dENvbnRleHQpCiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CiAgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6dGV4dEFyZWEuZ2V0KCld
KTsKIH0KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGVkMmI3
NzZkNDU5ZTY3NDEwYWUwYjIzMDIyNDMzZjFhNDMyODUzOC4uNzcwMTk3MjJkOTM4NTQ2NDJlNzFj
NDU0NWMxYTQxOTMxZmJmY2Q5NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtODM4LDcgKzgzOCw4IEBAIEpTT2JqZWN0
UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6cHJvcGVydGllc09mTGF5ZXJXaXRoSUQodWludDY0
X3QgbGF5ZXJJRCkgY29uCiAKIGJvb2wgVUlTY3JpcHRDb250cm9sbGVySU9TOjptYXlDb250YWlu
RWRpdGFibGVFbGVtZW50c0luUmVjdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewotICAgIHJldHVybiBbd2ViVmlldygpIF9tYXlDb250
YWluRWRpdGFibGVFbGVtZW50c0luUmVjdDpDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWlnaHQp
XTsKKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gQ0dSZWN0TWFrZSh4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICByZXR1cm4gW3dlYlZpZXcoKSBfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJl
Y3Q6W3dlYlZpZXcoKSBjb252ZXJ0UmVjdDpjb250ZW50UmVjdCBmcm9tVmlldzpwbGF0Zm9ybUNv
bnRlbnRWaWV3KCldXTsKIH0KIAogc3RhdGljIFVJRGV2aWNlT3JpZW50YXRpb24gdG9VSURldmlj
ZU9yaWVudGF0aW9uKERldmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZjAz
Mzg2MWU4MTdlNTAxOWU1NTVlMTZiMGU5YjcwN2RlMDAyMjdlLi40Zjk2ZjY1MDIxZTc4MTZjOTVi
ZGQ1ZGQ3MDM4NjFiMzJlNzBkNzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDQtMTYg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgLV9yZXF1
ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3QgdG8gV0tDb250ZW50VmlldyB0byBzaW1wbGlmeSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEwMzk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY1NjkzMT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgdGVzdCBhbmQgZXhw
ZWN0ZWQgcmVzdWx0cyBub3cgdGhhdCBVSVNjcmlwdENvbnRyb2xsZXIubWF5Q29udGFpbkVkaXRh
YmxlRWxlbWVudHNJblJlY3QoKQorICAgICAgICBleHBlY3RzIHRoZSBwYXNzZWQgcmVjdCB0byBi
ZSBpbiBjb250ZW50IGNvb3JkaW5hdGVzLgorCisgICAgICAgIEkgcmVwbGFjZWQgb25lIHN1Yi10
ZXN0IG9mIGEgcmVjdCBwcmUtc2Nyb2xsIHdpdGggYW5vdGhlciB0aGF0IHRlc3RzIHRoZSBsb2Nh
dGlvbgorICAgICAgICBvZiBhIHJlY3QgdGhhdCB3aWxsIGhhdmUgZWRpdGFibGUgZWxlbWVudHMg
YWZ0ZXIgc2Nyb2xsLiBUaGUgcHVycG9zZSBvZiB0aGF0IHN1Yi10ZXN0CisgICAgICAgIGhhc24n
dCBjaGFuZ2VkLCBidXQgaXQgbm93IG1ha2VzIHRoZSBzdWItdGVzdHMnIHJlY3RzIHN5bW1ldHJp
YyBmb3IgYmVmb3JlIGFuZCBhZnRlcgorICAgICAgICBzY3JvbGwuIEkgYWxzbyBhZGRlZCBkZWJ1
ZygpIHN0YXRlbWVudHMgdG8gZGVtYXJjYXRlIHRoZSBiZWZvcmUgc2Nyb2xsIGFuZCBhZnRlciBz
Y3JvbGwKKyAgICAgICAgc3ViLXRlc3RzIGluIHRoZSByZXN1bHRzIHRvIG1ha2UgaXQgZWFzaWVy
IHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRlc3QgZmlsZSBpcyB0ZXN0aW5nLgorCisgICAgICAg
ICogZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGVkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10ZXN0LWZpeGVkLmh0bWw6CisK
IDIwMjAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIFNob3VsZCBzaG93IGlucHV0IHZpZXcgd2hlbiBiZWNhbWUgZmlyc3QgcmVzcG9uZGVy
IGlmIGtleWJvYXJkIHdhcyBzaG93aW5nIHdoZW4gdGhlIHZpZXcgd2FzIHJlc2lnbmVkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhl
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQt
dGVzdC1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggODQ0NTMwZGVhN2FlYzMxYmVhZGYxNGI2ZWQ0
ZDNhZjdjMTMwYWNlOS4uYmEzZmRkNDY3MjMwZjRkNDk0NDVhMjk5MzJhMDBiZGRlOTIzMGNiMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3Qt
Zml4ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVn
aW9uL2hpdC10ZXN0LWZpeGVkLWV4cGVjdGVkLnR4dApAQCAtMyw5ICszLDEzIEBAIEhpdCB0ZXN0
IGZpeGVkIHBvc2l0aW9uZWQgZWRpdGFibGUgZWxlbWVudC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCitCZWZvcmUgc2Nyb2xsOgogUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIw
MCwgaGVpZ2h0ID0gNDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRzLgotUEFTUyAoeCA9IDAs
IHkgPSAxMDAsIHdpZHRoID0gNTAsIGhlaWdodCA9IDUwKSBkb2VzIG5vdCBjb250YWluIGVkaXRh
YmxlIGVsZW1lbnRzLgotUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVpZ2h0ID0g
NDApIGNvbnRhaW5zIGVkaXRhYmxlIGVsZW1lbnRzLgorUEFTUyAoeCA9IDAsIHkgPSAyMDAsIHdp
ZHRoID0gMjAwLCBoZWlnaHQgPSA0MCkgZG9lcyBub3QgY29udGFpbiBlZGl0YWJsZSBlbGVtZW50
cy4KKworQWZ0ZXIgc2Nyb2xsOgorUEFTUyAoeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDIwMCwgaGVp
Z2h0ID0gNDApIGRvZXMgbm90IGNvbnRhaW4gZWRpdGFibGUgZWxlbWVudHMuCitQQVNTICh4ID0g
MCwgeSA9IDIwMCwgd2lkdGggPSAyMDAsIGhlaWdodCA9IDQwKSBjb250YWlucyBlZGl0YWJsZSBl
bGVtZW50cy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRl
c3QtZml4ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGFibGUtcmVnaW9uL2hpdC10
ZXN0LWZpeGVkLmh0bWwKaW5kZXggNjJhYWE1YjMwYmZiZDNlZjVkMmQ5Nzg4ZjIzMzk3ZWM1Yzgw
NDVkOC4uZDJiNDQzNDdmN2NkYjljYWRkNDgxOTNiZGI4MGY2NWFmMDc0N2RjNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0YWJsZS1yZWdpb24vaGl0LXRlc3QtZml4ZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRhYmxlLXJlZ2lvbi9oaXQtdGVzdC1maXhl
ZC5odG1sCkBAIC0yOSwxMiArMjksMTYgQEAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBkZWJ1ZygiQmVmb3JlIHNjcm9sbDoiKTsKICAgICBh
d2FpdCBzaG91bGRIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAwLCAyMDAsIDQwKTsKLSAg
ICBhd2FpdCBzaG91bGROb3RIYXZlRWRpdGFibGVFbGVtZW50c0luUmVjdCgwLCAxMDAsIDUwLCA1
MCk7CisgICAgYXdhaXQgc2hvdWxkTm90SGF2ZUVkaXRhYmxlRWxlbWVudHNJblJlY3QoMCwgMjAw
LCAyMDAsIDQwKTsKIAotICAgIHdpbmRvdy5zY3JvbGxUbygwLCAyMDApOworICAgIGxldCBuZXdZ
T2Zmc2V0ID0gMjAwOworICAgIHdpbmRvdy5zY3JvbGxUbygwLCBuZXdZT2Zmc2V0KTsKIAotICAg
IGF3YWl0IHNob3VsZEhhdmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOwor
ICAgIGRlYnVnKCI8YnI+QWZ0ZXIgc2Nyb2xsOiIpOworICAgIGF3YWl0IHNob3VsZE5vdEhhdmVF
ZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIDAsIDIwMCwgNDApOworICAgIGF3YWl0IHNob3VsZEhh
dmVFZGl0YWJsZUVsZW1lbnRzSW5SZWN0KDAsIG5ld1lPZmZzZXQsIDIwMCwgNDApOwogCiAgICAg
bGV0IHRlc3RDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWlu
ZXIiKTsKICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>