<?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>222060</bug_id>
          
          <creation_ts>2021-02-17 12:37:03 -0800</creation_ts>
          <short_desc>Reduce explicit usage of [objC autorelease] in WebKit even further</short_desc>
          <delta_ts>2021-02-17 21:07:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221932</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>
          <dependson>222009</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1730451</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 12:37:03 -0800</bug_when>
    <thetext>Reduce explicit usage of [objC autorelease] in WebKit even further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730489</commentid>
    <comment_count>1</comment_count>
      <attachid>420702</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 13:22:24 -0800</bug_when>
    <thetext>Created attachment 420702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730494</commentid>
    <comment_count>2</comment_count>
      <attachid>420705</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 13:28:56 -0800</bug_when>
    <thetext>Created attachment 420705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730634</commentid>
    <comment_count>3</comment_count>
      <attachid>420705</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-17 16:27:34 -0800</bug_when>
    <thetext>Comment on attachment 420705
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.mm:53
&gt; +    return @[ adoptNS([[WKTextSelectionRect alloc] initWithCGRect:_elementContext.boundingRect]).autorelease() ];

This would be a bit more efficient as:

auto rect = adoptNS([[WKTextSelectionRect alloc] initWithCGRect:_elementContext.boundingRect]);
return @[ rect.get() ];

I don&apos;t think the autorelease is needed in this case because the array should retain it.

&gt; Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:324
&gt; -    [_popover setPopoverController:[[[UIPopoverController alloc] initWithContentViewController:_suggestionsViewController.get()] autorelease]];
&gt; +    [_popover setPopoverController:adoptNS([[UIPopoverController alloc] initWithContentViewController:_suggestionsViewController.get()]).autorelease()];

Is this autorelease actually needed if we have a retainptr? I would guess setPopoverController: retains the parameter.

&gt; Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm:416
&gt; -    self.popoverController = [[[UIPopoverController alloc] initWithContentViewController:popoverViewController.get()] autorelease];
&gt; +    self.popoverController = adoptNS([[UIPopoverController alloc] initWithContentViewController:popoverViewController.get()]).autorelease();

Same question as above. Is this autorelease needed?

&gt; Source/WebKit/UIProcess/mac/WKTextInputWindowController.mm:142
&gt; -            *string = [[text copy] autorelease];
&gt; +            *string = adoptNS([text copy]).autorelease();

If this is not requirement to have a NSString ** out parameter here (e.g this method is part of an interface or protocol definition we are inheriting from / conforming to) I think we should probably just change things to return an Optional&lt;RetainPtr&lt;NSString&gt;&gt; or something like that.

&gt; Source/WebKitLegacy/mac/WebView/WebResource.mm:305
&gt; -    auto coreResource = ArchiveResource::create(SharedBuffer::create(copyData ? [[data copy] autorelease] : data), URL, MIMEType, textEncodingName, frameName, response);
&gt; +    auto coreResource = ArchiveResource::create(SharedBuffer::create(copyData ? adoptNS([data copy]).autorelease() : data), URL, MIMEType, textEncodingName, frameName, response);

I don&apos;t think this autorelease is needed. The RetainPtr&apos;s normal release should be fine.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:3221
&gt; -    [schemesWithRepresentationsSet addObject:[[[URLScheme lowercaseString] copy] autorelease]];
&gt; +    [schemesWithRepresentationsSet addObject:adoptNS([[URLScheme lowercaseString] copy]).autorelease()];

I don&apos;t think this autorelease is necessary either.

&gt; Tools/DumpRenderTree/ios/DumpRenderTreeBrowserView.mm:117
&gt; -    self.scrollViewDelegate = [[[DumpRenderTreeWebScrollViewDelegate alloc] initWithScrollView:self] autorelease];
&gt; +    self.scrollViewDelegate = adoptNS([[DumpRenderTreeWebScrollViewDelegate alloc] initWithScrollView:self]).autorelease();

This autorelease is not necessary. Assigning to self.scrollViewDelegate will retain the thing, so just RetainPtr&apos;s release should be fine. You could also make scrollViewDelegate a RetainPtr.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1430
&gt;          result = [NSMutableString stringWithFormat:@&quot;\n--------\nFrame: &apos;%@&apos;\n--------\n&quot;, [frame name]];
&gt; +    else
&gt; +        result = adoptNS([[NSMutableString alloc] init]);

Could be a little more efficient and change the first branch to an adoptNS(NSMutableString alloc] initWithFormat...).

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:957
&gt; +        auto invocation = retainPtr([savedMouseEvents objectAtIndex:0]);

You should be able to write this as retainPtr(savedMouseEvents[0]) I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730645</commentid>
    <comment_count>4</comment_count>
      <attachid>420705</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-17 16:48:29 -0800</bug_when>
    <thetext>Comment on attachment 420705
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:667
&gt; +    session.localContext = adoptNS([[WKDragSessionContext alloc] init]).autorelease();

This should just be get(), not autorelease(). There’s no need to autorelease something just to assign it to a strong property.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8286
&gt; +        completionHandler(adoptNS([[WKTextPlaceholder alloc] initWithElementContext:placeholderToUse]).autorelease());

This should be get(), not autorelease(). There is no need to auto release something just to pass it to a function.

&gt;&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.mm:53
&gt;&gt; +    return @[ adoptNS([[WKTextSelectionRect alloc] initWithCGRect:_elementContext.boundingRect]).autorelease() ];
&gt; 
&gt; This would be a bit more efficient as:
&gt; 
&gt; auto rect = adoptNS([[WKTextSelectionRect alloc] initWithCGRect:_elementContext.boundingRect]);
&gt; return @[ rect.get() ];
&gt; 
&gt; I don&apos;t think the autorelease is needed in this case because the array should retain it.

Yes, this should be get(), not autorelease(). There is no need to auto release something just to pass it to the @[] operator. It does not need to be refactored; can just change autorelease to get.

&gt; Source/WebKit/UIProcess/ios/WKWebEvent.mm:53
&gt; +        event = adoptNS([keyEvent _cloneEvent]).autorelease(); // UIKit uses a singleton for hardware keyboard events.

This should be refactored to use RetainPtr instead of autorelease.

&gt;&gt; Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:324
&gt;&gt; +    [_popover setPopoverController:adoptNS([[UIPopoverController alloc] initWithContentViewController:_suggestionsViewController.get()]).autorelease()];
&gt; 
&gt; Is this autorelease actually needed if we have a retainptr? I would guess setPopoverController: retains the parameter.

This should be get(), not autorelease(). There is no need to auto release something just to pass it to a setter method.

&gt;&gt; Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm:416
&gt;&gt; +    self.popoverController = adoptNS([[UIPopoverController alloc] initWithContentViewController:popoverViewController.get()]).autorelease();
&gt; 
&gt; Same question as above. Is this autorelease needed?

This should just be get(), not autorelease(). There’s no need to autorelease something just to assign it to a strong property.

&gt; Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.mm:164
&gt; +        [self.delegate quickboard:self textEntered:adoptNS([[NSAttributedString alloc] initWithString:_inputText.get()]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/ios/forms/WKTextInputListViewController.mm:100
&gt; +    [self.delegate quickboard:self textEntered:adoptNS([[NSAttributedString alloc] initWithString:text]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:552
&gt; +    _rootViewController.get().view = adoptNS([[UIView alloc] initWithFrame:_window.get().bounds]).autorelease();

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:393
&gt; +    RetainPtr&lt;_WKUserStyleSheet&gt; styleSheet = adoptNS([[_WKUserStyleSheet alloc] initWithSource:styleSheetSource forWKWebView:nil forMainFrameOnly:NO includeMatchPatternStrings:@[] excludeMatchPatternStrings:@[] baseURL:adoptNS([[NSURL alloc] initWithString:@&quot;http://CamelCase/&quot;]).autorelease() level:_WKUserStyleUserLevel contentWorld:world.get()]);

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:989
&gt; +            replyHandler(adoptNS([[NSData alloc] init]).autorelease(), nil);

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/UserContentWorld.mm:175
&gt; +        [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:body.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:565
&gt; +    [richText appendAttributedString:adoptNS([[NSAttributedString alloc] initWithString:@&quot;Lorem ipsum &quot;]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:567
&gt; +    [richText appendAttributedString:adoptNS([[NSAttributedString alloc] initWithString:@&quot; dolor sit amet.&quot;]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:383
&gt; +                [(id&lt;WKURLSchemeTaskPrivate&gt;)task _didPerformRedirection:adoptNS([[NSURLResponse alloc] init]).autorelease() newRequest:adoptNS([[NSURLRequest alloc] init]).autorelease()];

get(), get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:386
&gt; +                [task didReceiveResponse:adoptNS([[NSURLResponse alloc] init]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:389
&gt; +                [task didReceiveData:adoptNS([[NSData alloc] init]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:577
&gt; +        [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:strlen(bytes) textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:794
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:805
&gt; +                [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:0 textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:864
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:935
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:989
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1067
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:mimeType expectedContentLength:response.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1120
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1179
&gt; +        [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:response.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1242
&gt; +        [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:strlen(bytes) textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1384
&gt; +        [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:responseString.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:514
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:518
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:0 textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:581
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:586
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:0 textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:666
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:671
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:0 textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:737
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:742
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:0 textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:747
&gt; +            [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:0 textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebGLPolicy.mm:67
&gt; +    [urlSchemeTask didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:urlSchemeTask.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:132
&gt; +    configuration.get().websiteDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]).autorelease();

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:468
&gt; +    [configuration setWebsiteDataStore:adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]).autorelease()]).autorelease()];

get(), get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:493
&gt; +    configuration.get().websiteDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration.get()]).autorelease();

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:533
&gt; +    webViewConfiguration.get().websiteDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]).autorelease();

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:679
&gt; +    [webViewConfiguration setWebsiteDataStore:adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:712
&gt; +    [webViewConfiguration setWebsiteDataStore:adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:850
&gt; +    [webViewConfiguration setWebsiteDataStore:adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:704
&gt; +        [(id&lt;WKURLSchemeTaskPrivate&gt;)task _didPerformRedirection:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:nil expectedContentLength:0 textEncodingName:nil]).autorelease() newRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@&quot;test:///autoplay-check.html&quot;]]];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:707
&gt; +        [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:data.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:720
&gt; +    [task didReceiveResponse:response.autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:736
&gt; +    [configuration setURLSchemeHandler:adoptNS([[TestSchemeHandler alloc] initWithVideoData:WTFMove(videoData)]).autorelease() forURLScheme:@&quot;test&quot;];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:1036
&gt; +    [task didReceiveResponse:adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:html.length textEncodingName:nil]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:1622
&gt; +        [websitePolicies _setWebsiteDataStore:adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]).autorelease()]).autorelease()];

get(), get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:1731
&gt; +        return adoptNS([[WKUserScript alloc] initWithSource:script injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES]).autorelease();

Should return a RetainPtr instead of an autoreleased point.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:1747
&gt; +                [preferences _setUserContentController:adoptNS([WKUserContentController new]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:1774
&gt; +        [preferences _setUserContentController:adoptNS([WKUserContentController new]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:1552
&gt; +    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500) configuration:adoptNS([[WKWebViewConfiguration alloc] init]).autorelease() processPoolConfiguration:processPoolConfiguration.get()]);

get()

&gt; Tools/TestWebKitAPI/Tests/mac/MemoryPressureHandler.mm:35
&gt; +    adoptNS([[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:nil]).autorelease();

Not sure why autorelease is wanted here.

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:215
&gt; +        *errorOut = strongError.autorelease();

Not a big fan of these autoreleased out arguments.

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:420
&gt; +    return [self initWithFrame:frame configuration:defaultConfiguration.autorelease()];

get()

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:457
&gt; +    [configuration setProcessPool:adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:176
&gt; +        [items addObject:adoptNS([[UIDragItem alloc] initWithItemProvider:itemProvider]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:347
&gt; +        return [self initWithWebView:adoptNS([[TestWKWebView alloc] initWithFrame:frame configuration:configuration]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:349
&gt; +    return [self initWithWebView:adoptNS([[TestWKWebView alloc] initWithFrame:frame]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:114
&gt; +        _webView = adoptNS([[DragAndDropTestWKWebView alloc] initWithFrame:frame configuration:configuration ?: adoptNS([[WKWebViewConfiguration alloc] init]).autorelease() simulator:self]);

get()

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:144
&gt; +        m_websiteDataStore = (__bridge WKWebsiteDataStoreRef)adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfig.get()]).autorelease();

Can we use a RetainPtr for this? I don’t understand the lifetime guarantees here.

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:198
&gt; +    PlatformWebView* view = new PlatformWebView(newConfiguration.autorelease(), options);

get()

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:1146
&gt; +        @&quot;eventInfo&quot;: adoptNS([eventInfo copy]).autorelease(),

get()

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:1147
&gt; +        @&quot;completionBlock&quot;: adoptNS([completionBlock copy]).autorelease()

get()

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:1150
&gt; +    NSThread *eventDispatchThread = adoptNS([[NSThread alloc] initWithTarget:self selector:@selector(eventDispatchThreadEntry:) object:threadData]).autorelease();

Should use RetainPtr instead of autorelease here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730646</commentid>
    <comment_count>5</comment_count>
      <attachid>420705</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 16:50:41 -0800</bug_when>
    <thetext>Comment on attachment 420705
Patch

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

&gt;&gt; Source/WebKit/UIProcess/mac/WKTextInputWindowController.mm:142
&gt;&gt; +            *string = adoptNS([text copy]).autorelease();
&gt; 
&gt; If this is not requirement to have a NSString ** out parameter here (e.g this method is part of an interface or protocol definition we are inheriting from / conforming to) I think we should probably just change things to return an Optional&lt;RetainPtr&lt;NSString&gt;&gt; or something like that.

The function cannot return a Optional&lt;RetainPtr&lt;NSString&gt;&gt; because the BOOL being returned is not linked to the NSString being returned.
While we have some flexibility with how _interpretKeyEvent is defined, changing it won&apos;t help much because it is called from interpretKeyEvent (without leading _) which has the same prototype and is exposed in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730664</commentid>
    <comment_count>6</comment_count>
      <attachid>420764</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 17:23:29 -0800</bug_when>
    <thetext>Created attachment 420764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730691</commentid>
    <comment_count>7</comment_count>
      <attachid>420764</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-17 18:06:07 -0800</bug_when>
    <thetext>Comment on attachment 420764
Patch

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

&gt; Source/WebKitLegacy/ios/WebView/WebPDFViewIOS.mm:298
&gt; +        _title = adoptNS([(NSString *)title.get() copy]);

I don’t think we need a copy here. I would write:

    _title = (NSString *)title.get();

&gt; Source/WebKitLegacy/ios/WebView/WebPDFViewIOS.mm:299
&gt; +        core([self _frame])-&gt;loader().client().dispatchDidReceiveTitle({ title.bridgingAutorelease(), TextDirection::LTR });

Should just use _title.get() here instead of title.bridgingAutorelease().

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:1953
&gt; +                return adoptRef(new NetscapePluginWidget(pluginView.autorelease()));

get()

&gt; Source/WebKitLegacy/mac/WebView/WebFrameView.mm:372
&gt; +    [scrollView setContentView:adoptNS([[WebClipView alloc] initWithFrame:[scrollView bounds]]).autorelease()];

get()

&gt; Source/WebKitLegacy/mac/WebView/WebFrameView.mm:1232
&gt; +    [scrollView setContentView:adoptNS([[WebClipView alloc] initWithFrame:[scrollView bounds]]).autorelease()];

get()

&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:251
&gt; +            [resultsForWord addObject:adoptNS([[LayoutTestTextCheckingResult alloc] initWithType:nsTextCheckingType(typeValue.get()) range:NSMakeRange(fromValue, toValue - fromValue) replacement:(__bridge NSString *)replacementText.get() details:details.get()]).autorelease()];

get()

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/NetworkProcessCrashNonPersistentDataStore.mm:87
&gt; +    checkRecoveryAfterCrash(adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]).autorelease()]).autorelease());

get(), get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730697</commentid>
    <comment_count>8</comment_count>
      <attachid>420779</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 18:22:48 -0800</bug_when>
    <thetext>Created attachment 420779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730730</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-17 21:06:21 -0800</bug_when>
    <thetext>Committed r273062: &lt;https://commits.webkit.org/r273062&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420779.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730731</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-17 21:07:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/74463518&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420702</attachid>
            <date>2021-02-17 13:22:24 -0800</date>
            <delta_ts>2021-02-17 13:39:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222060-20210217132223.patch</filename>
            <type>text/plain</type>
            <size>462990</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjM2ZhMzMxMzVlMmU2Yzcy
Mzg3ZjAzZmVhYmQ1ODA4OTM5YTUxMTYuLmQ5YzczZGQwZDM1NWUxMDgzYmZmMDFlZDU5M2U1MTkw
MjYwNDQ4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ug
b2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBldmVuIGZ1cnRoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGZ1cnRoZXIgYnkgdXNpbmcgUmV0YWlu
UHRyLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2VydmljZTo6dHJhbnNjZWl2ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFn
U291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgICgtW1dLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlciBnZXN0dXJlUmVj
b2duaXplckZvckludGVyYWN0aXZlVHJhbnNpdGlvbjpXaXRoVGFyZ2V0OmFjdGlvbjpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAg
IChhcHBMaW5rRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKGVuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250aW51ZUNv
bnRleHRNZW51SW50ZXJhY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RhdGFG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6YXRQb3NpdGlvbjp0eXBlOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJv
bGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICgrW1dLVGV4dFJhbmdlIHRleHRS
YW5nZVdpdGhTdGF0ZTppc1JhbmdlOmlzRWRpdGFibGU6c3RhcnRSZWN0OmVuZFJlY3Q6c2VsZWN0
aW9uUmVjdHM6c2VsZWN0ZWRUZXh0TGVuZ3RoOl0pOgorICAgICAgICAoK1tXS1RleHRQb3NpdGlv
biB0ZXh0UG9zaXRpb25XaXRoUmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRlciByZWN0c10pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbToKKyAgICAgICAgKC1bV0tXZWJF
dmVudCBpbml0V2l0aEV2ZW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvbnNQb3BvdmVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBlOl0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6
Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRGF0ZVBpY2tlclZp
ZXdDb250cm9sbGVyIF9kYXRlQ29tcG9uZW50Rm9yRGF5Om1vbnRoOnllYXI6ZXJhOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tOgorICAgICAg
ICAoLVtXS09wdGlvblBpY2tlckNlbGwgaW5pdFdpdGhPcHRpb25JdGVtOl0pOgorICAgICAgICAo
LVtXS09wdGlvbkdyb3VwUGlja2VyQ2VsbCBpbml0V2l0aE9wdGlvbkl0ZW06XSk6CisgICAgICAg
ICgtW1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIgcGlja2VyVmlldzp2aWV3Rm9yUm93OmZvckNvbXBv
bmVudDpyZXVzaW5nVmlldzpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RTaW5nbGVQaWNrZXIgcGlj
a2VyVmlldzphdHRyaWJ1dGVkVGl0bGVGb3JSb3c6Zm9yQ29tcG9uZW50Ol0pOgorICAgICAgICAo
LVtXS1NlbGVjdFBpY2tlclRhYmxlVmlld0NvbnRyb2xsZXIgdGFibGVWaWV3OnZpZXdGb3JIZWFk
ZXJJblNlY3Rpb246XSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyVGFibGVWaWV3Q29udHJv
bGxlciB0YWJsZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbToKKyAgICAgICAgKC1bV0tTZWxl
Y3RUYWJsZVZpZXdDb250cm9sbGVyIHRhYmxlVmlldzpjZWxsRm9yUm93QXRJbmRleFBhdGg6XSk6
CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tOgorICAgICAg
ICAoLVtXS051bWJlclBhZFZpZXcgX2J1dHRvbkZvclBvc2l0aW9uOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlciBfaGFuZGxlS2V5UHJlc3M6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciBhY3Rpb25Db250cm9s
bGVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
ZW50ZXJUZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0UGFuZWwgX2ludGVycHJldEtleUV2ZW50OnVzaW5nTGVnYWN5Q29jb2FUZXh0
SW5wdXQ6c3RyaW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3Ry
YXRlZ3kubW06CisgICAgICAgICgrW1dLVmlld0xheW91dFN0cmF0ZWd5IGxheW91dFN0cmF0ZWd5
V2l0aFBhZ2U6dmlldzp2aWV3SW1wbDptb2RlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViQ29sb3JQaWNrZXJNYWMubW06CisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIHNldEFu
ZFNob3dQaWNrZXI6d2l0aENvbG9yOnN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tOgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzpyb3dWaWV3Rm9yUm93Ol0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzp2
aWV3Rm9yVGFibGVDb2x1bW46cm93Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoLVtX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBfY2VydGlmaWNhdGVDaGFpbl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtXS0RPTURvY3Vt
ZW50IHBhcnNlcllpZWxkVG9rZW5dKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OnRvV0tET01U
eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01S
YW5nZS5tbToKKyAgICAgICAgKC1bV0tET01SYW5nZSByYW5nZUJ5RXhwYW5kaW5nVG9Xb3JkQm91
bmRhcnlCeUNoYXJhY3RlcnM6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKwogMjAyMS0wMi0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNv
bT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVGhlIHdob2xlIGNvbnRlbnQgaXMg
dW5uZWNlc3NhcmlseSByZXBhaW50ZWQgYnkgYW5pbWF0aW9ucyBpbiBub24tQUMgbW9kZSBwYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGZiNzRlMTdiZGYwN2FjZTExYzIzOWRm
ZjQ1NWUwYmMwYWU2MTQzN2QuLmYwZTk3ZGYyYjliNDczZWYzYmEwY2E5ZWJhNDZlY2E0N2NmNmIw
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0w
Mi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBl
eHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gZnVydGhl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZnVydGhlciBi
eSB1c2luZyBSZXRhaW5QdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25SZWN0Lm06CisgICAgICAgICgrW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlBERlZpZXdJT1MubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgX2NoZWNr
UERGVGl0bGVdKToKKwogMjAyMS0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4Njg1MWY0NDAxNTU5ZjJjZWRk
MTQ1MDkwNDgzMjRiZjc3MzZhMGQ4Li44ZDU5OTQ4YzE2YjgzNzhjNTc3MjY3NjIyYmZkMWE5NDRj
MTVmZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg5IEBACisy
MDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBm
dXJ0aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBmdXJ0
aGVyIGJ5IHVzaW5nIFJldGFpblB0ci4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAg
IChraXQpOgorICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAgICAgIChraXQp
OgorICAgICAgICAqIERPTS9ET01CbG9iLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBE
T00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUNTU1J1
bGVMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbi5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUNTU1ZhbHVlLm1t
OgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ291bnRlci5tbToKKyAgICAgICAg
KGtpdCk6CisgICAgICAgICogRE9NL0RPTUV2ZW50Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAg
ICAgKiBET00vRE9NRmlsZUxpc3QubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9E
T01IVE1MQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUhU
TUxPcHRpb25zQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TUltcGxlbWVudGF0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTWVk
aWFFcnJvci5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTU1lZGlhTGlzdC5t
bToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTU5hbWVkTm9kZU1hcC5tbToKKyAg
ICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTU5vZGUubW06CisgICAgICAgIChraXQpOgor
ICAgICAgICAqIERPTS9ET01Ob2RlSXRlcmF0b3IubW06CisgICAgICAgIChraXQpOgorICAgICAg
ICAqIERPTS9ET01Ob2RlTGlzdC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TVJHQkNvbG9yLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NUmFuZ2UubW06
CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01SZWN0Lm1tOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgKiBET00vRE9NU3R5bGVTaGVldC5tbToKKyAgICAgICAgKGtpdCk6CisgICAg
ICAgICogRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAg
KiBET00vRE9NVGltZVJhbmdlcy5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TVRva2VuTGlzdC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVRyZWVXYWxr
ZXIubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01YUGF0aC5tbToKKyAgICAg
ICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbToKKyAgICAgICAg
KGtpdCk6CisgICAgICAgICogRE9NL0RPTVhQYXRoUmVzdWx0Lm1tOgorICAgICAgICAoa2l0KToK
KyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9kZSB3
ZWJBcmNoaXZlXSk6CisgICAgICAgICgtW0RPTU5vZGUgd2ViQXJjaGl2ZUJ5RmlsdGVyaW5nU3Vi
ZnJhbWVzOl0pOgorICAgICAgICAoLVtET01SYW5nZSB3ZWJBcmNoaXZlXSk6CisgICAgICAgICog
RGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgbWVudUl0ZW1XaXRoVGFnOnRhcmdldDpyZXByZXNl
bnRlZE9iamVjdDpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToK
KyAgICAgICAgKGtpdCk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBhZGRJdGVtOl0p
OgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgYmFja0l0ZW1dKToKKyAgICAgICAgKC1b
V2ViQmFja0ZvcndhcmRMaXN0IGN1cnJlbnRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3
YXJkTGlzdCBmb3J3YXJkSXRlbV0pOgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgaXRl
bUF0SW5kZXg6XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAo
LVtXZWJIaXN0b3J5UHJpdmF0ZSBkYXRhXSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5
SXRlbS5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICgrW1dlYkhpc3RvcnlJdGVtIGVudHJ5
V2l0aFVSTDpdKToKKyAgICAgICAgKiBNaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAg
ICAgICAoLVtOU1N0cmluZyBfd2Via2l0X3N0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlXSk6Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TRGF0YSBfd2Vi
a2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzXSk6CisgICAgICAgICogTWlzYy9XZWJOU09iamVj
dEV4dHJhcy5tbToKKyAgICAgICAgKC1bV2ViTWFpblRocmVhZEludm9rZXIgZm9yd2FyZEludm9j
YXRpb246XSk6CisgICAgICAgICgtW1dlYk1haW5UaHJlYWRJbnZva2VyIGhhbmRsZUV4Y2VwdGlv
bjpdKToKKyAgICAgICAgKCtbTlNPYmplY3QgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdKToK
KyAgICAgICAgKC1bTlNPYmplY3QgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdKToKKyAgICAg
ICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX29yaWdp
bmFsRGF0YUFzU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfaG9zdFN0cmluZ10pOgor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2Vs
bGVkQ29ubmVjdGlvbkVycm9yIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVn
aW5QYWNrYWdlLm1tOgorICAgICAgICAoK1tXZWJCYXNlUGx1Z2luUGFja2FnZSBwbHVnaW5XaXRo
UGF0aDpdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgor
ICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rp
b25FcnJvciBjb25zdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzZW5kRXZlbnQ6aXNEcmF3UmVj
dDpdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAg
ICAgICAoK1tXZWJQbHVnaW5Db250YWluZXJDaGVjayBjaGVja1dpdGhSZXF1ZXN0OnRhcmdldDpy
ZXN1bHRPYmplY3Q6c2VsZWN0b3I6Y29udHJvbGxlcjpjb250ZXh0SW5mbzpdKToKKyAgICAgICAg
KiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRh
YmFzZSBfcGx1Z0luUGF0aHNdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW06CisgICAgICAgICgrW1dlYlVuZG9TdGVwIHN0ZXBXaXRoVW5kb1N0ZXA6XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KToKKyAgICAgICAgKG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVj
dG9yV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OmRl
ZmF1bHRNZW51SXRlbXM6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW06CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1tOgorICAgICAgICAoLVtX
ZWJBcmNoaXZlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06Cisg
ICAgICAgICgtW1dlYkRhdGFTb3VyY2UgX2ZpbGVXcmFwcGVyRm9yVVJMOl0pOgorICAgICAgICAo
LVtXZWJEYXRhU291cmNlIHdlYkFyY2hpdmVdKToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBt
YWluUmVzb3VyY2VdKToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBzdWJyZXNvdXJjZUZvclVS
TDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lm1tOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFs
IGxhc3RPcmllbnRhdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIGVsZW1lbnRBdFBvaW50Ol0pOgorICAgICAgICAoLVtXZWJGcmFtZSBw
YXJlbnRGcmFtZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVW
aWV3IF9zZXRDdXN0b21TY3JvbGxWaWV3Q2xhc3M6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBk
b2N1bWVudFNvdXJjZV0pOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gYXR0cmli
dXRlZFN0cmluZ0Zyb206c3RhcnRPZmZzZXQ6dG86ZW5kT2Zmc2V0Ol0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgrW1dlYkhUTUxWaWV3IF9leGNsdWRlZEVs
ZW1lbnRzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb25dKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX3BsYWluVGV4dEZyb21QYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyB2aWV3OnN0cmluZ0ZvclRvb2xUaXA6cG9pbnQ6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHJpZ2h0TW91c2VVcDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWVudUZv
ckV2ZW50Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgYWNjZXB0c0ZpcnN0TW91c2U6XSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IHNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudDpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgbW91c2VEb3duOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtb3VzZURy
YWdnZWQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1vdXNlVXA6XSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGtleURvd246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGtleVVwOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBmbGFnc0NoYW5nZWQ6XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IF9mb250QXR0cmlidXRlc0Zyb21Gb250UGFzdGVib2FyZF0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBwZXJmb3JtS2V5RXF1aXZhbGVudDpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgdGV4dFN0b3JhZ2VdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
cGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9s
ZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTpvZmZzZXQ6dG86b2Zmc2V0Ol0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBhdHRyaWJ1dGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IHNlbGVjdGVkQXR0cmlidXRlZFN0cmluZ10pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBlbGVt
ZW50QXRQb2ludDphbGxvd1NoYWRvd0NvbnRlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gb3Jp
Z2luXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKC1bV2Vi
UERGVmlldyBfc2NhbGVkQXR0cmlidXRlZFN0cmluZzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfaW5pdFdpdGhEYXRhOlVSTDpN
SU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmZyYW1lTmFtZTpyZXNwb25zZTpjb3B5RGF0YTpdKToK
KyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX2ZpbGVXcmFwcGVyUmVwcmVzZW50YXRpb25dKToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgX3Jlc3BvbnNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJT
Y3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0V29ybGQgd29ybGRdKToKKyAgICAg
ICAgKCtbV2ViU2NyaXB0V29ybGQgZmluZE9yQ3JlYXRlV29ybGQ6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX21lbnVGb3JFbGVtZW50OmRlZmF1bHRJdGVtczpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJWaWV3Q2xhc3M6cmVwcmVzZW50YXRpb25DbGFz
czpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Rpc3BsYXlVUkxdKToKKyAg
ICAgICAgKC1bV2ViVmlldyB0ZXh0SXRlcmF0b3JGb3JSZWN0Ol0pOgorICAgICAgICAoK1tXZWJW
aWV3IE1JTUVUeXBlc1Nob3duQXNIVE1MXSk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJbnRyb2R1Y2UgYSBu
ZXcgY29udGV4dCBtZW51IGl0ZW0gdG8gcHJldmlldyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpp
bmRleCBmMWVmYTQxNzBkNjM3M2IxZWYyNzY1NTY4ZGYyMTM5Yjk2MjhhYmM1Li5iOTk4OGVjYmMw
Y2Q5MTE5ZjgyZGJiNGJmOWY4ZDk1MjQ4OTQ3MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC0x
MzEsOSArMTMxLDkgQEAgc3RhdGljIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcm93
c2luZ0RldGFpbHNUZXh0KGNvbnN0IFVSTCYgdXJsLCBTU0JTZXIKICAgICBhdXRvIG1hbHdhcmVP
clVud2FudGVkU29mdHdhcmVEZXRhaWxzID0gWyZdIChOU1N0cmluZyAqZGVzY3JpcHRpb24sIE5T
U3RyaW5nICpzdGF0dXNTdHJpbmdUb1JlcGxhY2UsIGJvb2wgY29uZmlybU1hbHdhcmUpIHsKICAg
ICAgICAgYXV0byBtYWx3YXJlRGVzY3JpcHRpb24gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6ZGVzY3JpcHRpb25dKTsKICAgICAgICAg
cmVwbGFjZShtYWx3YXJlRGVzY3JpcHRpb24uZ2V0KCksIEAiJXNhZmVCcm93c2luZ1Byb3ZpZGVy
JSIsIGxvY2FsaXplZFByb3ZpZGVyKHJlc3VsdCkpOwotICAgICAgICBOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nICpzdGF0dXNMaW5rID0gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6V0VCX1VJX05TU1RSSU5HKEAidGhlIHN0YXR1cyBvZiDigJwlc2l0
ZSXigJ0iLCAiUGFydCBvZiBtYWx3YXJlIGRlc2NyaXB0aW9uIildIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgcmVwbGFjZShzdGF0dXNMaW5rLCBAIiVzaXRlJSIsIHVybC5ob3N0KCkudG9TdHJpbmco
KSk7Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwg
c3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBzdGF0dXNMaW5rLnN0cmluZywgbWFsd2FyZURldGFpbHNV
UkwodXJsLCByZXN1bHQpKTsKKyAgICAgICAgYXV0byBzdGF0dXNMaW5rID0gYWRvcHROUyhbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOldFQl9VSV9OU1NU
UklORyhAInRoZSBzdGF0dXMgb2Yg4oCcJXNpdGUl4oCdIiwgIlBhcnQgb2YgbWFsd2FyZSBkZXNj
cmlwdGlvbiIpXSk7CisgICAgICAgIHJlcGxhY2Uoc3RhdHVzTGluay5nZXQoKSwgQCIlc2l0ZSUi
LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShtYWx3
YXJlRGVzY3JpcHRpb24uZ2V0KCksIHN0YXR1c1N0cmluZ1RvUmVwbGFjZSwgW3N0YXR1c0xpbmsg
c3RyaW5nXSwgbWFsd2FyZURldGFpbHNVUkwodXJsLCByZXN1bHQpKTsKIAogICAgICAgICBhdXRv
IGlmWW91VW5kZXJzdGFuZCA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpXRUJfVUlfTlNTVFJJTkcoQCJJZiB5b3UgdW5kZXJzdGFuZCB0
aGUgcmlza3MgaW52b2x2ZWQsIHlvdSBjYW4gJXZpc2l0LXRoaXMtdW5zYWZlLXNpdGUtbGluayUu
IiwgIkFjdGlvbiBmcm9tIHNhZmUgYnJvd3Npbmcgd2FybmluZyIpXSk7CiAgICAgICAgIGFkZExp
bmtBbmRSZXBsYWNlKGlmWW91VW5kZXJzdGFuZC5nZXQoKSwgQCIldmlzaXQtdGhpcy11bnNhZmUt
c2l0ZS1saW5rJSIsIFdFQl9VSV9OU1NUUklORyhAInZpc2l0IHRoaXMgdW5zYWZlIHdlYnNpdGUi
LCAiQWN0aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIiksIGNvbmZpcm1NYWx3YXJlID8g
U2FmZUJyb3dzaW5nV2FybmluZzo6Y29uZmlybU1hbHdhcmVTZW50aW5lbCgpIDogU2FmZUJyb3dz
aW5nV2FybmluZzo6dmlzaXRVbnNhZmVXZWJzaXRlU2VudGluZWwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2
aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTmZjU2VydmljZS5tbQppbmRleCA0MmI5YzNjYTI3ZGIzMzM5OGJhOWI4MzA2NmQ2MjZmMDVj
MWM1MmY4Li5mYjhiMWQ1NjQwNmRhMDQ2MzM2NWE3YzRjYzNlNDFiZDc4MTBhNTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tO
ZmNTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KQEAgLTE4OCw5ICsxODgsOSBAQCBOU0RhdGEqIE1v
Y2tOZmNTZXJ2aWNlOjp0cmFuc2NlaXZlKCkKICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+
cGF5bG9hZEJhc2U2NC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9j
b25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERl
Y29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOm1fY29uZmlndXJh
dGlvbi5uZmMtPnBheWxvYWRCYXNlNjRbMF0gb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0ln
bm9yZVVua25vd25DaGFyYWN0ZXJzXSk7CiAgICAgbV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9h
ZEJhc2U2NC5yZW1vdmUoMCk7Ci0gICAgcmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogdm9pZCBNb2NrTmZjU2VydmljZTo6
cmVjZWl2ZVN0b3BQb2xsaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDhlZjFjZTQxMjczNmE4ZWVk
M2M2YWExNmMwMzJiMzNhZGI5YmY0YzcuLjBkM2RhOTJjZDQxNTUwN2E4YjE4ODkyNDczMzYxNjdi
OGM4NWQ2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMzk3LDE2ICszOTcsMTYgQEAgdm9pZCBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGU6OnVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMo
KQogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW3RpdGxlID0gcmV0YWlu
UHRyKChOU1N0cmluZyAqKXNvdXJjZS5saW5rVGl0bGUpLCB1cmwgPSByZXRhaW5QdHIoKE5TVVJM
ICopc291cmNlLmxpbmtVUkwpLCBjZW50ZXIgPSBzb3VyY2UuYWRqdXN0ZWRPcmlnaW5dICgpIC0+
IFVJRHJhZ1ByZXZpZXcgKiB7CiAgICAgICAgICAgICAgICAgVUlVUkxEcmFnUHJldmlld1ZpZXcg
KnByZXZpZXdWaWV3ID0gW1VJVVJMRHJhZ1ByZXZpZXdWaWV3IHZpZXdXaXRoVGl0bGU6dGl0bGUu
Z2V0KCkgVVJMOnVybC5nZXQoKV07CiAgICAgICAgICAgICAgICAgcHJldmlld1ZpZXcuY2VudGVy
ID0gY2VudGVyOwotICAgICAgICAgICAgICAgIFVJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzICpwYXJh
bWV0ZXJzID0gW1tbVUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExp
bmVSZWN0czpAWyBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cHJldmlld1ZpZXcuYm91bmRzXSBd
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtbW1VJRHJhZ1ByZXZpZXcg
YWxsb2NdIGluaXRXaXRoVmlldzpwcmV2aWV3VmlldyBwYXJhbWV0ZXJzOnBhcmFtZXRlcnNdIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtb
VUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVSZWN0czpAWyBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cHJldmlld1ZpZXcuYm91bmRzXSBdXSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSURyYWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZp
ZXc6cHJldmlld1ZpZXcgcGFyYW1ldGVyczpwYXJhbWV0ZXJzLmdldCgpXSkuYXV0b3JlbGVhc2Uo
KTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKICAgICAgICAgZWxzZSBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpDb2xvcikpIHsKICAgICAgICAgICAgIGRyYWdJdGVtLnByZXZpZXdQcm92aWRlciA9IFtp
bWFnZSA9IHNvdXJjZS5pbWFnZV0gKCkgLT4gVUlEcmFnUHJldmlldyAqIHsKLSAgICAgICAgICAg
ICAgICBVSUltYWdlVmlldyAqaW1hZ2VWaWV3ID0gW1tbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRX
aXRoSW1hZ2U6aW1hZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgICAgICBVSURy
YWdQcmV2aWV3UGFyYW1ldGVycyAqcGFyYW1ldGVycyA9IFtbW1VJRHJhZ1ByZXZpZXdQYXJhbWV0
ZXJzIGFsbG9jXSBpbml0V2l0aFRleHRMaW5lUmVjdHM6QFsgW05TVmFsdWUgdmFsdWVXaXRoQ0dS
ZWN0OltpbWFnZVZpZXcgYm91bmRzXV0gXV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgICAg
IHJldHVybiBbW1tVSURyYWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZpZXc6aW1hZ2VWaWV3IHBh
cmFtZXRlcnM6cGFyYW1ldGVyc10gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIGF1dG8g
aW1hZ2VWaWV3ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOmlt
YWdlLmdldCgpXSk7CisgICAgICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhb
W1VJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aFRleHRMaW5lUmVjdHM6QFsg
W05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OltpbWFnZVZpZXcgYm91bmRzXV0gXV0pOworICAgICAg
ICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbVUlEcmFnUHJldmlldyBhbGxvY10gaW5pdFdpdGhW
aWV3OmltYWdlVmlldy5nZXQoKSBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCldKS5hdXRvcmVs
ZWFzZSgpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpp
bmRleCA5N2MxNWM2MDE2Y2I3MzdmMWUxNWZiM2ZhYmU1Yjk0YzgyZjRjYTEyLi5kMTRkZDRjNzJi
ODFlNDU3ZjE2YzBkOTk4ZGJmNzI4NGIyODVkMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTEyMywx
MCArMTIzLDEwIEBAIC0gKFVJUGFuR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXpl
ckZvckludGVyYWN0aXZlVHJhbnNpdGlvbjooX1VJTmF2aWdhCiB7CiAjaWYgSEFWRShVSV9QQVJB
TExBWF9UUkFOU0lUSU9OX0dFU1RVUkVfUkVDT0dOSVpFUikKIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfQkVHSU4KLSAgICBfVUlQYXJhbGxheFRyYW5zaXRpb25QYW5HZXN0dXJlUmVjb2du
aXplciAqcmVjb2duaXplciA9IFtbX1VJUGFyYWxsYXhUcmFuc2l0aW9uUGFuR2VzdHVyZVJlY29n
bml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXTsKKyAgICBh
dXRvIHJlY29nbml6ZXIgPSBhZG9wdE5TKFtbX1VJUGFyYWxsYXhUcmFuc2l0aW9uUGFuR2VzdHVy
ZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXSk7
CiBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogI2Vsc2UKLSAgICBVSVNjcmVlbkVk
Z2VQYW5HZXN0dXJlUmVjb2duaXplciAqcmVjb2duaXplciA9IFtbVUlTY3JlZW5FZGdlUGFuR2Vz
dHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9u
XTsKKyAgICBhdXRvIHJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlTY3JlZW5FZGdlUGFuR2VzdHVy
ZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXSk7
CiAjZW5kaWYKICAgICBib29sIGlzTFRSID0gW1VJVmlldyB1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uRm9yU2VtYW50aWNDb250ZW50QXR0cmlidXRlOltfZ2VzdHVyZVJlY29nbml6ZXJWaWV3
LmdldCgpIHNlbWFudGljQ29udGVudEF0dHJpYnV0ZV1dID09IFVJVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbkxlZnRUb1JpZ2h0OwogCkBAIC0xMzgsNyArMTM4LDcgQEAgQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICAgICAgW3JlY29nbml6ZXIgc2V0RWRnZXM6aXNMVFIg
PyBVSVJlY3RFZGdlUmlnaHQgOiBVSVJlY3RFZGdlTGVmdF07CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICByZXR1cm4gW3JlY29nbml6ZXIgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZWNv
Z25pemVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpaXNOYXZpZ2F0aW9uU3dpcGVHZXN0
dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXJlY29nbml6ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0K
aW5kZXggYTI4MTExODRlNjhmNGM5ODFiN2YxMDU1NGM1N2U4YWQ4NDU0NzdmZi4uMTM3YWU4ZWUy
NmRjMGNhNGU3MWIyZWJjYTA3YmNiMzkyOGFjOTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KQEAgLTgyLDE2ICs4
MiwxNCBAQCBzdGF0aWMgTFNBcHBMaW5rICphcHBMaW5rRm9yVVJMKE5TVVJMICp1cmwpCiAgICAg
cmV0dXJuIGFwcExpbmtzLmZpcnN0T2JqZWN0OwogI2Vsc2UKICAgICBCaW5hcnlTZW1hcGhvcmUg
c2VtYXBob3JlOwotICAgIF9fYmxvY2sgTFNBcHBMaW5rICpzeW5jQXBwTGluayA9IG5pbDsKLSAg
ICBfX2Jsb2NrIEJpbmFyeVNlbWFwaG9yZSogc2VtYXBob3JlUHRyID0gJnNlbWFwaG9yZTsKLQot
ICAgIFtMU0FwcExpbmsgZ2V0QXBwTGlua1dpdGhVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVyOl4o
TFNBcHBMaW5rICphcHBMaW5rLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBzeW5jQXBwTGlu
ayA9IFthcHBMaW5rIHJldGFpbl07Ci0gICAgICAgIHNlbWFwaG9yZVB0ci0+c2lnbmFsKCk7Cisg
ICAgUmV0YWluUHRyPExTQXBwTGluaz4gc3luY0FwcExpbms7CisgICAgW0xTQXBwTGluayBnZXRB
cHBMaW5rV2l0aFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6WyZzZW1hcGhvcmUsICZzeW5jQXBw
TGlua10oTFNBcHBMaW5rICphcHBMaW5rLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBzeW5j
QXBwTGluayA9IHJldGFpblB0cihhcHBMaW5rKTsKKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgp
OwogICAgIH1dOwogICAgIHNlbWFwaG9yZS53YWl0KCk7CiAKLSAgICByZXR1cm4gW3N5bmNBcHBM
aW5rIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc3luY0FwcExpbmsuYXV0b3JlbGVhc2UoKTsK
ICNlbmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA2ZGU2MGNmNWY2OWVlODEyY2Y5
OTJkMDlmMmE5ZmNmMGEwZGUzZDhiLi4yZDMyZjQ3ZDFkNDE4NzE1NTBlOWU1M2Y3NTA0Nzg0OTc1
YzJlYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY2NCw3ICs2NjQsNyBAQCBzdGF0aWMgV0tEcmFn
U2Vzc2lvbkNvbnRleHQgKmVuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KGlkIDxVSURyYWdT
ZXNzaW9uPiBzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBz
ZXNzaW9uLmxvY2FsQ29udGV4dCA9IFtbW1dLRHJhZ1Nlc3Npb25Db250ZXh0IGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgc2Vzc2lvbi5sb2NhbENvbnRleHQgPSBhZG9wdE5TKFtbV0tE
cmFnU2Vzc2lvbkNvbnRleHQgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIHJldHVy
biAoV0tEcmFnU2Vzc2lvbkNvbnRleHQgKilzZXNzaW9uLmxvY2FsQ29udGV4dDsKIH0KIApAQCAt
ODI4Myw3ICs4MjgzLDcgQEAgLSAodm9pZClpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZToo
Q0dTaXplKXNpemUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFUKICAgICAgICAgfQogICAg
ICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlclRvVXNlIHsgKnBsYWNlaG9s
ZGVyIH07CiAgICAgICAgIHBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1Nl
bGYgY29udmVydFJlY3Q6cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgZnJvbVZpZXc6W3N0
cm9uZ1NlbGYgd2ViVmlld11dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tXS1RleHRQ
bGFjZWhvbGRlciBhbGxvY10gaW5pdFdpdGhFbGVtZW50Q29udGV4dDpwbGFjZWhvbGRlclRvVXNl
XSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tU
ZXh0UGxhY2Vob2xkZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJU
b1VzZV0pLmF1dG9yZWxlYXNlKCkpOwogICAgIH0pOwogfQogCkBAIC0xMDAwMCw3ICsxMDAwMCw3
IEBAIC0gKHZvaWQpY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOih2b2lkKF4pKFVJQ29u
dGV4dE1lbnVDb25maWd1cmF0aW9uICopKWNvCiAgICAgICAgICAgICAgICAgaWYgKCFzdHJvbmdT
ZWxmKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFtbW1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOm5pbCBlbGVtZW50SW5mbzplbGVtZW50SW5mby5n
ZXQoKV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tJ
bWFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Ug
ZGVmYXVsdEFjdGlvbnM6bmlsIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvLmdldCgpXSkuYXV0b3Jl
bGVhc2UoKTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGNvbnRpbnVlV2l0aENvbnRl
eHRNZW51Q29uZmlndXJhdGlvbihbVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbldpdGhJZGVudGlmaWVyOm5pbCBwcmV2aWV3UHJvdmlkZXI6Y29udGVudFByZXZpZXdQcm92
aWRlciBhY3Rpb25Qcm92aWRlcjphY3Rpb25NZW51UHJvdmlkZXJdKTsKQEAgLTEwMzMxLDEzICsx
MDMzMSwxMyBAQCAtIChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxl
cjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cgogICAgICAgICBjYW5TaG93TGlua1By
ZXZpZXcgPSBOTzsKICAgICB9CiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkYXRhRm9yUHJl
dmlldyA9IFtbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIGRhdGFGb3JQcmV2aWV3ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKICAgICBpZiAoY2FuU2hvd0xpbmtQcmV2aWV3KSB7CiAgICAgICAgICp0
eXBlID0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rOwogICAgICAgICBpZiAodXNlSW1hZ2VVUkxGb3JM
aW5rKQotICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUxpbmtdID0gKE5T
VVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkw7CisgICAgICAgICAgICBkYXRhRm9y
UHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhTGlua10gPSAoTlNVUkwgKilfcG9zaXRpb25JbmZv
cm1hdGlvbi5pbWFnZVVSTDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YUZvclByZXZp
ZXdbVUlQcmV2aWV3RGF0YUxpbmtdID0gKE5TVVJMICopbGlua1VSTDsKKyAgICAgICAgICAgIGRh
dGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKWxpbmtVUkw7
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgICAgICBpZiAoaXNEYXRhRGV0ZWN0b3JM
aW5rKSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmNvbnRleHQgPSBuaWw7CkBAIC0xMDM0
Nyw5ICsxMDM0Nyw5IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db250
cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAgICAgICAgICBERERl
dGVjdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbZ2V0REREZXRlY3Rpb25Db250cm9sbGVy
Q2xhc3MoKSBzaGFyZWRDb250cm9sbGVyXTsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqbmV3
Q29udGV4dCA9IG5pbDsKICAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBleHRlbmRlZENvbnRleHQ7Ci0gICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtj
b250cm9sbGVyIHJlc3VsdEZvclVSTDpkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhTGlua10g
aWRlbnRpZmllcjpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNl
bGVjdGVkVGV4dDpbc2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRp
b24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250
ZXh0OiZuZXdDb250ZXh0XTsKKyAgICAgICAgICAgIEREUmVzdWx0UmVmIGRkUmVzdWx0ID0gW2Nv
bnRyb2xsZXIgcmVzdWx0Rm9yVVJMOmRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFM
aW5rXSBpZGVudGlmaWVyOl9wb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvcklkZW50aWZp
ZXIgc2VsZWN0ZWRUZXh0OltzZWxmIHNlbGVjdGVkVGV4dF0gcmVzdWx0czpfcG9zaXRpb25JbmZv
cm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGNvbnRleHQ6Y29udGV4dCBleHRlbmRl
ZENvbnRleHQ6Jm5ld0NvbnRleHRdOwogICAgICAgICAgICAgaWYgKGRkUmVzdWx0KQotICAgICAg
ICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFERFJlc3VsdF0gPSAoX19icmlk
Z2UgaWQpZGRSZXN1bHQ7CisgICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQ
cmV2aWV3RGF0YUREUmVzdWx0XSA9IChfX2JyaWRnZSBpZClkZFJlc3VsdDsKICAgICAgICAgICAg
IGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIV9wb3Np
dGlvbkluZm9ybWF0aW9uLnRleHRBZnRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBl
eHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAewogICAgICAgICAgICAgICAgICAgICBnZXRrRGF0
YURldGVjdG9yc0xlYWRpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3Jl
LApAQCAtMTAzNjEsMTIgKzEwMzYxLDEyIEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAg
ICAgICAgICAgICAgbmV3Q29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChuZXdDb250ZXh0KQotICAgICAgICAgICAgICAgIGRhdGFG
b3JQcmV2aWV3W1VJUHJldmlld0RhdGFERENvbnRleHRdID0gbmV3Q29udGV4dDsKKyAgICAgICAg
ICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhRERDb250ZXh0XSA9IG5l
d0NvbnRleHQ7CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAg
ICAgfSBlbHNlIGlmIChjYW5TaG93SW1hZ2VQcmV2aWV3KSB7CiAgICAgICAgICp0eXBlID0gVUlQ
cmV2aWV3SXRlbVR5cGVJbWFnZTsKLSAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0
YUxpbmtdID0gKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkw7CisgICAgICAg
IGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKV9wb3Np
dGlvbkluZm9ybWF0aW9uLmltYWdlVVJMOwogICAgIH0gZWxzZSBpZiAoY2FuU2hvd0F0dGFjaG1l
bnRQcmV2aWV3KSB7CiAgICAgICAgICp0eXBlID0gVUlQcmV2aWV3SXRlbVR5cGVBdHRhY2htZW50
OwogICAgICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50
IFVSTDooTlNVUkwgKilsaW5rVVJMIGltYWdlVVJMOihOU1VSTCAqKV9wb3NpdGlvbkluZm9ybWF0
aW9uLmltYWdlVVJMIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQg
dGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24u
aWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6bmlsXSk7
CkBAIC0xMDM3NCwxNSArMTAzNzQsMTUgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2
aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHIKICAgICAg
ICAgaWYgKGluZGV4ICE9IE5TTm90Rm91bmQpIHsKICAgICAgICAgICAgIEJPT0wgc291cmNlSXNN
YW5hZ2VkID0gTk87CiAgICAgICAgICAgICBpZiAocmVzcG9uZHNUb0F0dGFjaG1lbnRMaXN0Rm9y
V2ViVmlld1NvdXJjZUlzTWFuYWdlZCkKLSAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tV
SVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RdID0gW3VpRGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0
Rm9yV2ViVmlldzpzZWxmLndlYlZpZXcgc291cmNlSXNNYW5hZ2VkOiZzb3VyY2VJc01hbmFnZWRd
OworICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFBdHRh
Y2htZW50TGlzdF0gPSBbdWlEZWxlZ2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3OnNlbGYu
d2ViVmlldyBzb3VyY2VJc01hbmFnZWQ6JnNvdXJjZUlzTWFuYWdlZF07CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1l
bnRMaXN0XSA9IFt1aURlbGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZpZXc6c2VsZi53ZWJW
aWV3XTsKLSAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50
SW5kZXhdID0gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5kZXhdOwotICAg
ICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0SXNDb250
ZW50TWFuYWdlZF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6c291cmNlSXNNYW5hZ2VkXTsK
KyAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhQXR0YWNo
bWVudExpc3RdID0gW3VpRGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0Rm9yV2ViVmlldzpzZWxmLndl
YlZpZXddOworICAgICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUF0
dGFjaG1lbnRJbmRleF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50ZWdlcjppbmRl
eF07CisgICAgICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhQXR0YWNo
bWVudExpc3RJc0NvbnRlbnRNYW5hZ2VkXSA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpzb3Vy
Y2VJc01hbmFnZWRdOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGRhdGFGb3JQcmV2
aWV3OworICAgIHJldHVybiBkYXRhRm9yUHJldmlldy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChD
R1JlY3QpX3ByZXNlbnRhdGlvblJlY3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmll
d0l0ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpAQCAtMTA0NzgsNyArMTA0NzgsNyBAQCAtIChV
SVZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1D
b250cm9sbGVyOihVSVByZXZpZQogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3Vmlld0Nv
bnRyb2xsZXI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gW1tbV0tJbWFnZVByZXZpZXdW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UgZGVmYXVsdEFjdGlv
bnM6ZGVmYXVsdEFjdGlvbnMgZWxlbWVudEluZm86ZWxlbWVudEluZm9dIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9u
cyBlbGVtZW50SW5mbzplbGVtZW50SW5mb10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG5pbDsKQEAgLTEwNTUzLDcgKzEwNTUzLDcgQEAgLSAoVUlJbWFnZSAqKV9wcmVzZW50
YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRy
b2wKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtb
VUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlv
blJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAq
KWNvbnRyb2xsZXIKQEAgLTEwNjAxLDE1ICsxMDYwMSwxNSBAQCBAaW1wbGVtZW50YXRpb24gV0tU
ZXh0UmFuZ2UKIAogKyhXS1RleHRSYW5nZSAqKXRleHRSYW5nZVdpdGhTdGF0ZTooQk9PTClpc05v
bmUgaXNSYW5nZTooQk9PTClpc1JhbmdlIGlzRWRpdGFibGU6KEJPT0wpaXNFZGl0YWJsZSBzdGFy
dFJlY3Q6KENHUmVjdClzdGFydFJlY3QgZW5kUmVjdDooQ0dSZWN0KWVuZFJlY3Qgc2VsZWN0aW9u
UmVjdHM6KE5TQXJyYXkgKilzZWxlY3Rpb25SZWN0cyBzZWxlY3RlZFRleHRMZW5ndGg6KE5TVUlu
dGVnZXIpc2VsZWN0ZWRUZXh0TGVuZ3RoCiB7Ci0gICAgV0tUZXh0UmFuZ2UgKnJhbmdlID0gW1tX
S1RleHRSYW5nZSBhbGxvY10gaW5pdF07Ci0gICAgcmFuZ2UuaXNOb25lID0gaXNOb25lOwotICAg
IHJhbmdlLmlzUmFuZ2UgPSBpc1JhbmdlOwotICAgIHJhbmdlLmlzRWRpdGFibGUgPSBpc0VkaXRh
YmxlOwotICAgIHJhbmdlLnN0YXJ0UmVjdCA9IHN0YXJ0UmVjdDsKLSAgICByYW5nZS5lbmRSZWN0
ID0gZW5kUmVjdDsKLSAgICByYW5nZS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHRM
ZW5ndGg7Ci0gICAgcmFuZ2Uuc2VsZWN0aW9uUmVjdHMgPSBzZWxlY3Rpb25SZWN0czsKLSAgICBy
ZXR1cm4gW3JhbmdlIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJhbmdlID0gYWRvcHROUyhbW1dL
VGV4dFJhbmdlIGFsbG9jXSBpbml0XSk7CisgICAgW3JhbmdlIHNldElzTm9uZTppc05vbmVdOwor
ICAgIFtyYW5nZSBzZXRJc1JhbmdlOmlzUmFuZ2VdOworICAgIFtyYW5nZSBzZXRJc0VkaXRhYmxl
OmlzRWRpdGFibGVdOworICAgIFtyYW5nZSBzZXRTdGFydFJlY3Q6c3RhcnRSZWN0XTsKKyAgICBb
cmFuZ2Ugc2V0RW5kUmVjdDplbmRSZWN0XTsKKyAgICBbcmFuZ2Ugc2V0U2VsZWN0ZWRUZXh0TGVu
Z3RoOnNlbGVjdGVkVGV4dExlbmd0aF07CisgICAgW3JhbmdlIHNldFNlbGVjdGlvblJlY3RzOnNl
bGVjdGlvblJlY3RzXTsKKyAgICByZXR1cm4gcmFuZ2UuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
dm9pZClkZWFsbG9jCkBAIC0xMDY3NSw5ICsxMDY3NSw5IEBAIEBzeW50aGVzaXplIHBvc2l0aW9u
UmVjdCA9IF9wb3NpdGlvblJlY3Q7CiAKICsgKFdLVGV4dFBvc2l0aW9uICopdGV4dFBvc2l0aW9u
V2l0aFJlY3Q6KENHUmVjdClwb3NpdGlvblJlY3QKIHsKLSAgICBXS1RleHRQb3NpdGlvbiAqcG9z
ID1bW1dLVGV4dFBvc2l0aW9uIGFsbG9jXSBpbml0XTsKLSAgICBwb3MucG9zaXRpb25SZWN0ID0g
cG9zaXRpb25SZWN0OwotICAgIHJldHVybiBbcG9zIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHBv
cyA9IGFkb3B0TlMoW1tXS1RleHRQb3NpdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtwb3Mgc2V0
UG9zaXRpb25SZWN0OnBvc2l0aW9uUmVjdF07CisgICAgcmV0dXJuIHBvcy5hdXRvcmVsZWFzZSgp
OwogfQogCiAvLyBGSVhNRTogT3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcg
aGFzaCB3aWxsIGNhdXNlIHRyb3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhIE5TU2V0IG9y
IGlzIHRoZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCmluZGV4IGFkNThkN2JlNTYwMzU1NzZlOGIw
ZmE5NGQ5ZTc4NDk5OTU1NzgxYjcuLjdjNDkxOGU4NjQ0NDVjYzgwMjYzMWU0NWU1OWQ3ZjUzMWNk
MGU2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFj
ZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vo
b2xkZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQmKWVsZW1lbnRDb250ZXh0CiAKIC0gKE5TQXJyYXk8VUlUZXh0U2VsZWN0aW9uUmVjdCAqPiAq
KXJlY3RzCiB7Ci0gICAgcmV0dXJuIEBbIFtbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGlu
aXRXaXRoQ0dSZWN0Ol9lbGVtZW50Q29udGV4dC5ib3VuZGluZ1JlY3RdIGF1dG9yZWxlYXNlXSBd
OworICAgIHJldHVybiBAWyBhZG9wdE5TKFtbV0tUZXh0U2VsZWN0aW9uUmVjdCBhbGxvY10gaW5p
dFdpdGhDR1JlY3Q6X2VsZW1lbnRDb250ZXh0LmJvdW5kaW5nUmVjdF0pLmF1dG9yZWxlYXNlKCkg
XTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
V2ViRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQpp
bmRleCBhYjU5Njg3OWEwYTgzYWM0OWFkNGQ1ZDg3YTlkNTM3M2UxNDRhMDU2Li5jMDhlZTIwMzBh
YTFlZTllZTUwOTRmYzg0MzI1Y2IxM2NiMzI4NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tXZWJFdmVudC5tbQpAQCAtNTAsNyArNTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CiAgICAgICAgIGtleUNvZGUgPSBrZXlFdmVudC5f
a2V5Q29kZTsKICAgICAgICAgaW5wdXRGbGFncyA9IGtleUV2ZW50Ll9pbnB1dEZsYWdzOwogICAg
ICAgICBtb2RpZmllckZsYWdzID0ga2V5RXZlbnQuX2dzTW9kaWZpZXJGbGFnczsKLSAgICAgICAg
ZXZlbnQgPSBbW2tleUV2ZW50IF9jbG9uZUV2ZW50XSBhdXRvcmVsZWFzZV07IC8vIFVJS2l0IHVz
ZXMgYSBzaW5nbGV0b24gZm9yIGhhcmR3YXJlIGtleWJvYXJkIGV2ZW50cy4KKyAgICAgICAgZXZl
bnQgPSBhZG9wdE5TKFtrZXlFdmVudCBfY2xvbmVFdmVudF0pLmF1dG9yZWxlYXNlKCk7IC8vIFVJ
S2l0IHVzZXMgYSBzaW5nbGV0b24gZm9yIGhhcmR3YXJlIGtleWJvYXJkIGV2ZW50cy4KICAgICB9
CiAKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoS2V5RXZlbnRUeXBlOihldmVudC5faXNLZXlE
b3duID8gV2ViRXZlbnRLZXlEb3duIDogV2ViRXZlbnRLZXlVcCkgdGltZVN0YW1wOmV2ZW50LnRp
bWVzdGFtcCBjaGFyYWN0ZXJzOmV2ZW50Ll9tb2RpZmllZElucHV0IGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczpldmVudC5fdW5tb2RpZmllZElucHV0IG1vZGlmaWVyczptb2RpZmllckZsYWdz
IGlzUmVwZWF0aW5nOihpbnB1dEZsYWdzICYga1VJS2V5Ym9hcmRJbnB1dFJlcGVhdCkgd2l0aEZs
YWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBp
c1RhYktleTpbZXZlbnQuX21vZGlmaWVkSW5wdXQgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbQppbmRleCBiOTM4NTdlZjkwZDEzZmY5MmNmNDQ5
M2RkYWIyNDYzMzUzZWNhNDM2Li40NDA5MGQ3NmIwNWY0OWJkZWUyMzRkYzM1OTRhZjg2YjgxN2Ez
ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KQEAgLTMyMSw3ICszMjEsNyBA
QCAtICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUyYpZHJvcAogICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdn
ZXN0aW9ucyA9IHNlbGYudGV4dFN1Z2dlc3Rpb25zOwogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgIFtfcG9wb3ZlciBzZXRQb3BvdmVyQ29udHJvbGxlcjpbW1tVSVBv
cG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpfc3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlci5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbX3BvcG92
ZXIgc2V0UG9wb3ZlckNvbnRyb2xsZXI6YWRvcHROUyhbW1VJUG9wb3ZlckNvbnRyb2xsZXIgYWxs
b2NdIGluaXRXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOl9zdWdnZXN0aW9uc1ZpZXdDb250cm9s
bGVyLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIFtfcG9wb3ZlciBwcmVzZW50UG9wb3ZlckFuaW1hdGVkOk5PXTsKQEAgLTM1
NiwxNSArMzU2LDE1IEBAIC0gKE5TSW50ZWdlcil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFi
bGVWaWV3IG51bWJlck9mUm93c0luU2VjdGlvbjooTlNJbnRlZ2VyCiAKIC0gKFVJVGFibGVWaWV3
Q2VsbCAqKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgY2VsbEZvclJvd0F0SW5k
ZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAogewotICAgIFVJVGFibGVWaWV3Q2VsbCAq
Y2VsbCA9IFt0YWJsZVZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhJZGVudGlmaWVyOnN1Z2dl
c3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3Rh
YmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxS
ZXVzZUlkZW50aWZpZXJdKTsKICAgICBpZiAoIWNlbGwpCi0gICAgICAgIGNlbGwgPSBbW1tVSVRh
YmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZh
dWx0IHJldXNlSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBjZWxsID0gYWRvcHROUyhbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10g
aW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVy
OnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSk7CiAKLSAgICBjZWxsLnRleHRMYWJlbC50
ZXh0ID0gW3NlbGYuY29udHJvbCBzdWdnZXN0aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKLSAg
ICBjZWxsLnRleHRMYWJlbC5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdU
YWlsOwotICAgIGNlbGwudGV4dExhYmVsLnRleHRBbGlnbm1lbnQgPSBbc2VsZi5jb250cm9sIHRl
eHRBbGlnbm1lbnRdOworICAgIFtjZWxsIHRleHRMYWJlbF0udGV4dCA9IFtzZWxmLmNvbnRyb2wg
c3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhQYXRoLnJvd107CisgICAgW2NlbGwgdGV4dExhYmVsXS5s
aW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOworICAgIFtjZWxsIHRl
eHRMYWJlbF0udGV4dEFsaWdubWVudCA9IFtzZWxmLmNvbnRyb2wgdGV4dEFsaWdubWVudF07CiAK
LSAgICByZXR1cm4gY2VsbDsKKyAgICByZXR1cm4gY2VsbC5hdXRvcmVsZWFzZSgpOwogfQogCiAt
ICh2b2lkKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJ
bmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xs
ZXIubW0KaW5kZXggODkxMGZiN2Y0ZTE2NWIwZDFhYmUxMzU0NjRkNGEyMzk3YWE2YmIwYy4uNGYw
Yzc4MjYwMDhmMTM1NzAzNTkxZGNhNmIxYzJiM2NmZjMwN2RhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3
Q29udHJvbGxlci5tbQpAQCAtNTEyLDEyICs1MTIsMTIgQEAgLSAoTlNEYXRlICopZGF0ZQogCiAt
IChOU0RhdGVDb21wb25lbnRzICopX2RhdGVDb21wb25lbnRGb3JEYXk6KE5TSW50ZWdlcilkYXkg
bW9udGg6KE5TSW50ZWdlciltb250aCB5ZWFyOihOU0ludGVnZXIpeWVhciBlcmE6KE5TSW50ZWdl
cillcmEKIHsKLSAgICBOU0RhdGVDb21wb25lbnRzICpkYXRlQ29tcG9uZW50cyA9IFtbW05TRGF0
ZUNvbXBvbmVudHMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRlQ29tcG9uZW50
cy5kYXkgPSBkYXk7Ci0gICAgZGF0ZUNvbXBvbmVudHMubW9udGggPSBtb250aDsKLSAgICBkYXRl
Q29tcG9uZW50cy55ZWFyID0geWVhcjsKLSAgICBkYXRlQ29tcG9uZW50cy5lcmEgPSBlcmE7Ci0g
ICAgZGF0ZUNvbXBvbmVudHMuY2FsZW5kYXIgPSBfY2FsZW5kYXIuZ2V0KCk7CisgICAgYXV0byBk
YXRlQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU0RhdGVDb21wb25lbnRzIGFsbG9jXSBpbml0XSk7
CisgICAgW2RhdGVDb21wb25lbnRzIHNldERheTpkYXldOworICAgIFtkYXRlQ29tcG9uZW50cyBz
ZXRNb250aDptb250aF07CisgICAgW2RhdGVDb21wb25lbnRzIHNldFllYXI6eWVhcl07CisgICAg
W2RhdGVDb21wb25lbnRzIHNldEVyYTplcmFdOworICAgIFtkYXRlQ29tcG9uZW50cyBzZXRDYWxl
bmRhcjpfY2FsZW5kYXIuZ2V0KCldOwogICAgIHJldHVybiBkYXRlQ29tcG9uZW50czsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVj
dFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxl
Y3RQaWNrZXIubW0KaW5kZXggYjI1OTlhZjZlOWY3ZTU5ZWQ2ZDQ3MmQwNWRjM2MxN2E0ZTUwN2E2
OC4uMzBhNDBhN2VjMDg2ODUxNTY1YzliNWQ5ZTdiOWZiNjM0YTQ5ZWIzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2Vy
Lm1tCkBAIC03OSwxMCArNzksMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoT3B0aW9uSXRl
bTooY29uc3QgT3B0aW9uSXRlbSYpaXRlbQogICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0XSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU011dGFibGVTdHJpbmcgKnRyaW1tZWRUZXh0
ID0gW1tpdGVtLnRleHQgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBDRlN0cmluZ1Ry
aW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpdHJpbW1lZFRleHQpOworICAgIGF1dG8g
dHJpbW1lZFRleHQgPSBhZG9wdE5TKFtpdGVtLnRleHQgbXV0YWJsZUNvcHldKTsKKyAgICBDRlN0
cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpdHJpbW1lZFRleHQuZ2V0KCkp
OwogCi0gICAgW1tzZWxmIHRpdGxlTGFiZWxdIHNldFRleHQ6dHJpbW1lZFRleHRdOworICAgIFtb
c2VsZiB0aXRsZUxhYmVsXSBzZXRUZXh0OnRyaW1tZWRUZXh0LmdldCgpXTsKICAgICBbc2VsZiBz
ZXRDaGVja2VkOml0ZW0uaXNTZWxlY3RlZF07CiAgICAgW3NlbGYgc2V0RGlzYWJsZWQ6aXRlbS5k
aXNhYmxlZF07CiAgICAgaWYgKF9kaXNhYmxlZCkKQEAgLTEwNSwxMCArMTA1LDEwIEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aE9wdGlvbkl0ZW06KGNvbnN0IE9wdGlvbkl0ZW0mKWl0ZW0KICAg
ICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
TlNNdXRhYmxlU3RyaW5nICp0cmltbWVkVGV4dCA9IFtbaXRlbS50ZXh0IG11dGFibGVDb3B5XSBh
dXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5n
UmVmKXRyaW1tZWRUZXh0KTsKKyAgICBhdXRvIHRyaW1tZWRUZXh0ID0gYWRvcHROUyhbaXRlbS50
ZXh0IG11dGFibGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxl
U3RyaW5nUmVmKXRyaW1tZWRUZXh0LmdldCgpKTsKIAotICAgIFtbc2VsZiB0aXRsZUxhYmVsXSBz
ZXRUZXh0OnRyaW1tZWRUZXh0XTsKKyAgICBbW3NlbGYgdGl0bGVMYWJlbF0gc2V0VGV4dDp0cmlt
bWVkVGV4dC5nZXQoKV07CiAgICAgW3NlbGYgc2V0Q2hlY2tlZDpOT107CiAgICAgW1tzZWxmIHRp
dGxlTGFiZWxdIHNldFRleHRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhXaGl0ZTowLjAgYWxwaGE6
R3JvdXBPcHRpb25UZXh0Q29sb3JBbHBoYV1dOwogICAgIFtzZWxmIHNldERpc2FibGVkOllFU107
CkBAIC0yMjMsMTQgKzIyMywxOCBAQCAtICh2b2lkKWxheW91dFN1YnZpZXdzCiAtIChVSVZpZXcg
KilwaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IHZpZXdGb3JSb3c6KE5TSW50
ZWdlcilyb3dJbmRleCBmb3JDb21wb25lbnQ6KE5TSW50ZWdlciljb2x1bW5JbmRleCByZXVzaW5n
VmlldzooVUlWaWV3ICopdmlldwogewogICAgIGF1dG8mIGl0ZW0gPSBbX3ZpZXcgZm9jdXNlZFNl
bGVjdEVsZW1lbnRPcHRpb25zXVtyb3dJbmRleF07Ci0gICAgVUlQaWNrZXJDb250ZW50VmlldyAq
cGlja2VySXRlbSA9IGl0ZW0uaXNHcm91cCA/IFtbW1dLT3B0aW9uR3JvdXBQaWNrZXJDZWxsIGFs
bG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0gYXV0b3JlbGVhc2VdIDogW1tbV0tPcHRpb25Q
aWNrZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0gYXV0b3JlbGVhc2VdOwor
ICAgIFJldGFpblB0cjxXS09wdGlvblBpY2tlckNlbGw+IHBpY2tlckl0ZW07CisgICAgaWYgKGl0
ZW0uaXNHcm91cCkKKyAgICAgICAgcGlja2VySXRlbSA9IGFkb3B0TlMoW1tXS09wdGlvbkdyb3Vw
UGlja2VyQ2VsbCBhbGxvY10gaW5pdFdpdGhPcHRpb25JdGVtOml0ZW1dKTsKKyAgICBlbHNlCisg
ICAgICAgIHBpY2tlckl0ZW0gPSBhZG9wdE5TKFtbV0tPcHRpb25QaWNrZXJDZWxsIGFsbG9jXSBp
bml0V2l0aE9wdGlvbkl0ZW06aXRlbV0pOwogCiAgICAgLy8gVGhlIGNlbGwgc3RhcnRzIG91dCB3
aXRoIGEgbnVsbCBmcmFtZS4gV2UgbmVlZCB0byBzZXQgaXRzIGZyYW1lIG5vdyBzbyB3ZSBjYW4g
ZmluZCB0aGUgcmlnaHQgZm9udCBzaXplLgogICAgIFVJVGFibGVWaWV3ICp0YWJsZSA9IFtwaWNr
ZXJWaWV3IHRhYmxlVmlld0ZvckNvbHVtbjowXTsKICAgICBDR1JlY3QgZnJhbWUgPSBbdGFibGUg
cmVjdEZvclJvd0F0SW5kZXhQYXRoOltOU0luZGV4UGF0aCBpbmRleFBhdGhGb3JSb3c6cm93SW5k
ZXggaW5TZWN0aW9uOjBdXTsKLSAgICBwaWNrZXJJdGVtLmZyYW1lID0gZnJhbWU7CisgICAgW3Bp
Y2tlckl0ZW0gc2V0RnJhbWU6ZnJhbWVdOwogCi0gICAgVUlMYWJlbCAqdGl0bGVUZXh0TGFiZWwg
PSBwaWNrZXJJdGVtLnRpdGxlTGFiZWw7CisgICAgVUlMYWJlbCAqdGl0bGVUZXh0TGFiZWwgPSBb
cGlja2VySXRlbSB0aXRsZUxhYmVsXTsKICAgICBmbG9hdCB3aWR0aCA9IFtwaWNrZXJJdGVtIGxh
YmVsV2lkdGhGb3JCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBDR1JlY3RHZXRXaWR0aChmcmFtZSks
IENHUmVjdEdldEhlaWdodChmcmFtZSkpXTsKICAgICBBU1NFUlQod2lkdGggPiAwKTsKIApAQCAt
MjQ2LDcgKzI1MCw3IEBAIC0gKFVJVmlldyAqKXBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBp
Y2tlclZpZXcgdmlld0ZvclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4CiAgICAgW3RpdGxlVGV4dExh
YmVsIHNldE51bWJlck9mTGluZXM6Ml07CiAgICAgW3RpdGxlVGV4dExhYmVsIHNldFRleHRBbGln
bm1lbnQ6X3RleHRBbGlnbm1lbnRdOwogCi0gICAgcmV0dXJuIHBpY2tlckl0ZW07CisgICAgcmV0
dXJuIHBpY2tlckl0ZW0uYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNJbnRlZ2VyKW51bWJlck9m
Q29tcG9uZW50c0luUGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopYVBpY2tlclZpZXcKQEAgLTQw
NywxNCArNDExLDE0IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXBpY2tlclZpZXc6KFVJUGlj
a2VyVmlldyAqKXBpY2tlclZpZXcgYXR0cmlidXRlZFRpdGxlRm9yCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICBjb25zdCBPcHRpb25JdGVtJiBvcHRpb24gPSBbX3ZpZXcgZm9jdXNlZFNlbGVj
dEVsZW1lbnRPcHRpb25zXVtyb3ddOwotICAgIE5TTXV0YWJsZVN0cmluZyAqdHJpbW1lZFRleHQg
PSBbW29wdGlvbi50ZXh0IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdU
cmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWRUZXh0KTsKKyAgICBhdXRv
IHRyaW1tZWRUZXh0ID0gYWRvcHROUyhbb3B0aW9uLnRleHQgbXV0YWJsZUNvcHldKTsKKyAgICBD
RlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpdHJpbW1lZFRleHQuZ2V0
KCkpOwogCi0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9
IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dHJpbW1l
ZFRleHRdOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0cmltbWVkVGV4dC5nZXQoKV0p
OwogICAgIGlmIChvcHRpb24uZGlzYWJsZWQpCiAgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFk
ZEF0dHJpYnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgdmFsdWU6W1VJQ29sb3Ig
Y29sb3JXaXRoV2hpdGU6MC4wIGFscGhhOkRpc2FibGVkT3B0aW9uQWxwaGFdIHJhbmdlOk5TTWFr
ZVJhbmdlKDAsIFt0cmltbWVkVGV4dCBsZW5ndGhdKV07CiAKLSAgICByZXR1cm4gW2F0dHJpYnV0
ZWRTdHJpbmcgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpcGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlja2Vy
VmlldyBkaWRTZWxlY3RSb3c6KE5TSW50ZWdlcilyb3cgaW5Db21wb25lbnQ6KE5TSW50ZWdlcilj
b21wb25lbnQKQEAgLTgzOSwzOSArODQzLDM5IEBAIC0gKFVJVmlldyAqKXRhYmxlVmlldzooVUlU
YWJsZVZpZXcgKil0YWJsZVZpZXcgdmlld0ZvckhlYWRlckluU2VjdGlvbjooTlNJbnRlZ2VyCiAg
ICAgaWYgKCFzZWN0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVUlWaWV3ICpzZWN0
aW9uVmlldyA9IFtbW1VJVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
c2VjdGlvblZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7CiAKLSAgICBVSUxh
YmVsICpzZWN0aW9uTGFiZWwgPSBbW1tVSUxhYmVsIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
Ci0gICAgc2VjdGlvbkxhYmVsLnRleHQgPSBbc2VsZiB0YWJsZVZpZXc6dGFibGVWaWV3IHRpdGxl
Rm9ySGVhZGVySW5TZWN0aW9uOnNlY3Rpb25dOwotICAgIHNlY3Rpb25MYWJlbC50ZXh0Q29sb3Ig
PSBVSUNvbG9yLmJsYWNrQ29sb3I7Ci0gICAgc2VjdGlvbkxhYmVsLmZvbnQgPSBbVUlGb250IGJv
bGRTeXN0ZW1Gb250T2ZTaXplOnNlY3Rpb25IZWFkZXJGb250U2l6ZV07Ci0gICAgc2VjdGlvbkxh
YmVsLmFkanVzdHNGb250U2l6ZVRvRml0V2lkdGggPSBOTzsKLSAgICBzZWN0aW9uTGFiZWwubGlu
ZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbDsKLSAgICBbc2VjdGlvblZp
ZXcgYWRkU3VidmlldzpzZWN0aW9uTGFiZWxdOworICAgIGF1dG8gc2VjdGlvbkxhYmVsID0gYWRv
cHROUyhbW1VJTGFiZWwgYWxsb2NdIGluaXRdKTsKKyAgICBbc2VjdGlvbkxhYmVsIHNldFRleHQ6
W3NlbGYgdGFibGVWaWV3OnRhYmxlVmlldyB0aXRsZUZvckhlYWRlckluU2VjdGlvbjpzZWN0aW9u
XV07CisgICAgW3NlY3Rpb25MYWJlbCBzZXRUZXh0Q29sb3I6VUlDb2xvci5ibGFja0NvbG9yXTsK
KyAgICBbc2VjdGlvbkxhYmVsIHNldEZvbnQ6W1VJRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZTpz
ZWN0aW9uSGVhZGVyRm9udFNpemVdXTsKKyAgICBbc2VjdGlvbkxhYmVsIHNldEFkanVzdHNGb250
U2l6ZVRvRml0V2lkdGg6Tk9dOworICAgIFtzZWN0aW9uTGFiZWwgc2V0TGluZUJyZWFrTW9kZTpO
U0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWxdOworICAgIFtzZWN0aW9uVmlldyBhZGRTdWJ2aWV3
OnNlY3Rpb25MYWJlbC5nZXQoKV07CiAKLSAgICBzZWN0aW9uTGFiZWwudHJhbnNsYXRlc0F1dG9y
ZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsKKyAgICBbc2VjdGlvbkxhYmVsIHNldFRy
YW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzOk5PXTsKICAgICBbTlNMYXlv
dXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKLSAgICAgICAgW3NlY3Rpb25MYWJl
bC5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNlY3Rpb25WaWV3LmxlYWRp
bmdBbmNob3IgY29uc3RhbnQ6c2VjdGlvbkhlYWRlck1hcmdpbl0sCi0gICAgICAgIFtzZWN0aW9u
TGFiZWwudG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNlY3Rpb25WaWV3LnRvcEFu
Y2hvciBjb25zdGFudDowXSwKKyAgICAgICAgW1tzZWN0aW9uTGFiZWwgbGVhZGluZ0FuY2hvcl0g
Y29uc3RyYWludEVxdWFsVG9BbmNob3I6W3NlY3Rpb25WaWV3IGxlYWRpbmdBbmNob3JdIGNvbnN0
YW50OnNlY3Rpb25IZWFkZXJNYXJnaW5dLAorICAgICAgICBbW3NlY3Rpb25MYWJlbCB0b3BBbmNo
b3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0aW9uVmlldyB0b3BBbmNob3JdIGNvbnN0
YW50OjBdLAogICAgIF1dOwogCi0gICAgVUlCdXR0b24gKmNvbGxhcHNlQnV0dG9uID0gW1tbVUlC
dXR0b24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBjb2xsYXBzZUJ1dHRvbi50YWcg
PSBzZWN0aW9uOworICAgIGF1dG8gY29sbGFwc2VCdXR0b24gPSBhZG9wdE5TKFtbVUlCdXR0b24g
YWxsb2NdIGluaXRdKTsKKyAgICBbY29sbGFwc2VCdXR0b24gc2V0VGFnOnNlY3Rpb25dOwogICAg
IFtjb2xsYXBzZUJ1dHRvbiBzZXRJbWFnZTpbVUlJbWFnZSBzeXN0ZW1JbWFnZU5hbWVkOkAiY2hl
dnJvbi5kb3duIiB3aXRoQ29uZmlndXJhdGlvbjpbVUlJbWFnZVN5bWJvbENvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbldpdGhQb2ludFNpemU6c2VjdGlvbkhlYWRlckNvbGxhcHNlQnV0dG9uU2l6
ZSB3ZWlnaHQ6VUlJbWFnZVN5bWJvbFdlaWdodFNlbWlib2xkXV0gZm9yU3RhdGU6VUlDb250cm9s
U3RhdGVOb3JtYWxdOwogICAgIFtjb2xsYXBzZUJ1dHRvbiBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246
QHNlbGVjdG9yKGNvbGxhcHNlU2VjdGlvbjopIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZl
bnRUb3VjaFVwSW5zaWRlXTsKLSAgICBbc2VjdGlvblZpZXcgYWRkU3Vidmlldzpjb2xsYXBzZUJ1
dHRvbl07CisgICAgW3NlY3Rpb25WaWV3IGFkZFN1YnZpZXc6Y29sbGFwc2VCdXR0b24uZ2V0KCld
OwogCiAgICAgaWYgKFtfY29sbGFwc2VkU2VjdGlvbnMgY29udGFpbnNPYmplY3Q6QChzZWN0aW9u
KV0pCi0gICAgICAgIGNvbGxhcHNlQnV0dG9uLnRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3Jt
TWFrZVJvdGF0aW9uKC1NX1BJIC8gMik7CisgICAgICAgIFtjb2xsYXBzZUJ1dHRvbiBzZXRUcmFu
c2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oLU1fUEkgLyAyKV07CiAKLSAgICBj
b2xsYXBzZUJ1dHRvbi50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9
IE5POworICAgIFtjb2xsYXBzZUJ1dHRvbiBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0lu
dG9Db25zdHJhaW50czpOT107CiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0
cmFpbnRzOkBbCi0gICAgICAgIFtjb2xsYXBzZUJ1dHRvbi50cmFpbGluZ0FuY2hvciBjb25zdHJh
aW50RXF1YWxUb0FuY2hvcjpzZWN0aW9uVmlldy50cmFpbGluZ0FuY2hvciBjb25zdGFudDotc2Vj
dGlvbkhlYWRlck1hcmdpbl0sCi0gICAgICAgIFtjb2xsYXBzZUJ1dHRvbi50b3BBbmNob3IgY29u
c3RyYWludEVxdWFsVG9BbmNob3I6c2VjdGlvbkxhYmVsLnRvcEFuY2hvciBjb25zdGFudDowXSwK
LSAgICAgICAgW2NvbGxhcHNlQnV0dG9uLmJvdHRvbUFuY2hvciBjb25zdHJhaW50RXF1YWxUb0Fu
Y2hvcjpzZWN0aW9uTGFiZWwuYm90dG9tQW5jaG9yIGNvbnN0YW50OjBdLAorICAgICAgICBbW2Nv
bGxhcHNlQnV0dG9uIHRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbc2Vj
dGlvblZpZXcgdHJhaWxpbmdBbmNob3JdIGNvbnN0YW50Oi1zZWN0aW9uSGVhZGVyTWFyZ2luXSwK
KyAgICAgICAgW1tjb2xsYXBzZUJ1dHRvbiB0b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5j
aG9yOltzZWN0aW9uTGFiZWwgdG9wQW5jaG9yXSBjb25zdGFudDowXSwKKyAgICAgICAgW1tjb2xs
YXBzZUJ1dHRvbiBib3R0b21BbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0aW9u
TGFiZWwgYm90dG9tQW5jaG9yXSBjb25zdGFudDowXSwKICAgICBdXTsKIAotICAgIHJldHVybiBz
ZWN0aW9uVmlldzsKKyAgICByZXR1cm4gc2VjdGlvblZpZXcuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAodm9pZCljb2xsYXBzZVNlY3Rpb246KFVJQnV0dG9uICopYnV0dG9uCkBAIC05MzksMzQgKzk0
MywzNCBAQCAtIChPcHRpb25JdGVtICopb3B0aW9uSXRlbUF0SW5kZXhQYXRoOihOU0luZGV4UGF0
aCAqKWluZGV4UGF0aAogCiAtIChVSVRhYmxlVmlld0NlbGwgKil0YWJsZVZpZXc6KFVJVGFibGVW
aWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRl
eFBhdGgKIHsKLSAgICBVSVRhYmxlVmlld0NlbGwgKmNlbGwgPSBbdGFibGVWaWV3IGRlcXVldWVS
ZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpvcHRpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAg
ICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0
aElkZW50aWZpZXI6b3B0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0pOwogICAgIGlmICghY2VsbCkK
LSAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHlsZTpV
SVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVyOm9wdGlvbkNlbGxSZXVz
ZUlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY2VsbCA9IGFkb3B0TlMoW1tVSVRh
YmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZh
dWx0IHJldXNlSWRlbnRpZmllcjpvcHRpb25DZWxsUmV1c2VJZGVudGlmaWVyXSk7CiAKICAgICBp
ZiAoX2NvbnRlbnRWaWV3LmZvY3VzZWRTZWxlY3RFbGVtZW50T3B0aW9ucy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgY2VsbC50ZXh0TGFiZWwuZW5hYmxlZCA9IE5POwotICAgICAgICBjZWxsLnRleHRM
YWJlbC50ZXh0ID0gV0VCX1VJX1NUUklOR19LRVkoIk5vIE9wdGlvbnMiLCAiTm8gT3B0aW9ucyBT
ZWxlY3QgUG9wb3ZlciIsICJFbXB0eSBzZWxlY3QgbGlzdCIpOwotICAgICAgICBjZWxsLnVzZXJJ
bnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgY2VsbC5pbWFnZVZpZXcuaW1hZ2UgPSBu
aWw7Ci0gICAgICAgIHJldHVybiBjZWxsOworICAgICAgICBbY2VsbCB0ZXh0TGFiZWxdLmVuYWJs
ZWQgPSBOTzsKKyAgICAgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0ID0gV0VCX1VJX1NUUklOR19L
RVkoIk5vIE9wdGlvbnMiLCAiTm8gT3B0aW9ucyBTZWxlY3QgUG9wb3ZlciIsICJFbXB0eSBzZWxl
Y3QgbGlzdCIpOworICAgICAgICBbY2VsbCBzZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOk5PXTsK
KyAgICAgICAgW2NlbGwgaW1hZ2VWaWV3XS5pbWFnZSA9IG5pbDsKKyAgICAgICAgcmV0dXJuIGNl
bGwuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBhdXRvIG9wdGlvbiA9IFtzZWxmIG9wdGlv
bkl0ZW1BdEluZGV4UGF0aDppbmRleFBhdGhdOwogICAgIGlmICghb3B0aW9uKQotICAgICAgICBy
ZXR1cm4gY2VsbDsKKyAgICAgICAgcmV0dXJuIGNlbGwuYXV0b3JlbGVhc2UoKTsKIAotICAgIGNl
bGwudGV4dExhYmVsLnRleHQgPSBvcHRpb24tPnRleHQ7Ci0gICAgY2VsbC50ZXh0TGFiZWwuZW5h
YmxlZCA9ICFvcHRpb24tPmRpc2FibGVkOwotICAgIGNlbGwudXNlckludGVyYWN0aW9uRW5hYmxl
ZCA9ICFvcHRpb24tPmRpc2FibGVkOworICAgIFtjZWxsIHRleHRMYWJlbF0udGV4dCA9IG9wdGlv
bi0+dGV4dDsKKyAgICBbY2VsbCB0ZXh0TGFiZWxdLmVuYWJsZWQgPSAhb3B0aW9uLT5kaXNhYmxl
ZDsKKyAgICBbY2VsbCBzZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOiFvcHRpb24tPmRpc2FibGVk
XTsKIAogICAgIGlmIChvcHRpb24tPmlzU2VsZWN0ZWQpCi0gICAgICAgIGNlbGwuaW1hZ2VWaWV3
LmltYWdlID0gW1VJSW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNoZWNrbWFyay5jaXJjbGUuZmls
bCJdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmltYWdlID0gW1VJSW1hZ2Ugc3lzdGVtSW1h
Z2VOYW1lZDpAImNoZWNrbWFyay5jaXJjbGUuZmlsbCJdOwogICAgIGVsc2UgaWYgKG9wdGlvbi0+
ZGlzYWJsZWQpCi0gICAgICAgIGNlbGwuaW1hZ2VWaWV3LmltYWdlID0gW1tVSUltYWdlIHN5c3Rl
bUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhUaW50Q29sb3I6VUlDb2xvci5xdWF0ZXJu
YXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1hZ2VSZW5kZXJpbmdNb2RlQWx3YXlzT3Jp
Z2luYWxdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmltYWdlID0gW1tVSUltYWdlIHN5c3Rl
bUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhUaW50Q29sb3I6VUlDb2xvci5xdWF0ZXJu
YXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1hZ2VSZW5kZXJpbmdNb2RlQWx3YXlzT3Jp
Z2luYWxdOwogICAgIGVsc2UKLSAgICAgICAgY2VsbC5pbWFnZVZpZXcuaW1hZ2UgPSBbW1VJSW1h
Z2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNpcmNsZSJdIGltYWdlV2l0aFRpbnRDb2xvcjpVSUNvbG9y
LnRlcnRpYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1hZ2VSZW5kZXJpbmdNb2RlQWx3
YXlzT3JpZ2luYWxdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmltYWdlID0gW1tVSUltYWdl
IHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhUaW50Q29sb3I6VUlDb2xvci50
ZXJ0aWFyeUxhYmVsQ29sb3IgcmVuZGVyaW5nTW9kZTpVSUltYWdlUmVuZGVyaW5nTW9kZUFsd2F5
c09yaWdpbmFsXTsKIAotICAgIHJldHVybiBjZWxsOworICAgIHJldHVybiBjZWxsLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBk
aWRTZWxlY3RSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92
ZXIubW0KaW5kZXggOWE1YzA3NzUxMWZhMDM2ZjgyNzY2OWFhM2ExNGNhNDVjNDJhZmJkNi4uZmZj
ZjZlMTVlNWRjZTllYjgwNzliMDA2M2JkNGU5ODI2MDIwNDY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0K
QEAgLTI1NSwyNiArMjU1LDI2IEBAIC0gKE9wdGlvbkl0ZW0gKilmaW5kSXRlbUF0OihOU0luZGV4
UGF0aCAqKWluZGV4UGF0aAogCiAtIChVSVRhYmxlVmlld0NlbGwgKil0YWJsZVZpZXc6KFVJVGFi
bGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilp
bmRleFBhdGgKIHsKLSAgICBVSVRhYmxlVmlld0NlbGwgKmNlbGwgPSBbdGFibGVWaWV3IGRlcXVl
dWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpXS1BvcG92ZXJUYWJsZVZpZXdDZWxsUmV1c2VJ
ZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3RhYmxlVmlldyBkZXF1ZXVl
UmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6V0tQb3BvdmVyVGFibGVWaWV3Q2VsbFJldXNlSWRl
bnRpZmllcl0pOwogICAgIGlmICghY2VsbCkKLSAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3
Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1
c2VJZGVudGlmaWVyOldLUG9wb3ZlclRhYmxlVmlld0NlbGxSZXVzZUlkZW50aWZpZXJdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgY2VsbCA9IGFkb3B0TlMoW1tVSVRhYmxlVmlld0NlbGwgYWxsb2Nd
IGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZhdWx0IHJldXNlSWRlbnRpZmll
cjpXS1BvcG92ZXJUYWJsZVZpZXdDZWxsUmV1c2VJZGVudGlmaWVyXSk7CiAgICAgCi0gICAgY2Vs
bC5zZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgPSBzZWxmLnZpZXcuc2VtYW50aWNDb250ZW50QXR0
cmlidXRlOwotICAgIGNlbGwudGV4dExhYmVsLnRleHRBbGlnbm1lbnQgPSBfdGV4dEFsaWdubWVu
dDsKKyAgICBbY2VsbCBzZXRTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGU6c2VsZi52aWV3LnNlbWFu
dGljQ29udGVudEF0dHJpYnV0ZV07CisgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0QWxpZ25tZW50
ID0gX3RleHRBbGlnbm1lbnQ7CiAgICAgCiAgICAgaWYgKF9jb250ZW50Vmlldy5mb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLnNlbGVjdE9wdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNlbGwu
dGV4dExhYmVsLmVuYWJsZWQgPSBOTzsKLSAgICAgICAgY2VsbC50ZXh0TGFiZWwudGV4dCA9IFdF
Ql9VSV9TVFJJTkdfS0VZKCJObyBPcHRpb25zIiwgIk5vIE9wdGlvbnMgU2VsZWN0IFBvcG92ZXIi
LCAiRW1wdHkgc2VsZWN0IGxpc3QiKTsKLSAgICAgICAgY2VsbC5hY2Nlc3NvcnlUeXBlID0gVUlU
YWJsZVZpZXdDZWxsQWNjZXNzb3J5Tm9uZTsKLSAgICAgICAgY2VsbC5zZWxlY3Rpb25TdHlsZSA9
IFVJVGFibGVWaWV3Q2VsbFNlbGVjdGlvblN0eWxlTm9uZTsKLSAgICAgICAgcmV0dXJuIGNlbGw7
CisgICAgICAgIFtjZWxsIHRleHRMYWJlbF0uZW5hYmxlZCA9IE5POworICAgICAgICBbY2VsbCB0
ZXh0TGFiZWxdLnRleHQgPSBXRUJfVUlfU1RSSU5HX0tFWSgiTm8gT3B0aW9ucyIsICJObyBPcHRp
b25zIFNlbGVjdCBQb3BvdmVyIiwgIkVtcHR5IHNlbGVjdCBsaXN0Iik7CisgICAgICAgIFtjZWxs
IHNldEFjY2Vzc29yeVR5cGU6VUlUYWJsZVZpZXdDZWxsQWNjZXNzb3J5Tm9uZV07CisgICAgICAg
IFtjZWxsIHNldFNlbGVjdGlvblN0eWxlOlVJVGFibGVWaWV3Q2VsbFNlbGVjdGlvblN0eWxlTm9u
ZV07CisgICAgICAgIHJldHVybiBjZWxsLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogICAgIAogICAg
IENHUmVjdCB0ZXh0UmVjdCA9IFtjZWxsIHRleHRSZWN0Rm9yQ29udGVudFJlY3Q6W2NlbGwgY29u
dGVudFJlY3RGb3JCb3VuZHM6W2NlbGwgYm91bmRzXV1dOwogICAgIEFTU0VSVF9JTVBMSUVTKENH
UmVjdEdldFdpZHRoKHRhYmxlVmlldy5ib3VuZHMpID4gMCwgdGV4dFJlY3Quc2l6ZS53aWR0aCA+
IDApOwogICAgIAogICAgIC8vIEFzc3VtZSBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBhdmFpbGFi
bGUgdGV4dCB3aWR0aC4KLSAgICBVSUZvbnQgKmZvbnQgPSBjZWxsLnRleHRMYWJlbC5mb250Owor
ICAgIFVJRm9udCAqZm9udCA9IFtjZWxsIHRleHRMYWJlbF0uZm9udDsKICAgICBDR0Zsb2F0IGlu
aXRpYWxGb250U2l6ZSA9IGZvbnQucG9pbnRTaXplOwogICAgIEFTU0VSVChpbml0aWFsRm9udFNp
emUpOwogICAgIGlmICh0ZXh0UmVjdC5zaXplLndpZHRoICE9IF9tYXhpbXVtVGV4dFdpZHRoIHx8
IF9mb250U2l6ZSA9PSAwKSB7CkBAIC0yODUsMTEgKzI4NSwxMSBAQCAtIChVSVRhYmxlVmlld0Nl
bGwgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4
UGF0aDooTgogICAgIGNvbnN0IE9wdGlvbkl0ZW0qIGl0ZW0gPSBbc2VsZiBmaW5kSXRlbUF0Omlu
ZGV4UGF0aF07CiAgICAgQVNTRVJUKGl0ZW0pOwogICAgIAotICAgIFtzZWxmIHBvcHVsYXRlQ2Vs
bDpjZWxsIHdpdGhJdGVtOippdGVtXTsKLSAgICBbY2VsbC50ZXh0TGFiZWwgc2V0Rm9udDpbZm9u
dCBmb250V2l0aFNpemU6X2ZvbnRTaXplXV07Ci0gICAgW2NlbGwudGV4dExhYmVsIHNldExpbmVC
cmVha01vZGU6TlNMaW5lQnJlYWtCeVdvcmRXcmFwcGluZ107Ci0gICAgW2NlbGwudGV4dExhYmVs
IHNldE51bWJlck9mTGluZXM6Ml07Ci0gICAgcmV0dXJuIGNlbGw7CisgICAgW3NlbGYgcG9wdWxh
dGVDZWxsOmNlbGwuZ2V0KCkgd2l0aEl0ZW06Kml0ZW1dOworICAgIFtbY2VsbCB0ZXh0TGFiZWxd
IHNldEZvbnQ6W2ZvbnQgZm9udFdpdGhTaXplOl9mb250U2l6ZV1dOworICAgIFtbY2VsbCB0ZXh0
TGFiZWxdIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVdvcmRXcmFwcGluZ107CisgICAg
W1tjZWxsIHRleHRMYWJlbF0gc2V0TnVtYmVyT2ZMaW5lczoyXTsKKyAgICByZXR1cm4gY2VsbC5h
dXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJs
ZVZpZXcgZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCkBA
IC00MTMsNyArNDEzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50
VmlldyAqKXZpZXcgaGFzR3JvdXBzOihCT09MKWhhc0dyb3VwcwogICAgICAgICBbcG9wb3ZlclZp
ZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRTaXplOiBwb3BvdmVyU2l6ZV07CiAgICAg
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBzZWxmLnBvcG92
ZXJDb250cm9sbGVyID0gW1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250
ZW50Vmlld0NvbnRyb2xsZXI6cG9wb3ZlclZpZXdDb250cm9sbGVyLmdldCgpXSBhdXRvcmVsZWFz
ZV07CisgICAgc2VsZi5wb3BvdmVyQ29udHJvbGxlciA9IGFkb3B0TlMoW1tVSVBvcG92ZXJDb250
cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpwb3BvdmVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAjaWYgIVVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlldy5t
bQppbmRleCA3ZWMyOGFjMTBiOGMwYTMwNDBmZGI0ODVjNjM3MmYxMjllODhkNzYzLi45MTdlYWI2
ZTYxZDAxNTExNjg4MTcwYmUwNjEzMjk1Y2VmZDk4MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXcubW0KQEAgLTQzMCwxMyAr
NDMwLDEzIEBAIHN0YXRpYyBXS051bWJlclBhZEtleSBhbHRlcm5hdGVLZXlBdFBvc2l0aW9uKFdL
TnVtYmVyUGFkQnV0dG9uUG9zaXRpb24gcG9zaXRpb24pCiAKIC0gKFdLTnVtYmVyUGFkQnV0dG9u
ICopX2J1dHRvbkZvclBvc2l0aW9uOihXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uKXBvc2l0aW9u
CiB7Ci0gICAgV0tOdW1iZXJQYWRCdXR0b24gKmJ1dHRvbiA9IFtbW1dLTnVtYmVyUGFkQnV0dG9u
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgYnV0dG9uLmRlZmF1bHRLZXkgPSBkZWZh
dWx0S2V5QXRQb3NpdGlvbihwb3NpdGlvbiwgW19jb250cm9sbGVyIGlucHV0TW9kZV0pOwotICAg
IGJ1dHRvbi5hbHRlcm5hdGVLZXkgPSBhbHRlcm5hdGVLZXlBdFBvc2l0aW9uKHBvc2l0aW9uKTsK
LSAgICBidXR0b24uYnV0dG9uUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBidXR0b24udGl0bGVM
YWJlbC5mb250ID0gW1VJRm9udCBzeXN0ZW1Gb250T2ZTaXplOm51bWJlclBhZExhYmVsRm9udFNp
emUoKSB3ZWlnaHQ6VUlGb250V2VpZ2h0U2VtaWJvbGQgZGVzaWduOihOU1N0cmluZyAqKWtDVEZv
bnRVSUZvbnREZXNpZ25Sb3VuZGVkXTsKLSAgICBidXR0b24udXNlckludGVyYWN0aW9uRW5hYmxl
ZCA9IE5POwotICAgIHJldHVybiBidXR0b247CisgICAgYXV0byBidXR0b24gPSBhZG9wdE5TKFtb
V0tOdW1iZXJQYWRCdXR0b24gYWxsb2NdIGluaXRdKTsKKyAgICBbYnV0dG9uIHNldERlZmF1bHRL
ZXk6ZGVmYXVsdEtleUF0UG9zaXRpb24ocG9zaXRpb24sIFtfY29udHJvbGxlciBpbnB1dE1vZGVd
KV07CisgICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVLZXk6YWx0ZXJuYXRlS2V5QXRQb3NpdGlvbihw
b3NpdGlvbildOworICAgIFtidXR0b24gc2V0QnV0dG9uUG9zaXRpb246cG9zaXRpb25dOworICAg
IFtidXR0b24gdGl0bGVMYWJlbF0uZm9udCA9IFtVSUZvbnQgc3lzdGVtRm9udE9mU2l6ZTpudW1i
ZXJQYWRMYWJlbEZvbnRTaXplKCkgd2VpZ2h0OlVJRm9udFdlaWdodFNlbWlib2xkIGRlc2lnbjoo
TlNTdHJpbmcgKilrQ1RGb250VUlGb250RGVzaWduUm91bmRlZF07CisgICAgW2J1dHRvbiBzZXRV
c2VySW50ZXJhY3Rpb25FbmFibGVkOk5PXTsKKyAgICByZXR1cm4gYnV0dG9uLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKHZvaWQpX2luaXRLZXlwYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXIubW0K
aW5kZXggZDM5NjkyNWZmMDliMzYyMzUyZjVmMjJiYzkxMTJlNzUyZDlkMzRkNS4uZjczZWU2YmJk
NDY3YjU3M2YwOGYxYzM3ZTFkZGE0YTBlM2E1OGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlld0NvbnRyb2xs
ZXIubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCAtICh2b2lkKV9oYW5kbGVLZXlQcmVzczooV0tOdW1i
ZXJQYWRLZXkpa2V5CiAgICAgICAgIFtfaW5wdXRUZXh0IGFwcGVuZFN0cmluZzpAIisiXTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXS051bWJlclBhZEtleUFjY2VwdDoKLSAgICAgICAgW3Nl
bGYuZGVsZWdhdGUgcXVpY2tib2FyZDpzZWxmIHRleHRFbnRlcmVkOltbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6X2lucHV0VGV4dC5nZXQoKV0gYXV0b3JlbGVhc2Vd
XTsKKyAgICAgICAgW3NlbGYuZGVsZWdhdGUgcXVpY2tib2FyZDpzZWxmIHRleHRFbnRlcmVkOmFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl9pbnB1dFRl
eHQuZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgV0tO
dW1iZXJQYWRLZXkwOgogICAgICAgICBbX2lucHV0VGV4dCBhcHBlbmRTdHJpbmc6QCIwIl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQppbmRleCBmZTcxNDk0ZmRlMDc3NDE3
ZDBjODRjYTQxNjhjMzE1MWI5MmYzNzEwLi5iM2UyMGZmZDEwYTI0NDlmMjBkMDVjMmNjN2JmMmNk
MjRmNDQ0NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KQEAgLTE1
OSw3ICsxNTksNyBAQCAtIChQVUlDQWN0aW9uQ29udHJvbGxlciAqKWFjdGlvbkNvbnRyb2xsZXIK
IAogICAgIFBVSUNBY3Rpb25JdGVtICpsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW0gPSBbc2Vs
Zi5sYW5ndWFnZUNvbnRyb2xsZXIgbGFuZ3VhZ2VTZWxlY3Rpb25BY3Rpb25JdGVtRm9yVmlld0Nv
bnRyb2xsZXI6c2VsZl07CiAgICAgYXV0byBhY3Rpb25Hcm91cCA9IGFkb3B0TlMoW1tQVUlDQWN0
aW9uR3JvdXAgYWxsb2NdIGluaXRXaXRoQWN0aW9uSXRlbXM6QFsgbGFuZ3VhZ2VTZWxlY3Rpb25B
Y3Rpb25JdGVtIF0gYWN0aW9uU3R5bGU6UFVJQ0FjdGlvblN0eWxlQXV0b21hdGljXSk7Ci0gICAg
cmV0dXJuIFtbW1BVSUNBY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGlvbkdyb3Vw
OmFjdGlvbkdyb3VwLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tQ
VUlDQWN0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBY3Rpb25Hcm91cDphY3Rpb25Hcm91
cC5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDIyMzc1
Zjk0YWUyYjgxOGUzMmE3ODBmNmU1MjcyZTlmNjY4Mzg4MmMuLjM5ZTk3MjM5YjRlYWQ1NTI0ZDIy
MmRmMjUxNzFiYjBmMzRlMTVmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIu
bW0KQEAgLTk3LDcgKzk3LDcgQEAgLSAodm9pZClyZWxvYWRUZXh0U3VnZ2VzdGlvbnMKIAogLSAo
dm9pZCllbnRlclRleHQ6KE5TU3RyaW5nICopdGV4dAogewotICAgIFtzZWxmLmRlbGVnYXRlIHF1
aWNrYm9hcmQ6c2VsZiB0ZXh0RW50ZXJlZDpbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOnRleHRdIGF1dG9yZWxlYXNlXV07CisgICAgW3NlbGYuZGVsZWdhdGUgcXVp
Y2tib2FyZDpzZWxmIHRleHRFbnRlcmVkOmFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOnRleHRdKS5hdXRvcmVsZWFzZSgpXTsKIH0KIAogI3ByYWdtYSBt
YXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggNmY3MTliMGI3ZWI1YTMwYzJjOWZjZjJiMzNiMTA0
YTZiMWMyZTRmNS4uY2I0MTM5OTI1YjJiZTQ2Yjk1MzYxNmYyMWUxMzY0OTBhYmVkNzJlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC01NDks
NyArNTQ5LDcgQEAgLSAodm9pZCllbnRlckZ1bGxTY3JlZW4KICAgICBbX3dpbmRvdyBzZXRIaWRk
ZW46Tk9dOwogCiAgICAgX3Jvb3RWaWV3Q29udHJvbGxlciA9IFtbVUlWaWV3Q29udHJvbGxlciBh
bGxvY10gaW5pdF07Ci0gICAgX3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3ID0gW1tbVUlW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOl93aW5kb3cuZ2V0KCkuYm91bmRzXSBhdXRvcmVsZWFz
ZV07CisgICAgX3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3ID0gYWRvcHROUyhbW1VJVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpfd2luZG93LmdldCgpLmJvdW5kc10pLmF1dG9yZWxlYXNl
KCk7CiAgICAgX3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmJhY2tncm91bmRDb2xvciA9
IFtVSUNvbG9yIGNsZWFyQ29sb3JdOwogICAgIF9yb290Vmlld0NvbnRyb2xsZXIuZ2V0KCkudmll
dy5hdXRvcmVzaXppbmdNYXNrID0gKFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlV2lkdGggfCBV
SVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZUhlaWdodCk7CiAgICAgW19yb290Vmlld0NvbnRyb2xs
ZXIgc2V0TW9kYWxQcmVzZW50YXRpb25TdHlsZTpVSU1vZGFsUHJlc2VudGF0aW9uQ3VzdG9tXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGIyNGQ0OTcyZWM5ZmQ0ZWFkNWFmMjExNmZmODIwNTdi
NzhkYzc3OGQuLjliYWE4YmUyNGM3N2M3NDZlNzkzZjQxMzc4ZGNkMDBiM2NmNGM0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIC0gKFJlZlB0cjxBUEk6OkhpdFRl
c3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVzdWx0CiAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKIHsKICAgICBpZiAo
X2NvbnRlbnRQcmV2ZW50c0RlZmF1bHQpCi0gICAgICAgIHJldHVybiBbW1tXS0FuaW1hdGlvbkNv
bnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0FuaW1hdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwog
CiAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IFtzZWxmIF93
ZWJIaXRUZXN0UmVzdWx0XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggMGY4NmE1NmVhYWE0
MDg0ZWU3YmNmOWRjOGQ4YzZkMDMzMzVkNGZiMC4uOWI4MWViY2I1MDBiN2JkYTg0ZWEyMDE3NjQz
MGM5NTY3NGZjZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
VGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tCkBAIC0xMzksNyArMTM5LDcgQEAg
LSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KE5TRXZlbnQgKilldmVudCB1c2luZ0xlZ2FjeUNv
Y29hVGV4dElucHV0OihCT09MKXVzaW4KIAogICAgICAgICBOU1N0cmluZyAqdGV4dCA9IFtbX2lu
cHV0VGV4dFZpZXcgdGV4dFN0b3JhZ2VdIHN0cmluZ107CiAgICAgICAgIGlmIChbdGV4dCBsZW5n
dGhdID4gMCkKLSAgICAgICAgICAgICpzdHJpbmcgPSBbW3RleHQgY29weV0gYXV0b3JlbGVhc2Vd
OworICAgICAgICAgICAgKnN0cmluZyA9IGFkb3B0TlMoW3RleHQgY29weV0pLmF1dG9yZWxlYXNl
KCk7CiAgICAgfQogICAgICAgICAgICAgCiAgICAgW19pbnB1dFRleHRWaWV3IHNldFN0cmluZzpA
IiJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVmlld0xheW91
dFN0cmF0ZWd5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVmlld0xheW91dFN0
cmF0ZWd5Lm1tCmluZGV4IGViMGJhYjMwMTEyOWZhMDgzZTlhMTZkZTYyY2VjZTYwMGQwMTNkODQu
LjUzMTI0MjNiMzFmNGQ4N2VlMTZlMWE2ZDVlMTMzZDAyMWVkYTIwZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW0KQEAgLTQ5
LDI3ICs0OSwyNyBAQCBAaW1wbGVtZW50YXRpb24gV0tWaWV3TGF5b3V0U3RyYXRlZ3kKIAogKyAo
aW5zdGFuY2V0eXBlKWxheW91dFN0cmF0ZWd5V2l0aFBhZ2U6KE5ha2VkUmVmPFdlYktpdDo6V2Vi
UGFnZVByb3h5PilwYWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdmlld0ltcGw6KE5ha2VkUmVmPFdl
YktpdDo6V2ViVmlld0ltcGw+KXdlYlZpZXdJbXBsIG1vZGU6KFdLTGF5b3V0TW9kZSltb2RlCiB7
Ci0gICAgV0tWaWV3TGF5b3V0U3RyYXRlZ3kgKnN0cmF0ZWd5OworICAgIFJldGFpblB0cjxXS1Zp
ZXdMYXlvdXRTdHJhdGVneT4gc3RyYXRlZ3k7CiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBj
YXNlIGtXS0xheW91dE1vZGVGaXhlZFNpemU6Ci0gICAgICAgIHN0cmF0ZWd5ID0gW1tXS1ZpZXdG
aXhlZFNpemVMYXlvdXRTdHJhdGVneSBhbGxvY10gaW5pdFdpdGhQYWdlOnBhZ2UuY29weVJlZigp
IHZpZXc6dmlldyB2aWV3SW1wbDp3ZWJWaWV3SW1wbC5jb3B5UmVmKCkgbW9kZTptb2RlXTsKKyAg
ICAgICAgc3RyYXRlZ3kgPSBhZG9wdE5TKFtbV0tWaWV3Rml4ZWRTaXplTGF5b3V0U3RyYXRlZ3kg
YWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2Vi
Vmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV0pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IGtXS0xheW91dE1vZGVEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZToKLSAgICAgICAg
c3RyYXRlZ3kgPSBbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0ZWRGcm9tVmlld1NjYWxlTGF5b3V0
U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmll
d0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5
ID0gYWRvcHROUyhbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0ZWRGcm9tVmlld1NjYWxlTGF5b3V0
U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmll
d0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV0pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIGtXS0xheW91dE1vZGVEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbU1pbmltdW1Eb2N1
bWVudFNpemU6Ci0gICAgICAgIHN0cmF0ZWd5ID0gW1tXS1ZpZXdEeW5hbWljU2l6ZUNvbXB1dGVk
RnJvbU1pbmltdW1Eb2N1bWVudFNpemVMYXlvdXRTdHJhdGVneSBhbGxvY10gaW5pdFdpdGhQYWdl
OnBhZ2UuY29weVJlZigpIHZpZXc6dmlldyB2aWV3SW1wbDp3ZWJWaWV3SW1wbC5jb3B5UmVmKCkg
bW9kZTptb2RlXTsKKyAgICAgICAgc3RyYXRlZ3kgPSBhZG9wdE5TKFtbV0tWaWV3RHluYW1pY1Np
emVDb21wdXRlZEZyb21NaW5pbXVtRG9jdW1lbnRTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGlu
aXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwu
Y29weVJlZigpIG1vZGU6bW9kZV0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtXS0xheW91
dE1vZGVWaWV3U2l6ZToKICAgICBkZWZhdWx0OgotICAgICAgICBzdHJhdGVneSA9IFtbV0tWaWV3
Vmlld1NpemVMYXlvdXRTdHJhdGVneSBhbGxvY10gaW5pdFdpdGhQYWdlOnBhZ2UuY29weVJlZigp
IHZpZXc6dmlldyB2aWV3SW1wbDp3ZWJWaWV3SW1wbC5jb3B5UmVmKCkgbW9kZTptb2RlXTsKKyAg
ICAgICAgc3RyYXRlZ3kgPSBhZG9wdE5TKFtbV0tWaWV3Vmlld1NpemVMYXlvdXRTdHJhdGVneSBh
bGxvY10gaW5pdFdpdGhQYWdlOnBhZ2UuY29weVJlZigpIHZpZXc6dmlldyB2aWV3SW1wbDp3ZWJW
aWV3SW1wbC5jb3B5UmVmKCkgbW9kZTptb2RlXSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIFtzdHJhdGVneSB1cGRhdGVMYXlvdXRdOwogCi0gICAgcmV0dXJuIFtzdHJhdGVneSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHN0cmF0ZWd5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KE5ha2VkUmVmPFdlYktpdDo6V2ViUGFnZVByb3h5Pilw
YWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdmlld0ltcGw6KE5ha2VkUmVmPFdlYktpdDo6V2ViVmll
d0ltcGw+KXdlYlZpZXdJbXBsIG1vZGU6KFdLTGF5b3V0TW9kZSltb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KaW5kZXggODZhNmY0Njhj
NDZmZDgxYjhlMDI3Nzk3M2VhMmZiZWM3MjJmMWM1MC4uMzk3MWJhZTEzZjQ0ZmMyNGYzYjgyODBh
ODk5NmFkYjk3MzJkNjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkNvbG9yUGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJDb2xvclBpY2tlck1hYy5tbQpAQCAtMjMzLDE0ICsyMzMsMTQgQEAgLSAodm9pZClzZXRBbmRT
aG93UGlja2VyOihXZWJLaXQ6OldlYkNvbG9yUGlja2VyTWFjKilwaWNrZXIgd2l0aENvbG9yOihO
U0NvbG9yICoKICAgICBbX3BvcG92ZXJXZWxsIHNldEFjdGlvbjpAc2VsZWN0b3IoZGlkQ2hvb3Nl
Q29sb3I6KV07CiAgICAgW19wb3BvdmVyV2VsbCBzZXRDb2xvcjpjb2xvcl07CiAKLSAgICBOU0Nv
bG9yTGlzdCAqc3VnZ2VzdGVkQ29sb3JzID0gbmlsOworICAgIFJldGFpblB0cjxOU0NvbG9yTGlz
dD4gc3VnZ2VzdGVkQ29sb3JzOwogICAgIGlmIChzdWdnZXN0aW9ucy5zaXplKCkpIHsKLSAgICAg
ICAgc3VnZ2VzdGVkQ29sb3JzID0gW1tbTlNDb2xvckxpc3QgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgc3VnZ2VzdGVkQ29sb3JzID0gYWRvcHROUyhbW05TQ29sb3JMaXN0IGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RkOjptaW4oc3Vn
Z2VzdGlvbnMuc2l6ZSgpLCBtYXhDb2xvclN1Z2dlc3Rpb25zKTsgaSsrKQogICAgICAgICAgICAg
W3N1Z2dlc3RlZENvbG9ycyBpbnNlcnRDb2xvcjpuc0NvbG9yKHN1Z2dlc3Rpb25zLmF0KGkpKSBr
ZXk6QChpKS5zdHJpbmdWYWx1ZSBhdEluZGV4OmldOwogICAgIH0KIAotICAgIFtfcG9wb3Zlcldl
bGwgc2V0U3VnZ2VzdGVkQ29sb3JzOnN1Z2dlc3RlZENvbG9yc107CisgICAgW19wb3BvdmVyV2Vs
bCBzZXRTdWdnZXN0ZWRDb2xvcnM6c3VnZ2VzdGVkQ29sb3JzLmdldCgpXTsKICAgICBbX3BvcG92
ZXJXZWxsIF9zaG93UG9wb3Zlcl07CiAKICAgICBbW05TQ29sb3JQYW5lbCBzaGFyZWRDb2xvclBh
bmVsXSBzZXREZWxlZ2F0ZTpzZWxmXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCmlu
ZGV4IGU5MDVhMTFiMTQ5ZDZhOGE5MzJlNjllZDczMDAxNTY5NjcwYWZkOGUuLjRkMDkzYmFjZjc1
ZjI5ZTk0YzA5Yzg3MzQ1NTRlYzVkMzU1YWRjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bk1hYy5tbQpAQCAtNDk0LDIzICs0OTQsMjMgQEAgLSAoQ0dGbG9hdCl0YWJsZVZpZXc6KE5TVGFi
bGVWaWV3ICopdGFibGVWaWV3IGhlaWdodE9mUm93OihOU0ludGVnZXIpcm93CiAKIC0gKE5TVGFi
bGVSb3dWaWV3ICopdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyByb3dWaWV3Rm9y
Um93OihOU0ludGVnZXIpcm93CiB7Ci0gICAgcmV0dXJuIFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9u
VGFibGVSb3dWaWV3IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldyBhbGxvY10gaW5pdF0pLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKE5TVmlldyAqKXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJs
ZVZpZXcgdmlld0ZvclRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uICopdGFibGVDb2x1bW4gcm93
OihOU0ludGVnZXIpcm93CiB7Ci0gICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3ICpyZXN1bHQg
PSBbdGFibGVWaWV3IG1ha2VWaWV3V2l0aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlk
ZW50aWZpZXIgb3duZXI6c2VsZl07CisgICAgYXV0byByZXN1bHQgPSByZXRhaW5QdHIoW3RhYmxl
VmlldyBtYWtlVmlld1dpdGhJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVy
IG93bmVyOnNlbGZdKTsKIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJlc3VsdCA9IFtb
W1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
ICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IGFsbG9jXSBp
bml0XSk7CiAgICAgICAgIFtyZXN1bHQgc2V0SWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNl
SWRlbnRpZmllcl07CiAgICAgfQogCiAgICAgYXV0byYgc3VnZ2VzdGlvbiA9IF9zdWdnZXN0aW9u
cy5hdChyb3cpOwotICAgIHJlc3VsdC5zaG91bGRTaG93Qm90dG9tRGl2aWRlciA9IF9zaG93RGl2
aWRlcnNCZXR3ZWVuQ2VsbHMgJiYgcm93IDwgc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihfc3VnZ2Vz
dGlvbnMuc2l6ZSgpIC0gMSk7CisgICAgW3Jlc3VsdCBzZXRTaG91bGRTaG93Qm90dG9tRGl2aWRl
cjpfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzICYmIHJvdyA8IHN0YXRpY19jYXN0PE5TSW50ZWdl
cj4oX3N1Z2dlc3Rpb25zLnNpemUoKSAtIDEpXTsKICAgICBbcmVzdWx0IHNldFZhbHVlOnN1Z2dl
c3Rpb24udmFsdWUgbGFiZWw6c3VnZ2VzdGlvbi5sYWJlbF07CiAKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggMzA0NzEy
NzZmNDQxZjk1Y2FjZjMyYjA3ZGZiOTU5Nzc2ZGFjOGI1OS4uMWQzYjFmYTczMjVhNWYzMjM1ZDVm
ZTg2MmYxNDNhOTAzMDllMjg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgLSAoQk9PTClfaGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyCiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgogewot
ICAgIHJldHVybiBbWyhOU0FycmF5ICopX2ZyYW1lLT5jZXJ0aWZpY2F0ZUluZm8oKS5jZXJ0aWZp
Y2F0ZUNoYWluKCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cigo
TlNBcnJheSAqKV9mcmFtZS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChTZWNUcnVzdFJlZilfc2VydmVyVHJ1c3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpp
bmRleCA5YjA5NGJlZDA1ODFiZmViNTJlZjZiMjEyOTA3MDU4MDI5NTRhM2JhLi5jZjIzYTQ0OTdj
ZmE4YzIyYjUzNDlmMDRlNmQwOTgzOTJiZTAyMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCkBAIC03MSw5ICs3MSw5
IEBAIC0gKENvY29hSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0aE9wdGlvbnM6KFdLU25hcHNob3RP
cHRpb25zKW9wdGlvbnMgd2lkdGg6KE5TTnVtCiAgICAgICAgIHJldHVybiBuaWw7CiAKICNpZiBV
U0UoQVBQS0lUKQotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXpl
XSkuYXV0b3JlbGVhc2UoKTsKICNlbHNlCi0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2UoKS5nZXQoKV0gYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQppbmRleCA5NWQxYzA3
YWIyY2NiNjU1ZDZkN2IxZmUzMjVjYzU5ZTA4M2JlZGM3Li5mMGI1MDk3NmRhNGRlZTQ1NWVmMjkz
ZDFmYzFlZDBmYzg1NzZmMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KQEAg
LTg1LDcgKzg1LDcgQEAgLSAoV0tET01Ob2RlICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhU
ZXh0OihOU1N0cmluZyAqKXRleHQKIAogLSAoaWQpcGFyc2VyWWllbGRUb2tlbgogewotICAgIHJl
dHVybiBbW1tXS0RPTURvY3VtZW50UGFyc2VyWWllbGRUb2tlbiBhbGxvY10gaW5pdFdpdGhEb2N1
bWVudDpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKV0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbV0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4gYWxsb2Nd
IGluaXRXaXRoRG9jdW1lbnQ6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCldKS5h
dXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1t
CmluZGV4IDYzY2RkMmJjMmJjNGI3OThiNTg3NzBiNDMxZjNhMTY0ZDljMGRhY2YuLjI0ODY3ZGYz
NjFhMmRkOWY5MzFjNzBhMTdhY2U5MDUwMGJkN2VmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
SW50ZXJuYWxzLm1tCkBAIC0xNTQsMTEgKzE1NCwxMSBAQCBzdGF0aWMgV0tET01UeXBlIHRvV0tE
T01UeXBlKFdlYkNvcmVUeXBlIGltcGwsIERPTUNhY2hlPFdlYkNvcmVUeXBlLCBXS0RPTVR5cGU+
JgogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoV0tET01UeXBl
IHdyYXBwZXIgPSBjYWNoZS5nZXQoaW1wbCkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0
YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgV0tET01UeXBlIHdyYXBwZXIgPSBpbml0V2l0aEltcGwo
aW1wbCk7CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsK
KyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKGluaXRXaXRoSW1wbChpbXBsKSk7CiAgICAgaWYg
KCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCAzY2FkMmM1ZTgx
MGJmNGJiNjUzYTRkNDk1NmMwNzFkNWU4MmVhODdmLi45MGJkMDExODQ0ODgxZTU1ZDgxNmE3ZjFl
ZTEzNzgxMDNmNTJhMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTEzNSw3ICsx
MzUsNyBAQCAtIChXS0RPTVJhbmdlICopcmFuZ2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlD
aGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJhY3RlcgogewogICAgIGF1dG8gcmFuZ2UgPSBtYWtl
U2ltcGxlUmFuZ2UoKl9pbXBsKTsKICAgICBhdXRvIG5ld1JhbmdlID0gcmFuZ2VFeHBhbmRlZEJ5
Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobWFrZURlcHJlY2F0ZWRMZWdhY3lQ
b3NpdGlvbihkaXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyByYW5nZS5l
bmQgOiByYW5nZS5zdGFydCksIGNoYXJhY3RlcnMsIGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGly
ZWN0aW9uRm9yd2FyZCA/IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCA6IFdl
YkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwotICAgIHJldHVybiBbW1tXS0RP
TVJhbmdlIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmNyZWF0ZUxpdmVSYW5nZShuZXdSYW5nZSkuZ2V0
KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dLRE9NUmFuZ2UgYWxsb2Nd
IF9pbml0V2l0aEltcGw6Y3JlYXRlTGl2ZVJhbmdlKG5ld1JhbmdlKS5nZXQoKV0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCAy
YTRmODBmYWU4YTFhZTNmYTA0ODE0ZTkyZmZlOTgxNGM2MTI1MGZlLi5jMTA2YTYyOTVhZTk5Y2M2
YThjYzY0OGIwOGVlYTE3Nzg2ZGFkMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCkBAIC00MjMsNyArNDIzLDcgQEAgLSAoV0tCdW5kbGVQYWdlUmVmKV9idW5kbGVQYWdlUmVm
CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlICopaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtb
W1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlOipfcGFnZV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUg
YWxsb2NdIF9pbml0V2l0aFBhZ2U6Kl9wYWdlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoaW5z
dGFuY2V0eXBlKWxvb2tVcEJyb3dzaW5nQ29udGV4dEZyb21IYW5kbGU6KFdLQnJvd3NpbmdDb250
ZXh0SGFuZGxlICopaGFuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDFjMjdjYTgwOTIyNmEzMTdkZDhiMDlmY2Q1YTY5
OGU4MWM2M2VhMjguLjBhNDQ0MGRmYTVmNDcwYTRkNzZlOGVjMmE1Yzk2NzlkMjg5MzkzYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC0xMDcsMTYgKzEwNywxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAgIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QqIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFtbW1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIG1vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0IGFsbG9jXSBpbml0XSk7CiAKICAgICAvLyBHZXQgdGhlIHBpZCBmb3IgdGhlIHN0YXJ0aW5n
IHByb2Nlc3MuCiAgICAgcGlkX3QgcGlkID0gV2ViQ29yZTo6cHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKCk7CiAgICAgLy8gRklYTUU6IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgZG9lc24n
dCByZXNwb25kIHRvIC1hY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6
LgogICAgIC8vIEVpdGhlciBpdCBuZWVkcyB0byBvciB0aGlzIGNhbGwgc2hvdWxkIGJlIHJlbW92
ZWQuCiAgICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0p
Ci0gICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRQ
cmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOworICAgICAgICBbKGlkKW1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50
aWZpZXI6cGlkXTsKICAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhp
c107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBtb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQ7CisgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nl
c3NpYmlsaXR5RWxlbWVudCk7CiAKICAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tl
bihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9u
Lm1tCmluZGV4IDhmZmJjMjIxNDhiNzA4NjZlY2ZlMjA0M2NmMDhhM2EwNmNkOWYxODIuLmQ4N2Qx
ZjljMWQ1MmQwZDZmOWQ0ZjRiNTU5NjcwZGQ5MzYxMTYwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW0KQEAgLTU2LDEwICs1NiwxMCBAQCBAaW1wbGVtZW50YXRpb24gV2ViVmlzaWJsZVBvc2l0
aW9uIChJbnRlcm5hbCkKIAogKyAoV2ViVmlzaWJsZVBvc2l0aW9uICopX3dyYXBWaXNpYmxlUG9z
aXRpb246KFZpc2libGVQb3NpdGlvbil2aXNpYmxlUG9zaXRpb24KIHsKLSAgICBXZWJWaXNpYmxl
UG9zaXRpb24gKnZwID0gW1tXZWJWaXNpYmxlUG9zaXRpb24gYWxsb2NdIGluaXRdOworICAgIGF1
dG8gdnAgPSBhZG9wdE5TKFtbV2ViVmlzaWJsZVBvc2l0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uICpjb3B5ID0gbmV3IFZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zaXRp
b24pOwogICAgIHZwLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PFdlYk9iamVjdEludGVy
bmFsICo+KGNvcHkpOwotICAgIHJldHVybiBbdnAgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB2
cC5hdXRvcmVsZWFzZSgpOwogfQogCiAvLyBSZXR1cm5zIG5pbCBpZiB2aXNpYmxlIHBvc2l0aW9u
IGlzIG51bGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdJT1MubW0KaW5kZXggOGFlMzJhYTRlMWI3YjVkMjI0NWY4YmU4NDQ0ZmZlMTA1MGZkMTJlOC4u
YWQ1MzAxMjVjYjJmZmZmZDMwM2Y2Mzg0YmVmNDZmZGNkYzhiZWY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtMjg3LDE2ICsy
ODcsMTYgQEAgLSAodm9pZClfY2hlY2tQREZUaXRsZQogICAgIGlmICghX1BERkRvY3VtZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqdGl0bGUgPSBuaWw7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB0aXRsZTsKIAogICAgIENHUERGRGljdGlvbmFyeVJlZiBpbmZvID0g
Q0dQREZEb2N1bWVudEdldEluZm8oX1BERkRvY3VtZW50KTsKICAgICBDR1BERlN0cmluZ1JlZiB2
YWx1ZTsKICAgICBpZiAoQ0dQREZEaWN0aW9uYXJ5R2V0U3RyaW5nKGluZm8sICJUaXRsZSIsICZ2
YWx1ZSkpCi0gICAgICAgIHRpdGxlID0gWyhOU1N0cmluZyAqKUNHUERGU3RyaW5nQ29weVRleHRT
dHJpbmcodmFsdWUpIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgdGl0bGUgPSBhZG9wdENGKENHUERG
U3RyaW5nQ29weVRleHRTdHJpbmcodmFsdWUpKTsKIAotICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkg
ewotICAgICAgICBfdGl0bGUgPSBhZG9wdE5TKFt0aXRsZSBjb3B5XSk7Ci0gICAgICAgIGNvcmUo
W3NlbGYgX2ZyYW1lXSktPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KHsgdGl0bGUsIFRleHREaXJlY3Rpb246OkxUUiB9KTsKKyAgICBpZiAodGl0bGUgJiYgQ0ZTdHJp
bmdHZXRMZW5ndGgodGl0bGUuZ2V0KCkpKSB7CisgICAgICAgIF90aXRsZSA9IGFkb3B0TlMoWyhO
U1N0cmluZyAqKXRpdGxlLmdldCgpIGNvcHldKTsKKyAgICAgICAgY29yZShbc2VsZiBfZnJhbWVd
KS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoeyB0aXRsZS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCksIFRleHREaXJlY3Rpb246OkxUUiB9KTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDg1YTJmZGI2NzFjMmQyNjZiODVjMWZhMmM5
NDllYmUwNGYzYjRmMGUuLjE2ZTc3ZTgxMjA3MzQ3ZGE3ODNjYWNkYzA4ODlkZTY0MmU4ODNlNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzg0LDEzICs3ODQsMTMgQEAgRE9N
Tm9kZUZpbHRlciAqa2l0KFdlYkNvcmU6Ok5vZGVGaWx0ZXIqIGltcGwpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgCiAgICAgaWYgKERPTU5vZGVGaWx0ZXIgKndyYXBwZXIgPSBnZXRET01XcmFw
cGVyKGltcGwpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CiAgICAg
Ci0gICAgRE9NTm9kZUZpbHRlciAqd3JhcHBlciA9IFtbRE9NTm9kZUZpbHRlciBhbGxvY10gX2lu
aXRdOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Ob2RlRmlsdGVyIGFsbG9jXSBf
aW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2Jq
ZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVy
KHdyYXBwZXIsIGltcGwpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCBpbXBsKTsKKyAgICByZXR1cm4gd3JhcHBlci5h
dXRvcmVsZWFzZSgpOwogfQogCiBXZWJDb3JlOjpOb2RlRmlsdGVyKiBjb3JlKERPTU5vZGVGaWx0
ZXIgKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QWJzdHJhY3RWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0
Vmlldy5tbQppbmRleCBiZWUxZmM2MDY1MTdjZWI2NmQ1OWJiNThiM2I3YzIzZGYxMzRmYzBkLi44
YmQ2N2Y3MjAyZGQ0MTRmYmU0Y2RlMWE4OWI3YzA1ODM2NDM3MWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KQEAgLTg3LDExICs4NywxMSBA
QCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpET01XaW5kb3cqIHZhbHVlKQogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTUFic3RyYWN0VmlldyAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIoZnJhbWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUFic3RyYWN0VmlldyAqd3JhcHBlciA9IFtb
RE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIo
d3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9N
QWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihmcmFtZSk7Ci0gICAgYWRkRE9NV3Jh
cHBlcih3cmFwcGVyLCBmcmFtZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsK
KyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIGZyYW1lKTsKKyAgICByZXR1cm4gd3Jh
cHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpB
YnN0cmFjdERPTVdpbmRvdyogdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9i
Lm1tCmluZGV4IDlkODliOWM1OWM5MTZjMWE3ZGUyZWRhMTcwNmM1NmMxZmViNjU3MGEuLjIzNmE1
MDFhYjYwNDdiYjY2Yzc3ZGMxOTk4OTZkNjM3MjYwMGI1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01CbG9iLm1tCkBAIC03MCwxMiArNzAsMTIgQEAgRE9NQmxvYiAqa2l0KFdlYkNv
cmU6OkJsb2IqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgaWYgKERPTUJsb2IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01CbG9iICp3cmFw
cGVyID0gW1tET01CbG9iIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIo
d3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9N
QmxvYiBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJl
dF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0
b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAg
IHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IDI3OWM1ZThkOWZmYTg0NDBj
MTFjN2U2ZjJiMWYxNjYzYjY3ZGE4ZDkuLmE3ZTY4OTAwYTk4MDViMGQ4MDY0N2M5MThmMjNlN2Ix
M2I5ZmMwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NS
dWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBA
IC05MSwxNCArOTEsMTQgQEAgRE9NQ1NTUnVsZSAqa2l0KFdlYkNvcmU6OkNTU1J1bGUqIHZhbHVl
KQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTUNTU1J1
bGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01DU1NSdWxlICp3cmFwcGVyID0gW1tr
aXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxET01DU1NSdWxlPiB3cmFwcGVy
ID0gYWRvcHROUyhbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAgICBpZiAoIXdy
YXBwZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVp
bnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVm
KCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFw
cGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVl
KTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1bGVMaXN0Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1bGVMaXN0Lm1tCmluZGV4IDk2
YmRjNWYwMzY1Nzc4OTI1MTlhYjYxNmYxYTJjMGI5YTUxMjViNGMuLjE0ZmNlMDQxM2M5ODE0ZTUz
ZDA3ZmEyMzAyM2ZjODAxYjEwNTVkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NSdWxlTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTUnVsZUxpc3QubW0KQEAgLTcyLDEyICs3MiwxMiBAQCBET01DU1NSdWxlTGlzdCAq
a2l0KFdlYkNvcmU6OkNTU1J1bGVMaXN0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIGlmIChET01DU1NSdWxlTGlzdCAqd3JhcHBlciA9IGdldERPTVdy
YXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotICAgIERPTUNTU1J1bGVMaXN0ICp3cmFwcGVyID0gW1tET01DU1NSdWxlTGlzdCBhbGxv
Y10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNl
KCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUNTU1J1bGVMaXN0IGFsbG9jXSBf
aW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2Jq
ZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cisg
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5kZXggODdhMzEz
MGM4OTA0OTQzOWI0NzFhYTkyNTlhZTdhOTNkNzRlYWJiZS4uMTg0MDk3OWUxNjcxNmZkNTRkZDYz
YjYzMWYxMGEzZTk2MGY0MWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTE0OSwxMiArMTQ5LDEyIEBAIERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKmtpdChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKiB2
YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01D
U1NTdHlsZURlY2xhcmF0aW9uICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiAqd3JhcHBlciA9IFtbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBhbGxvY10g
X2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7
CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gYWxs
b2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxE
T01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9N
V3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNl
XTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4g
d3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCmluZGV4IGZlYjEyNDMwNDUzY2JkOWU4NTk2MGU2
YWI2MTUxYzE0MGZlZTFjZjUuLmFlMjk2OWNiMjcwMjM3ZjMwOTBiZjkyZDIyZmIyMzk0NzRkYzEy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KQEAgLTc2
LDE0ICs3NiwxNCBAQCBET01DU1NWYWx1ZSAqa2l0KFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NPTVZh
bHVlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlm
IChET01DU1NWYWx1ZSAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICBy
ZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUNTU1ZhbHVlICp3
cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJu
IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxET01DU1NW
YWx1ZT4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XSk7
CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHdyYXBwZXItPl9p
bnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAg
ICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAg
IHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAog
I3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
b3VudGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KaW5k
ZXggYTZhY2U4MmJhZjY0Y2JmMzg0MjA5YzljYTM5MTlhNzI0NmVkN2U5NC4uZDBlMWIyMmFjMjA1
ZmRhYWFkMzYwYTMwNTNlZTU3ZmIwNmM5ZjRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNvdW50ZXIubW0KQEAgLTc2LDEyICs3NiwxMiBAQCBET01Db3VudGVyICpraXQoV2Vi
Q29yZTo6RGVwcmVjYXRlZENTU09NQ291bnRlciogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ291bnRlciAqd3JhcHBlciA9IGdldERPTVdy
YXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotICAgIERPTUNvdW50ZXIgKndyYXBwZXIgPSBbW0RPTUNvdW50ZXIgYWxsb2NdIF9pbml0
XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Db3VudGVyIGFsbG9jXSBfaW5pdF0pOwogICAg
IHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwq
Pih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwg
dmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3Jh
cHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVh
c2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01FdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVu
dC5tbQppbmRleCA1Y2VlMzllMGJlN2Q0Y2MxN2M5NzdmYzViMTc3NzI0YTJjMzI4ODQxLi5kZmEz
NWI0MWJlNjJjZGRjNzhkMWZkMDdhMDk2MTYxOWI1YmNkYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUV2ZW50Lm1tCkBAIC0xODgsMTQgKzE4OCwxNCBAQCBET01FdmVudCAqa2l0
KFdlYkNvcmU6OkV2ZW50KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIGlmIChET01FdmVudCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQot
ICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUV2
ZW50ICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAg
cmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxE
T01FdmVudD4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0
XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHdyYXBwZXIt
Pl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7
CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwot
ICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFw
cGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0K
IAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01GaWxlTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlTGlzdC5t
bQppbmRleCAzYmY3MGVhZDg4MWMzYThhNzgwMWY5NWI3YTc1ODkwYTg2NTliYzUyLi5kOTM3Njc4
NmZiZWNiZDY1MGU3MDE1OGE5M2M4YjAyNDlmYTc5ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUZpbGVMaXN0Lm1tCkBAIC03NiwxMiArNzYsMTIgQEAgRE9NRmlsZUxpc3Qg
KmtpdChXZWJDb3JlOjpGaWxlTGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBpZiAoRE9NRmlsZUxpc3QgKndyYXBwZXIgPSBnZXRET01XcmFwcGVy
KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LSAgICBET01GaWxlTGlzdCAqd3JhcHBlciA9IFtbRE9NRmlsZUxpc3QgYWxsb2NdIF9pbml0XTsK
KyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01GaWxlTGlzdCBhbGxvY10gX2luaXRdKTsKICAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNl
KCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTENvbGxlY3Rpb24ubW0KaW5kZXggNDI3ZTAzMmI1ZjZkNWU2MmQ4ZGE3ZGMyYjNjOWI2
NzVjMDMzNmQ5Ny4uOWJiZDA1MjMxYjBkZmU1ODEyMThjYjFlZmMxOTkyOTBhZDRiYzA4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpA
QCAtODksMTQgKzg5LDE0IEBAIERPTUhUTUxDb2xsZWN0aW9uICpraXQoV2ViQ29yZTo6SFRNTENv
bGxlY3Rpb24qIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgaWYgKERPTUhUTUxDb2xsZWN0aW9uICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9N
SFRNTENvbGxlY3Rpb24gKndyYXBwZXIgPSBbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRd
OworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAg
UmV0YWluUHRyPERPTUhUTUxDb2xsZWN0aW9uPiB3cmFwcGVyID0gYWRvcHROUyhbW2tpdENsYXNz
KHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmpl
Y3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBl
cih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAg
ICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBl
ci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggMTRi
ZDZlN2RhNDBjMzRmYjY5ZjVhMjZkOTM4MGM4ODgwNGIyM2EzNS4uMDMyOTkxNjNjNDA1ZDBlMmZh
OGVhNWY0YmFlNDZiMTk2MWU0NzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0xMTMsMTIgKzExMywx
MiBAQCBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKmtpdChXZWJDb3JlOjpIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24qIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgaWYgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIo
dmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqd3JhcHBlciA9IFtbRE9NSFRNTE9wdGlvbnND
b2xsZWN0aW9uIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBl
cikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NSFRNTE9w
dGlvbnNDb2xsZWN0aW9uIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBb
d3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElN
UEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbXBsZW1lbnRh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbXBsZW1lbnRhdGlvbi5t
bQppbmRleCA3MzJjZjQzOGJkNjIxMWVhYjMyZjQ2MjE5YWMxODlhY2JiYzk5Y2FlLi4zYzlmNDlj
YmRkOGQ2MGI2ODBhNmFlZmZkNGZjY2Q1YjE4ZTFjNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSW1wbGVtZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUltcGxlbWVudGF0aW9uLm1tCkBAIC0xMTgsMTAgKzExOCwxMCBA
QCBET01JbXBsZW1lbnRhdGlvbiAqa2l0KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uKiB2YWx1
ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01JbXBs
ZW1lbnRhdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1
cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUltcGxlbWVudGF0aW9u
ICp3cmFwcGVyID0gW1tET01JbXBsZW1lbnRhdGlvbiBhbGxvY10gX2luaXRdOworICAgICAgICBy
ZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW0RPTUltcGxlbWVudGF0aW9uIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBw
ZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1
ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUp
OwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3
cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUVycm9y
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhRXJyb3IubW0KaW5kZXgg
ZTdkOTYzN2MzZjQ3MDA2NjNhMTdhNjE0Njg3NDc3YTNiODgxNDg5Yi4uNDQxNTdjNDJiNDBhNzll
NmY2YjkxMTg0MzgxNGQ0OTI5YTViYTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU1lZGlhRXJyb3IubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1lZGlhRXJyb3IubW0KQEAgLTY5LDEyICs2OSwxMiBAQCBET01NZWRpYUVycm9yICpr
aXQoV2ViQ29yZTo6TWVkaWFFcnJvciogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBpZiAoRE9NTWVkaWFFcnJvciAqd3JhcHBlciA9IGdldERPTVdyYXBw
ZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIERPTU1lZGlhRXJyb3IgKndyYXBwZXIgPSBbW0RPTU1lZGlhRXJyb3IgYWxsb2NdIF9p
bml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOwor
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01NZWRpYUVycm9yIGFsbG9jXSBfaW5pdF0p
OwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50
ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3Jh
cHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRk
RE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0
b3JlbGVhc2UoKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4IDk1N2Q1NDU1YTY2MzRhMGVmNzc3
NTdmNzdiMTkwNWU0Y2FjMWViNGIuLjJkMTc5ZDQ4NTY4MDg3NWRhZTk0N2FiMDQzYjIwYzdlODQz
NTY2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxp
c3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpA
QCAtOTYsMTIgKzk2LDEyIEBAIERPTU1lZGlhTGlzdCAqa2l0KFdlYkNvcmU6Ok1lZGlhTGlzdCog
dmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9N
TWVkaWFMaXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NTWVkaWFMaXN0ICp3cmFw
cGVyID0gW1tET01NZWRpYUxpc3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFp
blB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tET01NZWRpYUxpc3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0g
cmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+
cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3
cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZh
bHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1Q
TApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1h
cC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0KaW5k
ZXggNmY2ODViNDUzM2YxNWZlMjc1MTBiNGVjOTgzODkyNzFiODhkYzE3Ny4uZDQ2MDFlN2RkNTEy
ZGQxZWFiYmY2NWU4ZTZjODQwYjM1MzAzYTBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCkBAIC0xMjUsMTIgKzEyNSwxMiBAQCBET01OYW1l
ZE5vZGVNYXAgKmtpdChXZWJDb3JlOjpOYW1lZE5vZGVNYXAqIHZhbHVlKQogICAgIGlmICghdmFs
dWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU5hbWVkTm9kZU1hcCAqd3JhcHBl
ciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwotICAgIERPTU5hbWVkTm9kZU1hcCAqd3JhcHBlciA9IFtbRE9NTmFt
ZWROb2RlTWFwIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBl
cikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NTmFtZWRO
b2RlTWFwIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwot
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBh
dXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGUubW0KaW5kZXggNWQxNGJhMTQ5NmUyOTRkMjU2MTYy
ZjgzODJhMzFlYzA4MmI2M2RmMy4uYjUyZTM2NjE0ZTJjYTVlMzI4NzA2NzRkOTE0MmMzMDMzNDlk
OTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGUubW0KQEAgLTYyLDE0ICs2
MiwxNCBAQCBET01Ob2RlICpraXQoTm9kZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NTm9kZSAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIo
dmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIERPTU5vZGUgKndyYXBwZXIgPSBbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdOwor
ICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgUmV0
YWluUHRyPERPTU5vZGU+IHdyYXBwZXIgPSBhZG9wdE5TKFtba2l0Q2xhc3ModmFsdWUpIGFsbG9j
XSBfaW5pdF0pOwogICAgIGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU5vZGVJdGVyYXRvci5tbQppbmRleCAxNTdkZDE4MGRlNGU1NjQ5MWNkMGEw
YTE5ODA2ZjNkMDU3MGNmZTRmLi41NWY4NTRkNWU0MmM2OTNkYzc4OWUzNzBmNjhkZjczNWJkYTcy
MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUl0ZXJh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlSXRlcmF0b3Iu
bW0KQEAgLTEyNywxMiArMTI3LDEyIEBAIERPTU5vZGVJdGVyYXRvciAqa2l0KFdlYkNvcmU6Ok5v
ZGVJdGVyYXRvciogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICBpZiAoRE9NTm9kZUl0ZXJhdG9yICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9N
Tm9kZUl0ZXJhdG9yICp3cmFwcGVyID0gW1tET01Ob2RlSXRlcmF0b3IgYWxsb2NdIF9pbml0XTsK
KyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Ob2RlSXRlcmF0b3IgYWxsb2NdIF9pbml0XSk7CiAg
ICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01X
cmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVs
ZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU5vZGVMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TU5vZGVMaXN0Lm1tCmluZGV4IGUwOTg2NTZmM2IzYWI5MTBjNTY1ODkwMTllNGI1MzRkYTA0OTFj
ZDMuLmQwMDMzZDljZmJmNTk5ZDA0OGMxNzNmZjUyNGUzZGI0NzRhYmYxMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlTGlzdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUxpc3QubW0KQEAgLTcwLDEyICs3MCwxMiBAQCBE
T01Ob2RlTGlzdCAqa2l0KFdlYkNvcmU6Ok5vZGVMaXN0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01Ob2RlTGlzdCAqd3JhcHBlciA9IGdl
dERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIERPTU5vZGVMaXN0ICp3cmFwcGVyID0gW1tET01Ob2RlTGlzdCBhbGxv
Y10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNl
KCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTU5vZGVMaXN0IGFsbG9jXSBfaW5p
dF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIo
d3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIu
YXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01SR0JDb2xvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01SR0JDb2xvci5tbQppbmRleCA5NWJjMDg4YzA2OGEyNmI5YjkyZjk4YWI5YmMwZDk5
M2Y5Y2IwMjNhLi45NzYyYTYwNDBmYWQ3ZjQ3ZTI1MWYwYTcwYzk3MjY2NGM4OTA0MzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3IubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCkBAIC0xMDMsMTIgKzEw
MywxMiBAQCBET01SR0JDb2xvciAqa2l0KFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NPTVJHQkNvbG9y
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChE
T01SR0JDb2xvciAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1
cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVJHQkNvbG9yICp3cmFw
cGVyID0gW1tET01SR0JDb2xvciBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W0RPTVJHQkNvbG9yIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJl
ZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3Jh
cHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQppbmRleCAyODc2NjBmZWNhZTk4
NmRmOWIzOWQ4ZDU3ZTAzZWJiY2QwZjk0MTkyLi4xNGY0ODlkYWE1MTI2NTUzYWVmMWU3YjM4MzJi
MjdkOTExYjg3NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCkBA
IC0zMDQsMTIgKzMwNCwxMiBAQCBET01SYW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdlKiB2YWx1ZSkK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01SYW5nZSAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVJhbmdlICp3cmFwcGVyID0gW1tET01SYW5n
ZSBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9y
ZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTVJhbmdlIGFsbG9jXSBf
aW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2Jq
ZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cisg
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogRE9NUmFuZ2UgKmtpdChjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmVj
dC5tbQppbmRleCA5MjQzZWYyODdmYzNkMTc4ZDMzYzhhMWNkYWQ2YWE4MjczYmZlMmY2Li5kNzJj
MGQxZjliM2ZiZWQxMmEwODhmNTI1MTJmNjlkMzAzMGM3MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUmVjdC5tbQpAQCAtODMsMTIgKzgzLDEyIEBAIERPTVJlY3QgKmtpdChXZWJD
b3JlOjpEZXByZWNhdGVkQ1NTT01SZWN0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIGlmIChET01SZWN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2
YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0g
ICAgRE9NUmVjdCAqd3JhcHBlciA9IFtbRE9NUmVjdCBhbGxvY10gX2luaXRdOworICAgICAgICBy
ZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW0RPTVJlY3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVy
bmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2
YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0
dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0
KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5k
ZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxl
U2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQpp
bmRleCA5YTIzY2U0NGM2MTdlMDU5NGE2OTRkMGFiN2I2MDkwNWE4NThkMjA5Li5jMTFiMmQyY2Fk
ZThmZDY1NWNlOWYxMDBkYzZjMmE0YTg3ZTRkN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQpAQCAtMTExLDE0ICsxMTEsMTQgQEAgRE9NU3R5bGVT
aGVldCAqa2l0KFdlYkNvcmU6OlN0eWxlU2hlZXQqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTVN0eWxlU2hlZXQgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICBET01TdHlsZVNoZWV0ICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkg
YWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVs
ZWFzZSgpOworICAgIFJldGFpblB0cjxET01TdHlsZVNoZWV0PiB3cmFwcGVyID0gYWRvcHROUyhb
W2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2Fz
dDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRk
RE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxl
YXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1
cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1tCmluZGV4IGJmMDkyYjFm
ZmViNzYyNjY0Y2NhZTM0M2UwNmEzMWQ5ZDM3NWRhNjUuLjg5NGE2MzQxYTc3ZjI3Y2FmZjVmMjUz
ZGI1Nzc5NDU4ZmUwMjgxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01TdHlsZVNoZWV0TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NU3R5bGVTaGVldExpc3QubW0KQEAgLTczLDEyICs3MywxMiBAQCBET01TdHlsZVNoZWV0TGlz
dCAqa2l0KFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01TdHlsZVNoZWV0TGlzdCAqd3JhcHBlciA9
IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIERPTVN0eWxlU2hlZXRMaXN0ICp3cmFwcGVyID0gW1tET01TdHls
ZVNoZWV0TGlzdCBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBw
ZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTVN0eWxl
U2hlZXRMaXN0IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigp
OwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBl
ciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7
CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UaW1lUmFuZ2VzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRpbWVSYW5nZXMubW0KaW5kZXggMTQxZjJi
YjJjMmY0NWI4NDU1YmY4NjQ1YjhjMDk4ZDllM2M4Y2Y0Ny4uMDQyMTU4NjFmMTAzZGI0YjVjMTdk
MzQ0NDI4NjMxNjE5NTUwMjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRpbWVSYW5nZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVRpbWVSYW5nZXMubW0KQEAgLTgwLDEyICs4MCwxMiBAQCBET01UaW1lUmFuZ2VzICpraXQoV2Vi
Q29yZTo6VGltZVJhbmdlcyogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBpZiAoRE9NVGltZVJhbmdlcyAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFs
dWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IERPTVRpbWVSYW5nZXMgKndyYXBwZXIgPSBbW0RPTVRpbWVSYW5nZXMgYWxsb2NdIF9pbml0XTsK
KyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01UaW1lUmFuZ2VzIGFsbG9jXSBfaW5pdF0pOwogICAg
IHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwq
Pih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwg
dmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3Jh
cHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVh
c2UoKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCmluZGV4IDI0YTVkMTJlY2IzYWMyNWY0NWIxYjIwMDNk
NGU2NDkxODEzOWJhODEuLjFkMTFlZTRjZjkxZjE0Nzk0NDc3YzI1MjZhMTIzZWJjNWM2YzUyYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQpAQCAtOTYs
MTIgKzk2LDEyIEBAIERPTVRva2VuTGlzdCAqa2l0KFdlYkNvcmU6OkRPTVRva2VuTGlzdCogdmFs
dWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NVG9r
ZW5MaXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBb
W3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVG9rZW5MaXN0ICp3cmFwcGVy
ID0gW1tET01Ub2tlbkxpc3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0
cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tE
T01Ub2tlbkxpc3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVp
bnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVm
KCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFw
cGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVl
KTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRyZWVXYWxrZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVHJlZVdhbGtlci5tbQppbmRleCAzZGRi
ODAzN2FkMTlhOGI4MWRhNGVkNzNlZDJhMGEwYzhhMDg0Y2M5Li4yYTYxZGFkNGJlN2E0NTExM2M5
Yzc2OWQzNDE4NmI5YTU2OGI4YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVHJlZVdhbGtlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVHJlZVdhbGtlci5tbQpAQCAtMTc2LDEyICsxNzYsMTIgQEAgRE9NVHJlZVdhbGtlciAqa2l0
KFdlYkNvcmU6OlRyZWVXYWxrZXIqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgaWYgKERPTVRyZWVXYWxrZXIgKndyYXBwZXIgPSBnZXRET01XcmFwcGVy
KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LSAgICBET01UcmVlV2Fsa2VyICp3cmFwcGVyID0gW1tET01UcmVlV2Fsa2VyIGFsbG9jXSBfaW5p
dF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NVHJlZVdhbGtlciBhbGxvY10gX2luaXRdKTsK
ICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERP
TVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NWFBhdGgubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
WFBhdGgubW0KaW5kZXggYzdlMzQ4YjVjMjk0YTY1ZGZkZTU0MjJhMGM4MDNiMmI0MGJhNDFkZi4u
N2YzMmRjNmExNTk0M2RhYzZhOTZjMWRjNDU3NmRkODUzOGYyZjU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01YUGF0aC5tbQpAQCAtNjMsMTMgKzYzLDEzIEBAIERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlciAqa2l0KFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciogaW1wbCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBpZiAoRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICp3
cmFwcGVyID0gZ2V0RE9NV3JhcHBlcihpbXBsKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5h
dXRvcmVsZWFzZSgpOwogICAgIAotICAgIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqd3JhcHBl
ciA9IFtbRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIGFsbG9jXSBfaW5pdF07CisgICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBhbGxvY10gX2luaXRd
KTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdElu
dGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFw
cGVyLCBpbXBsKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOyAgICAKKyAgICBh
ZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIGltcGwpOworICAgIHJldHVybiB3cmFwcGVyLmF1
dG9yZWxlYXNlKCk7ICAgIAogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01YUGF0aEV4cHJlc3Npb24ubW0KaW5kZXggYWVkZjM1YTIwMzJhNWRm
YTU2MWQyOTM2ZjIxNDdjNjJiZjk0ZjBkYi4uYzE0NzAwM2I0NjQxOTJlZmMzYTEzMjY1MTIyMWQ4
MGVmNjAzOWEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQ
YXRoRXhwcmVzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBh
dGhFeHByZXNzaW9uLm1tCkBAIC03OCwxMiArNzgsMTIgQEAgRE9NWFBhdGhFeHByZXNzaW9uICpr
aXQoV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01YUGF0aEV4cHJlc3Npb24gKndyYXBwZXIgPSBn
ZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKLSAgICBET01YUGF0aEV4cHJlc3Npb24gKndyYXBwZXIgPSBbW0RPTVhQYXRo
RXhwcmVzc2lvbiBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBw
ZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTVhQYXRo
RXhwcmVzc2lvbiBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWlu
dGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYo
KTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBw
ZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUp
OworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggNTQ5
YzhlMTVkMDFkNDQ4NzdhYWVlMmYzNWZiYjVlZGI2NzkxN2UwZC4uMzk2ODY3MzlkMGE2YWIzZGU5
NGNlNDZiMGNhNmZmZjNkMDA0YmExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01YUGF0aFJlc3VsdC5tbQpAQCAtMTE4LDEyICsxMTgsMTIgQEAgRE9NWFBhdGhSZXN1bHQg
KmtpdChXZWJDb3JlOjpYUGF0aFJlc3VsdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NWFBhdGhSZXN1bHQgKndyYXBwZXIgPSBnZXRET01X
cmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKLSAgICBET01YUGF0aFJlc3VsdCAqd3JhcHBlciA9IFtbRE9NWFBhdGhSZXN1bHQgYWxs
b2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFz
ZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01YUGF0aFJlc3VsdCBhbGxvY10g
X2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9i
amVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwor
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFw
cGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCmluZGV4IDdkNzJmZjViZDZkYjk0NjZm
NGU5NjI2OTA3NDJhMjg4OWVhNjNhZjkuLjUyMDA3YzQ0ZDhlMmRmMzdhZWQ3OTY4ZGY3YmZhZWMx
OWI3NmQxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9XZWJET01P
cGVyYXRpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9XZWJET01PcGVy
YXRpb25zLm1tCkBAIC04NywxNiArODcsMTYgQEAgQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdl
YkRPTU5vZGVPcGVyYXRpb25zKQogCiAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2ZQogewotICAg
IHJldHVybiBbW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2
ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoc2VsZikpXSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5
V2ViQXJjaGl2ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoc2VsZikpXSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoV2ViQXJjaGl2ZSAqKXdlYkFyY2hpdmVCeUZpbHRlcmluZ1N1YmZy
YW1lczooV2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyKXdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlcgog
ewotICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0
V2l0aENvcmVMZWdhY3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZShz
ZWxmKSwgW3dlYkFyY2hpdmVTdWJmcmFtZUZpbHRlcl0oRnJhbWUmIHN1YmZyYW1lKSAtPiBib29s
IHsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gX2lu
aXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3Jl
KHNlbGYpLCBbd2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyXShGcmFtZSYgc3ViZnJhbWUpIC0+IGJv
b2wgewogICAgICAgICByZXR1cm4gd2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyKGtpdCgmc3ViZnJh
bWUpKTsKLSAgICB9KV07CisgICAgfSldKTsKIAotICAgIHJldHVybiBbd2ViQXJjaGl2ZSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHdlYkFyY2hpdmUuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xODYsNyArMTg2LDcgQEAgQGltcGxlbWVudGF0aW9u
IERPTVJhbmdlIChXZWJET01SYW5nZU9wZXJhdGlvbnMpCiAKIC0gKFdlYkFyY2hpdmUgKil3ZWJB
cmNoaXZlCiB7Ci0gICAgcmV0dXJuIFtbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0V2l0aENvcmVM
ZWdhY3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShtYWtlU2ltcGxlUmFuZ2Uo
KmNvcmUoc2VsZikpKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQXJj
aGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKG1ha2VTaW1wbGVSYW5nZSgqY29yZShzZWxmKSkpXSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1
bHRDb250ZXh0TWVudURlbGVnYXRlLm1tCmluZGV4IGRjZWM2Y2Q1YjIyYTdkYWY5ZjQyODgzOTcz
YTU3YTJlNzUwMTA2MjAuLmYyZTdlMzI2MjFlMWFkYThhODEzMDU3ZTAzODZjZTUxMWZkM2ExODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbQpAQCAt
NTcsNyArNTcsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViRGVmYXVsdFVJRGVsZWdhdGUgKFdlYkNv
bnRleHRNZW51KQogCiAtIChOU01lbnVJdGVtICopbWVudUl0ZW1XaXRoVGFnOihpbnQpdGFnIHRh
cmdldDooaWQpdGFyZ2V0IHJlcHJlc2VudGVkT2JqZWN0OihpZClyZXByZXNlbnRlZE9iamVjdAog
ewotICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gW1tbTlNNZW51SXRlbSBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gbWVudUl0ZW0gPSBhZG9wdE5TKFtbTlNNZW51SXRlbSBh
bGxvY10gaW5pdF0pOwogICAgIFttZW51SXRlbSBzZXRUYWc6dGFnXTsKICAgICBbbWVudUl0ZW0g
c2V0VGFyZ2V0OnRhcmdldF07IC8vIGNhbiBiZSBuaWwKICAgICBbbWVudUl0ZW0gc2V0UmVwcmVz
ZW50ZWRPYmplY3Q6cmVwcmVzZW50ZWRPYmplY3RdOwpAQCAtMTE0LDcgKzExNCw3IEBAIC0gKE5T
TWVudUl0ZW0gKiltZW51SXRlbVdpdGhUYWc6KGludCl0YWcgdGFyZ2V0OihpZCl0YXJnZXQgcmVw
cmVzZW50ZWRPYmplY3Q6KGlkCiAKICAgICBbbWVudUl0ZW0gc2V0QWN0aW9uOmFjdGlvbl07CiAg
ICAgCi0gICAgcmV0dXJuIG1lbnVJdGVtOworICAgIHJldHVybiBtZW51SXRlbS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtICh2b2lkKWFwcGVuZERlZmF1bHRJdGVtczooTlNBcnJheSAqKWRlZmF1bHRJ
dGVtcyB0b0FycmF5OihOU011dGFibGVBcnJheSAqKW1lbnVJdGVtcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBk
NmFmNzU1ZmZhNzM4Yjk5M2Y3Zjc4N2VjM2U4YzNmNGVjZGE3MGYzLi5jN2VkMGZkMzIzNjVjMzIw
OGFmODkzNjQzNzQyNWFlNDFhZWQyYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQpAQCAtODEsNyArODEsNyBAQCBX
ZWJCYWNrRm9yd2FyZExpc3QgKmtpdChCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCkK
ICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0ICp3ZWJCYWNrRm9yd2FyZExpc3QgPSBiYWNrRm9y
d2FyZExpc3RzKCkuZ2V0KGJhY2tGb3J3YXJkTGlzdCkpCiAgICAgICAgIHJldHVybiB3ZWJCYWNr
Rm9yd2FyZExpc3Q7CiAKLSAgICByZXR1cm4gW1tbV2ViQmFja0ZvcndhcmRMaXN0IGFsbG9jXSBp
bml0V2l0aEJhY2tGb3J3YXJkTGlzdDoqYmFja0ZvcndhcmRMaXN0XSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJCYWNrRm9yd2FyZExpc3QgYWxsb2NdIGluaXRXaXRoQmFj
a0ZvcndhcmRMaXN0OipiYWNrRm9yd2FyZExpc3RdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChp
ZClpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDooUmVmPEJhY2tGb3J3YXJkTGlzdD4mJiliYWNrRm9y
d2FyZExpc3QKQEAgLTEzOSw3ICsxMzksNyBAQCAtICh2b2lkKWFkZEl0ZW06KFdlYkhpc3RvcnlJ
dGVtICopZW50cnkKICAgICAvLyBTaW5jZSB0aGUgYXNzdW1lZCBjb250cmFjdCB3aXRoIFdlYkJh
Y2tGb3J3YXJkTGlzdCBpcyB0aGF0IGl0IHJldGFpbnMgaXRzIFdlYkhpc3RvcnlJdGVtcywKICAg
ICAvLyB0aGUgZm9sbG93aW5nIGxpbmUgcHJldmVudHMgYSB3aG9sZSBjbGFzcyBvZiBwcm9ibGVt
cyB3aGVyZSBhIGhpc3RvcnkgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgaW4KICAgICAvLyBhIGZ1bmN0
aW9uLCBhZGRlZCB0byB0aGUgQkZsaXN0LCB0aGVuIHVzZWQgaW4gdGhlIHJlc3Qgb2YgdGhhdCBm
dW5jdGlvbi4KLSAgICBbW2VudHJ5IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0
cihlbnRyeSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClyZW1vdmVJdGVtOihXZWJIaXN0
b3J5SXRlbSAqKWl0ZW0KQEAgLTIxNCwxNyArMjE0LDE3IEBAIC0gKHZvaWQpZ29Ub0l0ZW06KFdl
Ykhpc3RvcnlJdGVtICopaXRlbQogCiAtIChXZWJIaXN0b3J5SXRlbSAqKWJhY2tJdGVtCiB7Ci0g
ICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmJhY2tJdGVtKCkuZ2V0KCkpIHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoa2l0KGNvcmUoc2VsZiktPmJhY2tJdGVt
KCkuZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJIaXN0b3J5SXRlbSAqKWN1cnJl
bnRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmN1cnJlbnRJdGVtKCkuZ2V0
KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoa2l0KGNvcmUo
c2VsZiktPmN1cnJlbnRJdGVtKCkuZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJI
aXN0b3J5SXRlbSAqKWZvcndhcmRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZikt
PmZvcndhcmRJdGVtKCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBy
ZXRhaW5QdHIoa2l0KGNvcmUoc2VsZiktPmZvcndhcmRJdGVtKCkuZ2V0KCkpKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiBzdGF0aWMgYm9vbCBidW1wZXJDYXJCYWNrRm9yd2FyZEhhY2tOZWVkZWQoKQpA
QCAtMzMzLDcgKzMzMyw3IEBAIC0gKGludClmb3J3YXJkTGlzdENvdW50CiAKIC0gKFdlYkhpc3Rv
cnlJdGVtICopaXRlbUF0SW5kZXg6KGludClpbmRleAogewotICAgIHJldHVybiBbW2tpdChjb3Jl
KHNlbGYpLT5pdGVtQXRJbmRleChpbmRleCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiByZXRhaW5QdHIoa2l0KGNvcmUoc2VsZiktPml0ZW1BdEluZGV4KGluZGV4KS5n
ZXQoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBjN2Y0NWFjNWUwM2UwNTI0YWU5ZTkwNGZm
NjExMjExMmI5NTJjODczLi4xNzFlOGIzNDdjYjFkOTJkYjIxZjc3OTAxNTRkOGRlNmUzMWNkZWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rvcnku
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBA
IC02MjQsNyArNjI0LDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIC8vIHRoYXQgY2xpZW50cyBj
YW4gbGVhcm4gb2YgZGlzY2FyZGVkIGl0ZW1zIGJ5IGxpc3RlbmluZyB0byBXZWJIaXN0b3J5SXRl
bXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24uCiAgICAgV2ViSGlzdG9yeVdyaXRl
ciB3cml0ZXIoX2VudHJpZXNCeURhdGUuZ2V0KCkpOwogICAgIHdyaXRlci53cml0ZVByb3BlcnR5
TGlzdCgpOwotICAgIHJldHVybiBbWyhOU0RhdGEgKil3cml0ZXIucmVsZWFzZURhdGEoKS5nZXQo
KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKChOU0RhdGEgKil3
cml0ZXIucmVsZWFzZURhdGEoKS5nZXQoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTClz
YXZlVG9VUkw6KE5TVVJMICopVVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCA4YTYx
OGM2ZDE4MDhjZjdlMzhkNWUwMDI1ZGYzOGM3Zjc4YmE1ZmU5Li44MTBmNjdiN2E4NThjZjdiYWQ4
MDg1MjIwY2Y4OWJkYzNkMjEwYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTI3MCwxMyArMjcwLDEzIEBAIFdlYkhpc3Rv
cnlJdGVtICpraXQoSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFpdGVtKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIGlmIChhdXRvIHdyYXBwZXIgPSBoaXN0b3J5SXRlbVdyYXBwZXJzKCku
Z2V0KGl0ZW0pKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIHJldHVybiBbW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdFdpdGhXZWJDb3JlSGlz
dG9yeUl0ZW06Kml0ZW1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViSGlzdG9yeUl0
ZW0gYWxsb2NdIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVtOippdGVtXSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogKyAoV2ViSGlzdG9yeUl0ZW0gKillbnRyeVdpdGhVUkw6KE5TVVJMICopVVJMCiB7
Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCB0aXRsZTpuaWxdIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTCB0aXRsZTpuaWxdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZClpbml0V2l0aFVSTFN0
cmluZzooTlNTdHJpbmcgKilVUkxTdHJpbmcgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUgZGlzcGxh
eVRpdGxlOihOU1N0cmluZyAqKWRpc3BsYXlUaXRsZSBsYXN0VmlzaXRlZFRpbWVJbnRlcnZhbDoo
TlNUaW1lSW50ZXJ2YWwpdGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggOTI2ZjVkNTYyZjgzOGJiNzM2M2U3OTQ5
Njk4Mjg2ZmJlMWM1OTM3Yi4uMmJhMDA2ZGQzZTdiMmFmYzUwZWZmMjg0NTMyMGQ5NjUwNWJhNzFi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmlu
Z0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3Ry
aW5nRXh0cmFzLm1tCkBAIC0xNTgsOSArMTU4LDkgQEAgLShOU1N0cmluZyAqKV93ZWJraXRfZmls
ZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzCiAKIC0oTlNTdHJpbmcgKilfd2Via2l0X3N0
cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlCiB7Ci0gICAgTlNNdXRhYmxlU3RyaW5nICp0cmltbWVk
ID0gW1tzZWxmIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdUcmltV2hp
dGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQpOwotICAgIHJldHVy
biB0cmltbWVkOworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3NlbGYgbXV0YWJsZUNvcHld
KTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChfX2JyaWRnZSBDRk11dGFibGVTdHJpbmdS
ZWYpdHJpbW1lZC5nZXQoKSk7CisgICAgcmV0dXJuIHRyaW1tZWQuYXV0b3JlbGVhc2UoKTsKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU0RhdGFFeHRyYXMubW0KaW5kZXggODJhZTFkYjVlNWY3NGUyNGVlNjk3YjFhOGZjMDVjNWM0
NjUxYmM5Yy4uNmVjN2NjMGRiMjI3MmNlNGJkM2RhMTc0ZWEzMjk0NTg2ZGRmZDE3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KQEAgLTI4
Niw3ICsyODYsNyBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgy
MkhlYWRlckZpZWxkcwogCiAgICAgY29uc3QgVUludDgqIGJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVUludDgqPihbc2VsZiBieXRlc10pOwogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3NlbGYg
bGVuZ3RoXTsKLSAgICBOU1N0cmluZyAqbGFzdEtleSA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IGxhc3RLZXk7CiAgICAgY29uc3QgVUludDggKmVvbDsKIAogICAgIC8vIExvb3Agb3Zl
ciBsaW5lcyB1bnRpbCB3ZSdyZSBwYXN0IHRoZSBoZWFkZXIsIG9yIHdlIGNhbid0IGZpbmQgYW55
IG1vcmUgZW5kLW9mLWxpbmVzCkBAIC0zMTEsMTEgKzMxMSwxMSBAQCAtIChOU011dGFibGVEaWN0
aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkcwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRp
bnVhdGlvbiBvZiB0aGUgcHJldmlvdXMgaGVhZGVyCi0gICAgICAgICAgICBOU1N0cmluZyAqY3Vy
cmVudFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV07CisgICAgICAg
ICAgICBOU1N0cmluZyAqY3VycmVudFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6
bGFzdEtleS5nZXQoKV07CiAgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmxpbmVMZW5ndGggZW5jb2Rp
bmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgQVNTRVJUKGN1cnJl
bnRWYWx1ZSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3VmFsdWUpOwotICAgICAgICAgICAgW2hl
YWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
ZzpuZXdWYWx1ZS5nZXQoKV0gZm9yS2V5Omxhc3RLZXldOworICAgICAgICAgICAgW2hlYWRlckZp
ZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpuZXdW
YWx1ZS5nZXQoKV0gZm9yS2V5Omxhc3RLZXkuZ2V0KCldOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gQnJhbmQgbmV3IGhlYWRlcgogICAgICAgICAgICAgY29uc3QgVUludDgqIGNv
bG9uOwpAQCAtMzI0LDE3ICszMjQsMTYgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV93ZWJr
aXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICAvLyBtYWxmb3JtZWQg
aGVhZGVyOyBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsYXN0S2V5ID0gW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhCeXRlczpsaW5lIGxlbmd0aDpjb2xvbiAtIGxpbmUgZW5jb2Rpbmc6TlNJU09MYXRp
bjFTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbbGFzdEtleSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgICAgICBsYXN0S2V5ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5
dGVzOmxpbmUgbGVuZ3RoOmNvbG9uIC0gbGluZSBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0Vu
Y29kaW5nXSk7CiAgICAgICAgICAgICBsYXN0S2V5ID0gW2xhc3RLZXkgX3dlYl9jYXBpdGFsaXpl
UkZDODIySGVhZGVyRmllbGROYW1lXTsKICAgICAgICAgICAgIGZvciAoY29sb24rKzsgY29sb24g
IT0gZW9sOyBjb2xvbisrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCpjb2xvbiAhPSAnICcgJiYg
KmNvbG9uICE9ICdcdCcpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhCeXRlczpjb2xvbiBsZW5ndGg6ZW9sIC0gY29sb24gZW5jb2Rpbmc6TlNJU09MYXRpbjFT
dHJpbmdFbmNvZGluZ10pOwotICAgICAgICAgICAgaWYgKE5TU3RyaW5nICpvbGRWYWx1ZSA9IFto
ZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXldKQorICAgICAgICAgICAgaWYgKE5TU3Ry
aW5nICpvbGRWYWx1ZSA9IFtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXkuZ2V0KCld
KQogICAgICAgICAgICAgICAgIHZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aEZvcm1hdDpAIiVALCAlQCIsIG9sZFZhbHVlLCB2YWx1ZS5nZXQoKV0pOwotICAgICAgICAg
ICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkgZm9yS2V5Omxhc3RLZXldOwor
ICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkgZm9yS2V5Omxh
c3RLZXkuZ2V0KCldOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5tbQppbmRleCA3NDk4ZTVhNTNhYjA3MDU5
NmJhOTNjNDY4ODQ1OWUyNzQzYjY2YTE2Li4yZjVhOTQ2MGQwMWM3MTBiMmMwYjNiN2M0YzdlN2Nk
ZmZmMmNiODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
T2JqZWN0RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNP
YmplY3RFeHRyYXMubW0KQEAgLTI5LDExICsyOSwxMiBAQAogI2ltcG9ydCAiV2ViTlNPYmplY3RF
eHRyYXMuaCIKIAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogQGludGVyZmFjZSBXZWJNYWluVGhyZWFkSW52b2tlciA6IE5TUHJveHkKIHsK
ICAgICBpZCB0YXJnZXQ7Ci0gICAgaWQgZXhjZXB0aW9uOworICAgIFJldGFpblB0cjxpZD4gZXhj
ZXB0aW9uOwogfQogQGVuZAogCkBAIC02MSwxNSArNjIsMTQgQEAgLSAodm9pZClmb3J3YXJkSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgogICAgIFtpbnZvY2F0aW9uIHNldFRh
cmdldDp0YXJnZXRdOwogICAgIFtpbnZvY2F0aW9uIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVh
ZDpAc2VsZWN0b3IoX3dlYmtpdF9pbnZva2VBbmRIYW5kbGVFeGNlcHRpb246KSB3aXRoT2JqZWN0
OnNlbGYgd2FpdFVudGlsRG9uZTpZRVNdOwogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAg
aWQgZXhjZXB0aW9uVG9UaHJvdyA9IFtleGNlcHRpb24gYXV0b3JlbGVhc2VdOwotICAgICAgICBl
eGNlcHRpb24gPSBuaWw7CisgICAgICAgIGlkIGV4Y2VwdGlvblRvVGhyb3cgPSBzdGQ6OmV4Y2hh
bmdlKGV4Y2VwdGlvbiwgbmlsKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICBAdGhyb3cgZXhjZXB0
aW9uVG9UaHJvdzsKICAgICB9IGVsc2UgaWYgKHJldHVyblR5cGVJc09iamVjdChpbnZvY2F0aW9u
KSkgewogICAgICAgICAvLyBfd2Via2l0X2ludm9rZUFuZEhhbmRsZUV4Y2VwdGlvbiByZXRhaW5l
ZCB0aGUgcmV0dXJuIHZhbHVlIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgLy8gTm93IGF1
dG9yZWxlYXNlIGl0IG9uIHRoZSBjYWxsaW5nIHRocmVhZC4KICAgICAgICAgaWQgcmV0dXJuVmFs
dWU7CiAgICAgICAgIFtpbnZvY2F0aW9uIGdldFJldHVyblZhbHVlOiZyZXR1cm5WYWx1ZV07Ci0g
ICAgICAgIFtyZXR1cm5WYWx1ZSBhdXRvcmVsZWFzZV07CisgICAgICAgIGFkb3B0TlMocmV0dXJu
VmFsdWUpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogfQogCkBAIC04MSw3ICs4MSw3IEBAIC0gKE5T
TWV0aG9kU2lnbmF0dXJlICopbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6KFNFTClzZWxlY3Rv
cgogLSAodm9pZCloYW5kbGVFeGNlcHRpb246KGlkKXBhc3NlZEV4Y2VwdGlvbgogewogICAgIEFT
U0VSVCghZXhjZXB0aW9uKTsKLSAgICBleGNlcHRpb24gPSBbcGFzc2VkRXhjZXB0aW9uIHJldGFp
bl07CisgICAgZXhjZXB0aW9uID0gcGFzc2VkRXhjZXB0aW9uOwogfQogCiBAZW5kCkBAIC0xMTEs
MTIgKzExMSwxMiBAQCBAaW1wbGVtZW50YXRpb24gTlNPYmplY3QgKFdlYk5TT2JqZWN0RXh0cmFz
KQogCiArIChpZClfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZAogewotICAgIHJldHVybiBbW1tX
ZWJNYWluVGhyZWFkSW52b2tlciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZl0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViTWFpblRocmVhZEludm9rZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0OnNlbGZdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZClfd2Via2l0X2lu
dm9rZU9uTWFpblRocmVhZAogewotICAgIHJldHVybiBbW1tXZWJNYWluVGhyZWFkSW52b2tlciBh
bGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViTWFpblRocmVhZEludm9rZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGZdKS5h
dXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCA3ZTk4OTJmYzNkMjJkYjUyOTFiZTRhNjYxMjk0NDVk
ZmFhZjgzYzlhLi44NzUzNjI0MmI3OTAzNGViOTM0Y2I1ZjcyYTg5NzM2ZjcxMWE5NTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTEw
NCw3ICsxMDQsNyBAQCAtIChOU0RhdGEgKilfd2ViX29yaWdpbmFsRGF0YQogCiAtIChOU1N0cmlu
ZyAqKV93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmcKIHsKLSAgICByZXR1cm4gW1tbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRGF0YTpvcmlnaW5hbFVSTERhdGEoc2VsZikgZW5jb2Rpbmc6TlNJU09M
YXRpbjFTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpvcmlnaW5hbFVSTERhdGEoc2VsZikgZW5jb2Rp
bmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0oTlNE
YXRhICopX3dlYl9ob3N0RGF0YQogCiAtIChOU1N0cmluZyAqKV93ZWJfaG9zdFN0cmluZwogewot
ICAgIHJldHVybiBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltzZWxmIF93ZWJfaG9z
dERhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltzZWxmIF93ZWJf
aG9zdERhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoTlNTdHJpbmcgKilfd2Via2l0X3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
OihOU1N0cmluZyAqKU1JTUVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCmluZGV4IDVlMjIzMjhmZDg0NTQ4YWQyM2YxYjU5ZTYxZGVmZWM0MWI2Y2VjZGMuLjU3YWE0
YTgyZDZhNjcxODE1ZTQzYmE4MDU5NDg2Yjc1NjVlNTBlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC0yNjEsMTEgKzI2MSwxMSBAQCB2b2lkIEhvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpjYW5jZWxMb2FkKE5TRXJyb3IgKmVycm9yKQogCiBOU0Vycm9y
ICpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2VsbGVkQ29ubmVjdGlvbkVy
cm9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW1tbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1
Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbgorICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldl
YktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6bV9yZXNwb25zZVVSTCA/IG1fcmVzcG9u
c2VVUkwuZ2V0KCkgOiBtX3JlcXVlc3RVUkwuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbk5hbWU6W1ttX2luc3RhbmNlLT5wbHVnaW5WaWV3
KCkgcGx1Z2luUGFja2FnZV0gcGx1Z2luSW5mb10ubmFtZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6bV9taW1lVHlwZS5nZXQoKV0gYXV0b3Jl
bGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlN
RVR5cGU6bV9taW1lVHlwZS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIE5TRXJyb3IgKkhv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjplcnJvckZvclJlYXNvbihOUFJlYXNvbiByZWFzb24p
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJh
c2VQbHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJC
YXNlUGx1Z2luUGFja2FnZS5tbQppbmRleCBmY2UzY2Y4ZDJkOGQwNjdlNmYxMzU5MTE0ODI3YjRl
NmVmMjM4N2ZmLi5iYjhiYzJhNTJmNGFlYTlmY2I5NTg5MDc4ZDFiYWExZTk4NTBiNTExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNr
YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdp
blBhY2thZ2UubW0KQEAgLTY5LDE3ICs2OSwxNyBAQCArICh2b2lkKWluaXRpYWxpemUKICsgKFdl
YkJhc2VQbHVnaW5QYWNrYWdlICopcGx1Z2luV2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0
aAogewogICAgIAotICAgIFdlYkJhc2VQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdlID0gW1tX
ZWJQbHVnaW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2luUGF0aF07CisgICAgYXV0
byBwbHVnaW5QYWNrYWdlID0gYWRvcHROUyhbW1dlYlBsdWdpblBhY2thZ2UgYWxsb2NdIGluaXRX
aXRoUGF0aDpwbHVnaW5QYXRoXSk7CiAKICAgICBpZiAoIXBsdWdpblBhY2thZ2UpIHsKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAgcGx1Z2luUGFja2FnZSA9IFtbV2Vi
TmV0c2NhcGVQbHVnaW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2luUGF0aF07Cisg
ICAgICAgIHBsdWdpblBhY2thZ2UgPSBhZG9wdE5TKFtbV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
IGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2luUGF0aF0pOwogI2Vsc2UKICAgICAgICAgcmV0dXJu
IG5pbDsKICNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiBbcGx1Z2luUGFja2FnZSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIHBsdWdpblBhY2thZ2UuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
aWQpaW5pdFdpdGhQYXRoOihOU1N0cmluZyAqKXBsdWdpblBhdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1t
CmluZGV4IDBiMzI2NzI3MjJmOGM5MDI0NTdmYjQ1M2QyMjE2MjFhNmJhMWYyM2YuLjU1NjNkMDli
ZDU2YzBiMjZlNmQ5MWQwN2ZjZDc1OGRmMTgwZjBjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpA
QCAtMTA2LDExICsxMDYsMTEgQEAgTlBSZWFzb24gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OnJl
YXNvbkZvckVycm9yKE5TRXJyb3IgKmVycm9yKQogCiBOU0Vycm9yICpXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6cGx1Z2luQ2FuY2VsbGVkQ29ubmVjdGlvbkVycm9yKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gW1tbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVy
cm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbgorICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJv
ciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luQ2FuY2Vs
bGVkQ29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRlbnRVUkw6bV9yZXNwb25zZVVSTCA/IG1fcmVzcG9uc2VVUkwuZ2V0KCkgOiAoTlNVUkwg
KiltX3JlcXVlc3RVUkwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
bHVnaW5QYWdlVVJMOm5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBsdWdpbk5hbWU6W1ttX3BsdWdpblZpZXcuZ2V0KCkgcGx1Z2luUGFja2FnZV0gcGx1Z2lu
SW5mb10ubmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TUlNRVR5cGU6KE5TU3RyaW5nICopU3RyaW5nOjpmcm9tVVRGOChtX21pbWVUeXBlLmRhdGEoKSwg
bV9taW1lVHlwZS5sZW5ndGgoKSldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKVN0cmluZzo6ZnJv
bVVURjgobV9taW1lVHlwZS5kYXRhKCksIG1fbWltZVR5cGUubGVuZ3RoKCkpXSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogTlNFcnJvciAqV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmVycm9yRm9yUmVh
c29uKE5QUmVhc29uIHJlYXNvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDY4N2JiYmJl
ODBmNWI3ZDg3YjI3OGY5MTgzOTA1MGMwNWUwZDdkNS4uZjBkOTk4YzA5NjA0OGQ5YWZkMTM2ZWQy
MjFhZDUxZTYxN2UyYjFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTM1NSw3ICszNTUsNyBAQCAt
IChCT09MKXNlbmRFdmVudDoodm9pZCopZXZlbnQgaXNEcmF3UmVjdDooQk9PTClldmVudElzRHJh
d1JlY3QKICAgICB9CiAKICAgICAvLyBUZW1wb3JhcmlseSByZXRhaW4gc2VsZiBpbiBjYXNlIHRo
ZSBwbHVnLWluIHZpZXcgaXMgcmVsZWFzZWQgd2hpbGUgc2VuZGluZyBhbiBldmVudC4gCi0gICAg
W1tzZWxmIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihzZWxmKS5hdXRvcmVs
ZWFzZSgpOwogCiAgICAgQk9PTCBhY2NlcHRlZEV2ZW50OwogICAgIFtzZWxmIHdpbGxDYWxsUGx1
Z0luRnVuY3Rpb25dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KaW5kZXggNzQwODg4ZmQ5NjgyMWEzNDI5
YzQ3OTQxMTc1YTM3MDBkNTA3Nzg2My4uMWQ5OGJhMGRkMDYyMmQ5YzEwZTZiMjc2Zjg1MWM0ZDRm
N2M2MTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQ
bHVnaW5Db250YWluZXJDaGVjay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKGlkKWlu
aXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB0YXJnZXQ6KE5TU3RyaW5nICop
dGFyZ2V0IHJlc3VsdE9iCiAKICsgKGlkKWNoZWNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgdGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldCByZXN1bHRPYmplY3Q6KGlkKW9iaiBz
ZWxlY3RvcjooU0VMKXNlbGVjdG9yIGNvbnRyb2xsZXI6KGlkIDxXZWJQbHVnaW5Db250YWluZXJD
aGVja0NvbnRyb2xsZXI+KWNvbnRyb2xsZXIgY29udGV4dEluZm86KGlkKWNvbnRleHRJbmZvIC8q
b3B0aW9uYWwqLwogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6
cmVxdWVzdCB0YXJnZXQ6dGFyZ2V0IHJlc3VsdE9iamVjdDpvYmogc2VsZWN0b3I6c2VsZWN0b3Ig
Y29udHJvbGxlcjpjb250cm9sbGVyIGNvbnRleHRJbmZvOmNvbnRleHRJbmZvXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVx
dWVzdCB0YXJnZXQ6dGFyZ2V0IHJlc3VsdE9iamVjdDpvYmogc2VsZWN0b3I6c2VsZWN0b3IgY29u
dHJvbGxlcjpjb250cm9sbGVyIGNvbnRleHRJbmZvOmNvbnRleHRJbmZvXSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQppbmRleCA2ZTI4NzJkMmMzYzM3MDViMzQx
NTdlODMyODMyNWYwODQxZWM3M2M1Li5iNTljZTRiY2RmOGE1MzcxYzIxZjZmMGYzMzgxZWVmM2Uw
ZDdmZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBs
dWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
UGx1Z2luRGF0YWJhc2UubW0KQEAgLTQxOSw5ICs0MTksOSBAQCAtIChOU0FycmF5ICopX3BsdWdJ
blBhdGhzCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHZl
cnNpb25zIG9mIHRoZSArc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOiBTUEksCiAgICAgICAg
IC8vIHdoaWNoIHNpbXBseSBzYXZlZCBhIGNvcHkgb2YgdGhlIGFkZGl0aW9uYWwgcGF0aHMgYW5k
IGRpZCBub3QgY2F1c2UgdGhlIHBsdWdpbiBEQiB0byAKICAgICAgICAgLy8gcmVmcmVzaC4gIFNl
ZSBSYWRhcnMgNDYwODQ4NyBhbmQgNDYwOTA0Ny4KLSAgICAgICAgTlNNdXRhYmxlQXJyYXkgKm1v
ZGlmaWVkUGx1Z0luUGF0aHMgPSBbW3BsdWdJblBhdGhzIG11dGFibGVDb3B5XSBhdXRvcmVsZWFz
ZV07CisgICAgICAgIGF1dG8gbW9kaWZpZWRQbHVnSW5QYXRocyA9IGFkb3B0TlMoW3BsdWdJblBh
dGhzIG11dGFibGVDb3B5XSk7CiAgICAgICAgIFttb2RpZmllZFBsdWdJblBhdGhzIGFkZE9iamVj
dHNGcm9tQXJyYXk6YWRkaXRpb25hbFdlYlBsdWdJblBhdGhzKCkuZ2V0KCldOwotICAgICAgICBy
ZXR1cm4gbW9kaWZpZWRQbHVnSW5QYXRoczsKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVkUGx1Z0lu
UGF0aHMuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgcmV0dXJuIHBsdWdJblBhdGhzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCmluZGV4IGFjN2QxNjQ4Y2I4Mjk0Yjc4NDZjYWYwNTJkNTc0OTJiNGUy
MmE0YWYuLjkxYWZjNWQ3NDQ5MTQzNGY0ZTEyM2YxOGE1MDQxNzM4OWIzNGIzYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogKyAoV2Vi
VW5kb1N0ZXAgKilzdGVwV2l0aFVuZG9TdGVwOihSZWY8VW5kb1N0ZXA+JiYpc3RlcAogewotICAg
IHJldHVybiBbW1tXZWJVbmRvU3RlcCBhbGxvY10gaW5pdFdpdGhVbmRvU3RlcDpXVEZNb3ZlKHN0
ZXApXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJVbmRvU3RlcCBhbGxv
Y10gaW5pdFdpdGhVbmRvU3RlcDpXVEZNb3ZlKHN0ZXApXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoVW5kb1N0ZXAmKXN0ZXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMmFhOGMz
OWE0MDM5NmJmYzE4MTA0NDM2OWEzYzYyMGMzNGUwODA0MC4uY2Q4YzA3ZjExYThjYWFlZDMxY2Y1
ZWVlMDgyNDQzN2FhNTI0YTA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTMw
NSw5ICszMDUsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMbwogICAgIGlmICghbWFpblJlc291
cmNlTG9hZGVyKSB7CiAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGNh
Y2hlZCwgb3IgdGhlIGNvbnZlcnNpb24gaXMgYmVpbmcgYXR0bXB0ZWQgd2hlbiBub3QgY2FsbGlu
ZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCiAgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIFdlYkRvd25sb2FkICp3ZWJE
b3dubG9hZCA9IFtbV2ViRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkp
IGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdXTsKKyAgICAgICAgYXV0byB3ZWJE
b3dubG9hZCA9IGFkb3B0TlMoW1tXZWJEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJl
cXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVI
VFRQQm9keSkgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWREZWxlZ2F0ZV1dKTsKICAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgIFt3ZWJEb3dubG9hZCBh
dXRvcmVsZWFzZV07CisgICAgICAgIHdlYkRvd25sb2FkLmF1dG9yZWxlYXNlKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTkyOCwxMCArOTI4LDEwIEBAIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKm1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KFdlYkNvcmU6OkZvcm1TdGF0ZSYgZm9y
bVN0YXRlCiB7CiAgICAgYXV0byYgdGV4dEZpZWxkVmFsdWVzID0gZm9ybVN0YXRlLnRleHRGaWVs
ZFZhbHVlcygpOwogICAgIHNpemVfdCBzaXplID0gdGV4dEZpZWxkVmFsdWVzLnNpemUoKTsKLSAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdOworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVd
KTsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogdGV4dEZpZWxkVmFsdWVzKQogICAgICAgICBbZGlj
dGlvbmFyeSBzZXRPYmplY3Q6dmFsdWUuc2Vjb25kIGZvcktleTp2YWx1ZS5maXJzdF07Ci0gICAg
cmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gZGljdGlvbmFyeS5h
dXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdp
bGxTZW5kU3VibWl0RXZlbnQoUmVmPFdlYkNvcmU6OkZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUpCkBA
IC0xMTY5LDEyICsxMTY5LDExIEBAIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlCiAKIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnN0CiB7
Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVy
cm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkCisgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JQ
bHVnSW5XaWxsSGFuZGxlTG9hZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6cmVzcG9uc2UudXJsKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbk5h
bWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpXTsKLSAgICByZXR1cm4gW2Vycm9yIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1JTUVUeXBlOnJlc3BvbnNlLm1pbWVUeXBlKCldKS5hdXRvcmVsZWFzZSgpOwog
fQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFjayhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKQEAgLTE5NDAsNyArMTkzOSw3IEBAIFJl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4o
Y29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgICAgICAgICAgdmlldyA9IHBsdWdpblZpZXco
bV93ZWJGcmFtZS5nZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5QYWNrYWdlLCBhdHRy
aWJ1dGVLZXlzLmdldCgpLCBjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKSwgYmFzZVVS
TCwga2l0KCZlbGVtZW50KSwgbG9hZE1hbnVhbGx5KTsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICAgICAgICAgIGVsc2UgaWYgKFtwbHVnaW5QYWNrYWdlIGlzS2luZE9mQ2xh
c3M6W1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBjbGFzc11dKSB7Ci0gICAgICAgICAgICAgICAg
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldyA9IFtbW05FVFNDQVBFX1BMVUdJ
Tl9WSUVXIGFsbG9jXQorICAgICAgICAgICAgICAgIGF1dG8gcGx1Z2luVmlldyA9IGFkb3B0TlMo
W1tORVRTQ0FQRV9QTFVHSU5fVklFVyBhbGxvY10KICAgICAgICAgICAgICAgICAgICAgaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkKICAg
ICAgICAgICAgICAgICAgICAgcGx1Z2luUGFja2FnZTooV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
ICopcGx1Z2luUGFja2FnZQogICAgICAgICAgICAgICAgICAgICBVUkw6cGx1Z2luVVJMCkBAIC0x
OTQ5LDkgKzE5NDgsOSBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVLZXlzOmF0dHJpYnV0ZUtleXMuZ2V0KCkKICAgICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlVmFsdWVzOmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdldCgpCiAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTpsb2FkTWFudWFsbHkKLSAgICAgICAgICAgICAg
ICAgICAgZWxlbWVudDomZWxlbWVudF0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50OiZlbGVtZW50XSk7CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE5ldHNjYXBlUGx1Z2luV2lkZ2V0KHBsdWdpblZpZXcpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE5ldHNjYXBlUGx1Z2luV2lkZ2V0KHBsdWdpblZpZXcuYXV0b3Jl
bGVhc2UoKSkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQppbmRleCBiODk4NzE4MzU5MzE2MzVlNTVhM2NkYzc0NDg1ZGM5OTYzZmIxYWQy
Li4zNTkxNWM2NjkzNjBlODY1ZDEzNWRiZDcxOTFjZTc3YjJhMTFkZDBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCkBAIC03OTgsNyArNzk4LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGV4Y2VlZGVkRGF0YWJhc2VRdW90YUYK
IAogLSAoTlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY29udGV4dE1lbnVJdGVt
c0ZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgZGVmYXVsdE1lbnVJdGVtczooTlNB
cnJheSAqKWRlZmF1bHRNZW51SXRlbXMKIHsKLSAgICBOU011dGFibGVBcnJheSAqbWVudUl0ZW1z
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byBtZW51SXRlbXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIGZvciAoTlNNZW51
SXRlbSAqaXRlbSBpbiBkZWZhdWx0TWVudUl0ZW1zKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS50
YWcpIHsKQEAgLTgxNSw3ICs4MTUsNyBAQCAtIChOU0FycmF5ICopd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudDooTlNEaWN0aW9uYXJ5CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gW21lbnVJdGVtcyBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIG1lbnVJdGVtcy5hdXRvcmVsZWFzZSgpOwogfQogCiAvLyBNQVJLOiAtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tCmluZGV4IDg1YWYzMzMxZTZiMmE5MGFkZWQ4ZGE5YTk1M2MxZjBiNjZjMTk5MmIu
LjJkNDE0MWVkYjIxOTYxOTYxNzgyOTc2ODAxZTBhZjEzMzM2ODAyMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tCkBAIC00OCw3ICs0OCw3IEBAICsgKGlkKXdlYlNlY3VyaXR5T3JpZ2luRnJvbURh
dGFiYXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIKICAgICBpZiAo
IW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbW1tXZWJTZWN1cml0
eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbi0+c2Vj
dXJpdHlPcmlnaW4oKS5wdHIoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpv
cmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucHRyKCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChp
ZClpbml0V2l0aFVSTDooTlNVUkwgKil1cmwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCAxZmYyZjU0NjJkNjUyMzM2MDhkNmFhYTUxNTJmNDZk
YjFmYTBiNjc1Li4yMmQ2NzhhMWYxYjZlMTkyMjk5YzIwNGYyZDZlNmNjNjU5Yzc4ZDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCkBAIC0zMzUs
NyArMzM1LDcgQEAgLSAoTlNEYXRhICopZGF0YQogI2VuZGlmCiAgICAgTE9HKFRpbWluZywgIlNl
cmlhbGl6aW5nIHdlYiBhcmNoaXZlIHRvIHJhdyBDRlByb3BlcnR5TGlzdCBkYXRhIHRvb2sgJWYg
c2Vjb25kcyIsIGR1cmF0aW9uKTsKICAgICAgICAgCi0gICAgcmV0dXJuIFtbKE5TRGF0YSAqKWRh
dGEuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cigoTlNE
YXRhICopZGF0YS5nZXQoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IGMxNDZmMTYw
NWYzODM4ZTI4OTVhYzkwMzBjM2JmZDhlOTE0OGRmZWQuLjBhYzYwZTk5NDM2YWU3N2VmNzUzMGI2
MGJmMmU1Y2I4MGU1OGEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTE3OCwxNSArMTc4LDE1IEBAIC0gKHZvaWQpX2FkZFN1
YmZyYW1lQXJjaGl2ZXM6KE5TQXJyYXkgKilzdWJmcmFtZUFyY2hpdmVzCiAtIChOU0ZpbGVXcmFw
cGVyICopX2ZpbGVXcmFwcGVyRm9yVVJMOihOU1VSTCAqKVVSTAogewogICAgIGlmIChbVVJMIGlz
RmlsZVVSTF0pCi0gICAgICAgIHJldHVybiBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0
aFVSTDpbVVJMIFVSTEJ5UmVzb2x2aW5nU3ltbGlua3NJblBhdGhdIG9wdGlvbnM6MCBlcnJvcjpu
dWxscHRyXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W1VSTCBVUkxCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRo
XSBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl0pLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoYXV0
byByZXNvdXJjZSA9IFtzZWxmIHN1YnJlc291cmNlRm9yVVJMOlVSTF0pCiAgICAgICAgIHJldHVy
biBbcmVzb3VyY2UgX2ZpbGVXcmFwcGVyUmVwcmVzZW50YXRpb25dOwogCiAgICAgaWYgKGF1dG8g
Y2FjaGVkUmVzcG9uc2UgPSBbW3NlbGYgX3dlYlZpZXddIF9jYWNoZWRSZXNwb25zZUZvclVSTDpV
UkxdKSB7Ci0gICAgICAgIE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6W2NhY2hlZFJlc3BvbnNlIGRhdGFd
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6W2NhY2hlZFJlc3BvbnNl
IGRhdGFdXSk7CiAgICAgICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOltbY2FjaGVk
UmVzcG9uc2UgcmVzcG9uc2VdIHN1Z2dlc3RlZEZpbGVuYW1lXV07Ci0gICAgICAgIHJldHVybiB3
cmFwcGVyOworICAgICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gbmlsOwpAQCAtNTMyLDcgKzUzMiw3IEBAIC0gKFdlYkFyY2hpdmUgKil3
ZWJBcmNoaXZlCiAgICAgaWYgKCF0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPmlzQ29tbWl0
dGVkKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIAotICAgIHJldHVybiBbW1tXZWJB
cmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpXZWJDb3JlOjpMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoW3NlbGYgd2ViRnJhbWVdKSldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0V2l0aENvcmVM
ZWdhY3lXZWJBcmNoaXZlOldlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZShb
c2VsZiB3ZWJGcmFtZV0pKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYlJlc291cmNlICop
bWFpblJlc291cmNlCkBAIC01NDAsNyArNTQwLDcgQEAgLSAoV2ViUmVzb3VyY2UgKiltYWluUmVz
b3VyY2UKICAgICBhdXRvIGNvcmVSZXNvdXJjZSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRl
ci0+bWFpblJlc291cmNlKCk7CiAgICAgaWYgKCFjb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIFtbW1dlYlJlc291cmNlIGFsbG9jXSBfaW5pdFdpdGhDb3JlUmVz
b3VyY2U6Y29yZVJlc291cmNlLnJlbGVhc2VOb25OdWxsKCldIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBfaW5pdFdpdGhDb3JlUmVzb3VyY2U6
Y29yZVJlc291cmNlLnJlbGVhc2VOb25OdWxsKCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U0FycmF5ICopc3VicmVzb3VyY2VzCkBAIC01NTMsNyArNTUzLDcgQEAgLSAoTlNBcnJheSAqKXN1
YnJlc291cmNlcwogLSAoV2ViUmVzb3VyY2UgKilzdWJyZXNvdXJjZUZvclVSTDooTlNVUkwgKilV
UkwKIHsKICAgICBhdXRvIHN1YnJlc291cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVy
LT5zdWJyZXNvdXJjZShVUkwpOwotICAgIHJldHVybiBzdWJyZXNvdXJjZSA/IFtbW1dlYlJlc291
cmNlIGFsbG9jXSBfaW5pdFdpdGhDb3JlUmVzb3VyY2U6c3VicmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKV0gYXV0b3JlbGVhc2VdIDogbmlsOworICAgIHJldHVybiBzdWJyZXNvdXJjZSA/IGFkb3B0
TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOnN1YnJlc291cmNl
LnJlbGVhc2VOb25OdWxsKCldKS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQogCiAtICh2b2lkKWFk
ZFN1YnJlc291cmNlOihXZWJSZXNvdXJjZSAqKXN1YnJlc291cmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbQppbmRleCAyNzZkOWYxNWVmOGZhNWUxZmVkNDM4ZWQ5YzFkMjU5
YTc4NTgzNTBhLi4wMzA0MjUwNzc1NTY1ZTRkM2U3ODc4YmY5MTQzMDUwNmMyNjdmZGM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCIKIAogI2lt
cG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjIsNyArNjMsNyBAQCAt
ICh2b2lkKXN0b3BVcGRhdGluZwogCiAtIChXZWJEZXZpY2VPcmllbnRhdGlvbiopbGFzdE9yaWVu
dGF0aW9uCiB7Ci0gICAgcmV0dXJuIFtbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0
V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjptX2NvcmUtPmxhc3RPcmllbnRhdGlvbigpXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxv
Y10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9jb3JlLT5sYXN0T3JpZW50YXRpb24o
KV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDNjNGU0YmIzOTYwNjU4MTc0ODQzNzFjMzBlNDNjNzVj
NjY1MjY1MzkuLmI5YmU3ZDk5MDVkYWY1MGVlOWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjMzMyw3ICsy
MzMzLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQK
ICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6
Oklnbm9yZUNsaXBwaW5nLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwotICAgIHJl
dHVybiBbW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0
OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQocG9pbnQpLCBoaXRUeXBlKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpj
b3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50KHBvaW50KSwgaGl0VHlwZSldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAq
KV91bnJlYWNoYWJsZVVSTApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgLSAoV2ViRnJhbWUgKilwYXJl
bnRGcmFtZQogICAgIGF1dG8gY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsKICAgICBp
ZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1traXQoY29y
ZUZyYW1lLT50cmVlKCkucGFyZW50KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biByZXRhaW5QdHIoa2l0KGNvcmVGcmFtZS0+dHJlZSgpLnBhcmVudCgpKSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoTlNBcnJheSAqKWNoaWxkRnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDY0ZGQ3MmViYWI5OGVlYjFhMmYw
NmIyNGE2Y2Y5ZWU1YzE0MWJiMmMuLmNjYzczYjM0NDIzMjVkOTA0ZDE0MzZlNTE0YjllM2QzNmIw
YTM3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tCkBAIC0zNjksNyArMzY5LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBbc2Nyb2xsVmlldyBzZXREZWxlZ2F0
ZTpzZWxmXTsKICNlbHNlCi0gICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6W1tbV2ViQ2xp
cFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91bmRzXV0gYXV0b3JlbGVh
c2VdXTsKKyAgICBbc2Nyb2xsVmlldyBzZXRDb250ZW50VmlldzphZG9wdE5TKFtbV2ViQ2xpcFZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91bmRzXV0pLmF1dG9yZWxlYXNl
KCldOwogI2VuZGlmCiAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKICAg
ICBbc2Nyb2xsVmlldyBzZXRIYXNWZXJ0aWNhbFNjcm9sbGVyOk5PXTsKQEAgLTEyMjksNyArMTIy
OSw3IEBAIC0gKHZvaWQpX3NldEN1c3RvbVNjcm9sbFZpZXdDbGFzczooQ2xhc3MpY3VzdG9tQ2xh
c3MKICAgICBhdXRvIGRvY3VtZW50VmlldyA9IHJldGFpblB0cihbc2VsZiBkb2N1bWVudFZpZXdd
KTsKIAogICAgIFJldGFpblB0cjxXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXc+IHNjcm9sbFZpZXcg
ID0gYWRvcHROUyhbW2N1c3RvbUNsYXNzIGFsbG9jXSBpbml0V2l0aEZyYW1lOltvbGRTY3JvbGxW
aWV3IGZyYW1lXV0pOwotICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRWaWV3OltbW1dlYkNsaXBW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dIGF1dG9yZWxlYXNl
XV07CisgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6YWRvcHROUyhbW1dlYkNsaXBWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dKS5hdXRvcmVsZWFzZSgp
XTsKICAgICBbc2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6W29sZFNjcm9sbFZpZXcgZHJh
d3NCYWNrZ3JvdW5kXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpb
b2xkU2Nyb2xsVmlldyBoYXNWZXJ0aWNhbFNjcm9sbGVyXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0
SGFzSG9yaXpvbnRhbFNjcm9sbGVyOltvbGRTY3JvbGxWaWV3IGhhc0hvcml6b250YWxTY3JvbGxl
cl1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA0MWQ3NzE4ODkwZWNlZDU2N2VmZTdjYWNkODE2ODkz
ZDQzZjI5YmY3Li40ZTY3Y2RhZGMwZTI0YzhlY2M4MDUyMDFkOWVhNDZlNzI0YTdiZTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQpAQCAtMjMxLDggKzIzMSw3IEBAIC0gKE5TU3RyaW5nICopZG9jdW1lbnRT
b3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAg
ICAgICAgCiAgICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZh
dGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKLSAg
ICAgICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpw
YXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgIHJldHVybiBb
cmVzdWx0IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShb
X3ByaXZhdGUtPmRhdGFTb3VyY2Ugd2ViRnJhbWVdKTsKQEAgLTI3MCw3ICsyNjksNyBAQCAtIChO
U0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkVGV4dAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICopYXR0cmlidXRlZFN0cmluZ0Zyb206KERPTU5vZGUgKilzdGFydE5vZGUgc3RhcnRPZmZzZXQ6
KGludClzdGFydE9mZnNldCB0bzooRE9NTm9kZSAqKWVuZE5vZGUgZW5kT2Zmc2V0OihpbnQpZW5k
T2Zmc2V0CiB7CiAgICAgaWYgKCFzdGFydE5vZGUgfHwgIWVuZE5vZGUpCi0gICAgICAgIHJldHVy
biBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRv
cmVsZWFzZSgpOwogICAgIGF1dG8gcmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHsgKmNvcmUoc3RhcnRO
b2RlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSB9LCB7ICpjb3JlKGVuZE5v
ZGUpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9IH07CiAgICAgcmV0dXJuIGVk
aXRpbmdBdHRyaWJ1dGVkU3RyaW5nKHJhbmdlKS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ1
YWUzZDBjYTQ2YmFlYWUzZjUxMjE3NDY3NjViMmZlNWU4YTA2YWMuLjIwNTRiNjZkMjAxYWM3ZmI0
OGU0Yzg4ODU2MDZiMjI3M2U0OWFmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgLSAoRE9NRG9jdW1l
bnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aFBhdGhzOihOU0FycmF5ICopcGF0aHMK
IAogKyAoTlNBcnJheSAqKV9leGNsdWRlZEVsZW1lbnRzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZl
cnNpb24KIHsKLSAgICBOU011dGFibGVBcnJheSAqZWxlbWVudHMgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6CisgICAgYXV0byBlbGVtZW50cyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICAvLyBPbWl0IHN0
eWxlIHNpbmNlIHdlIHdhbnQgc3R5bGUgdG8gYmUgaW5saW5lIHNvIHRoZSBmcmFnbWVudCBjYW4g
YmUgZWFzaWx5IGluc2VydGVkLgogICAgICAgICBAInN0eWxlIiwKICAgICAgICAgLy8gT21pdCB4
bWwgc28gdGhlIHJlc3VsdCBpcyBub3QgWEhUTUwuCkBAIC0xMTU3LDE0ICsxMTU3LDE0IEBAICsg
KE5TQXJyYXkgKilfZXhjbHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9u
CiAgICAgICAgIC8vIE9taXQgb2JqZWN0IHNvIG5vIGZpbGUgYXR0YWNobWVudHMgYXJlIHBhcnQg
b2YgdGhlIGZyYWdtZW50LgogICAgICAgICBAIm9iamVjdCIsCiAjZW5kaWYKLSAgICAgICAgbmls
XTsKKyAgICAgICAgbmlsXSk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IGlmICghV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5h
dHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkKICAgICAgICAgW2VsZW1lbnRzIGFkZE9iamVjdDpA
Im9iamVjdCJdOwogI2VuZGlmCiAKLSAgICByZXR1cm4gW2VsZW1lbnRzIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gZWxlbWVudHMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoRE9NRG9jdW1lbnRG
cmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAq
KXBhc3RlYm9hcmQgaW5Db250ZXh0OihET01SYW5nZSAqKWNvbnRleHQgYWxsb3dQbGFpblRleHQ6
KEJPT0wpYWxsb3dQbGFpblRleHQKQEAgLTEyMjEsNyArMTIyMSw3IEBAIC0gKE5TU3RyaW5nICop
X3BsYWluVGV4dEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCiAgICAg
aWYgKGF0dHJpYnV0ZWRTdHJpbmcgPT0gbmlsICYmIFt0eXBlcyBjb250YWluc09iamVjdDpXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgYXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOltwYXN0
ZWJvYXJkIGRhdGFGb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCldIGRv
Y3VtZW50QXR0cmlidXRlczpOVUxMXSk7CiAgICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcpCi0gICAg
ICAgIHJldHVybiBbW1thdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10gY29weV0gYXV0b3JlbGVhc2Vd
OworICAgICAgICByZXR1cm4gYWRvcHROUyhbW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSBjb3B5
XSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGlmIChbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29y
ZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKV0pIHsKICAgICAgICAgaWYgKE5TU3Ry
aW5nICpzdHJpbmcgPSBbW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpXZWJDb3JlOjps
ZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpXSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6
QCJcbiJdKQpAQCAtMTg4MCw3ICsxODgwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfQkVHSU4KIC0gKE5TU3RyaW5nICopdmlldzooTlNWaWV3ICopdmlldyBzdHJpbmdGb3JU
b29sVGlwOihOU1Rvb2xUaXBUYWcpdGFnIHBvaW50OihOU1BvaW50KXBvaW50IHVzZXJEYXRhOih2
b2lkICopZGF0YQogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiB7Ci0gICAg
cmV0dXJuIFtbX3ByaXZhdGUtPnRvb2xUaXAgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtfcHJpdmF0ZS0+dG9vbFRpcCBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
c3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQp
CkBAIC0zMzgzLDcgKzMzODMsNyBAQCAtICh2b2lkKXJpZ2h0TW91c2VVcDooTlNFdmVudCAqKWV2
ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IGlmIHdlIHJ1biBhIG5lc3RlZCBldmVu
dCBsb29wIHRoZSBldmVudCB3aWxsIGJlIHJlbGVhc2VkLgogICAgIC8vIFJldGFpbmluZyBhbmQg
dGhlbiBhdXRvcmVsZWFzaW5nIHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBs
YXRlciBoZXJlIG9yCiAgICAgLy8gaW5zaWRlIEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQgcmV0
YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwog
CiAgICAgW3N1cGVyIHJpZ2h0TW91c2VVcDpldmVudF07CiAKQEAgLTM3MjAsNyArMzcyMCw3IEBA
IC0gKE5TTWVudSAqKW1lbnVGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUn
cyBhIGNoYW5jZSB0aGF0IGlmIHdlIHJ1biBhIG5lc3RlZCBldmVudCBsb29wIHRoZSBldmVudCB3
aWxsIGJlIHJlbGVhc2VkLgogICAgIC8vIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5n
IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBsYXRlciBoZXJlIG9yCiAgICAg
Ly8gaW5zaWRlIEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgW19wcml2YXRlLT5j
b21wbGV0aW9uQ29udHJvbGxlciBlbmRSZXZlcnRpbmdDaGFuZ2U6Tk8gbW92ZUxlZnQ6Tk9dOwog
CkBAIC00MDgxLDcgKzQwODEsNyBAQCAtICh2b2lkKXNjcm9sbFdoZWVsOihXZWJFdmVudCAqKWV2
ZW50CiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9u
ZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBl
dmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBv
ciBBcHBLaXQgY29kZS4KICAgICAvLyBGSVhNRTogV2h5IG5vdCBkbyB0aGlzIG9uIGlPUyB0b28/
Ci0gICAgW1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQp
LmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIAogICAgIGF1dG8qIGZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKQEAgLTQxMjEsNyArNDEyMSw3IEBAIC0gKEJPT0wpYWNjZXB0c0ZpcnN0TW91c2U6
KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5n
IHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8g
ZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5n
IGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50
cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29k
ZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVu
dCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtzZWxmIF9oaXRWaWV3
Rm9yRXZlbnQ6ZXZlbnRdOwogICAgIFdlYkhUTUxWaWV3ICpoaXRIVE1MVmlldyA9IFtoaXRWaWV3
IGlzS2luZE9mQ2xhc3M6W3NlbGYgY2xhc3NdXSA/IChXZWJIVE1MVmlldyAqKWhpdFZpZXcgOiBu
aWw7CkBAIC00MTUwLDcgKzQxNTAsNyBAQCAtIChCT09MKXNob3VsZERlbGF5V2luZG93T3JkZXJp
bmdGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0
IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBh
bmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25l
LiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2
ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9y
IEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgTlNWaWV3ICpoaXRWaWV3ID0gW3Nl
bGYgX2hpdFZpZXdGb3JFdmVudDpldmVudF07CiAgICAgV2ViSFRNTFZpZXcgKmhpdEhUTUxWaWV3
ID0gW2hpdFZpZXcgaXNLaW5kT2ZDbGFzczpbc2VsZiBjbGFzc11dID8gKFdlYkhUTUxWaWV3ICop
aGl0VmlldyA6IG5pbDsKQEAgLTQxODEsNyArNDE4MSw3IEBAIC0gKHZvaWQpbW91c2VEb3duOihX
ZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcg
dG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBm
ZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcg
YW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRz
IHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2Rl
LgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50
KS5hdXRvcmVsZWFzZSgpOwogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHBy
b3RlY3RvciA9IHNlbGY7CkBAIC00Mjg3LDcgKzQyODcsNyBAQCAtICh2b2lkKW1vdXNlRHJhZ2dl
ZDooTlNFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRp
bmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAv
LyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5p
bmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZl
bnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBj
b2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2
ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICBOU0lucHV0TWFuYWdlciAqY3VycmVudElucHV0TWFuYWdlciA9IFtOU0lucHV0
TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXTsKQEAgLTQzNjMsMTQgKzQzNjMsMTQgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKE5TQXJyYXkgKiluYW1lc09m
UHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlv
bgogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiB7Ci0gICAgTlNGaWxlV3Jh
cHBlciAqd3JhcHBlciA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gd3JhcHBl
cjsKICAgICBOU1VSTCAqZHJhZ2dpbmdFbGVtZW50VVJMID0gbmlsOwogICAgIAogICAgIGlmIChh
dXRvIHRpZmZSZXNvdXJjZSA9IF9wcml2YXRlLT5wcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZSkg
ewogICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gdGlmZlJlc291cmNlLT5yZXNvdXJjZUJ1ZmZl
cigpKSB7CiAgICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IHRpZmZSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgICAgICAgICBkcmFnZ2luZ0VsZW1l
bnRVUkwgPSBbcmVzcG9uc2UgVVJMXTsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBbW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcqIGZpbGVu
YW1lID0gW3Jlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lXTsKICAgICAgICAgICAgIE5TU3RyaW5n
KiB0cnVlRXh0ZW5zaW9uKHRpZmZSZXNvdXJjZS0+aW1hZ2UoKS0+ZmlsZW5hbWVFeHRlbnNpb24o
KSk7CiAgICAgICAgICAgICBpZiAoIW1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoZmlsZW5h
bWUsIHRydWVFeHRlbnNpb24pKQpAQCAtNDQ1OCw3ICs0NDU4LDcgQEAgLSAodm9pZCltb3VzZVVw
OihXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRp
bmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAv
LyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5p
bmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZl
bnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBj
b2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2
ZW50KS5hdXRvcmVsZWFzZSgpOwogI2VuZGlmCiAKICAgICBbc2VsZiBfc2V0TW91c2VEb3duRXZl
bnQ6bmlsXTsKQEAgLTQ5MzksNyArNDkzOSw3IEBAIC0gKHZvaWQpa2V5RG93bjooV2ViRXZlbnQg
KilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMg
ZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcg
YSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVu
IGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZy
b20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBb
W2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3Jl
bGVhc2UoKTsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiBzZWxmUHJvdGVj
dG9yID0gc2VsZjsKQEAgLTQ5ODIsNyArNDk4Miw3IEBAIC0gKHZvaWQpa2V5VXA6KFdlYkV2ZW50
ICopZXZlbnQKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlz
IGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5n
IGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhl
biBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBm
cm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAg
W1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9y
ZWxlYXNlKCk7CiAjZW5kaWYKIAogICAgIEJPT0wgZXZlbnRXYXNTZW50VG9XZWJDb3JlID0gKF9w
cml2YXRlLT5rZXlEb3duRXZlbnQgPT0gZXZlbnQpOwpAQCAtNTAwMiw3ICs1MDAyLDcgQEAgLSAo
dm9pZClmbGFnc0NoYW5nZWQ6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFu
Y2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQg
bG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUg
b2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3Vy
cmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdl
YktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJldGFpblB0cjxXZWJI
VE1MVmlldz4gc2VsZlByb3RlY3RvciA9IHNlbGY7CiAKQEAgLTUwOTcsNyArNTA5Nyw3IEBAIC0g
KE5TRGljdGlvbmFyeSAqKV9mb250QXR0cmlidXRlc0Zyb21Gb250UGFzdGVib2FyZAogICAgIGlm
IChkYXRhID09IG5pbCB8fCBbZGF0YSBsZW5ndGhdID09IDApCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgLy8gTlNUZXh0VmlldyBkb2VzIHNvbWV0aGluZyBtb3JlIGVmZmljaWVudCBieSBwYXJz
aW5nIHRoZSBhdHRyaWJ1dGVzIG9ubHksIGJ1dCB0aGF0J3Mgbm90IGF2YWlsYWJsZSBpbiBBUEku
Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdKTsKICAgICBpZiAo
c3RyaW5nID09IG5pbCB8fCBbc3RyaW5nIGxlbmd0aF0gPT0gMCkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICByZXR1cm4gW3N0cmluZyBmb250QXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgMSldOwpAQCAtNTI2MCw3ICs1MjYwLDcgQEAgLSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVu
dDooTlNFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRp
bmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAv
LyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5p
bmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZl
bnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBj
b2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2
ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgQk9PTCBldmVudFdhc1NlbnRUb1dlYkNvcmUgPSAo
X3ByaXZhdGUtPmtleURvd25FdmVudCA9PSBldmVudCk7CiAgICAgQk9PTCByZXQgPSBOTzsKQEAg
LTYzMTYsNyArNjMxNiw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXRleHRTdG9yYWdlCiAg
ICAgTE9HKFRleHRJbnB1dCwgInRleHRTdG9yYWdlIC0+IFwiJUBcIiIsIHJlc3VsdCA/IFtyZXN1
bHQgc3RyaW5nXSA6IEAiIik7CiAgICAgCiAgICAgLy8gV2UgaGF2ZSB0byByZXR1cm4gYW4gZW1w
dHkgc3RyaW5nIHJhdGhlciB0aGFuIG51bGwgdG8gcHJldmVudCBUU00gZnJvbSBjYWxsaW5nIC1z
dHJpbmcKLSAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDogW1tbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpAQCAtNjk2Myw5ICs2OTYzLDkgQEAgLSAo
TlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdAogLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRUeXBlc0Zv
clNlbGVjdGlvbgogewogICAgIGlmIChbc2VsZiBfY2FuU21hcnRDb3B5T3JEZWxldGVdKSB7Ci0g
ICAgICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlcyA9IFtbW1tzZWxmIGNsYXNzXSBfc2VsZWN0aW9u
UGFzdGVib2FyZFR5cGVzXSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRv
IHR5cGVzID0gYWRvcHROUyhbW1tzZWxmIGNsYXNzXSBfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVz
XSBtdXRhYmxlQ29weV0pOwogICAgICAgICBbdHlwZXMgYWRkT2JqZWN0OldlYlNtYXJ0UGFzdGVQ
Ym9hcmRUeXBlXTsKLSAgICAgICAgcmV0dXJuIHR5cGVzOworICAgICAgICByZXR1cm4gdHlwZXMu
YXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgcmV0dXJuIFtbc2VsZiBjbGFzc10gX3NlbGVjdGlv
blBhc3RlYm9hcmRUeXBlc107CiB9CkBAIC03MDAyLDcgKzcwMDIsNyBAQCAtIChOU1N0cmluZyAq
KXN0cmluZwogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopX2xlZ2FjeUF0dHJpYnV0ZWRTdHJpbmdG
cm9tOihET01Ob2RlICopc3RhcnRDb250YWluZXIgb2Zmc2V0OihpbnQpc3RhcnRPZmZzZXQgdG86
KERPTU5vZGUgKillbmRDb250YWluZXIgb2Zmc2V0OihpbnQpZW5kT2Zmc2V0CiB7CiAgICAgaWYg
KCFzdGFydENvbnRhaW5lciB8fCAhZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gW1tbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2Uo
KTsKICAgICByZXR1cm4gYXR0cmlidXRlZFN0cmluZyhXZWJDb3JlOjpTaW1wbGVSYW5nZSB7IHsg
KmNvcmUoc3RhcnRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQp
IH0sCiAgICAgICAgIHsgKmNvcmUoZW5kQ29udGFpbmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGVuZE9mZnNldCkgfSB9KS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTcwMTEsNyArNzAx
MSw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmcKIHsKICAgICBh
dXRvIGRvY3VtZW50ID0gY29yZShbW3NlbGYgX2ZyYW1lXSBET01Eb2N1bWVudF0pOwogICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIGF1dG8gcmFuZ2UgPSBt
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmRvY3VtZW50KTsKICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBhdHRyaWJ1dGVkU3RyaW5nKHJhbmdlKS5zdHJpbmcpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQuYXV0b3JlbGVhc2UoKTsKQEAgLTcwMjIsMTAgKzcwMjIsMTAgQEAgLSAoTlNBdHRyaWJ1
dGVkU3RyaW5nICopc2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nCiB7CiAgICAgYXV0byBmcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFtb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pLmF1dG9yZWxl
YXNlKCk7CiAgICAgYXV0byByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5m
aXJzdFJhbmdlKCk7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFtbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAg
ICAgaWYgKGF1dG8gcmVzdWx0ID0gYXR0cmlidXRlZFN0cmluZygqcmFuZ2UpLnN0cmluZykKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogICAgIHJldHVybiBlZGl0aW5nQXR0
cmlidXRlZFN0cmluZygqcmFuZ2UpLnN0cmluZy5hdXRvcmVsZWFzZSgpOwpAQCAtNzA2Nyw3ICs3
MDY3LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQg
YWxsb3dTaGFkb3dDb250ZW50OihCT09MKWFsbG93U2gKICAgICBPcHRpb25TZXQ8SGl0VGVzdFJl
cXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29u
dGVudCB9OwogICAgIGlmICghYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICBoaXRUeXBlLmFk
ZChIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKLSAgICBy
ZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3Vs
dDpjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50
IHsgcG9pbnQgfSwgaGl0VHlwZSldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhb
W1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZy
YW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCB7IHBvaW50
IH0sIGhpdFR5cGUpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVSW50ZWdlciljb3VudE1h
dGNoZXNGb3JUZXh0OihOU1N0cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJh
bmdlIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnMgbGltaXQ6KE5TVUludGVnZXIpbGlt
aXQgbWFya01hdGNoZXM6KEJPT0wpbWFya01hdGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbQppbmRleCA1M2RmNGNiYmExMWRmNWM5MmIyYTE3NDBiYTg5MjgwYjhiMGFmMzM1Li5mOWE5
ZTQ2YzkzNTg2YTg0YTZlMTc0MjlmNGI1NDcwY2I5ZWRlNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tCkBAIC0yNzAsNyArMjcwLDcgQEAgLSAodm9pZClpbW1lZGlhdGVBY3Rpb25S
ZWNvZ25pemVyRGlkQ29tcGxldGVBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVIK
IC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5p
bWF0aW9uQ29udHJvbGxlcgogewogICAgIGlmIChfY29udGVudFByZXZlbnRzRGVmYXVsdCkKLSAg
ICAgICAgcmV0dXJuIFtbW1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBbmltYXRpb25Db250cm9sbGVy
IGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBTdHJpbmcgYWJzb2x1dGVVUkxTdHJpbmcg
PSBbdXJsIGFic29sdXRlU3RyaW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW0KaW5kZXggZDFmZjgzNWI5OTUxMTNlMjQ3YTlmNzBk
NDMzNTlmODc3MmMxNmY0OS4uMjZiMTEyZWJmYTAxODI2MTU1YTQwZjExMDQ4YjQ2MWFiNGEyNjQ1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOb3RpZmlj
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOb3RpZmlj
YXRpb24ubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCAtIChOU1N0cmluZyAqKWRpcgogLSAoV2ViU2Vj
dXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBy
ZXR1cm4gW1tbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0
eU9yaWdpbjpjb3JlKHNlbGYpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3Jp
Z2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29yZShzZWxmKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpXSkuYXV0b3JlbGVhc2UoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGIwODRiZDMwMTVhNjA1MzIzN2U2ZDE3ZjIw
N2E2MDg3YzUwMDc5NzUuLmY3M2FlOWEwZDAwNmQyMDZjYzE2ZDI4OWM1MGU3ZTE5ZmEwNGJiYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAg
LTg4MywxMyArODgzLDEzIEBAIC0gKE5TSW1hZ2UgKilzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFj
a1RleHQ6KEJPT0wpZm9yY2VCbGFja1RleHQKICAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRk
QXR0cmlidXRlOk5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSB2YWx1ZTpbTlNDb2xvciBj
b2xvcldpdGhEZXZpY2VXaGl0ZTowLjBmIGFscGhhOjEuMGZdIHJhbmdlOndob2xlU3RyaW5nUmFu
Z2VdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVuZEVkaXRpbmddOwogICAgIAotICAgIE5TSW1h
Z2UqIHNlbGVjdGlvbkltYWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOltzZWxm
IHNlbGVjdGlvblJlY3RdLnNpemVdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlbGVjdGlvbklt
YWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpbc2VsZiBzZWxlY3Rp
b25SZWN0XS5zaXplXSk7CiAgICAgCiAgICAgW3NlbGVjdGlvbkltYWdlIGxvY2tGb2N1c107CiAg
ICAgW2F0dHJpYnV0ZWRTdHJpbmcgZHJhd0F0UG9pbnQ6TlNaZXJvUG9pbnRdOwogICAgIFtzZWxl
Y3Rpb25JbWFnZSB1bmxvY2tGb2N1c107CiAKLSAgICByZXR1cm4gc2VsZWN0aW9uSW1hZ2U7Cisg
ICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TUmVjdClz
ZWxlY3Rpb25JbWFnZVJlY3QKQEAgLTEzMzMsNyArMTMzMyw3IEBAIC0gKE5TQXR0cmlidXRlZFN0
cmluZyAqKV9zY2FsZWRBdHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKil1bnNj
YWxlZEF0CiAgICAgaWYgKHNjYWxlRmFjdG9yID09IDEuMCkKICAgICAgICAgcmV0dXJuIHVuc2Nh
bGVkQXR0cmlidXRlZFN0cmluZzsKICAgICAKLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
ICpyZXN1bHQgPSBbW3Vuc2NhbGVkQXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weV0gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbdW5zY2FsZWRBdHRyaWJ1dGVkU3Ry
aW5nIG11dGFibGVDb3B5XSk7CiAgICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFtyZXN1bHQgbGVu
Z3RoXTsKICAgICBOU1JhbmdlIGVmZmVjdGl2ZVJhbmdlID0gTlNNYWtlUmFuZ2UoMCwwKTsKICAg
ICAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9zY2FsZWRB
dHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKil1bnNjYWxlZEF0CiAgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgY2FuJ3Qgc2NhbGUgdGhlIGZvbnQgaWYgd2UgZG9uJ3Qga25vdyB3
aGF0IGl0IGlzLiBXZSBzaG91bGQgYWx3YXlzIGtub3cgd2hhdCBpdCBpcywKICAgICAgICAgICAg
IC8vIGJ1dCBzb21ldGltZXMgZG9uJ3QgZHVlIHRvIFBERktpdCBpc3N1ZSA1MDg5NDExLiBXaGVu
IHRoYXQncyBhZGRyZXNzZWQsIHdlIGNhbiByZW1vdmUgdGhpcwogICAgICAgICAgICAgLy8gZWFy
bHkgY29udGludWUuCi0gICAgICAgICAgICBMT0dfRVJST1IoIm5vIGZvbnQgYXR0cmlidXRlIGZv
dW5kIGluIHJhbmdlICVAIGZvciBhdHRyaWJ1dGVkIHN0cmluZyBcIiVAXCIgb24gcGFnZSAlQCAo
c2VlIHJhZGFyIDUwODk0MTEpIiwgTlNTdHJpbmdGcm9tUmFuZ2UoZWZmZWN0aXZlUmFuZ2UpLCBy
ZXN1bHQsIFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdKTsKKyAgICAgICAgICAgIExPR19FUlJP
Uigibm8gZm9udCBhdHRyaWJ1dGUgZm91bmQgaW4gcmFuZ2UgJUAgZm9yIGF0dHJpYnV0ZWQgc3Ry
aW5nIFwiJUBcIiBvbiBwYWdlICVAIChzZWUgcmFkYXIgNTA4OTQxMSkiLCBOU1N0cmluZ0Zyb21S
YW5nZShlZmZlY3RpdmVSYW5nZSksIHJlc3VsdC5nZXQoKSwgW1tkYXRhU291cmNlIHJlcXVlc3Rd
IFVSTF0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0x
MzU0LDcgKzEzNTQsNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfc2NhbGVkQXR0cmlidXRl
ZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopdW5zY2FsZWRBdAogICAgIH0KICAgICBbcmVz
dWx0IGVuZEVkaXRpbmddOwogICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJl
c3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9zZXRUZXh0TWF0Y2hlczooTlNBcnJh
eSAqKWFycmF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQppbmRleCBlZjEwOTg2ZGE4NzUzYWIzMTA5ZTBhZjE2MjFiMzAxMmY0ZTllNmE2Li5hYjdl
MmM1NTBjZGMyNTY1N2ZkYmE0M2Y2YmM2NDlkMjZmZGQ3NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTMwMiw3ICszMDIsNyBAQCAt
IChpZClfaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgfQogCi0gICAgYXV0byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjb3B5RGF0YSA/IFtbZGF0YSBjb3B5XSBhdXRvcmVsZWFzZV0g
OiBkYXRhKSwgVVJMLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVOYW1lLCByZXNw
b25zZSk7CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjb3B5RGF0YSA/IGFkb3B0TlMoW2RhdGEgY29weV0pLmF1dG9y
ZWxlYXNlKCkgOiBkYXRhKSwgVVJMLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVO
YW1lLCByZXNwb25zZSk7CiAgICAgaWYgKCFjb3JlUmVzb3VyY2UpIHsKICAgICAgICAgW3NlbGYg
cmVsZWFzZV07CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zMzgsMTIgKzMzOCwxMiBAQCAtIChO
U1N0cmluZyAqKV9zdWdnZXN0ZWRGaWxlbmFtZQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
LSAoTlNGaWxlV3JhcHBlciAqKV9maWxlV3JhcHBlclJlcHJlc2VudGF0aW9uCiB7Ci0gICAgTlNG
aWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpbc2VsZiBkYXRhXV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6W3NlbGYgZGF0YV1dKTsKICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbc2VsZiBf
c3VnZ2VzdGVkRmlsZW5hbWVdOwogICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5n
dGhdKQogICAgICAgICBmaWxlbmFtZSA9IFtbc2VsZiBVUkxdIF93ZWJraXRfc3VnZ2VzdGVkRmls
ZW5hbWVXaXRoTUlNRVR5cGU6W3NlbGYgTUlNRVR5cGVdXTsKICAgICBbd3JhcHBlciBzZXRQcmVm
ZXJyZWRGaWxlbmFtZTpmaWxlbmFtZV07Ci0gICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJu
IHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KICNlbmRpZgogCkBAIC0zNTQsNyArMzU0LDcgQEAg
LSAoTlNVUkxSZXNwb25zZSAqKV9yZXNwb25zZQogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
ID0gbmlsOwogICAgIGlmIChfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXNwb25z
ZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwot
ICAgIHJldHVybiByZXNwb25zZSA/IHJlc3BvbnNlIDogW1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOyAgICAgICAgCisgICAgcmV0dXJuIHJlc3BvbnNlID8gcmVzcG9u
c2UgOiBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdFdvcmxkLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5tbQppbmRleCAxMTgwODAyOWY2Njc1YTAw
YzRiZjBjZmFmNjJlMTkwNjdkNTJlOTNhLi4wYWI0OTA0MWE2ZWZmMTdlMGRjZGNkNzZjMjMyOGQz
OGExNmI2M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlNjcmlwdFdvcmxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0V29ybGQubW0KQEAgLTkyLDcgKzkyLDcgQEAgKyAoV2ViU2NyaXB0V29ybGQgKilzdGFu
ZGFyZFdvcmxkCiAKICsgKFdlYlNjcmlwdFdvcmxkICopd29ybGQKIHsKLSAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2Vs
ZiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFdlYlNjcmlwdFdvcmxkICop
c2NyaXB0V29ybGRGb3JHbG9iYWxDb250ZXh0OihKU0dsb2JhbENvbnRleHRSZWYpY29udGV4dApA
QCAtMTI0LDcgKzEyNCw3IEBAICsgKFdlYlNjcmlwdFdvcmxkICopZmluZE9yQ3JlYXRlV29ybGQ6
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpd29ybGQKICAgICBpZiAoV2ViU2NyaXB0V29ybGQg
KmV4aXN0aW5nV29ybGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkKICAgICAgICAgcmV0dXJu
IGV4aXN0aW5nV29ybGQ7CiAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhXb3Js
ZDp3b3JsZF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxvY10g
aW5pdFdpdGhXb3JsZDp3b3JsZF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbQppbmRleCBhMGRjMmI4ZGE5ZWZiYjY4YTI4ZmZmMzVhMzFkOTUy
NWEyNzJiNDMzLi4yYjE4ZjY5Y2MwMTNkNzg4NjE3YjkyZTA2MWVkODcxY2NiYjgyZGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAoaWQpaW5p
dAogICAgIF9wbGF5YmFja0ludGVyZmFjZSA9IFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0OjpjcmVhdGUoKl9wbGF5YmFja01vZGVsKTsKICAgICBfY29udGVudE92ZXJsYXkg
PSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKICAg
ICBfY29udGVudE92ZXJsYXkuZ2V0KCkubGF5ZXJDb250ZW50c1JlZHJhd1BvbGljeSA9IE5TVmll
d0xheWVyQ29udGVudHNSZWRyYXdOZXZlcjsKLSAgICBfY29udGVudE92ZXJsYXkuZ2V0KCkubGF5
ZXIgPSBbW1tXZWJWaWRlb0Z1bGxzY3JlZW5PdmVybGF5TGF5ZXIgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICBfY29udGVudE92ZXJsYXkuZ2V0KCkubGF5ZXIgPSBhZG9wdE5TKFtbV2Vi
VmlkZW9GdWxsc2NyZWVuT3ZlcmxheUxheWVyIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsK
ICAgICBbX2NvbnRlbnRPdmVybGF5IHNldFdhbnRzTGF5ZXI6WUVTXTsKICAgICBbX2NvbnRlbnRP
dmVybGF5IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUpXTsKICAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxM2UxZjhiZTliNTlhYTZhM2VjODBi
ZDQxMjJiYTQ2NzY0Yjg3NGZhLi44M2ZjNTUwZGEwYTYzOWZjOTUzNjllNDkxZWY3MDU2MjYxY2Ix
NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0y
NzMwLDExICsyNzMwLDExIEBAIC0gKE5TTWVudSAqKV9tZW51Rm9yRWxlbWVudDooTlNEaWN0aW9u
YXJ5ICopZWxlbWVudCBkZWZhdWx0SXRlbXM6KE5TQXJyYXkgKilpdGVtCiAgICAgaWYgKCFjb3Vu
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TTWVudSAqbWVudSA9IFtbTlNNZW51IGFs
bG9jXSBpbml0XTsKKyAgICBhdXRvIG1lbnUgPSBhZG9wdE5TKFtbTlNNZW51IGFsbG9jXSBpbml0
XSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIFtt
ZW51IGFkZEl0ZW06W21lbnVJdGVtcyBvYmplY3RBdEluZGV4OmldXTsKIAotICAgIHJldHVybiBb
bWVudSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIG1lbnUuYXV0b3JlbGVhc2UoKTsKIH0KICNl
bmRpZgogCkBAIC0zMjE4LDcgKzMyMTgsNyBAQCArICh2b2lkKV9yZWdpc3RlclZpZXdDbGFzczoo
Q2xhc3Mpdmlld0NsYXNzIHJlcHJlc2VudGF0aW9uQ2xhc3M6KENsYXNzKXJlcHJlc2VudAogICAg
IGlmIChzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldCA9PSBuaWwpIHsKICAgICAgICAgc2No
ZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07
CiAgICAgfQotICAgIFtzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldCBhZGRPYmplY3Q6W1tb
VVJMU2NoZW1lIGxvd2VyY2FzZVN0cmluZ10gY29weV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbc2No
ZW1lc1dpdGhSZXByZXNlbnRhdGlvbnNTZXQgYWRkT2JqZWN0OmFkb3B0TlMoW1tVUkxTY2hlbWUg
bG93ZXJjYXNlU3RyaW5nXSBjb3B5XSkuYXV0b3JlbGVhc2UoKV07CiB9CiAKICsgKE5TU3RyaW5n
ICopX2dlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKVVSTFNjaGVtZQpA
QCAtMzYyNiwxMCArMzYyNiw5IEBAIC0gKE5TVVJMICopX2Rpc3BsYXlVUkwKICAgICBXZWJEYXRh
U291cmNlICpkYXRhU291cmNlID0gW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV07CiAgICAg
aWYgKCFkYXRhU291cmNlKQogICAgICAgICBkYXRhU291cmNlID0gW2ZyYW1lIGRhdGFTb3VyY2Vd
OwotICAgIE5TVVJMICp1bnJlYWNoYWJsZVVSTCA9IFtkYXRhU291cmNlIHVucmVhY2hhYmxlVVJM
XTsKLSAgICBOU1VSTCAqVVJMID0gdW5yZWFjaGFibGVVUkwgIT0gbmlsID8gdW5yZWFjaGFibGVV
UkwgOiBbW2RhdGFTb3VyY2UgcmVxdWVzdF0gVVJMXTsKLSAgICBbW1VSTCByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICByZXR1cm4gVVJMOworICAgIGF1dG8gdW5yZWFjaGFibGVVUkwgPSByZXRh
aW5QdHIoW2RhdGFTb3VyY2UgdW5yZWFjaGFibGVVUkxdKTsKKyAgICBhdXRvIHVybCA9IHVucmVh
Y2hhYmxlVVJMICE9IG5pbCA/IHVucmVhY2hhYmxlVVJMIDogcmV0YWluUHRyKFtbZGF0YVNvdXJj
ZSByZXF1ZXN0XSBVUkxdKTsKKyAgICByZXR1cm4gdXJsLmF1dG9yZWxlYXNlKCk7CiB9CiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIApAQCAtNDA5MCw3ICs0MDg5LDcgQEAgLSAoV2Vi
VGV4dEl0ZXJhdG9yICopdGV4dEl0ZXJhdG9yRm9yUmVjdDooTlNSZWN0KXJlY3QKICAgICBhdXRv
IGludFJlY3QgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogICAgIGF1dG8gcmFu
Z2UgPSBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKGNvcmVGcmFtZS0+dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQoaW50UmVjdC5taW5YTWluWUNvcm5lcigpKSwKICAgICAgICAgY29yZUZyYW1lLT52
aXNpYmxlUG9zaXRpb25Gb3JQb2ludChpbnRSZWN0Lm1heFhNYXhZQ29ybmVyKCkpKS50b05vcm1h
bGl6ZWRSYW5nZSgpOwotICAgIHJldHVybiBbW1tXZWJUZXh0SXRlcmF0b3IgYWxsb2NdIGluaXRX
aXRoUmFuZ2U6a2l0KHJhbmdlKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtb
V2ViVGV4dEl0ZXJhdG9yIGFsbG9jXSBpbml0V2l0aFJhbmdlOmtpdChyYW5nZSldKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01MjYyLDE0ICs1MjYx
LDE0IEBAICsgKE5TQXJyYXkgKilNSU1FVHlwZXNTaG93bkFzSFRNTAogICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKnZpZXdUeXBlcyA9IFtXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VU
eXBlT21pc3Npb246WUVTXTsKICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbdmlld1R5
cGVzIGtleUVudW1lcmF0b3JdOwogICAgIGlkIGtleTsKLSAgICBOU011dGFibGVBcnJheSAqYXJy
YXkgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAg
IHdoaWxlICgoa2V5ID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7CiAgICAgICAgIGlmIChb
dmlld1R5cGVzIG9iamVjdEZvcktleTprZXldID09IFtXZWJIVE1MVmlldyBjbGFzc10pCiAgICAg
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmtleV07CiAgICAgfQogCi0gICAgcmV0dXJuIGFycmF5
OworICAgIHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgpOwogfQogCiArICh2b2lkKXNldE1JTUVU
eXBlc1Nob3duQXNIVE1MOihOU0FycmF5ICopTUlNRVR5cGVzCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTcyMjcxYjEwYTY5OTYzYTk4YWFiNjA5
YzI1YzY3NTg2OGVkNmQwNS4uNWU3NTMxMzI0MmEwN2M0ZTE5YzRmOWFkN2Q5NDdhNjM2OGE1NmQ3
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxMyBAQAorMjAyMS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0g
aW4gV2ViS2l0IGV2ZW4gZnVydGhlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyMDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNl
XSBpbiBXZWJLaXQgZnVydGhlciBieSB1c2luZyBSZXRhaW5QdHIuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbToKKyAgICAgICAgKC1b
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAg
IChjcmVhdGVKU1N0cmluZ1JlZik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6
CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKGR1bXApOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKCtb
U3ludGhldGljVG91Y2ggdG91Y2hXaXRoTG9jYXRpb246cGhhc2U6aWRlbnRpZmllcjpdKToKKyAg
ICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6Cisg
ICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdhdGUubW06CisgICAgICAgIChk
aXNwb3NpdGlvblR5cGVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jl
c291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGly
ZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpjcmVhdGVX
ZWJWaWV3V2l0aFJlcXVlc3Q6XSk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNl
cmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5tbToKKyAgICAgICAgKCtbRXZlbnRT
ZXJpYWxpemVyIGRpY3Rpb25hcnlGb3JFdmVudDpyZWxhdGl2ZVRvVGltZTpdKToKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW06CisgICAg
ICAgICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIgc2V0UmVzdWx0c0Zyb21KU1ZhbHVlOmluQ29u
dGV4dDpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pT
UnVuTG9vcFRpbWVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dHJpZ2dlckdDKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYkNvcmVOU1VSTFNlc3Npb25UZXN0
OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudUltZ1dpdGhWaWRl
by5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5k
bGVGb3JtRGVsZWdhdGVQbHVnSW4ubW06CisgICAgICAgICgtW0J1bmRsZUZvcm1EZWxlZ2F0ZVBs
dWdJbiBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjp3aWxsQmVnaW5J
bnB1dFNlc3Npb25Gb3JFbGVtZW50OmluRnJhbWU6dXNlcklzSW50ZXJhY3Rpbmc6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW06CisgICAgICAg
IChyZWFkTWFya3VwRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24ubW06CisgICAgICAgICgtW0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbkRlbGVnYXRlIHdl
YlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGV4dE1lbnVzLm1tOgorICAgICAgICAoLVtUZXN0Q29udGV4dE1l
bnVVSURlbGVnYXRlIHdlYlZpZXc6Y29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdENvbnRleHRNZW51QVBJQmVmb3Jl
U1BJVUlEZWxlZ2F0ZSB3ZWJWaWV3OmNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RDb250ZXh0TWVudVN1Z2dlc3Rl
ZEFjdGlvbnNVSURlbGVnYXRlIHdlYlZpZXc6Y29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxl
bWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvcHlIVE1MLm1tOgorICAgICAgICAocmVhZEhUTUxTdHJpbmdGcm9tUGFz
dGVib2FyZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZp
Y2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNwbGF5TmFtZS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3V2l0
aERvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGllcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjptdXRhdGVGaWxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0V2ZW50QXR0cmlidXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW06CisgICAgICAgICgtW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFy
dFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW06CisgICAgICAgIChnZXROZXh0TWVzc2FnZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW06CisgICAgICAgIChnZXROZXh0TWVz
c2FnZSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbToKKyAg
ICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZp
Z2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3ND
cmFzaE5vblBlcnNpc3RlbnREYXRhU3RvcmUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb3h5Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3VGltZW91dC5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0p
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5n
Lm1tOgorICAgICAgICAoK1tUZXN0U2VydmljZUxvb2t1cFJlc3VsdCByZXN1bHRXaXRoUHJvdmlk
ZXI6cGhpc2hpbmc6bWFsd2FyZTp1bndhbnRlZFNvZnR3YXJlOl0pOgorICAgICAgICAoK1tUZXN0
TG9va3VwUmVzdWx0IHJlc3VsdFdpdGhSZXN1bHRzOl0pOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW06CisgICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczp1c2VySW5mbzpkZWNpc2lvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9y
YWdlUXVvdGEubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
TFNEZXByZWNhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VXZWJWaWV3V2l0
aCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bVUlUZXN0RGVs
ZWdhdGUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW01vZGFsRGVs
ZWdhdGUgd2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlv
bkFjdGlvbjp3aW5kb3dGZWF0dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKHdlYlZpZXdG
b3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KToKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAoLVtBc3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250
ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpyZXBseUhhbmRsZXI6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxk
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKHBsYXRmb3JtQ29weVJpY2hU
ZXh0V2l0aEltYWdlKToKKyAgICAgICAgKHBsYXRmb3JtSW1hZ2VXaXRoRGF0YSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbToK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBfd2ViVmll
dzpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6XSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW06CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxl
ci0xLm1tOgorICAgICAgICAoLVtUYXNrU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2No
ZW1lVGFzazpdKToKKyAgICAgICAgKC1bU3luY0Vycm9yU2NoZW1lIHdlYlZpZXc6c3RhcnRVUkxT
Y2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtGcmFtZVNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFy
dFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFT
Y3JpcHQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
R0xQb2xpY3kubW06CisgICAgICAgICgtW1dlYkdMVGVzdERlbGVnYXRlIHdlYlZpZXc6c3RhcnRV
UkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tOgorICAgICAgICAoZ2V0TmV4dE1lc3NhZ2Up
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAoZ2V0TmV4dE1lc3NhZ2UpOgorICAgICAgICAo
cnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tOgor
ICAgICAgICAoLVtDb250ZW50QmxvY2tpbmdXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSB3ZWJWaWV3
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJlZmVyZW5jZXM6ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bQXN5bmNBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtUZXN0U2NoZW1lSGFuZGxlciB3ZWJWaWV3
OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKHJlc3BvbmQpOgorICAgICAgICAoLVtD
dXN0b21IZWFkZXJGaWVsZHNEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246cHJlZmVyZW5jZXM6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtDdXN0
b21Vc2VyQWdlbnREZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bQ3VzdG9tSmF2YVNj
cmlwdFVzZXJBZ2VudERlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246dXNlckluZm86ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtDdXN0b21OYXZp
Z2F0b3JQbGF0Zm9ybURlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246dXNlckluZm86ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXZWJzaXRlUG9s
aWNpZXNEZXZpY2VPcmllbnRhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246cHJlZmVyZW5jZXM6dXNlckluZm86ZGVjaXNpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtQb3BVcFBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYnNpdGVQ
b2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246cHJlZmVyZW5jZXM6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaU9TTW91c2VTdXBwb3J0Lm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kv
aW9zL0RhdGVUaW1lSW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3RzLm1tOgorICAgICAgICAoY2VsbEZv
clJvd0F0SW5kZXhQYXRoKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rp
b25TaGVldFRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3dpenpsZWRSZXNpemFi
bGVTbmFwc2hvdFZpZXdGcm9tUmVjdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5tbToKKyAg
ICAgICAgKC1bSW5zcGVjdG9yQmFyQ29udHJvbGxlciBjb252ZXJ0QXR0cmlidXRlczpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5t
bToKKyAgICAgICAgKC1bSmF2YXNjcmlwdFVSTE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmNy
ZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpmb3JOYXZpZ2F0aW9uQWN0aW9uOndpbmRvd0Zl
YXR1cmVzOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xlZ2FjeURyYWdB
bmREcm9wVGVzdHMubW06CisgICAgICAgICgrW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBs
aXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpn
ZXRUZXN0SW1hZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbToK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZp
ZXdJY29uTG9hZGluZy5tbToKKyAgICAgICAgKGltYWdlRnJvbURhdGEpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tOgorICAgICAgICAoYWRkaXRpb25hbFJl
c3BvbnNlSGVhZGVycyk6CisgICAgICAgICgrW1Rlc3RQcm90b2NvbCBhZGRpdGlvbmFsUmVzcG9u
c2VIZWFkZXJzXSk6CisgICAgICAgICgrW1Rlc3RQcm90b2NvbCBzZXRBZGRpdGlvbmFsUmVzcG9u
c2VIZWFkZXJzOl0pOgorICAgICAgICAoLVtUZXN0UHJvdG9jb2wgc3RhcnRMb2FkaW5nXSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmVy
cm9yOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAg
ICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5k
RHJvcFNpbXVsYXRvcklPUy5tbToKKyAgICAgICAgKC1bTW9ja0Ryb3BTZXNzaW9uIGluaXRXaXRo
UHJvdmlkZXJzOmxvY2F0aW9uOndpbmRvdzphbGxvd01vdmU6XSk6CisgICAgICAgICgtW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0ZyYW1lOmNvbmZpZ3VyYXRpb246XSk6Cisg
ICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF93ZWJWaWV3OndpbGxVcGRhdGVEcm9wUHJv
cG9zYWxUb1Byb3Bvc2FsOmZvclNlc3Npb246XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9t
YWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW06CisgICAgICAgIChkZWZhdWx0RXh0ZXJuYWxE
cmFnSW1hZ2UpOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZp
ZXdGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBydW5Gcm9tOnRvOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNyZWF0
ZUpTU3RyaW5nUmVmKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUlu
aXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBzZW5kRXZlbnRT
dHJlYW06Y29tcGxldGlvbkJsb2NrOl0pOgorCiAyMDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXIgZm9yIFdlYlZpZXcg
b3duZXJzaGlwIGluIER1bXBSZW5kZXJUcmVlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9EdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3Lm1tCmluZGV4IGUxMDYyZmFmYjc0N2Zi
NDdjOGMxMzM5ZDIwYjcyZjQwNzlkNzI0YjIuLmM2Njk4ZGM5ZGVmNDBiMWVkYmJlNjZiZmUxM2Fi
ZDVkMWEzMjUxOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVu
ZGVyVHJlZUJyb3dzZXJWaWV3Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1w
UmVuZGVyVHJlZUJyb3dzZXJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxXZWJL
aXQvV2ViVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0RGVsZWdhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBpbnRlcmZhY2UgVUlXZWJCcm93c2VyVmlldyAoV2ViVUlLaXREZWxlZ2F0ZSkKIC0gKEJPT0wp
d2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkU2Nyb2xsVG9Qb2ludDooQ0dQb2ludClw
b2ludCBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKQEAgLTExMyw3ICsxMTQsNyBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIHNlbGYuc2Nyb2xsVmlld0RlbGVnYXRlID0g
W1tbRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Ny
b2xsVmlldzpzZWxmXSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5zY3JvbGxWaWV3RGVsZWdhdGUg
PSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoU2Nyb2xsVmlldzpzZWxmXSkuYXV0b3JlbGVhc2UoKTsKICAgICBzZWxmLmRlbGVnYXRl
ID0gc2VsZi5zY3JvbGxWaWV3RGVsZWdhdGU7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0K
aW5kZXggOTY2ZjQ2NWJmYWIwNzdhZTgyY2VjYjdhMTcyMTRiNDgyZDQ0MDRlOS4uNGI0YTAwNWRj
OTU1ZTU3MTEwYWJiOWNhZmVlYzRmOTI0ZWEzN2QxOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE4MDYsNyAr
MTgwNiw3IEBAIHN0YXRpYyBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY3JlYXRlSlNTdHJpbmdS
ZWYoaWQgc3RyaW5nKQogewogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBpZCBtdXRhYmxlU3RyaW5nID0gW1tbTlNNdXRhYmxlU3RyaW5nIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBtdXRhYmxlU3RyaW5nID0gYWRvcHROUyhbW05TTXV0
YWJsZVN0cmluZyBhbGxvY10gaW5pdF0pOwogICAgIGlkIGF0dHJpYnV0ZXMgPSBbc3RyaW5nIGF0
dHJpYnV0ZXNBdEluZGV4OjAgZWZmZWN0aXZlUmFuZ2U6bmlsXTsKICAgICBpZCBhdHRyaWJ1dGVF
bnVtZXJhdGlvbkJsb2NrID0gXihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICphdHRycywg
TlNSYW5nZSByYW5nZSwgQk9PTCAqc3RvcCkgewogICAgICAgICBCT09MIG1pc3NwZWxsZWQgPSBb
W2F0dHJzIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0
ZV0gYm9vbFZhbHVlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQppbmRleCBkZTk5Yzk4MGYwNmM5MDNlMmFjMTkwNmI0YTllYmRkMjRmMzU0MjRlLi41ZjYxMzZi
MmQyMDI5NTA2NjA4YzJlOGIwMWIzMjhjZWRhMTAwMTg3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC02ODEsNyArNjgxLDcgQEAgV2ViVmlldyAqY3Jl
YXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VS
ZWN0KDAsIDAsIFRlc3RSdW5uZXI6OnZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dmlld0hlaWdodCk7
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6cmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRy
ZWUiXSk7CiAjZWxzZQotICAgIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcgKndlYkJyb3dzZXJW
aWV3ID0gW1tbRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTps
YXlvdXRUZXN0Vmlld3BvcnRSZWN0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJCcm93c2Vy
VmlldyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOmxheW91dFRlc3RWaWV3cG9ydFJlY3RdKTsKICAgICBbd2ViQnJvd3NlclZpZXcgc2V0
SW5wdXRWaWV3T2JleXNET01Gb2N1czpZRVNdOwogICAgIGF1dG8gd2ViVmlldyA9IHJldGFpblB0
cihbd2ViQnJvd3NlclZpZXcgd2ViVmlld10pOwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpA
Im9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKQEAgLTc0NCwyMSArNzQ0LDIxIEBAIFdlYlZp
ZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coKQogCiAgICAgQ0dSZWN0IHVpV2lu
ZG93UmVjdCA9IGxheW91dFRlc3RWaWV3cG9ydFJlY3Q7CiAgICAgdWlXaW5kb3dSZWN0Lm9yaWdp
bi55ICs9IFtVSUFwcCBzdGF0dXNCYXJIZWlnaHRdOwotICAgIFVJV2luZG93ICp1aVdpbmRvdyA9
IFtbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOnVpV2luZG93UmVjdF0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gdWlXaW5kb3cgPSBhZG9wdE5TKFtbVUlXaW5kb3cgYWxsb2NdIGluaXRX
aXRoRnJhbWU6dWlXaW5kb3dSZWN0XSk7CiAKICAgICBhdXRvIHZpZXdDb250cm9sbGVyID0gYWRv
cHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbdWlXaW5kb3cgc2V0
Um9vdFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyLmdldCgpXTsKIAogICAgIC8vIFRoZSBV
SVdpbmRvdyBhbmQgVUlXZWJCcm93c2VyVmlldyBhcmUgcmVsZWFzZWQgd2hlbiB0aGUgRHVtcFJl
bmRlclRyZWVXaW5kb3cgaXMgY2xvc2VkLgotICAgIGRydFdpbmRvdy51aVdpbmRvdyA9IHVpV2lu
ZG93OwotICAgIGRydFdpbmRvdy5icm93c2VyVmlldyA9IHdlYkJyb3dzZXJWaWV3OworICAgIGRy
dFdpbmRvdy51aVdpbmRvdyA9IHVpV2luZG93LmdldCgpOworICAgIGRydFdpbmRvdy5icm93c2Vy
VmlldyA9IHdlYkJyb3dzZXJWaWV3LmdldCgpOwogCiAgICAgYXV0byBzY3JvbGxWaWV3ID0gYWRv
cHROUyhbW0R1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTps
YXlvdXRUZXN0Vmlld3BvcnRSZWN0XSk7Ci0gICAgW3Njcm9sbFZpZXcgYWRkU3Vidmlldzp3ZWJC
cm93c2VyVmlld107CisgICAgW3Njcm9sbFZpZXcgYWRkU3Vidmlldzp3ZWJCcm93c2VyVmlldy5n
ZXQoKV07CiAKICAgICBbW3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6c2Nyb2xsVmll
dy5nZXQoKV07CiAKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQod2Vi
QnJvd3NlclZpZXcsIHNjcm9sbFZpZXcuZ2V0KCkpOworICAgIGFkanVzdFdlYkRvY3VtZW50Rm9y
U3RhbmRhcmRWaWV3cG9ydCh3ZWJCcm93c2VyVmlldy5nZXQoKSwgc2Nyb2xsVmlldy5nZXQoKSk7
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTQxMyw3ICsxNDEzLDcg
QEAgc3RhdGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV2ViRnJhbWUgKmYpCiAgICAg
fQogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1l
KQorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAq
ZnJhbWUpCiB7CiAgICAgRE9NRG9jdW1lbnQgKmRvY3VtZW50ID0gW2ZyYW1lIERPTURvY3VtZW50
XTsKICAgICBET01FbGVtZW50ICpkb2N1bWVudEVsZW1lbnQgPSBbZG9jdW1lbnQgZG9jdW1lbnRF
bGVtZW50XTsKQEAgLTE0MjEsMTEgKzE0MjEsMTMgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJh
bWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIEAiIjsKIAotICAgIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0ID0gW1tbTlNN
dXRhYmxlU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZVN0cmluZz4gcmVzdWx0OwogCiAgICAgLy8gQWRkIGhlYWRlciBmb3IgYWxsIGJ1dCB0
aGUgbWFpbiBmcmFtZS4KICAgICBpZiAoW2ZyYW1lIHBhcmVudEZyYW1lXSkKICAgICAgICAgcmVz
dWx0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiXG4tLS0tLS0tLVxuRnJh
bWU6ICclQCdcbi0tLS0tLS0tXG4iLCBbZnJhbWUgbmFtZV1dOworICAgIGVsc2UKKyAgICAgICAg
cmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0pOwogCiAgICAg
TlNTdHJpbmcgKmlubmVyVGV4dCA9IFtkb2N1bWVudEVsZW1lbnQgaW5uZXJUZXh0XTsKICAgICAv
LyBXZSB1c2UgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdCgpIHRvIGNvbnZlcnQgaW5u
ZXJUZXh0IHRvIGEgV0sgU3RyaW5nIHNpbmNlCkBAIC0xNDQzLDEzICsxNDQ1LDEzIEBAIHN0YXRp
YyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJhbWUpCiAgICAgICAgIE5T
QXJyYXkgKmtpZHMgPSBbZnJhbWUgY2hpbGRGcmFtZXNdOwogICAgICAgICBpZiAoa2lkcykgewog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFtraWRzIGNvdW50XTsgaSsrKQot
ICAgICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOmR1bXBGcmFtZXNBc1RleHQoW2tp
ZHMgb2JqZWN0QXRJbmRleDppXSldOworICAgICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3Ry
aW5nOmR1bXBGcmFtZXNBc1RleHQoW2tpZHMgb2JqZWN0QXRJbmRleDppXSkuZ2V0KCldOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRy
YWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1Rl
eHQgdGVzdCBvdXRwdXQuCi0gICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpA
IiArXG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNo
IHJhbmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKLSAgICBbcmVzdWx0IHJlcGxh
Y2VPY2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVn
dWxhckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCld
OworICAgIFtyZXN1bHQgcmVwbGFjZU9jY3VycmVuY2VzT2ZTdHJpbmc6QCIgK1xuIiB3aXRoU3Ry
aW5nOkAiXG4iIG9wdGlvbnM6TlNSZWd1bGFyRXhwcmVzc2lvblNlYXJjaCByYW5nZTpOU01ha2VS
YW5nZSgwLCBbcmVzdWx0IGxlbmd0aF0pXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxhckV4cHJlc3Np
b25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3Jlc3VsdCBsZW5ndGhdKV07CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMTYzNSw3ICsxNjM3LDcgQEAgdm9pZCBkdW1wKCkKICAgICBB
U1NFUlQoIWdUZXN0UnVubmVyLT5oYXNQZW5kaW5nV2ViTm90aWZpY2F0aW9uQ2xpY2soKSk7CiAK
ICAgICBpZiAoZHVtcFRyZWUpIHsKLSAgICAgICAgTlNTdHJpbmcgKnJlc3VsdFN0cmluZyA9IG5p
bDsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHRTdHJpbmc7CiAgICAgICAgIE5T
RGF0YSAqcmVzdWx0RGF0YSA9IG5pbDsKICAgICAgICAgTlNTdHJpbmcgKnJlc3VsdE1pbWVUeXBl
ID0gQCJ0ZXh0L3BsYWluIjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlV2luZG93Lm1tCmluZGV4IDEwODJlZmNjZGI2MjUwYzcwNDA0NzBjZTVmODFhZGE5
ZWYyZjA0OTcuLjgxYjg4ZTQ4NmI0MzllYWMyOTNkYzIwOTEzYmUxNWIwNGQ4N2FiMDMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0KQEAg
LTYwLDcgKzYwLDcgQEAgQHN5bnRoZXNpemUgYnJvd3NlclZpZXcgPSBfYnJvd3NlclZpZXc7CiAK
ICsgKE5TQXJyYXkgKilvcGVuV2luZG93cwogewotICAgIHJldHVybiBbWyhOU0FycmF5ICopb3Bl
bldpbmRvd3NSZWYgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFsoTlNB
cnJheSAqKW9wZW5XaW5kb3dzUmVmIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lk
KV9hZGRUb09wZW5XaW5kb3dzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IGM2YjE4ZTczMDNiZWEyY2YxMzY1ZTc1M2RlM2Nh
N2EzMmJmN2EyY2UuLmZiY2I1M2Q4ZDk5ZjM2MWYyYTMwYjAyYmJkYWJlMTcwYWVhYjIxZDQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
Lm1tCkBAIC0xMTksNyArMTE5LDcgQEAgQHN5bnRoZXNpemUgaWRlbnRpZmllciA9IF9pZGVudGlm
aWVyOwogCiArIChpZCl0b3VjaFdpdGhMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiBwaGFzZToo
VUlUb3VjaFBoYXNlKXBoYXNlIGlkZW50aWZpZXI6KHVuc2lnbmVkKWlkZW50aWZpZXIKIHsKLSAg
ICByZXR1cm4gW1tbU3ludGhldGljVG91Y2ggYWxsb2NdIGluaXRXaXRoTG9jYXRpb246bG9jYXRp
b24gcGhhc2U6cGhhc2UgaWRlbnRpZmllcjppZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tTeW50aGV0aWNUb3VjaCBhbGxvY10gaW5pdFdpdGhMb2NhdGlvbjps
b2NhdGlvbiBwaGFzZTpwaGFzZSBpZGVudGlmaWVyOmlkZW50aWZpZXJdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChpZClpbml0V2l0aExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIHBoYXNlOihV
SVRvdWNoUGhhc2UpcGhhc2UgaWRlbnRpZmllcjoodW5zaWduZWQpaWRlbnRpZmllcgpAQCAtNDU2
LDggKzQ1Niw4IEBAIC0gKHZvaWQpYmVnaW5EcmFnV2l0aEZpbGVzOihXZWJTY3JpcHRPYmplY3Qq
KWpzRmlsZVBhdGhzCiAgICAgYXNzZXJ0KFtwYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0Zp
bGVuYW1lc1Bib2FyZFR5cGVdKTsgLy8gc2V0UHJvcGVydHlMaXN0IHdpbGwgc2lsZW50bHkgZmFp
bCBvbiBlcnJvciwgYXNzZXJ0IHRoYXQgaXQgZGlkbid0IGZhaWwKIAogICAgIC8vIFByb3ZpZGUg
YSBzb3VyY2UsIG90aGVyd2lzZSBbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrXSBkZWZhdWx0cyB0byBOU0RyYWdPcGVyYXRpb25Ob25lCi0gICAg
RHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UgKnNvdXJjZSA9IFtbW0R1bXBSZW5kZXJU
cmVlRmlsZURyYWdnaW5nU291cmNlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgZHJh
Z2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJ
bWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJj
ZV07CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dp
bmdTb3VyY2UgYWxsb2NdIGluaXRdKTsKKyAgICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJU
cmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6
ZSBwYXN0ZWJvYXJkOnBib2FyZCBzb3VyY2U6c291cmNlLmdldCgpXTsKICAgICBbW21haW5GcmFt
ZSB3ZWJWaWV3XSBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ2dpbmdJbmZvXTsKIAogICAgIGRyYWdNb2Rl
ID0gTk87IC8vIGRyYWdNb2RlIHNhdmVzIGV2ZW50cyBhbmQgdGhlbiByZXBsYXlzIHRoZW0gbGF0
ZXIuICBXZSBkb24ndCBuZWVkL3dhbnQgdGhhdC4KQEAgLTk1NCw3ICs5NTQsNyBAQCArICh2b2lk
KXJlcGxheVNhdmVkRXZlbnRzCiAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBZRVM7CiAgICAg
d2hpbGUgKFtzYXZlZE1vdXNlRXZlbnRzIGNvdW50XSkgewogICAgICAgICAvLyBpZiBhIGRyYWcg
aXMgaW5pdGlhdGVkLCB0aGUgcmVtYWluaW5nIHNhdmVkIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNo
ZWQgZnJvbSBvdXIgZHJhZ2dpbmcgZGVsZWdhdGUKLSAgICAgICAgTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uID0gW1tbc2F2ZWRNb3VzZUV2ZW50cyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgICAgICBhdXRvIGludm9jYXRpb24gPSByZXRhaW5QdHIoW3NhdmVkTW91
c2VFdmVudHMgb2JqZWN0QXRJbmRleDowXSk7CiAgICAgICAgIFtzYXZlZE1vdXNlRXZlbnRzIHJl
bW92ZU9iamVjdEF0SW5kZXg6MF07CiAgICAgICAgIFtpbnZvY2F0aW9uIGludm9rZV07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tCmluZGV4IDU3ODI1
ZjRhMTU4MmJmMzU5YzU2ODA4MjA1ZmQ0ZjNlNGYwZjU2YzguLjk3YTE3ODc3ZDRkNzk2NTk0Yzhl
OTM3NDk3NDRjMzIyODcwZjIwMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9Qb2xpY3lEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5
RGVsZWdhdGUubW0KQEAgLTEwNiwxMCArMTA2LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXdlYlZpZXcgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3lXaXRoRXJyb3I6KE5TRXJyb3IgKill
CiAKIHN0YXRpYyBOU1N0cmluZyAqZGlzcG9zaXRpb25UeXBlRnJvbUNvbnRlbnREaXNwb3NpdGlv
bkhlYWRlcihOU1N0cmluZyAqaGVhZGVyKQogewotICAgIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0
ID0gW1tbW2hlYWRlciBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCI7Il0gb2JqZWN0QXRJ
bmRleDowXSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHROUyhbW1toZWFkZXIgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiOyJdIG9iamVjdEF0
SW5kZXg6MF0gbXV0YWJsZUNvcHldKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICBDRlN0cmlu
Z1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpcmVzdWx0KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdS
ZWYpcmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKWMgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGU6KE5T
U3RyaW5nICopdHlwZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9h
ZERlbGVnYXRlLm1tCmluZGV4IGUyNDlhYmYwZGY1Mzg0YWY5M2Q2YjdhMGE3YWE5YmJkMDMyYTg2
ZGIuLjUzOWQxNmE4YTBjZmJiYWZhMGUzNDAxZjY0ODM5ZTAyOWJhZjMyOTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTE3NSw3
ICsxNzUsNyBAQCAtKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3Vy
Y2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOUwogICAgIGlmIChkaXNhbGxvd2VkVVJM
cyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJl
Zil1cmwpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bmV3UmVxdWVzdCA9IFtyZXF1ZXN0IG11dGFibGVDb3B5XTsKKyAgICBhdXRvIG5ld1JlcXVlc3Qg
PSBhZG9wdE5TKFtyZXF1ZXN0IG11dGFibGVDb3B5XSk7CiAgICAgY29uc3Qgc2V0PHN0cmluZz4m
IGNsZWFySGVhZGVycyA9IGdUZXN0UnVubmVyLT53aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMo
KTsKICAgICBmb3IgKHNldDxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBoZWFkZXIgPSBjbGVhckhl
YWRlcnMuYmVnaW4oKTsgaGVhZGVyICE9IGNsZWFySGVhZGVycy5lbmQoKTsgKytoZWFkZXIpIHsK
ICAgICAgICAgYXV0byBuc0hlYWRlciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhVVEY4U3RyaW5nOmhlYWRlci0+Y19zdHIoKV0pOwpAQCAtMTg0LDcgKzE4NCw3IEBAIC0oTlNV
UkxSZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcgKil3diByZXNvdXJjZTppZGVudGlmaWVyIHdp
bGxTZW5kUmVxdWVzdDogKE5TCiAgICAgaWYgKGF1dG8qIGRlc3RpbmF0aW9uID0gZ1Rlc3RSdW5u
ZXItPnJlZGlyZWN0aW9uRGVzdGluYXRpb25Gb3JVUkwoW1t1cmwgYWJzb2x1dGVTdHJpbmddIFVU
RjhTdHJpbmddKSkKICAgICAgICAgW25ld1JlcXVlc3Qgc2V0VVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpkZXN0aW5hdGlvbl1dXTsKIAotICAg
IHJldHVybiBbbmV3UmVxdWVzdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIG5ld1JlcXVlc3Qu
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd3YgcmVzb3Vy
Y2U6KGlkKWlkZW50aWZpZXIgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGZyb21EYXRhU291cmNlOihXZWJE
YXRhU291cmNlICopZGF0YVNvdXJjZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5tbSBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMu
bW0KaW5kZXggYmRkMjA3YmQ0MDlmMDRlZTVmMzgyMzE5NGZhMjRlNjMyODg1ODkxNy4uMjFmNzM3
MjY4Yzc4MWM2ZjgzZTQ5MGE5OWY3MzhhMGNjYTMxNGM2YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5t
bQorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZl
bnRTZXJpYWxpemVyTWFjLm1tCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBldmVudElzT2ZHZXN0
dXJlVHlwZXMoQ0dFdmVudFJlZiBldmVudCwgSU9ISURFdmVudFR5cGUgZmlyc3QsIFR5cGVzIC4u
LiByZXMKICAgICBpbnQ2NF90IHZhbHVlID0gQ0dFdmVudEdldEludGVnZXJWYWx1ZUZpZWxkKHJh
d0V2ZW50LCBmaWVsZCk7IFwKICAgICBpbnQ2NF90IHBsYWluVmFsdWUgPSBDR0V2ZW50R2V0SW50
ZWdlclZhbHVlRmllbGQocmF3UGxhaW5FdmVudCwgZmllbGQpOyBcCiAgICAgaWYgKHZhbHVlICE9
IHBsYWluVmFsdWUpIFwKLSAgICAgICAgZGljdFtAI2ZpZWxkXSA9IEAodmFsdWUpOyBcCisgICAg
ICAgIGRpY3QuZ2V0KClbQCNmaWVsZF0gPSBAKHZhbHVlKTsgXAogfSgpOwogCiAjZGVmaW5lIExP
QURfRE9VQkxFX0ZJRUxEX0ZST01fRVZFTlQoZXZlbnRUeXBlRmlsdGVyLCBmaWVsZCkgXApAQCAt
MTY5LDcgKzE2OSw3IEBAIGJvb2wgZXZlbnRJc09mR2VzdHVyZVR5cGVzKENHRXZlbnRSZWYgZXZl
bnQsIElPSElERXZlbnRUeXBlIGZpcnN0LCBUeXBlcyAuLi4gcmVzCiAgICAgaWYgKCFpc25hbih2
YWx1ZSkpIHsgXAogICAgICAgICBkb3VibGUgcGxhaW5WYWx1ZSA9IENHRXZlbnRHZXREb3VibGVW
YWx1ZUZpZWxkKHJhd1BsYWluRXZlbnQsIGZpZWxkKTsgXAogICAgICAgICBpZiAoZmFicyh2YWx1
ZSAtIHBsYWluVmFsdWUpID49IEZMVF9FUFNJTE9OKSBcCi0gICAgICAgICAgICBkaWN0W0AjZmll
bGRdID0gQCh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGRpY3QuZ2V0KClbQCNmaWVsZF0gPSBAKHZh
bHVlKTsgXAogICAgIH0gXAogfSgpOwogCkBAIC0xOTgsMzAgKzE5OCwzMCBAQCArIChOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5Rm9yRXZlbnQ6KENHRXZlbnRSZWYpcmF3RXZlbnQgcmVsYXRpdmVU
b1RpbWU6KENHRXZlbgogICAgIGF1dG8gcGxhaW5FdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0
ZShOVUxMKSk7CiAgICAgQ0dFdmVudFJlZiByYXdQbGFpbkV2ZW50ID0gcGxhaW5FdmVudC5nZXQo
KTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3QgPSBbW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkaWN0ID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIEZPUl9FQUNIX0NHRVZF
TlRfSU5URUdFUl9GSUVMRChMT0FEX0lOVEVHRVJfRklFTERfRlJPTV9FVkVOVCk7CiAgICAgRk9S
X0VBQ0hfQ0dFVkVOVF9ET1VCTEVfRklFTEQoTE9BRF9ET1VCTEVfRklFTERfRlJPTV9FVkVOVCk7
CiAKICAgICBDR0V2ZW50VGltZXN0YW1wIHRpbWVzdGFtcCA9IENHRXZlbnRHZXRUaW1lc3RhbXAo
cmF3RXZlbnQpOwotICAgIGRpY3RbQCJyZWxhdGl2ZVRpbWVNUyJdID0gQChzdGQ6Om1heChzdGF0
aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCAtIHJlZmVyZW5jZVRpbWVzdGFtcCkgLyBOU0VDX1BF
Ul9NU0VDLCAwLjApKTsKKyAgICBkaWN0LmdldCgpW0AicmVsYXRpdmVUaW1lTVMiXSA9IEAoc3Rk
OjptYXgoc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXAgLSByZWZlcmVuY2VUaW1lc3RhbXAp
IC8gTlNFQ19QRVJfTVNFQywgMC4wKSk7CiAKICAgICBDR1NFdmVudFR5cGUgZXZlbnRUeXBlID0g
KENHU0V2ZW50VHlwZSlDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQocmF3RXZlbnQsIGtDR1NF
dmVudFR5cGVGaWVsZCk7CiAgICAgaWYgKGV2ZW50VHlwZSA9PSBrQ0dTRXZlbnRHZXN0dXJlIHx8
IGV2ZW50VHlwZSA9PSBrQ0dTRXZlbnRGbHVpZFRvdWNoR2VzdHVyZSB8fCBldmVudFR5cGUgPT0g
a0NHU0V2ZW50RG9ja0NvbnRyb2wpIHsKICAgICAgICAgaWYgKENHRXZlbnRHZXRJbnRlZ2VyVmFs
dWVGaWVsZChyYXdFdmVudCwga0NHRXZlbnRHZXN0dXJlSXNQcmVmbGlnaHQpKSB7Ci0gICAgICAg
ICAgICBkaWN0W0Aia0NHRXZlbnRHZXN0dXJlSXNQcmVmbGlnaHQiXSA9IEBZRVM7Ci0gICAgICAg
ICAgICBkaWN0W0Aia0NHRXZlbnRHZXN0dXJlUHJlZmxpZ2h0UHJvZ3Jlc3MiXSA9IEAoQ0dFdmVu
dEdldERvdWJsZVZhbHVlRmllbGQocmF3RXZlbnQsIGtDR0V2ZW50R2VzdHVyZVByZWZsaWdodFBy
b2dyZXNzKSk7CisgICAgICAgICAgICBkaWN0LmdldCgpW0Aia0NHRXZlbnRHZXN0dXJlSXNQcmVm
bGlnaHQiXSA9IEBZRVM7CisgICAgICAgICAgICBkaWN0LmdldCgpW0Aia0NHRXZlbnRHZXN0dXJl
UHJlZmxpZ2h0UHJvZ3Jlc3MiXSA9IEAoQ0dFdmVudEdldERvdWJsZVZhbHVlRmllbGQocmF3RXZl
bnQsIGtDR0V2ZW50R2VzdHVyZVByZWZsaWdodFByb2dyZXNzKSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBkaWN0W0Aid2luZG93TG9jYXRpb24iXSA9IE5TU3RyaW5nRnJvbVBvaW50KE5TUG9p
bnRGcm9tQ0dQb2ludChDR0V2ZW50R2V0V2luZG93TG9jYXRpb24ocmF3RXZlbnQpKSk7CisgICAg
ZGljdC5nZXQoKVtAIndpbmRvd0xvY2F0aW9uIl0gPSBOU1N0cmluZ0Zyb21Qb2ludChOU1BvaW50
RnJvbUNHUG9pbnQoQ0dFdmVudEdldFdpbmRvd0xvY2F0aW9uKHJhd0V2ZW50KSkpOwogCiAgICAg
YXV0byBmbGFncyA9IHN0YXRpY19jYXN0PENHRXZlbnRGbGFncz4oQ0dFdmVudEdldEZsYWdzKHJh
d0V2ZW50KSAmIH5OWF9OT05DT0FMU0VTQ0VETUFTSyk7CiAgICAgYXV0byBwbGFpbkZsYWdzID0g
c3RhdGljX2Nhc3Q8Q0dFdmVudEZsYWdzPihDR0V2ZW50R2V0RmxhZ3MocmF3UGxhaW5FdmVudCkg
JiB+TlhfTk9OQ09BTFNFU0NFRE1BU0spOwogICAgIGlmIChmbGFncyAhPSBwbGFpbkZsYWdzKQot
ICAgICAgICBkaWN0W0AiZmxhZ3MiXSA9IEAoZmxhZ3MpOworICAgICAgICBkaWN0LmdldCgpW0Ai
ZmxhZ3MiXSA9IEAoZmxhZ3MpOwogCi0gICAgcmV0dXJuIGRpY3Q7CisgICAgcmV0dXJuIGRpY3Qu
YXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoUmV0YWluUHRyPENHRXZlbnRSZWY+KWNyZWF0ZUV2ZW50
Rm9yRGljdGlvbmFyeTooTlNEaWN0aW9uYXJ5ICopZGljdCBpbldpbmRvdzooTlNXaW5kb3cgKil3
aW5kb3cgcmVsYXRpdmVUb1RpbWU6KENHRXZlbnRUaW1lc3RhbXApcmVmZXJlbmNlVGltZXN0YW1w
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVs
bENoZWNrZXIubW0gYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVs
bENoZWNrZXIubW0KaW5kZXggZTk5YzAxMzAzOTg4MzkyNDBjOGJlYzliYTk3NTAwYmI5ZDY5NzA2
ZS4uNDIzNWU5NjU2ZmJmZGE2ZDU2NzJmMjIzOTc5MWUwNGNhNzg2NzhmYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5t
bQpAQCAtMjQ4LDcgKzI0OCw3IEBAIC0gKHZvaWQpc2V0UmVzdWx0c0Zyb21KU1ZhbHVlOihKU1Zh
bHVlUmVmKXJlc3VsdHNWYWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dFJlZiljCiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKGRldGFp
bHNPYmplY3RQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFtyZXN1bHRz
Rm9yV29yZCBhZGRPYmplY3Q6W1tbTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxvY10g
aW5pdFdpdGhUeXBlOm5zVGV4dENoZWNraW5nVHlwZSh0eXBlVmFsdWUuZ2V0KCkpIHJhbmdlOk5T
TWFrZVJhbmdlKGZyb21WYWx1ZSwgdG9WYWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6KF9f
YnJpZGdlIE5TU3RyaW5nICopcmVwbGFjZW1lbnRUZXh0LmdldCgpIGRldGFpbHM6ZGV0YWlscy5n
ZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFtyZXN1bHRzRm9yV29yZCBhZGRPYmpl
Y3Q6YWRvcHROUyhbW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgYWxsb2NdIGluaXRXaXRo
VHlwZTpuc1RleHRDaGVja2luZ1R5cGUodHlwZVZhbHVlLmdldCgpKSByYW5nZTpOU01ha2VSYW5n
ZShmcm9tVmFsdWUsIHRvVmFsdWUgLSBmcm9tVmFsdWUpIHJlcGxhY2VtZW50OihfX2JyaWRnZSBO
U1N0cmluZyAqKXJlcGxhY2VtZW50VGV4dC5nZXQoKSBkZXRhaWxzOmRldGFpbHMuZ2V0KCldKS5h
dXRvcmVsZWFzZSgpXTsKICAgICAgICAgfQogICAgICAgICBhdXRvIGNmVGV4dFRvQ2hlY2sgPSBh
ZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRleHRUb0No
ZWNrKSk7CiAgICAgICAgIFtyZXN1bHRzIHNldE9iamVjdDpyZXN1bHRzRm9yV29yZC5nZXQoKSBm
b3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopY2ZUZXh0VG9DaGVjay5nZXQoKV07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRp
bWVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxv
b3BUaW1lci5tbQppbmRleCA4NmJiYWI4NjA3NzY1MGE4MzBlMzE5NTk4ZTUyOGJhYzg3MzMwYTVi
Li5kNDkwOWY4NDY4OGE0MTMzMDc1Y2U0YmY4NWNjNjY4OGIyMzQ3MmE3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29w
VGltZXIubW0KQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgdHJpZ2dlckdDKEpTQ29udGV4
dCAqY29udGV4dCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCAxMDAwOyArK2kpCi0gICAgICAgICAgICBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6W1tUZXN0T2JqZWN0IG5ld10gYXV0b3JlbGVhc2VdIGluQ29udGV4dDpjb250ZXh0XTsK
KyAgICAgICAgICAgIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDphZG9wdE5TKFtUZXN0T2JqZWN0
IG5ld10pLmF1dG9yZWxlYXNlKCkgaW5Db250ZXh0OmNvbnRleHRdOwogICAgICAgICBKU0dhcmJh
Z2VDb2xsZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNzFhN2ZmNGYzNmVjYWQ5M2RjOTY3ZmJjMjMxM2Nh
MmNiM2I5MmZmMS4uZDk2MjMwNzRiMjE1ODBlNzEyYWY0NGM2ZjM0MGQ5ZmU2MTYxZTlmYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEpTQzo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAgICAgICAgIHZpZXcgPSBhZG9wdE5T
KFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7Ci0gICAgICAgIFt2
aWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOltbW1Rlc3ROU1VSTFNlc3Npb25Mb2FkZXJEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3ZpZXcgc2V0RnJhbWVMb2Fk
RGVsZWdhdGU6YWRvcHROUyhbW1Rlc3ROU1VSTFNlc3Npb25Mb2FkZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pLmF1dG9yZWxlYXNlKCldOwogCiAgICAgICAgIGRpZExvYWRNYWluUmVzb3VyY2UgPSBm
YWxzZTsKICAgICAgICAgW3ZpZXcgc2V0TWFpbkZyYW1lVVJMOmRvY3VtZW50VVJMLmFic29sdXRl
U3RyaW5nXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dl
dFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCmluZGV4IGYyN2UzNGQ0ODBhNjk0ZmJiYWU3YjVl
ODA1OTUzODBhNDg0OWMyMDIuLjM4ZWVjZGE1ZWJjMTVmNWJjNDJkZDM1OWYwMzQ1MWMwZmMxZmQz
ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJN
ZWRpYU5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQpAQCAtMTE1LDcgKzExNSw3IEBAIFRFU1QoV2ViS2l0
LCBEZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNEaXJlY3RvcnkpCiAgICAgfQogCiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlnID0gYWRvcHROUyhb
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gcHJl
ZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CiAgICAgcHJlZmVyZW5jZXMu
X21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIFRFU1QoV2ViS2l0LCBEZXZpY2VJZEhhc2hTYWx0c0RpcmVjdG9yeSkKICAgICBbd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5OnRlbXBEaXJdOwogICAgIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRp
b24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1
dG9yZWxlYXNlXV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZyA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdOwogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1Nl
Y3VyZUNvbm5lY3Rpb24gPSBOTzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9Db250ZXh0TWVudUltZ1dpdGhWaWRlby5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudUltZ1dpdGhWaWRlby5tbQppbmRleCAy
Y2IyNzc1NzE0ZDQ5YzA4NTk1YzUxZjc1MTI2M2ZmNmJkMzBlMGUzLi4yZjRkN2RmY2I4MDAyY2My
ZmZiMDQ3NDhkMGU4NjA0NThmMjIxMzlkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1t
CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV2ViS2l0
LCBDb250ZXh0TWVudUltZ1dpdGhWaWRlbykKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKV0pOwotICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IFtbW0NvbnRleHRNZW51
SW1nV2l0aFZpZGVvRGVsZWdhdGUgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3LmdldCgpLlVJRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGV4dE1lbnVJbWdXaXRoVmlkZW9E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8iXTsKIAog
ICAgIE5TV2luZG93KiB3aW5kb3cgPSBbd2ViVmlldyB3aW5kb3ddOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdE
ZWxlZ2F0ZS5tbQppbmRleCAwNDYyYTg4ZjQ4MGQ5NWE0OTU0N2EwNmQwMmQyMWIwYjI0M2MzYjdl
Li43Y2NmYzAyMmQyYzI1MzMyYmIyZWJjZTk1ZDMwMjVhZTdhOWJhMmM5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0
ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVk
aXRpbmdEZWxlZ2F0ZS5tbQpAQCAtODcsMTggKzg3LDE4IEBAIFRFU1QoV2ViS2l0LCBXS1dlYlBy
b2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZFdyaXRlVG9QYXN0ZWJvYXJkKTsKIAotICAgIE5TU3RyaW5nICpjb3BpZWRTdHJpbmcg
PSBuaWw7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjb3BpZWRTdHJpbmc7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGNvcGllZFN0cmluZyA9IFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJv
YXJkXSBzdHJpbmdGb3JUeXBlOkAib3JnLndlYmtpdC5kYXRhIl07CiAjZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGNvcGllZFN0cmluZyA9IFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6W1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRhdGFGb3JQYXN0ZWJvYXJk
VHlwZTpAIm9yZy53ZWJraXQuZGF0YSJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBh
dXRvcmVsZWFzZV07CisgICAgY29waWVkU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6W1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRhdGFGb3JQ
YXN0ZWJvYXJkVHlwZTpAIm9yZy53ZWJraXQuZGF0YSJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CiAjZW5kaWYKLSAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIiwgY29waWVkU3Ry
aW5nKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIiwgY29waWVkU3RyaW5nLmdldCgpKTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2Fy
ZF0gc2V0U3RyaW5nOmNvcGllZFN0cmluZyBmb3JUeXBlOkAicHVibGljLnV0ZjgtcGxhaW4tdGV4
dCJdOworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRTdHJpbmc6Y29w
aWVkU3RyaW5nLmdldCgpIGZvclR5cGU6QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07CiAjZWxp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJv
YXJkXSBzZXRWYWx1ZTpjb3BpZWRTdHJpbmcgZm9yUGFzdGVib2FyZFR5cGU6QCJwdWJsaWMudXRm
OC1wbGFpbi10ZXh0Il07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNl
dFZhbHVlOmNvcGllZFN0cmluZy5nZXQoKSBmb3JQYXN0ZWJvYXJkVHlwZTpAInB1YmxpYy51dGY4
LXBsYWluLXRleHQiXTsKICNlbmRpZgogICAgIFt3ZWJWaWV3IHBlcmZvcm1TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFzdGU6KSB3aXRoT2JqZWN0Om5pbF07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVGb3JtRGVsZWdhdGVQ
bHVnSW4ubW0KaW5kZXggZDBjYTlmZGM3MjEyYzQ5ZWFkMTFiYmU3ZTBlZGY2NDk0YjA1MTU5OS4u
ZThkOWQ1MjVmYTdiZmViYTU4NjA1MzI5YzFjOWEzYmZkZjA3ZTQyMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVGb3JtRGVsZWdhdGVQbHVn
SW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVG
b3JtRGVsZWdhdGVQbHVnSW4ubW0KQEAgLTcwLDkgKzcwLDcgQEAgLSAoTlNPYmplY3QgPE5TU2Vj
dXJlQ29kaW5nPiAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihX
S1dlYlAKICAgICBpZiAoIV9zaG91bGRVc2VDdXN0b21DbGFzcykKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIE5TVW5pdENvbnZlcnRlckxpbmVhciAqa2lsb21ldGVyc1RvTWV0ZXJzID0gW1tO
U1VuaXRDb252ZXJ0ZXJMaW5lYXIgYWxsb2NdIGluaXRXaXRoQ29lZmZpY2llbnQ6MTAwMC4wIGNv
bnN0YW50OjAuMF07Ci0KLSAgICByZXR1cm4gW2tpbG9tZXRlcnNUb01ldGVycyBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1VuaXRDb252ZXJ0ZXJMaW5lYXIgYWxsb2NdIGlu
aXRXaXRoQ29lZmZpY2llbnQ6MTAwMC4wIGNvbnN0YW50OjAuMF0pLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlk
Rm9jdXNUZXh0RmllbGQ6KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKil0ZXh0RmllbGQg
aW5GcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQppbmRleCAwYjc1YmE0
M2MwM2FlMzg4ODE2YTFmM2NjMmNlZTZmMTc3MWIxMDYxLi5kNmUzODNlMWEwYmUyZTU1Zjc5MWI0
ZjRhZDg2ZjE5NDNhZjMwYzhiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQpAQCAtMjMyLDggKzIzMiw4IEBAIFRFU1QoQ2hhbGxl
bmdlLCBTZWNJZGVudGl0eSkKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwogCiAgICAgLy8gTWFrZSBzdXJlIG5vIGNyZWRlbnRpYWwgbGVmdCBieSBw
cmV2aW91cyB0ZXN0cy4KLSAgICBOU1VSTFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNl
ID0gW1tbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpAIjEyNy4wLjAu
MSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCBy
ZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZEhUVFBCYXNpY10gYXV0b3JlbGVhc2VdOwotICAgIFtbd2ViVmlldyBjb25maWd1cmF0
aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25T
cGFjZTpwcm90ZWN0aW9uU3BhY2VdOworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gYWRvcHRO
UyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEi
IHBvcnQ6c2VydmVyLnBvcnQoKSBwcm90b2NvbDpOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFAgcmVh
bG06QCJ0ZXN0cmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RIVFRQQmFzaWNdKTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bv
b2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlv
blNwYWNlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwogCkBAIC0y
NDUsOCArMjQ1LDggQEAgVEVTVChDaGFsbGVuZ2UsIERlYWxsb2NhdGVEdXJpbmdDaGFsbGVuZ2Up
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoe3sgIi8iLCB7ICJoaSIgfX19LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCi0g
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBe
KFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNy
ZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKICAgICB9OwogCkBAIC0yNTUsNyArMjU1LDcg
QEAgVEVTVChDaGFsbGVuZ2UsIERlYWxsb2NhdGVEdXJpbmdDaGFsbGVuZ2UpCiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyBpKyspCiAgICAgICAgICAgICB2aWV3cy5hcHBlbmQo
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pKTsKICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmll
d3MpIHsKLSAgICAgICAgICAgIFt2aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07
CisgICAgICAgICAgICBbdmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogICAgICAgICAgICAgW3ZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAgICAg
ICAgIH0KICAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOwpAQCAtMzUxLDggKzM1MSw4IEBA
IFRFU1QoQ2hhbGxlbmdlLCBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbCkKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgLy8gTWFrZSBzdXJl
IG5vIGNyZWRlbnRpYWwgbGVmdCBieSBwcmV2aW91cyB0ZXN0cy4KLSAgICBOU1VSTFByb3RlY3Rp
b25TcGFjZSAqcHJvdGVjdGlvblNwYWNlID0gW1tbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2Nd
IGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5T
VVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVudGljYXRpb25N
ZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10gYXV0b3JlbGVhc2VdOwot
ICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRD
cmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2VdOworICAgIGF1dG8g
cHJvdGVjdGlvblNwYWNlID0gYWRvcHROUyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBp
bml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEiIHBvcnQ6c2VydmVyLnBvcnQoKSBwcm90b2NvbDpOU1VS
TFByb3RlY3Rpb25TcGFjZUhUVFAgcmVhbG06QCJ0ZXN0cmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0
aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWNdKTsKKyAgICBbW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQ
cm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgpXTsKIAogICAgIFJldGFpblB0cjxO
U1VSTFJlcXVlc3Q+IHJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwpAQCAtMzYzLDI1ICszNjMsMjUgQEAgVEVTVChDaGFs
bGVuZ2UsIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsKQogICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVk
U2Vjb25kQ2hhbGxlbmdlKTsKIAogICAgIC8vIENsZWFyIHBlcnNpc3RlbnQgY3JlZGVudGlhbHMg
Y3JlYXRlZCBieSB0aGlzIHRlc3QuCi0gICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nl
c3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3Rl
Y3Rpb25TcGFjZV07CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9j
bGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFj
ZS5nZXQoKV07CiB9CiAKIFRFU1QoQ2hhbGxlbmdlLCBCYXNpY1BlcnNpc3RlbnRDcmVkZW50aWFs
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKEhUVFBTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKLSAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10p
OwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TVVJMUHJvdGVjdGlvblNwYWNlPiBwcm90ZWN0aW9u
U3BhY2U7CiAgICAgYXV0byBjcmVkZW50aWFsU3RvcmFnZSA9IFtOU1VSTENyZWRlbnRpYWxTdG9y
YWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXTsKLSAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLV2Vi
VmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKICAgICAgICAgcHJvdGVjdGlvblNwYWNlID0gY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZTsKICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpleGlzdGluZ0NyZWRl
bnRpYWwgPSBbY3JlZGVudGlhbFN0b3JhZ2UgZGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9u
U3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgpXTsKICAgICAgICAgRVhQRUNUX05VTEwoZXhpc3Rp
bmdDcmVkZW50aWFsKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHByb3RlY3Rpb25TcGFjZS5n
ZXQoKS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBC
YXNpYyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoVXNlcjpAInRl
c3R1c2VyIiBwYXNzd29yZDpAInRlc3RwYXNzd29yZCIgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnRdKTsKICAgICB9OwotICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOworICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAgICAgW2Rl
bGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIApAQCAtNTUzLDExICs1NTMsMTEg
QEAgVEVTVChXZWJLaXQsIEZhc3RTZXJ2ZXJUcnVzdCkKICAgICAgICAgRVhQRUNUX0ZBTFNFKHNz
bCk7CiAgICAgfSwgV1RGOjpudWxsb3B0LCAyKTsKICNlbmRpZgotICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQgPSBZRVM7Ci0gICAgY29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNl
XTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbZGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBzZXRGYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZDpZRVNd
OworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtTZXJ2ZXJUcnVzdERlbGVnYXRlIG5ld10pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vbG9jYWxob3N0OiVkLyIsIHNlcnZlci5wb3J0KCldXV1d
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlw
Ym9hcmRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xp
cGJvYXJkVGVzdHMubW0KaW5kZXggNGU1NWNmMDFhOTdmMjc5YjQyZGMwZGFkNTI4Y2FlNjViYWE2
YWE3ZS4uNjVjMDc3OGRhMTFmYzBiZjFhOGJkMjU3MzlkMjI2OGUwOTQ4ZTE2MyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2FyZFRl
c3RzLm1tCkBAIC0xMjksMTQgKzEyOSwxNCBAQCBzdGF0aWMgdm9pZCB3cml0ZU11bHRpcGxlT2Jq
ZWN0c1RvUGxhdGZvcm1QYXN0ZWJvYXJkKCkKICNlbmRpZgogfQogCi1zdGF0aWMgTlNTdHJpbmcg
KnJlYWRNYXJrdXBGcm9tUGFzdGVib2FyZCgpCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBy
ZWFkTWFya3VwRnJvbVBhc3RlYm9hcmQoKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU0Rh
dGEgKnJhd0RhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OldlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpXTsKICNlbHNlCiAgICAgTlNEYXRh
ICpyYXdEYXRhID0gW1VJUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yUGFzdGVi
b2FyZFR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUxdOwogI2VuZGlmCi0gICAg
cmV0dXJuIFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cmF3RGF0YSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpyYXdEYXRhIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CiB9CiAKIFRFU1QoQ2xpcGJvYXJkVGVzdHMsIFJlYWRNdWx0aXBsZUl0ZW1z
KQpAQCAtMTYwLDcgKzE2MCw3IEBAIFRFU1QoQ2xpcGJvYXJkVGVzdHMsIFdyaXRlU2FuaXRpemVk
TWFya3VwKQogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0
cygpOwogICAgIFt3ZWJWaWV3IHdyaXRlU3RyaW5nOkAiPHNjcmlwdD4vKiBzdXBlciBzZWNyZXQg
Ki88L3NjcmlwdD5UaGlzIGlzIGEgdGVzdC4iIHRvQ2xpcGJvYXJkV2l0aFR5cGU6QCJ0ZXh0L2h0
bWwiXTsKIAotICAgIE5TU3RyaW5nICp3cml0dGVuTWFya3VwID0gcmVhZE1hcmt1cEZyb21QYXN0
ZWJvYXJkKCk7CisgICAgYXV0byB3cml0dGVuTWFya3VwID0gcmVhZE1hcmt1cEZyb21QYXN0ZWJv
YXJkKCk7CiAgICAgRVhQRUNUX1RSVUUoW3dyaXR0ZW5NYXJrdXAgY29udGFpbnNTdHJpbmc6QCJU
aGlzIGlzIGEgdGVzdC4iXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFt3cml0dGVuTWFya3VwIGNvbnRh
aW5zU3RyaW5nOkAic3VwZXIgc2VjcmV0Il0pOwogICAgIEVYUEVDVF9GQUxTRShbd3JpdHRlbk1h
cmt1cCBjb250YWluc1N0cmluZzpAIjxzY3JpcHQ+Il0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbi5tbQppbmRleCBhZTZlYmE5ZGU3YTcxNjdhZGI4YTgyNGYwNDg5NWUxZDY1
MmUzZTk4Li5kZDg1YmEwY2RiMTFjZGJmYzc4YzUyMDNhOGQ5YmFjMjY3ZjE4YmUxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbnRlbnRSdWxlTGlzdFdpdGhJZGVu
dGlmaWVyOihOU1N0cmluZyAqKQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNr
CiB7Ci0gICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmls
XSBhdXRvcmVsZWFzZV1dOworICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTph
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbdXJsU2NoZW1lVGFz
ayBkaWRGaW5pc2hdOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRleHRNZW51cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGV4dE1lbnVzLm1tCmluZGV4IGQzZDA3ZDY5ZTYyODVhYzQ0OTIxM2Fh
NzQ1NTc0MTZhZWE3NWVlMDguLjYzNGZiNjcxNDkxYzRjMTMzZWI0ZmE3NTdjNzkzYzY1NTM1ZDkw
ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGV4dE1lbnVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29udGV4dE1lbnVzLm1tCkBAIC03NCw3ICs3NCw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBjb250ZXh0TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OihXS0NvbnRl
CiAgICAgY29udGV4dE1lbnVSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIFVJQ29udGV4dE1lbnVDb250
ZW50UHJldmlld1Byb3ZpZGVyIHByZXZpZXdQcm92aWRlciA9IF5VSVZpZXdDb250cm9sbGVyICog
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxl
ciBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfTsKICAgICBVSUNvbnRleHRNZW51
QWN0aW9uUHJvdmlkZXIgYWN0aW9uUHJvdmlkZXIgPSBeVUlNZW51ICooTlNBcnJheTxVSU1lbnVF
bGVtZW50ICo+ICpzdWdnZXN0ZWRBY3Rpb25zKQogICAgIHsKQEAgLTE0MSw3ICsxNDEsNyBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnVDb25maWd1cmF0
aW9uRm9yRWxlbWVudDooV0tDb250ZQogICAgIGNvbnRleHRNZW51UmVxdWVzdGVkID0gdHJ1ZTsK
ICAgICBVSUNvbnRleHRNZW51Q29udGVudFByZXZpZXdQcm92aWRlciBwcmV2aWV3UHJvdmlkZXIg
PSBeVUlWaWV3Q29udHJvbGxlciAqICgpCiAgICAgewotICAgICAgICByZXR1cm4gW1tbVUlWaWV3
Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRv
cHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAg
IH07CiAgICAgVUlDb250ZXh0TWVudUFjdGlvblByb3ZpZGVyIGFjdGlvblByb3ZpZGVyID0gXlVJ
TWVudSAqKE5TQXJyYXk8VUlNZW51RWxlbWVudCAqPiAqc3VnZ2VzdGVkQWN0aW9ucykKICAgICB7
CkBAIC0zMDksNyArMzA5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6KFdLQ29udGUKICAgICBjb250ZXh0
TWVudVJlcXVlc3RlZCA9IHRydWU7CiAgICAgVUlDb250ZXh0TWVudUNvbnRlbnRQcmV2aWV3UHJv
dmlkZXIgcHJldmlld1Byb3ZpZGVyID0gXlVJVmlld0NvbnRyb2xsZXIgKiAoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIFtbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0
XSkuYXV0b3JlbGVhc2UoKTsKICAgICB9OwogICAgIFVJQ29udGV4dE1lbnVBY3Rpb25Qcm92aWRl
ciBhY3Rpb25Qcm92aWRlciA9IF5VSU1lbnUgKihOU0FycmF5PFVJTWVudUVsZW1lbnQgKj4gKnN1
Z2dlc3RlZEFjdGlvbnMpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29weUhUTUwubW0KaW5kZXggNmNhYjRiYjg5ZmRjYzBkOTM1NDNmNjAyZjBi
MWNiMTBjNWIyZDAwNS4uYTBjNGRiOGVhYjYxM2RiZGJiMDNhNDg0Yjk2YTBhODY3MTNlM2I3ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRN
TC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1M
Lm1tCkBAIC02OCwxMSArNjgsMTEgQEAgTlNEYXRhICpyZWFkSFRNTERhdGFGcm9tUGFzdGVib2Fy
ZCgpCiAKIE5TU3RyaW5nICpyZWFkSFRNTFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCkKIHsKLSAgICBp
ZCB2YWx1ZSA9IFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZvclBhc3Rl
Ym9hcmRUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MXTsKKyAgICBSZXRhaW5Q
dHI8aWQ+IHZhbHVlID0gW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHZhbHVlRm9y
UGFzdGVib2FyZFR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUxdOwogICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCi0gICAgICAgIHZhbHVlID0g
W1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTooTlNEYXRhICopdmFsdWUgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgdmFsdWUgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTooTlNEYXRhICopdmFsdWUgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICAgICBBU1NFUlQoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pOwotICAgIHJldHVybiAoTlNTdHJpbmcgKil2YWx1ZTsKKyAg
ICByZXR1cm4gKE5TU3RyaW5nICopdmFsdWUuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnMubW0KaW5kZXggYjg0MjMxMTc0ZjNh
MDUyZGNjMzJjYmNlMDMzYTM0MTE2MmE5OGJkMS4uZDdiMzY5NTdmMjkxNDU1NGFhNTdiMWRkNGYz
ZjdiZmY5YjkxODczOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9ucy5t
bQpAQCAtNDIsNyArNDIsNyBAQCBURVNUKFdlYktpdCwgRGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0
aW9ucykKICAgICBbZGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxMb2Fkc0Jsb2NrZWRCeURl
dmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nOllFU107CiAKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBh
dXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogCiAg
ICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246d2ViVmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGlzcGxheU5hbWUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rpc3BsYXlOYW1lLm1tCmluZGV4IDcx
ZDJhNWRjN2Y3ZmJkNTU2NWEwMWRhZWU1MDVlNTFhNWY1MzA1N2UuLjhhZDhiZDhmZjhkZDFkM2Iz
YzQ5MDBjYTBjZmUzYTQ5MTI3MjkxM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRGlzcGxheU5hbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNwbGF5TmFtZS5tbQpAQCAtNTYsMTAgKzU2LDEwIEBAIHN0
YXRpYyB2b2lkIGNoZWNrVW50aWxEaXNwbGF5TmFtZUlzKFdLV2ViVmlldyAqd2ViVmlldywgTlNT
dHJpbmcgKmV4cGVjdGVkTmFtZSwKIAogVEVTVChXZWJLaXQsIEN1c3RvbURpc3BsYXlOYW1lKQog
ewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKICAgICBOU1N0cmluZyAq
ZGlzcGxheU5hbWVUb1NldCA9IEAidGVzdCBkaXNwbGF5IG5hbWUiOwotICAgIGNvbmZpZ3VyYXRp
b24uX3Byb2Nlc3NEaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lVG9TZXQ7Ci0gICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWVUb1Nl
dDsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCJzdGFydCB3ZWIgcHJvY2VzcyJdOwogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRl
eCBhMjE3YWVmNGFmOGIwNTczZDBlMjBjYWUyYTY2NTRmNTJiZWIwMWU3Li5iNDAzNTZmZjI0Nzg2
YzhiM2ZkYjI0MGU0ZjEzNWRiMjIzZGFiYjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTg5NCwxMCArODk0LDEwIEBAIFJl
dGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdXaXRoRG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBs
aWVyKHNpemVfdCBtdWx0aXBsaWVyCiAgICAgc3RhdGljIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gYWRvcHROUyhbRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gbmV3XSk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpkYXRhU3Rv
cmVDb25maWd1cmF0aW9uID0gW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLnRlc3RTcGVlZE11bHRp
cGxpZXIgPSBtdWx0aXBsaWVyOworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtkYXRh
U3RvcmVDb25maWd1cmF0aW9uIHNldFRlc3RTcGVlZE11bHRpcGxpZXI6bXVsdGlwbGllcl07CiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7Ci0gICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRh
dGFTdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXV07CisgICAgW3dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wuX2Rvd25sb2FkRGVsZWdhdGUgPSBtb25pdG9yRGVs
ZWdhdGUoKS5nZXQoKTsKQEAgLTE0NTUsMTMgKzE0NTUsMTMgQEAgVEVTVChXS0Rvd25sb2FkLCBG
aW5pc2hTdWNjZXNzZnVsbHkpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIGRl
bGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwor
ICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxM
KGRvd25sb2FkLnByb2dyZXNzLmZpbGVVUkwpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxMKGRv
d25sb2FkLnByb2dyZXNzLmZpbGVVUkwpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgVEVTVChXS0Rv
d25sb2FkLCBGaW5pc2hTdWNjZXNzZnVsbHkpCiAKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKIAotICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0xNDg4
LDcgKzE0ODgsNyBAQCBzdGF0aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEg
KnJlc3VtZURhdGEsIE5TVVJMICpkZXN0aW5hdGlvbikKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
ICAgICAgICAgY2hlY2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKSk7CiAKLSAgICAgICAgYXV0byAqZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRl
IG5ld10gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1dLV2ViVmlldyBuZXddKTsKIAogICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21S
ZXN1bWVEYXRhOnJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3du
bG9hZCkgewpAQCAtMTUwMCw4ICsxNTAwLDggQEAgc3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNo
RG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCiAgICAgICAg
IAogICAgICAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZFNlY29uZDVrID0gZmFsc2U7CiAgICAg
ICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUpOwotICAgICAg
ICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5n
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfTsKIApAQCAtMTUxNSw3ICsxNTE1LDcgQEAgc3RhdGlj
IHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAq
ZGVzdGluYXRpb24pCiAgICAgICAgIFtyZXRhaW5lZERvd25sb2FkLmdldCgpLnByb2dyZXNzIGFk
ZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQi
IG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25Jbml0aWFsIGNvbnRleHQ6bmlsXTsKIAogICAgICAgICBfX2Jsb2NrIGJvb2wgZGlk
RmluaXNoID0gZmFsc2U7Ci0gICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERp
ZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgICAgIEVYUEVDVF9F
UShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7CiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShkb3dubG9hZGVkU2Vjb25kNWspOwogICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsK
QEAgLTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2Fk
KE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQogICAgICAgICBbcmV0YWlu
ZWREb3dubG9hZC5nZXQoKS5wcm9ncmVzcyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBm
b3JLZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBjb250ZXh0Om5pbF07CiAKICAgICAgICAg
Y2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7Ci0gICAgICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CiAgICAgICAgIH0pOwogICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKS53
ZWJWaWV3LCB3ZWJWaWV3LmdldCgpKTsKQEAgLTE1NTgsMTUgKzE1NTgsMTUgQEAgVEVTVChXS0Rv
d25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9f
YmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0gICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVn
YXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAg
ICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5n
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURl
c3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAg
fTsKICAgICB9OwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxB
bmRSZXN1bWUpCiAgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCiAgICAgICAgIFV0aWw6
OnNwaW5SdW5Mb29wKCk7CiAgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1
bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCks
IHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTE1OTIsMjQgKzE1
OTIsMjQgQEAgVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCiAKIFRFU1QoV0tEb3du
bG9hZCwgRmFpbEFuZFJlc3VtZSkKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWQ+
IHJldGFpbmVkRG93bmxvYWQ7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIo
SW5jbHVkZUVUYWc6OlllcywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIHsKICAgICAgICAgd2FpdEZvckZpcnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAgICAgICAg
IGNvbm5lY3Rpb24udGVybWluYXRlKCk7CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZp
ZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKLSAgICBk
ZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG1ha2VCbG9ja1B0
cihbJl0oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBtYWtlQmxvY2tQdHIoWyZdKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICByZXRhaW5lZERvd25sb2Fk
ID0gZG93bmxvYWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAg
ICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5k
aWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3Is
IE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0
aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAq
cmVzdW1lRGF0YSkgewogICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRhaW5lZERv
d25sb2FkLmdldCgpKTsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwpAQCAtMTYyMiw3ICsxNjIyLDcgQEAgVEVT
VChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQogICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVE
YXRhKQogICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwogICAgIHJlc3VtZUFuZEZpbmlzaERv
d25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOwot
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxv
YWQsCkBAIC0xNjM1LDE1ICsxNjM1LDE1IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2VsTm9SZXN1
bWVEYXRhKQogewogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVF
VGFnOjpObyk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3
XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Js
b2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVnYXRl
Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0
ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAg
ICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07
CiAgICAgfTsKQEAgLTE2NTcsNyArMTY1Nyw3IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2VsTm9S
ZXN1bWVEYXRhKQogICAgIH1dOwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7Ci0g
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAog
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKQEAgLTE2NjcsMjQgKzE2NjcsMjQgQEAgVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3Vt
ZURhdGEpCiAKIFRFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKIHsKLSAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CiAg
ICAgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CiAgICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vLCBbJl0gKFRlc3RXZWJLaXRB
UEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgewogICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhyZXRh
aW5lZERvd25sb2FkKTsKICAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKICAgICB9KTsK
ICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0g
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBtYWtlQmxv
Y2tQdHIoWyZdKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkID0gbWFrZUJsb2NrUHRyKFsmXShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgcmV0YWluZWREb3du
bG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwot
ICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUu
Z2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNw
b25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdh
dGUuZGlkRmFpbFdpdGhFcnJvciA9IG1ha2VCbG9ja1B0cihbJl0oV0tEb3dubG9hZCAqLCBOU0Vy
cm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRpZEZhaWxXaXRoRXJyb3IgPSBtYWtlQmxvY2tQdHIoWyZdKFdLRG93bmxvYWQgKiwgTlNFcnJv
ciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CiAgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKQEAgLTE2OTQsNyArMTY5NCw3IEBAIFRFU1Qo
V0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwotICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25B
Y3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQs
CkBAIC0xNzM5LDI1ICsxNzM5LDI1IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVzdW1lQWZ0ZXJaZXJv
Qnl0ZXNSZWNlaXZlZCkKICAgICB9KTsKIAogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OwogCi0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRl
LmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9OwotICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IFsmXShXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IFsmXShXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnRlcm1p
bmF0ZSgpOwogICAgIH07CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJl
c3VtZURhdGE7Ci0gICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgZGVsZWdhdGUuZ2V0
KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNE
YXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxF
cnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CiAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9
IHJlc3VtZURhdGE7CiAgICAgfTsKICAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRGaW5pc2hlZCA9
IGZhbHNlOwotICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICop
IHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAq
KSB7CiAgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVlOwogICAgIH07CiAKQEAgLTE3Njgs
MTIgKzE3NjgsMTIgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2Vp
dmVkKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6ZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aF0pOwogICAgIEVYUEVDVF9G
QUxTRShkb3dubG9hZEZpbmlzaGVkKTsKICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21S
ZXN1bWVEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgfV07
CiAgICAgVXRpbDo6cnVuKCZkb3dubG9hZEZpbmlzaGVkKTsKICAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDA+KCd4JykpOwogCi0gICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlv
biwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAg
LTE3ODcsMTUgKzE3ODcsMTUgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRl
c1JlY2VpdmVkKQogCiB2b2lkIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhOU1VSTFJlcXVl
c3QgKnNlcnZlclJlcXVlc3QsIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSwgdm9pZChebXV0
YXRlRmlsZSkodm9pZCkpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBf
X2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAg
ICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2lu
Z1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0
cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQs
IE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShO
U1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9h
ZEZpbGUpOwogICAgICAgICB9OwogICAgIH07CkBAIC0xODE3LDEzICsxODE3LDEzIEBAIHZvaWQg
dGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCwg
TlNVUkwgKmV4cGVjdGVkRG93CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7
CiAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpyZXRhaW5lZFJlc3Vt
ZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewot
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5k
b3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRvd25sb2Fk
RGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKICAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRy
dWU7CiAgICAgICAgIH07CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOwotICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25B
Y3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQs
CkBAIC0xOTI3LDcgKzE5MjcsNyBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhJbnZhbGlk
UmVzdW1lRGF0YSkKIHsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKICAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9u
IGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJM
OmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7Ci0gICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7
CiAgICAgQHRyeSB7CiAgICAgICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURh
dGE6W0AiaW52YWxpZCByZXN1bWUgZGF0YSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKQEAg
LTE5NDQsMTUgKzE5NDQsMTUgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0
KQogewogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CiAgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25s
b2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3Bv
bnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIHJldGFpbmVkRG93bmxvYWQg
PSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2Fk
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07CiAgICAgfTsKQEAgLTE5NzgsMTYg
KzE5NzgsMTYgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQogICAgIHdo
aWxlICghcmV0YWluZWREb3dubG9hZCkKICAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKIAot
ICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICByZXRh
aW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihX
S0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CiAgICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChyZXN1bWVEYXRhKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfTsKICAgICBVdGls
OjpydW4oJmRvbmUpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMDA0LDkgKzIwMDQsOSBAQCBURVNUKFdLRG93bmxvYWQs
IFVua25vd25Db250ZW50TGVuZ3RoKQogICAgICAgICB9KTsKICAgICB9KTsKICAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
CiAgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW0Rvd25sb2FkT2JzZXJ2ZXIgbmV3XSk7CkBA
IC0yMDE3LDEwICsyMDE3LDEwIEBAIFRFU1QoV0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5n
dGgpCiAgICAgfTsKIAogICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVk
RG93bmxvYWQ7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRl
bGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgcmV0
YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0
cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRl
bGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAgICAgICAgW2Rvd25sb2FkLnByb2dyZXNzIGFkZE9i
c2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25Jbml0aWFsIGNvbnRleHQ6bmlsXTsKQEAgLTIwMzAsNyArMjAzMCw3IEBAIFRFU1QoV0tE
b3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCiAgICAgW3JldGFpbmVkRG93bmxvYWQuZ2V0
KCkucHJvZ3Jlc3MgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNv
bXBsZXRlZFVuaXRDb3VudCIgY29udGV4dDpuaWxdOwogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4
cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwogCi0gICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTIw
NDAsMTMgKzIwNDAsMTMgQEAgVEVTVChXS0Rvd25sb2FkLCBVbmtub3duQ29udGVudExlbmd0aCkK
IAogVEVTVChXS0Rvd25sb2FkLCBJbnZhbGlkQXJndW1lbnRzKQogewotICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9u
ID0gZmFsc2U7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKLSAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7
CiAgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGlu
YXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNT
dHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQo
KS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CiAgICAgICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSk7CiAgICAgICAg
ICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKQEAgLTIwNTYsNyArMjA1Niw3IEBAIFRF
U1QoV0tEb3dubG9hZCwgSW52YWxpZEFyZ3VtZW50cykKICAgICAgICAgfTsKICAgICB9XTsKICAg
ICBVdGlsOjpydW4oJmNhdWdodEV4Y2VwdGlvbik7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCiAgICAgfSk7CiB9CkBA
IC0yMDczLDMyICsyMDczLDMyIEBAIFRFU1QoV0tEb3dubG9hZCwgUmVkaXJlY3RBbGxvdykKIHsK
ICAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CiAgICAgTlNVUkwgKmV4cGVjdGVk
RG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxl
Z2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0
ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgc2Vy
dmVyUmVxdWVzdC5IVFRQQm9keSA9IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKKyAgICBhdXRvIHNlcnZlclJlcXVlc3QgPSBhZG9wdE5TKFtzZXJ2ZXIu
cmVxdWVzdCgpIG11dGFibGVDb3B5XSk7CisgICAgW3NlcnZlclJlcXVlc3Qgc2V0SFRUUEJvZHk6
W0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICAK
ICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWREb3dubG9hZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3
IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0g
XihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBv
bGljeSkpIHsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlclJl
cXVlc3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxl
Z2F0ZS5nZXQoKS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3dubG9hZCAqLCBO
U0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CiAgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChyZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5
IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVT
dHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0
ZVN0cmluZywgW3NlcnZlclJlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKICAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFtZSJdLCAiQ3Vz
dG9tLVZhbHVlIik7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJz
b2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW1tzZXJ2ZXJSZXF1ZXN0IFVS
TF0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0
ZVN0cmluZyk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJl
Y3RQb2xpY3lBbGxvdyk7CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVz
dGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1
Z2dlc3RlZEZpbGVuYW1lLCAicmVkaXJlY3RUYXJnZXQudHh0Iik7CiAgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnBhdGgsICIvcmVkaXJlY3RUYXJnZXQiKTsKICAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnBhdGgs
ICIvIik7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5V
UkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAg
ICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9h
ZCAqKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rv
d25sb2FkICopIHsKICAgICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOwogICAgICAg
ICB9OwogICAgIH1dOwpAQCAtMjEwOCw3ICsyMTA4LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBSZWRp
cmVjdEFsbG93KQogICAgIAogICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAy
dSk7CiAKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpX
aWxsUmVkaXJlY3QsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKQEAgLTIxMTksMjEgKzIxMTks
MjEgQEAgVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKIHsKICAgICBhdXRvIHNlcnZl
ciA9IHJlZGlyZWN0U2VydmVyKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0g
c2VydmVyLnJlcXVlc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9f
YmxvY2sgYm9vbCBjYW5jZWxsZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBzdGFydERvd25sb2Fk
VXNpbmdSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25s
b2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwot
ICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3dubG9h
ZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVn
YXRlLmdldCgpLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5T
SFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKICAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25z
ZS5zdGF0dXNDb2RlLCAzMDEpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LmFsbEhlYWRlckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKICAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZl
clJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0
Il0uYWJzb2x1dGVTdHJpbmcpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUu
ZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICpyZXN1bWVEYXRhKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3Ig
PSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewog
ICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CiAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgICAgIEVY
UEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKQEAgLTIxNDEsNyArMjE0
MSw3IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVkaXJlY3RDYW5jZWwpCiAgICAgICAgIH07CiAgICAg
fV07CiAgICAgVXRpbDo6cnVuKCZjYW5jZWxsZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKICAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgogICAgIH0pOwpAQCAtMjE1MywxNCArMjE1MywxNCBA
QCBURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdEZhaWx1cmUpCiAgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoeyB9KTsKICAgICBOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIu
cmVxdWVzdCgpOwogICAgIHNlcnZlci5jYW5jZWwoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZp
ZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAogICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBz
dGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5n
ZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAq
ZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOwogICAgICAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKQEAgLTIxNjgsNyArMjE2OCw3IEBAIFRFU1QoV0tEb3dubG9hZCwgRG93
bmxvYWRSZXF1ZXN0RmFpbHVyZSkKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmZhaWxlZCk7CiAK
LSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWls
V2l0aEVycm9yLAogICAgIH0pOwogfQpAQCAtMjE3OSwxNyArMjE3OSwxNyBAQCBURVNUKFdLRG93
bmxvYWQsIERvd25sb2FkUmVxdWVzdDQwNCkKICAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0sICJo
dHRwIGJvZHkiIH0gfQogICAgIH0pOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCiAgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRp
b25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwotICAg
ICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwogICAgICAgICB9
OwogICAgIH1dOwpAQCAtMjE5Nyw3ICsyMTk3LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBEb3dubG9h
ZFJlcXVlc3Q0MDQpCiAKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgImh0dHAgYm9keSIpOwogCi0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZpbmlzaCwKICAgICB9KTsKQEAgLTIyMDcsMTUgKzIyMDcsMTUgQEAgVEVTVChXS0Rvd25s
b2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQogewogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRU
ZXN0U2VydmVyKCk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBf
X2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAg
ICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2lu
Z1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVE
ZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAg
IH07CiAgICAgfTsKQEAgLTIyMjMsMTQgKzIyMjMsMTQgQEAgVEVTVChXS0Rvd25sb2FkLCBOZXR3
b3JrUHJvY2Vzc0NyYXNoKQogICAgIHdhaXRGb3JGaXJzdDVrKHJldGFpbmVkRG93bmxvYWQpOwog
ICAgIAogICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUu
ZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICopIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwogICAgICAgICB0ZXJtaW5h
dGVkID0gdHJ1ZTsKICAgICB9OwotICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworICAgIFtbd2ViVmlldyBjb25maWd1
cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CiAgICAg
VXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMjI0NSwxMyArMjI0NSwxMyBAQCBURVNU
KFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCiAgICAgICAgIHsgIi8iLCB7
ICJkb3dubG9hZCBjb250ZW50IiB9IH0KICAgICB9KTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKIAotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5n
ZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdl
dCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7CiAgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CkBA
IC0yMjYxLDcgKzIyNjEsNyBAQCBURVNUKFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJv
bUhvc3QpCiAgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CiAKICAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQi
KTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLApAQCAtMjI3MywxMSArMjI3MywxMSBAQCBURVNUKFdLRG93bmxvYWQsIFN1Z2dlc3Rl
ZEZpbGVuYW1lRnJvbUhvc3QpCiBURVNUKFdLRG93bmxvYWQsIFJlcXVlc3RIVFRQQm9keSkKIHsK
ICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOwotICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwot
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0
YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgYXV0byByZXF1ZXN0ID0gYWRvcHROUyhbc2VydmVyLnJl
cXVlc3QoKSBtdXRhYmxlQ29weV0pOworICAgIFtyZXF1ZXN0IHNldEhUVFBCb2R5OltAImJvZHki
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW3dlYlZpZXcg
c3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpyZXF1ZXN0LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQu
b3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8g
bWFrZSB0aGlzIG5vbi1udWxsLgogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKQEAgLTIy
OTEsMTcgKzIyOTEsMTcgQEAgVEVTVChXS0Rvd25sb2FkLCBQYXRoTXVzdEV4aXN0KQogICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAImV4YW1wbGUudHh0Il07CiAKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcigpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBi
b29sIGZhaWxlZCA9IGZhbHNlOwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRp
b25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwotICAg
ICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVy
cm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgewogICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZp
bGUpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKQEAgLTIzMDksNyArMjMwOSw3IEBAIFRF
U1QoV0tEb3dubG9hZCwgUGF0aE11c3RFeGlzdCkKICAgICB9OwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwogICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKLSAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApA
QCAtMjMyMyw4ICsyMzIzLDggQEAgVEVTVChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQog
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CiAgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAgICAgX19ibG9j
ayBhdXRvIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpyZXRhaW5lZERlbGVnYXRlLmdldCgpXTsKIAogICAg
IEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRv
bWljYWxseTpZRVNdKTsKIApAQCAtMjM1NiwxNyArMjM1NiwxNyBAQCBURVNUKFdLRG93bmxvYWQs
IEZpbGVNdXN0Tm90RXhpc3QpCiBURVNUKFdLRG93bmxvYWQsIERlc3RpbmF0aW9uTnVsbFN0cmlu
ZykKIHsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOwotICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOwot
ICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
LSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmls
KTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tE
b3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgZGVsZWdhdGUu
Z2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwg
TlNEYXRhICopIHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5T
VVJMRXJyb3JEb21haW4pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJM
RXJyb3JDYW5jZWxsZWQpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKQEAgLTIzNzQsNyAr
MjM3NCw3IEBAIFRFU1QoV0tEb3dubG9hZCwgRGVzdGluYXRpb25OdWxsU3RyaW5nKQogICAgIH07
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAgICAgVXRpbDo6
cnVuKCZmYWlsZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMzg4LDI5ICsyMzg4LDI5IEBAIFRFU1QoV0tEb3dubG9h
ZCwgRGVzdGluYXRpb25OdWxsU3RyaW5nKQogVEVTVChXS0Rvd25sb2FkLCBDaGFsbGVuZ2VTdWNj
ZXNzKQogewogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHt7ICIvIiwgeyAiZG93bmxvYWQgY29udGVu
dCIgfX19LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwotICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAgICAgX19ibG9jayBib29sIGZpbmlz
aGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5pc2ggPSBe
KFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKICAgICB9
OwogICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOwotICAgIGRlbGVn
YXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRl
bnRpYWwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CiAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2
ZXJUcnVzdF0pOwogICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CiAgICAgfTsKLSAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgfTsKICAgICBbd2ViVmlldyBzdGFydERv
d25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH1d
OwogICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwogICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hh
bGxlbmdlKTsKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRv
d25sb2FkIGNvbnRlbnQiKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Cisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZp
bmlzaApAQCAtMjQyMSwxMCArMjQyMSwxMCBAQCBURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1
Y2Nlc3MpCiBURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZUZhaWx1cmUpCiB7CiAgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoeyB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwotICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgX19ibG9jayBib29sIGZh
aWxlZCA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAg
ZGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQs
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAjaWYgVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQogICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9u
J3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4K
QEAgLTI0MzUsMTkgKzI0MzUsMTkgQEAgVEVTVChXS0Rvd25sb2FkLCBDaGFsbGVuZ2VGYWlsdXJl
KQogICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgIH07CiAgICAgX19ibG9jayBib29sIHJlY2Vp
dmVkQ2hhbGxlbmdlID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGRlbGVnYXRl
LmdldCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RT
ZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKICAgICAgICAgcmVj
ZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOwogICAgIH07CiAgICAgW3dlYlZpZXcgc3RhcnREb3dubG9h
ZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9XTsKICAg
ICBVdGlsOjpydW4oJmZhaWxlZCk7CiAjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FE
UykKICAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZSk7CiAjZW5kaWYKLSAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZS5nZXQoKSwgewogI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCiAgICAg
ICAgIC8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVu
Z2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgogICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKQEAgLTI0NjgsMTEgKzI0NjgsMTEgQEAgdm9pZCBi
bG9iVGVzdChib29sIGRvd25sb2FkRnJvbU5hdmlnYXRpb25BY3Rpb24sIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxEb3dubG9hZEMKICAgICAifSIKICAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdk
b3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
ID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tX
ZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpu
aWxdOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0g
ICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0
aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KSkgeworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKICAgICAgICAgaWYgKFthY3Rp
b24ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiYWJvdXQ6Ymxh
bmsiXSkKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShhY3Rpb24uc2hvdWxkUGVyZm9ybURvd25s
b2FkKTsKICAgICAgICAgZWxzZSB7CkBAIC0yNDg1LDI5ICsyNDg1LDI5IEBAIHZvaWQgYmxvYlRl
c3QoYm9vbCBkb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uLCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8RG93bmxvYWRDCiAgICAgICAgIH0KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOwogICAgIH07Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlv
bkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0
aW9uICphY3Rpb24sIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCku
bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uQWN0aW9uICphY3Rpb24sIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShhY3Rpb24ucmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOwogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJi
bG9iIik7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5z
Y2hlbWUsICJibG9iIik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5h
bFJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
ICAgICB9OwotICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3Rl
ZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgZGVs
ZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2Fk
ICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUs
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CiAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgIH07CiAgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
V0tEb3dubG9hZCAqKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5pc2ggPSBe
KFdLRG93bmxvYWQgKikgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9OwogICAgIFV0aWw6
OnJ1bigmZG9uZSk7CiAKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgIjEyMyIpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIGV4cGVjdGVkQ2Fs
bGJhY2tzKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCBleHBlY3Rl
ZENhbGxiYWNrcyk7CiB9CiAKIFRFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNlKQpAQCAtMjU0
MCwyOCArMjU0MCwyOCBAQCBURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZU5vRmlsZW5hbWUp
CiAgICAgIiAgICBhLmNsaWNrKCk7IgogICAgICJ9IgogICAgICI8L3NjcmlwdD48Ym9keSBvbmxv
YWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsKLSAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIGRlbGVnYXRlLmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9u
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAg
ICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05h
dmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kpKSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhY3Rpb24uc2hvdWxk
UGVyZm9ybURvd25sb2FkKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3cpOwogICAgIH07Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCku
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIp
OwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2lu
Lmhvc3QsICJ3ZWJraXQub3JnIik7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgfTsK
ICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2lu
Z1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0
cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9i
Iik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIlVua25vd24i
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKICAgICAgICAgZG9uZSA9IHRydWU7
CiAgICAgfTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKQEAgLTI1OTIsMTIgKzI1OTIsMTIgQEAgVEVTVChXS0Rvd25s
b2FkLCBTdWJmcmFtZU9yaWdpbmF0b3IpCiAKICAgICBOU1N0cmluZyAqbWFpbkhUTUwgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVk
Lyc+PC9pZnJhbWU+IiwgY2hpbGRGcmFtZVNlcnZlci5wb3J0KCldOwogCi0gICAgYXV0byB3ZWJW
aWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1h
aW5IVE1MIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8i
XV07CiAKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwot
ICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgeworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgewog
ICAgICAgICBpZiAoW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFs
VG9TdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8iXQogICAgICAgICAgICAgfHwgW3Jlc3BvbnNl
LnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Y2hpbGRGcmFtZVNl
cnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXQogICAgICAgICAgICAgfHwgW3Jlc3BvbnNl
LnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Z3JhbmRjaGlsZEZy
YW1lU2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddKQpAQCAtMjYwNSwyMSArMjYwNSwy
MSBAQCBURVNUKFdLRG93bmxvYWQsIFN1YmZyYW1lT3JpZ2luYXRvcikKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lE
b3dubG9hZCk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25z
ZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJl
c3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CiAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIjEy
Ny4wLjAuMSIpOwogICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3Jp
Z2luLnBvcnQsIGdyYW5kY2hpbGRGcmFtZVNlcnZlclBvcnQpOwotICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
LmdldCgpOwogICAgIH07CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lk
ZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5V
Ukwuc2NoZW1lLCAiYmxvYiIpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmls
ZW5hbWUsICJVbmtub3duIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CiAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgIH07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKLSAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KaW5k
ZXggY2U0ZTJkZjE2ODUzMTMyM2FiOTcyZDc3ZDQ5MzVhOTNhOWJmMjM2Zi4uNjY3ZGEzNDU5MzFj
MDM0YTM3MDFmZjI4NDA1NDBmNDliMzliMmI1NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQpAQCAtMTAx
LDExICsxMDEsMTEgQEAgVEVTVChFdmVudEF0dHJpYnV0aW9uLCBCYXNpYykKICAgICBOU1VSTCAq
c2VydmVyVVJMID0gc2VydmVyLnJlcXVlc3QoKS5VUkw7CiAKICAgICBhdXRvIGV4YW1wbGVVUkwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20vIl07Ci0gICAgYXV0
byBhdHRyaWJ1dGlvbiA9IFtbW01vY2tFdmVudEF0dHJpYnV0aW9uIGFsbG9jXSBpbml0V2l0aFJl
cG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCkuVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVV
UkxdIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Ll91aUV2ZW50QXR0cmlidXRpb24gPSAoVUlFdmVudEF0
dHJpYnV0aW9uICopYXR0cmlidXRpb247Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwotICAg
IFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dUTFNDZXJ0aWZp
Y2F0ZUNoYWluOkBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSBmb3JIb3N0OnNlcnZlclVS
TC5ob3N0XTsKKyAgICBhdXRvIGF0dHJpYnV0aW9uID0gYWRvcHROUyhbW01vY2tFdmVudEF0dHJp
YnV0aW9uIGFsbG9jXSBpbml0V2l0aFJlcG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCkuVVJM
IGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkxdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtXS1dlYlZpZXcgbmV3XSk7CisgICAgd2ViVmlldy5nZXQoKS5fdWlFdmVudEF0dHJpYnV0aW9u
ID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKWF0dHJpYnV0aW9uLmdldCgpOworICAgIFtbd2ViVmll
dyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDpZRVNdOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW46QFsoaWQpdGVzdENlcnRpZmljYXRlKCku
Z2V0KCldIGZvckhvc3Q6c2VydmVyVVJMLmhvc3RdOwogICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb25VUkxGb3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0
aW9uSGFuZGxlcjpeewogICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZzpZRVMgY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAg
ICAgICAgIE5TU3RyaW5nICpodG1sID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2Ny
aXB0PmZldGNoKCclQGNvbnZlcnNpb25SZXF1ZXN0QmVmb3JlUmVkaXJlY3QnLHttb2RlOiduby1j
b3JzJ30pPC9zY3JpcHQ+Iiwgc2VydmVyVVJMXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRl
eCA3Yzg3ODI2ZmVlNmY0ZTQ0MTk3MDdiZTc1ZDIwNmRjZTg1YTY0ZTc0Li5iMjMwMmI1NTk0ZTc0
YmFmYzViZjBkMTk2N2ZjODUyZjVlMDAyZmQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBA
IC0xMTYsNyArMTE2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0
YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICBlbHNlIGlmIChb
dGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5LXRlc3QtYWJvdXQtYmxhbmstc3ViZnJhbWUiXSkKICAgICAgICAgcmVzcG9uc2UgPSBA
Ijxib2R5IGlkID0gJ2JvZHknPjwvYm9keT48aWZyYW1lIGlkPSdpZnJhbWUnPjwvaWZyYW1lPjwv
Ym9keT4iOwogCi0gICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpu
aWxdIGF1dG9yZWxlYXNlXV07CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3Rhc2sgZGlkUmVjZWl2
ZURhdGE6W3Jlc3BvbnNlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07
CiAgICAgW3Rhc2sgZGlkRmluaXNoXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW0KaW5k
ZXggNmY2N2RjMjdlZGMzZDI3NDViMTcwZTQ4MmJjZDkwZTg0OTRjYjk1YS4uODdhYjkxZDZlNmVi
Nzc0MzM1NGNkZTRhZjgzYTRjY2Y1MTY2Y2RmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3Mu
bW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFdLU2NyaXB0TWVzc2FnZSAqZ2V0TmV4dE1lc3Nh
Z2UoKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFtbc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNjcmlwdE1lc3NhZ2VzLnRha2VGaXJz
dCgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJNdWx0aVBy
b2Nlc3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25l
QmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCmluZGV4IGM3MjAxZGEwOTFmMTZiNTJiNGE4NThmZmE0
ZDRlZGUwNTZlYzNlZjUuLmYzYzNkODdkODUwMmU1MTdkODVmNjBhZmQxM2EyYTJhOTBiMzVmMDgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFj
a3dhcmRDb21wYXRpYmlsaXR5Lm1tCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBXS1NjcmlwdE1l
c3NhZ2UgKmdldE5leHRNZXNzYWdlKCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIH0KIAotICAgIHJldHVybiBbW3NjcmlwdE1l
c3NhZ2VzLnRha2VGaXJzdCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzY3Jp
cHRNZXNzYWdlcy50YWtlRmlyc3QoKS5hdXRvcmVsZWFzZSgpOwogfQogCiBURVNUKEluZGV4ZWRE
QiwgU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5KQpAQCAtOTYsNyArOTYsNyBA
QCBURVNUKEluZGV4ZWREQiwgU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5KQog
CiAgICAgUmV0YWluUHRyPF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYlBhdGg7Ci0gICAgY29u
ZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9y
ZWxlYXNlKCk7CiAKICAgICBpZGJQYXRoID0gW2lkYlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiZmlsZV9fMCJdOwogICAgIGlkYlBhdGggPSBbaWRiUGF0aCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJiYWNrd2FyZF9jb21wYXRpYmlsaXR5Il07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRlbXBGaWxlU2l6
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVt
cEZpbGVTaXplLm1tCmluZGV4IGU3Yjk5MjI4Y2U4NzZlNDQ3ZTY0NzgyZWY5ZDg3ZjI1YWRjOWI5
ZmEuLjkwNjBmYjkyODlmN2RkN2M2NmM2NDZmODliMjUxZTQ2ZWI1OTE2YzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVtcEZpbGVT
aXplLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCVGVtcEZpbGVTaXplLm1tCkBAIC03MSw3ICs3MSw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRl
eGVkREJUZW1wRmlsZVNpemUpCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSA9IGlkYlBhdGguZ2V0KCk7CiAKLSAgICBjb25maWd1cmF0aW9uLmdl
dCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1
dG9yZWxlYXNlXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBh
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICAg
ICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V0tX
ZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5pbF0pOwogCiAgICAgW2NvbmZpZ3Vy
YXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQo
KSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0pJ
VEVuYWJsZWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0pJVEVu
YWJsZWQubW0KaW5kZXggMWIwNjI2ZTJhMDUzMDljYjY1ZjllMzgwNDBhY2U0YTQyNDVkNDhmOC4u
YTg2NzIzMDBjYWIwNjVlNjE3ZTEyZTZlNzdiZjAwNzQyMThlOTkyYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbQpAQCAtNDks
NyArNDksNyBAQCBURVNUKFdlYktpdCwgSklURW5hYmxlZCkKICAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBuZXdd
KTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEpJVEVuYWJsZWQ6Tk9dOwogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3
XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6W1tbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldIGF1dG9yZWxlYXNlXV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6YWRv
cHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJW
aWV3Tm9KSVQgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIGNoZWNrSklURW5hYmxlZChXVEZNb3ZlKHdlYlZpZXdOb0pJVCksIE5PKTsKICAgICBj
aGVja0pJVEVuYWJsZWQoYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pLCBZRVMpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbQppbmRleCAzNGEyMTEwOTM1OTgzMTI2YWE2YTMw
ODIyOWFlZThmZDcyYTNlZDJjLi4wZmNjYzZmM2UwMDdhNjM5Y2JhNzcwMmFjZDllZWIzNDA2OWI3
Nzk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbQpAQCAtNTYsNyAr
NTYsNyBAQCBURVNUKFdLV2ViVmlldywgTG9jYWxTdG9yYWdlRmV0Y2hEYXRhUmVjb3JkcykKICAg
ICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gW1tbTG9jYWxTdG9yYWdlVUlEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tMb2NhbFN0b3JhZ2VVSURlbGVnYXRlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVh
c2UoKTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxzY3JpcHQ+bG9jYWxTdG9yYWdl
LnNldEl0ZW0oJ3Rlc3RLZXknLCAndGVzdFZhbHVlJyk7YWxlcnQobG9jYWxTdG9yYWdlLmdldEl0
ZW0oJ3Rlc3RLZXknKSk7PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL2xvY2FsaG9zdCJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvTmF2aWdhdGlvbi5tbQppbmRleCA1ZTc0ODIxZmE1YTRjZDIxNTYyMzkwMzY2OWRmY2I1
YmQ5ZTY2ZDI1Li4wNTFmOWE3Nzk4YjMzN2YxZTJjM2VmNGRjYzc0MDZmNTYyZGUzMjZiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9u
Lm1tCkBAIC0yMjUsOCArMjI1LDggQEAgQGVuZAogCiBURVNUKFdLTmF2aWdhdGlvbiwgRnJhbWVz
KQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgVGVzdFVS
TFNjaGVtZUhhbmRsZXIgKmhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
VGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hl
bWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsK
ICAgICAgICAgTlNTdHJpbmcgKnJlc3BvbnNlU3RyaW5nID0gbmlsOwogICAgICAgICBpZiAoW3Rh
c2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6Ly9o
b3N0MS8iXSkKQEAgLTI0NCw5ICsyNDQsOSBAQCBURVNUKFdLTmF2aWdhdGlvbiwgRnJhbWVzKQog
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbcmVzcG9uc2VTdHJpbmcgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsK
ICAgICB9XTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIg
Zm9yVVJMU2NoZW1lOkAiZnJhbWUiXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWUiXTsKIAotICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbRnJhbWVOYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSk7CiAgICAgICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZyYW1lOi8vaG9zdDEvIl1dXTsKQEAg
LTc0MywzMyArNzQzLDMzIEBAIFRFU1QoV0tOYXZpZ2F0aW9uLCBGcmFtZUJhY2tMb2FkaW5nKQog
ICAgICAgICB7ICIvZnJhbWUxLmh0bWwiLCB7ICI8YSBocmVmPSdmcmFtZTIuaHRtbCc+bGluazwv
YT4iIH0gfSwKICAgICAgICAgeyAiL2ZyYW1lMi5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZnJh
bWUyIGxvYWRlZCcpPC9zY3JpcHQ+IiB9IH0sCiAgICAgfSk7Ci0gICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byBvYnNlcnZlciA9IFtbTG9h
ZGluZ09ic2VydmVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9
IGRlbGVnYXRlOwotICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyIGZvcktleVBhdGg6
QCJsb2FkaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpu
aWxdOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmxvYWRpbmcpOwotICAgIEVYUEVDVF9FUShv
YnNlcnZlci5jaGFuZ2VzT2JzZXJ2ZWQsIDB1KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RVSURl
bGVnYXRlIG5ld10pOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtMb2FkaW5nT2JzZXJ2
ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Cisg
ICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImxvYWRp
bmciIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cisg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIEVYUEVDVF9FUShbb2Jz
ZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSwgMHUpOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOwotICAgIEVYUEVDVF9UUlVFKHdlYlZpZXcubG9hZGluZyk7Ci0gICAg
RVhQRUNUX0VRKG9ic2VydmVyLmNoYW5nZXNPYnNlcnZlZCwgMXUpOwotICAgIHdoaWxlIChvYnNl
cnZlci5jaGFuZ2VzT2JzZXJ2ZWQgPCAydSkKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBpc0xv
YWRpbmddKTsKKyAgICBFWFBFQ1RfRVEoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZlZF0sIDF1KTsK
KyAgICB3aGlsZSAoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZlZF0gPCAydSkKICAgICAgICAgVXRp
bDo6c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldy5sb2FkaW5nKTsKLSAg
ICBFWFBFQ1RfRVEob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkLCAydSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHdlYlZpZXcuY2FuR29CYWNrKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaXNMb2Fk
aW5nXSk7CisgICAgRVhQRUNUX0VRKFtvYnNlcnZlciBjaGFuZ2VzT2JzZXJ2ZWRdLCAydSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGNhbkdvQmFja10pOwogICAgIFt3ZWJWaWV3IGV2YWx1
YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYScpLmNsaWNrKCkiIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAi
ZnJhbWUyIGxvYWRlZCIpOwotICAgIEVYUEVDVF9FUShvYnNlcnZlci5jaGFuZ2VzT2JzZXJ2ZWQs
IDJ1KTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3LmNhbkdvQmFjayk7CisgICAgRVhQRUNUX0VR
KFtvYnNlcnZlciBjaGFuZ2VzT2JzZXJ2ZWRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcgY2FuR29CYWNrXSk7CiAgICAgW3dlYlZpZXcgZ29CYWNrXTsKLSAgICB3aGlsZSAob2JzZXJ2
ZXIuY2hhbmdlc09ic2VydmVkIDwgMykKKyAgICB3aGlsZSAoW29ic2VydmVyIGNoYW5nZXNPYnNl
cnZlZF0gPCAzKQogICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwotICAgIEVYUEVDVF9UUlVF
KHdlYlZpZXcubG9hZGluZyk7Ci0gICAgd2hpbGUgKG9ic2VydmVyLmNoYW5nZXNPYnNlcnZlZCA8
IDQpCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgaXNMb2FkaW5nXSk7CisgICAgd2hpbGUgKFtv
YnNlcnZlciBjaGFuZ2VzT2JzZXJ2ZWRdIDwgNCkKICAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3Ao
KTsKLSAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldy5sb2FkaW5nKTsKLSAgICBbd2ViVmlldyByZW1v
dmVPYnNlcnZlcjpvYnNlcnZlciBmb3JLZXlQYXRoOkAibG9hZGluZyJdOworICAgIEVYUEVDVF9G
QUxTRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKyAgICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjpv
YnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAibG9hZGluZyJdOwogCiB9CiAKQEAgLTgwNCwxMSAr
ODA0LDExIEBAIFRFU1QoV0tOYXZpZ2F0aW9uLCBTaW11bHRhbmVvdXNOYXZpZ2F0aW9uV2l0aEZv
bnRzRmluaXNoZXMpCiAgICAgICAgIHsgIi9pZnJhbWVzcmMuaHRtbCIsIHsgImZyYW1lIGNvbnRl
bnQiIH0gfSwKICAgICB9KTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAot
ICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdh
dGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSkpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CiAgICAgICAgIGlmIChb
YWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJyZWZyZXNoLW5hdiJd
KQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
Q2FuY2VsKTsKICAgICAgICAgZWxzZQpAQCAtODE2LDcgKzgxNiw3IEBAIFRFU1QoV0tOYXZpZ2F0
aW9uLCBTaW11bHRhbmVvdXNOYXZpZ2F0aW9uV2l0aEZvbnRzRmluaXNoZXMpCiAgICAgfTsKIAog
ICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKLSAgICBkZWxlZ2F0
ZS5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsK
KyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uICopIHsKICAgICAgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gdHJ1ZTsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05hdmlnYXRpb25BY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL05hdmlnYXRpb25BY3Rpb24ubW0KaW5kZXggZmNjNzI2NWZkMmYwOTFlYmJmY2MwMzc5ZGRi
OWE4NmFlNTc0MWZiNC4uZGY3YWE3YzUzMjAxZDBmZTkxZTI2NDM5NmFjY2I2YTYxNTFkYzJhYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0
aW9uQWN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TmF2aWdhdGlvbkFjdGlvbi5tbQpAQCAtMTk4LDExICsxOTgsMTEgQEAgVEVTVChXS05hdmlnYXRp
b25BY3Rpb24sIEJsb2JSZXF1ZXN0Qm9keSkKICAgICAgICAgICAgICJ9IgogICAgICAgICAiPC9z
Y3JpcHQ+IgogICAgICAgICAiPGJvZHkgb25sb2FkPSdib2R5TG9hZGVkKCknPiI7Ci0gICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
Ci0gICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZp
Z2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5KSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKICAgICAgICAgRVhQ
RUNUX05VTEwoYWN0aW9uLnJlcXVlc3QuSFRUUEJvZHkpOwogICAgICAgICBpZiAoW2FjdGlvbi5y
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJhYm91dDpibGFuayJd
KQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3cpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9OZXR3b3JrUHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTmV0d29ya1Byb2Nlc3MubW0KaW5kZXggNWRkYzUxM2JjODkzZmMzYzYyNjIzMGZmNmYzYzBl
NzgwZTY5YTA4YS4uNDNmYzFlZGZhZDViYzNjYTI0MDRhNmRmNDc4YWFmMzg4NjNlMTM0ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJv
Y2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdv
cmtQcm9jZXNzLm1tCkBAIC0zNiw3ICszNiw3IEBACiAKIFRFU1QoV2ViS2l0LCBOZXR3b3JrUHJv
Y2Vzc0VudGl0bGVtZW50cykKIHsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOltbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVs
ZWFzZSgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIl07CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlICpzdG9yZSA9IFt3ZWJWaWV3IGNvbmZp
Z3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmU7CiAgICAgYm9vbCBoYXNFbnRpdGxlbWVudCA9IFtz
dG9yZSBfbmV0d29ya1Byb2Nlc3NIYXNFbnRpdGxlbWVudEZvclRlc3Rpbmc6QCJjb20uYXBwbGUu
cm9vdGxlc3Muc3RvcmFnZS5XZWJLaXROZXR3b3JraW5nU2FuZGJveCJdOwpAQCAtODIsOSArODIs
OSBAQCBURVNUKFdlYktpdCwgSFRUUFJlZmVyZXIpCiAKIFRFU1QoV2ViS2l0LCBOZXR3b3JrUHJv
Y2Vzc0xhdW5jaE9ubHlXaGVuTmVjZXNzYXJ5KQogewotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IFlFUzsKLSAgICBb
d2ViVmlldy5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZUFzU2Vj
dXJlOkAidGVzdCJdOwotICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3Jl
Z2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJ0ZXN0Il07
Ci0gICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfbmV0d29ya1Byb2Nlc3NFeGlzdHNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFT
dG9yZS5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBZRVM7CisgICAgW1t3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlOkAi
dGVzdCJdOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfcmVnaXN0
ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTpAInRlc3QiXTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUg
X25ldHdvcmtQcm9jZXNzRXhpc3RzXSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzQ3Jhc2hOb25QZXJzaXN0ZW50RGF0
YVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NyYXNoTm9uUGVyc2lzdGVudERhdGFTdG9yZS5tbQppbmRleCAyZjhhMmUzM2ZlODcw
M2JhYjJkOGUwNTEwODMyYmVjZDlkNDg5MzRiLi44NDdjMjZhZjAwOTg3NzYxZDJkMzAxMmUzYTBm
MGQ5N2RkZGM5NTU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL05ldHdvcmtQcm9jZXNzQ3Jhc2hOb25QZXJzaXN0ZW50RGF0YVN0b3JlLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3NDcmFz
aE5vblBlcnNpc3RlbnREYXRhU3RvcmUubW0KQEAgLTg0LDUgKzg0LDUgQEAgVEVTVChXZWJLaXQs
IE5ldHdvcmtQcm9jZXNzQ3Jhc2hOb25QZXJzaXN0ZW50RGF0YVN0b3JlKQogCiBURVNUKFdlYktp
dCwgTmV0d29ya1Byb2Nlc3NDcmFzaE5vbkRlZmF1bHRQZXJzaXN0ZW50RGF0YVN0b3JlKQogewot
ICAgIGNoZWNrUmVjb3ZlcnlBZnRlckNyYXNoKFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV0pOworICAgIGNoZWNrUmVj
b3ZlcnlBZnRlckNyYXNoKGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV0pLmF1dG9yZWxlYXNlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVmZXJlbmNl
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVyZW5jZXMu
bW0KaW5kZXggMDllZjA2MWVkYTFmZDU0MjA0NjJkMDdlNDBiZjMwNTVlNDY5OTI0NC4uZTI4M2Y0
NTkwNDYzODA5NmYwYmY5ODQ3Mzg4NDFhMjZkMDY0ZTM1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVmZXJlbmNlcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWZlcmVuY2VzLm1tCkBAIC03MCw5ICs3
MCw5IEBAIFRFU1QoV2ViS2l0LCBFeHBlcmltZW50YWxGZWF0dXJlcykKIFRFU1QoV2ViS2l0LCBX
ZWJBdWRpb1ByZWZlcmVuY2UpCiB7CiAgICAgYXV0byBjaGVjayA9IFtdKGJvb2wgdmFsdWUpIHsK
LSAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5wcmVmZXJlbmNlcy5fd2ViQXVkaW9FbmFibGVkID0gdmFsdWU7Ci0gICAgICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XS5fd2ViQXVkaW9FbmFibGVkID0gdmFsdWU7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAs
IDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIF9fYmxv
Y2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TU3RyaW5n
PiByZXN1bHQ7CiAgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIm5ldyBCb29s
ZWFuKHdpbmRvdy5BdWRpb0NvbnRleHQpLnRvU3RyaW5nKCkiIGNvbXBsZXRpb25IYW5kbGVyOl4o
aWQgcmVzdWx0RnJvbUpTLCBOU0Vycm9yICplcnJvcikgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KaW5kZXggYjkxMmQxNjViN2FkYzkxMWE4NDQxZjgyZTJjYjQ0NTBkNjA4MmZiOS4u
M2RmYjg4MGFiMGNjMmIzOTAyNTRiMmM1M2ViNGUyZjQ2NmI5YjgwMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCkBAIC01NDU0LDcgKzU0NTQsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBVc2VQcmV3YXJtZWRQcm9jZXNzQWZ0ZXJUZXJtaW5hdGluZ05ldHdvcmtQcm9jZXNzKQogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nl
c3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKLSAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRv
cmVsZWFzZV07CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9y
ZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgp
OwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09O
TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQppbmRleCAxZjYwNjVmZDBiNDA0ZmZjNDJjN2I3
NjAzY2VlZWVjMDhjMDFkYzVkLi5hNjBlYzZhNzk5MjI0YThiY2YzZTIwNmY2OTA4OWI3YWM0MGM2
MTE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b3h5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHku
bW0KQEAgLTg0LDcgKzg0LDcgQEAgVEVTVChXZWJLaXQsIEhUVFBTUHJveHkpCiAgICAgW3N0b3Jl
Q29uZmlndXJhdGlvbiBzZXRIVFRQU1Byb3h5OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQo
KV1dXTsKICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldEFsbG93c1NlcnZlclByZWNvbm5lY3Q6
Tk9dOwogICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIG5ld10pOwotICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpz
dG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgW3ZpZXdDb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5h
dXRvcmVsZWFzZSgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246dmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbUHJveHlEZWxlZ2F0ZSBuZXddKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoV2ViS2l0LCBIVFRQ
UHJveHlBdXRoZW50aWNhdGlvbikKICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldFByZXZlbnRz
U3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb246WUVTXTsKIAogICAgIGF1dG8gdmlld0NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAgIFt2
aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
IGF1dG9yZWxlYXNlXV07CisgICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246dmlld0NvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbUHJveHlEZWxlZ2F0ZSBuZXddKTsK
ICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAt
MTc0LDcgKzE3NCw3IEBAIFRFU1QoV2ViS2l0LCBTZWN1cmVQcm94eUNvbm5lY3Rpb24pCiAgICAg
W3N0b3JlQ29uZmlndXJhdGlvbiBzZXRSZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9u
OllFU107CiAKICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt2aWV3Q29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1
cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vZXhhbXBsZS5jb20vIl1dXTsKICAgICB3aGlsZSAoIXJlY2VpdmVkVmFsaWRDbGllbnRI
ZWxsbykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGFmZTI0ODY5ZTRkNDRjMmNkODU2
MGFmZDVlNmNjM2RjMmEzMTM4MDcuLmU1NGM3OGM1YjRlZGEyOTdjYTYxMWNhZDcyNDUwZjIzYTQ2
ZjYwNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTI3LDEzICsxMjcsMTMgQEAg
VEVTVChXZWJLaXQsIFJlbW90ZU9iamVjdFJlZ2lzdHJ5KQogICAgICAgICBpc0RvbmUgPSBmYWxz
ZTsKIAogICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsK
LSAgICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNIVFRQVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJr
aXQub3JnLyJdIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZp
ZWxkczpAeyBAInRlc3RGaWVsZE5hbWUiIDogQCJ0ZXN0RmllbGRWYWx1ZSIgfV0gYXV0b3JlbGVh
c2VdOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0
Lm9yZy8iXSBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVs
ZHM6QHsgQCJ0ZXN0RmllbGROYW1lIiA6IEAidGVzdEZpZWxkVmFsdWUiIH1dKTsKICAgICAgICAg
TlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJ0ZXN0RG9tYWluIiBj
b2RlOjEyMyB1c2VySW5mbzpAe0AiYSI6QCJiIn1dOwotICAgICAgICBOU1VSTFByb3RlY3Rpb25T
cGFjZSAqcHJvdGVjdGlvblNwYWNlID0gW1tbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGlu
aXRXaXRoSG9zdDpAInRlc3RIb3N0IiBwb3J0OjgwIHByb3RvY29sOkAidGVzdFByb3RvY29sIiBy
ZWFsbTpAInRlc3RSZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZEhUVFBEaWdlc3RdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byBwcm90ZWN0aW9u
U3BhY2UgPSBhZG9wdE5TKFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9z
dDpAInRlc3RIb3N0IiBwb3J0OjgwIHByb3RvY29sOkAidGVzdFByb3RvY29sIiByZWFsbTpAInRl
c3RSZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhU
VFBEaWdlc3RdKTsKICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gW05TVVJM
Q3JlZGVudGlhbCBjcmVkZW50aWFsV2l0aFVzZXI6QCJ0ZXN0VXNlciIgcGFzc3dvcmQ6QCJ0ZXN0
UGFzc3dvcmQiIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
bl07CiAgICAgICAgIGlkPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+IHNlbmRl
ciA9IG5pbDsKLSAgICAgICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
ID0gW1tbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10gaW5pdFdpdGhQcm90ZWN0
aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlIHByb3Bvc2VkQ3JlZGVudGlhbDpjcmVkZW50aWFsIHBy
ZXZpb3VzRmFpbHVyZUNvdW50OjQyIGZhaWx1cmVSZXNwb25zZTpyZXNwb25zZSBlcnJvcjplcnJv
ciBzZW5kZXI6c2VuZGVyXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFtvYmplY3Qgc2VuZFJlcXVl
c3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBjaGFsbGVuZ2U6Y2hhbGxlbmdlIGVycm9yOmVy
cm9yIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNVUkxSZXF1ZXN0ICpkZXNlcmlhbGl6ZWRSZXF1ZXN0
LCBOU1VSTFJlc3BvbnNlICpkZXNlcmlhbGl6ZWRSZXNwb25zZSwgTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqZGVzZXJpYWxpemVkQ2hhbGxlbmdlLCBOU0Vycm9yICpkZXNlcmlhbGl6ZWRF
cnJvcikgeworICAgICAgICBhdXRvIGNoYWxsZW5nZSA9IGFkb3B0TlMoW1tOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGFsbG9jXSBpbml0V2l0aFByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9u
U3BhY2UuZ2V0KCkgcHJvcG9zZWRDcmVkZW50aWFsOmNyZWRlbnRpYWwgcHJldmlvdXNGYWlsdXJl
Q291bnQ6NDIgZmFpbHVyZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpIGVycm9yOmVycm9yIHNlbmRl
cjpzZW5kZXJdKTsKKyAgICAgICAgW29iamVjdCBzZW5kUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNl
OnJlc3BvbnNlLmdldCgpIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgZXJyb3I6ZXJyb3IgY29t
cGxldGlvbkhhbmRsZXI6XihOU1VSTFJlcXVlc3QgKmRlc2VyaWFsaXplZFJlcXVlc3QsIE5TVVJM
UmVzcG9uc2UgKmRlc2VyaWFsaXplZFJlc3BvbnNlLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICpkZXNlcmlhbGl6ZWRDaGFsbGVuZ2UsIE5TRXJyb3IgKmRlc2VyaWFsaXplZEVycm9yKSB7
CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzZXJpYWxpemVkUmVxdWVzdC5VUkwuYWJz
b2x1dGVTdHJpbmcsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoWyhOU0hUVFBVUkxSZXNwb25zZSAqKWRlc2VyaWFsaXplZFJlc3BvbnNlIGFsbEhl
YWRlckZpZWxkc11bQCJ0ZXN0RmllbGROYW1lIl0sICJ0ZXN0RmllbGRWYWx1ZSIpOwogICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc2VyaWFsaXplZENoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UucmVhbG0sICJ0ZXN0UmVhbG0iKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBAZW5kCiAKIFRFU1Qo
V2ViS2l0LCBSZW1vdGVPYmplY3RSZWdpc3RyeV9DYWxsUmVwbHlCbG9ja0FmdGVyT3JpZ2luYXRp
bmdXZWJWaWV3RGVhbGxvY2F0ZXMpCiB7Ci0gICAgTG9jYWxPYmplY3QgKmxvY2FsT2JqZWN0ID0g
W1tbTG9jYWxPYmplY3QgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGxvY2Fs
T2JqZWN0ID0gYWRvcHROUyhbW0xvY2FsT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgV2Vha09i
akNQdHI8V0tXZWJWaWV3PiB3ZWFrV2ViVmlld1B0cjsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewpAQCAtMjIxLDcgKzIyMSw3IEBAIFRFU1QoV2ViS2l0LCBSZW1vdGVPYmplY3RSZWdpc3RyeV9D
YWxsUmVwbHlCbG9ja0FmdGVyT3JpZ2luYXRpbmdXZWJWaWV3RGVhbGxvY2F0CiAgICAgICAgIF9X
S1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gcmVtb3RlT2JqZWN0SW50ZXJmYWNl
KCk7CiAgICAgICAgIGlkIDxSZW1vdGVPYmplY3RQcm90b2NvbD4gb2JqZWN0ID0gW1t3ZWJWaWV3
IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOmlu
dGVyZmFjZV07CiAKLSAgICAgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVn
aXN0ZXJFeHBvcnRlZE9iamVjdDpsb2NhbE9iamVjdCBpbnRlcmZhY2U6bG9jYWxPYmplY3RJbnRl
cmZhY2UoKV07CisgICAgICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lz
dGVyRXhwb3J0ZWRPYmplY3Q6bG9jYWxPYmplY3QuZ2V0KCkgaW50ZXJmYWNlOmxvY2FsT2JqZWN0
SW50ZXJmYWNlKCldOwogCiAgICAgICAgIFtvYmplY3QgY2FsbFVJUHJvY2Vzc01ldGhvZFdpdGhS
ZXBseUJsb2NrXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCmluZGV4IDc3YTUzNzdk
MzZlMTZlMTMwNzcyNjdhZjJjMjY1ZDU3MDRjODUzYmEuLmRjYmZkNTA3OTU0NmE0NmMzNjk5ZjE4
OGQ4YjZmMzBiN2EyZWVkNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3VGltZW91dC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2ViVmlld1RpbWVvdXQubW0KQEAgLTM4
LDcgKzM4LDcgQEAgVEVTVChXZWJLaXQsIFJlcGFyZW50V2ViVmlld1RpbWVvdXQpCiAgICAgW3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRJZ25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVv
dXRzRm9yVGVzdGluZzpZRVNdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOltbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQ
b29sOmFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogCiAgICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiaGVsbG8iXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZERl
bGVnYXRlLm1tCmluZGV4IDBjNTU5YWMzN2RjMWMzYTA0NzNmYTEzMzBhYTEwNGJiZjg1YmI3NTQu
LjgxYjE0ZjQ1NjNkMzgyY2QwNTAwZjNiNTUzODY1N2U1OWU2MTZhYzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIFRFU1QoUmVzb3VyY2VMb2FkRGVsZWdh
dGUsIExvYWRJbmZvKQogCiAgICAgRVhQRUNUX1dLX1NUUkVRKE5TU3RyaW5nRnJvbUNsYXNzKFtv
dGhlclBhcmFtZXRlcnNbOF0gY2xhc3NdKSwgIk5TTXV0YWJsZVVSTFJlcXVlc3QiKTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoW290aGVyUGFyYW1ldGVyc1s4XSBVUkxdLnBhdGgsICIvZmV0Y2hUYXJn
ZXQiKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpbb3RoZXJQYXJhbWV0ZXJzWzhdIEhUVFBCb2R5XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10gYXV0b3JlbGVhc2VdLCAiYT1iJmM9ZCIpOworICAgIEVYUEVDVF9XS19TVFJFUShhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbb3RoZXJQYXJhbWV0ZXJzWzhdIEhU
VFBCb2R5XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmdldCgpLCAiYT1iJmM9ZCIp
OwogICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJz
WzldIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOwogICAgIEVYUEVDVF9XS19TVFJFUShb
b3RoZXJQYXJhbWV0ZXJzWzldIFVSTF0ucGF0aCwgIi9mZXRjaFRhcmdldCIpOwogICAgIEVYUEVD
VF9FUShvdGhlclBhcmFtZXRlcnNbMTBdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tCmluZGV4IGNmOWZjMzQwZTM5MGUyOGU0MTRkMGQwNDFhYmQ2Mjg5MTM2N2NjYTAuLjkxNDI4
NDY1YWYwNzE0MDA4Y2FmM2Y2OTZiZGQwM2U0Y2E2ZjU3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsIFJlbW92ZVNlc3Npb25JRCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNp
dGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNl
XTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKQEAgLTUzNSwxMiArNTM1LDEyIEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRGF0
YVRhc2tJZGVudGlmaWVyQ29sbGlzaW9uKQogICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tl
dCwgYm9keSwgc3RybGVuKGJvZHkpKTsKICAgICB9KTsKIAotICAgIF9XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHN0b3JlQ29uZmlndXJhdGlv
bi5odHRwc1Byb3h5ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBodHRwc1NlcnZlci5wb3J0KCldXTsKLSAg
ICBzdG9yZUNvbmZpZ3VyYXRpb24uYWxsb3dzU2VydmVyUHJlY29ubmVjdCA9IE5POwotICAgIFdL
V2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgc3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmh0
dHBzUHJveHkgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIGh0dHBzU2VydmVyLnBvcnQoKV1dOworICAgIHN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0ID0gTk87CisgICAg
YXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8g
dmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10p
OwotICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07
CisgICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdl
dCgpXTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9u
OnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcxIHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAInN0YXJ0IG5ldHdvcmsgcHJvY2VzcyBhbmQgaW5pdGlhbGl6ZSBkYXRh
IHN0b3JlIl07CkBAIC01ODMsOCArNTgzLDggQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LCBEYXRhVGFza0lkZW50aWZpZXJDb2xsaXNpb24pCiBURVNUKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsIE5vTWVzc2FnZXNXaGVuTm90VGVzdGluZykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFdL
V2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOltbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNlXTsKLSAgICBbY29uZmln
dXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAgYXV0byBkYXRhU3Rv
cmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOmFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pLmF1dG9yZWxlYXNlKCldKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0
YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CiAgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKQEAgLTEyNTAsOSArMTI1MCw5
IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgQ2FuQWNjZXNzRGF0YVN1bW1hcnlXaXRo
Tm9Qcm9jZXNzUG9vbCkKICAgICBbZGVmYXVsdEZpbGVNYW5hZ2VyIGNvcHlJdGVtQXRQYXRoOm5l
d0ZpbGVVUkwucGF0aCB0b1BhdGg6ZmlsZVVSTC5wYXRoIGVycm9yOm5pbF07CiAgICAgRVhQRUNU
X1RSVUUoW2RlZmF1bHRGaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmZpbGVVUkwucGF0aF0p
OwogCi0gICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKmRhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gPSBbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10gYXV0b3Jl
bGVhc2VdOwotICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkgPSBpdHBSb290VVJMOwotICAgIGF1dG8gKmRhdGFTdG9yZSA9IFtbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25m
aWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAg
ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSA9IGl0cFJvb3RVUkw7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDpZRVNdOwogCiAgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcgPSBmYWxzZTsKQEAg
LTEyNzksNyArMTI3OSw3IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgU3RvcmVTdXNw
ZW5zaW9uKQogewogICAgIGF1dG8gKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wg
X3NoYXJlZFByb2Nlc3NQb29sXTsKICAgICBhdXRvICpkYXRhU3RvcmUxID0gW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKLSAgICBhdXRvICpkYXRhU3RvcmUyID0gW1tbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOltbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIGRhdGFTdG9yZTIgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCldKTsKIAogICAg
IFtkYXRhU3RvcmUxIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwogICAg
IFtkYXRhU3RvcmUyIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwpAQCAt
MTI5MCw3ICsxMjkwLDcgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBTdG9yZVN1c3Bl
bnNpb24pCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24yID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbjIgc2V0UHJvY2Vz
c1Bvb2w6IHNoYXJlZFByb2Nlc3NQb29sXTsKLSAgICBjb25maWd1cmF0aW9uMi5nZXQoKS53ZWJz
aXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlMjsKKyAgICBjb25maWd1cmF0aW9uMi5nZXQoKS53ZWJz
aXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlMi5nZXQoKTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbjEuZ2V0KCldKTsKICAgICBhdXRv
IHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24yLmdldCgp
XSk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgIGVs
c2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL3RwLWxvYWQi
XSkKICAgICAgICAgcmVzcG9uc2UgPSBAIjxib2R5PjwvYm9keT4iOwogCi0gICAgW3Rhc2sgZGlk
UmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2su
cmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpy
ZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0
b3JlbGVhc2UoKV07CiAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNlIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW3Rhc2sgZGlkRmluaXNoXTsK
IH0KQEAgLTEzNDIsMTAgKzEzNDIsMTAgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBC
YWNrRm9yd2FyZFBlclBhZ2VEYXRhKQogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRv
cHROUyhbW1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJyZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MiXTsKIAotICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAKICAgICBzdGF0aWMgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3Npbmcu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5t
bQppbmRleCBjMGY1MjUxZjQ1ZjNkZDI4YTZlNDZlMTMwYWU2ZTBmOWJlM2Q2Yjg5Li5jZWE4NTli
NTlkOWJiNjI5YTY2YTBhZjRlNDk5NDA2ZTk3MTg4OWU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbQpAQCAtNzcsNyAr
NzcsNyBAQCBAaW1wbGVtZW50YXRpb24gVGVzdFNlcnZpY2VMb29rdXBSZXN1bHQKIAogKyAoaW5z
dGFuY2V0eXBlKXJlc3VsdFdpdGhQcm92aWRlcjooUmV0YWluUHRyPE5TU3RyaW5nPiYmKXByb3Zp
ZGVyIHBoaXNoaW5nOihCT09MKXBoaXNoaW5nIG1hbHdhcmU6KEJPT0wpbWFsd2FyZSB1bndhbnRl
ZFNvZnR3YXJlOihCT09MKXVud2FudGVkU29mdHdhcmUKIHsKLSAgICBUZXN0U2VydmljZUxvb2t1
cFJlc3VsdCAqcmVzdWx0ID0gW1tUZXN0U2VydmljZUxvb2t1cFJlc3VsdCBhbGxvY10gaW5pdF07
CisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbVGVzdFNlcnZpY2VMb29rdXBSZXN1bHQgYWxs
b2NdIGluaXRdKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
ODYsNyArODYsNyBAQCArIChpbnN0YW5jZXR5cGUpcmVzdWx0V2l0aFByb3ZpZGVyOihSZXRhaW5Q
dHI8TlNTdHJpbmc+JiYpcHJvdmlkZXIgcGhpc2hpbmc6KEJPTwogICAgIHJlc3VsdC0+X2lzTWFs
d2FyZSA9IG1hbHdhcmU7CiAgICAgcmVzdWx0LT5faXNVbndhbnRlZFNvZnR3YXJlID0gdW53YW50
ZWRTb2Z0d2FyZTsKIAotICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopcHJvdmlkZXIKQEAg
LTEyMCwxMyArMTIwLDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBUZXN0TG9va3VwUmVzdWx0CiAKICsg
KGluc3RhbmNldHlwZSlyZXN1bHRXaXRoUmVzdWx0czooUmV0YWluUHRyPE5TQXJyYXk8VGVzdFNl
cnZpY2VMb29rdXBSZXN1bHQgKj4+JiYpcmVzdWx0cwogewotICAgIFRlc3RMb29rdXBSZXN1bHQg
KnJlc3VsdCA9IFtbVGVzdExvb2t1cFJlc3VsdCBhbGxvY10gaW5pdF07CisgICAgYXV0byByZXN1
bHQgPSBhZG9wdE5TKFtbVGVzdExvb2t1cFJlc3VsdCBhbGxvY10gaW5pdF0pOwogICAgIGlmICgh
cmVzdWx0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIHJlc3VsdC0+X3Jlc3VsdHMg
PSBXVEZNb3ZlKHJlc3VsdHMpOwogICAgIAotICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXk8VGVz
dFNlcnZpY2VMb29rdXBSZXN1bHQgKj4gKilzZXJ2aWNlTG9va3VwUmVzdWx0cwpAQCAtMzA4LDcg
KzMwOCw3IEBAIFRFU1QoU2FmZUJyb3dzaW5nLCBTaG93V2FybmluZ1NQSSkKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgYXV0byBzaG93V2FybmluZyA9
IF57CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gZmFsc2U7Ci0gICAgICAgIFt3
ZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHRpdGxlOkAidGVzdCB0
aXRsZSIgd2FybmluZzpAInRlc3Qgd2FybmluZyIgZGV0YWlsczpbW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAidGVzdCBkZXRhaWxzIl0gYXV0b3JlbGVhc2VdIGNv
bXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzaG91bGRDb250aW51ZSkgeworICAgICAgICBbd2ViVmll
dyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTpAInRlc3QgdGl0bGUi
IHdhcm5pbmc6QCJ0ZXN0IHdhcm5pbmciIGRldGFpbHM6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJ0ZXN0IGRldGFpbHMiXSkuYXV0b3JlbGVhc2Uo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAg
IHNob3VsZENvbnRpbnVlVmFsdWUgPSBzaG91bGRDb250aW51ZTsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAgfV07CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCmluZGV4IGU5MzYwNWYwNTJhMmJlYmI2YmRiYjFjZDlhN2JiZDI2NmE0MjE1ZTYuLmRkNzA3
NjI1NmI1ZjQyZWMxNjA3MTlmYzAyZjg0NzVkMWEzNGZhNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCkBAIC00NzcsMTEgKzQ3NywxMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhVc2VyQWdl
bnQ6KE5TU3RyaW5nICopdXNlckFnZW50CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0
aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KilwcmVmZXJlbmNlcyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlv
bi50YXJnZXRGcmFtZS5tYWluRnJhbWUpCiAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1
c3RvbVVzZXJBZ2VudDpfdXNlckFnZW50XTsKIAotICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQo
KSk7CiB9CiAKIEBlbmQKQEAgLTE0MDcsNyArMTQwNyw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IE5vbkRlZmF1bHRTZXNzaW9uSUQpCiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzZXJ2aWNlV29ya2Vy
c1BhdGg7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0aDsKIAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
d2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3Jl
bGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0
TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogCiAgICAg
UmV0YWluUHRyPFNXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlPiBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxv
Y10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwpA
QCAtMTQ1NiwxMCArMTQ1NiwxMCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyU2l0
ZSkKIAogICAgIC8vIE5vcm1hbGx5LCBzZXJ2aWNlIHdvcmtlcnMgZ2V0IHRlcm1pbmF0ZWQgc2V2
ZXJhbCBzZWNvbmRzIGFmdGVyIHRoZWlyIGNsaWVudHMgYXJlIGdvbmUuCiAgICAgLy8gRGlzYWJs
ZSB0aGlzIGRlbGF5IGZvciB0aGUgcHVycG9zZSBvZiB0ZXN0aW5nLgotICAgIF9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uICpkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAg
ICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQgPSBOTzsKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbZGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXlFbmFibGVkOk5PXTsKIAotICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVD
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKICAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0
YSBzdG9yZQogICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCmluZGV4IDBkNzY0OGFmOTExZWYy
OTMyYzQ4OTA0NzAyMTMzNzRmYjA3ZmZhNDEuLmYxYWI2ODM5ZGVjM2QyYTQxZTc0YTI4NzUzNDMz
ZGJiNDE2NmRkODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3RvcmFnZVF1b3RhLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tCkBAIC0yNTAsMTYgKzI1MCwxNiBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgc2V0VmlzaWJsZShUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3KQogVEVTVChXZWJLaXQs
IFF1b3RhRGVsZWdhdGVIaWRkZW4pCiB7CiAgICAgZG9uZSA9IGZhbHNlOwotICAgIF9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAg
IHN0b3JlQ29uZmlndXJhdGlvbi5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAxMDI0ICogNDAwOwot
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3N0b3JlQ29uZmln
dXJhdGlvbiBzZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGE6MTAyNCAqIDQwMF07CisgICAgYXV0byBk
YXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFtkYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNl
dFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJz
aXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVy
ID0gYWRvcHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2Nv
bmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsKQEAgLTMxMCwxNiArMzEwLDE2IEBA
IFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlSGlkZGVuKQogVEVTVChXZWJLaXQsIFF1b3RhRGVs
ZWdhdGUpCiB7CiAgICAgZG9uZSA9IGZhbHNlOwotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHN0b3JlQ29uZmlndXJh
dGlvbi5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAxMDI0ICogNDAwOwotICAgIFdLV2Vic2l0ZURh
dGFTdG9yZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQZXJP
cmlnaW5TdG9yYWdlUXVvdGE6MTAyNCAqIDQwMF07CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlw
ZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNl
OltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRv
bmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6ZGF0YVN0b3JlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRh
dGFTdG9yZS5nZXQoKV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1
b3RhTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxl
ci5nZXQoKSBuYW1lOkAicXQiXTsKQEAgLTM3MSwxNiArMzcxLDE2IEBAIFRFU1QoV2ViS2l0LCBR
dW90YURlbGVnYXRlKQogVEVTVChXZWJLaXQsIFF1b3RhRGVsZWdhdGVSZWxvYWQpCiB7CiAgICAg
ZG9uZSA9IGZhbHNlOwotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpzdG9y
ZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHN0b3JlQ29uZmlndXJhdGlvbi5wZXJPcmlnaW5T
dG9yYWdlUXVvdGEgPSAxMDI0ICogNDAwOwotICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0
b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc3RvcmVDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQZXJPcmlnaW5TdG9yYWdlUXVv
dGE6MTAyNCAqIDQwMF07CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFu
dFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAg
IH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9y
ZV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0
KCldOwogICAgIAogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUXVvdGFNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJxdCJdOwpAQCAtNDE5LDE2ICs0MTksMTYgQEAgVEVTVChXZWJLaXQsIFF1b3RhRGVs
ZWdhdGVSZWxvYWQpCiBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZU5hdmlnYXRlRnJhZ21lbnQp
CiB7CiAgICAgZG9uZSA9IGZhbHNlOwotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHN0b3JlQ29uZmlndXJhdGlvbi5w
ZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAxMDI0ICogNDAwOwotICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc3Rv
cmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQZXJPcmlnaW5T
dG9yYWdlUXVvdGE6MTAyNCAqIDQwMF07CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0Rh
dGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0
cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0
YVN0b3JlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9y
ZS5nZXQoKV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQo
KSBuYW1lOkAicXQiXTsKQEAgLTQ3MCw4ICs0NzAsOCBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxl
Z2F0ZU5hdmlnYXRlRnJhZ21lbnQpCiBURVNUKFdlYktpdCwgRGVmYXVsdFF1b3RhKQogewogICAg
IGRvbmUgPSBmYWxzZTsKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3Rv
cmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9y
ZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpz
dG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwpAQCAtNDc5LDcg
KzQ3OSw3IEBAIFRFU1QoV2ViS2l0LCBEZWZhdWx0UXVvdGEpCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24g
c2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0aW9uIHNldFdl
YnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KaW5kZXgg
MjNkYmNmZTRjNGYxNTIzY2Q3OTNhYTExMTFjNGRhNGYyMTMzMjA5Ni4uNTU4NzI1ZDQ1NWI0NWI1
YWRjZGViZmQ1YTk1MWM2NTU4YWVlOTI4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCkBAIC0xNjMsOSArMTYz
LDkgQEAgVEVTVChUTFNWZXJzaW9uLCBEZWZhdWx0QmVoYXZpb3IpCiAKIFJldGFpblB0cjxXS1dl
YlZpZXc+IG1ha2VXZWJWaWV3V2l0aChXS1dlYnNpdGVEYXRhU3RvcmUgKnN0b3JlLCBSZXRhaW5Q
dHI8VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiB7Ci0gICAgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgPSBzdG9yZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpzdG9yZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CiAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0
aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwpAQCAtNDEzLDcgKzQx
Myw3IEBAIFRFU1QoVExTVmVyc2lvbiwgRGlkTmVnb3RpYXRlTW9kZXJuVExTKQogICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CiAg
ICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0
RmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ6WUVTXTsKLSAgICBbY29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFz
ZV1dOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwpAQCAtNDcwLDE4ICs0NzAsMTggQEAgVEVT
VChUTFNWZXJzaW9uLCBMZWdhY3lTdWJyZXNvdXJjZXMpCiAgICAgICAgIHsgIi8iLCB7IG1ha2VT
dHJpbmcoIjxpZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMToiLCBsZWdhY3lTZXJ2ZXIucG9y
dCgpLCAiL2ZyYW1lJy8+IikgfX0KICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMp
OwogCi0gICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0g
YXV0b3JlbGVhc2VdOwotICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZmFzdFNlcnZlclRydXN0
RXZhbHVhdGlvbkVuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9y
ZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29u
ZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gc2V0RmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ6WUVTXTsKKyAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
KTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5T
KFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSk7CiAgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAgICAgfV07
Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6bW9kZXJuU2VydmVyLnJlcXVlc3QoKV07CiAgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTQ4OSw4ICs0ODksOCBAQCBURVNUKFRMU1Zl
cnNpb24sIExlZ2FjeVN1YnJlc291cmNlcykKICAgICBFWFBFQ1RfRVEobGVnYWN5U2VydmVyLnRv
dGFsUmVxdWVzdHMoKSwgMHUpOwogICAgIEVYUEVDVF9FUShtb2Rlcm5TZXJ2ZXIudG90YWxSZXF1
ZXN0cygpLCAxdSk7CiAKLSAgICBhdXRvIGRlZmF1bHRXZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgW2RlZmF1bHRXZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZV07CisgICAgYXV0byBkZWZhdWx0V2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKKyAgICBbZGVmYXVsdFdlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKICAgICBbZGVmYXVsdFdlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuU2VydmVy
LnJlcXVlc3QoKV07CiAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
ICAgICBFWFBFQ1RfRVEobGVnYWN5U2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMXUpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1
bGF0aW9uLm1tCmluZGV4IDAxOTJiOTQ4MzNlNmNlOTYxNTI3YWZmNmRiMDAzZDkzNmQ0ZTdiODcu
LmY3ODAyM2MxNWU2ODM1MjMyMGZmMjcxMjAxZDIwMDVjNDFhYzE5OWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRp
b24ubW0KQEAgLTQwNCw3ICs0MDQsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4
dE1hbmlwdWxhdGlvbkFwcGx5U2luZ2xlRXhjbHVpb25SdWxlRm9yRWxlbWVudCkKIAogICAgIFJl
dGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCi0gICAgICAgIFtbW19X
S1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOihCT09M
KVlFUyBmb3JFbGVtZW50OkAiY29kZSJdIGF1dG9yZWxlYXNlXSwKKyAgICAgICAgYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOihC
T09MKVlFUyBmb3JFbGVtZW50OkAiY29kZSJdKS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAg
ICAgZG9uZSA9IGZhbHNlOwpAQCAtNDQwLDggKzQ0MCw4IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlv
biwgU3RhcnRUZXh0TWFuaXB1bGF0aW9uQXBwbHlJbmNsdXNpb25FeGNsdXNpb25SdWxlc0ZvckF0
dHJpCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRFeGNsdXNpb25SdWxlczpAWwot
ICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4
Y2x1c2lvbjooQk9PTClZRVMgZm9yQXR0cmlidXRlOkAiZGF0YS1leGNsdWRlIiB2YWx1ZTpAInll
cyJdIGF1dG9yZWxlYXNlXSwKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lv
blJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpTk8gZm9yQXR0cmlidXRlOkAiZGF0YS1l
eGNsdWRlIiB2YWx1ZTpAIm5vIl0gYXV0b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5TKFtbX1dL
VGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wp
WUVTIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJ5ZXMiXSkuYXV0b3JlbGVh
c2UoKSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxl
IGFsbG9jXSBpbml0RXhjbHVzaW9uOihCT09MKU5PIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVk
ZSIgdmFsdWU6QCJubyJdKS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZh
bHNlOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgU3RhcnRUZXh0
TWFuaXB1bGF0aW9uQXBwbHlJbmNsdXNpb25FeGNsdXNpb25SdWxlc0ZvckNsYXNzCiAKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRFeGNsdXNpb25SdWxl
czpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10g
aW5pdEV4Y2x1c2lvbjpZRVMgZm9yQ2xhc3M6QCJleGNsdWRlIl0gYXV0b3JlbGVhc2VdLAorICAg
ICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGlu
aXRFeGNsdXNpb246WUVTIGZvckNsYXNzOkAiZXhjbHVkZSJdKS5hdXRvcmVsZWFzZSgpLAogICAg
IF1dOwogCiAgICAgZG9uZSA9IGZhbHNlOwpAQCAtNDk1LDkgKzQ5NSw5IEBAIFRFU1QoVGV4dE1h
bmlwdWxhdGlvbiwgU3RhcnRUZXh0TWFuaXB1bGF0aW9uQXBwbHlJbmNsdXNpb25FeGNsdXNpb25S
dWxlc0ZvckNsYXNzCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJh
dGlvbiBzZXRFeGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9u
RXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjpZRVMgZm9yQXR0cmlidXRlOkAiZGF0
YS1leGNsdWRlIiB2YWx1ZTpAInllcyJdIGF1dG9yZWxlYXNlXSwKLSAgICAgICAgW1tbX1dLVGV4
dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246Tk8gZm9yQXR0
cmlidXRlOkAiZGF0YS1leGNsdWRlIiB2YWx1ZTpAIm5vIl0gYXV0b3JlbGVhc2VdLAotICAgICAg
ICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lv
bjpZRVMgZm9yQ2xhc3M6QCJleGNsdWRlIl0gYXV0b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5T
KFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246
WUVTIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJ5ZXMiXSkuYXV0b3JlbGVh
c2UoKSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxl
IGFsbG9jXSBpbml0RXhjbHVzaW9uOk5PIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFs
dWU6QCJubyJdKS5hdXRvcmVsZWFzZSgpLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246WUVTIGZvckNsYXNzOkAi
ZXhjbHVkZSJdKS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZhbHNlOwpA
QCAtMjQwNiw3ICsyNDA2LDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25GYWlsV2hlbkV4Y2x1c2lvbklzVmlvbGF0ZWQpCiAKICAgICBSZXRhaW5QdHI8
X1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBb
Y29uZmlndXJhdGlvbiBzZXRFeGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFu
aXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9y
RWxlbWVudDpAImVtIl0gYXV0b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1h
bmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZv
ckVsZW1lbnQ6QCJlbSJdKS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZh
bHNlOwpAQCAtMjQ1MSw3ICsyNDUxLDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkV4Y2x1ZGVkQ29udGVudEFwcGVhcnNNb3IKIAogICAg
IFJldGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCi0gICAgICAgIFtb
W19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOihC
T09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSBhdXRvcmVsZWFzZV0sCisgICAgICAgIGFkb3B0TlMo
W1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjoo
Qk9PTClZRVMgZm9yRWxlbWVudDpAImVtIl0pLmF1dG9yZWxlYXNlKCksCiAgICAgXV07CiAKICAg
ICBkb25lID0gZmFsc2U7CkBAIC0yNDk2LDcgKzI0OTYsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRp
b24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblByZXNlcnZlc0V4Y2x1ZGVkQ29udGVudCkKIAog
ICAgIFJldGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCi0gICAgICAg
IFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9u
OihCT09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSBhdXRvcmVsZWFzZV0sCisgICAgICAgIGFkb3B0
TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lv
bjooQk9PTClZRVMgZm9yRWxlbWVudDpAImVtIl0pLmF1dG9yZWxlYXNlKCksCiAgICAgXV07CiAK
ICAgICBkb25lID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMGViNDU5ZjMxZTQzZGU5NzhiYzZiZDZjOTFh
Y2YxYTcwNjE2ZThjZC4uNTZlZDY2OWYzZGJkZGE0ZWQxYjliZmNkNmZhMzAyM2NjMjE0YzI5NCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVn
YXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxl
Z2F0ZS5tbQpAQCAtNjYsNyArNjYsNyBAQCBAZW5kCiAKIFRFU1QoV2ViS2l0LCBXS1dlYlZpZXdJ
c1BsYXlpbmdBdWRpbykKIHsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOltbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFz
ZSgpXSk7CiAgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tBdWRpb09ic2VydmVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAIl9pc1BsYXlpbmdBdWRpbyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9u
TmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk9sZCBjb250ZXh0Om5pbF07CiAgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZmlsZS13aXRoLXZpZGVvIl07
CkBAIC0yMjQsNyArMjI0LDcgQEAgLSAodm9pZClfc2hvd1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVt
ZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKIHsKICAgICBOU1N0cmlu
ZyAqZGF0YSA9IEAiPHNjcmlwdD53aW5kb3cub3Blbignb3RoZXIuaHRtbCcpOzwvc2NyaXB0PiI7
Ci0gICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0
ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdO
YW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybFNjaGVt
ZVRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwog
ICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRhOltkYXRhIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsK
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHNldFJlc2l6YWJsZTooQk9PTClpc1Jlc2l6YWJsZQogCiAtIChudWxsYWJsZSBXS1dlYlZp
ZXcgKil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmln
dXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dG
ZWF0dXJlczooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCiB7Ci0gICAgY3JlYXRl
ZFdlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVh
c2VdOworICAgIGNyZWF0ZWRXZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CiAgICAgW2NyZWF0ZWRXZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07
CiAgICAgcmV0dXJuIGNyZWF0ZWRXZWJWaWV3LmdldCgpOwogfQpAQCAtNTEzLDExICs1MTMsMTEg
QEAgVEVTVChXZWJLaXQsIE5vdGlmaWNhdGlvblBlcm1pc3Npb24pCiB7CiAgICAgTlNTdHJpbmcg
Kmh0bWwgPSBAIjxzY3JpcHQ+Tm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKGZ1bmN0aW9u
KHApe2FsZXJ0KCdwZXJtaXNzaW9uICcrcCl9KTwvc2NyaXB0PiI7CiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6W1tbTm90aWZpY2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQWxsb3dOb3Rp
ZmljYXRpb25zOllFU10gYXV0b3JlbGVhc2VdXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmFkb3B0TlMoW1tOb3RpZmljYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhBbGxvd05vdGlm
aWNhdGlvbnM6WUVTXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6aHRtbCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLm9y
ZyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBm
YWxzZTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOltbW05vdGlmaWNhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEFsbG93Tm90aWZpY2F0aW9uczpOT10gYXV0b3JlbGVhc2VdXTsKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmFkb3B0TlMoW1tOb3RpZmljYXRpb25EZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhBbGxvd05vdGlmaWNhdGlvbnM6Tk9dKS5hdXRvcmVsZWFzZSgpXTsKICAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiB9CkBAIC01NzYsNyArNTc2LDcgQEAgQGVuZAogCiBURVNUKFdlYktpdCwgVG9v
bGJhclZpc2libGUpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV1dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2Uo
KV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVG9vbGJhckRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD5hbGVydCgn
dmlzaWJsZTonICsgd2luZG93LnRvb2xiYXIudmlzaWJsZSk7YWxlcnQoJ3Zpc2libGU6JyArIHdp
bmRvdy50b29sYmFyLnZpc2libGUpPC9zY3JpcHQ+Il07CkBAIC02MDQsNyArNjA0LDcgQEAgVEVT
VChXZWJLaXQsIE1vdXNlTW92ZU92ZXJFbGVtZW50KQogewogICAgIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25m
aWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJGcmFtZUhhbmRsZVNlcmlhbGl6YXRp
b24iXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOltbW01vdXNlTW92ZU92
ZXJFbGVtZW50RGVsZWdhdGUgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTphZG9wdE5TKFtbTW91c2VNb3ZlT3ZlckVsZW1lbnREZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjxhIGhyZWY9J2h0dHA6Ly9leGFtcGxlLmNvbS9wYXRoJyB0aXRsZT0n
bGluayB0aXRsZSc+bGluayBsYWJlbDwvYT4iXTsKICAgICBbd2ViVmlldyBtb3VzZU1vdmVUb1Bv
aW50Ok5TTWFrZVBvaW50KDIwLCA2MDAgLSAyMCkgd2l0aEZsYWdzOk5TRXZlbnRNb2RpZmllckZs
YWdTaGlmdF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KaW5kZXggODQzYzExMDMwMzk1OTM2ZTQ4YjgxMmU5MDdkYzUzZjQ5
MTIwMmJiYS4uMzhjNDBkM2Q1MGUxZThiZDQ4YWVlN2FjN2RjZGM2NmFkNzRhYWQ2NCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
c2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTIzOCw3ICsyMzgsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5k
bGVyUmVtb3ZhbAogCiAgICAgUmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVy
ID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0
YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Db3B5ID0gYWRvcHRO
UyhbY29uZmlndXJhdGlvbiBjb3B5XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb25Db3B5IHNldFVzZXJD
b250ZW50Q29udHJvbGxlcjpbW1tXS1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbkNvcHkgc2V0VXNlckNvbnRlbnRDb250
cm9sbGVyOmFkb3B0TlMoW1tXS1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmF1
dG9yZWxlYXNlKCldOwogICAgIFtbY29uZmlndXJhdGlvbkNvcHkgdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJoYW5kbGVy
VG9SZW1vdmUiXTsKICAgICBbW2NvbmZpZ3VyYXRpb25Db3B5IHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFuZGxlclRv
UG9zdCJdOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbkNvcHkuZ2V0KCldKTsKQEAgLTI1Niw3ICsyNTYsNyBA
QCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRp
cGxlSGFuZGxlclJlbW92YWwpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOltb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NQb29sOmFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCld
OwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IHdlYlZpZXdGb3JTY3JpcHRN
ZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KGNvbmZpZ3VyYXRpb24uZ2V0
KCkpOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcyID0gd2ViVmlld0ZvclNjcmlw
dE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QoY29uZmlndXJhdGlvbi5n
ZXQoKSk7CkBAIC0zOTAsNyArMzkwLDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
QWRkVXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCiBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBOb25DYW5vbmljYWxpemVkVVJMKQogewogICAgIFJldGFpblB0cjxXS0NvbnRl
bnRXb3JsZD4gd29ybGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3Js
ZCJdOwotICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0
TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNv
dXJjZSBmb3JXS1dlYlZpZXc6bmlsIGZvck1haW5GcmFtZU9ubHk6Tk8gaW5jbHVkZU1hdGNoUGF0
dGVyblN0cmluZ3M6QFtdIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBiYXNlVVJMOltb
W05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImh0dHA6Ly9DYW1lbENhc2UvIl0gYXV0b3Jl
bGVhc2VdIGxldmVsOl9XS1VzZXJTdHlsZVVzZXJMZXZlbCBjb250ZW50V29ybGQ6d29ybGQuZ2V0
KCldKTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9w
dE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRT
b3VyY2UgZm9yV0tXZWJWaWV3Om5pbCBmb3JNYWluRnJhbWVPbmx5Ok5PIGluY2x1ZGVNYXRjaFBh
dHRlcm5TdHJpbmdzOkBbXSBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gYmFzZVVSTDph
ZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL0NhbWVsQ2FzZS8i
XSkuYXV0b3JlbGVhc2UoKSBsZXZlbDpfV0tVc2VyU3R5bGVVc2VyTGV2ZWwgY29udGVudFdvcmxk
OndvcmxkLmdldCgpXSk7CiB9CiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFkZFVz
ZXJTdHlsZVNoZWV0QWZ0ZXJDcmVhdGluZ1ZpZXcpCkBAIC04OTIsNjUgKzg5Miw2NSBAQCBURVNU
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpCiAK
IFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHROb3RpZmljYXRpb24pCiB7
Ci0gICAgV0tVc2VyU2NyaXB0ICp3YWl0c0Zvck5vdGlmaWNhdGlvbiA9IFtbW1dLVXNlclNjcmlw
dCBhbGxvY10gX2luaXRXaXRoU291cmNlOkAiYWxlcnQoJ3dhaXRlZCBmb3Igbm90aWZpY2F0aW9u
JykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFy
dCBmb3JNYWluRnJhbWVPbmx5OllFUyBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gZXhj
bHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtdIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQgZGVm
YXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZRVNdIGF1dG9y
ZWxlYXNlXTsKLSAgICBXS1VzZXJTY3JpcHQgKmRvY3VtZW50RW5kID0gW1tbV0tVc2VyU2NyaXB0
IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAImFsZXJ0KCdkb2N1bWVudCBwYXJzaW5nIGVuZGVkJyki
IGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9y
TWFpbkZyYW1lT25seTpZRVNdIGF1dG9yZWxlYXNlXTsKLQotICAgIFRlc3RXS1dlYlZpZXcgKndl
YlZpZXcxID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIEVYUEVDVF9U
UlVFKHdlYlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKLSAg
ICBbd2ViVmlldzEuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07Ci0gICAgW3dlYlZpZXcxLmNvbmZpZ3VyYXRpb24u
dXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOwotICAgIFRl
c3RVSURlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07Ci0gICAgd2ViVmlldzEuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2FpdHNG
b3JOb3RpZmljYXRpb24gPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhT
b3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBub3RpZmljYXRpb24nKSIgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6
WUVTIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBleGNsdWRlTWF0Y2hQYXR0ZXJuU3Ry
aW5nczpAW10gYXNzb2NpYXRlZFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vc2Ny
aXB0Il0gY29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRdIGRl
ZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uOllFU10pOworICAgIGF1dG8gZG9jdW1lbnRFbmQg
PSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAImFsZXJ0KCdk
b2N1bWVudCBwYXJzaW5nIGVuZGVkJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKworICAgIGF1dG8g
d2ViVmlldzEgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3MSBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOworICAg
IFtbd2ViVmlldzEgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJT
Y3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb24uZ2V0KCldOworICAgIFtbd2ViVmlldzEgY29uZmln
dXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmQu
Z2V0KCldOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXdd
KTsKKyAgICBbd2ViVmlldzEgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dl
YlZpZXcxIGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgRVhQRUNUX1dLX1NUUkVR
KFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwotICAg
IEVYUEVDVF9UUlVFKHdlYlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0
aW9uKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2NyaXB0c05l
ZWROb3RpZmljYXRpb25dKTsKICAgICBbd2ViVmlldzEgX25vdGlmeVVzZXJTY3JpcHRzXTsKLSAg
ICBFWFBFQ1RfRkFMU0Uod2ViVmlldzEuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmlj
YXRpb24pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2NyaXB0
c05lZWROb3RpZmljYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRG
b3JBbGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogCiAgICAgW3dlYlZpZXcxIF9r
aWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlXTsKICAgICBbd2ViVmlldzEgcmVsb2Fk
XTsKIAogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3Vt
ZW50IHBhcnNpbmcgZW5kZWQiKTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3MS5fZGVmZXJyYWJs
ZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcx
IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgW3dlYlZpZXcx
IF9ub3RpZnlVc2VyU2NyaXB0c107Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcxLl9kZWZlcnJh
YmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZp
ZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgRVhQRUNU
X1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRp
b24iKTsKIAogICAgIFt3ZWJWaWV3MSByZWxvYWRdOwogCi0gICAgRVhQRUNUX0ZBTFNFKHdlYlZp
ZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW3dlYlZpZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7
CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZv
ciBub3RpZmljYXRpb24iKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JB
bGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIEVYUEVDVF9UUlVFKGNvbmZpZ3VyYXRpb24uX2RlZmVycmFibGVVc2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbik7Ci0gICAgY29uZmlndXJhdGlvbi5f
ZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gTk87Ci0g
ICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzIgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl0gYXV0b3JlbGVhc2VdOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3Mi5fZGVmZXJy
YWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7Ci0gICAgW3dlYlZpZXcyLmNvbmZpZ3Vy
YXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmlj
YXRpb25dOwotICAgIFt3ZWJWaWV3Mi5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxl
ciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKLSAgICB3ZWJWaWV3Mi5VSURlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBuZXddKTsKKyAgICBFWFBFQ1RfVFJVRShbY29uZmlndXJhdGlvbiBfZGVmZXJy
YWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uXSk7CisgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZp
Y2F0aW9uID0gTk87CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldzIg
X2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb25dKTsKKyAgICBbW3dlYlZpZXcy
IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OndhaXRz
Rm9yTm90aWZpY2F0aW9uLmdldCgpXTsKKyAgICBbW3dlYlZpZXcyIGNvbmZpZ3VyYXRpb25dLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kLmdldCgpXTsKKyAg
ICBbd2ViVmlldzIgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcy
IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxl
Z2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKICAgICBFWFBF
Q1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVu
ZGVkIik7CiAKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MyA9IFtbVGVzdFdLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3My5fZGVmZXJyYWJsZVVz
ZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7Ci0gICAgW3dlYlZpZXczLmNvbmZpZ3VyYXRpb24u
dXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb25d
OwotICAgIFt3ZWJWaWV3My5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRV
c2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKLSAgICB3ZWJWaWV3My5VSURlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgYXV0byB3ZWJWaWV3MyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXczIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZp
Y2F0aW9uXSk7CisgICAgW1t3ZWJWaWV3MyBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRy
b2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbi5nZXQoKV07CisgICAgW1t3
ZWJWaWV3MyBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlw
dDpkb2N1bWVudEVuZC5nZXQoKV07CisgICAgW3dlYlZpZXczIHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3MyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwog
ICAgIFt3ZWJWaWV3MyBfbm90aWZ5VXNlclNjcmlwdHNdOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJW
aWV3My5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNU
X0ZBTFNFKFt3ZWJWaWV3MyBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0p
OwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBm
b3Igbm90aWZpY2F0aW9uIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9y
QWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwogCi0gICAgVGVzdFdLV2ViVmlldyAq
d2ViVmlldzQgPSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgRVhQRUNU
X1RSVUUod2ViVmlldzQuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24pOwot
ICAgIFt3ZWJWaWV3NC5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2Vy
U2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uXTsKLSAgICBbd2ViVmlldzQuY29uZmlndXJhdGlv
bi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDpkb2N1bWVudEVuZF07Ci0gICAg
d2ViVmlldzQuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2ViVmlldzQgPSBhZG9w
dE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3NCBfZGVm
ZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOworICAgIFtbd2ViVmlldzQgY29u
ZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JO
b3RpZmljYXRpb24uZ2V0KCldOworICAgIFtbd2ViVmlldzQgY29uZmlndXJhdGlvbl0udXNlckNv
bnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmQuZ2V0KCldOworICAgIFt3
ZWJWaWV3NCBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldzQgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUtaWZyYW1lIl07CiAgICAgW3dlYlZpZXc0IF9ub3RpZnlV
c2VyU2NyaXB0c107CiAKQEAgLTk4Niw3ICs5ODYsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29u
dHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIg
ZAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChbbWVzc2FnZS5i
b2R5IGlzRXF1YWxUb1N0cmluZzpAIkludmFsaWQgcmVwbHkiXSkgewotICAgICAgICAgICAgcmVw
bHlIYW5kbGVyKFtbW05TRGF0YSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdLCBuaWwpOworICAg
ICAgICAgICAgcmVwbHlIYW5kbGVyKGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRdKS5hdXRv
cmVsZWFzZSgpLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudFdvcmxkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudFdvcmxkLm1tCmluZGV4IDM4NGUzMTI0MjZkZWE3MzEzZGMxYzQwMWQ5MjllZWJiM2M4
NjkwN2EuLjI5YjM5OGNhYTVkZWQ1ZDI2NjY0MTZlMmQ3NmJkZDhjNmU0OWY0ZGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3Js
ZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250
ZW50V29ybGQubW0KQEAgLTE3Miw3ICsxNzIsNyBAQCBURVNUKFVzZXJDb250ZW50V29ybGQsIElz
b2xhdGVkV29ybGRQbHVnSW4pCiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1
ZXN0LlVSTC5wYXRoLCAiL2lmcmFtZXNyYyIpOwogICAgICAgICAgICAgYm9keSA9IEAiaWZyYW1l
IGNvbnRlbnQiOwogICAgICAgICB9Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6Ym9keS5sZW5ndGggdGV4dEVu
Y29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmJv
ZHkubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOltib2R5IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tCmluZGV4IDNiM2Y2ZGVkMWE4NDg5YWFhZjlkYjA1YzE0NzM2MzYxMzhiZDNhMDEu
LjhlYjg4YzcxNGQwNmY2ZmE5OGUxYTI4YWUyNDJjOTdiOGJlMjUwNmIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQpAQCAtNTYyLDkgKzU2Miw5IEBAIHZvaWQgcGxhdGZvcm1Db3B5UmljaFRleHRXaXRo
SW1hZ2UoKQogICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNUZXh0
QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhEYXRhOnRlc3RJbWFnZURhdGEoKSBvZlR5cGU6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBOR10pOwogCi0gICAgW3JpY2hUZXh0IGFwcGVuZEF0
dHJpYnV0ZWRTdHJpbmc6W1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmlu
ZzpAIkxvcmVtIGlwc3VtICJdIGF1dG9yZWxlYXNlXV07CisgICAgW3JpY2hUZXh0IGFwcGVuZEF0
dHJpYnV0ZWRTdHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6QCJMb3JlbSBpcHN1bSAiXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3JpY2hUZXh0
IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6W05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3Ry
aW5nV2l0aEF0dGFjaG1lbnQ6aW1hZ2UuZ2V0KCldXTsKLSAgICBbcmljaFRleHQgYXBwZW5kQXR0
cmlidXRlZFN0cmluZzpbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
OkAiIGRvbG9yIHNpdCBhbWV0LiJdIGF1dG9yZWxlYXNlXV07CisgICAgW3JpY2hUZXh0IGFwcGVu
ZEF0dHJpYnV0ZWRTdHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6QCIgZG9sb3Igc2l0IGFtZXQuIl0pLmF1dG9yZWxlYXNlKCldOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9h
cmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHR5cGVkZWYgVUlJbWFn
ZSBQbGF0Zm9ybUltYWdlOwogUGxhdGZvcm1JbWFnZSAqcGxhdGZvcm1JbWFnZVdpdGhEYXRhKE5T
RGF0YSAqZGF0YSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIFtbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pLmF1dG9yZWxlYXNlKCk7CiAj
ZWxzZQogICAgIHJldHVybiBbVUlJbWFnZSBpbWFnZVdpdGhEYXRhOmRhdGFdOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hU
VFBDb29raWVTdG9yZS5tbQppbmRleCAwZjgwN2I4ZmEwMjVkMjE2YzNkNTJlOWIxYmQyNzk5OTBi
NDQxMzI4Li44N2E4NTA0MzJkNGJmZDVmMGU1ODU2ZjQ0MDdmZDAxZWEyN2JlZDQzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQ
Q29va2llU3RvcmUubW0KQEAgLTYxMSw3ICs2MTEsNyBAQCBAZW5kCiAKIFRFU1QoV2ViS2l0LCBX
S0hUVFBDb29raWVTdG9yZU11bHRpcGxlVmlld3MpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2Vi
VmlldzEgPSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJW
aWV3MSA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CiAgICAgW3dlYlZpZXcxIHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IG5ldHdvcmsgcHJvY2VzcyJdOwogCiAgICAg
TlNIVFRQQ29va2llICpzZXNzaW9uQ29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJv
cGVydGllczpAewpAQCAtNjIyLDcgKzYyMiw3IEBAIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVT
dG9yZU11bHRpcGxlVmlld3MpCiAgICAgfV07CiAKICAgICBfX2Jsb2NrIGJvb2wgc2V0Q29va2ll
RG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3MS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUuaHR0cENvb2tpZVN0b3JlIHNldENvb2tpZTpzZXNzaW9uQ29va2llIGNvbXBsZXRpb25IYW5k
bGVyOl57CisgICAgW1t3ZWJWaWV3MSBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLmh0
dHBDb29raWVTdG9yZSBzZXRDb29raWU6c2Vzc2lvbkNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpe
ewogICAgICAgICBzZXRDb29raWVEb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnNldENvb2tpZURvbmUpOwpAQCAtNjMzLDcgKzYzMyw3IEBAIFRFU1Qo
V2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZU11bHRpcGxlVmlld3MpCiAgICAgW3dlYlZpZXcxIGxv
YWRIVE1MU3RyaW5nOltkZWxlZ2F0ZSBhbGVydENvb2tpZUhUTUxdIGJhc2VVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vMTI3LjAuMC4xIl1dOwogICAgIEVYUEVDVF9XS19TVFJFUShb
ZGVsZWdhdGUgd2FpdEZvck1lc3NhZ2VdLCAiU2Vzc2lvbkNvb2tpZU5hbWU9Q29va2llVmFsdWUi
KTsKIAotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0gW1tUZXN0V0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3
IG5ld10pOwogICAgIFt3ZWJWaWV3MiBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAg
ICBbd2ViVmlldzIgbG9hZEhUTUxTdHJpbmc6W2RlbGVnYXRlIGFsZXJ0Q29va2llSFRNTF0gYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly8xMjcuMC4wLjEiXV07CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yTWVzc2FnZV0sICJTZXNzaW9uQ29va2llTmFt
ZT1Db29raWVWYWx1ZSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCmluZGV4IGEzNmRiMjE4OTNh
MTFlY2U1YjQxNjBkYjM0ZmMzNzA0YWUxYjU2NDcuLjVhMDQ2NDJlZmE0MjI0YzNiMjE3ZjBhMjEy
NDgxZTBmNGUwMDdjZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTEyNSw5ICsxMjUs
OSBAQCAtIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvYwogICAgIFtpbnNwZWN0b3Igc2V0RGVsZWdhdGU6
c2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc2hhcmVkVVJMU2NoZW1lSGFu
ZGxlciA9IFtbU2ltcGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF07Ci0gICAgUmV0YWlu
UHRyPF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24+IGluc3BlY3RvckNvbmZpZ3VyYXRpb24gPSBb
W19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOworICAgIGF1dG8gaW5zcGVj
dG9yQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3Rpbmci
XTsKLSAgICByZXR1cm4gW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBpbnNwZWN0b3JDb25maWd1cmF0aW9uLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6
KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQppbmRleCA3MGZjZDdhZWIwODEyNTdlNDZhYWI5
MmFkMThmZTIxOTYzZmFhMGFmLi5lMWJlNDIwZjkzNmNiNGM5MDhiNGE5ZTNiNzYwMGFhYThhNDI2
ZjU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
UERGVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
UERGVmlldy5tbQpAQCAtMTYxLDE4ICsxNjEsMTggQEAgc3RhdGljIHZvaWQgY2hlY2tGcmFtZShO
U1JlY3QgZnJhbWUsIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBDR0Zsb2F0IHdpZHRoLCBDR0Zsb2EK
IAogVEVTVChQREZIVUQsIE1haW5SZXNvdXJjZVBERikKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOltbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddIGF1dG9yZWxlYXNlXV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246YWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKS5hdXRvcmVsZWFzZSgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZERhdGE6cGRmRGF0YSgpIE1J
TUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6QCIiIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vdGVzdFBhdGgi
XV07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDB1KTsKKyAgICBFWFBF
Q1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAwdSk7CiAgICAgW3dlYlZpZXcgX3Rlc3Rf
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZI
VURzLmNvdW50LCAxdSk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJWaWV3Ll9wZGZIVURzLmFueU9iamVj
dC5mcmFtZSwgMCwgMCwgODAwLCA2MDApOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVE
c10uY291bnQsIDF1KTsKKyAgICBjaGVja0ZyYW1lKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmpl
Y3QuZnJhbWUsIDAsIDAsIDgwMCwgNjAwKTsKICAgICAKLSAgICBUZXN0VUlEZWxlZ2F0ZSAqZGVs
ZWdhdGUgPSBbW1Rlc3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcu
VUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKICAgICBfX2Jsb2NrIGJvb2wgc2F2ZVJlcXVlc3RSZWNlaXZlZCA9IGZhbHNlOwotICAg
IGRlbGVnYXRlLnNhdmVEYXRhVG9GaWxlID0gXihXS1dlYlZpZXcgKndlYlZpZXdGcm9tRGVsZWdh
dGUsIE5TRGF0YSAqZGF0YSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCBOU1N0cmluZyAq
bWltZVR5cGUsIE5TVVJMICpvcmlnaW5hdGluZ1VSTCkgewotICAgICAgICBFWFBFQ1RfRVEod2Vi
Vmlldywgd2ViVmlld0Zyb21EZWxlZ2F0ZSk7CisgICAgZGVsZWdhdGUuZ2V0KCkuc2F2ZURhdGFU
b0ZpbGUgPSBeKFdLV2ViVmlldyAqd2ViVmlld0Zyb21EZWxlZ2F0ZSwgTlNEYXRhICpkYXRhLCBO
U1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNVUkwgKm9y
aWdpbmF0aW5nVVJMKSB7CisgICAgICAgIEVYUEVDVF9FUSh3ZWJWaWV3LmdldCgpLCB3ZWJWaWV3
RnJvbURlbGVnYXRlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2RhdGEgaXNFcXVhbFRvRGF0YTpw
ZGZEYXRhKCldKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAi
dGVzdFBhdGgucGRmIik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShtaW1lVHlwZSwgImFwcGxp
Y2F0aW9uL3BkZiIpOwpAQCAtMTgxLDkgKzE4MSw5IEBAIFRFU1QoUERGSFVELCBNYWluUmVzb3Vy
Y2VQREYpCiAgICAgW1t3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QgcGVyZm9ybVNlbGVjdG9y
Ok5TU2VsZWN0b3JGcm9tU3RyaW5nKEAiX3BlcmZvcm1BY3Rpb25Gb3JDb250cm9sOiIpIHdpdGhP
YmplY3Q6QCJhcnJvdy5kb3duLmNpcmNsZSJdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmc2F2ZVJlcXVlc3RSZWNlaXZlZCk7CiAKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVE
cy5jb3VudCwgMXUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291bnQsIDF1
KTsKICAgICBbd2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzXTsKLSAgICB3aGlsZSAod2Vi
Vmlldy5fcGRmSFVEcy5jb3VudCkKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50
KQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogfQogCkBAIC0x
OTEsMTYzICsxOTEsMTYzIEBAIFRFU1QoUERGSFVELCBNYWluUmVzb3VyY2VQREYpCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwCiBU
RVNUKFBERkhVRCwgTW92ZUlGcmFtZSkKIHsKLSAgICBUZXN0VVJMU2NoZW1lSGFuZGxlciAqaGFu
ZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgaGFu
ZGxlci5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxT
Y2hlbWVUYXNrPiB0YXNrKSB7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNj
aGVtZUhhbmRsZXIgbmV3XSk7CisgICAgaGFuZGxlci5nZXQoKS5zdGFydFVSTFNjaGVtZVRhc2tI
YW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAg
ICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0
bWwiXSkgewotICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4
dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0
b3JlbGVhc2VdOworICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4
dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwog
ICAgICAgICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8YnIvPjxpZnJhbWUgc3JjPSd0ZXN0LnBk
ZicgaWQ9J3BkZmZyYW1lJz48L2lmcmFtZT4iOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpyZXNwb25zZS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVuKGh0bWwpXV07CiAgICAgICAgICAg
ICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHRhc2sucmVxdWVzdC5VUkwucGF0aCwgIi90ZXN0LnBkZiIpOwogICAgICAgICAg
ICAgTlNEYXRhICpkYXRhID0gcGRmRGF0YSgpOwotICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgICAgICAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKICAgICAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsK
ICAgICAgICAgfQogICAgIH07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxTY2hlbWU6
QCJ0ZXN0Il07Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVz
dCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL21haW4uaHRt
bCJdXV07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDB1KTsKKyAgICBF
WFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAwdSk7CiAgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgLy8gSWYgdGhlIFRlc3RXS1dl
YlZpZXcgaXMgbm90IHZpc2libGUsIHZpc2liaWxpdHlEaWRDaGFuZ2Ugd2lsbCBiZSBjYWxsZWQg
d2l0aCBmYWxzZSwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gSFVELgotICAgIGlmICghd2ViVmlldy5f
cGRmSFVEcy5jb3VudCkKKyAgICBpZiAoIVt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsK
LSAgICBjaGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgs
IDMwMCwgMTUwKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7
CisgICAgY2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxMCwg
MjgsIDMwMCwgMTUwKTsKIAogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInBkZmZy
YW1lLndpZHRoPTQwMCIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICB3aGlsZSAod2ViVmll
dy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0MDApCisgICAgd2hpbGUg
KFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0MDApCiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgY2hlY2tGcmFt
ZSh3ZWJWaWV3Ll9wZGZIVURzLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCA0MDAsIDE1MCk7Cisg
ICAgY2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgs
IDQwMCwgMTUwKTsKIAogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInZhciBmcmFt
ZVJlZmVyZW5jZSA9IHBkZmZyYW1lOyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBkZmZyYW1l
KSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICB3aGlsZSAod2ViVmlldy5fcGRmSFVEcy5j
b3VudCkKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50KQogICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWVSZWZlcmVuY2UpIiBjb21w
bGV0aW9uSGFuZGxlcjpuaWxdOwotICAgIHdoaWxlICghd2ViVmlldy5fcGRmSFVEcy5jb3VudCkK
KyAgICB3aGlsZSAoIVt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVE
cy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3Qu
ZnJhbWUsIDAsIDAsIDAsIDApOwotICAgIHdoaWxlICh3ZWJWaWV3Ll9wZGZIVURzLmFueU9iamVj
dC5mcmFtZS5zaXplLndpZHRoICE9IDQwMCkKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhV
RHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2Jq
ZWN0LmZyYW1lLCAwLCAwLCAwLCAwKTsKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhVRHNdLmFu
eU9iamVjdC5mcmFtZS5zaXplLndpZHRoICE9IDQwMCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3Vu
dCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUs
IDEwLCAyOCwgNDAwLCAxNTApOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291
bnQsIDF1KTsKKyAgICBjaGVja0ZyYW1lKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJh
bWUsIDEwLCAyOCwgNDAwLCAxNTApOwogCi0gICAgd2ViVmlldy5wYWdlWm9vbSA9IDEuNDsKLSAg
ICB3aGlsZSAod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA1
NjApCisgICAgW3dlYlZpZXcgc2V0UGFnZVpvb206MS40XTsKKyAgICB3aGlsZSAoW3dlYlZpZXcg
X3BkZkhVRHNdLmFueU9iamVjdC5mcmFtZS5zaXplLndpZHRoICE9IDU2MCkKICAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5f
cGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlP
YmplY3QuZnJhbWUsIDE0LCA0MCwgNTYwLCAyMTApOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBf
cGRmSFVEc10uY291bnQsIDF1KTsKKyAgICBjaGVja0ZyYW1lKFt3ZWJWaWV3IF9wZGZIVURzXS5h
bnlPYmplY3QuZnJhbWUsIDE0LCA0MCwgNTYwLCAyMTApOwogfQogI2VuZGlmCiAKIFRFU1QoUERG
SFVELCBOZXN0ZWRJRnJhbWVzKQogewotICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVy
ID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBoYW5kbGVy
LnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVt
ZVRhc2s+IHRhc2spIHsKLSAgICAgICAgTlNVUkxSZXNwb25zZSAqaHRtbFJlc3BvbnNlID0gW1tb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpu
aWxdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2No
ZW1lSGFuZGxlciBuZXddKTsKKyAgICBoYW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hh
bmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAg
ICAgYXV0byBodG1sUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgaWYgKFt0YXNr
LnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBodG1sID0gIjxpZnJhbWUgc3JjPSdmcmFtZS5odG1sJyBpZD0n
cGFyZW50ZnJhbWUnPjwvaWZyYW1lPiI7Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6aHRtbFJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpodG1sUmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwogICAgICAg
ICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0
LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9mcmFtZS5odG1sIl0pIHsKICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGh0bWwgPSAiPGlmcmFtZSBzcmM9J3Rlc3QucGRmJz48L2lmcmFtZT4iOwot
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07CisgICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1s
IGxlbmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1ZXN0
LlVSTC5wYXRoLCAiL3Rlc3QucGRmIik7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBwZGZE
YXRhKCk7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBs
aWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0
YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAgICBUZXN0V0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vbWFpbi5odG1sIl1dXTsKLSAgICBFWFBFQ1RfRVEo
d2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRm
SFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAg
ICBjaGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAyMCwgMjAsIDMw
MCwgMTUwKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7Cisg
ICAgY2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAyMCwgMjAs
IDMwMCwgMTUwKTsKICAgICAKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBhcmVudGZyYW1lKSIgY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKLSAgICB3aGlsZSAod2ViVmlldy5fcGRmSFVEcy5jb3VudCkKKyAgICB3aGlsZSAoW3dlYlZp
ZXcgX3BkZkhVRHNdLmNvdW50KQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVu
TG9vcCgpOwogfQogCiBURVNUKFBERkhVRCwgSUZyYW1lM0RUcmFuc2Zvcm0pCiB7Ci0gICAgVGVz
dFVSTFNjaGVtZUhhbmRsZXIgKmhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIGhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4o
V0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewotICAgICAgICBOU1VSTFJl
c3BvbnNlICpodG1sUmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gaGFu
ZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIGhhbmRsZXIu
Z2V0KCkuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJM
U2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBhdXRvIGh0bWxSZXNwb25zZSA9IGFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0pOwogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCIvbWFpbi5odG1sIl0pIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGh0bWwgPSAiPGlm
cmFtZSBzcmM9J3Rlc3QucGRmJyBoZWlnaHQ9NTAwIHdpZHRoPTUwMCBzdHlsZT0ndHJhbnNmb3Jt
OnJvdGF0ZVkoMjM1ZGVnKTsnPjwvaWZyYW1lPiI7Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpodG1sUmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLnBhdGgsICIvdGVzdC5wZGYiKTsK
ICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IHBkZkRhdGEoKTsKLSAgICAgICAgICAgIE5TVVJM
UmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07
Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOworICAgICAg
ICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CiAgICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRp
ZEZpbmlzaF07CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIgZm9y
VVJMU2NoZW1lOkAidGVzdCJdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAInRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDov
Ly9tYWluLmh0bWwiXV1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZIVURzLmNvdW50LCAw
dSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMHUpOwogICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLSAgICBFWFBFQ1RfRVEo
d2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRm
SFVEcy5hbnlPYmplY3QuZnJhbWUsIDQwMywgMTAsIDUwMCwgNTAwKTsKKyAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShbd2ViVmlldyBf
cGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCA0MDMsIDEwLCA1MDAsIDUwMCk7CiB9CiAKIFRFU1Qo
UERGSFVELCBNdWx0aXBsZUlGcmFtZXMpCiB7Ci0gICAgVGVzdFVSTFNjaGVtZUhhbmRsZXIgKmhh
bmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGhh
bmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJM
U2NoZW1lVGFzaz4gdGFzaykgewotICAgICAgICBOU1VSTFJlc3BvbnNlICpodG1sUmVzcG9uc2Ug
PSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdO
YW1lOm5pbF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RV
UkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIGhhbmRsZXIuZ2V0KCkuc3RhcnRVUkxTY2hlbWVU
YXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewor
ICAgICAgICBhdXRvIGh0bWxSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICBpZiAo
W3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsK
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGh0bWwgPSAiPGlmcmFtZSBzcmM9J3Rlc3QucGRmJyBo
ZWlnaHQ9MTAwIHdpZHRoPTE1MD48L2lmcmFtZT48aWZyYW1lIHNyYz0ndGVzdC5wZGYnIGhlaWdo
dD0xMjMgd2lkdGg9MTM0PjwvaWZyYW1lPiI7Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6aHRtbFJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpodG1sUmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURh
dGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwogICAg
ICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLnBhdGgsICIvdGVzdC5wZGYiKTsKICAg
ICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IHBkZkRhdGEoKTsKLSAgICAgICAgICAgIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07Ci0g
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOworICAgICAgICAg
ICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CiAgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZp
bmlzaF07CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIgZm9yVVJM
U2NoZW1lOkAidGVzdCJdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAInRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9t
YWluLmh0bWwiXV1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZIVURzLmNvdW50LCAwdSk7
CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMHUpOwogICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLSAgICBFWFBFQ1RfRVEod2Vi
Vmlldy5fcGRmSFVEcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVE
c10uY291bnQsIDJ1KTsKICAgICBib29sIGhhZExlZnRGcmFtZSA9IGZhbHNlOwogICAgIGJvb2wg
aGFkUmlnaHRGcmFtZSA9IGZhbHNlOwotICAgIGZvciAoTlNWaWV3ICpodWQgaW4gd2ViVmlldy5f
cGRmSFVEcykgeworICAgIGZvciAoTlNWaWV3ICpodWQgaW4gW3dlYlZpZXcgX3BkZkhVRHNdKSB7
CiAgICAgICAgIGlmIChodWQuZnJhbWUub3JpZ2luLnggPT0gMTApIHsKICAgICAgICAgICAgIGNo
ZWNrRnJhbWUoaHVkLmZyYW1lLCAxMCwgMzMsIDE1MCwgMTAwKTsKICAgICAgICAgICAgIGhhZExl
ZnRGcmFtZSA9IHRydWU7CkBAIC0zNjQsMTIgKzM2NCwxMiBAQCBURVNUKFBERkhVRCwgTG9hZFBE
RlR5cGVXaXRoUGx1Z2luc0Jsb2NrZWQpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmln
dXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJvYmplY3Qtc3JjICdu
b25lJyJdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWREYXRhOnBkZkRhdGEoKSBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIg
Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOkAiIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly93d3cuYXBwbGUuY29tL3Rlc3RQYXRoIl1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3
Ll9wZGZIVURzLmNvdW50LCAwdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5j
b3VudCwgMHUpOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNr
RnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUsIDAsIDAsIDgwMCwgNjAwKTsK
KyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tG
cmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAwLCAwLCA4MDAsIDYwMCk7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggZDc1ZTViMjQwNjAy
ZmU4ZGQxYTAyYjVjY2Q4YTk0MjAzODdlZDBkOS4uMDA1NjFjNzFiYjE4NGNhZjNhY2NhMDQ1ZDc3
NTg5OTYzYjQ0NjJjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0zODAsMTMgKzM4
MCwxMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgICAgICBmb3IgKGF1dG8gY29tbWFu
ZCA6IGNvbW1hbmRzKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICAgICAg
ICAgIGNhc2UgQ29tbWFuZDo6UmVkaXJlY3Q6Ci0gICAgICAgICAgICAgICAgWyhpZDxXS1VSTFNj
aGVtZVRhc2tQcml2YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246W1tbTlNVUkxSZXNw
b25zZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdIG5ld1JlcXVlc3Q6W1tbTlNVUkxSZXF1ZXN0
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgICAgIFsoaWQ8V0tVUkxT
Y2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOmFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKSBuZXdSZXF1ZXN0OmFkb3B0
TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ29tbWFuZDo6UmVzcG9uc2U6Ci0gICAg
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVh
c2UoKV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENvbW1hbmQ6
OkRhdGE6Ci0gICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W1tbTlNEYXRhIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVEYXRhOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ29tbWFuZDo6RmluaXNoOgog
ICAgICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CkBAIC01NzQsMTIgKzU3NCwxMiBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihp
ZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogewogICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJzeW5jZXJyb3I6Ly8vbWFpbi5odG1sIl0pIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJ5dGVzID0gIjxzY3JpcHQ+dmFyIHhocj1uZXcg
WE1MSHR0cFJlcXVlc3QoKTt4aHIub3BlbignR0VUJywnc3VicmVzb3VyY2UnLGZhbHNlKTt0cnl7
eGhyLnNlbmQobnVsbCk7YWxlcnQoJ25vIGVycm9yJyl9Y2F0Y2goZSl7YWxlcnQoZSl9PC9zY3Jp
cHQ+IjsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJsZW4oYnl0ZXMpIHRleHRFbmNvZGluZ05hbWU6bmls
XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJsZW4oYnl0ZXMpIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIFt0YXNrIGRpZFJl
Y2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpieXRlcyBsZW5ndGg6c3RybGVuKGJ5dGVz
KV1dOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEVY
UEVDVF9TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcsICJz
eW5jZXJyb3I6Ly8vc3VicmVzb3VyY2UiKTsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICBbdGFzayBkaWRGYWlsV2l0aEVycm9yOltO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpAIlRlc3RFcnJvckRvbWFpbiIgY29kZToxMjMgdXNlcklu
Zm86bmlsXV07CiAgICAgfQogfQpAQCAtNzkxLDE4ICs3OTEsMTggQEAgVEVTVChVUkxTY2hlbWVI
YW5kbGVyLCBDT1JTKQogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6
XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChb
dGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgewog
ICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW0AiPHNjcmlwdD5mZXRjaCgnY29yczovL2hvc3Qy
L2NvcnNyZXNvdXJjZScpLnRoZW4oZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNzdWNjZXNzJyl9KS5j
YXRjaChmdW5jdGlvbigpe2ZldGNoKCcvY29yc2ZhaWx1cmUnKX0pPC9zY3JpcHQ+IiBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRh
dGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRv
cmVsZWFzZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAg
ICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1
ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jb3JzcmVzb3VyY2UiXSkgewogICAgICAg
ICAgICAgaWYgKGluY2x1ZGVDT1JTSGVhZGVyRmllbGRJblJlc3BvbnNlKSB7Ci0gICAgICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9u
Om5pbCBoZWFkZXJGaWVsZHM6QHsKKyAgICAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6YWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6
QHsKICAgICAgICAgICAgICAgICAgICAgQCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iOiBA
IioiLAogICAgICAgICAgICAgICAgICAgICBAIkNvbnRlbnQtTGVuZ3RoIjogQCIyIiwKICAgICAg
ICAgICAgICAgICAgICAgQCJDb250ZW50LVR5cGUiOkAidGV4dC9odG1sIgotICAgICAgICAgICAg
ICAgIH1dIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICAgICAgfV0pLmF1dG9yZWxlYXNlKCld
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5V
UkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJl
Y2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOltAIkhJIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ11dOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBl
bHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jb3Jzc3Vj
Y2VzcyJdKSB7CkBAIC04NDMsNyArODQzLDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNh
YmxlQ09SUykKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFu
ZGxlciBhbGxvY10gaW5pdF0pOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjb3JzIl07CiAKICAgICBOU1N0cmlu
ZyAqdGVzdEpTID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CkBAIC04NjEsNyArODYxLDcg
QEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SUykKICAgICAgICAgaWYgKFt0YXNr
LnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAg
ICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAg
ICAgICAgICAgICAgQCI8c2NyaXB0PiVAPC9zY3JpcHQ+IiwgdGVzdEpTXSBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVu
Z3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFz
ZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAg
ICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVS
TC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jb3Jzc3VjY2VzcyJdKSB7CkBAIC04NzUsNyArODc1
LDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SUykKICAgICB9XTsKICAgICAK
ICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJj
b3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKICAgICB9CkBAIC04ODYsOCArODg2LDggQEAgVEVTVChVUkxTY2hlbWVIYW5k
bGVyLCBEaXNhYmxlQ09SUykKICAgICBjb3JzZmFpbHVyZSA9IGZhbHNlOwogICAgIGRvbmUgPSBm
YWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIq
Oi8vKi8qIl07Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9jb3JzRGlzYWJsaW5nUGF0
dGVybnMgPSBAW0AiKjovLyovKiJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNv
cnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CiAgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3MpOwpAQCAtOTI2LDEzICs5MjYsMTMg
QEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU0NyZWRlbnRpYWxzKQogCiAgICAg
YXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIGZvclVSTFNjaGVtZTpAImNvcnMiXTsKIAogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2No
ZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2sp
IHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
L21haW4uaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PmZldGNoKCdodHRwOi8vMTI3LjAuMC4xOiVkL3N1YnJl
c291cmNlJywge2NyZWRlbnRpYWxzOidpbmNsdWRlJ30pLnRoZW4oZnVuY3Rpb24oKXtmZXRjaCgn
L2NvcnNzdWNjZXNzJyl9KS5jYXRjaChmdW5jdGlvbigpe2ZldGNoKCcvY29yc2ZhaWx1cmUnKX0p
PC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0
ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdO
YW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1
ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEu
bGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAg
ICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlz
aF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCIvY29yc3N1Y2Nlc3MiXSkgewpAQCAtOTQ2LDcgKzk0Niw3IEBAIFRFU1QoVVJMU2No
ZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNDcmVkZW50aWFscykKICAgICB9XTsKICAgICAKICAgICB7
Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8v
aG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKICAgICB9CkBAIC05NTcsOSArOTU3LDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBE
aXNhYmxlQ09SU0NyZWRlbnRpYWxzKQogICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CiAgICAgZG9u
ZSA9IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkID0gTk87CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gTk87CiAgICAgewotICAgICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07
CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtOTc5
LDE0ICs5NzksMTQgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU1NjcmlwdCkK
IAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10p
OwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJjb3JzIl07CiAKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVt
ZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7
CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9t
YWluLmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGNyb3Nzb3JpZ2lu
PSdhbm9ueW1vdXMnIG9uZXJyb3I9J2ZldGNoKFwibG9hZEZhaWxcIiknIHNyYz0naHR0cDovLzEy
Ny4wLjAuMTolZC8nPjwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCldIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSku
YXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsK
ICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2su
cmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZFN1Y2Nlc3MiXSkgewpAQCAt
MTAwMCw3ICsxMDAwLDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU1Njcmlw
dCkKICAgICB9XTsKIAogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTEwMTEsOSArMTAxMSw5IEBAIFRF
U1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQpCiAgICAgbG9hZEZhaWwgPSBm
YWxzZTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBjb25maWd1cmF0aW9uLl9jb3JzRGlzYWJs
aW5nUGF0dGVybnMgPSBAW0AiKjovLyovKiJdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIqOi8vKi8qIl07CiAgICAgewotICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRt
bCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpA
QCAtMTAyOSw3ICsxMDI5LDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU0Nh
bnZhcykKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVy
IG5ld10pOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjb3JzIl07CiAKICAgICBbaGFuZGxlciBzZXRTdGFydFVS
TFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0
YXNrKSB7CkBAIC0xMDY0LDE0ICsxMDY0LDE0IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlz
YWJsZUNPUlNDYW52YXMpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAg
ICAgICBpZiAocmVzcG9uc2UpIHsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4
dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6bWltZVR5cGUgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6cmVzcG9uc2VdOwogICAgICAgICAgICAg
W3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfQogICAgIH1dOwogCiAgICAgewotICAgICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwor
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4u
aHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAg
fQpAQCAtMTA4Miw5ICsxMDgyLDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09S
U0NhbnZhcykKICAgICBjb3JzZmFpbHVyZSA9IGZhbHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAot
ICAgIGNvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIqOi8vKi8qIl07
CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6
Ly8qLyoiXTsKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKICAgICB9CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBURVNUKFVS
TFNjaGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdvcmspCiAKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKIAotICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJd
OwogCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJW
aWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtMTExNyw3ICsxMTE3LDcgQEAg
VEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc0Zyb21OZXR3b3JrKQogICAgICAgICAgICAgICAg
ICAgICAid3Mub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBmZXRjaCgnL2xvYWRGYWlsJykgfTsiCiAg
ICAgICAgICAgICAgICAgIn0pIgogICAgICAgICAgICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIu
cG9ydCgpLCBzZXJ2ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQv
aHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6
bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5n
dGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsK
ICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAIi9sb2FkU3VjY2VzcyJdKSB7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBURVNUKFVSTFNjaGVt
ZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdvcmspCiAgICAgfV07CiAgICAgCiAgICAgewotICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovL2hvc3QxL21h
aW4uaHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAg
ICAgfQpAQCAtMTE0Myw5ICsxMTQzLDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc0Zy
b21OZXR3b3JrKQogICAgIGxvYWRGYWlsID0gZmFsc2U7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0g
ICAgY29uZmlndXJhdGlvbi5fbG9hZHNGcm9tTmV0d29yayA9IE5POworICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkuX2xvYWRzRnJvbU5ldHdvcmsgPSBOTzsKICAgICB7Ci0gICAgICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1d
XTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICB9CkBAIC0x
MTYxLDcgKzExNjEsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzU3VicmVzb3VyY2Vz
KQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3
XSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKIAogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2No
ZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2sp
IHsKQEAgLTExNzYsMTMgKzExNzYsMTMgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc1N1
YnJlc291cmNlcykKICAgICAgICAgICAgIGxvYWRlZElGcmFtZSA9IHRydWU7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4
cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxd
KS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNl
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNr
IGRpZEZpbmlzaF07CiAgICAgfV07CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbG9hZGVkSW1hZ2UpOwogICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmxvYWRlZElGcmFtZSk7CkBAIC0xMTkxLDkgKzExOTEs
OSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzU3VicmVzb3VyY2VzKQogICAgIGxvYWRl
ZEltYWdlID0gZmFsc2U7CiAgICAgbG9hZGVkSUZyYW1lID0gZmFsc2U7CiAKLSAgICBjb25maWd1
cmF0aW9uLl9sb2Fkc1N1YnJlc291cmNlcyA9IE5POworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
X2xvYWRzU3VicmVzb3VyY2VzID0gTk87CiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBu
ZXddKTsKICAgICAgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwi
XV1dOwpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICB9
OwogCiAgICAgYXV0byByZXNwb25kID0gW10gKGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaywgY29u
c3QgY2hhciogYnl0ZXMpIHsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJsZW4oYnl0ZXMpIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVx
dWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpzdHJs
ZW4oYnl0ZXMpIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpieXRlcyBsZW5ndGg6
c3RybGVuKGJ5dGVzKV1dOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH07CkBAIC0x
Mzc0LDIxICsxMzc0LDIxIEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRnJhbWVzKQogCiBURVNU
KFVSTFNjaGVtZUhhbmRsZXIsIE9yaWdpbikKIHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byBoYW5k
bGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwor
ICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwog
ICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwg
aWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZVN0
cmluZyA9IEAiPHNjcmlwdD5hbGVydCgiCiAgICAgICAgICAgICAibmV3IFVSTCgncmVnaXN0ZXJl
ZDovL2hvc3Q6MTIzL3BhdGgnKS5vcmlnaW4gKyAnLCAnICsgIgogICAgICAgICAgICAgIm5ldyBV
UkwoJ25vdHJlZ2lzdGVyZWQ6Ly9ob3N0OjEyMy9wYXRoJykub3JpZ2luIgogICAgICAgICAiKTwv
c2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2VTdHJpbmcubGVuZ3RoIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVx
dWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNw
b25zZVN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsK
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNlU3RyaW5nIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgfV07Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVy
IGZvclVSTFNjaGVtZTpAInJlZ2lzdGVyZWQiXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RVSURl
bGVnYXRlIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJyZWdpc3RlcmVkIl07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBb
d2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAicmVnaXN0ZXJlZDovLy8iXV1dOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2Fp
dEZvckFsZXJ0XSwgInJlZ2lzdGVyZWQ6Ly9ob3N0OjEyMywgbnVsbCIpOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDZmMjc2YTE1NzRmOTk2ZjMyZWRmZmVlYzI5OGU2ZjE4
NmNlY2UxN2YuLjViZjZkYTkzZGI2OWM1OWI2MDIxZThhYmY5ZWU0NGIyN2Q1YmFmN2EgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTExMywxOSArMTEzLDE5IEBAIFRFU1QoV2Vi
S2l0LCBDb25maWd1cmF0aW9uSFRUUFNVcGdyYWRlKQogCiAgICAgYXV0byBydW5UZXN0ID0gWyZd
IChib29sIHVwZ3JhZGUpIHsKICAgICAgICAgZG9uZSA9IGZhbHNlOwotICAgICAgICBhdXRvIHN0
b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICAg
ICAgc3RvcmVDb25maWd1cmF0aW9uLmFsbG93c1NlcnZlclByZWNvbm5lY3QgPSBOTzsKLSAgICAg
ICAgc3RvcmVDb25maWd1cmF0aW9uLnByb3h5Q29uZmlndXJhdGlvbiA9IEB7CisgICAgICAgIGF1
dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICAg
ICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5PXTsKKyAg
ICAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQcm94eUNvbmZpZ3VyYXRpb246QHsKICAgICAg
ICAgICAgIChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFNQcm94eUhvc3Q6IEAiMTI3
LjAuMC4xIiwKICAgICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFNQ
cm94eVBvcnQ6IEAoc2VydmVyLnBvcnQoKSksCiAgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZT
dHJlYW1Qcm9wZXJ0eUhUVFBQcm94eUhvc3Q6IEAiMTI3LjAuMC4xIiwKICAgICAgICAgICAgIChO
U1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5UG9ydDogQChzZXJ2ZXIucG9ydCgp
KSwKLSAgICAgICAgfTsKLSAgICAgICAgYXV0byBzdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9y
ZWxlYXNlXTsKLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgICAgICBjb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgPSBzdG9yZTsKLSAgICAgICAgY29uZmlndXJhdGlvbi51cGdyYWRlS25vd25Ib3N0
c1RvSFRUUFMgPSB1cGdyYWRlOwotICAgICAgICBhdXRvIHdlYlZpZXcgPSBbW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgfV07CisgICAgICAgIGF1dG8gc3RvcmUgPSBhZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBbY29uZmlndXJh
dGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOnN0b3JlLmdldCgpXTsKKyAgICAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VXBncmFkZUtub3duSG9zdHNUb0hUVFBTOnVwZ3JhZGVdOworICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8g
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vd3d3Lm9wZW5nbC5vcmcvIl1dOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKICAgICAgICAgVXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZh
U2NyaXB0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KaW5kZXggYzcwNWE5MTVhY2EzYjU0NzA2ZDYzNzIzM2Y3
MmExNWY0YjA5NjgxMS4uZDFjNDUwMzVjZmI5MzcwNTBhY2U4ODViYjcxODhlOGRjNjQ0YWYwZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KQEAgLTE5Nyw4ICsxOTcs
OCBAQCBURVNUKFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0SW5Xb3JsZHMpCiAKICAgICAv
LyBBZGQgYSBzY3JpcHRNZXNzYWdlSGFuZGxlciBpbiBhIG5hbWVkIHdvcmxkLgogICAgIFJldGFp
blB0cjxXS0NvbnRlbnRXb3JsZD4gbmFtZWRXb3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3JsZFdp
dGhOYW1lOkAiTmFtZWRXb3JsZCJdOwotICAgIGlkIGhhbmRsZXIgPSBbW1tEdW1teU1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29u
ZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OmhhbmRsZXIgbmFtZTpAInRlc3RIYW5kbGVyTmFtZSIgdXNlckNvbnRlbnRXb3JsZDpuYW1lZFdv
cmxkLmdldCgpLl91c2VyQ29udGVudFdvcmxkXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbRHVtbXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3LmdldCgp
LmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlck5hbWUiIHVzZXJDb250ZW50V29y
bGQ6bmFtZWRXb3JsZC5nZXQoKS5fdXNlckNvbnRlbnRXb3JsZF07CiAKICAgICAvLyBTZXQgYSB2
YXJpYWJsZSB2YWx1ZSBpbiB0aGF0IG5hbWVkIHdvcmxkLgogICAgIFt3ZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpAInZhciBiYXIgPSAnYmF6JyIgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6
bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKQEAgLTQ0Miw5ICs0NDIsOSBAQCBURVNUKFdlYktpdCwgU1BJSmF2YXNjcmlwdE1h
cmt1cFZzQVBJQ29udGVudEphdmFTY3JpcHQpCiB7CiAgICAgLy8gVGhlcmUncyBub3QgYSBkeW5h
bWljYWxseSBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIGphdmFzY3JpcHQgbWFya3VwLAogICAg
IC8vIGJ1dCBpdCBjYW4gYmUgY29uZmlndXJlZCBhdCBXS1dlYlZpZXcgY3JlYXRpb24gdGltZS4K
LSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGNvbmZpZ3VyYXRp
b24uX2FsbG93c0phdmFTY3JpcHRNYXJrdXAgPSBOTzsKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93c0phdmFT
Y3JpcHRNYXJrdXA6Tk9dOworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICAvLyBWZXJpZnkgdGhhdCB0aGUgZm9sbG93aW5nIEpTIGRvZXMgbm90IGV4ZWN1dGUuCiAgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD52YXIgZm9vID0g
J2Jhcic8L3NjcmlwdD4iXTsKQEAgLTUwMywxOSArNTAzLDE5IEBAIFRFU1QoRXZhbHVhdGVKYXZh
U2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiAgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tGcmFtZXNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGlu
aXRXaXRoU291cmNlOnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk8gaW5Db250ZW50
V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkXSk7CiAKLSAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250
ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFtjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENs
aWVudFdvcmxkIG5hbWU6QCJmcmFtZXNUZXN0ZXIiXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6dXNlclNj
cmlwdC5nZXQoKV07CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxk
OldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAiZnJhbWVzVGVzdGVyIl07
CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsm
XShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChb
dGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZXN0
ZXN0Oi8vdGVzdC9pbmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzIiwgZnJhbWVzTWFpblJlc291cmNlXSBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBk
aWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5h
dXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5y
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29s
Oi8vdGVzdC9pbmRleC5odG1sIl0pIHsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIFt0YXNr
IGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC01MjQsNyArNTI0LDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFT
Y3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWVzdGVzdCJdOwog
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JV
UkxTY2hlbWU6QCJvdGhlcnByb3RvY29sIl07CiAKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJhbWVz
dGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdXV07CiAKICAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNv
dW50LCAydSk7CkBAIC01NzgsMjMgKzU3OCwyMyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwg
SmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICBbaGFuZGxlciBz
ZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hl
bWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZXN0ZXN0Oi8vdGVzdC9pbmRleC5odG1sIl0pIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVzIiwgZnJhbWVzTWFpblJlc291cmNlXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5s
ZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNo
XTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBp
c0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pIHsKICAg
ICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtAIkZvb0JhckJheiIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJl
cXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH1dOwog
Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJmcmFtZXN0ZXN0Il07CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIm90aGVycHJvdG9jb2wiXTsK
IAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gbmF2
aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKIApAQCAtNjYzLDIzICs2NjMsMjMgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQs
IEphdmFTY3JpcHRJbk1pc3NpbmdGcmFtZUVycm9yKQogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJM
U2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRh
c2spIHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4Lmh0bWwiXSkgewogICAgICAgICAg
ICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMiLCBmcmFt
ZXNNYWluUmVzb3VyY2VdIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK
LSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1
dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICAgICAgW3Rhc2sgZGlk
UmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAg
ICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0
cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSkgewogICAgICAgICAgICAg
TlNEYXRhICpkYXRhID0gW0AiRm9vQmFyQmF6IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRv
cHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfV07CiAKLSAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAImZyYW1lc3Rlc3QiXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAib3RoZXJwcm90b2NvbCJdOwogCi0gICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKIApAQCAtNzM0LDI4ICs3MzQsMjggQEAgVEVTVChFdmFsdWF0ZUphdmFT
Y3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFtZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogICAg
IFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBp
ZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4
Lmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJXMiLCBmcmFtZXNNYWluUmVzb3VyY2VdIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4
dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFz
ayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0
bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW0AiRm9vQmFyQmF6IiBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAg
dGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBk
aWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZp
bmlzaF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVzdGVzdDovL2luZGV4Mi5odG1sIl0pIHsKICAgICAg
ICAgICAgIE5TRGF0YSAqZGF0YSA9IFtAIkhpIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRv
cHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfV07CiAKLSAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAImZyYW1lc3Rlc3QiXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAib3RoZXJwcm90b2NvbCJdOwogCi0gICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKIApAQCAtODA5LDggKzgwOSw4IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2Ny
aXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRpb25FcnJvcikKIAogVEVT
VChFdmFsdWF0ZUphdmFTY3JpcHQsIFdpbmRvd1BlcnNpc3RlbmN5KQogewotICAgIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBfX2Jsb2NrIGJvb2wgZGlk
RmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQppbmRleCBkNDJh
YTg2MTZiZTljYzFkNWQxZjc1NDNiZjcyZjc0ZWRlM2VmMDEyLi4yYmYwMmJiZDQxNzMwNWJhYTJk
MDJhNzQ0MDIzYWQ1ODhkY2I1ZGEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQpAQCAtMTUzLDgg
KzE1Myw4IEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBGZXRjaFBlcnNpc3RlbnRDcmVkZW50
aWFscykKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpXTsKIAogICAgIC8vIE1ha2Ugc3VyZSBubyBjcmVkZW50aWFsIGxlZnQgYnkgcHJl
dmlvdXMgdGVzdHMuCi0gICAgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9
IFtbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEi
IHBvcnQ6c2VydmVyLnBvcnQoKSBwcm90b2NvbDpOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFAgcmVh
bG06QCJ0ZXN0cmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RIVFRQQmFzaWNdIGF1dG9yZWxlYXNlXTsKLSAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3Bh
Y2U6cHJvdGVjdGlvblNwYWNlXTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0TlMo
W1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBw
b3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxt
OkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0
aG9kSFRUUEJhc2ljXSk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29s
IF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25T
cGFjZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKICAgICBbbmF2
aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTE2OCw3ICsx
NjgsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hQZXJzaXN0ZW50Q3JlZGVudGlh
bHMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIAogICAgIC8vIENsZWFy
IHBlcnNpc3RlbnQgY3JlZGVudGlhbHMgY3JlYXRlZCBieSB0aGlzIHRlc3QuCi0gICAgW1t3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxz
Rm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZV07CisgICAgW1t3ZWJWaWV3IGNvbmZp
Z3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVj
dGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZS5nZXQoKV07CiB9CiAKIFRFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJHTFBvbGljeS5tbQppbmRleCA5OTgx
MTlmMzUwMTg0YTQwYzJiMjJkYzljN2Q4NGUxMTJjYjdkNjljLi43MTRlY2JhYWQzZGZiZDk1ZmMy
NTcwZTc4YWZmYzRlOGY4OWYxZDFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2ViR0xQb2xpY3kubW0KQEAgLTY0LDcgKzY0LDcgQEAgQGltcGxl
bWVudGF0aW9uIFdlYkdMVGVzdERlbGVnYXRlCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNj
aGVtZVRhc2sKIHsKLSAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt1cmxTY2hlbWVUYXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3Jl
bGVhc2UoKV07CiAgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZURhdGE6W2RhdGEgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbdXJsU2NoZW1lVGFzayBk
aWRGaW5pc2hdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbQppbmRleCAzMGZl
YTA3NTNkYWIzOWQyODhhMmEwYmRiNzI0YmU5MWQ2MWQ3NGFlLi4yOTgxOTk2OTEzMjZlMzA4ZTkw
OTRkN2UxMGZkNDQzYzIzNTFiZTQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5t
bQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpnZXROZXh0TWVzc2Fn
ZSgpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlKTsKICAgICB9CiAKLSAgICByZXR1cm4gW1tzY3JpcHRNZXNzYWdlcy50YWtlRmlyc3QoKSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0
KCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogVEVTVChJbmRleGVkREIsIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggM2Ix
MzFmN2NiODYwYWU4MDFiOTIzNTU1M2Q1MGZiN2ExNmMyNzRkMS4uYWExMDg0NmE0YzcwZWQ5NTM0
N2YwMzhjMTA2YjRlZTYzMWQ0ZWExNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0KQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIFdLU2NyaXB0TWVzc2FnZSAqZ2V0TmV4
dE1lc3NhZ2UoKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFtbc2NyaXB0TWVzc2FnZXMudGFrZUZp
cnN0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNjcmlwdE1lc3NhZ2VzLnRh
a2VGaXJzdCgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIGVudW0gY2xhc3MgU2hvdWxkRW5hYmxlUHJv
Y2Vzc1ByZXdhcm1pbmcgeyBObywgWWVzIH07CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIHZv
aWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3
YXJtaW5nIHNob3VsZEUKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5f
Y29va2llU3RvcmFnZUZpbGUgPSBjb29raWVTdG9yYWdlRmlsZTsKICAgICB3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoOwogCi0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVs
ZWFzZV07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHRO
UyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sLmdldCgpOwogCiAgICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC00NDksNyArNDQ5LDcgQEAgVEVTVChXZWJLaXQsIEFs
dGVybmF0aXZlU2VydmljZXNEZWZhdWx0RGlyZWN0b3J5Q3JlYXRpb24pCiAgICAgTlNVUkwgKmRl
ZmF1bHREaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNo
ZXMvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9BbHRlcm5hdGl2ZVNlcnZp
Y2VzIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOwogICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmRlZmF1bHRE
aXJlY3RvcnkgZXJyb3I6bmlsXTsKICAgICAKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9
IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vi
VmlldzEgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgYXV4aWxpYXJ5IHByb2Nl
c3NlcyIgYmFzZVVSTDpuaWxdOwogCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0RGlyZWN0b3J5LnBhdGhdKTsK
QEAgLTQ2NCw5ICs0NjQsOSBAQCBURVNUKFdlYktpdCwgQWx0ZXJuYXRpdmVTZXJ2aWNlc0RlZmF1
bHREaXJlY3RvcnlDcmVhdGlvbikKICAgICAKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9y
S2V5OmtleV07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07Ci0gICAgVGVzdFdLV2ViVmll
dyAqd2ViVmlldzIgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTph
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OmFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
LmF1dG9yZWxlYXNlKCldKS5hdXRvcmVsZWFzZSgpXTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dl
YlZpZXcyIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IGF1eGlsaWFyeSBwcm9j
ZXNzZXMiIGJhc2VVUkw6bmlsXTsKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0RGlyZWN0b3J5LnBhdGhdKTsK
QEAgLTQ5MCw3ICs0OTAsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUVwaGVtZXJh
bFZpYUNvbmZpZ3VyYXRpb24pCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhdGgucGF0aF0pOwogCiAgICAgUmV0YWluUHRyPF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25d
KTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxl
YXNlKCk7CiAgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKIAogICAgIEVYUEVDVF9GQUxTRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKQEAgLTUzMCw3ICs1MzAsNyBAQCBURVNUKFdl
YktpdCwgRG9Mb2FkV2l0aE5vbkRlZmF1bHREYXRhU3RvcmVBZnRlclRlcm1pbmF0aW5nTmV0d29y
a1Byb2Nlc3MpCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBh
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIAog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCkBAIC01NDksOCArNTQ5LDggQEAgVEVTVChXZWJLaXQsIERvTG9h
ZFdpdGhOb25EZWZhdWx0RGF0YVN0b3JlQWZ0ZXJUZXJtaW5hdGluZ05ldHdvcmtQcm9jZXNzKQog
CiBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25QYXRoTnVsbCkKIHsK
LSAgICBFWFBFQ1RfVFJVRShbW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoW1tbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXSBfaW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnldKTsKKyAgICBFWFBFQ1RfVFJVRShbYWRvcHROUyhbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkgX2luZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5XSk7CisgICAgRVhQRUNUX0ZBTFNFKFthZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0p
IF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV0pOwogfQogCiBURVNUKFdlYktpdCwgV2Vic2l0
ZURhdGFTdG9yZUlmRXhpc3RzKQpAQCAtNjMwLDEzICs2MzAsMTMgQEAgVEVTVChXZWJLaXQsIFdl
YnNpdGVEYXRhU3RvcmVSZW5hbWVPcmlnaW5Gb3JJbmRleGVkRGF0YWJhc2UpCiAKIFRFU1QoV2Vi
S2l0LCBXZWJzaXRlRGF0YVN0b3JlUmVuYW1lT3JpZ2luKQogewotICAgIFRlc3RXS1dlYlZpZXcg
KndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsK
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8c2NyaXB0PmxvY2Fs
U3RvcmFnZS5zZXRJdGVtKCd0ZXN0a2V5JywgJ3Rlc3R2YWx1ZScpPC9zY3JpcHQ+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXV07CiAgICAgCiAg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBOU1VSTCAqZXhhbXBsZVVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXTsKICAgICBOU1VSTCAq
d2ViS2l0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl07
Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSB3ZWJWaWV3LmNvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9
IFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmU7CiAgICAgTlNTZXQgKmxv
Y2FsU3RvcmFnZVNldCA9IFtOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlTG9j
YWxTdG9yYWdlXTsKICAgICBbZGF0YVN0b3JlIF9yZW5hbWVPcmlnaW46ZXhhbXBsZVVSTCB0bzp3
ZWJLaXRVUkwgZm9yRGF0YU9mVHlwZXM6bG9jYWxTdG9yYWdlU2V0IGNvbXBsZXRpb25IYW5kbGVy
Ol57CiAgICAgICAgIGRvbmUgPSB0cnVlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIFRFU1QoV2ViS2l0
LCBOZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCiAgICAgW3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeTp0ZW1wRGlyXTsKIAogICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbd2ViVmll
d0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwpAQCAtNzA5LDcg
KzcwOSw3IEBAIFRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3JpZXMpCiAgICAg
W3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWU6QCJ0ZXN0c3ViZGlyZWN0b3J5Il07CiAgICAgCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICAKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkL2luZGV4Lmh0bWwiLCBzZXJ2ZXIucG9y
dCgpXV1dXTsKQEAgLTc0OCw5ICs3NDgsOSBAQCBURVNUKFdlYktpdCwgRElTQUJMRURfQWx0ZXJu
YXRpdmVTZXJ2aWNlKQogICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRo
OnBhdGggZXJyb3I6JmVycm9yXTsKIAotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uICpkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRhU3RvcmVDb25maWd1
cmF0aW9uLmFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5ID0gdGVtcERpcjsKLSAg
ICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uXSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gc2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3Rvcnk6
dGVtcERpcl07CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgW2RhdGFTdG9y
ZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRl
RGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgewpAQCAtNzU5LDEyICs3NTksMTIgQEAg
VEVTVChXZWJLaXQsIERJU0FCTEVEX0FsdGVybmF0aXZlU2VydmljZSkKICAgICB9XTsKICAgICBV
dGlsOjpydW4oJmRvbmUpOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07Ci0gICAgd2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IGRh
dGFTdG9yZTsKLSAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJW
aWV3Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwotICAgIFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgKmRlbGVnYXRlID0gW1tbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0g
ICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS1dlYlZp
ZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsICopKSB7CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdD
b25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewogICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1l
dGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtO
U1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2Uuc2VydmVyVHJ1c3RdKTsKICAgICB9OwpAQCAtNzcyLDcgKzc3Miw3IEBAIFRFU1QoV2ViS2l0
LCBESVNBQkxFRF9BbHRlcm5hdGl2ZVNlcnZpY2UpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
c2VydmVyLnJlcXVlc3QoKV07CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgY2hlY2tVbnRpbEVu
dHJ5Rm91bmQoZGF0YVN0b3JlLCBeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVj
b3JkcykgeworICAgIGNoZWNrVW50aWxFbnRyeUZvdW5kKGRhdGFTdG9yZS5nZXQoKSwgXihOU0Fy
cmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKICAgICAgICAgRVhQRUNUX0VR
KHJlY29yZHMuY291bnQsIDF1KTsKICAgICAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZp
Y2VzXSBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAg
ICAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CkBAIC04NDcs
NyArODQ3LDcgQEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUpCiAgICAgW3dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIHNldE1lZGlhQ2FjaGVEaXJlY3Rvcnk6dGVtcERpcl07CiAKICAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXV07Cisg
ICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW0KaW5kZXggZmJjNDEyNmM4MTEyYmNkMzFiNTk0OWMyNmUyZDk5NWVmYzI4
YjEzZS4uYjM4MDMwYjM3NzJhZjdmZDM3ODMwNDJlNTM5NGM3MmNjNWMzMjg2MyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9s
aWNpZXMubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbgogCiAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJl
bmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQ
b2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBzd2l0Y2ggKGFsZXJ0Q291bnQpIHsKICAgICBjYXNl
IDA6CiAgICAgICAgIC8vIFZlcmlmeSB0aGUgY29udGVudCBibG9ja2VycyBiZWhhdmUgY29ycmVj
dGx5IHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3IuCkBAIC0xMTMsMTEgKzExMywxMSBAQCAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aQogICAgIGNhc2UgMToKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gVmVyaWZ5IGRpc2FibGluZyBjb250ZW50IGJsb2NrZXJzIHdvcmtzIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNl
OworICAgICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q29udGVudEJsb2NrZXJzRW5hYmxl
ZDpmYWxzZV07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFZlcmlmeSBjYWxsaW5nIHRo
ZSBkZWNpc2lvbkhhbmRsZXIgYXN5bmNocm9ub3VzbHkgd29ya3MgY29ycmVjdGx5LgogICAgICAg
ICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShkZWNpc2lvbkhhbmRs
ZXIpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyQ29weSwg
d2Vic2l0ZVBvbGljaWVzID0gcmV0YWluUHRyKHdlYnNpdGVQb2xpY2llcyldIHsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlckNvcHksIHdlYnNpdGVQb2xpY2ll
c10gewogICAgICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlckNvcHkoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
QmxvY2tfcmVsZWFzZShkZWNpc2lvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgICAgIH0pOwpAQCAt
MTI1LDEyICsxMjUsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgMjoKICAgICAgICAgLy8gVmVyaWZ5IGVuYWJsaW5nIGNvbnRlbnQgYmxvY2tl
cnMgaGFzIG5vIGVmZmVjdCB3aGVuIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMu
Ci0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7
CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ6dHJ1
ZV07CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVYUEVDVF9UUlVFKGZh
bHNlKTsKICAgICB9Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIH0KIAogQGVuZApA
QCAtMTg5LDEyICsxODksMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKIAogLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdL
V2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lz
aW9uSGFuZGxlcgogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMg
PSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XSk7CiAgICAgaWYgKF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwpCi0gICAg
ICAgIHdlYnNpdGVQb2xpY2llcy5fYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2FsbG93ZWRBdXRv
cGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAg
W3dlYnNpdGVQb2xpY2llcyBfc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzOl9hbGxvd2VkQXV0b3Bs
YXlRdWlya3NGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCldOwogICAgIGlmIChf
YXV0b3BsYXlQb2xpY3lGb3JVUkwpCi0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYXV0b3BsYXlQ
b2xpY3kgPSBfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVS
TCk7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3
ZWJzaXRlUG9saWNpZXMpOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRBdXRvcGxheVBv
bGljeTpfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCld
OworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vi
c2l0ZVBvbGljaWVzLmdldCgpKTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhG
bGFnczooX1dLQXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJl
ZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFdLV2VicGFn
ZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9
IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgICAgICBp
ZiAoX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTCkKLSAgICAgICAgICAgIHdlYnNpdGVQb2xp
Y2llcy5fYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVS
TChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAgICAgIFt3ZWJzaXRlUG9s
aWNpZXMgX3NldEFsbG93ZWRBdXRvcGxheVF1aXJrczpfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9y
VVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpXTsKICAgICAgICAgaWYgKF9hdXRvcGxh
eVBvbGljeUZvclVSTCkKLSAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYXV0b3BsYXlQb2xp
Y3kgPSBfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCk7
Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywg
d2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEF1dG9w
bGF5UG9saWN5Ol9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMKV07CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzA0LDkgKzMw
NCw5IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVu
YWJsZWQpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIAog
ICAgIC8vIFRlc3QgdXBkYXRpbmcgd2Vic2l0ZSBwb2xpY2llcy4KLSAgICBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJzaXRlUG9saWNpZXMuX2F1dG9wbGF5UG9saWN5
ID0gX1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5QWxsb3c7Ci0gICAgW3dlYlZpZXcgX3VwZGF0ZVdl
YnBhZ2VQcmVmZXJlbmNlczp3ZWJzaXRlUG9saWNpZXNdOworICAgIGF1dG8gd2Vic2l0ZVBvbGlj
aWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYnNpdGVQb2xpY2llcyBfc2V0QXV0b3BsYXlQb2xpY3k6X1dLV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5QWxsb3ddOworICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6d2Vic2l0
ZVBvbGljaWVzLmdldCgpXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAicGxheVZpZGVvKCkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9w
bGF5ZWQiXTsKIApAQCAtNzAxLDEwICs3MDEsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlkZW9EYXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGEKIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+
KXRhc2sKIHsKICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCIvc2hvdWxkLXJlZGlyZWN0Il0pIHsKLSAgICAgICAgWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2
YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246W1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXSBuZXdSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8v
L2F1dG9wbGF5LWNoZWNrLmh0bWwiXV1dOworICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1By
aXZhdGU+KXRhc2sgX2RpZFBlcmZvcm1SZWRpcmVjdGlvbjphZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpIG5l
d1JlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInRlc3Q6Ly8vYXV0b3BsYXktY2hlY2suaHRtbCJdXV07CiAgICAgICAgIAogICAgICAgICBO
U0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2siIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29u
dGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2Vd
XTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpu
aWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07
CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIHJldHVybjsKQEAgLTcxNiw4ICs3
MTYsOCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgIGF1dG8mIHJhbmdlID0gKnBhcnNl
ZFJhbmdlLnJhbmdlOwogICAgIAogICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gQHsg
QCJDb250ZW50LUxlbmd0aCI6IFtAKHJhbmdlLnNlY29uZCAtIHJhbmdlLmZpcnN0KSBzdHJpbmdW
YWx1ZV0sIEAiQ29udGVudC1SYW5nZSI6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYnl0
ZXMgJWx1LSVsdS8lbHUiLCByYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kLCBbdmlkZW9EYXRhIGxl
bmd0aF1dIH07Ci0gICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU0hUVFBVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBI
VFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVh
ZGVyRmllbGRzXSBhdXRvcmVsZWFzZV07Ci0gICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJl
c3BvbnNlXTsKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBW
ZXJzaW9uOihOU1N0cmluZyAqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJG
aWVsZHNdKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuYXV0b3JlbGVh
c2UoKV07CiAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3ZpZGVvRGF0YSBzdWJkYXRhV2l0aFJh
bmdlOk5TTWFrZVJhbmdlKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQgLSByYW5nZS5maXJzdCld
XTsKICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIApAQCAtNzMzLDcgKzczMyw3IEBAIFRFU1Qo
V2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNEdXJpbmdSZWRpcmVjdCkKIHsKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gdmlkZW9EYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxv
Y10gaW5pdFdpdGhDb250ZW50c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJ0ZXN0IiB3aXRoRXh0ZW5zaW9uOkAibXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpbW1tUZXN0U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdFdpdGhWaWRlb0RhdGE6V1RGTW92
ZSh2aWRlb0RhdGEpXSBhdXRvcmVsZWFzZV0gZm9yVVJMU2NoZW1lOkAidGVzdCJdOworICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6YWRvcHROUyhbW1Rlc3RTY2hlbWVIYW5k
bGVyIGFsbG9jXSBpbml0V2l0aFZpZGVvRGF0YTpXVEZNb3ZlKHZpZGVvRGF0YSldKS5hdXRvcmVs
ZWFzZSgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAKICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwpAQCAtNzcxLDkgKzc3MSw5IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJz
aXRlUG9saWNpZXNVcGRhdGVzKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RXaXRo
QXVkaW9dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAK
LSAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHBvbGljaWVzLl9hdXRvcGxheVBv
bGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OwotICAgIFt3ZWJWaWV3IF91cGRh
dGVXZWJwYWdlUHJlZmVyZW5jZXM6cG9saWNpZXNdOworICAgIGF1dG8gcG9saWNpZXMgPSBhZG9w
dE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICBbcG9saWNpZXMg
X3NldEF1dG9wbGF5UG9saWN5Ol9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93XTsKKyAgICBb
d2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnBvbGljaWVzLmdldCgpXTsKIAogICAg
IC8vIE5vdyB0aGF0IHdlIHVwZGF0ZWQgb3VyIHBvbGljaWVzLCBhIHNjcmlwdCBzaG91bGQgYmUg
YWJsZSB0byBhdXRvcGxheSBtZWRpYS4KICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAicGxheVZpZGVvKCkiXTsKQEAgLTc4MSw5ICs3ODEsOSBAQCBURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKIAogICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYXVzZVZpZGVvKCkiXTsKIAotICAgIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgcHJlZmVyZW5jZXMuX2F1dG9wbGF5UG9saWN5
ID0gX1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5RGVueTsKLSAgICBbd2ViVmlldyBfdXBkYXRlV2Vi
cGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRv
cHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAgW3ByZWZlcmVu
Y2VzIF9zZXRBdXRvcGxheVBvbGljeTpfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lEZW55XTsKKyAg
ICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgpXTsK
IAogICAgIC8vIEEgc2NyaXB0IHNob3VsZCBubyBsb25nZXIgYmUgYWJsZSB0byBhdXRvcGxheSBt
ZWRpYS4KICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CkBAIC0xMDMz
LDcgKzEwMzMsNyBAQCBzdGF0aWMgdm9pZCBleHBlY3RIZWFkZXJzKGlkIDxXS1VSTFNjaGVtZVRh
c2s+IHRhc2ssIGJvb2wgZXhwZWN0ZWQpCiAKIHN0YXRpYyB2b2lkIHJlc3BvbmQoaWQgPFdLVVJM
U2NoZW1lVGFzaz50YXNrLCBOU1N0cmluZyAqaHRtbCA9IG5pbCkKIHsKLSAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0
bWwubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2Uo
KV07CiAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W2h0bWwgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbdGFzayBkaWRGaW5pc2hdOwogfQpAQCAtMTA1MCw3
ICsxMDUwLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKGxlZ2FjeUhlYWRlckZpZWxkRGljdGlvbmFyeS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiWC1rZXkyIikpLmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJ2YWx1ZTIiKSkuZ2V0KCkpOwogICAgIFdLV2Vic2l0ZVBvbGlj
aWVzU2V0Q3VzdG9tSGVhZGVyRmllbGRzKChXS1dlYnNpdGVQb2xpY2llc1JlZilwcmVmZXJlbmNl
cywgbGVnYWN5SGVhZGVyRmllbGREaWN0aW9uYXJ5LmdldCgpKTsKIAotICAgIF9XS0N1c3RvbUhl
YWRlckZpZWxkcyAqaGVhZGVyRmllbGRzID0gW1tbX1dLQ3VzdG9tSGVhZGVyRmllbGRzIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBoZWFkZXJGaWVsZHMgPSBhZG9wdE5TKFtb
X1dLQ3VzdG9tSGVhZGVyRmllbGRzIGFsbG9jXSBpbml0XSk7CiAgICAgW2hlYWRlckZpZWxkcyBz
ZXRGaWVsZHM6QHtAIlgta2V5MyI6IEAidmFsdWUzIiwgQCJYLWtleTQiOiBAInZhbHVlNCJ9XTsK
ICAgICBbaGVhZGVyRmllbGRzIHNldFRoaXJkUGFydHlEb21haW5zOkBbCiAgICAgICAgIEAiKi5o
b3N0d2l0aGFzdGVyaXNrLmNvbSIsCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aQogICAgICAgICBAIiouY29tIiAvLyBzaG91bGQgYmUgaWdub3JlZC4KICAgICBd
XTsKICAgICAKLSAgICBbcHJlZmVyZW5jZXMgX3NldEN1c3RvbUhlYWRlckZpZWxkczpAW2hlYWRl
ckZpZWxkc11dOworICAgIFtwcmVmZXJlbmNlcyBfc2V0Q3VzdG9tSGVhZGVyRmllbGRzOkBbaGVh
ZGVyRmllbGRzLmdldCgpXV07CiAgICAgCiAgICAgaWYgKFtuYXZpZ2F0aW9uQWN0aW9uLnJlcXVl
c3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW5yZXNvdXJjZSJdKSB7CiAgICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CkBAIC0xMjE0LDEx
ICsxMjE0LDExIEBAIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRh
dGlvbnMiKQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0
aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqKSlkZWNpc2lvbkhhbmRsZXIKIElHTk9SRV9XQVJOSU5HU19FTkQKIHsKLSAgICBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFk
b3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIGlmIChuYXZp
Z2F0aW9uQWN0aW9uLnRhcmdldEZyYW1lLm1haW5GcmFtZSkKICAgICAgICAgW3dlYnNpdGVQb2xp
Y2llcyBfc2V0Q3VzdG9tVXNlckFnZW50OkAiRm9vIEN1c3RvbSBVc2VyQWdlbnQiXTsKIAotICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBv
bGljaWVzKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCkBAIC0xMzA0LDE0ICsxMzA0LDE0IEBAIEBpbXBsZW1lbnRhdGlvbiBDdXN0b21KYXZhU2Ny
aXB0VXNlckFnZW50RGVsZWdhdGUKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24g
KiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZv
IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFkb3B0TlMo
W1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIGlmIChuYXZpZ2F0aW9u
QWN0aW9uLnRhcmdldEZyYW1lLm1haW5GcmFtZSkgewogICAgICAgICBbd2Vic2l0ZVBvbGljaWVz
IF9zZXRDdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczpAIkZvbyBTaXRlIFNwZWNp
ZmljIFF1cmlrcyBVc2VyQWdlbnQiXTsKICAgICAgICAgaWYgKF9zZXRDdXN0b21Vc2VyQWdlbnQp
CiAgICAgICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0b21Vc2VyQWdlbnQ6QCJGb28g
Q3VzdG9tIFJlcXVlc3QgVXNlckFnZW50Il07CiAgICAgfQogCi0gICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGlj
aWVzLmdldCgpKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KQEAgLTE0MDEsMTEg
KzE0MDEsMTEgQEAgQGltcGxlbWVudGF0aW9uIEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtRGVsZWdh
dGUKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9u
IHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBv
bGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBhbGxvY10gaW5pdF0pOwogICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLnRhcmdldEZyYW1l
Lm1haW5GcmFtZSkKICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tTmF2aWdhdG9y
UGxhdGZvcm06QCJUZXN0IEN1c3RvbSBQbGF0Zm9ybSJdOwogCi0gICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGlj
aWVzLmdldCgpKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KQEAgLTE0NjAsMTAg
KzE0NjAsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGV2aWNlT3JpZW50YXRpb25BY2Nl
c3NQb2xpY3k6KF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGkKIAogLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05h
dmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVz
ZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFk
b3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJzaXRl
UG9saWNpZXMgX3NldERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5Ol9hY2Nl
c3NQb2xpY3ldOwogCi0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIH0KIAogLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24KQEAgLTE1NjcsMTAgKzE1NjcsMTAgQEAgLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGkKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0
aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9
IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIGlmIChf
cG9wVXBQb2xpY3lGb3JVUkwpCi0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fcG9wVXBQb2xpY3kg
PSBfcG9wVXBQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCk7Ci0gICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9s
aWNpZXMpOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRQb3BVcFBvbGljeTpfcG9wVXBQ
b2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCldOworICAgIGRlY2lzaW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdl
dCgpKTsKIH0KIAogLSAobnVsbGFibGUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFj
dGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMg
Kil3aW5kb3dGZWF0dXJlcwpAQCAtMTYxOCwxMiArMTYxOCwxMiBAQCAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tO
YXZpZ2F0aQogewogICAgIE5TVVJMICp1cmwgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJM
OwogICAgIGlmIChbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ludmFsaWQiXSkgewotICAg
ICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgd2Vic2l0ZVBv
bGljaWVzLl93ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOltbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byB3
ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmFk
b3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1
dG9yZWxlYXNlKCldKS5hdXRvcmVsZWFzZSgpXTsKIAogICAgICAgICBib29sIHNhd0V4Y2VwdGlv
biA9IGZhbHNlOwogICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0
ZVBvbGljaWVzLmdldCgpKTsKICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKICAgICAgICAgICAgIHNhd0V4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgIH0KQEAgLTE2
MzQsMTYgKzE2MzQsMTYgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICBpZiAoW3VybC5w
YXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja1N0b3JhZ2UiXQogICAgICAgICB8fCBbdXJsLnBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL2NoZWNrQ29va2llcyJdCiAgICAgICAgIHx8IFt1cmwucGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbkZyYW1lIl0pIHsKLSAgICAgICAgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURh
dGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07Ci0g
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vi
c2l0ZVBvbGljaWVzKTsKKyAgICAgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtb
V0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3dlYnNpdGVQb2xp
Y2llcyBfc2V0V2Vic2l0ZURhdGFTdG9yZTpbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3Rl
bnREYXRhU3RvcmVdXTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgIH0KICAgICBpZiAoW3Vy
bC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9zdWJGcmFtZSJdKSB7Ci0gICAgICAgIFdLV2VicGFn
ZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNp
dGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVd
OworICAgICAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRXZWJz
aXRlRGF0YVN0b3JlOltXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV1d
OwogICAgICAgICBib29sIHNhd0V4Y2VwdGlvbiA9IGZhbHNlOwogICAgICAgICBAdHJ5IHsKLSAg
ICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWws
IHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5Q2FuY2VsLCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgICAgICB9
IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICAgICAgc2F3RXhjZXB0
aW9uID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTcyOCwyNCArMTcyOCwyNCBAQCBURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzRGF0YVN0b3JlKQogVEVTVChXZWJwYWdlUHJl
ZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJDb250ZW50Q29udHJvbGxlcikKIHsKICAgICBh
dXRvIG1ha2VTY3JpcHQgPSBbXSAoTlNTdHJpbmcgKnNjcmlwdCkgewotICAgICAgICByZXR1cm4g
W1tbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzY3JpcHQgaW5qZWN0aW9uVGlt
ZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9u
bHk6WUVTXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tVc2VyU2Ny
aXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzY3JpcHQgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTXSkuYXV0
b3JlbGVhc2UoKTsKICAgICB9OwotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
W2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6bWFrZVNj
cmlwdChAImFsZXJ0KCd0ZXN0QWxlcnQxJykiKV07Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmll
dyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0g
ICAgVGVzdFVJRGVsZWdhdGUgKnVpRGVsZWdhdGUgPSBbW1Rlc3RVSURlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdhdGU7Ci0gICAgVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSAqbmF2aWdhdGlvbkRlbGVnYXRlID0gW1tUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkVXNlclNjcmlwdDptYWtlU2NyaXB0KEAiYWxlcnQo
J3Rlc3RBbGVydDEnKSIpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OnVpRGVsZWdhdGUuZ2V0KCldOworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBfX2Jsb2NrIGJvb2wgaWZyYW1l
RXhjZXB0aW9uVGhyb3duID0gZmFsc2U7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tVc2VyQ29u
dGVudENvbnRyb2xsZXI+IHJlcGxhY2VtZW50VXNlckNvbnRlbnRDb250cm9sbGVyOwotICAgIG5h
dmlnYXRpb25EZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZl
cmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ks
IFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBeKFdLTmF2
aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpIHsKICAgICAgICAgaWYgKFthY3Rpb24ucmVxdWVzdC5VUkwucGF0aCBoYXNTdWZm
aXg6QCIvc2ltcGxlLWlmcmFtZS5odG1sIl0pCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIG5pbCk7CiAgICAgICAgIGlm
IChbYWN0aW9uLnJlcXVlc3QuVVJMLnBhdGggaGFzU3VmZml4OkAiL3NpbXBsZS5odG1sIl0pIHsK
ICAgICAgICAgICAgIEB0cnkgewotICAgICAgICAgICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICpwcmVmZXJlbmNlcyA9IFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgbmV3XSBhdXRvcmVsZWFzZV07
Ci0gICAgICAgICAgICAgICAgcHJlZmVyZW5jZXMuX3VzZXJDb250ZW50Q29udHJvbGxlciA9IFtb
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCBwcmVmZXJlbmNlcyk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0
TlMoW1dLV2VicGFnZVByZWZlcmVuY2VzIG5ld10pOworICAgICAgICAgICAgICAgIFtwcmVmZXJl
bmNlcyBfc2V0VXNlckNvbnRlbnRDb250cm9sbGVyOmFkb3B0TlMoW1dLVXNlckNvbnRlbnRDb250
cm9sbGVyIG5ld10pLmF1dG9yZWxlYXNlKCldOworICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMu
Z2V0KCkpOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsK
ICAgICAgICAgICAgICAgICBpZnJhbWVFeGNlcHRpb25UaHJvd24gPSB0cnVlOwogICAgICAgICAg
ICAgfQpAQCAtMTc1MywxMyArMTc1MywxMyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vi
c2l0ZVBvbGljaWVzVXNlckNvbnRlbnRDb250cm9sbGVyKQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBFWFBFQ1RfVFJVRShbYWN0aW9uLnJlcXVlc3QuVVJMLnBhdGggaGFzU3VmZml4OkAi
L3NpbXBsZTIuaHRtbCJdKTsKLSAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzID0gW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
YXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1dLV2VicGFnZVByZWZlcmVuY2VzIG5ld10pOwog
ICAgICAgICByZXBsYWNlbWVudFVzZXJDb250ZW50Q29udHJvbGxlciA9IGFkb3B0TlMoW1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyIG5ld10pOwogICAgICAgICBbcmVwbGFjZW1lbnRVc2VyQ29udGVu
dENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDptYWtlU2NyaXB0KEAiYWxlcnQoJ3Rlc3RBbGVydDIn
KSIpXTsKLSAgICAgICAgcHJlZmVyZW5jZXMuX3VzZXJDb250ZW50Q29udHJvbGxlciA9IHJlcGxh
Y2VtZW50VXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOwotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgICAg
ICBbcHJlZmVyZW5jZXMgX3NldFVzZXJDb250ZW50Q29udHJvbGxlcjpyZXBsYWNlbWVudFVzZXJD
b250ZW50Q29udHJvbGxlci5nZXQoKV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcy5nZXQoKSk7CiAgICAgfTsKLSAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5hdmlnYXRpb25EZWxlZ2F0ZTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlLWlmcmFtZSJdOwogICAg
IEVYUEVDVF9XS19TVFJFUShbdWlEZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAidGVzdEFsZXJ0MSIp
OwpAQCAtMTc3MCw5ICsxNzcwLDkgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQ
b2xpY2llc1VzZXJDb250ZW50Q29udHJvbGxlcikKIAogICAgIGJvb2wgY2F1Z2h0RXhjZXB0aW9u
ID0gZmFsc2U7CiAgICAgQHRyeSB7Ci0gICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVm
ZXJlbmNlcyA9IFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
ICAgIHByZWZlcmVuY2VzLl91c2VyQ29udGVudENvbnRyb2xsZXIgPSBbW1dLVXNlckNvbnRlbnRD
b250cm9sbGVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAgICAgICBbd2ViVmlldyBfdXBkYXRlV2Vi
cGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlcyA9
IGFkb3B0TlMoW1dLV2VicGFnZVByZWZlcmVuY2VzIG5ld10pOworICAgICAgICBbcHJlZmVyZW5j
ZXMgX3NldFVzZXJDb250ZW50Q29udHJvbGxlcjphZG9wdE5TKFtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBuZXddKS5hdXRvcmVsZWFzZSgpXTsKKyAgICAgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBh
Z2VQcmVmZXJlbmNlczpwcmVmZXJlbmNlcy5nZXQoKV07CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0
aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2lPU01v
dXNlU3VwcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaU9T
TW91c2VTdXBwb3J0Lm1tCmluZGV4IDcyY2Q2YmQxMjIyMDliYjNlYmI4ZjVhOGI2NmE1ZmJmMGM5
YWU5MDEuLjY0YThkODcyNDhhNWJmNzNiOWM0NzZkM2FhMGQ2Y2JiNTAwNzFkZTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaU9TTW91c2VTdXBwb3J0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaU9TTW91c2VT
dXBwb3J0Lm1tCkBAIC0yODYsMTAgKzI4NiwxMCBAQCBURVNUKGlPU01vdXNlU3VwcG9ydCwgV2Vi
c2l0ZU1vdXNlRXZlbnRQb2xpY2llcykKIAogICAgIC8vIElmIGxvYWRlZCB3aXRoIF9XS1dlYnNp
dGVNb3VzZUV2ZW50UG9saWN5U3ludGhlc2l6ZVRvdWNoRXZlbnRzLCBpdCBzaG91bGQgc2VuZCB0
b3VjaCBldmVudHMgaW5zdGVhZC4KIAotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJl
bmNlcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
Ci0gICAgcHJlZmVyZW5jZXMuX21vdXNlRXZlbnRQb2xpY3kgPSBfV0tXZWJzaXRlTW91c2VFdmVu
dFBvbGljeVN5bnRoZXNpemVUb3VjaEV2ZW50czsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRv
cHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAgW3ByZWZlcmVu
Y2VzIF9zZXRNb3VzZUV2ZW50UG9saWN5Ol9XS1dlYnNpdGVNb3VzZUV2ZW50UG9saWN5U3ludGhl
c2l6ZVRvdWNoRXZlbnRzXTsKIAotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAInR3byIgcHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInR3byIgcHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0
KCldOwogCiAgICAgLy8gRklYTUU6IEJlY2F1c2Ugd2UncmUgZGlyZWN0bHkgY2FsbGluZyBtb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDogdG8gZW11bGF0ZSB0aGUgZ2VzdHVyZSByZWNvZ25p
emVyLAogICAgIC8vIHdlIGNhbid0IGp1c3QgdGFwQW5kV2FpdCgpIGFnYWluIGFuZCBleHBlY3Qg
dGhlIGZhY3QgdGhhdCBpdCdzIGRpc2FibGVkIHRvIHN0b3AgdGhlIG1vdXNlIGV2ZW50cy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9EYXRl
VGltZUlucHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0TGVnYWN5L2lvcy9EYXRlVGltZUlucHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbQpp
bmRleCBmNGNkNzVmZTZiZmZmZWY1OTYxMDljYTM2MjcyNDhlZGM5MDUwOGZkLi5lZTVkMzY1OWVi
ZTkyNGE0OTA1YmUwZTIzMzBmYmM0NTZkNTNiMTkzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJbnB1dHNBY2Nlc3NvcnlWaWV3
VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9z
L0RhdGVUaW1lSW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3RzLm1tCkBAIC01MSw3ICs1MSw3IEBAIEBl
bmQKIAogc3RhdGljIFVJVGFibGVWaWV3Q2VsbCAqIGNlbGxGb3JSb3dBdEluZGV4UGF0aChpZCwg
U0VMKQogewotICAgIHJldHVybiBbW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10gaW5p
dF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ1blRlc3RXaXRoSW5wdXRUeXBl
KE5TU3RyaW5nICp0eXBlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvQWN0aW9uU2hlZXRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Fj
dGlvblNoZWV0VGVzdHMubW0KaW5kZXggNzg3ZDNmZWVhYTY5YTg1NTg3M2RmZGNhNDZlZGIzYjIx
OTk1OTc1OS4uOTY3YWNlNTkyZDg1YThlYjg4ODU4ZGRiNmY1YjQ0ZjJkZWJiY2NlNiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCkBA
IC0xNTQsNyArMTU0LDcgQEAgVEVTVChBY3Rpb25TaGVldFRlc3RzLCBJbWFnZU1hcERvZXNOb3RE
ZXN0cm95U2VsZWN0aW9uKQogCiBzdGF0aWMgVUlWaWV3ICpzd2l6emxlZFJlc2l6YWJsZVNuYXBz
aG90Vmlld0Zyb21SZWN0KGlkLCBTRUwsIENHUmVjdCByZWN0LCBCT09MLCBVSUVkZ2VJbnNldHMp
CiB7Ci0gICAgcmV0dXJuIFtbW1VJVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdodCldIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdodCldKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiBURVNUKEFjdGlvblNoZWV0VGVzdHMsIERhdGFEZXRlY3RvcnNMaW5rSXNOb3RQ
cmVzZW50ZWRBc0FMaW5rKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNzU2NTIyZmQxZmQ5MTk2NTRjMTQ3MTcyMDE4
NzAzNDJlNzJiMTI4ZC4uYTZkZDJlNGQzYzFjMGIwODM0ZTljMTM0YTBkMzY5ZTM1N2Y3M2VlNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0
c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRl
c3RzSU9TLm1tCkBAIC0xMjc3LDggKzEyNzcsOCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIE92
ZXJyaWRlRHJvcCkKICAgICBbc2ltdWxhdG9yIHNldERyb3BDb21wbGV0aW9uQmxvY2s6XihCT09M
IGhhbmRsZWQsIE5TQXJyYXkgKml0ZW1Qcm92aWRlcnMpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KGhhbmRsZWQpOwogICAgICAgICBbaXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCBsb2FkRGF0YVJl
cHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZUhUTUwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7
Ci0gICAgICAgICAgICBOU1N0cmluZyAqdGV4dCA9IFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOwot
ICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCI8Ym9keT48L2JvZHk+IiwgdGV4dC5VVEY4U3Ry
aW5nKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dCA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgiPGJvZHk+PC9ib2R5PiIsIFt0ZXh0IFVURjhTdHJpbmdd
KTsKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKICAgICAgICAgICAgIGZpbmlz
aGVkTG9hZGluZ0RhdGEgPSB0cnVlOwogICAgICAgICB9XTsKQEAgLTE1NDYsMTAgKzE1NDYsMTAg
QEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBDdXN0b21BY3Rpb25TaGVldFBvcG92ZXIpCiAKIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgVW5yZXNwb25zaXZlUGFnZURvZXNOb3RIYW5nVUkpCiB7Ci0g
ICAgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uICpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBbW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaWdub3JlU3luY2hyb25vdXNNZXNzYWdp
bmdUaW1lb3V0c0ZvclRlc3RpbmcgPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRJZ25vcmVTeW5jaHJvbm91c01l
c3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZzpZRVNdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZp
Z3VyYXRpb246YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5h
dXRvcmVsZWFzZSgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzaW1wbGUiXTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aGlsZSgx
KTsiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAKQEAgLTIwNzYsNyArMjA3Niw3IEBAIFRFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyU2FuaXRpemVIVE1MKQogICAgICAgICBhdXRv
ICppdGVtID0gc2Vzc2lvbi5pdGVtc1swXS5pdGVtUHJvdmlkZXI7CiAgICAgICAgIEVYUEVDVF9U
UlVFKFtpdGVtLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29udGFpbnNPYmplY3Q6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUxdKTsKICAgICAgICAgW2l0ZW0gbG9hZERhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVI
VE1MIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgewot
ICAgICAgICAgICAgTlNTdHJpbmcgKm1hcmt1cCA9IFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6KE5TRGF0YSAqKWRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgICAgIGF1dG8gbWFya3VwID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFttYXJrdXAgY29udGFpbnNTdHJpbmc6
QCJoZWxsbyJdKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFttYXJrdXAgY29udGFpbnNTdHJp
bmc6QCIsIHdvcmxkIl0pOwogICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKFttYXJrdXAgY29udGFp
bnNTdHJpbmc6QCJzZWNyZXQiXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9JbnNwZWN0b3JCYXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9J
bnNwZWN0b3JCYXIubW0KaW5kZXggMjVkZmQzNGQ2NDVjMzRkNzdhZDQyOGViMDc3ZjBmMTA5ZTQx
NzcwZi4uMGNlYThmMzBlN2VkMjAzYTBhNjNkMDUwNmQzYWRkOTE4NGE3ZGQwYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5tbQpAQCAtNDIsOSArNDIs
OSBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZy
YW1lOihXZWJGcmFtZSAqKWZyYW1lCiAKIC0gKE5TRGljdGlvbmFyeSAqKWNvbnZlcnRBdHRyaWJ1
dGVzOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5CiB7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqbmV3RGljdGlvbmFyeSA9IFtkaWN0aW9uYXJ5IG11dGFibGVDb3B5XTsKKyAgICBhdXRvIG5l
d0RpY3Rpb25hcnkgPSBhZG9wdE5TKFtkaWN0aW9uYXJ5IG11dGFibGVDb3B5XSk7CiAgICAgW25l
d0RpY3Rpb25hcnkgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV07Ci0gICAgcmV0dXJuIFtuZXdEaWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gbmV3RGljdGlvbmFyeS5hdXRvcmVsZWFzZSgpOwogfQogQGVuZAogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0phdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1t
CmluZGV4IGZmODMwZDAyM2YwNjYzNWE3OWQ2NzViMjg0NGY3NTcxMDMzMzE3ODcuLjQ0ZjYwMjRi
OGFiZmVjZWFjNGQxZDExNGI0MWVlZWMyYjRkNGU0MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0phdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0phdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tCkBAIC02
MCw3ICs2MCw3IEBAIC0gKHZvaWQpX3dlYlZpZXdSdW5Nb2RhbDooV0tXZWJWaWV3ICopd2ViVmll
dwogCiAtIChudWxsYWJsZSBXS1dlYlZpZXcgKil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
KWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICop
bmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRv
d0ZlYXR1cmVzCiB7Ci0gICAgY3JlYXRlZFdlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGNyZWF0ZWRXZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW2NyZWF0ZWRXZWJW
aWV3IHNldFVJRGVsZWdhdGU6c2VsZl07CiAKICAgICBuYXZEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbQppbmRleCA1
ZGFmMTQ1Njc4YzRkMmE5OGJiYjA0ODczNGNlYzMxNzU0ODFhMjJjLi5jODhmZDUyYjZiNjI4OWFm
MjNjNGIwODE4YmYyYTQzNWQ5MzM0ZDQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0KQEAgLTQ1LDcgKzQ1LDcg
QEAgQGltcGxlbWVudGF0aW9uIEZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lcgogCiArIChpbnN0
YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNv
bXBsZXRpb25CbG9jawogewotICAgIHJldHVybiBbW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVu
ZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja10gYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVy
IGFsbG9jXSBpbml0V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6KGRp
c3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2NrCkBAIC0yMTIsNyArMjEyLDcgQEAgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0aWMgTlNJbWFnZSAqZ2V0VGVzdEltYWdlKCkKIHsK
LSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRoRXh0ZW5zaW9uOkAi
cG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRz
T2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhF
eHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
KS5hdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgV2ViVmlldyAqd2ViVmlld0FmdGVyUGVyZm9y
bWluZ0RyYWdPcGVyYXRpb24oTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tCmlu
ZGV4IDFkN2JiZDUxNmFlZWM5OGY0ZmZhM2Y2OGZhMWJkMTUzYjQ4YTQ0OWUuLjgwZTkwOWM1YzA5
NjNlZThiMTRhZWRhNTE4ZGUzNDk4YmQ0MjM2MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlci5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0KQEAgLTI1LDEzICsy
NSwxNCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJp
dmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIFRFU1QoV2ViS2l0TGVnYWN5LCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIpCiB7CiAg
ICAgV2ViSW5zdGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcigpOwotICAgIFtbW1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXTsKKyAgICBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCk7
CiAgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBhc3NlcnQuCiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dLV2ViVmlld01hY0VkaXRp
bmdUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dLV2ViVmlld01hY0Vk
aXRpbmdUZXN0cy5tbQppbmRleCBiZDIyNTE2MzY0OTE1NDEwMmQ3Yjc4OGEwMjhhMTQ4MDgwYzNk
NDhjLi44MDMxM2E3MDVmZTU5ZjJiYmFlNTFhZTBmNzlhMmUyODVmNDdhYmRlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV0tXZWJWaWV3TWFjRWRpdGlu
Z1Rlc3RzLm1tCkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBURVNUKFdLV2ViVmlld01hY0VkaXRpbmdU
ZXN0cywgRG9Ob3RDcmFzaFdoZW5JbnRlcnByZXRpbmdLZXlFdmVudFdoaWxlRGVhbGxvY2F0aQog
ICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewotICAgICAgICBTbG93SW5wdXRXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbU2xvd0lucHV0V2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbU2xvd0lucHV0V2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOwogICAg
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU+SGVsbG8gd29ybGQ8L2JvZHk+Il1d
OwogICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQuYm9keS5mb2N1cygpIl07CiAgICAgICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKICAgICAgICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAg
ICAgIFt3ZWJWaWV3IHR5cGVDaGFyYWN0ZXI6J2EnXTsKIAotICAgICAgICB3ZWJWaWV3Ll93ZWJf
c3VwZXJJbnB1dENvbnRleHQuaGFuZGxlZElucHV0TWV0aG9kRXZlbnRCbG9jayA9IF4oKSB7Cisg
ICAgICAgIHdlYlZpZXcuZ2V0KCkuX3dlYl9zdXBlcklucHV0Q29udGV4dC5oYW5kbGVkSW5wdXRN
ZXRob2RFdmVudEJsb2NrID0gXigpIHsKICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAg
ICAgIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
V2ViVmlld0ljb25Mb2FkaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2Vi
Vmlld0ljb25Mb2FkaW5nLm1tCmluZGV4IDM0OGQ1NThlMTA3YTIzZjE3ODBlYjA3YjViN2EwMjgx
OWIzNTdlZDEuLjg5Y2Y5OGIwMDk1OTg3YmYwYzdjNDIxZWU5OTJiNThiY2U0YjE4ZjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdJY29uTG9hZGluZy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3SWNvbkxvYWRpbmcu
bW0KQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIE5TRGF0YSAqY3VzdG9tRmF2aWNvbkRhdGEoKQog
CiBzdGF0aWMgTlNJbWFnZSAqaW1hZ2VGcm9tRGF0YShOU0RhdGEgKmRhdGEpCiB7Ci0gICAgYXV0
byAqaW1hZ2UgPSBbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXTsKKyAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSk7CiAK
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKQEAgLTcwLDcgKzcwLDcgQEAgc3Rh
dGljIE5TSW1hZ2UgKmltYWdlRnJvbURhdGEoTlNEYXRhICpkYXRhKQogI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAogICAgIFtpbWFnZSBzZXRTaXplOk5TTWFrZVNpemUoMTYsIDE2KV07CiAK
LSAgICByZXR1cm4gW2ltYWdlIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gaW1hZ2UuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogQGludGVyZmFjZSBJY29uTG9hZGluZ1Byb3RvY29sIDogTlNVUkxQcm90
b2NvbApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90b2NvbC5tbQppbmRleCBhZmQ2
ZGRjOWI3ZTkyMmZiNjdjYWI3OWI2MGM5MDc1MDA5MWRhODMyLi4yMTNhN2Y5OTc1M2YyYTkzYjQ0
YzYxOGNhZWQyZWU0NGM3MjdjZTIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RQcm90b2NvbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQ
cm90b2NvbC5tbQpAQCAtNzYsMTcgKzc2LDIwIEBAICsgKHZvaWQpdW5yZWdpc3RlcgogICAgIHRl
c3RTY2hlbWUoKSA9IG5pbDsKIH0KIAotc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBO
U1N0cmluZyAqPiAqYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKK3N0YXRpYyBSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+PiYgYWRkaXRpb25hbFJlc3BvbnNl
SGVhZGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4+PiBfYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVy
czsKKyAgICByZXR1cm4gX2FkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnM7Cit9CiAKICsgKE5TRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWFkZGl0aW9uYWxSZXNwb25zZUhlYWRl
cnMKIHsKLSAgICByZXR1cm4gYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKKyAgICByZXR1cm4g
YWRkaXRpb25hbFJlc3BvbnNlSGVhZGVycygpLmdldCgpOwogfQogCiArICh2b2lkKXNldEFkZGl0
aW9uYWxSZXNwb25zZUhlYWRlcnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAq
PiAqKWFkZGl0aW9uYWxIZWFkZXJzCiB7Ci0gICAgW2FkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMg
YXV0b3JlbGVhc2VdOwotICAgIGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMgPSBbYWRkaXRpb25h
bEhlYWRlcnMgY29weV07CisgICAgYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVycygpID0gYWRvcHRO
UyhbYWRkaXRpb25hbEhlYWRlcnMgY29weV0pOwogfQogCiBzdGF0aWMgTlNVUkwgKmNyZWF0ZVJl
ZGlyZWN0VVJMKE5TU3RyaW5nICpxdWVyeSkKQEAgLTEzNiw4ICsxMzksOCBAQCAtICh2b2lkKXN0
YXJ0TG9hZGluZwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3BvbnNlSGVhZGVycyA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6Ml07CiAgICAgcmVzcG9u
c2VIZWFkZXJzW0AiQ29udGVudC1UeXBlIl0gPSBjb250ZW50VHlwZTsKICAgICByZXNwb25zZUhl
YWRlcnNbQCJDb250ZW50LUxlbmd0aCJdID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
dHUiLCBkYXRhLmxlbmd0aF07Ci0gICAgaWYgKGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMpCi0g
ICAgICAgIFtyZXNwb25zZUhlYWRlcnMgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmFkZGl0aW9u
YWxSZXNwb25zZUhlYWRlcnNdOworICAgIGlmIChhdXRvJiBoZWFkZXJzID0gYWRkaXRpb25hbFJl
c3BvbnNlSGVhZGVycygpKQorICAgICAgICBbcmVzcG9uc2VIZWFkZXJzIGFkZEVudHJpZXNGcm9t
RGljdGlvbmFyeTpoZWFkZXJzLmdldCgpXTsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3RVUkwgc3RhdHVz
Q29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOnJlc3BvbnNlSGVh
ZGVyc10pOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5k
ZXggODcxMzc5MGJhNzhiMDgwNWFjOGNiODMyMzQ0ZDY3YzM4YzkxYjc4Mi4uZWNiN2FhMzhmODE5
ZjU1ZjU1OTA0Y2E4MDdlYjg1YTE4OWVkOTE4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMjAzLDE2ICsyMDMsMTYgQEAgLSAoaWQpb2JqZWN0QnlD
YWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNE
aWN0aW9uYXIKICAgICAgICAgKmVycm9yT3V0ID0gbmlsOwogCiAgICAgUmV0YWluUHRyPGlkPiBl
dmFsUmVzdWx0OworICAgIFJldGFpblB0cjxOU0Vycm9yPiBzdHJvbmdFcnJvcjsKICAgICBbc2Vs
ZiBjYWxsQXN5bmNKYXZhU2NyaXB0OnNjcmlwdCBhcmd1bWVudHM6YXJndW1lbnRzIGluRnJhbWU6
bmlsIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgZXZhbFJlc3Vs
dCA9IHJlc3VsdDsKLSAgICAgICAgaWYgKGVycm9yT3V0KQotICAgICAgICAgICAgKmVycm9yT3V0
ID0gW2Vycm9yIHJldGFpbl07CisgICAgICAgIHN0cm9uZ0Vycm9yID0gZXJyb3I7CiAgICAgICAg
IGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CiAKICAgICBpZiAoZXJyb3JP
dXQpCi0gICAgICAgIFsqZXJyb3JPdXQgYXV0b3JlbGVhc2VdOworICAgICAgICAqZXJyb3JPdXQg
PSBzdHJvbmdFcnJvci5hdXRvcmVsZWFzZSgpOwogCiAgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0
b3JlbGVhc2UoKTsKIH0KQEAgLTQxNiw4ICs0MTYsOCBAQCBAaW1wbGVtZW50YXRpb24gVGVzdFdL
V2ViVmlldyB7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUK
IHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpkZWZhdWx0Q29uZmlndXJhdGlvbiA9IFtb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBy
ZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmRlZmF1bHRDb25m
aWd1cmF0aW9uXTsKKyAgICBhdXRvIGRlZmF1bHRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gW3NlbGYgaW5p
dFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmRlZmF1bHRDb25maWd1cmF0aW9uLmF1dG9y
ZWxlYXNlKCldOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZy
YW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9u
CkBAIC00NTQsNyArNDU0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVj
dClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW8KIAogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
KF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqKXByb2Nlc3NQb29sQ29uZmlndXJhdGlvbgog
ewotICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uXSBhdXRv
cmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOmFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbl0pLmF1dG9yZWxlYXNlKCldOwogICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZy
YW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KaW5kZXggMjcx
ZTY1YzNlZjc2N2Q1ZDYyZmY1NTcwNDgxYzZkZjcwNTI4M2MxNS4uZTE0MTU2NjMzMDZmN2NmOWM2
ZmY2ZjNlYmYyMGYxNjg3OGRhZWY0NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhQcm92aWRlcnM6KE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKilw
cm92aWRlcnMgbG9jYXRpbwogewogICAgIGF1dG8gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlk
ZXIgaW4gcHJvdmlkZXJzKQotICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OltbW1VJRHJhZ0l0ZW0g
YWxsb2NdIGluaXRXaXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlcl0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbVUlEcmFnSXRlbSBhbGxvY10gaW5p
dFdpdGhJdGVtUHJvdmlkZXI6aXRlbVByb3ZpZGVyXSkuYXV0b3JlbGVhc2UoKV07CiAKICAgICBy
ZXR1cm4gW3N1cGVyIGluaXRXaXRoSXRlbXM6aXRlbXMuZ2V0KCkgbG9jYXRpb246bG9jYXRpb25J
bldpbmRvdyB3aW5kb3c6d2luZG93IGFsbG93TW92ZTphbGxvd01vdmVdOwogfQpAQCAtMzQ0LDkg
KzM0NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZy
YW1lCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBj
b25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewog
ICAgIGlmIChjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJW
aWV3OltbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV1dOworICAgICAgICByZXR1cm4gW3NlbGYg
aW5pdFdpdGhXZWJWaWV3OmFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pLmF1dG9yZWxlYXNlKCldOwog
Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmlldzpbW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOmZyYW1lXSBhdXRvcmVsZWFzZV1dOworICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aFdlYlZpZXc6YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6ZnJhbWVdKS5hdXRvcmVsZWFzZSgpXTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
V2ViVmlldzooVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcKQEAgLTg5Miw3ICs4OTIsNyBAQCAtIChV
SURyb3BQcm9wb3NhbCAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxVcGRhdGVE
cm9wUHJvcG9zYWxUb1Byb3BvcwogICAgIGlmICghc2VsZi5vdmVycmlkZURyYWdVcGRhdGVCbG9j
aykKICAgICAgICAgcmV0dXJuIHByb3Bvc2FsOwogCi0gICAgcmV0dXJuIFtbW1VJRHJvcFByb3Bv
c2FsIGFsbG9jXSBpbml0V2l0aERyb3BPcGVyYXRpb246c2VsZi5vdmVycmlkZURyYWdVcGRhdGVC
bG9jayhwcm9wb3NhbC5vcGVyYXRpb24sIHNlc3Npb24pXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIGFkb3B0TlMoW1tVSURyb3BQcm9wb3NhbCBhbGxvY10gaW5pdFdpdGhEcm9wT3BlcmF0aW9u
OnNlbGYub3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2socHJvcG9zYWwub3BlcmF0aW9uLCBzZXNzaW9u
KV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBhZGp1c3RlZERhdGFJbnRlcmFjdGlvbkl0ZW1Qcm92aWRlcnNGb3JJdGVtUHJv
dmlkZXI6KE5TSXRlbVByb3ZpZGVyICopaXRlbVByb3ZpZGVyIHJlcHJlc2VudGluZ09iamVjdHM6
KE5TQXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOihOU0RpY3Rpb25h
cnkgKilhZGRpdGlvbmFsRGF0YQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
RHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFn
QW5kRHJvcFNpbXVsYXRvck1hYy5tbQppbmRleCA0YjQ4MzhlZGM4ODAyMTZkZjlkY2ViNDhmMjdj
MDYyNWIwMWU4ZTc3Li5lOTU0NDNjMGNjYmMxMTY1Y2M0ZWYzY2MzMmJiZGQ2NzA2YmFiMGVlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1h
Yy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1h
Yy5tbQpAQCAtNzYsOSArNzYsOSBAQCBAZW5kCiBjb25zdCBkb3VibGUgaW5pdGlhbE1vdXNlRHJh
Z0Rpc3RhbmNlID0gNDU7CiBjb25zdCBkb3VibGUgZHJhZ1VwZGF0ZVByb2dyZXNzSW5jcmVtZW50
ID0gMC4wNTsKIAotc3RhdGljIE5TSW1hZ2UgKmRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSgpCitz
dGF0aWMgUmV0YWluUHRyPE5TSW1hZ2U+IGRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSgpCiB7Ci0g
ICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBu
ZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0gYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09m
VVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRoRXh0
ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSk7
CiB9CiAKIEBpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVsYXRvciB7CkBAIC0xMTEsNyAr
MTExLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJh
bWUKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lIGNv
bmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAg
ICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5T
KFtbRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiA/OiBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV0gc2ltdWxhdG9yOnNlbGZdKTsKKyAgICAgICAgX3dlYlZp
ZXcgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiA/OiBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCkgc2ltdWxhdG9yOnNl
bGZdKTsKICAgICAgICAgX2ZpbGVQcm9taXNlRGVzdGluYXRpb25VUkxzID0gYWRvcHROUyhbTlNN
dXRhYmxlQXJyYXkgbmV3XSk7CiAgICAgICAgIFtfd2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZd
OwogICAgICAgICBzZWxmLmRyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKQEAgLTE2Miw4ICsxNjIs
OCBAQCAtICh2b2lkKXJ1bkZyb206KENHUG9pbnQpZmxpcHBlZFN0YXJ0TG9jYXRpb24gdG86KENH
UG9pbnQpZmxpcHBlZEVuZExvY2F0aW9uCiAKICAgICBpZiAoTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkID0gc2VsZi5leHRlcm5hbERyYWdQYXN0ZWJvYXJkKSB7CiAgICAgICAgIE5TUG9pbnQgc3Rh
cnRMb2NhdGlvbkluVmlldyA9IFtfd2ViVmlldyBjb252ZXJ0UG9pbnQ6X3N0YXJ0TG9jYXRpb25J
bldpbmRvdyBmcm9tVmlldzpuaWxdOwotICAgICAgICBOU0ltYWdlICpkcmFnSW1hZ2UgPSBzZWxm
LmV4dGVybmFsRHJhZ0ltYWdlID86IGRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSgpOwotICAgICAg
ICBbc2VsZiBwZXJmb3JtRHJhZ0luV2ViVmlldzpfd2ViVmlldy5nZXQoKSBhdExvY2F0aW9uOnN0
YXJ0TG9jYXRpb25JblZpZXcgd2l0aEltYWdlOmRyYWdJbWFnZSBwYXN0ZWJvYXJkOnBhc3RlYm9h
cmQgc291cmNlOm5pbF07CisgICAgICAgIGF1dG8gZHJhZ0ltYWdlID0gIXNlbGYuZXh0ZXJuYWxE
cmFnSW1hZ2UgPyBkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKTogbmlsOworICAgICAgICBbc2Vs
ZiBwZXJmb3JtRHJhZ0luV2ViVmlldzpfd2ViVmlldy5nZXQoKSBhdExvY2F0aW9uOnN0YXJ0TG9j
YXRpb25JblZpZXcgd2l0aEltYWdlOmRyYWdJbWFnZS5nZXQoKSBwYXN0ZWJvYXJkOnBhc3RlYm9h
cmQgc291cmNlOm5pbF07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX2RvbmVX
YWl0aW5nRm9yRHJvcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBlZmRhZjhjNTJlODliZWI3YzMxOTZiZjZj
OGZjZWZmNmE2YjBlYmEzLi40NDI0ZDkyOTIxNDljMWUyYTZlNDRlNDY0OTBjNTFhYjU5YmFhYWI1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE5Mjcs
NyArMTkyNyw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRlCiAKIHN0YXRpYyBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gY3JlYXRlSlNTdHJpbmdSZWYoaWQgc3RyaW5nKQogewotICAgIGlkIG11
dGFibGVTdHJpbmcgPSBbW1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIG11dGFibGVTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU3RyaW5nIGFs
bG9jXSBpbml0XSk7CiAgICAgaWQgYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5k
ZXg6MCBlZmZlY3RpdmVSYW5nZTpuaWxdOwogICAgIGlkIGF0dHJpYnV0ZUVudW1lcmF0aW9uQmxv
Y2sgPSBeKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKmF0dHJzLCBOU1JhbmdlIHJhbmdl
LCBCT09MICpzdG9wKSB7CiAgICAgICAgIEJPT0wgbWlzc3BlbGxlZCA9IFtbYXR0cnMgb2JqZWN0
Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlXSBib29sVmFsdWVd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tCmluZGV4IDY1YjE4ZDM3OTRiZDIwM2Q2ZThmNTgyZjY5ZmZmMTY5MDcwY2M0MTMuLmQ5
MDAyMjBhYjgzODFiOThjZWRkMTU5MDlhYTBkOTZjMjA0ZDViNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTEzMiwx
NiArMTMyLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFT
dG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUCiAgICAgYm9vbCB1c2VFcGhlbWVy
YWxTZXNzaW9uID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgYXV0byBzdGFu
ZGFsb25lV2ViQXBwbGljYXRpb25VUkwgPSBvcHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlv
blVSTCgpOwogICAgIGlmICh1c2VFcGhlbWVyYWxTZXNzaW9uIHx8IHN0YW5kYWxvbmVXZWJBcHBs
aWNhdGlvblVSTC5sZW5ndGgoKSB8fCBvcHRpb25zLmVuYWJsZUluQXBwQnJvd3NlclByaXZhY3ko
KSkgewotICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWcgPSB1c2VFcGhlbWVyYWxT
ZXNzaW9uID8gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRO
b25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdIDogW1tbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnID0gdXNlRXBoZW1lcmFsU2Vzc2lvbiA/IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNp
c3RlbnRDb25maWd1cmF0aW9uXSkgOiBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICAgICAgaWYgKCF1c2VFcGhlbWVyYWxTZXNzaW9u
KQotICAgICAgICAgICAgY29uZmlndXJlV2Vic2l0ZURhdGFTdG9yZVRlbXBvcmFyeURpcmVjdG9y
aWVzKChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmKXdlYnNpdGVEYXRhU3RvcmVD
b25maWcpOworICAgICAgICAgICAgY29uZmlndXJlV2Vic2l0ZURhdGFTdG9yZVRlbXBvcmFyeURp
cmVjdG9yaWVzKChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmKXdlYnNpdGVEYXRh
U3RvcmVDb25maWcuZ2V0KCkpOwogICAgICAgICBpZiAoc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9u
VVJMLmxlbmd0aCgpKQogICAgICAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmVDb25maWcgc2V0U3Rh
bmRhbG9uZUFwcGxpY2F0aW9uVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzpzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwuY19zdHIoKV1dXTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5KCkpCiAgICAgICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyBz
ZXRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZzpZRVNdOwogI2VuZGlmCi0gICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRhU3RvcmVSZWYp
W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNp
dGVEYXRhU3RvcmVDb25maWddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0
b3JlID0gKF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVD
b25maWcuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogICAgIH0gZWxzZQogICAgICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlUmVmKWdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7CiB9CkBAIC0xOTEsMTEgKzE5MSwxMSBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcs
IFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKm5ld0NvbmZpZ3VyYXRpb24gPSBbW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBuZXdDb25maWd1cmF0
aW9uLl9yZWxhdGVkV2ViVmlldyA9IHN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXct
PnBsYXRmb3JtVmlldygpKTsKLSAgICBpZiAobmV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZp
ZXcpCi0gICAgICAgIG5ld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IG5ld0NvbmZp
Z3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZTsK
LSAgICBQbGF0Zm9ybVdlYlZpZXcqIHZpZXcgPSBuZXcgUGxhdGZvcm1XZWJWaWV3KG5ld0NvbmZp
Z3VyYXRpb24sIG9wdGlvbnMpOworICAgIGF1dG8gbmV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNvcHldKTsKKyAgICBbbmV3Q29uZmlndXJhdGlv
biBfc2V0UmVsYXRlZFdlYlZpZXc6c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4ocGFyZW50Vmlldy0+
cGxhdGZvcm1WaWV3KCkpXTsKKyAgICBpZiAoW25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJW
aWV3XSkKKyAgICAgICAgW25ld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbbmV3
Q29uZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZV07CisgICAgUGxhdGZvcm1XZWJWaWV3KiB2aWV3ID0gbmV3IFBsYXRmb3JtV2ViVmlldyhu
ZXdDb25maWd1cmF0aW9uLmF1dG9yZWxlYXNlKCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENyZWF0
aW5nUGxhdGZvcm1XZWJWaWV3KHZpZXcsIG9wdGlvbnMpOwogICAgIHJldHVybiB2aWV3OwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRl
eCBmZmZiMTkwNDRjMDI1MjgxNDNkYjU0YzEzNTYzMzlhODJkN2Q3YjRjLi4wOGYzOWM3MjE2OWYx
MjQ5ZjNmNjI1ZDNiYzkwYmMyNmIwYzI5MmRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTE0MywxMSArMTE0MywxMSBAQCAtICh2
b2lkKXNlbmRFdmVudFN0cmVhbTooTlNEaWN0aW9uYXJ5ICopZXZlbnRJbmZvIGNvbXBsZXRpb25C
bG9jazoodm9pZCAoXikodm9pZAogICAgIH0KICAgICAKICAgICBOU0RpY3Rpb25hcnkqIHRocmVh
ZERhdGEgPSBAewotICAgICAgICBAImV2ZW50SW5mbyI6IFtbZXZlbnRJbmZvIGNvcHldIGF1dG9y
ZWxlYXNlXSwKLSAgICAgICAgQCJjb21wbGV0aW9uQmxvY2siOiBbW2NvbXBsZXRpb25CbG9jayBj
b3B5XSBhdXRvcmVsZWFzZV0KKyAgICAgICAgQCJldmVudEluZm8iOiBhZG9wdE5TKFtldmVudElu
Zm8gY29weV0pLmF1dG9yZWxlYXNlKCksCisgICAgICAgIEAiY29tcGxldGlvbkJsb2NrIjogYWRv
cHROUyhbY29tcGxldGlvbkJsb2NrIGNvcHldKS5hdXRvcmVsZWFzZSgpCiAgICAgfTsKICAgICAK
LSAgICBOU1RocmVhZCAqZXZlbnREaXNwYXRjaFRocmVhZCA9IFtbW05TVGhyZWFkIGFsbG9jXSBp
bml0V2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihldmVudERpc3BhdGNoVGhyZWFk
RW50cnk6KSBvYmplY3Q6dGhyZWFkRGF0YV0gYXV0b3JlbGVhc2VdOworICAgIE5TVGhyZWFkICpl
dmVudERpc3BhdGNoVGhyZWFkID0gYWRvcHROUyhbW05TVGhyZWFkIGFsbG9jXSBpbml0V2l0aFRh
cmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihldmVudERpc3BhdGNoVGhyZWFkRW50cnk6KSBv
YmplY3Q6dGhyZWFkRGF0YV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgZXZlbnREaXNwYXRjaFRocmVh
ZC5xdWFsaXR5T2ZTZXJ2aWNlID0gTlNRdWFsaXR5T2ZTZXJ2aWNlVXNlckludGVyYWN0aXZlOwog
ICAgIFtldmVudERpc3BhdGNoVGhyZWFkIHN0YXJ0XTsKIH0K
</data>
<flag name="commit-queue"
          id="439325"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420705</attachid>
            <date>2021-02-17 13:28:56 -0800</date>
            <delta_ts>2021-02-17 17:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222060-20210217132855.patch</filename>
            <type>text/plain</type>
            <size>463075</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjM2ZhMzMxMzVlMmU2Yzcy
Mzg3ZjAzZmVhYmQ1ODA4OTM5YTUxMTYuLmQ5YzczZGQwZDM1NWUxMDgzYmZmMDFlZDU5M2U1MTkw
MjYwNDQ4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ug
b2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBldmVuIGZ1cnRoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGZ1cnRoZXIgYnkgdXNpbmcgUmV0YWlu
UHRyLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2VydmljZTo6dHJhbnNjZWl2ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFn
U291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgICgtW1dLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlciBnZXN0dXJlUmVj
b2duaXplckZvckludGVyYWN0aXZlVHJhbnNpdGlvbjpXaXRoVGFyZ2V0OmFjdGlvbjpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAg
IChhcHBMaW5rRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKGVuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250aW51ZUNv
bnRleHRNZW51SW50ZXJhY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RhdGFG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6YXRQb3NpdGlvbjp0eXBlOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJv
bGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICgrW1dLVGV4dFJhbmdlIHRleHRS
YW5nZVdpdGhTdGF0ZTppc1JhbmdlOmlzRWRpdGFibGU6c3RhcnRSZWN0OmVuZFJlY3Q6c2VsZWN0
aW9uUmVjdHM6c2VsZWN0ZWRUZXh0TGVuZ3RoOl0pOgorICAgICAgICAoK1tXS1RleHRQb3NpdGlv
biB0ZXh0UG9zaXRpb25XaXRoUmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRlciByZWN0c10pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbToKKyAgICAgICAgKC1bV0tXZWJF
dmVudCBpbml0V2l0aEV2ZW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvbnNQb3BvdmVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBlOl0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6
Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRGF0ZVBpY2tlclZp
ZXdDb250cm9sbGVyIF9kYXRlQ29tcG9uZW50Rm9yRGF5Om1vbnRoOnllYXI6ZXJhOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tOgorICAgICAg
ICAoLVtXS09wdGlvblBpY2tlckNlbGwgaW5pdFdpdGhPcHRpb25JdGVtOl0pOgorICAgICAgICAo
LVtXS09wdGlvbkdyb3VwUGlja2VyQ2VsbCBpbml0V2l0aE9wdGlvbkl0ZW06XSk6CisgICAgICAg
ICgtW1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIgcGlja2VyVmlldzp2aWV3Rm9yUm93OmZvckNvbXBv
bmVudDpyZXVzaW5nVmlldzpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RTaW5nbGVQaWNrZXIgcGlj
a2VyVmlldzphdHRyaWJ1dGVkVGl0bGVGb3JSb3c6Zm9yQ29tcG9uZW50Ol0pOgorICAgICAgICAo
LVtXS1NlbGVjdFBpY2tlclRhYmxlVmlld0NvbnRyb2xsZXIgdGFibGVWaWV3OnZpZXdGb3JIZWFk
ZXJJblNlY3Rpb246XSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyVGFibGVWaWV3Q29udHJv
bGxlciB0YWJsZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbToKKyAgICAgICAgKC1bV0tTZWxl
Y3RUYWJsZVZpZXdDb250cm9sbGVyIHRhYmxlVmlldzpjZWxsRm9yUm93QXRJbmRleFBhdGg6XSk6
CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tOgorICAgICAg
ICAoLVtXS051bWJlclBhZFZpZXcgX2J1dHRvbkZvclBvc2l0aW9uOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlciBfaGFuZGxlS2V5UHJlc3M6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciBhY3Rpb25Db250cm9s
bGVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
ZW50ZXJUZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0UGFuZWwgX2ludGVycHJldEtleUV2ZW50OnVzaW5nTGVnYWN5Q29jb2FUZXh0
SW5wdXQ6c3RyaW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3Ry
YXRlZ3kubW06CisgICAgICAgICgrW1dLVmlld0xheW91dFN0cmF0ZWd5IGxheW91dFN0cmF0ZWd5
V2l0aFBhZ2U6dmlldzp2aWV3SW1wbDptb2RlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViQ29sb3JQaWNrZXJNYWMubW06CisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIHNldEFu
ZFNob3dQaWNrZXI6d2l0aENvbG9yOnN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tOgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzpyb3dWaWV3Rm9yUm93Ol0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzp2
aWV3Rm9yVGFibGVDb2x1bW46cm93Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoLVtX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBfY2VydGlmaWNhdGVDaGFpbl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtXS0RPTURvY3Vt
ZW50IHBhcnNlcllpZWxkVG9rZW5dKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OnRvV0tET01U
eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01S
YW5nZS5tbToKKyAgICAgICAgKC1bV0tET01SYW5nZSByYW5nZUJ5RXhwYW5kaW5nVG9Xb3JkQm91
bmRhcnlCeUNoYXJhY3RlcnM6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKwogMjAyMS0wMi0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNv
bT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVGhlIHdob2xlIGNvbnRlbnQgaXMg
dW5uZWNlc3NhcmlseSByZXBhaW50ZWQgYnkgYW5pbWF0aW9ucyBpbiBub24tQUMgbW9kZSBwYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGZiNzRlMTdiZGYwN2FjZTExYzIzOWRm
ZjQ1NWUwYmMwYWU2MTQzN2QuLmYwZTk3ZGYyYjliNDczZWYzYmEwY2E5ZWJhNDZlY2E0N2NmNmIw
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0w
Mi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBl
eHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gZnVydGhl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZnVydGhlciBi
eSB1c2luZyBSZXRhaW5QdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25SZWN0Lm06CisgICAgICAgICgrW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlBERlZpZXdJT1MubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgX2NoZWNr
UERGVGl0bGVdKToKKwogMjAyMS0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4Njg1MWY0NDAxNTU5ZjJjZWRk
MTQ1MDkwNDgzMjRiZjc3MzZhMGQ4Li44ZDU5OTQ4YzE2YjgzNzhjNTc3MjY3NjIyYmZkMWE5NDRj
MTVmZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg5IEBACisy
MDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBm
dXJ0aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBmdXJ0
aGVyIGJ5IHVzaW5nIFJldGFpblB0ci4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAg
IChraXQpOgorICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAgICAgIChraXQp
OgorICAgICAgICAqIERPTS9ET01CbG9iLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBE
T00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUNTU1J1
bGVMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbi5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUNTU1ZhbHVlLm1t
OgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ291bnRlci5tbToKKyAgICAgICAg
KGtpdCk6CisgICAgICAgICogRE9NL0RPTUV2ZW50Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAg
ICAgKiBET00vRE9NRmlsZUxpc3QubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9E
T01IVE1MQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUhU
TUxPcHRpb25zQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TUltcGxlbWVudGF0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTWVk
aWFFcnJvci5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTU1lZGlhTGlzdC5t
bToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTU5hbWVkTm9kZU1hcC5tbToKKyAg
ICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTU5vZGUubW06CisgICAgICAgIChraXQpOgor
ICAgICAgICAqIERPTS9ET01Ob2RlSXRlcmF0b3IubW06CisgICAgICAgIChraXQpOgorICAgICAg
ICAqIERPTS9ET01Ob2RlTGlzdC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TVJHQkNvbG9yLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NUmFuZ2UubW06
CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01SZWN0Lm1tOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgKiBET00vRE9NU3R5bGVTaGVldC5tbToKKyAgICAgICAgKGtpdCk6CisgICAg
ICAgICogRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAg
KiBET00vRE9NVGltZVJhbmdlcy5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TVRva2VuTGlzdC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVRyZWVXYWxr
ZXIubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01YUGF0aC5tbToKKyAgICAg
ICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbToKKyAgICAgICAg
KGtpdCk6CisgICAgICAgICogRE9NL0RPTVhQYXRoUmVzdWx0Lm1tOgorICAgICAgICAoa2l0KToK
KyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9ucy5tbToKKyAgICAgICAgKC1bRE9NTm9kZSB3
ZWJBcmNoaXZlXSk6CisgICAgICAgICgtW0RPTU5vZGUgd2ViQXJjaGl2ZUJ5RmlsdGVyaW5nU3Vi
ZnJhbWVzOl0pOgorICAgICAgICAoLVtET01SYW5nZSB3ZWJBcmNoaXZlXSk6CisgICAgICAgICog
RGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgbWVudUl0ZW1XaXRoVGFnOnRhcmdldDpyZXByZXNl
bnRlZE9iamVjdDpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToK
KyAgICAgICAgKGtpdCk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBhZGRJdGVtOl0p
OgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgYmFja0l0ZW1dKToKKyAgICAgICAgKC1b
V2ViQmFja0ZvcndhcmRMaXN0IGN1cnJlbnRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3
YXJkTGlzdCBmb3J3YXJkSXRlbV0pOgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgaXRl
bUF0SW5kZXg6XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAo
LVtXZWJIaXN0b3J5UHJpdmF0ZSBkYXRhXSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5
SXRlbS5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICgrW1dlYkhpc3RvcnlJdGVtIGVudHJ5
V2l0aFVSTDpdKToKKyAgICAgICAgKiBNaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAg
ICAgICAoLVtOU1N0cmluZyBfd2Via2l0X3N0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlXSk6Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TRGF0YSBfd2Vi
a2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzXSk6CisgICAgICAgICogTWlzYy9XZWJOU09iamVj
dEV4dHJhcy5tbToKKyAgICAgICAgKC1bV2ViTWFpblRocmVhZEludm9rZXIgZm9yd2FyZEludm9j
YXRpb246XSk6CisgICAgICAgICgtW1dlYk1haW5UaHJlYWRJbnZva2VyIGhhbmRsZUV4Y2VwdGlv
bjpdKToKKyAgICAgICAgKCtbTlNPYmplY3QgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdKToK
KyAgICAgICAgKC1bTlNPYmplY3QgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdKToKKyAgICAg
ICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX29yaWdp
bmFsRGF0YUFzU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfaG9zdFN0cmluZ10pOgor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgor
ICAgICAgICAoV2ViS2l0OjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2Vs
bGVkQ29ubmVjdGlvbkVycm9yIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVn
aW5QYWNrYWdlLm1tOgorICAgICAgICAoK1tXZWJCYXNlUGx1Z2luUGFja2FnZSBwbHVnaW5XaXRo
UGF0aDpdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgor
ICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rp
b25FcnJvciBjb25zdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzZW5kRXZlbnQ6aXNEcmF3UmVj
dDpdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tOgorICAg
ICAgICAoK1tXZWJQbHVnaW5Db250YWluZXJDaGVjayBjaGVja1dpdGhSZXF1ZXN0OnRhcmdldDpy
ZXN1bHRPYmplY3Q6c2VsZWN0b3I6Y29udHJvbGxlcjpjb250ZXh0SW5mbzpdKToKKyAgICAgICAg
KiBQbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tOgorICAgICAgICAoLVtXZWJQbHVnaW5EYXRh
YmFzZSBfcGx1Z0luUGF0aHNdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW06CisgICAgICAgICgrW1dlYlVuZG9TdGVwIHN0ZXBXaXRoVW5kb1N0ZXA6XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KToKKyAgICAgICAgKG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVj
dG9yV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OmRl
ZmF1bHRNZW51SXRlbXM6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW06CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1tOgorICAgICAgICAoLVtX
ZWJBcmNoaXZlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06Cisg
ICAgICAgICgtW1dlYkRhdGFTb3VyY2UgX2ZpbGVXcmFwcGVyRm9yVVJMOl0pOgorICAgICAgICAo
LVtXZWJEYXRhU291cmNlIHdlYkFyY2hpdmVdKToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBt
YWluUmVzb3VyY2VdKToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBzdWJyZXNvdXJjZUZvclVS
TDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lm1tOgorICAgICAgICAoLVtXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFs
IGxhc3RPcmllbnRhdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIGVsZW1lbnRBdFBvaW50Ol0pOgorICAgICAgICAoLVtXZWJGcmFtZSBw
YXJlbnRGcmFtZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVW
aWV3IF9zZXRDdXN0b21TY3JvbGxWaWV3Q2xhc3M6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBk
b2N1bWVudFNvdXJjZV0pOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gYXR0cmli
dXRlZFN0cmluZ0Zyb206c3RhcnRPZmZzZXQ6dG86ZW5kT2Zmc2V0Ol0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgrW1dlYkhUTUxWaWV3IF9leGNsdWRlZEVs
ZW1lbnRzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb25dKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX3BsYWluVGV4dEZyb21QYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyB2aWV3OnN0cmluZ0ZvclRvb2xUaXA6cG9pbnQ6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHJpZ2h0TW91c2VVcDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWVudUZv
ckV2ZW50Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgYWNjZXB0c0ZpcnN0TW91c2U6XSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IHNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudDpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgbW91c2VEb3duOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtb3VzZURy
YWdnZWQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1vdXNlVXA6XSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGtleURvd246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGtleVVwOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBmbGFnc0NoYW5nZWQ6XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IF9mb250QXR0cmlidXRlc0Zyb21Gb250UGFzdGVib2FyZF0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBwZXJmb3JtS2V5RXF1aXZhbGVudDpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgdGV4dFN0b3JhZ2VdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
cGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9s
ZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTpvZmZzZXQ6dG86b2Zmc2V0Ol0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBhdHRyaWJ1dGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IHNlbGVjdGVkQXR0cmlidXRlZFN0cmluZ10pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBlbGVt
ZW50QXRQb2ludDphbGxvd1NoYWRvd0NvbnRlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gb3Jp
Z2luXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lm1tOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKC1bV2Vi
UERGVmlldyBfc2NhbGVkQXR0cmlidXRlZFN0cmluZzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfaW5pdFdpdGhEYXRhOlVSTDpN
SU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmZyYW1lTmFtZTpyZXNwb25zZTpjb3B5RGF0YTpdKToK
KyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX2ZpbGVXcmFwcGVyUmVwcmVzZW50YXRpb25dKToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgX3Jlc3BvbnNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJT
Y3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0V29ybGQgd29ybGRdKToKKyAgICAg
ICAgKCtbV2ViU2NyaXB0V29ybGQgZmluZE9yQ3JlYXRlV29ybGQ6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX21lbnVGb3JFbGVtZW50OmRlZmF1bHRJdGVtczpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJWaWV3Q2xhc3M6cmVwcmVzZW50YXRpb25DbGFz
czpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Rpc3BsYXlVUkxdKToKKyAg
ICAgICAgKC1bV2ViVmlldyB0ZXh0SXRlcmF0b3JGb3JSZWN0Ol0pOgorICAgICAgICAoK1tXZWJW
aWV3IE1JTUVUeXBlc1Nob3duQXNIVE1MXSk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBJbnRyb2R1Y2UgYSBu
ZXcgY29udGV4dCBtZW51IGl0ZW0gdG8gcHJldmlldyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpp
bmRleCBmMWVmYTQxNzBkNjM3M2IxZWYyNzY1NTY4ZGYyMTM5Yjk2MjhhYmM1Li5iOTk4OGVjYmMw
Y2Q5MTE5ZjgyZGJiNGJmOWY4ZDk1MjQ4OTQ3MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC0x
MzEsOSArMTMxLDkgQEAgc3RhdGljIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcm93
c2luZ0RldGFpbHNUZXh0KGNvbnN0IFVSTCYgdXJsLCBTU0JTZXIKICAgICBhdXRvIG1hbHdhcmVP
clVud2FudGVkU29mdHdhcmVEZXRhaWxzID0gWyZdIChOU1N0cmluZyAqZGVzY3JpcHRpb24sIE5T
U3RyaW5nICpzdGF0dXNTdHJpbmdUb1JlcGxhY2UsIGJvb2wgY29uZmlybU1hbHdhcmUpIHsKICAg
ICAgICAgYXV0byBtYWx3YXJlRGVzY3JpcHRpb24gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6ZGVzY3JpcHRpb25dKTsKICAgICAgICAg
cmVwbGFjZShtYWx3YXJlRGVzY3JpcHRpb24uZ2V0KCksIEAiJXNhZmVCcm93c2luZ1Byb3ZpZGVy
JSIsIGxvY2FsaXplZFByb3ZpZGVyKHJlc3VsdCkpOwotICAgICAgICBOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nICpzdGF0dXNMaW5rID0gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6V0VCX1VJX05TU1RSSU5HKEAidGhlIHN0YXR1cyBvZiDigJwlc2l0
ZSXigJ0iLCAiUGFydCBvZiBtYWx3YXJlIGRlc2NyaXB0aW9uIildIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgcmVwbGFjZShzdGF0dXNMaW5rLCBAIiVzaXRlJSIsIHVybC5ob3N0KCkudG9TdHJpbmco
KSk7Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwg
c3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBzdGF0dXNMaW5rLnN0cmluZywgbWFsd2FyZURldGFpbHNV
UkwodXJsLCByZXN1bHQpKTsKKyAgICAgICAgYXV0byBzdGF0dXNMaW5rID0gYWRvcHROUyhbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOldFQl9VSV9OU1NU
UklORyhAInRoZSBzdGF0dXMgb2Yg4oCcJXNpdGUl4oCdIiwgIlBhcnQgb2YgbWFsd2FyZSBkZXNj
cmlwdGlvbiIpXSk7CisgICAgICAgIHJlcGxhY2Uoc3RhdHVzTGluay5nZXQoKSwgQCIlc2l0ZSUi
LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShtYWx3
YXJlRGVzY3JpcHRpb24uZ2V0KCksIHN0YXR1c1N0cmluZ1RvUmVwbGFjZSwgW3N0YXR1c0xpbmsg
c3RyaW5nXSwgbWFsd2FyZURldGFpbHNVUkwodXJsLCByZXN1bHQpKTsKIAogICAgICAgICBhdXRv
IGlmWW91VW5kZXJzdGFuZCA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpXRUJfVUlfTlNTVFJJTkcoQCJJZiB5b3UgdW5kZXJzdGFuZCB0
aGUgcmlza3MgaW52b2x2ZWQsIHlvdSBjYW4gJXZpc2l0LXRoaXMtdW5zYWZlLXNpdGUtbGluayUu
IiwgIkFjdGlvbiBmcm9tIHNhZmUgYnJvd3Npbmcgd2FybmluZyIpXSk7CiAgICAgICAgIGFkZExp
bmtBbmRSZXBsYWNlKGlmWW91VW5kZXJzdGFuZC5nZXQoKSwgQCIldmlzaXQtdGhpcy11bnNhZmUt
c2l0ZS1saW5rJSIsIFdFQl9VSV9OU1NUUklORyhAInZpc2l0IHRoaXMgdW5zYWZlIHdlYnNpdGUi
LCAiQWN0aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIiksIGNvbmZpcm1NYWx3YXJlID8g
U2FmZUJyb3dzaW5nV2FybmluZzo6Y29uZmlybU1hbHdhcmVTZW50aW5lbCgpIDogU2FmZUJyb3dz
aW5nV2FybmluZzo6dmlzaXRVbnNhZmVXZWJzaXRlU2VudGluZWwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2
aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTmZjU2VydmljZS5tbQppbmRleCA0MmI5YzNjYTI3ZGIzMzM5OGJhOWI4MzA2NmQ2MjZmMDVj
MWM1MmY4Li5mYjhiMWQ1NjQwNmRhMDQ2MzM2NWE3YzRjYzNlNDFiZDc4MTBhNTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tO
ZmNTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KQEAgLTE4OCw5ICsxODgsOSBAQCBOU0RhdGEqIE1v
Y2tOZmNTZXJ2aWNlOjp0cmFuc2NlaXZlKCkKICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+
cGF5bG9hZEJhc2U2NC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9j
b25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERl
Y29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOm1fY29uZmlndXJh
dGlvbi5uZmMtPnBheWxvYWRCYXNlNjRbMF0gb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0ln
bm9yZVVua25vd25DaGFyYWN0ZXJzXSk7CiAgICAgbV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9h
ZEJhc2U2NC5yZW1vdmUoMCk7Ci0gICAgcmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogdm9pZCBNb2NrTmZjU2VydmljZTo6
cmVjZWl2ZVN0b3BQb2xsaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDhlZjFjZTQxMjczNmE4ZWVk
M2M2YWExNmMwMzJiMzNhZGI5YmY0YzcuLjBkM2RhOTJjZDQxNTUwN2E4YjE4ODkyNDczMzYxNjdi
OGM4NWQ2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMzk3LDE2ICszOTcsMTYgQEAgdm9pZCBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGU6OnVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMo
KQogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW3RpdGxlID0gcmV0YWlu
UHRyKChOU1N0cmluZyAqKXNvdXJjZS5saW5rVGl0bGUpLCB1cmwgPSByZXRhaW5QdHIoKE5TVVJM
ICopc291cmNlLmxpbmtVUkwpLCBjZW50ZXIgPSBzb3VyY2UuYWRqdXN0ZWRPcmlnaW5dICgpIC0+
IFVJRHJhZ1ByZXZpZXcgKiB7CiAgICAgICAgICAgICAgICAgVUlVUkxEcmFnUHJldmlld1ZpZXcg
KnByZXZpZXdWaWV3ID0gW1VJVVJMRHJhZ1ByZXZpZXdWaWV3IHZpZXdXaXRoVGl0bGU6dGl0bGUu
Z2V0KCkgVVJMOnVybC5nZXQoKV07CiAgICAgICAgICAgICAgICAgcHJldmlld1ZpZXcuY2VudGVy
ID0gY2VudGVyOwotICAgICAgICAgICAgICAgIFVJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzICpwYXJh
bWV0ZXJzID0gW1tbVUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExp
bmVSZWN0czpAWyBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cHJldmlld1ZpZXcuYm91bmRzXSBd
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtbW1VJRHJhZ1ByZXZpZXcg
YWxsb2NdIGluaXRXaXRoVmlldzpwcmV2aWV3VmlldyBwYXJhbWV0ZXJzOnBhcmFtZXRlcnNdIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtb
VUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVSZWN0czpAWyBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cHJldmlld1ZpZXcuYm91bmRzXSBdXSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSURyYWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZp
ZXc6cHJldmlld1ZpZXcgcGFyYW1ldGVyczpwYXJhbWV0ZXJzLmdldCgpXSkuYXV0b3JlbGVhc2Uo
KTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKICAgICAgICAgZWxzZSBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpDb2xvcikpIHsKICAgICAgICAgICAgIGRyYWdJdGVtLnByZXZpZXdQcm92aWRlciA9IFtp
bWFnZSA9IHNvdXJjZS5pbWFnZV0gKCkgLT4gVUlEcmFnUHJldmlldyAqIHsKLSAgICAgICAgICAg
ICAgICBVSUltYWdlVmlldyAqaW1hZ2VWaWV3ID0gW1tbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRX
aXRoSW1hZ2U6aW1hZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgICAgICBVSURy
YWdQcmV2aWV3UGFyYW1ldGVycyAqcGFyYW1ldGVycyA9IFtbW1VJRHJhZ1ByZXZpZXdQYXJhbWV0
ZXJzIGFsbG9jXSBpbml0V2l0aFRleHRMaW5lUmVjdHM6QFsgW05TVmFsdWUgdmFsdWVXaXRoQ0dS
ZWN0OltpbWFnZVZpZXcgYm91bmRzXV0gXV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgICAg
IHJldHVybiBbW1tVSURyYWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZpZXc6aW1hZ2VWaWV3IHBh
cmFtZXRlcnM6cGFyYW1ldGVyc10gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIGF1dG8g
aW1hZ2VWaWV3ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOmlt
YWdlLmdldCgpXSk7CisgICAgICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhb
W1VJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aFRleHRMaW5lUmVjdHM6QFsg
W05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OltpbWFnZVZpZXcgYm91bmRzXV0gXV0pOworICAgICAg
ICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbVUlEcmFnUHJldmlldyBhbGxvY10gaW5pdFdpdGhW
aWV3OmltYWdlVmlldy5nZXQoKSBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCldKS5hdXRvcmVs
ZWFzZSgpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpp
bmRleCA5N2MxNWM2MDE2Y2I3MzdmMWUxNWZiM2ZhYmU1Yjk0YzgyZjRjYTEyLi5kMTRkZDRjNzJi
ODFlNDU3ZjE2YzBkOTk4ZGJmNzI4NGIyODVkMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTEyMywx
MCArMTIzLDEwIEBAIC0gKFVJUGFuR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXpl
ckZvckludGVyYWN0aXZlVHJhbnNpdGlvbjooX1VJTmF2aWdhCiB7CiAjaWYgSEFWRShVSV9QQVJB
TExBWF9UUkFOU0lUSU9OX0dFU1RVUkVfUkVDT0dOSVpFUikKIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfQkVHSU4KLSAgICBfVUlQYXJhbGxheFRyYW5zaXRpb25QYW5HZXN0dXJlUmVjb2du
aXplciAqcmVjb2duaXplciA9IFtbX1VJUGFyYWxsYXhUcmFuc2l0aW9uUGFuR2VzdHVyZVJlY29n
bml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXTsKKyAgICBh
dXRvIHJlY29nbml6ZXIgPSBhZG9wdE5TKFtbX1VJUGFyYWxsYXhUcmFuc2l0aW9uUGFuR2VzdHVy
ZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXSk7
CiBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogI2Vsc2UKLSAgICBVSVNjcmVlbkVk
Z2VQYW5HZXN0dXJlUmVjb2duaXplciAqcmVjb2duaXplciA9IFtbVUlTY3JlZW5FZGdlUGFuR2Vz
dHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9u
XTsKKyAgICBhdXRvIHJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlTY3JlZW5FZGdlUGFuR2VzdHVy
ZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnRhcmdldCBhY3Rpb246YWN0aW9uXSk7
CiAjZW5kaWYKICAgICBib29sIGlzTFRSID0gW1VJVmlldyB1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uRm9yU2VtYW50aWNDb250ZW50QXR0cmlidXRlOltfZ2VzdHVyZVJlY29nbml6ZXJWaWV3
LmdldCgpIHNlbWFudGljQ29udGVudEF0dHJpYnV0ZV1dID09IFVJVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbkxlZnRUb1JpZ2h0OwogCkBAIC0xMzgsNyArMTM4LDcgQEAgQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICAgICAgW3JlY29nbml6ZXIgc2V0RWRnZXM6aXNMVFIg
PyBVSVJlY3RFZGdlUmlnaHQgOiBVSVJlY3RFZGdlTGVmdF07CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICByZXR1cm4gW3JlY29nbml6ZXIgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZWNv
Z25pemVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpaXNOYXZpZ2F0aW9uU3dpcGVHZXN0
dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXJlY29nbml6ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0K
aW5kZXggYTI4MTExODRlNjhmNGM5ODFiN2YxMDU1NGM1N2U4YWQ4NDU0NzdmZi4uMTM3YWU4ZWUy
NmRjMGNhNGU3MWIyZWJjYTA3YmNiMzkyOGFjOTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KQEAgLTgyLDE2ICs4
MiwxNCBAQCBzdGF0aWMgTFNBcHBMaW5rICphcHBMaW5rRm9yVVJMKE5TVVJMICp1cmwpCiAgICAg
cmV0dXJuIGFwcExpbmtzLmZpcnN0T2JqZWN0OwogI2Vsc2UKICAgICBCaW5hcnlTZW1hcGhvcmUg
c2VtYXBob3JlOwotICAgIF9fYmxvY2sgTFNBcHBMaW5rICpzeW5jQXBwTGluayA9IG5pbDsKLSAg
ICBfX2Jsb2NrIEJpbmFyeVNlbWFwaG9yZSogc2VtYXBob3JlUHRyID0gJnNlbWFwaG9yZTsKLQot
ICAgIFtMU0FwcExpbmsgZ2V0QXBwTGlua1dpdGhVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVyOl4o
TFNBcHBMaW5rICphcHBMaW5rLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBzeW5jQXBwTGlu
ayA9IFthcHBMaW5rIHJldGFpbl07Ci0gICAgICAgIHNlbWFwaG9yZVB0ci0+c2lnbmFsKCk7Cisg
ICAgUmV0YWluUHRyPExTQXBwTGluaz4gc3luY0FwcExpbms7CisgICAgW0xTQXBwTGluayBnZXRB
cHBMaW5rV2l0aFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6WyZzZW1hcGhvcmUsICZzeW5jQXBw
TGlua10oTFNBcHBMaW5rICphcHBMaW5rLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBzeW5j
QXBwTGluayA9IHJldGFpblB0cihhcHBMaW5rKTsKKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgp
OwogICAgIH1dOwogICAgIHNlbWFwaG9yZS53YWl0KCk7CiAKLSAgICByZXR1cm4gW3N5bmNBcHBM
aW5rIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc3luY0FwcExpbmsuYXV0b3JlbGVhc2UoKTsK
ICNlbmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA2ZGU2MGNmNWY2OWVlODEyY2Y5
OTJkMDlmMmE5ZmNmMGEwZGUzZDhiLi4yZDMyZjQ3ZDFkNDE4NzE1NTBlOWU1M2Y3NTA0Nzg0OTc1
YzJlYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY2NCw3ICs2NjQsNyBAQCBzdGF0aWMgV0tEcmFn
U2Vzc2lvbkNvbnRleHQgKmVuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KGlkIDxVSURyYWdT
ZXNzaW9uPiBzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBz
ZXNzaW9uLmxvY2FsQ29udGV4dCA9IFtbW1dLRHJhZ1Nlc3Npb25Db250ZXh0IGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgc2Vzc2lvbi5sb2NhbENvbnRleHQgPSBhZG9wdE5TKFtbV0tE
cmFnU2Vzc2lvbkNvbnRleHQgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIHJldHVy
biAoV0tEcmFnU2Vzc2lvbkNvbnRleHQgKilzZXNzaW9uLmxvY2FsQ29udGV4dDsKIH0KIApAQCAt
ODI4Myw3ICs4MjgzLDcgQEAgLSAodm9pZClpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZToo
Q0dTaXplKXNpemUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFUKICAgICAgICAgfQogICAg
ICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlclRvVXNlIHsgKnBsYWNlaG9s
ZGVyIH07CiAgICAgICAgIHBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1Nl
bGYgY29udmVydFJlY3Q6cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgZnJvbVZpZXc6W3N0
cm9uZ1NlbGYgd2ViVmlld11dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tXS1RleHRQ
bGFjZWhvbGRlciBhbGxvY10gaW5pdFdpdGhFbGVtZW50Q29udGV4dDpwbGFjZWhvbGRlclRvVXNl
XSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tU
ZXh0UGxhY2Vob2xkZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJU
b1VzZV0pLmF1dG9yZWxlYXNlKCkpOwogICAgIH0pOwogfQogCkBAIC0xMDAwMCw3ICsxMDAwMCw3
IEBAIC0gKHZvaWQpY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9uOih2b2lkKF4pKFVJQ29u
dGV4dE1lbnVDb25maWd1cmF0aW9uICopKWNvCiAgICAgICAgICAgICAgICAgaWYgKCFzdHJvbmdT
ZWxmKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFtbW1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOm5pbCBlbGVtZW50SW5mbzplbGVtZW50SW5mby5n
ZXQoKV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tJ
bWFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Ug
ZGVmYXVsdEFjdGlvbnM6bmlsIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvLmdldCgpXSkuYXV0b3Jl
bGVhc2UoKTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGNvbnRpbnVlV2l0aENvbnRl
eHRNZW51Q29uZmlndXJhdGlvbihbVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbldpdGhJZGVudGlmaWVyOm5pbCBwcmV2aWV3UHJvdmlkZXI6Y29udGVudFByZXZpZXdQcm92
aWRlciBhY3Rpb25Qcm92aWRlcjphY3Rpb25NZW51UHJvdmlkZXJdKTsKQEAgLTEwMzMxLDEzICsx
MDMzMSwxMyBAQCAtIChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxl
cjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cgogICAgICAgICBjYW5TaG93TGlua1By
ZXZpZXcgPSBOTzsKICAgICB9CiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkYXRhRm9yUHJl
dmlldyA9IFtbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIGRhdGFGb3JQcmV2aWV3ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKICAgICBpZiAoY2FuU2hvd0xpbmtQcmV2aWV3KSB7CiAgICAgICAgICp0
eXBlID0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rOwogICAgICAgICBpZiAodXNlSW1hZ2VVUkxGb3JM
aW5rKQotICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUxpbmtdID0gKE5T
VVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkw7CisgICAgICAgICAgICBkYXRhRm9y
UHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhTGlua10gPSAoTlNVUkwgKilfcG9zaXRpb25JbmZv
cm1hdGlvbi5pbWFnZVVSTDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YUZvclByZXZp
ZXdbVUlQcmV2aWV3RGF0YUxpbmtdID0gKE5TVVJMICopbGlua1VSTDsKKyAgICAgICAgICAgIGRh
dGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKWxpbmtVUkw7
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgICAgICBpZiAoaXNEYXRhRGV0ZWN0b3JM
aW5rKSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmNvbnRleHQgPSBuaWw7CkBAIC0xMDM0
Nyw5ICsxMDM0Nyw5IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db250
cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAgICAgICAgICBERERl
dGVjdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbZ2V0REREZXRlY3Rpb25Db250cm9sbGVy
Q2xhc3MoKSBzaGFyZWRDb250cm9sbGVyXTsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqbmV3
Q29udGV4dCA9IG5pbDsKICAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBleHRlbmRlZENvbnRleHQ7Ci0gICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtj
b250cm9sbGVyIHJlc3VsdEZvclVSTDpkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhTGlua10g
aWRlbnRpZmllcjpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNl
bGVjdGVkVGV4dDpbc2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRp
b24uZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250
ZXh0OiZuZXdDb250ZXh0XTsKKyAgICAgICAgICAgIEREUmVzdWx0UmVmIGRkUmVzdWx0ID0gW2Nv
bnRyb2xsZXIgcmVzdWx0Rm9yVVJMOmRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFM
aW5rXSBpZGVudGlmaWVyOl9wb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvcklkZW50aWZp
ZXIgc2VsZWN0ZWRUZXh0OltzZWxmIHNlbGVjdGVkVGV4dF0gcmVzdWx0czpfcG9zaXRpb25JbmZv
cm1hdGlvbi5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGNvbnRleHQ6Y29udGV4dCBleHRlbmRl
ZENvbnRleHQ6Jm5ld0NvbnRleHRdOwogICAgICAgICAgICAgaWYgKGRkUmVzdWx0KQotICAgICAg
ICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFERFJlc3VsdF0gPSAoX19icmlk
Z2UgaWQpZGRSZXN1bHQ7CisgICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQ
cmV2aWV3RGF0YUREUmVzdWx0XSA9IChfX2JyaWRnZSBpZClkZFJlc3VsdDsKICAgICAgICAgICAg
IGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZS5pc0VtcHR5KCkgfHwgIV9wb3Np
dGlvbkluZm9ybWF0aW9uLnRleHRBZnRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBl
eHRlbmRlZENvbnRleHQgPSBhZG9wdE5TKFtAewogICAgICAgICAgICAgICAgICAgICBnZXRrRGF0
YURldGVjdG9yc0xlYWRpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVmb3Jl
LApAQCAtMTAzNjEsMTIgKzEwMzYxLDEyIEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJl
dmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAg
ICAgICAgICAgICAgbmV3Q29udGV4dCA9IGV4dGVuZGVkQ29udGV4dC5nZXQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChuZXdDb250ZXh0KQotICAgICAgICAgICAgICAgIGRhdGFG
b3JQcmV2aWV3W1VJUHJldmlld0RhdGFERENvbnRleHRdID0gbmV3Q29udGV4dDsKKyAgICAgICAg
ICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhRERDb250ZXh0XSA9IG5l
d0NvbnRleHQ7CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAg
ICAgfSBlbHNlIGlmIChjYW5TaG93SW1hZ2VQcmV2aWV3KSB7CiAgICAgICAgICp0eXBlID0gVUlQ
cmV2aWV3SXRlbVR5cGVJbWFnZTsKLSAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0
YUxpbmtdID0gKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkw7CisgICAgICAg
IGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKV9wb3Np
dGlvbkluZm9ybWF0aW9uLmltYWdlVVJMOwogICAgIH0gZWxzZSBpZiAoY2FuU2hvd0F0dGFjaG1l
bnRQcmV2aWV3KSB7CiAgICAgICAgICp0eXBlID0gVUlQcmV2aWV3SXRlbVR5cGVBdHRhY2htZW50
OwogICAgICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50
IFVSTDooTlNVUkwgKilsaW5rVVJMIGltYWdlVVJMOihOU1VSTCAqKV9wb3NpdGlvbkluZm9ybWF0
aW9uLmltYWdlVVJMIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQg
dGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24u
aWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6bmlsXSk7
CkBAIC0xMDM3NCwxNSArMTAzNzQsMTUgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2
aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHIKICAgICAg
ICAgaWYgKGluZGV4ICE9IE5TTm90Rm91bmQpIHsKICAgICAgICAgICAgIEJPT0wgc291cmNlSXNN
YW5hZ2VkID0gTk87CiAgICAgICAgICAgICBpZiAocmVzcG9uZHNUb0F0dGFjaG1lbnRMaXN0Rm9y
V2ViVmlld1NvdXJjZUlzTWFuYWdlZCkKLSAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tV
SVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RdID0gW3VpRGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0
Rm9yV2ViVmlldzpzZWxmLndlYlZpZXcgc291cmNlSXNNYW5hZ2VkOiZzb3VyY2VJc01hbmFnZWRd
OworICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFBdHRh
Y2htZW50TGlzdF0gPSBbdWlEZWxlZ2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3OnNlbGYu
d2ViVmlldyBzb3VyY2VJc01hbmFnZWQ6JnNvdXJjZUlzTWFuYWdlZF07CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1l
bnRMaXN0XSA9IFt1aURlbGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZpZXc6c2VsZi53ZWJW
aWV3XTsKLSAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50
SW5kZXhdID0gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5kZXhdOwotICAg
ICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0SXNDb250
ZW50TWFuYWdlZF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6c291cmNlSXNNYW5hZ2VkXTsK
KyAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhQXR0YWNo
bWVudExpc3RdID0gW3VpRGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0Rm9yV2ViVmlldzpzZWxmLndl
YlZpZXddOworICAgICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUF0
dGFjaG1lbnRJbmRleF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50ZWdlcjppbmRl
eF07CisgICAgICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhQXR0YWNo
bWVudExpc3RJc0NvbnRlbnRNYW5hZ2VkXSA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpzb3Vy
Y2VJc01hbmFnZWRdOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGRhdGFGb3JQcmV2
aWV3OworICAgIHJldHVybiBkYXRhRm9yUHJldmlldy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChD
R1JlY3QpX3ByZXNlbnRhdGlvblJlY3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmll
d0l0ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpAQCAtMTA0NzgsNyArMTA0NzgsNyBAQCAtIChV
SVZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1D
b250cm9sbGVyOihVSVByZXZpZQogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3Vmlld0Nv
bnRyb2xsZXI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gW1tbV0tJbWFnZVByZXZpZXdW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UgZGVmYXVsdEFjdGlv
bnM6ZGVmYXVsdEFjdGlvbnMgZWxlbWVudEluZm86ZWxlbWVudEluZm9dIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZSBkZWZhdWx0QWN0aW9uczpkZWZhdWx0QWN0aW9u
cyBlbGVtZW50SW5mbzplbGVtZW50SW5mb10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG5pbDsKQEAgLTEwNTUzLDcgKzEwNTUzLDcgQEAgLSAoVUlJbWFnZSAqKV9wcmVzZW50
YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRy
b2wKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtb
VUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlv
blJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAq
KWNvbnRyb2xsZXIKQEAgLTEwNjAxLDE1ICsxMDYwMSwxNSBAQCBAaW1wbGVtZW50YXRpb24gV0tU
ZXh0UmFuZ2UKIAogKyhXS1RleHRSYW5nZSAqKXRleHRSYW5nZVdpdGhTdGF0ZTooQk9PTClpc05v
bmUgaXNSYW5nZTooQk9PTClpc1JhbmdlIGlzRWRpdGFibGU6KEJPT0wpaXNFZGl0YWJsZSBzdGFy
dFJlY3Q6KENHUmVjdClzdGFydFJlY3QgZW5kUmVjdDooQ0dSZWN0KWVuZFJlY3Qgc2VsZWN0aW9u
UmVjdHM6KE5TQXJyYXkgKilzZWxlY3Rpb25SZWN0cyBzZWxlY3RlZFRleHRMZW5ndGg6KE5TVUlu
dGVnZXIpc2VsZWN0ZWRUZXh0TGVuZ3RoCiB7Ci0gICAgV0tUZXh0UmFuZ2UgKnJhbmdlID0gW1tX
S1RleHRSYW5nZSBhbGxvY10gaW5pdF07Ci0gICAgcmFuZ2UuaXNOb25lID0gaXNOb25lOwotICAg
IHJhbmdlLmlzUmFuZ2UgPSBpc1JhbmdlOwotICAgIHJhbmdlLmlzRWRpdGFibGUgPSBpc0VkaXRh
YmxlOwotICAgIHJhbmdlLnN0YXJ0UmVjdCA9IHN0YXJ0UmVjdDsKLSAgICByYW5nZS5lbmRSZWN0
ID0gZW5kUmVjdDsKLSAgICByYW5nZS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHRM
ZW5ndGg7Ci0gICAgcmFuZ2Uuc2VsZWN0aW9uUmVjdHMgPSBzZWxlY3Rpb25SZWN0czsKLSAgICBy
ZXR1cm4gW3JhbmdlIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJhbmdlID0gYWRvcHROUyhbW1dL
VGV4dFJhbmdlIGFsbG9jXSBpbml0XSk7CisgICAgW3JhbmdlIHNldElzTm9uZTppc05vbmVdOwor
ICAgIFtyYW5nZSBzZXRJc1JhbmdlOmlzUmFuZ2VdOworICAgIFtyYW5nZSBzZXRJc0VkaXRhYmxl
OmlzRWRpdGFibGVdOworICAgIFtyYW5nZSBzZXRTdGFydFJlY3Q6c3RhcnRSZWN0XTsKKyAgICBb
cmFuZ2Ugc2V0RW5kUmVjdDplbmRSZWN0XTsKKyAgICBbcmFuZ2Ugc2V0U2VsZWN0ZWRUZXh0TGVu
Z3RoOnNlbGVjdGVkVGV4dExlbmd0aF07CisgICAgW3JhbmdlIHNldFNlbGVjdGlvblJlY3RzOnNl
bGVjdGlvblJlY3RzXTsKKyAgICByZXR1cm4gcmFuZ2UuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
dm9pZClkZWFsbG9jCkBAIC0xMDY3NSw5ICsxMDY3NSw5IEBAIEBzeW50aGVzaXplIHBvc2l0aW9u
UmVjdCA9IF9wb3NpdGlvblJlY3Q7CiAKICsgKFdLVGV4dFBvc2l0aW9uICopdGV4dFBvc2l0aW9u
V2l0aFJlY3Q6KENHUmVjdClwb3NpdGlvblJlY3QKIHsKLSAgICBXS1RleHRQb3NpdGlvbiAqcG9z
ID1bW1dLVGV4dFBvc2l0aW9uIGFsbG9jXSBpbml0XTsKLSAgICBwb3MucG9zaXRpb25SZWN0ID0g
cG9zaXRpb25SZWN0OwotICAgIHJldHVybiBbcG9zIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHBv
cyA9IGFkb3B0TlMoW1tXS1RleHRQb3NpdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtwb3Mgc2V0
UG9zaXRpb25SZWN0OnBvc2l0aW9uUmVjdF07CisgICAgcmV0dXJuIHBvcy5hdXRvcmVsZWFzZSgp
OwogfQogCiAvLyBGSVhNRTogT3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcg
aGFzaCB3aWxsIGNhdXNlIHRyb3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhIE5TU2V0IG9y
IGlzIHRoZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCmluZGV4IGFkNThkN2JlNTYwMzU1NzZlOGIw
ZmE5NGQ5ZTc4NDk5OTU1NzgxYjcuLjdjNDkxOGU4NjQ0NDVjYzgwMjYzMWU0NWU1OWQ3ZjUzMWNk
MGU2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFj
ZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vo
b2xkZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQmKWVsZW1lbnRDb250ZXh0CiAKIC0gKE5TQXJyYXk8VUlUZXh0U2VsZWN0aW9uUmVjdCAqPiAq
KXJlY3RzCiB7Ci0gICAgcmV0dXJuIEBbIFtbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGlu
aXRXaXRoQ0dSZWN0Ol9lbGVtZW50Q29udGV4dC5ib3VuZGluZ1JlY3RdIGF1dG9yZWxlYXNlXSBd
OworICAgIHJldHVybiBAWyBhZG9wdE5TKFtbV0tUZXh0U2VsZWN0aW9uUmVjdCBhbGxvY10gaW5p
dFdpdGhDR1JlY3Q6X2VsZW1lbnRDb250ZXh0LmJvdW5kaW5nUmVjdF0pLmF1dG9yZWxlYXNlKCkg
XTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
V2ViRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQpp
bmRleCBhYjU5Njg3OWEwYTgzYWM0OWFkNGQ1ZDg3YTlkNTM3M2UxNDRhMDU2Li5jMDhlZTIwMzBh
YTFlZTllZTUwOTRmYzg0MzI1Y2IxM2NiMzI4NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tXZWJFdmVudC5tbQpAQCAtNTAsNyArNTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CiAgICAgICAgIGtleUNvZGUgPSBrZXlFdmVudC5f
a2V5Q29kZTsKICAgICAgICAgaW5wdXRGbGFncyA9IGtleUV2ZW50Ll9pbnB1dEZsYWdzOwogICAg
ICAgICBtb2RpZmllckZsYWdzID0ga2V5RXZlbnQuX2dzTW9kaWZpZXJGbGFnczsKLSAgICAgICAg
ZXZlbnQgPSBbW2tleUV2ZW50IF9jbG9uZUV2ZW50XSBhdXRvcmVsZWFzZV07IC8vIFVJS2l0IHVz
ZXMgYSBzaW5nbGV0b24gZm9yIGhhcmR3YXJlIGtleWJvYXJkIGV2ZW50cy4KKyAgICAgICAgZXZl
bnQgPSBhZG9wdE5TKFtrZXlFdmVudCBfY2xvbmVFdmVudF0pLmF1dG9yZWxlYXNlKCk7IC8vIFVJ
S2l0IHVzZXMgYSBzaW5nbGV0b24gZm9yIGhhcmR3YXJlIGtleWJvYXJkIGV2ZW50cy4KICAgICB9
CiAKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoS2V5RXZlbnRUeXBlOihldmVudC5faXNLZXlE
b3duID8gV2ViRXZlbnRLZXlEb3duIDogV2ViRXZlbnRLZXlVcCkgdGltZVN0YW1wOmV2ZW50LnRp
bWVzdGFtcCBjaGFyYWN0ZXJzOmV2ZW50Ll9tb2RpZmllZElucHV0IGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczpldmVudC5fdW5tb2RpZmllZElucHV0IG1vZGlmaWVyczptb2RpZmllckZsYWdz
IGlzUmVwZWF0aW5nOihpbnB1dEZsYWdzICYga1VJS2V5Ym9hcmRJbnB1dFJlcGVhdCkgd2l0aEZs
YWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBp
c1RhYktleTpbZXZlbnQuX21vZGlmaWVkSW5wdXQgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbQppbmRleCBiOTM4NTdlZjkwZDEzZmY5MmNmNDQ5
M2RkYWIyNDYzMzUzZWNhNDM2Li40NDA5MGQ3NmIwNWY0OWJkZWUyMzRkYzM1OTRhZjg2YjgxN2Ez
ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KQEAgLTMyMSw3ICszMjEsNyBA
QCAtICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUyYpZHJvcAogICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdn
ZXN0aW9ucyA9IHNlbGYudGV4dFN1Z2dlc3Rpb25zOwogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgIFtfcG9wb3ZlciBzZXRQb3BvdmVyQ29udHJvbGxlcjpbW1tVSVBv
cG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpfc3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlci5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbX3BvcG92
ZXIgc2V0UG9wb3ZlckNvbnRyb2xsZXI6YWRvcHROUyhbW1VJUG9wb3ZlckNvbnRyb2xsZXIgYWxs
b2NdIGluaXRXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOl9zdWdnZXN0aW9uc1ZpZXdDb250cm9s
bGVyLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIFtfcG9wb3ZlciBwcmVzZW50UG9wb3ZlckFuaW1hdGVkOk5PXTsKQEAgLTM1
NiwxNSArMzU2LDE1IEBAIC0gKE5TSW50ZWdlcil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFi
bGVWaWV3IG51bWJlck9mUm93c0luU2VjdGlvbjooTlNJbnRlZ2VyCiAKIC0gKFVJVGFibGVWaWV3
Q2VsbCAqKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgY2VsbEZvclJvd0F0SW5k
ZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAogewotICAgIFVJVGFibGVWaWV3Q2VsbCAq
Y2VsbCA9IFt0YWJsZVZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhJZGVudGlmaWVyOnN1Z2dl
c3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3Rh
YmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxS
ZXVzZUlkZW50aWZpZXJdKTsKICAgICBpZiAoIWNlbGwpCi0gICAgICAgIGNlbGwgPSBbW1tVSVRh
YmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZh
dWx0IHJldXNlSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBjZWxsID0gYWRvcHROUyhbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10g
aW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVy
OnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSk7CiAKLSAgICBjZWxsLnRleHRMYWJlbC50
ZXh0ID0gW3NlbGYuY29udHJvbCBzdWdnZXN0aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKLSAg
ICBjZWxsLnRleHRMYWJlbC5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdU
YWlsOwotICAgIGNlbGwudGV4dExhYmVsLnRleHRBbGlnbm1lbnQgPSBbc2VsZi5jb250cm9sIHRl
eHRBbGlnbm1lbnRdOworICAgIFtjZWxsIHRleHRMYWJlbF0udGV4dCA9IFtzZWxmLmNvbnRyb2wg
c3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhQYXRoLnJvd107CisgICAgW2NlbGwgdGV4dExhYmVsXS5s
aW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOworICAgIFtjZWxsIHRl
eHRMYWJlbF0udGV4dEFsaWdubWVudCA9IFtzZWxmLmNvbnRyb2wgdGV4dEFsaWdubWVudF07CiAK
LSAgICByZXR1cm4gY2VsbDsKKyAgICByZXR1cm4gY2VsbC5hdXRvcmVsZWFzZSgpOwogfQogCiAt
ICh2b2lkKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJ
bmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xs
ZXIubW0KaW5kZXggODkxMGZiN2Y0ZTE2NWIwZDFhYmUxMzU0NjRkNGEyMzk3YWE2YmIwYy4uNDc0
ODhmZGUyMmE5ZThkOTJkMWQ5MzVjMTA4N2E1MDU3NWYxOWIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3
Q29udHJvbGxlci5tbQpAQCAtNTEyLDEzICs1MTIsMTMgQEAgLSAoTlNEYXRlICopZGF0ZQogCiAt
IChOU0RhdGVDb21wb25lbnRzICopX2RhdGVDb21wb25lbnRGb3JEYXk6KE5TSW50ZWdlcilkYXkg
bW9udGg6KE5TSW50ZWdlciltb250aCB5ZWFyOihOU0ludGVnZXIpeWVhciBlcmE6KE5TSW50ZWdl
cillcmEKIHsKLSAgICBOU0RhdGVDb21wb25lbnRzICpkYXRlQ29tcG9uZW50cyA9IFtbW05TRGF0
ZUNvbXBvbmVudHMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRlQ29tcG9uZW50
cy5kYXkgPSBkYXk7Ci0gICAgZGF0ZUNvbXBvbmVudHMubW9udGggPSBtb250aDsKLSAgICBkYXRl
Q29tcG9uZW50cy55ZWFyID0geWVhcjsKLSAgICBkYXRlQ29tcG9uZW50cy5lcmEgPSBlcmE7Ci0g
ICAgZGF0ZUNvbXBvbmVudHMuY2FsZW5kYXIgPSBfY2FsZW5kYXIuZ2V0KCk7Ci0gICAgcmV0dXJu
IGRhdGVDb21wb25lbnRzOworICAgIGF1dG8gZGF0ZUNvbXBvbmVudHMgPSBhZG9wdE5TKFtbTlNE
YXRlQ29tcG9uZW50cyBhbGxvY10gaW5pdF0pOworICAgIFtkYXRlQ29tcG9uZW50cyBzZXREYXk6
ZGF5XTsKKyAgICBbZGF0ZUNvbXBvbmVudHMgc2V0TW9udGg6bW9udGhdOworICAgIFtkYXRlQ29t
cG9uZW50cyBzZXRZZWFyOnllYXJdOworICAgIFtkYXRlQ29tcG9uZW50cyBzZXRFcmE6ZXJhXTsK
KyAgICBbZGF0ZUNvbXBvbmVudHMgc2V0Q2FsZW5kYXI6X2NhbGVuZGFyLmdldCgpXTsKKyAgICBy
ZXR1cm4gZGF0ZUNvbXBvbmVudHMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfYWRqdXN0
RGF0ZVRvVmFsaWREYXRlSWZOZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tCmluZGV4IGIyNTk5YWY2ZTlm
N2U1OWVkNmQ0NzJkMDVkYzNjMTdhNGU1MDdhNjguLjMwYTQwYTdlYzA4Njg1MTU2NWM5YjVkOWU3
YjlmYjYzNGE0OWViM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aE9wdGlvbkl0ZW06KGNvbnN0IE9wdGlvbkl0ZW0mKWl0ZW0KICAg
ICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
TlNNdXRhYmxlU3RyaW5nICp0cmltbWVkVGV4dCA9IFtbaXRlbS50ZXh0IG11dGFibGVDb3B5XSBh
dXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5n
UmVmKXRyaW1tZWRUZXh0KTsKKyAgICBhdXRvIHRyaW1tZWRUZXh0ID0gYWRvcHROUyhbaXRlbS50
ZXh0IG11dGFibGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxl
U3RyaW5nUmVmKXRyaW1tZWRUZXh0LmdldCgpKTsKIAotICAgIFtbc2VsZiB0aXRsZUxhYmVsXSBz
ZXRUZXh0OnRyaW1tZWRUZXh0XTsKKyAgICBbW3NlbGYgdGl0bGVMYWJlbF0gc2V0VGV4dDp0cmlt
bWVkVGV4dC5nZXQoKV07CiAgICAgW3NlbGYgc2V0Q2hlY2tlZDppdGVtLmlzU2VsZWN0ZWRdOwog
ICAgIFtzZWxmIHNldERpc2FibGVkOml0ZW0uZGlzYWJsZWRdOwogICAgIGlmIChfZGlzYWJsZWQp
CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhPcHRpb25JdGVt
Oihjb25zdCBPcHRpb25JdGVtJilpdGVtCiAgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TTXV0YWJsZVN0cmluZyAqdHJpbW1lZFRleHQg
PSBbW2l0ZW0udGV4dCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIENGU3RyaW5nVHJp
bVdoaXRlc3BhY2UoKENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVkVGV4dCk7CisgICAgYXV0byB0
cmltbWVkVGV4dCA9IGFkb3B0TlMoW2l0ZW0udGV4dCBtdXRhYmxlQ29weV0pOworICAgIENGU3Ry
aW5nVHJpbVdoaXRlc3BhY2UoKENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVkVGV4dC5nZXQoKSk7
CiAKLSAgICBbW3NlbGYgdGl0bGVMYWJlbF0gc2V0VGV4dDp0cmltbWVkVGV4dF07CisgICAgW1tz
ZWxmIHRpdGxlTGFiZWxdIHNldFRleHQ6dHJpbW1lZFRleHQuZ2V0KCldOwogICAgIFtzZWxmIHNl
dENoZWNrZWQ6Tk9dOwogICAgIFtbc2VsZiB0aXRsZUxhYmVsXSBzZXRUZXh0Q29sb3I6W1VJQ29s
b3IgY29sb3JXaXRoV2hpdGU6MC4wIGFscGhhOkdyb3VwT3B0aW9uVGV4dENvbG9yQWxwaGFdXTsK
ICAgICBbc2VsZiBzZXREaXNhYmxlZDpZRVNdOwpAQCAtMjIzLDE0ICsyMjMsMTggQEAgLSAodm9p
ZClsYXlvdXRTdWJ2aWV3cwogLSAoVUlWaWV3ICopcGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICop
cGlja2VyVmlldyB2aWV3Rm9yUm93OihOU0ludGVnZXIpcm93SW5kZXggZm9yQ29tcG9uZW50OihO
U0ludGVnZXIpY29sdW1uSW5kZXggcmV1c2luZ1ZpZXc6KFVJVmlldyAqKXZpZXcKIHsKICAgICBh
dXRvJiBpdGVtID0gW192aWV3IGZvY3VzZWRTZWxlY3RFbGVtZW50T3B0aW9uc11bcm93SW5kZXhd
OwotICAgIFVJUGlja2VyQ29udGVudFZpZXcgKnBpY2tlckl0ZW0gPSBpdGVtLmlzR3JvdXAgPyBb
W1tXS09wdGlvbkdyb3VwUGlja2VyQ2VsbCBhbGxvY10gaW5pdFdpdGhPcHRpb25JdGVtOml0ZW1d
IGF1dG9yZWxlYXNlXSA6IFtbW1dLT3B0aW9uUGlja2VyQ2VsbCBhbGxvY10gaW5pdFdpdGhPcHRp
b25JdGVtOml0ZW1dIGF1dG9yZWxlYXNlXTsKKyAgICBSZXRhaW5QdHI8V0tPcHRpb25QaWNrZXJD
ZWxsPiBwaWNrZXJJdGVtOworICAgIGlmIChpdGVtLmlzR3JvdXApCisgICAgICAgIHBpY2tlckl0
ZW0gPSBhZG9wdE5TKFtbV0tPcHRpb25Hcm91cFBpY2tlckNlbGwgYWxsb2NdIGluaXRXaXRoT3B0
aW9uSXRlbTppdGVtXSk7CisgICAgZWxzZQorICAgICAgICBwaWNrZXJJdGVtID0gYWRvcHROUyhb
W1dLT3B0aW9uUGlja2VyQ2VsbCBhbGxvY10gaW5pdFdpdGhPcHRpb25JdGVtOml0ZW1dKTsKIAog
ICAgIC8vIFRoZSBjZWxsIHN0YXJ0cyBvdXQgd2l0aCBhIG51bGwgZnJhbWUuIFdlIG5lZWQgdG8g
c2V0IGl0cyBmcmFtZSBub3cgc28gd2UgY2FuIGZpbmQgdGhlIHJpZ2h0IGZvbnQgc2l6ZS4KICAg
ICBVSVRhYmxlVmlldyAqdGFibGUgPSBbcGlja2VyVmlldyB0YWJsZVZpZXdGb3JDb2x1bW46MF07
CiAgICAgQ0dSZWN0IGZyYW1lID0gW3RhYmxlIHJlY3RGb3JSb3dBdEluZGV4UGF0aDpbTlNJbmRl
eFBhdGggaW5kZXhQYXRoRm9yUm93OnJvd0luZGV4IGluU2VjdGlvbjowXV07Ci0gICAgcGlja2Vy
SXRlbS5mcmFtZSA9IGZyYW1lOworICAgIFtwaWNrZXJJdGVtIHNldEZyYW1lOmZyYW1lXTsKIAot
ICAgIFVJTGFiZWwgKnRpdGxlVGV4dExhYmVsID0gcGlja2VySXRlbS50aXRsZUxhYmVsOworICAg
IFVJTGFiZWwgKnRpdGxlVGV4dExhYmVsID0gW3BpY2tlckl0ZW0gdGl0bGVMYWJlbF07CiAgICAg
ZmxvYXQgd2lkdGggPSBbcGlja2VySXRlbSBsYWJlbFdpZHRoRm9yQm91bmRzOkNHUmVjdE1ha2Uo
MCwgMCwgQ0dSZWN0R2V0V2lkdGgoZnJhbWUpLCBDR1JlY3RHZXRIZWlnaHQoZnJhbWUpKV07CiAg
ICAgQVNTRVJUKHdpZHRoID4gMCk7CiAKQEAgLTI0Niw3ICsyNTAsNyBAQCAtIChVSVZpZXcgKilw
aWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IHZpZXdGb3JSb3c6KE5TSW50ZWdl
cilyb3dJbmRleAogICAgIFt0aXRsZVRleHRMYWJlbCBzZXROdW1iZXJPZkxpbmVzOjJdOwogICAg
IFt0aXRsZVRleHRMYWJlbCBzZXRUZXh0QWxpZ25tZW50Ol90ZXh0QWxpZ25tZW50XTsKIAotICAg
IHJldHVybiBwaWNrZXJJdGVtOworICAgIHJldHVybiBwaWNrZXJJdGVtLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TSW50ZWdlciludW1iZXJPZkNvbXBvbmVudHNJblBpY2tlclZpZXc6KFVJUGlj
a2VyVmlldyAqKWFQaWNrZXJWaWV3CkBAIC00MDcsMTQgKzQxMSwxNCBAQCAtIChOU0F0dHJpYnV0
ZWRTdHJpbmcgKilwaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IGF0dHJpYnV0
ZWRUaXRsZUZvcgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgY29uc3QgT3B0aW9uSXRlbSYg
b3B0aW9uID0gW192aWV3IGZvY3VzZWRTZWxlY3RFbGVtZW50T3B0aW9uc11bcm93XTsKLSAgICBO
U011dGFibGVTdHJpbmcgKnRyaW1tZWRUZXh0ID0gW1tvcHRpb24udGV4dCBtdXRhYmxlQ29weV0g
YXV0b3JlbGVhc2VdOwotICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKENGTXV0YWJsZVN0cmlu
Z1JlZil0cmltbWVkVGV4dCk7CisgICAgYXV0byB0cmltbWVkVGV4dCA9IGFkb3B0TlMoW29wdGlv
bi50ZXh0IG11dGFibGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRh
YmxlU3RyaW5nUmVmKXRyaW1tZWRUZXh0LmdldCgpKTsKIAotICAgIE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOnRyaW1tZWRUZXh0XTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6dHJpbW1lZFRleHQuZ2V0KCldKTsKICAgICBpZiAob3B0aW9uLmRpc2FibGVkKQog
ICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBhZGRBdHRyaWJ1dGU6TlNGb3JlZ3JvdW5kQ29sb3JB
dHRyaWJ1dGVOYW1lIHZhbHVlOltVSUNvbG9yIGNvbG9yV2l0aFdoaXRlOjAuMCBhbHBoYTpEaXNh
YmxlZE9wdGlvbkFscGhhXSByYW5nZTpOU01ha2VSYW5nZSgwLCBbdHJpbW1lZFRleHQgbGVuZ3Ro
XSldOwogCi0gICAgcmV0dXJuIFthdHRyaWJ1dGVkU3RyaW5nIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYXR0cmlidXRlZFN0cmluZy5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXBpY2tl
clZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgZGlkU2VsZWN0Um93OihOU0ludGVnZXIp
cm93IGluQ29tcG9uZW50OihOU0ludGVnZXIpY29tcG9uZW50CkBAIC04MzksMzkgKzg0MywzOSBA
QCAtIChVSVZpZXcgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IHZpZXdGb3JI
ZWFkZXJJblNlY3Rpb246KE5TSW50ZWdlcgogICAgIGlmICghc2VjdGlvbikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIFVJVmlldyAqc2VjdGlvblZpZXcgPSBbW1tVSVZpZXcgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlY3Rpb25WaWV3ID0gYWRvcHROUyhbW1VJVmll
dyBhbGxvY10gaW5pdF0pOwogCi0gICAgVUlMYWJlbCAqc2VjdGlvbkxhYmVsID0gW1tbVUlMYWJl
bCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHNlY3Rpb25MYWJlbC50ZXh0ID0gW3Nl
bGYgdGFibGVWaWV3OnRhYmxlVmlldyB0aXRsZUZvckhlYWRlckluU2VjdGlvbjpzZWN0aW9uXTsK
LSAgICBzZWN0aW9uTGFiZWwudGV4dENvbG9yID0gVUlDb2xvci5ibGFja0NvbG9yOwotICAgIHNl
Y3Rpb25MYWJlbC5mb250ID0gW1VJRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZTpzZWN0aW9uSGVh
ZGVyRm9udFNpemVdOwotICAgIHNlY3Rpb25MYWJlbC5hZGp1c3RzRm9udFNpemVUb0ZpdFdpZHRo
ID0gTk87Ci0gICAgc2VjdGlvbkxhYmVsLmxpbmVCcmVha01vZGUgPSBOU0xpbmVCcmVha0J5VHJ1
bmNhdGluZ1RhaWw7Ci0gICAgW3NlY3Rpb25WaWV3IGFkZFN1YnZpZXc6c2VjdGlvbkxhYmVsXTsK
KyAgICBhdXRvIHNlY3Rpb25MYWJlbCA9IGFkb3B0TlMoW1tVSUxhYmVsIGFsbG9jXSBpbml0XSk7
CisgICAgW3NlY3Rpb25MYWJlbCBzZXRUZXh0OltzZWxmIHRhYmxlVmlldzp0YWJsZVZpZXcgdGl0
bGVGb3JIZWFkZXJJblNlY3Rpb246c2VjdGlvbl1dOworICAgIFtzZWN0aW9uTGFiZWwgc2V0VGV4
dENvbG9yOlVJQ29sb3IuYmxhY2tDb2xvcl07CisgICAgW3NlY3Rpb25MYWJlbCBzZXRGb250OltV
SUZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6c2VjdGlvbkhlYWRlckZvbnRTaXplXV07CisgICAg
W3NlY3Rpb25MYWJlbCBzZXRBZGp1c3RzRm9udFNpemVUb0ZpdFdpZHRoOk5PXTsKKyAgICBbc2Vj
dGlvbkxhYmVsIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsXTsK
KyAgICBbc2VjdGlvblZpZXcgYWRkU3VidmlldzpzZWN0aW9uTGFiZWwuZ2V0KCldOwogCi0gICAg
c2VjdGlvbkxhYmVsLnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzID0g
Tk87CisgICAgW3NlY3Rpb25MYWJlbCBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9D
b25zdHJhaW50czpOT107CiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFp
bnRzOkBbCi0gICAgICAgIFtzZWN0aW9uTGFiZWwubGVhZGluZ0FuY2hvciBjb25zdHJhaW50RXF1
YWxUb0FuY2hvcjpzZWN0aW9uVmlldy5sZWFkaW5nQW5jaG9yIGNvbnN0YW50OnNlY3Rpb25IZWFk
ZXJNYXJnaW5dLAotICAgICAgICBbc2VjdGlvbkxhYmVsLnRvcEFuY2hvciBjb25zdHJhaW50RXF1
YWxUb0FuY2hvcjpzZWN0aW9uVmlldy50b3BBbmNob3IgY29uc3RhbnQ6MF0sCisgICAgICAgIFtb
c2VjdGlvbkxhYmVsIGxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0
aW9uVmlldyBsZWFkaW5nQW5jaG9yXSBjb25zdGFudDpzZWN0aW9uSGVhZGVyTWFyZ2luXSwKKyAg
ICAgICAgW1tzZWN0aW9uTGFiZWwgdG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpb
c2VjdGlvblZpZXcgdG9wQW5jaG9yXSBjb25zdGFudDowXSwKICAgICBdXTsKIAotICAgIFVJQnV0
dG9uICpjb2xsYXBzZUJ1dHRvbiA9IFtbW1VJQnV0dG9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07Ci0gICAgY29sbGFwc2VCdXR0b24udGFnID0gc2VjdGlvbjsKKyAgICBhdXRvIGNvbGxhcHNl
QnV0dG9uID0gYWRvcHROUyhbW1VJQnV0dG9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbGxhcHNl
QnV0dG9uIHNldFRhZzpzZWN0aW9uXTsKICAgICBbY29sbGFwc2VCdXR0b24gc2V0SW1hZ2U6W1VJ
SW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNoZXZyb24uZG93biIgd2l0aENvbmZpZ3VyYXRpb246
W1VJSW1hZ2VTeW1ib2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25XaXRoUG9pbnRTaXplOnNl
Y3Rpb25IZWFkZXJDb2xsYXBzZUJ1dHRvblNpemUgd2VpZ2h0OlVJSW1hZ2VTeW1ib2xXZWlnaHRT
ZW1pYm9sZF1dIGZvclN0YXRlOlVJQ29udHJvbFN0YXRlTm9ybWFsXTsKICAgICBbY29sbGFwc2VC
dXR0b24gYWRkVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rvcihjb2xsYXBzZVNlY3Rpb246KSBm
b3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VG91Y2hVcEluc2lkZV07Ci0gICAgW3NlY3Rp
b25WaWV3IGFkZFN1YnZpZXc6Y29sbGFwc2VCdXR0b25dOworICAgIFtzZWN0aW9uVmlldyBhZGRT
dWJ2aWV3OmNvbGxhcHNlQnV0dG9uLmdldCgpXTsKIAogICAgIGlmIChbX2NvbGxhcHNlZFNlY3Rp
b25zIGNvbnRhaW5zT2JqZWN0OkAoc2VjdGlvbildKQotICAgICAgICBjb2xsYXBzZUJ1dHRvbi50
cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbigtTV9QSSAvIDIpOworICAg
ICAgICBbY29sbGFwc2VCdXR0b24gc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtTWFrZVJv
dGF0aW9uKC1NX1BJIC8gMildOwogCi0gICAgY29sbGFwc2VCdXR0b24udHJhbnNsYXRlc0F1dG9y
ZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsKKyAgICBbY29sbGFwc2VCdXR0b24gc2V0
VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6Tk9dOwogICAgIFtOU0xh
eW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICBbY29sbGFwc2VC
dXR0b24udHJhaWxpbmdBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6c2VjdGlvblZpZXcu
dHJhaWxpbmdBbmNob3IgY29uc3RhbnQ6LXNlY3Rpb25IZWFkZXJNYXJnaW5dLAotICAgICAgICBb
Y29sbGFwc2VCdXR0b24udG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNlY3Rpb25M
YWJlbC50b3BBbmNob3IgY29uc3RhbnQ6MF0sCi0gICAgICAgIFtjb2xsYXBzZUJ1dHRvbi5ib3R0
b21BbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6c2VjdGlvbkxhYmVsLmJvdHRvbUFuY2hv
ciBjb25zdGFudDowXSwKKyAgICAgICAgW1tjb2xsYXBzZUJ1dHRvbiB0cmFpbGluZ0FuY2hvcl0g
Y29uc3RyYWludEVxdWFsVG9BbmNob3I6W3NlY3Rpb25WaWV3IHRyYWlsaW5nQW5jaG9yXSBjb25z
dGFudDotc2VjdGlvbkhlYWRlck1hcmdpbl0sCisgICAgICAgIFtbY29sbGFwc2VCdXR0b24gdG9w
QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbc2VjdGlvbkxhYmVsIHRvcEFuY2hvcl0g
Y29uc3RhbnQ6MF0sCisgICAgICAgIFtbY29sbGFwc2VCdXR0b24gYm90dG9tQW5jaG9yXSBjb25z
dHJhaW50RXF1YWxUb0FuY2hvcjpbc2VjdGlvbkxhYmVsIGJvdHRvbUFuY2hvcl0gY29uc3RhbnQ6
MF0sCiAgICAgXV07CiAKLSAgICByZXR1cm4gc2VjdGlvblZpZXc7CisgICAgcmV0dXJuIHNlY3Rp
b25WaWV3LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpY29sbGFwc2VTZWN0aW9uOihVSUJ1
dHRvbiAqKWJ1dHRvbgpAQCAtOTM5LDM0ICs5NDMsMzQgQEAgLSAoT3B0aW9uSXRlbSAqKW9wdGlv
bkl0ZW1BdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKIAogLSAoVUlUYWJsZVZp
ZXdDZWxsICopdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBjZWxsRm9yUm93QXRJ
bmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCiB7Ci0gICAgVUlUYWJsZVZpZXdDZWxs
ICpjZWxsID0gW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6b3B0
aW9uQ2VsbFJldXNlSWRlbnRpZmllcl07CisgICAgYXV0byBjZWxsID0gcmV0YWluUHRyKFt0YWJs
ZVZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhJZGVudGlmaWVyOm9wdGlvbkNlbGxSZXVzZUlk
ZW50aWZpZXJdKTsKICAgICBpZiAoIWNlbGwpCi0gICAgICAgIGNlbGwgPSBbW1tVSVRhYmxlVmll
d0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZhdWx0IHJl
dXNlSWRlbnRpZmllcjpvcHRpb25DZWxsUmV1c2VJZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIGNlbGwgPSBhZG9wdE5TKFtbVUlUYWJsZVZpZXdDZWxsIGFsbG9jXSBpbml0V2l0aFN0
eWxlOlVJVGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6b3B0aW9uQ2Vs
bFJldXNlSWRlbnRpZmllcl0pOwogCiAgICAgaWYgKF9jb250ZW50Vmlldy5mb2N1c2VkU2VsZWN0
RWxlbWVudE9wdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNlbGwudGV4dExhYmVsLmVuYWJs
ZWQgPSBOTzsKLSAgICAgICAgY2VsbC50ZXh0TGFiZWwudGV4dCA9IFdFQl9VSV9TVFJJTkdfS0VZ
KCJObyBPcHRpb25zIiwgIk5vIE9wdGlvbnMgU2VsZWN0IFBvcG92ZXIiLCAiRW1wdHkgc2VsZWN0
IGxpc3QiKTsKLSAgICAgICAgY2VsbC51c2VySW50ZXJhY3Rpb25FbmFibGVkID0gTk87Ci0gICAg
ICAgIGNlbGwuaW1hZ2VWaWV3LmltYWdlID0gbmlsOwotICAgICAgICByZXR1cm4gY2VsbDsKKyAg
ICAgICAgW2NlbGwgdGV4dExhYmVsXS5lbmFibGVkID0gTk87CisgICAgICAgIFtjZWxsIHRleHRM
YWJlbF0udGV4dCA9IFdFQl9VSV9TVFJJTkdfS0VZKCJObyBPcHRpb25zIiwgIk5vIE9wdGlvbnMg
U2VsZWN0IFBvcG92ZXIiLCAiRW1wdHkgc2VsZWN0IGxpc3QiKTsKKyAgICAgICAgW2NlbGwgc2V0
VXNlckludGVyYWN0aW9uRW5hYmxlZDpOT107CisgICAgICAgIFtjZWxsIGltYWdlVmlld10uaW1h
Z2UgPSBuaWw7CisgICAgICAgIHJldHVybiBjZWxsLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAg
ICAgYXV0byBvcHRpb24gPSBbc2VsZiBvcHRpb25JdGVtQXRJbmRleFBhdGg6aW5kZXhQYXRoXTsK
ICAgICBpZiAoIW9wdGlvbikKLSAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgICAgIHJldHVybiBj
ZWxsLmF1dG9yZWxlYXNlKCk7CiAKLSAgICBjZWxsLnRleHRMYWJlbC50ZXh0ID0gb3B0aW9uLT50
ZXh0OwotICAgIGNlbGwudGV4dExhYmVsLmVuYWJsZWQgPSAhb3B0aW9uLT5kaXNhYmxlZDsKLSAg
ICBjZWxsLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSAhb3B0aW9uLT5kaXNhYmxlZDsKKyAgICBb
Y2VsbCB0ZXh0TGFiZWxdLnRleHQgPSBvcHRpb24tPnRleHQ7CisgICAgW2NlbGwgdGV4dExhYmVs
XS5lbmFibGVkID0gIW9wdGlvbi0+ZGlzYWJsZWQ7CisgICAgW2NlbGwgc2V0VXNlckludGVyYWN0
aW9uRW5hYmxlZDohb3B0aW9uLT5kaXNhYmxlZF07CiAKICAgICBpZiAob3B0aW9uLT5pc1NlbGVj
dGVkKQotICAgICAgICBjZWxsLmltYWdlVmlldy5pbWFnZSA9IFtVSUltYWdlIHN5c3RlbUltYWdl
TmFtZWQ6QCJjaGVja21hcmsuY2lyY2xlLmZpbGwiXTsKKyAgICAgICAgW2NlbGwgaW1hZ2VWaWV3
XS5pbWFnZSA9IFtVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaGVja21hcmsuY2lyY2xlLmZp
bGwiXTsKICAgICBlbHNlIGlmIChvcHRpb24tPmRpc2FibGVkKQotICAgICAgICBjZWxsLmltYWdl
Vmlldy5pbWFnZSA9IFtbVUlJbWFnZSBzeXN0ZW1JbWFnZU5hbWVkOkAiY2lyY2xlIl0gaW1hZ2VX
aXRoVGludENvbG9yOlVJQ29sb3IucXVhdGVybmFyeUxhYmVsQ29sb3IgcmVuZGVyaW5nTW9kZTpV
SUltYWdlUmVuZGVyaW5nTW9kZUFsd2F5c09yaWdpbmFsXTsKKyAgICAgICAgW2NlbGwgaW1hZ2VW
aWV3XS5pbWFnZSA9IFtbVUlJbWFnZSBzeXN0ZW1JbWFnZU5hbWVkOkAiY2lyY2xlIl0gaW1hZ2VX
aXRoVGludENvbG9yOlVJQ29sb3IucXVhdGVybmFyeUxhYmVsQ29sb3IgcmVuZGVyaW5nTW9kZTpV
SUltYWdlUmVuZGVyaW5nTW9kZUFsd2F5c09yaWdpbmFsXTsKICAgICBlbHNlCi0gICAgICAgIGNl
bGwuaW1hZ2VWaWV3LmltYWdlID0gW1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUi
XSBpbWFnZVdpdGhUaW50Q29sb3I6VUlDb2xvci50ZXJ0aWFyeUxhYmVsQ29sb3IgcmVuZGVyaW5n
TW9kZTpVSUltYWdlUmVuZGVyaW5nTW9kZUFsd2F5c09yaWdpbmFsXTsKKyAgICAgICAgW2NlbGwg
aW1hZ2VWaWV3XS5pbWFnZSA9IFtbVUlJbWFnZSBzeXN0ZW1JbWFnZU5hbWVkOkAiY2lyY2xlIl0g
aW1hZ2VXaXRoVGludENvbG9yOlVJQ29sb3IudGVydGlhcnlMYWJlbENvbG9yIHJlbmRlcmluZ01v
ZGU6VUlJbWFnZVJlbmRlcmluZ01vZGVBbHdheXNPcmlnaW5hbF07CiAKLSAgICByZXR1cm4gY2Vs
bDsKKyAgICByZXR1cm4gY2VsbC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXRhYmxlVmll
dzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6KE5TSW5k
ZXhQYXRoICopaW5kZXhQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCmluZGV4IDlhNWMwNzc1MTFmYTAzNmY4
Mjc2NjlhYTNhMTRjYTQ1YzQyYWZiZDYuLmZmY2Y2ZTE1ZTVkY2U5ZWI4MDc5YjAwNjNiZDRlOTgy
NjAyMDQ2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1TZWxlY3RQb3BvdmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCkBAIC0yNTUsMjYgKzI1NSwyNiBAQCAtIChPcHRp
b25JdGVtICopZmluZEl0ZW1BdDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKIAogLSAoVUlUYWJs
ZVZpZXdDZWxsICopdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBjZWxsRm9yUm93
QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCiB7Ci0gICAgVUlUYWJsZVZpZXdD
ZWxsICpjZWxsID0gW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6
V0tQb3BvdmVyVGFibGVWaWV3Q2VsbFJldXNlSWRlbnRpZmllcl07CisgICAgYXV0byBjZWxsID0g
cmV0YWluUHRyKFt0YWJsZVZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhJZGVudGlmaWVyOldL
UG9wb3ZlclRhYmxlVmlld0NlbGxSZXVzZUlkZW50aWZpZXJdKTsKICAgICBpZiAoIWNlbGwpCi0g
ICAgICAgIGNlbGwgPSBbW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlU
YWJsZVZpZXdDZWxsU3R5bGVEZWZhdWx0IHJldXNlSWRlbnRpZmllcjpXS1BvcG92ZXJUYWJsZVZp
ZXdDZWxsUmV1c2VJZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGNlbGwgPSBhZG9w
dE5TKFtbVUlUYWJsZVZpZXdDZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3Q2Vs
bFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6V0tQb3BvdmVyVGFibGVWaWV3Q2VsbFJldXNl
SWRlbnRpZmllcl0pOwogICAgIAotICAgIGNlbGwuc2VtYW50aWNDb250ZW50QXR0cmlidXRlID0g
c2VsZi52aWV3LnNlbWFudGljQ29udGVudEF0dHJpYnV0ZTsKLSAgICBjZWxsLnRleHRMYWJlbC50
ZXh0QWxpZ25tZW50ID0gX3RleHRBbGlnbm1lbnQ7CisgICAgW2NlbGwgc2V0U2VtYW50aWNDb250
ZW50QXR0cmlidXRlOnNlbGYudmlldy5zZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGVdOworICAgIFtj
ZWxsIHRleHRMYWJlbF0udGV4dEFsaWdubWVudCA9IF90ZXh0QWxpZ25tZW50OwogICAgIAogICAg
IGlmIChfY29udGVudFZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zZWxlY3RPcHRpb25z
LmlzRW1wdHkoKSkgewotICAgICAgICBjZWxsLnRleHRMYWJlbC5lbmFibGVkID0gTk87Ci0gICAg
ICAgIGNlbGwudGV4dExhYmVsLnRleHQgPSBXRUJfVUlfU1RSSU5HX0tFWSgiTm8gT3B0aW9ucyIs
ICJObyBPcHRpb25zIFNlbGVjdCBQb3BvdmVyIiwgIkVtcHR5IHNlbGVjdCBsaXN0Iik7Ci0gICAg
ICAgIGNlbGwuYWNjZXNzb3J5VHlwZSA9IFVJVGFibGVWaWV3Q2VsbEFjY2Vzc29yeU5vbmU7Ci0g
ICAgICAgIGNlbGwuc2VsZWN0aW9uU3R5bGUgPSBVSVRhYmxlVmlld0NlbGxTZWxlY3Rpb25TdHls
ZU5vbmU7Ci0gICAgICAgIHJldHVybiBjZWxsOworICAgICAgICBbY2VsbCB0ZXh0TGFiZWxdLmVu
YWJsZWQgPSBOTzsKKyAgICAgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0ID0gV0VCX1VJX1NUUklO
R19LRVkoIk5vIE9wdGlvbnMiLCAiTm8gT3B0aW9ucyBTZWxlY3QgUG9wb3ZlciIsICJFbXB0eSBz
ZWxlY3QgbGlzdCIpOworICAgICAgICBbY2VsbCBzZXRBY2Nlc3NvcnlUeXBlOlVJVGFibGVWaWV3
Q2VsbEFjY2Vzc29yeU5vbmVdOworICAgICAgICBbY2VsbCBzZXRTZWxlY3Rpb25TdHlsZTpVSVRh
YmxlVmlld0NlbGxTZWxlY3Rpb25TdHlsZU5vbmVdOworICAgICAgICByZXR1cm4gY2VsbC5hdXRv
cmVsZWFzZSgpOwogICAgIH0KICAgICAKICAgICBDR1JlY3QgdGV4dFJlY3QgPSBbY2VsbCB0ZXh0
UmVjdEZvckNvbnRlbnRSZWN0OltjZWxsIGNvbnRlbnRSZWN0Rm9yQm91bmRzOltjZWxsIGJvdW5k
c11dXTsKICAgICBBU1NFUlRfSU1QTElFUyhDR1JlY3RHZXRXaWR0aCh0YWJsZVZpZXcuYm91bmRz
KSA+IDAsIHRleHRSZWN0LnNpemUud2lkdGggPiAwKTsKICAgICAKICAgICAvLyBBc3N1bWUgYWxs
IGNlbGxzIGhhdmUgdGhlIHNhbWUgYXZhaWxhYmxlIHRleHQgd2lkdGguCi0gICAgVUlGb250ICpm
b250ID0gY2VsbC50ZXh0TGFiZWwuZm9udDsKKyAgICBVSUZvbnQgKmZvbnQgPSBbY2VsbCB0ZXh0
TGFiZWxdLmZvbnQ7CiAgICAgQ0dGbG9hdCBpbml0aWFsRm9udFNpemUgPSBmb250LnBvaW50U2l6
ZTsKICAgICBBU1NFUlQoaW5pdGlhbEZvbnRTaXplKTsKICAgICBpZiAodGV4dFJlY3Quc2l6ZS53
aWR0aCAhPSBfbWF4aW11bVRleHRXaWR0aCB8fCBfZm9udFNpemUgPT0gMCkgewpAQCAtMjg1LDEx
ICsyODUsMTEgQEAgLSAoVUlUYWJsZVZpZXdDZWxsICopdGFibGVWaWV3OihVSVRhYmxlVmlldyAq
KXRhYmxlVmlldyBjZWxsRm9yUm93QXRJbmRleFBhdGg6KE4KICAgICBjb25zdCBPcHRpb25JdGVt
KiBpdGVtID0gW3NlbGYgZmluZEl0ZW1BdDppbmRleFBhdGhdOwogICAgIEFTU0VSVChpdGVtKTsK
ICAgICAKLSAgICBbc2VsZiBwb3B1bGF0ZUNlbGw6Y2VsbCB3aXRoSXRlbToqaXRlbV07Ci0gICAg
W2NlbGwudGV4dExhYmVsIHNldEZvbnQ6W2ZvbnQgZm9udFdpdGhTaXplOl9mb250U2l6ZV1dOwot
ICAgIFtjZWxsLnRleHRMYWJlbCBzZXRMaW5lQnJlYWtNb2RlOk5TTGluZUJyZWFrQnlXb3JkV3Jh
cHBpbmddOwotICAgIFtjZWxsLnRleHRMYWJlbCBzZXROdW1iZXJPZkxpbmVzOjJdOwotICAgIHJl
dHVybiBjZWxsOworICAgIFtzZWxmIHBvcHVsYXRlQ2VsbDpjZWxsLmdldCgpIHdpdGhJdGVtOipp
dGVtXTsKKyAgICBbW2NlbGwgdGV4dExhYmVsXSBzZXRGb250Oltmb250IGZvbnRXaXRoU2l6ZTpf
Zm9udFNpemVdXTsKKyAgICBbW2NlbGwgdGV4dExhYmVsXSBzZXRMaW5lQnJlYWtNb2RlOk5TTGlu
ZUJyZWFrQnlXb3JkV3JhcHBpbmddOworICAgIFtbY2VsbCB0ZXh0TGFiZWxdIHNldE51bWJlck9m
TGluZXM6Ml07CisgICAgcmV0dXJuIGNlbGwuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZCl0
YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGRpZFNlbGVjdFJvd0F0SW5kZXhQYXRo
OihOU0luZGV4UGF0aCAqKWluZGV4UGF0aApAQCAtNDEzLDcgKzQxMyw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGhhc0dyb3VwczooQk9PTClo
YXNHcm91cHMKICAgICAgICAgW3BvcG92ZXJWaWV3Q29udHJvbGxlciBzZXRQcmVmZXJyZWRDb250
ZW50U2l6ZTogcG9wb3ZlclNpemVdOwogICAgIAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgc2VsZi5wb3BvdmVyQ29udHJvbGxlciA9IFtbW1VJUG9wb3ZlckNv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOnBvcG92ZXJWaWV3
Q29udHJvbGxlci5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHNlbGYucG9wb3ZlckNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50
Vmlld0NvbnRyb2xsZXI6cG9wb3ZlclZpZXdDb250cm9sbGVyLmdldCgpXSkuYXV0b3JlbGVhc2Uo
KTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogI2lmICFVU0UoVUlL
SVRfS0VZQk9BUkRfQURESVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXcubW0KaW5kZXggN2VjMjhhYzEwYjhjMGEzMDQwZmRi
NDg1YzYzNzJmMTI5ZTg4ZDc2My4uOTE3ZWFiNmU2MWQwMTUxMTY4ODE3MGJlMDYxMzI5NWNlZmQ5
ODE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVt
YmVyUGFkVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tO
dW1iZXJQYWRWaWV3Lm1tCkBAIC00MzAsMTMgKzQzMCwxMyBAQCBzdGF0aWMgV0tOdW1iZXJQYWRL
ZXkgYWx0ZXJuYXRlS2V5QXRQb3NpdGlvbihXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uIHBvc2l0
aW9uKQogCiAtIChXS051bWJlclBhZEJ1dHRvbiAqKV9idXR0b25Gb3JQb3NpdGlvbjooV0tOdW1i
ZXJQYWRCdXR0b25Qb3NpdGlvbilwb3NpdGlvbgogewotICAgIFdLTnVtYmVyUGFkQnV0dG9uICpi
dXR0b24gPSBbW1tXS051bWJlclBhZEJ1dHRvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwot
ICAgIGJ1dHRvbi5kZWZhdWx0S2V5ID0gZGVmYXVsdEtleUF0UG9zaXRpb24ocG9zaXRpb24sIFtf
Y29udHJvbGxlciBpbnB1dE1vZGVdKTsKLSAgICBidXR0b24uYWx0ZXJuYXRlS2V5ID0gYWx0ZXJu
YXRlS2V5QXRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgYnV0dG9uLmJ1dHRvblBvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgYnV0dG9uLnRpdGxlTGFiZWwuZm9udCA9IFtVSUZvbnQgc3lzdGVtRm9u
dE9mU2l6ZTpudW1iZXJQYWRMYWJlbEZvbnRTaXplKCkgd2VpZ2h0OlVJRm9udFdlaWdodFNlbWli
b2xkIGRlc2lnbjooTlNTdHJpbmcgKilrQ1RGb250VUlGb250RGVzaWduUm91bmRlZF07Ci0gICAg
YnV0dG9uLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICByZXR1cm4gYnV0dG9uOwor
ICAgIGF1dG8gYnV0dG9uID0gYWRvcHROUyhbW1dLTnVtYmVyUGFkQnV0dG9uIGFsbG9jXSBpbml0
XSk7CisgICAgW2J1dHRvbiBzZXREZWZhdWx0S2V5OmRlZmF1bHRLZXlBdFBvc2l0aW9uKHBvc2l0
aW9uLCBbX2NvbnRyb2xsZXIgaW5wdXRNb2RlXSldOworICAgIFtidXR0b24gc2V0QWx0ZXJuYXRl
S2V5OmFsdGVybmF0ZUtleUF0UG9zaXRpb24ocG9zaXRpb24pXTsKKyAgICBbYnV0dG9uIHNldEJ1
dHRvblBvc2l0aW9uOnBvc2l0aW9uXTsKKyAgICBbYnV0dG9uIHRpdGxlTGFiZWxdLmZvbnQgPSBb
VUlGb250IHN5c3RlbUZvbnRPZlNpemU6bnVtYmVyUGFkTGFiZWxGb250U2l6ZSgpIHdlaWdodDpV
SUZvbnRXZWlnaHRTZW1pYm9sZCBkZXNpZ246KE5TU3RyaW5nICopa0NURm9udFVJRm9udERlc2ln
blJvdW5kZWRdOworICAgIFtidXR0b24gc2V0VXNlckludGVyYWN0aW9uRW5hYmxlZDpOT107Cisg
ICAgcmV0dXJuIGJ1dHRvbi5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9pbml0S2V5cGFk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQ
YWRWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S051bWJlclBhZFZpZXdDb250cm9sbGVyLm1tCmluZGV4IGQzOTY5MjVmZjA5YjM2MjM1MmY1ZjIy
YmM5MTEyZTc1MmQ5ZDM0ZDUuLmY3M2VlNmJiZDQ2N2I1NzNmMDhmMWMzN2UxZGRhNGEwZTNhNThi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJl
clBhZFZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgLSAo
dm9pZClfaGFuZGxlS2V5UHJlc3M6KFdLTnVtYmVyUGFkS2V5KWtleQogICAgICAgICBbX2lucHV0
VGV4dCBhcHBlbmRTdHJpbmc6QCIrIl07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0tOdW1i
ZXJQYWRLZXlBY2NlcHQ6Ci0gICAgICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmQ6c2VsZiB0
ZXh0RW50ZXJlZDpbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl9p
bnB1dFRleHQuZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFtzZWxmLmRlbGVnYXRlIHF1
aWNrYm9hcmQ6c2VsZiB0ZXh0RW50ZXJlZDphZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpfaW5wdXRUZXh0LmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIFdLTnVtYmVyUGFkS2V5MDoKICAgICAgICAgW19pbnB1
dFRleHQgYXBwZW5kU3RyaW5nOkAiMCJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIubW0KaW5kZXggZmU3MTQ5NGZkZTA3NzQxN2QwYzg0Y2E0MTY4YzMxNTFiOTJmMzcxMC4uYjNl
MjBmZmQxMGEyNDQ5ZjIwZDA1YzJjYzdiZjJjZDI0ZjQ0NDU4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgLSAoUFVJQ0FjdGlvbkNv
bnRyb2xsZXIgKilhY3Rpb25Db250cm9sbGVyCiAKICAgICBQVUlDQWN0aW9uSXRlbSAqbGFuZ3Vh
Z2VTZWxlY3Rpb25BY3Rpb25JdGVtID0gW3NlbGYubGFuZ3VhZ2VDb250cm9sbGVyIGxhbmd1YWdl
U2VsZWN0aW9uQWN0aW9uSXRlbUZvclZpZXdDb250cm9sbGVyOnNlbGZdOwogICAgIGF1dG8gYWN0
aW9uR3JvdXAgPSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdyb3VwIGFsbG9jXSBpbml0V2l0aEFjdGlv
bkl0ZW1zOkBbIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSBdIGFjdGlvblN0eWxlOlBVSUNB
Y3Rpb25TdHlsZUF1dG9tYXRpY10pOwotICAgIHJldHVybiBbW1tQVUlDQWN0aW9uQ29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhBY3Rpb25Hcm91cDphY3Rpb25Hcm91cC5nZXQoKV0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbUFVJQ0FjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGlu
aXRXaXRoQWN0aW9uR3JvdXA6YWN0aW9uR3JvdXAuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQog
CiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlci5tbQppbmRleCAyMjM3NWY5NGFlMmI4MThlMzJhNzgwZjZlNTI3MmU5ZjY2
ODM4ODJjLi4zOWU5NzIzOWI0ZWFkNTUyNGQyMjJkZjI1MTcxYmIwZjM0ZTE1ZjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC05Nyw3ICs5Nyw3IEBAIC0gKHZvaWQp
cmVsb2FkVGV4dFN1Z2dlc3Rpb25zCiAKIC0gKHZvaWQpZW50ZXJUZXh0OihOU1N0cmluZyAqKXRl
eHQKIHsKLSAgICBbc2VsZi5kZWxlZ2F0ZSBxdWlja2JvYXJkOnNlbGYgdGV4dEVudGVyZWQ6W1tb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0XSBhdXRvcmVsZWFz
ZV1dOworICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmQ6c2VsZiB0ZXh0RW50ZXJlZDphZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0XSkuYXV0
b3JlbGVhc2UoKV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xhc3NpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCmluZGV4IDZm
NzE5YjBiN2ViNWEzMGMyYzlmY2YyYjMzYjEwNGE2YjFjMmU0ZjUuLmNiNDEzOTkyNWIyYmU0NmI5
NTM2MTZmMjFlMTM2NDkwYWJlZDcyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlcklPUy5tbQpAQCAtNTQ5LDcgKzU0OSw3IEBAIC0gKHZvaWQpZW50ZXJGdWxs
U2NyZWVuCiAgICAgW193aW5kb3cgc2V0SGlkZGVuOk5PXTsKIAogICAgIF9yb290Vmlld0NvbnRy
b2xsZXIgPSBbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAgIF9yb290Vmlld0Nv
bnRyb2xsZXIuZ2V0KCkudmlldyA9IFtbW1VJVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpfd2lu
ZG93LmdldCgpLmJvdW5kc10gYXV0b3JlbGVhc2VdOworICAgIF9yb290Vmlld0NvbnRyb2xsZXIu
Z2V0KCkudmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6X3dpbmRv
dy5nZXQoKS5ib3VuZHNdKS5hdXRvcmVsZWFzZSgpOwogICAgIF9yb290Vmlld0NvbnRyb2xsZXIu
Z2V0KCkudmlldy5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xvciBjbGVhckNvbG9yXTsKICAgICBf
cm9vdFZpZXdDb250cm9sbGVyLmdldCgpLnZpZXcuYXV0b3Jlc2l6aW5nTWFzayA9IChVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVIZWln
aHQpOwogICAgIFtfcm9vdFZpZXdDb250cm9sbGVyIHNldE1vZGFsUHJlc2VudGF0aW9uU3R5bGU6
VUlNb2RhbFByZXNlbnRhdGlvbkN1c3RvbV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBiMjRk
NDk3MmVjOWZkNGVhZDVhZjIxMTZmZjgyMDU3Yjc4ZGM3NzhkLi45YmFhOGJlMjRjNzdjNzQ2ZTc5
M2Y0MTM3OGRjZDAwYjNjZjRjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI2Nyw3ICsy
NjcsNyBAQCAtIChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0VGVzdFJlc3VsdAog
LSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2RlZmF1bHRBbmlt
YXRpb25Db250cm9sbGVyCiB7CiAgICAgaWYgKF9jb250ZW50UHJldmVudHNEZWZhdWx0KQotICAg
ICAgICByZXR1cm4gW1tbV0tBbmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tBbmltYXRpb25Db250cm9sbGVyIGFs
bG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1
bHQ+IGhpdFRlc3RSZXN1bHQgPSBbc2VsZiBfd2ViSGl0VGVzdFJlc3VsdF07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5wdXRXaW5kb3dDb250
cm9sbGVyLm1tCmluZGV4IDBmODZhNTZlYWFhNDA4NGVlN2JjZjlkYzhkOGM2ZDAzMzM1ZDRmYjAu
LjliODFlYmNiNTAwYjdiZGE4NGVhMjAxNzY0MzBjOTU2NzRmY2Q0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0V2luZG93Q29udHJv
bGxlci5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihO
U0V2ZW50ICopZXZlbnQgdXNpbmdMZWdhY3lDb2NvYVRleHRJbnB1dDooQk9PTCl1c2luCiAKICAg
ICAgICAgTlNTdHJpbmcgKnRleHQgPSBbW19pbnB1dFRleHRWaWV3IHRleHRTdG9yYWdlXSBzdHJp
bmddOwogICAgICAgICBpZiAoW3RleHQgbGVuZ3RoXSA+IDApCi0gICAgICAgICAgICAqc3RyaW5n
ID0gW1t0ZXh0IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICpzdHJpbmcgPSBhZG9w
dE5TKFt0ZXh0IGNvcHldKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICAgICAgICAgIAogICAg
IFtfaW5wdXRUZXh0VmlldyBzZXRTdHJpbmc6QCIiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5tbQppbmRleCBlYjBiYWIzMDExMjlm
YTA4M2U5YTE2ZGU2MmNlY2U2MDBkMDEzZDg0Li41MzEyNDIzYjMxZjRkODdlZTE2ZTFhNmQ1ZTEz
M2QwMjFlZGEyMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tW
aWV3TGF5b3V0U3RyYXRlZ3kubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
Vmlld0xheW91dFN0cmF0ZWd5Lm1tCkBAIC00OSwyNyArNDksMjcgQEAgQGltcGxlbWVudGF0aW9u
IFdLVmlld0xheW91dFN0cmF0ZWd5CiAKICsgKGluc3RhbmNldHlwZSlsYXlvdXRTdHJhdGVneVdp
dGhQYWdlOihOYWtlZFJlZjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pcGFnZSB2aWV3OihOU1ZpZXcg
Kil2aWV3IHZpZXdJbXBsOihOYWtlZFJlZjxXZWJLaXQ6OldlYlZpZXdJbXBsPil3ZWJWaWV3SW1w
bCBtb2RlOihXS0xheW91dE1vZGUpbW9kZQogewotICAgIFdLVmlld0xheW91dFN0cmF0ZWd5ICpz
dHJhdGVneTsKKyAgICBSZXRhaW5QdHI8V0tWaWV3TGF5b3V0U3RyYXRlZ3k+IHN0cmF0ZWd5Owog
CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlRml4ZWRTaXplOgot
ICAgICAgICBzdHJhdGVneSA9IFtbV0tWaWV3Rml4ZWRTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2Nd
IGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0lt
cGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5ID0gYWRvcHROUyhbW1dL
Vmlld0ZpeGVkU2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZS5jb3B5
UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYoKSBtb2RlOm1vZGVd
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlRHluYW1pY1NpemVDb21w
dXRlZEZyb21WaWV3U2NhbGU6Ci0gICAgICAgIHN0cmF0ZWd5ID0gW1tXS1ZpZXdEeW5hbWljU2l6
ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6
cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYoKSBt
b2RlOm1vZGVdOworICAgICAgICBzdHJhdGVneSA9IGFkb3B0TlMoW1tXS1ZpZXdEeW5hbWljU2l6
ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6
cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYoKSBt
b2RlOm1vZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlRHluYW1p
Y1NpemVDb21wdXRlZEZyb21NaW5pbXVtRG9jdW1lbnRTaXplOgotICAgICAgICBzdHJhdGVneSA9
IFtbV0tWaWV3RHluYW1pY1NpemVDb21wdXRlZEZyb21NaW5pbXVtRG9jdW1lbnRTaXplTGF5b3V0
U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmll
d0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5
ID0gYWRvcHROUyhbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0ZWRGcm9tTWluaW11bURvY3VtZW50
U2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZS5jb3B5UmVmKCkgdmll
dzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYoKSBtb2RlOm1vZGVdKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlVmlld1NpemU6CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgc3RyYXRlZ3kgPSBbW1dLVmlld1ZpZXdTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2Nd
IGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0lt
cGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5ID0gYWRvcHROUyhbW1dL
Vmlld1ZpZXdTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlS
ZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV0p
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBbc3RyYXRlZ3kgdXBkYXRlTGF5b3V0XTsK
IAotICAgIHJldHVybiBbc3RyYXRlZ3kgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzdHJhdGVn
eS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihOYWtl
ZFJlZjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pcGFnZSB2aWV3OihOU1ZpZXcgKil2aWV3IHZpZXdJ
bXBsOihOYWtlZFJlZjxXZWJLaXQ6OldlYlZpZXdJbXBsPil3ZWJWaWV3SW1wbCBtb2RlOihXS0xh
eW91dE1vZGUpbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkNvbG9yUGlja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9y
UGlja2VyTWFjLm1tCmluZGV4IDg2YTZmNDY4YzQ2ZmQ4MWI4ZTAyNzc5NzNlYTJmYmVjNzIyZjFj
NTAuLjM5NzFiYWUxM2Y0NGZjMjRmM2I4MjgwYTg5OTZhZGI5NzMyZDY2NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KQEAgLTIzMywx
NCArMjMzLDE0IEBAIC0gKHZvaWQpc2V0QW5kU2hvd1BpY2tlcjooV2ViS2l0OjpXZWJDb2xvclBp
Y2tlck1hYyopcGlja2VyIHdpdGhDb2xvcjooTlNDb2xvciAqCiAgICAgW19wb3BvdmVyV2VsbCBz
ZXRBY3Rpb246QHNlbGVjdG9yKGRpZENob29zZUNvbG9yOildOwogICAgIFtfcG9wb3ZlcldlbGwg
c2V0Q29sb3I6Y29sb3JdOwogCi0gICAgTlNDb2xvckxpc3QgKnN1Z2dlc3RlZENvbG9ycyA9IG5p
bDsKKyAgICBSZXRhaW5QdHI8TlNDb2xvckxpc3Q+IHN1Z2dlc3RlZENvbG9yczsKICAgICBpZiAo
c3VnZ2VzdGlvbnMuc2l6ZSgpKSB7Ci0gICAgICAgIHN1Z2dlc3RlZENvbG9ycyA9IFtbW05TQ29s
b3JMaXN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHN1Z2dlc3RlZENvbG9y
cyA9IGFkb3B0TlMoW1tOU0NvbG9yTGlzdCBhbGxvY10gaW5pdF0pOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKHN1Z2dlc3Rpb25zLnNpemUoKSwgbWF4Q29sb3JTdWdn
ZXN0aW9ucyk7IGkrKykKICAgICAgICAgICAgIFtzdWdnZXN0ZWRDb2xvcnMgaW5zZXJ0Q29sb3I6
bnNDb2xvcihzdWdnZXN0aW9ucy5hdChpKSkga2V5OkAoaSkuc3RyaW5nVmFsdWUgYXRJbmRleDpp
XTsKICAgICB9CiAKLSAgICBbX3BvcG92ZXJXZWxsIHNldFN1Z2dlc3RlZENvbG9yczpzdWdnZXN0
ZWRDb2xvcnNdOworICAgIFtfcG9wb3ZlcldlbGwgc2V0U3VnZ2VzdGVkQ29sb3JzOnN1Z2dlc3Rl
ZENvbG9ycy5nZXQoKV07CiAgICAgW19wb3BvdmVyV2VsbCBfc2hvd1BvcG92ZXJdOwogCiAgICAg
W1tOU0NvbG9yUGFuZWwgc2hhcmVkQ29sb3JQYW5lbF0gc2V0RGVsZWdhdGU6c2VsZl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRleCBlOTA1YTExYjE0OWQ2YThhOTMyZTY5ZWQ3
MzAwMTU2OTY3MGFmZDhlLi40ZDA5M2JhY2Y3NWYyOWU5NGMwOWM4NzM0NTU0ZWM1ZDM1NWFkY2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KQEAgLTQ5NCwyMyArNDk0LDIzIEBA
IC0gKENHRmxvYXQpdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyBoZWlnaHRPZlJv
dzooTlNJbnRlZ2VyKXJvdwogCiAtIChOU1RhYmxlUm93VmlldyAqKXRhYmxlVmlldzooTlNUYWJs
ZVZpZXcgKil0YWJsZVZpZXcgcm93Vmlld0ZvclJvdzooTlNJbnRlZ2VyKXJvdwogewotICAgIHJl
dHVybiBbW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldyBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJs
ZVJvd1ZpZXcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1ZpZXcgKil0
YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHZpZXdGb3JUYWJsZUNvbHVtbjooTlNU
YWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJbnRlZ2VyKXJvdwogewotICAgIFdLRGF0
YUxpc3RTdWdnZXN0aW9uVmlldyAqcmVzdWx0ID0gW3RhYmxlVmlldyBtYWtlVmlld1dpdGhJZGVu
dGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyIG93bmVyOnNlbGZdOworICAgIGF1
dG8gcmVzdWx0ID0gcmV0YWluUHRyKFt0YWJsZVZpZXcgbWFrZVZpZXdXaXRoSWRlbnRpZmllcjpz
dWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciBvd25lcjpzZWxmXSk7CiAKICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dLRGF0
YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdF0pOwogICAgICAgICBbcmVzdWx0IHNldElk
ZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdOwogICAgIH0KIAogICAgIGF1
dG8mIHN1Z2dlc3Rpb24gPSBfc3VnZ2VzdGlvbnMuYXQocm93KTsKLSAgICByZXN1bHQuc2hvdWxk
U2hvd0JvdHRvbURpdmlkZXIgPSBfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzICYmIHJvdyA8IHN0
YXRpY19jYXN0PE5TSW50ZWdlcj4oX3N1Z2dlc3Rpb25zLnNpemUoKSAtIDEpOworICAgIFtyZXN1
bHQgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6X3Nob3dEaXZpZGVyc0JldHdlZW5DZWxscyAm
JiByb3cgPCBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KF9zdWdnZXN0aW9ucy5zaXplKCkgLSAxKV07
CiAgICAgW3Jlc3VsdCBzZXRWYWx1ZTpzdWdnZXN0aW9uLnZhbHVlIGxhYmVsOnN1Z2dlc3Rpb24u
bGFiZWxdOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxl
YXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLm1tCmluZGV4IDMwNDcxMjc2ZjQ0MWY5NWNhY2YzMmIwN2RmYjk1OTc3NmRh
YzhiNTkuLjFkM2IxZmE3MzI1YTVmMzIzNWQ1ZmU4NjJmMTQzYTkwMzA5ZTI4ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQpAQCAtMTYw
LDcgKzE2MCw3IEBAIC0gKEJPT0wpX2hhc0N1c3RvbUNvbnRlbnRQcm92aWRlcgogCiAtIChOU0Fy
cmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KIHsKLSAgICByZXR1cm4gW1soTlNBcnJheSAqKV9mcmFt
ZS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpIHJldGFpbl0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiByZXRhaW5QdHIoKE5TQXJyYXkgKilfZnJhbWUtPmNlcnRpZmljYXRl
SW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoU2VjVHJ1
c3RSZWYpX3NlcnZlclRydXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggOWIwOTRiZWQwNTgxYmZlYjUyZWY2YjIx
MjkwNzA1ODAyOTU0YTNiYS4uY2YyM2E0NDk3Y2ZhOGMyMmI1MzQ5ZjA0ZTZkMDk4MzkyYmUwMjI2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5tbQpAQCAtNzEsOSArNzEsOSBAQCAtIChDb2NvYUltYWdlICopcmVuZGVyZWRJ
bWFnZVdpdGhPcHRpb25zOihXS1NuYXBzaG90T3B0aW9ucylvcHRpb25zIHdpZHRoOihOU051bQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICByZXR1cm4gW1tbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgp
LmdldCgpIHNpemU6TlNaZXJvU2l6ZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJ
bWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAg
IHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgp
Lm1ha2VDR0ltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhb
W1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1h
Z2UoKS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NRG9jdW1lbnQubW0KaW5kZXggOTVkMWMwN2FiMmNjYjY1NWQ2ZDdiMWZlMzI1Y2M1OWUwODNi
ZWRjNy4uZjBiNTA5NzZkYTRkZWU0NTVlZjI5M2QxZmMxZWQwZmM4NTc2ZjI5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01E
b2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCkBAIC04NSw3ICs4NSw3IEBAIC0gKFdLRE9NTm9kZSAq
KWNyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0CiAKIC0gKGlk
KXBhcnNlcllpZWxkVG9rZW4KIHsKLSAgICByZXR1cm4gW1tbV0tET01Eb2N1bWVudFBhcnNlcllp
ZWxkVG9rZW4gYWxsb2NdIGluaXRXaXRoRG9jdW1lbnQ6ZG93bmNhc3Q8V2ViQ29yZTo6RG9jdW1l
bnQ+KCpfaW1wbCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dLRE9NRG9j
dW1lbnRQYXJzZXJZaWVsZFRva2VuIGFsbG9jXSBpbml0V2l0aERvY3VtZW50OmRvd25jYXN0PFdl
YkNvcmU6OkRvY3VtZW50PigqX2ltcGwpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQppbmRleCA2M2NkZDJiYzJiYzRiNzk4YjU4Nzcw
YjQzMWYzYTE2NGQ5YzBkYWNmLi4yNDg2N2RmMzYxYTJkZDlmOTMxYzcwYTE3YWNlOTA1MDBiZDdl
ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTUludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQpAQCAtMTU0LDExICsxNTQs
MTEgQEAgc3RhdGljIFdLRE9NVHlwZSB0b1dLRE9NVHlwZShXZWJDb3JlVHlwZSBpbXBsLCBET01D
YWNoZTxXZWJDb3JlVHlwZSwgV0tET01UeXBlPiYKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgaWYgKFdLRE9NVHlwZSB3cmFwcGVyID0gY2FjaGUuZ2V0KGltcGwpKQot
ICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIFdLRE9N
VHlwZSB3cmFwcGVyID0gaW5pdFdpdGhJbXBsKGltcGwpOworICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhp
bml0V2l0aEltcGwoaW1wbCkpOwogICAgIGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVy
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5n
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NUmFuZ2UubW0KaW5kZXggM2NhZDJjNWU4MTBiZjRiYjY1M2E0ZDQ5NTZjMDcxZDVlODJlYTg3
Zi4uOTBiZDAxMTg0NDg4MWU1NWQ4MTZhN2YxZWUxMzc4MTAzZjUyYTMzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5n
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTVJhbmdlLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgLSAoV0tET01SYW5nZSAqKXJhbmdl
QnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczooTlNVSW50ZWdlciljaGFyYWN0
ZXIKIHsKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKCpfaW1wbCk7CiAgICAgYXV0
byBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJv
dW5kYXJ5KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oZGlyZWN0aW9uID09IFdLRE9NUmFu
Z2VEaXJlY3Rpb25Gb3J3YXJkID8gcmFuZ2UuZW5kIDogcmFuZ2Uuc3RhcnQpLCBjaGFyYWN0ZXJz
LCBkaXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQgOiBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkKTsKLSAgICByZXR1cm4gW1tbV0tET01SYW5nZSBhbGxvY10gX2luaXRXaXRoSW1wbDpj
cmVhdGVMaXZlUmFuZ2UobmV3UmFuZ2UpLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmNyZWF0ZUxpdmVSYW5n
ZShuZXdSYW5nZSkuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMmE0ZjgwZmFlOGExYWUzZmEwNDgxNGU5MmZmZTk4
MTRjNjEyNTBmZS4uYzEwNmE2Mjk1YWU5OWNjNmE4Y2M2NDhiMDhlZWExNzc4NmRhZDBjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNDIzLDcgKzQyMyw3IEBAIC0gKFdL
QnVuZGxlUGFnZVJlZilfYnVuZGxlUGFnZVJlZgogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSAqKWhhbmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxv
Y10gX2luaXRXaXRoUGFnZToqX3BhZ2VdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlOipfcGFnZV0p
LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlsb29rVXBCcm93c2luZ0NvbnRl
eHRGcm9tSGFuZGxlOihXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqKWhhbmRsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAx
YzI3Y2E4MDkyMjZhMzE3ZGQ4YjA5ZmNkNWE2OThlODFjNjNlYTI4Li4wYTQ0NDBkZmE1ZjQ3MGE0
ZDc2ZThlYzJhNWM5Njc5ZDI4OTM5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTA3LDE2ICsxMDcsMTYgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KCkKIHsKLSAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBtb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQgPSBbW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5T
KFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwogCiAgICAgLy8g
R2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgogICAgIHBpZF90IHBpZCA9IFdl
YkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogICAgIC8vIEZJWE1FOiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0IGRvZXNuJ3QgcmVzcG9uZCB0byAtYWNjZXNzaWJpbGl0eVNl
dFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOi4KICAgICAvLyBFaXRoZXIgaXQgbmVlZHMgdG8g
b3IgdGhpcyBjYWxsIHNob3VsZCBiZSByZW1vdmVkLgogICAgIGlmIChbbW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFBy
ZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAgICBbKGlkKW1vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlk
XTsKKyAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJp
bGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07CiAgICAgW21vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50ID0gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50OworICAgIG1fbW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOwogCiAgICAgYWNj
ZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRleCA4ZmZiYzIyMTQ4YjcwODY2ZWNm
ZTIwNDNjZjA4YTNhMDZjZDlmMTgyLi5kODdkMWY5YzFkNTJkMGQ2ZjlkNGY0YjU1OTY3MGRkOTM2
MTE2MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBAIC01NiwxMCArNTYsMTAgQEAgQGlt
cGxlbWVudGF0aW9uIFdlYlZpc2libGVQb3NpdGlvbiAoSW50ZXJuYWwpCiAKICsgKFdlYlZpc2li
bGVQb3NpdGlvbiAqKV93cmFwVmlzaWJsZVBvc2l0aW9uOihWaXNpYmxlUG9zaXRpb24pdmlzaWJs
ZVBvc2l0aW9uCiB7Ci0gICAgV2ViVmlzaWJsZVBvc2l0aW9uICp2cCA9IFtbV2ViVmlzaWJsZVBv
c2l0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHZwID0gYWRvcHROUyhbW1dlYlZpc2libGVQ
b3NpdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFZpc2libGVQb3NpdGlvbiAqY29weSA9IG5ldyBW
aXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKICAgICB2cC0+X2ludGVybmFsID0gcmVp
bnRlcnByZXRfY2FzdDxXZWJPYmplY3RJbnRlcm5hbCAqPihjb3B5KTsKLSAgICByZXR1cm4gW3Zw
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gdnAuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gUmV0
dXJucyBuaWwgaWYgdmlzaWJsZSBwb3NpdGlvbiBpcyBudWxsLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IDhhZTMyYWE0ZTFiN2I1
ZDIyNDVmOGJlODQ0NGZmZTEwNTBmZDEyZTguLmFkNTMwMTI1Y2IyZmZmZmQzMDNmNjM4NGJlZjQ2
ZmRjZGM4YmVmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcv
V2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdJT1MubW0KQEAgLTI4NywxNiArMjg3LDE2IEBAIC0gKHZvaWQpX2NoZWNrUERGVGl0
bGUKICAgICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJp
bmcgKnRpdGxlID0gbmlsOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGU7CiAKICAg
ICBDR1BERkRpY3Rpb25hcnlSZWYgaW5mbyA9IENHUERGRG9jdW1lbnRHZXRJbmZvKF9QREZEb2N1
bWVudCk7CiAgICAgQ0dQREZTdHJpbmdSZWYgdmFsdWU7CiAgICAgaWYgKENHUERGRGljdGlvbmFy
eUdldFN0cmluZyhpbmZvLCAiVGl0bGUiLCAmdmFsdWUpKQotICAgICAgICB0aXRsZSA9IFsoTlNT
dHJpbmcgKilDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZhbHVlKSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIHRpdGxlID0gYWRvcHRDRihDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZhbHVlKSk7
CiAKLSAgICBpZiAoW3RpdGxlIGxlbmd0aF0pIHsKLSAgICAgICAgX3RpdGxlID0gYWRvcHROUyhb
dGl0bGUgY29weV0pOwotICAgICAgICBjb3JlKFtzZWxmIF9mcmFtZV0pLT5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIg
fSk7CisgICAgaWYgKHRpdGxlICYmIENGU3RyaW5nR2V0TGVuZ3RoKHRpdGxlLmdldCgpKSkgewor
ICAgICAgICBfdGl0bGUgPSBhZG9wdE5TKFsoTlNTdHJpbmcgKil0aXRsZS5nZXQoKSBjb3B5XSk7
CisgICAgICAgIGNvcmUoW3NlbGYgX2ZyYW1lXSktPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUuYnJpZGdpbmdBdXRvcmVsZWFzZSgpLCBUZXh0RGlyZWN0
aW9uOjpMVFIgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRl
eCA4NWEyZmRiNjcxYzJkMjY2Yjg1YzFmYTJjOTQ5ZWJlMDRmM2I0ZjBlLi4xNmU3N2U4MTIwNzM0
N2RhNzgzY2FjZGMwODg5ZGU2NDJlODgzZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KQEAgLTc4NCwxMyArNzg0LDEzIEBAIERPTU5vZGVGaWx0ZXIgKmtpdChXZWJDb3JlOjpOb2Rl
RmlsdGVyKiBpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIGlmIChET01Ob2Rl
RmlsdGVyICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcihpbXBsKSkKLSAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKS5hdXRvcmVsZWFzZSgpOwogICAgIAotICAgIERPTU5vZGVGaWx0ZXIgKndyYXBwZXIg
PSBbW0RPTU5vZGVGaWx0ZXIgYWxsb2NdIF9pbml0XTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbRE9NTm9kZUZpbHRlciBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJu
YWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1w
bC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCBpbXBsKTsKLSAgICByZXR1cm4g
W3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwg
aW1wbCk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogV2ViQ29yZTo6
Tm9kZUZpbHRlciogY29yZShET01Ob2RlRmlsdGVyICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KaW5kZXggYmVlMWZjNjA2NTE3Y2Vi
NjZkNTliYjU4YjNiN2MyM2RmMTM0ZmMwZC4uOGJkNjdmNzIwMmRkNDE0ZmJlNGNkZTFhODliN2Mw
NTgzNjQzNzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFi
c3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJh
Y3RWaWV3Lm1tCkBAIC04NywxMSArODcsMTEgQEAgRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29y
ZTo6RE9NV2luZG93KiB2YWx1ZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIGlmIChET01BYnN0cmFjdFZpZXcgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKGZyYW1l
KSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBE
T01BYnN0cmFjdFZpZXcgKndyYXBwZXIgPSBbW0RPTUFic3RyYWN0VmlldyBhbGxvY10gX2luaXRd
OworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAg
YXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUFic3RyYWN0VmlldyBhbGxvY10gX2luaXRdKTsK
ICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4oZnJhbWUpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgZnJhbWUpOwotICAgIHJl
dHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdl
dCgpLCBmcmFtZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogRE9N
QWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cqIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUJsb2IubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQppbmRleCA5ZDg5YjljNTljOTE2YzFhN2Rl
MmVkYTE3MDZjNTZjMWZlYjY1NzBhLi4yMzZhNTAxYWI2MDQ3YmI2NmM3N2RjMTk5ODk2ZDYzNzI2
MDBiNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQpAQCAtNzAsMTIg
KzcwLDEyIEBAIERPTUJsb2IgKmtpdChXZWJDb3JlOjpCbG9iKiB2YWx1ZSkKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01CbG9iICp3cmFwcGVyID0gZ2V0
RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRv
cmVsZWFzZV07Ci0gICAgRE9NQmxvYiAqd3JhcHBlciA9IFtbRE9NQmxvYiBhbGxvY10gX2luaXRd
OworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAg
YXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUJsb2IgYWxsb2NdIF9pbml0XSk7CiAgICAgd3Jh
cHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZh
bHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1
ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVy
KHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgp
OwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNTU1J1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVs
ZS5tbQppbmRleCAyNzljNWU4ZDlmZmE4NDQwYzExYzdlNmYyYjFmMTY2M2I2N2RhOGQ5Li5hN2U2
ODkwMGE5ODA1YjBkODA2NDdjOTE4ZjIzZTdiMTNiOWZjMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQpAQCAtOTEsMTQgKzkxLDE0IEBAIERPTUNTU1J1bGUg
KmtpdChXZWJDb3JlOjpDU1NSdWxlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIGlmIChET01DU1NSdWxlICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2
YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0g
ICAgRE9NQ1NTUnVsZSAqd3JhcHBlciA9IFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF07
CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBS
ZXRhaW5QdHI8RE9NQ1NTUnVsZT4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkg
YWxsb2NdIF9pbml0XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9N
V3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NSdWxlTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01DU1NSdWxlTGlzdC5tbQppbmRleCA5NmJkYzVmMDM2NTc3ODkyNTE5YWI2MTZmMWEyYzBi
OWE1MTI1YjRjLi4xNGZjZTA0MTNjOTgxNGU1M2QwN2ZhMjMwMjNmYzgwMWIxMDU1ZDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZUxpc3QubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1bGVMaXN0Lm1tCkBAIC03Miwx
MiArNzIsMTIgQEAgRE9NQ1NTUnVsZUxpc3QgKmtpdChXZWJDb3JlOjpDU1NSdWxlTGlzdCogdmFs
dWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ1NT
UnVsZUxpc3QgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01DU1NSdWxlTGlzdCAqd3Jh
cHBlciA9IFtbRE9NQ1NTUnVsZUxpc3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tET01DU1NSdWxlTGlzdCBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJu
YWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZh
bHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1
cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQo
KSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRl
ZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHls
ZURlY2xhcmF0aW9uLm1tCmluZGV4IDg3YTMxMzBjODkwNDk0MzliNDcxYWE5MjU5YWU3YTkzZDc0
ZWFiYmUuLjE4NDA5NzllMTY3MTZmZDU0ZGQ2M2I2MzFmMTBhM2U5NjBmNDFiNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9u
Lm1tCkBAIC0xNDksMTIgKzE0OSwxMiBAQCBET01DU1NTdHlsZURlY2xhcmF0aW9uICpraXQoV2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqd3JhcHBlciA9
IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKndyYXBwZXIgPSBbW0RP
TUNTU1N0eWxlRGVjbGFyYXRpb24gYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFp
blB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tET01DU1NTdHlsZURlY2xhcmF0aW9uIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9p
bnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAg
ICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAg
IHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAog
I3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NWYWx1ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpp
bmRleCBmZWIxMjQzMDQ1M2NiZDllODU5NjBlNmFiNjE1MWMxNDBmZWUxY2Y1Li5hZTI5NjljYjI3
MDIzN2YzMDkwYmY5MmQyMmZiMjM5NDc0ZGMxMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1ZhbHVlLm1tCkBAIC03NiwxNCArNzYsMTQgQEAgRE9NQ1NTVmFsdWUgKmtp
dChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ1NTVmFsdWUgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICBET01DU1NWYWx1ZSAqd3JhcHBlciA9IFtba2l0Q2xhc3ModmFsdWUpIGFs
bG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVh
c2UoKTsKKyAgICBSZXRhaW5QdHI8RE9NQ1NTVmFsdWU+IHdyYXBwZXIgPSBhZG9wdE5TKFtba2l0
Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF0pOwogICAgIGlmICghd3JhcHBlcikKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERP
TU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2Vd
OworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3
cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Db3VudGVyLm1tCmluZGV4IGE2YWNlODJiYWY2NGNiZjM4NDIwOWM5Y2Ez
OTE5YTcyNDZlZDdlOTQuLmQwZTFiMjJhYzIwNWZkYWFhZDM2MGEzMDUzZWU1N2ZiMDZjOWY0ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Db3VudGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Db3VudGVyLm1tCkBAIC03NiwxMiAr
NzYsMTIgQEAgRE9NQ291bnRlciAqa2l0KFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NPTUNvdW50ZXIq
IHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERP
TUNvdW50ZXIgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01Db3VudGVyICp3cmFwcGVy
ID0gW1tET01Db3VudGVyIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIo
d3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9N
Q291bnRlciBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVy
cHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIg
YXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOwor
ICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KaW5kZXggNWNlZTM5ZTBiZTdkNGNjMTdj
OTc3ZmM1YjE3NzcyNGEyYzMyODg0MS4uZGZhMzViNDFiZTYyY2RkYzc4ZDFmZDA3YTA5NjE2MTli
NWJjZGIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQpAQCAtMTg4
LDE0ICsxODgsMTQgQEAgRE9NRXZlbnQgKmtpdChXZWJDb3JlOjpFdmVudCogdmFsdWUpCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NRXZlbnQgKndyYXBw
ZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01FdmVudCAqd3JhcHBlciA9IFtba2l0Q2xhc3ModmFs
dWUpIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0
b3JlbGVhc2UoKTsKKyAgICBSZXRhaW5QdHI8RE9NRXZlbnQ+IHdyYXBwZXIgPSBhZG9wdE5TKFtb
a2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF0pOwogICAgIGlmICghd3JhcHBlcikKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0
PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVh
c2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVy
biB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NRmlsZUxpc3QubW0KaW5kZXggM2JmNzBlYWQ4ODFjM2E4YTc4MDFm
OTViN2E3NTg5MGE4NjU5YmM1Mi4uZDkzNzY3ODZmYmVjYmQ2NTBlNzAxNThhOTNjOGIwMjQ5ZmE3
OWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUZpbGVMaXN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlTGlzdC5tbQpAQCAt
NzYsMTIgKzc2LDEyIEBAIERPTUZpbGVMaXN0ICpraXQoV2ViQ29yZTo6RmlsZUxpc3QqIHZhbHVl
KQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTUZpbGVM
aXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dy
YXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NRmlsZUxpc3QgKndyYXBwZXIgPSBb
W0RPTUZpbGVMaXN0IGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3Jh
cHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NRmls
ZUxpc3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnBy
ZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0g
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1
dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAg
ICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCmluZGV4IDQy
N2UwMzJiNWY2ZDVlNjJkOGRhN2RjMmIzYzliNjc1YzAzMzZkOTcuLjliYmQwNTIzMWIwZGZlNTgx
MjE4Y2IxZWZjMTk5MjkwYWQ0YmMwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KQEAgLTg5LDE0ICs4OSwxNCBAQCBET01IVE1MQ29s
bGVjdGlvbiAqa2l0KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uKiB2YWx1ZSkKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01IVE1MQ29sbGVjdGlvbiAqd3Jh
cHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUhUTUxDb2xsZWN0aW9uICp3cmFwcGVyID0gW1tr
aXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxET01IVE1MQ29sbGVjdGlvbj4g
d3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XSk7CiAgICAg
aWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHdyYXBwZXItPl9pbnRlcm5h
bCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFs
dWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVy
biBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgp
LCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVm
IElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0
aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IDE0YmQ2ZTdkYTQwYzM0ZmI2OWY1YTI2ZDkzODBjODg4
MDRiMjNhMzUuLjAzMjk5MTYzYzQwNWQwZTJmYThlYTVmNGJhZTQ2YjE5NjFlNDcwZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbi5tbQpAQCAtMTEzLDEyICsxMTMsMTIgQEAgRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9u
ICpraXQoV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKiB2YWx1ZSkKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01IVE1MT3B0aW9uc0NvbGxlY3Rp
b24gKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24g
KndyYXBwZXIgPSBbW0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiBhbGxvY10gX2luaXRdOworICAg
ICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiBhbGxvY10gX2luaXRd
KTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdElu
dGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdy
YXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1
dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSW1wbGVtZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSW1wbGVtZW50YXRpb24ubW0KaW5kZXggNzMyY2Y0MzhiZDYyMTFlYWIzMmY0
NjIxOWFjMTg5YWNiYmM5OWNhZS4uM2M5ZjQ5Y2JkZDhkNjBiNjgwYTZhZWZmZDRmY2NkNWIxOGUx
YzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUltcGxlbWVu
dGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbXBsZW1lbnRh
dGlvbi5tbQpAQCAtMTE4LDEwICsxMTgsMTAgQEAgRE9NSW1wbGVtZW50YXRpb24gKmtpdChXZWJD
b3JlOjpET01JbXBsZW1lbnRhdGlvbiogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBpZiAoRE9NSW1wbGVtZW50YXRpb24gKndyYXBwZXIgPSBnZXRET01X
cmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKLSAgICBET01JbXBsZW1lbnRhdGlvbiAqd3JhcHBlciA9IFtbRE9NSW1wbGVtZW50YXRp
b24gYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRv
cmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01JbXBsZW1lbnRhdGlv
biBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9j
YXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBh
ZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3Jl
bGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NTWVkaWFFcnJvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01NZWRpYUVycm9yLm1tCmluZGV4IGU3ZDk2MzdjM2Y0NzAwNjYzYTE3YTYxNDY4NzQ3
N2EzYjg4MTQ4OWIuLjQ0MTU3YzQyYjQwYTc5ZTZmNmI5MTE4NDM4MTRkNDkyOWE1YmE3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUVycm9yLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUVycm9yLm1tCkBAIC02OSwx
MiArNjksMTIgQEAgRE9NTWVkaWFFcnJvciAqa2l0KFdlYkNvcmU6Ok1lZGlhRXJyb3IqIHZhbHVl
KQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU1lZGlh
RXJyb3IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01NZWRpYUVycm9yICp3cmFwcGVy
ID0gW1tET01NZWRpYUVycm9yIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5Q
dHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtb
RE9NTWVkaWFFcnJvciBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSBy
ZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5y
ZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dy
YXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFs
dWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
TWVkaWFMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5t
bQppbmRleCA5NTdkNTQ1NWE2NjM0YTBlZjc3NzU3Zjc3YjE5MDVlNGNhYzFlYjRiLi4yZDE3OWQ0
ODU2ODA4NzVkYWU5NDdhYjA0M2IyMGM3ZTg0MzU2NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KQEAgLTk2LDEyICs5NiwxMiBAQCBET01NZWRpYUxp
c3QgKmtpdChXZWJDb3JlOjpNZWRpYUxpc3QqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU1lZGlhTGlzdCAqd3JhcHBlciA9IGdldERPTVdy
YXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotICAgIERPTU1lZGlhTGlzdCAqd3JhcHBlciA9IFtbRE9NTWVkaWFMaXN0IGFsbG9jXSBf
aW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsK
KyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NTWVkaWFMaXN0IGFsbG9jXSBfaW5pdF0p
OwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50
ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3Jh
cHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRk
RE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0
b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDZmNjg1YjQ1MzNmMTVmZTI3NTEwYjRlYzk4
Mzg5MjcxYjg4ZGMxNzcuLmQ0NjAxZTdkZDUxMmRkMWVhYmJmNjVlOGU2Yzg0MGIzNTMwM2EwZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQpA
QCAtMTI1LDEyICsxMjUsMTIgQEAgRE9NTmFtZWROb2RlTWFwICpraXQoV2ViQ29yZTo6TmFtZWRO
b2RlTWFwKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IGlmIChET01OYW1lZE5vZGVNYXAgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01OYW1l
ZE5vZGVNYXAgKndyYXBwZXIgPSBbW0RPTU5hbWVkTm9kZU1hcCBhbGxvY10gX2luaXRdOworICAg
ICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW0RPTU5hbWVkTm9kZU1hcCBhbGxvY10gX2luaXRdKTsKICAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNl
KCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlLm1t
CmluZGV4IDVkMTRiYTE0OTZlMjk0ZDI1NjE2MmY4MzgyYTMxZWMwODJiNjNkZjMuLmI1MmUzNjYx
NGUyY2E1ZTMyODcwNjc0ZDkxNDJjMzAzMzQ5ZDk3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Ob2RlLm1tCkBAIC02MiwxNCArNjIsMTQgQEAgRE9NTm9kZSAqa2l0KE5vZGUqIHZh
bHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU5v
ZGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01Ob2RlICp3cmFwcGVyID0gW1traXRD
bGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFw
cGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxET01Ob2RlPiB3cmFwcGVyID0gYWRv
cHROUyhbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAgICBpZiAoIXdyYXBwZXIp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnBy
ZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0g
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1
dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAg
ICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiBAaW1wbGVtZW50YXRpb24gRE9N
Tm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGVJdGVy
YXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlSXRlcmF0b3IubW0K
aW5kZXggMTU3ZGQxODBkZTRlNTY0OTFjZDBhMGExOTgwNmYzZDA1NzBjZmU0Zi4uNTVmODU0ZDVl
NDJjNjkzZGM3ODllMzcwZjY4ZGY3MzViZGE3MjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU5vZGVJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NTm9kZUl0ZXJhdG9yLm1tCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBET01O
b2RlSXRlcmF0b3IgKmtpdChXZWJDb3JlOjpOb2RlSXRlcmF0b3IqIHZhbHVlKQogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU5vZGVJdGVyYXRvciAqd3Jh
cHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTU5vZGVJdGVyYXRvciAqd3JhcHBlciA9IFtbRE9N
Tm9kZUl0ZXJhdG9yIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3Jh
cHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NTm9k
ZUl0ZXJhdG9yIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigp
OwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBl
ciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7
CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlTGlzdC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlTGlzdC5tbQppbmRleCBlMDk4NjU2ZjNi
M2FiOTEwYzU2NTg5MDE5ZTRiNTM0ZGEwNDkxY2QzLi5kMDAzM2Q5Y2ZiZjU5OWQwNDhjMTczZmY1
MjRlM2RiNDc0YWJmMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NTm9kZUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGVM
aXN0Lm1tCkBAIC03MCwxMiArNzAsMTIgQEAgRE9NTm9kZUxpc3QgKmtpdChXZWJDb3JlOjpOb2Rl
TGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBp
ZiAoRE9NTm9kZUxpc3QgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01Ob2RlTGlzdCAq
d3JhcHBlciA9IFtbRE9NTm9kZUxpc3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tET01Ob2RlTGlzdCBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwg
PSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVl
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4g
W3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwg
dmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJ
TVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3IubW0KaW5kZXggOTVi
YzA4OGMwNjhhMjZiOWI5MmY5OGFiOWJjMGQ5OTNmOWNiMDIzYS4uOTc2MmE2MDQwZmFkN2Y0N2Uy
NTFmMGE3MGM5NzI2NjRjODkwNDM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJHQkNvbG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01SR0JDb2xvci5tbQpAQCAtMTAzLDEyICsxMDMsMTIgQEAgRE9NUkdCQ29sb3IgKmtpdChXZWJD
b3JlOjpEZXByZWNhdGVkQ1NTT01SR0JDb2xvciogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NUkdCQ29sb3IgKndyYXBwZXIgPSBnZXRET01X
cmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKLSAgICBET01SR0JDb2xvciAqd3JhcHBlciA9IFtbRE9NUkdCQ29sb3IgYWxsb2NdIF9p
bml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOwor
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01SR0JDb2xvciBhbGxvY10gX2luaXRdKTsK
ICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERP
TVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UmFuZ2UubW0KaW5kZXggMjg3NjYwZmVjYWU5ODZkZjliMzlkOGQ1N2UwM2ViYmNkMGY5NDE5Mi4u
MTRmNDg5ZGFhNTEyNjU1M2FlZjFlN2IzODMyYjI3ZDkxMWI4NzQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQpAQCAtMzA0LDEyICszMDQsMTIgQEAgRE9NUmFuZ2Ug
KmtpdChXZWJDb3JlOjpSYW5nZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICBpZiAoRE9NUmFuZ2UgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBE
T01SYW5nZSAqd3JhcHBlciA9IFtbRE9NUmFuZ2UgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0
dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tET01SYW5nZSBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJu
YWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZh
bHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1
cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQo
KSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKIERPTVJh
bmdlICpraXQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SZWN0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJlY3QubW0KaW5kZXggOTI0M2VmMjg3ZmMzZDE3OGQz
M2M4YTFjZGFkNmFhODI3M2JmZTJmNi4uZDcyYzBkMWY5YjNmYmVkMTJhMDg4ZjUyNTEyZjY5ZDMw
MzBjNzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJlY3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJlY3QubW0KQEAgLTgzLDEy
ICs4MywxMiBAQCBET01SZWN0ICpraXQoV2ViQ29yZTo6RGVwcmVjYXRlZENTU09NUmVjdCogdmFs
dWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NUmVj
dCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFw
cGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVJlY3QgKndyYXBwZXIgPSBbW0RPTVJl
Y3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRv
cmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01SZWN0IGFsbG9jXSBf
aW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2Jq
ZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cisg
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KaW5kZXggOWEyM2NlNDRjNjE3ZTA1OTRhNjk0ZDBh
YjdiNjA5MDVhODU4ZDIwOS4uYzExYjJkMmNhZGU4ZmQ2NTVjZTlmMTAwZGM2YzJhNGE4N2U0ZDdk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KQEAg
LTExMSwxNCArMTExLDE0IEBAIERPTVN0eWxlU2hlZXQgKmtpdChXZWJDb3JlOjpTdHlsZVNoZWV0
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChE
T01TdHlsZVNoZWV0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NU3R5bGVTaGVldCAq
d3JhcHBlciA9IFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVy
biByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBSZXRhaW5QdHI8RE9NU3R5
bGVTaGVldD4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0
XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHdyYXBwZXIt
Pl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7
CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwot
ICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFw
cGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0K
IAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01TdHlsZVNoZWV0TGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHls
ZVNoZWV0TGlzdC5tbQppbmRleCBiZjA5MmIxZmZlYjc2MjY2NGNjYWUzNDNlMDZhMzFkOWQzNzVk
YTY1Li44OTRhNjM0MWE3N2YyN2NhZmY1ZjI1M2RiNTc3OTQ1OGZlMDI4MTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldExpc3QubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1tCkBAIC03Mywx
MiArNzMsMTIgQEAgRE9NU3R5bGVTaGVldExpc3QgKmtpdChXZWJDb3JlOjpTdHlsZVNoZWV0TGlz
dCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAo
RE9NU3R5bGVTaGVldExpc3QgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01TdHlsZVNo
ZWV0TGlzdCAqd3JhcHBlciA9IFtbRE9NU3R5bGVTaGVldExpc3QgYWxsb2NdIF9pbml0XTsKKyAg
ICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tET01TdHlsZVNoZWV0TGlzdCBhbGxvY10gX2luaXRdKTsKICAg
ICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFs
Kj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIs
IHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdy
YXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxl
YXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVGltZVJhbmdlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01UaW1lUmFuZ2VzLm1tCmluZGV4IDE0MWYyYmIyYzJmNDViODQ1NWJmODY0NWI4YzA5OGQ5ZTNj
OGNmNDcuLjA0MjE1ODYxZjEwM2RiNGI1YzE3ZDM0NDQyODYzMTYxOTU1MDI1ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UaW1lUmFuZ2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UaW1lUmFuZ2VzLm1tCkBAIC04MCwxMiArODAs
MTIgQEAgRE9NVGltZVJhbmdlcyAqa2l0KFdlYkNvcmU6OlRpbWVSYW5nZXMqIHZhbHVlKQogICAg
IGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTVRpbWVSYW5nZXMg
KndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBl
ciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UaW1lUmFuZ2VzICp3cmFwcGVyID0gW1tE
T01UaW1lUmFuZ2VzIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3Jh
cHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NVGlt
ZVJhbmdlcyBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVy
cHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIg
YXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOwor
ICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
VklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5M
aXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQppbmRl
eCAyNGE1ZDEyZWNiM2FjMjVmNDViMWIyMDAzZDRlNjQ5MTgxMzliYTgxLi4xZDExZWU0Y2Y5MWYx
NDc5NDQ3N2MyNTI2YTEyM2ViYzVjNmM1MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTk2LDEyICs5NiwxMiBAQCBET01Ub2tlbkxpc3QgKmtp
dChXZWJDb3JlOjpET01Ub2tlbkxpc3QqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgaWYgKERPTVRva2VuTGlzdCAqd3JhcHBlciA9IGdldERPTVdyYXBw
ZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIERPTVRva2VuTGlzdCAqd3JhcHBlciA9IFtbRE9NVG9rZW5MaXN0IGFsbG9jXSBfaW5p
dF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NVG9rZW5MaXN0IGFsbG9jXSBfaW5pdF0pOwog
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9N
V3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01UcmVlV2Fsa2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVRyZWVXYWxrZXIubW0KaW5kZXggM2RkYjgwMzdhZDE5YThiODFkYTRlZDczZWQyYTBhMGM4
YTA4NGNjOS4uMmE2MWRhZDRiZTdhNDUxMTNjOWM3NjlkMzQxODZiOWE1NjhiOGMxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRyZWVXYWxrZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRyZWVXYWxrZXIubW0KQEAgLTE3NiwxMiAr
MTc2LDEyIEBAIERPTVRyZWVXYWxrZXIgKmtpdChXZWJDb3JlOjpUcmVlV2Fsa2VyKiB2YWx1ZSkK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01UcmVlV2Fs
a2VyICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dy
YXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVHJlZVdhbGtlciAqd3JhcHBlciA9
IFtbRE9NVHJlZVdhbGtlciBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRy
KHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RP
TVRyZWVXYWxrZXIgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVp
bnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVm
KCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFw
cGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVl
KTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoLm1tCmluZGV4IGM3ZTM0OGI1YzI5NGE2
NWRmZGU1NDIyYTBjODAzYjJiNDBiYTQxZGYuLjdmMzJkYzZhMTU5NDNkYWM2YTk2YzFkYzQ1NzZk
ZDg1MzhmMmY1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Y
UGF0aC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGgubW0KQEAg
LTYzLDEzICs2MywxMyBAQCBET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKmtpdChXZWJDb3JlOjpY
UGF0aE5TUmVzb2x2ZXIqIGltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgaWYg
KERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIoaW1wbCkp
Ci0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKICAgICAKLSAgICBET01O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIgKndyYXBwZXIgPSBbW0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciBhbGxvY10gX2luaXRdOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01OYXRpdmVY
UGF0aE5TUmVzb2x2ZXIgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0g
cmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwpOwogICAgIGltcGwtPnJl
ZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgaW1wbCk7Ci0gICAgcmV0dXJuIFt3cmFw
cGVyIGF1dG9yZWxlYXNlXTsgICAgCisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCBp
bXBsKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOyAgICAKIH0KIAogI3VuZGVm
IElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aEV4
cHJlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhFeHByZXNz
aW9uLm1tCmluZGV4IGFlZGYzNWEyMDMyYTVkZmE1NjFkMjkzNmYyMTQ3YzYyYmY5NGYwZGIuLmMx
NDcwMDNiNDY0MTkyZWZjM2ExMzI2NTEyMjFkODBlZjYwMzlhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aEV4cHJlc3Npb24ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbQpAQCAtNzgsMTIgKzc4
LDEyIEBAIERPTVhQYXRoRXhwcmVzc2lvbiAqa2l0KFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbiog
dmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9N
WFBhdGhFeHByZXNzaW9uICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAg
IHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NWFBhdGhFeHBy
ZXNzaW9uICp3cmFwcGVyID0gW1tET01YUGF0aEV4cHJlc3Npb24gYWxsb2NdIF9pbml0XTsKKyAg
ICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tET01YUGF0aEV4cHJlc3Npb24gYWxsb2NdIF9pbml0XSk7CiAg
ICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01X
cmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVs
ZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVhQYXRoUmVzdWx0Lm1tCmluZGV4IDU0OWM4ZTE1ZDAxZDQ0ODc3YWFlZTJmMzVmYmI1ZWRi
Njc5MTdlMGQuLjM5Njg2NzM5ZDBhNmFiM2RlOTRjZTQ2YjBjYTZmZmYzZDAwNGJhMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0KQEAgLTExOCwx
MiArMTE4LDEyIEBAIERPTVhQYXRoUmVzdWx0ICpraXQoV2ViQ29yZTo6WFBhdGhSZXN1bHQqIHZh
bHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTVhQ
YXRoUmVzdWx0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NWFBhdGhSZXN1bHQgKndy
YXBwZXIgPSBbW0RPTVhQYXRoUmVzdWx0IGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiBy
ZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbRE9NWFBhdGhSZXN1bHQgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVy
bmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2
YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0
dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0
KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5k
ZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL1dlYkRPTU9w
ZXJhdGlvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9u
cy5tbQppbmRleCA3ZDcyZmY1YmQ2ZGI5NDY2ZjRlOTYyNjkwNzQyYTI4ODllYTYzYWY5Li41MjAw
N2M0NGQ4ZTJkZjM3YWVkNzk2OGRmN2JmYWVjMTliNzZkMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQpAQCAtODcsMTYgKzg3LDE2IEBA
IEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJET01Ob2RlT3BlcmF0aW9ucykKIAogLSAoV2Vi
QXJjaGl2ZSAqKXdlYkFyY2hpdmUKIHsKLSAgICByZXR1cm4gW1tbV2ViQXJjaGl2ZSBhbGxvY10g
X2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpj
b3JlKHNlbGYpKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQXJjaGl2
ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKCpjb3JlKHNlbGYpKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYkFyY2hpdmUg
Kil3ZWJBcmNoaXZlQnlGaWx0ZXJpbmdTdWJmcmFtZXM6KFdlYkFyY2hpdmVTdWJmcmFtZUZpbHRl
cil3ZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXIKIHsKLSAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZl
ID0gW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoc2VsZiksIFt3ZWJBcmNoaXZlU3ViZnJhbWVGaWx0
ZXJdKEZyYW1lJiBzdWJmcmFtZSkgLT4gYm9vbCB7CisgICAgYXV0byB3ZWJBcmNoaXZlID0gYWRv
cHROUyhbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0V2l0aENvcmVMZWdhY3lXZWJBcmNoaXZlOkxl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZShzZWxmKSwgW3dlYkFyY2hpdmVTdWJmcmFtZUZp
bHRlcl0oRnJhbWUmIHN1YmZyYW1lKSAtPiBib29sIHsKICAgICAgICAgcmV0dXJuIHdlYkFyY2hp
dmVTdWJmcmFtZUZpbHRlcihraXQoJnN1YmZyYW1lKSk7Ci0gICAgfSldOworICAgIH0pXSk7CiAK
LSAgICByZXR1cm4gW3dlYkFyY2hpdmUgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3ZWJBcmNo
aXZlLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTg2
LDcgKzE4Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBET01SYW5nZSAoV2ViRE9NUmFuZ2VPcGVyYXRp
b25zKQogCiAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2ZQogewotICAgIHJldHVybiBbW1tXZWJB
cmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUobWFrZVNpbXBsZVJhbmdlKCpjb3JlKHNlbGYpKSldIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0V2l0aENvcmVMZWdh
Y3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShtYWtlU2ltcGxlUmFuZ2UoKmNv
cmUoc2VsZikpKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWFya3VwU3Ry
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVz
L1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbQppbmRl
eCBkY2VjNmNkNWIyMmE3ZGFmOWY0Mjg4Mzk3M2E1N2EyZTc1MDEwNjIwLi5mMmU3ZTMyNjIxZTFh
ZGE4YTgxMzA1N2UwMzg2Y2U1MTFmZDNhMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVs
dENvbnRleHRNZW51RGVsZWdhdGUubW0KQEAgLTU3LDcgKzU3LDcgQEAgQGltcGxlbWVudGF0aW9u
IFdlYkRlZmF1bHRVSURlbGVnYXRlIChXZWJDb250ZXh0TWVudSkKIAogLSAoTlNNZW51SXRlbSAq
KW1lbnVJdGVtV2l0aFRhZzooaW50KXRhZyB0YXJnZXQ6KGlkKXRhcmdldCByZXByZXNlbnRlZE9i
amVjdDooaWQpcmVwcmVzZW50ZWRPYmplY3QKIHsKLSAgICBOU01lbnVJdGVtICptZW51SXRlbSA9
IFtbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIG1lbnVJ
dGVtID0gYWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdKTsKICAgICBbbWVudUl0ZW0g
c2V0VGFnOnRhZ107CiAgICAgW21lbnVJdGVtIHNldFRhcmdldDp0YXJnZXRdOyAvLyBjYW4gYmUg
bmlsCiAgICAgW21lbnVJdGVtIHNldFJlcHJlc2VudGVkT2JqZWN0OnJlcHJlc2VudGVkT2JqZWN0
XTsKQEAgLTExNCw3ICsxMTQsNyBAQCAtIChOU01lbnVJdGVtICopbWVudUl0ZW1XaXRoVGFnOihp
bnQpdGFnIHRhcmdldDooaWQpdGFyZ2V0IHJlcHJlc2VudGVkT2JqZWN0OihpZAogCiAgICAgW21l
bnVJdGVtIHNldEFjdGlvbjphY3Rpb25dOwogICAgIAotICAgIHJldHVybiBtZW51SXRlbTsKKyAg
ICByZXR1cm4gbWVudUl0ZW0uYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClhcHBlbmREZWZh
dWx0SXRlbXM6KE5TQXJyYXkgKilkZWZhdWx0SXRlbXMgdG9BcnJheTooTlNNdXRhYmxlQXJyYXkg
KiltZW51SXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggZDZhZjc1NWZmYTczOGI5OTNmN2Y3ODdlYzNlOGMz
ZjRlY2RhNzBmMy4uYzdlZDBmZDMyMzY1YzMyMDhhZjg5MzY0Mzc0MjVhZTQxYWVkMmM5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExp
c3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2Fy
ZExpc3QubW0KQEAgLTgxLDcgKzgxLDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0ICpraXQoQmFja0Zv
cndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QpCiAgICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdCAq
d2ViQmFja0ZvcndhcmRMaXN0ID0gYmFja0ZvcndhcmRMaXN0cygpLmdldChiYWNrRm9yd2FyZExp
c3QpKQogICAgICAgICByZXR1cm4gd2ViQmFja0ZvcndhcmRMaXN0OwogCi0gICAgcmV0dXJuIFtb
W1dlYkJhY2tGb3J3YXJkTGlzdCBhbGxvY10gaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KmJhY2tG
b3J3YXJkTGlzdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQmFja0Zv
cndhcmRMaXN0IGFsbG9jXSBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDoqYmFja0ZvcndhcmRMaXN0
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFJl
ZjxCYWNrRm9yd2FyZExpc3Q+JiYpYmFja0ZvcndhcmRMaXN0CkBAIC0xMzksNyArMTM5LDcgQEAg
LSAodm9pZClhZGRJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWVudHJ5CiAgICAgLy8gU2luY2UgdGhl
IGFzc3VtZWQgY29udHJhY3Qgd2l0aCBXZWJCYWNrRm9yd2FyZExpc3QgaXMgdGhhdCBpdCByZXRh
aW5zIGl0cyBXZWJIaXN0b3J5SXRlbXMsCiAgICAgLy8gdGhlIGZvbGxvd2luZyBsaW5lIHByZXZl
bnRzIGEgd2hvbGUgY2xhc3Mgb2YgcHJvYmxlbXMgd2hlcmUgYSBoaXN0b3J5IGl0ZW0gd2lsbCBi
ZSBjcmVhdGVkIGluCiAgICAgLy8gYSBmdW5jdGlvbiwgYWRkZWQgdG8gdGhlIEJGbGlzdCwgdGhl
biB1c2VkIGluIHRoZSByZXN0IG9mIHRoYXQgZnVuY3Rpb24uCi0gICAgW1tlbnRyeSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZW50cnkpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpcmVtb3ZlSXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCkBAIC0yMTQsMTcgKzIx
NCwxNyBAQCAtICh2b2lkKWdvVG9JdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KIAogLSAoV2Vi
SGlzdG9yeUl0ZW0gKiliYWNrSXRlbQogewotICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5i
YWNrSXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWlu
UHRyKGtpdChjb3JlKHNlbGYpLT5iYWNrSXRlbSgpLmdldCgpKSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoV2ViSGlzdG9yeUl0ZW0gKiljdXJyZW50SXRlbQogewotICAgIHJldHVybiBbW2tpdChj
b3JlKHNlbGYpLT5jdXJyZW50SXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gcmV0YWluUHRyKGtpdChjb3JlKHNlbGYpLT5jdXJyZW50SXRlbSgpLmdldCgpKSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV2ViSGlzdG9yeUl0ZW0gKilmb3J3YXJkSXRlbQogewot
ICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5mb3J3YXJkSXRlbSgpLmdldCgpKSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKGtpdChjb3JlKHNlbGYpLT5mb3J3
YXJkSXRlbSgpLmdldCgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogc3RhdGljIGJvb2wgYnVtcGVy
Q2FyQmFja0ZvcndhcmRIYWNrTmVlZGVkKCkKQEAgLTMzMyw3ICszMzMsNyBAQCAtIChpbnQpZm9y
d2FyZExpc3RDb3VudAogCiAtIChXZWJIaXN0b3J5SXRlbSAqKWl0ZW1BdEluZGV4OihpbnQpaW5k
ZXgKIHsKLSAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+aXRlbUF0SW5kZXgoaW5kZXgpLmdl
dCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKGtpdChjb3Jl
KHNlbGYpLT5pdGVtQXRJbmRleChpbmRleCkuZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5k
ZXggYzdmNDVhYzVlMDNlMDUyNGFlOWU5MDRmZjYxMTIxMTJiOTUyYzg3My4uMTcxZThiMzQ3Y2Ix
ZDkyZGIyMWY3NzkwMTU0ZDhkZTZlMzFjZGVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtNjI0LDcgKzYyNCw3IEBAIC0gKE5TRGF0YSAq
KWRhdGEKICAgICAvLyB0aGF0IGNsaWVudHMgY2FuIGxlYXJuIG9mIGRpc2NhcmRlZCBpdGVtcyBi
eSBsaXN0ZW5pbmcgdG8gV2ViSGlzdG9yeUl0ZW1zRGlzY2FyZGVkV2hpbGVMb2FkaW5nTm90aWZp
Y2F0aW9uLgogICAgIFdlYkhpc3RvcnlXcml0ZXIgd3JpdGVyKF9lbnRyaWVzQnlEYXRlLmdldCgp
KTsKICAgICB3cml0ZXIud3JpdGVQcm9wZXJ0eUxpc3QoKTsKLSAgICByZXR1cm4gW1soTlNEYXRh
ICopd3JpdGVyLnJlbGVhc2VEYXRhKCkuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIHJldGFpblB0cigoTlNEYXRhICopd3JpdGVyLnJlbGVhc2VEYXRhKCkuZ2V0KCkpLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpc2F2ZVRvVVJMOihOU1VSTCAqKVVSTCBlcnJvcjoo
TlNFcnJvciAqKillcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggOGE2MThjNmQxODA4Y2Y3ZTM4ZDVlMDAyNWRmMzhjN2Y3
OGJhNWZlOS4uODEwZjY3YjdhODU4Y2Y3YmFkODA4NTIyMGNmODliZGMzZDIxMGE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBA
IC0yNzAsMTMgKzI3MCwxMyBAQCBXZWJIaXN0b3J5SXRlbSAqa2l0KEhpc3RvcnlJdGVtKiBpdGVt
KQogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoYXV0byB3cmFw
cGVyID0gaGlzdG9yeUl0ZW1XcmFwcGVycygpLmdldChpdGVtKSkKLSAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gW1tbV2ViSGlzdG9yeUl0
ZW0gYWxsb2NdIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVtOippdGVtXSBhdXRvcmVsZWFzZV07
CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFdlYkNvcmVIaXN0
b3J5SXRlbToqaXRlbV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFdlYkhpc3RvcnlJdGVtICop
ZW50cnlXaXRoVVJMOihOU1VSTCAqKVVSTAogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBp
bml0V2l0aFVSTDpVUkwgdGl0bGU6bmlsXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgdGl0bGU6bmlsXSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoaWQpaW5pdFdpdGhVUkxTdHJpbmc6KE5TU3RyaW5nICopVVJMU3RyaW5nIHRp
dGxlOihOU1N0cmluZyAqKXRpdGxlIGRpc3BsYXlUaXRsZTooTlNTdHJpbmcgKilkaXNwbGF5VGl0
bGUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6KE5TVGltZUludGVydmFsKXRpbWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmlu
ZGV4IDkyNmY1ZDU2MmY4MzhiYjczNjNlNzk0OTY5ODI4NmZiZTFjNTkzN2IuLjJiYTAwNmRkM2U3
YjJhZmM1MGVmZjI4NDUzMjBkOTY1MDViYTcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtMTU4LDkgKzE1OCw5
IEBAIC0oTlNTdHJpbmcgKilfd2Via2l0X2ZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVy
cwogCiAtKE5TU3RyaW5nICopX3dlYmtpdF9zdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZQogewot
ICAgIE5TTXV0YWJsZVN0cmluZyAqdHJpbW1lZCA9IFtbc2VsZiBtdXRhYmxlQ29weV0gYXV0b3Jl
bGVhc2VdOwotICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0
cmluZ1JlZil0cmltbWVkKTsKLSAgICByZXR1cm4gdHJpbW1lZDsKKyAgICBhdXRvIHRyaW1tZWQg
PSBhZG9wdE5TKFtzZWxmIG11dGFibGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFj
ZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOworICAgIHJldHVy
biB0cmltbWVkLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tCmluZGV4IDgyYWUx
ZGI1ZTVmNzRlMjRlZTY5N2IxYThmYzA1YzVjNDY1MWJjOWMuLjZlYzdjYzBkYjIyNzJjZTRiZDNk
YTE3NGVhMzI5NDU4NmRkZmQxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNEYXRhRXh0cmFzLm1tCkBAIC0yODYsNyArMjg2LDcgQEAgLSAoTlNNdXRhYmxlRGlj
dGlvbmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKIAogICAgIGNvbnN0IFVJ
bnQ4KiBieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4Kj4oW3NlbGYgYnl0ZXNdKTsKICAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IFtzZWxmIGxlbmd0aF07Ci0gICAgTlNTdHJpbmcgKmxhc3RL
ZXkgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBsYXN0S2V5OwogICAgIGNvbnN0IFVJ
bnQ4ICplb2w7CiAKICAgICAvLyBMb29wIG92ZXIgbGluZXMgdW50aWwgd2UncmUgcGFzdCB0aGUg
aGVhZGVyLCBvciB3ZSBjYW4ndCBmaW5kIGFueSBtb3JlIGVuZC1vZi1saW5lcwpAQCAtMzExLDEx
ICszMTEsMTEgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJI
ZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIC8vIE1lcmdlIHRoZSBjb250aW51YXRpb24gb2YgdGhlIHByZXZpb3VzIGhlYWRl
cgotICAgICAgICAgICAgTlNTdHJpbmcgKmN1cnJlbnRWYWx1ZSA9IFtoZWFkZXJGaWVsZHMgb2Jq
ZWN0Rm9yS2V5Omxhc3RLZXldOworICAgICAgICAgICAgTlNTdHJpbmcgKmN1cnJlbnRWYWx1ZSA9
IFtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXkuZ2V0KCldOwogICAgICAgICAgICAg
YXV0byBuZXdWYWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczps
aW5lIGxlbmd0aDpsaW5lTGVuZ3RoIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2Rpbmdd
KTsKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50VmFsdWUpOwogICAgICAgICAgICAgQVNTRVJU
KG5ld1ZhbHVlKTsKLSAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OltjdXJyZW50
VmFsdWUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmV3VmFsdWUuZ2V0KCldIGZvcktleTpsYXN0
S2V5XTsKKyAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OltjdXJyZW50VmFsdWUg
c3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmV3VmFsdWUuZ2V0KCldIGZvcktleTpsYXN0S2V5Lmdl
dCgpXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEJyYW5kIG5ldyBoZWFkZXIK
ICAgICAgICAgICAgIGNvbnN0IFVJbnQ4KiBjb2xvbjsKQEAgLTMyNCwxNyArMzI0LDE2IEBAIC0g
KE5TTXV0YWJsZURpY3Rpb25hcnkgKilfd2Via2l0X3BhcnNlUkZDODIySGVhZGVyRmllbGRzCiAg
ICAgICAgICAgICAgICAgLy8gbWFsZm9ybWVkIGhlYWRlcjsgaWdub3JlIGl0IGFuZCBjb250aW51
ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
bGFzdEtleSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bGluZSBsZW5ndGg6Y29s
b24gLSBsaW5lIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddOwotICAgICAgICAg
ICAgW2xhc3RLZXkgYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgbGFzdEtleSA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczpsaW5lIGxlbmd0aDpjb2xvbiAtIGxpbmUg
ZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgbGFzdEtl
eSA9IFtsYXN0S2V5IF93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV07CiAgICAg
ICAgICAgICBmb3IgKGNvbG9uKys7IGNvbG9uICE9IGVvbDsgY29sb24rKykgewogICAgICAgICAg
ICAgICAgIGlmICgqY29sb24gIT0gJyAnICYmICpjb2xvbiAhPSAnXHQnKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y29sb24gbGVuZ3RoOmVvbCAt
IGNvbG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddKTsKLSAgICAgICAgICAg
IGlmIChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpsYXN0
S2V5XSkKKyAgICAgICAgICAgIGlmIChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmllbGRz
IG9iamVjdEZvcktleTpsYXN0S2V5LmdldCgpXSkKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCwgJUAiLCBvbGRWYWx1
ZSwgdmFsdWUuZ2V0KCldKTsKLSAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OnZh
bHVlLmdldCgpIGZvcktleTpsYXN0S2V5XTsKKyAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0
T2JqZWN0OnZhbHVlLmdldCgpIGZvcktleTpsYXN0S2V5LmdldCgpXTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU09iamVj
dEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNPYmplY3RFeHRy
YXMubW0KaW5kZXggNzQ5OGU1YTUzYWIwNzA1OTZiYTkzYzQ2ODg0NTllMjc0M2I2NmExNi4uMmY1
YTk0NjBkMDFjNzEwYjJjMGIzYjdjNGM3ZTdjZGZmZjJjYjg3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0cmFzLm1tCkBAIC0yOSwxMSArMjks
MTIgQEAKICNpbXBvcnQgIldlYk5TT2JqZWN0RXh0cmFzLmgiCiAKICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgV2ViTWFp
blRocmVhZEludm9rZXIgOiBOU1Byb3h5CiB7CiAgICAgaWQgdGFyZ2V0OwotICAgIGlkIGV4Y2Vw
dGlvbjsKKyAgICBSZXRhaW5QdHI8aWQ+IGV4Y2VwdGlvbjsKIH0KIEBlbmQKIApAQCAtNjEsMTUg
KzYyLDE0IEBAIC0gKHZvaWQpZm9yd2FyZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9j
YXRpb24KICAgICBbaW52b2NhdGlvbiBzZXRUYXJnZXQ6dGFyZ2V0XTsKICAgICBbaW52b2NhdGlv
biBwZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKF93ZWJraXRfaW52b2tlQW5k
SGFuZGxlRXhjZXB0aW9uOikgd2l0aE9iamVjdDpzZWxmIHdhaXRVbnRpbERvbmU6WUVTXTsKICAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlkIGV4Y2VwdGlvblRvVGhyb3cgPSBbZXhjZXB0
aW9uIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgZXhjZXB0aW9uID0gbmlsOworICAgICAgICBpZCBl
eGNlcHRpb25Ub1Rocm93ID0gc3RkOjpleGNoYW5nZShleGNlcHRpb24sIG5pbCkuYXV0b3JlbGVh
c2UoKTsKICAgICAgICAgQHRocm93IGV4Y2VwdGlvblRvVGhyb3c7CiAgICAgfSBlbHNlIGlmIChy
ZXR1cm5UeXBlSXNPYmplY3QoaW52b2NhdGlvbikpIHsKICAgICAgICAgLy8gX3dlYmtpdF9pbnZv
a2VBbmRIYW5kbGVFeGNlcHRpb24gcmV0YWluZWQgdGhlIHJldHVybiB2YWx1ZSBvbiB0aGUgbWFp
biB0aHJlYWQuCiAgICAgICAgIC8vIE5vdyBhdXRvcmVsZWFzZSBpdCBvbiB0aGUgY2FsbGluZyB0
aHJlYWQuCiAgICAgICAgIGlkIHJldHVyblZhbHVlOwogICAgICAgICBbaW52b2NhdGlvbiBnZXRS
ZXR1cm5WYWx1ZTomcmV0dXJuVmFsdWVdOwotICAgICAgICBbcmV0dXJuVmFsdWUgYXV0b3JlbGVh
c2VdOworICAgICAgICBhZG9wdE5TKHJldHVyblZhbHVlKS5hdXRvcmVsZWFzZSgpOwogICAgIH0K
IH0KIApAQCAtODEsNyArODEsNyBAQCAtIChOU01ldGhvZFNpZ25hdHVyZSAqKW1ldGhvZFNpZ25h
dHVyZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IKIC0gKHZvaWQpaGFuZGxlRXhjZXB0aW9uOihp
ZClwYXNzZWRFeGNlcHRpb24KIHsKICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7Ci0gICAgZXhjZXB0
aW9uID0gW3Bhc3NlZEV4Y2VwdGlvbiByZXRhaW5dOworICAgIGV4Y2VwdGlvbiA9IHBhc3NlZEV4
Y2VwdGlvbjsKIH0KIAogQGVuZApAQCAtMTExLDEyICsxMTEsMTIgQEAgQGltcGxlbWVudGF0aW9u
IE5TT2JqZWN0IChXZWJOU09iamVjdEV4dHJhcykKIAogKyAoaWQpX3dlYmtpdF9pbnZva2VPbk1h
aW5UaHJlYWQKIHsKLSAgICByZXR1cm4gW1tbV2ViTWFpblRocmVhZEludm9rZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0OnNlbGZdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dl
Yk1haW5UaHJlYWRJbnZva2VyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmXSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoaWQpX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWQKIHsKLSAgICByZXR1
cm4gW1tbV2ViTWFpblRocmVhZEludm9rZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGZdIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYk1haW5UaHJlYWRJbnZva2VyIGFs
bG9jXSBpbml0V2l0aFRhcmdldDpzZWxmXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KaW5kZXggN2U5
ODkyZmMzZDIyZGI1MjkxYmU0YTY2MTI5NDQ1ZGZhYWY4M2M5YS4uODc1MzYyNDJiNzkwMzRlYjkz
NGNiNWY3MmE4OTczNmY3MTFhOTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgLSAoTlNEYXRhICopX3dl
Yl9vcmlnaW5hbERhdGEKIAogLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5n
CiB7Ci0gICAgcmV0dXJuIFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6b3JpZ2luYWxV
UkxEYXRhKHNlbGYpIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
b3JpZ2luYWxVUkxEYXRhKHNlbGYpIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2Rpbmdd
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKV93ZWJfdXNlclZpc2libGVTdHJp
bmcKQEAgLTIwMiw3ICsyMDIsNyBAQCAtKE5TRGF0YSAqKV93ZWJfaG9zdERhdGEKIAogLSAoTlNT
dHJpbmcgKilfd2ViX2hvc3RTdHJpbmcKIHsKLSAgICByZXR1cm4gW1tbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTpbc2VsZiBfd2ViX2hvc3REYXRhXSBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTpbc2VsZiBfd2ViX2hvc3REYXRhXSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3dlYmtpdF9z
dWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1ZTIyMzI4ZmQ4NDU0OGFkMjNm
MWI1OWU2MWRlZmVjNDFiNmNlY2RjLi41N2FhNGE4MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1
ZTUwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMjYx
LDExICsyNjEsMTEgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y2FuY2VsTG9h
ZChOU0Vycm9yICplcnJvcikKIAogTlNFcnJvciAqSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06
OnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtb
W05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJ
bkNhbmNlbGxlZENvbm5lY3Rpb24KKyAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2Nd
IF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5l
Y3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50
VVJMOm1fcmVzcG9uc2VVUkwgPyBtX3Jlc3BvbnNlVVJMLmdldCgpIDogbV9yZXF1ZXN0VVJMLmdl
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVS
TDpuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5O
YW1lOltbbV9pbnN0YW5jZS0+cGx1Z2luVmlldygpIHBsdWdpblBhY2thZ2VdIHBsdWdpbkluZm9d
Lm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVU
eXBlOm1fbWltZVR5cGUuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOm1fbWltZVR5cGUuZ2V0KCldKS5hdXRv
cmVsZWFzZSgpOwogfQogCiBOU0Vycm9yICpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZXJy
b3JGb3JSZWFzb24oTlBSZWFzb24gcmVhc29uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KaW5kZXggZmNl
M2NmOGQyZDhkMDY3ZTZmMTM1OTExNDgyN2I0ZTZlZjIzODdmZi4uYmI4YmMyYTUyZjRhZWE5ZmNi
OTU4OTA3OGQxYmFhMWU5ODUwYjUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCkBAIC02OSwxNyArNjksMTcg
QEAgKyAodm9pZClpbml0aWFsaXplCiArIChXZWJCYXNlUGx1Z2luUGFja2FnZSAqKXBsdWdpbldp
dGhQYXRoOihOU1N0cmluZyAqKXBsdWdpblBhdGgKIHsKICAgICAKLSAgICBXZWJCYXNlUGx1Z2lu
UGFja2FnZSAqcGx1Z2luUGFja2FnZSA9IFtbV2ViUGx1Z2luUGFja2FnZSBhbGxvY10gaW5pdFdp
dGhQYXRoOnBsdWdpblBhdGhdOworICAgIGF1dG8gcGx1Z2luUGFja2FnZSA9IGFkb3B0TlMoW1tX
ZWJQbHVnaW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2luUGF0aF0pOwogCiAgICAg
aWYgKCFwbHVnaW5QYWNrYWdlKSB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgICAgIHBsdWdpblBhY2thZ2UgPSBbW1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBhbGxvY10g
aW5pdFdpdGhQYXRoOnBsdWdpblBhdGhdOworICAgICAgICBwbHVnaW5QYWNrYWdlID0gYWRvcHRO
UyhbW1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBhbGxvY10gaW5pdFdpdGhQYXRoOnBsdWdpblBh
dGhdKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBuaWw7CiAjZW5kaWYKICAgICB9CiAKLSAgICBy
ZXR1cm4gW3BsdWdpblBhY2thZ2UgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBwbHVnaW5QYWNr
YWdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoUGF0aDooTlNTdHJpbmcgKilw
bHVnaW5QYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCAwYjMyNjcyNzIyZjhjOTAyNDU3ZmI0
NTNkMjIxNjIxYTZiYTFmMjNmLi41NTYzZDA5YmQ1NmMwYjI2ZTZkOTFkMDdmY2Q3NThkZjE4MGYw
YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTEwNiwxMSArMTA2LDExIEBAIE5QUmVhc29u
IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpyZWFzb25Gb3JFcnJvcihOU0Vycm9yICplcnJvcikK
IAogTlNFcnJvciAqV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OnBsdWdpbkNhbmNlbGxlZENvbm5l
Y3Rpb25FcnJvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtbW05TRXJyb3IgYWxsb2NdIF9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24K
KyAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9y
Q29kZTpXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VVJMOm1fcmVzcG9uc2VVUkwgPyBt
X3Jlc3BvbnNlVVJMLmdldCgpIDogKE5TVVJMICopbV9yZXF1ZXN0VVJMCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTDpuaWwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOltbbV9wbHVnaW5WaWV3
LmdldCgpIHBsdWdpblBhY2thZ2VdIHBsdWdpbkluZm9dLm5hbWUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKVN0cmluZzo6
ZnJvbVVURjgobV9taW1lVHlwZS5kYXRhKCksIG1fbWltZVR5cGUubGVuZ3RoKCkpXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1F
VHlwZTooTlNTdHJpbmcgKilTdHJpbmc6OmZyb21VVEY4KG1fbWltZVR5cGUuZGF0YSgpLCBtX21p
bWVUeXBlLmxlbmd0aCgpKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIE5TRXJyb3IgKldlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtOjplcnJvckZvclJlYXNvbihOUFJlYXNvbiByZWFzb24pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IDA2ODdiYmJiZTgwZjViN2Q4N2IyNzhmOTE4MzkwNTBjMDVlMGQ3
ZDUuLmYwZDk5OGMwOTYwNDhkOWFmZDEzNmVkMjIxYWQ1MWU2MTdlMmIxYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCkBAIC0zNTUsNyArMzU1LDcgQEAgLSAoQk9PTClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50
IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0CiAgICAgfQogCiAgICAgLy8gVGVtcG9y
YXJpbHkgcmV0YWluIHNlbGYgaW4gY2FzZSB0aGUgcGx1Zy1pbiB2aWV3IGlzIHJlbGVhc2VkIHdo
aWxlIHNlbmRpbmcgYW4gZXZlbnQuIAotICAgIFtbc2VsZiByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsKIAogICAgIEJPT0wgYWNjZXB0ZWRF
dmVudDsKICAgICBbc2VsZiB3aWxsQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNr
Lm1tCmluZGV4IDc0MDg4OGZkOTY4MjFhMzQyOWM0Nzk0MTE3NWEzNzAwZDUwNzc4NjMuLjFkOThi
YTBkZDA2MjJkOWMxMGU2YjI3NmY4NTFjNGQ0ZjdjNjE1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5t
bQpAQCAtNzIsNyArNzIsNyBAQCAtIChpZClpbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgdGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldCByZXN1bHRPYgogCiArIChpZCljaGVj
a1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHRhcmdldDooTlNTdHJpbmcgKil0
YXJnZXQgcmVzdWx0T2JqZWN0OihpZClvYmogc2VsZWN0b3I6KFNFTClzZWxlY3RvciBjb250cm9s
bGVyOihpZCA8V2ViUGx1Z2luQ29udGFpbmVyQ2hlY2tDb250cm9sbGVyPiljb250cm9sbGVyIGNv
bnRleHRJbmZvOihpZCljb250ZXh0SW5mbyAvKm9wdGlvbmFsKi8KIHsKLSAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgdGFyZ2V0OnRhcmdldCByZXN1bHRP
YmplY3Q6b2JqIHNlbGVjdG9yOnNlbGVjdG9yIGNvbnRyb2xsZXI6Y29udHJvbGxlciBjb250ZXh0
SW5mbzpjb250ZXh0SW5mb10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2Vs
ZiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgdGFyZ2V0OnRhcmdldCByZXN1bHRPYmpl
Y3Q6b2JqIHNlbGVjdG9yOnNlbGVjdG9yIGNvbnRyb2xsZXI6Y29udHJvbGxlciBjb250ZXh0SW5m
bzpjb250ZXh0SW5mb10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFz
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2Uu
bW0KaW5kZXggNmUyODcyZDJjM2MzNzA1YjM0MTU3ZTgzMjgzMjVmMDg0MWVjNzNjNS4uYjU5Y2U0
YmNkZjhhNTM3MWMyMWY2ZjBmMzM4MWVlZjNlMGQ3ZmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCkBAIC00MTksOSAr
NDE5LDkgQEAgLSAoTlNBcnJheSAqKV9wbHVnSW5QYXRocwogICAgICAgICAvLyBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgK3NldEFkZGl0aW9uYWxX
ZWJQbHVnSW5QYXRoczogU1BJLAogICAgICAgICAvLyB3aGljaCBzaW1wbHkgc2F2ZWQgYSBjb3B5
IG9mIHRoZSBhZGRpdGlvbmFsIHBhdGhzIGFuZCBkaWQgbm90IGNhdXNlIHRoZSBwbHVnaW4gREIg
dG8gCiAgICAgICAgIC8vIHJlZnJlc2guICBTZWUgUmFkYXJzIDQ2MDg0ODcgYW5kIDQ2MDkwNDcu
Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICptb2RpZmllZFBsdWdJblBhdGhzID0gW1twbHVnSW5Q
YXRocyBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIG1vZGlmaWVkUGx1
Z0luUGF0aHMgPSBhZG9wdE5TKFtwbHVnSW5QYXRocyBtdXRhYmxlQ29weV0pOwogICAgICAgICBb
bW9kaWZpZWRQbHVnSW5QYXRocyBhZGRPYmplY3RzRnJvbUFycmF5OmFkZGl0aW9uYWxXZWJQbHVn
SW5QYXRocygpLmdldCgpXTsKLSAgICAgICAgcmV0dXJuIG1vZGlmaWVkUGx1Z0luUGF0aHM7Cisg
ICAgICAgIHJldHVybiBtb2RpZmllZFBsdWdJblBhdGhzLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
ICAgIHJldHVybiBwbHVnSW5QYXRoczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBhYzdkMTY0
OGNiODI5NGI3ODQ2Y2FmMDUyZDU3NDkyYjRlMjJhNGFmLi45MWFmYzVkNzQ0OTE0MzRmNGUxMjNm
MThhNTA0MTczODliMzRiM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0xNjQsNyArMTY0LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKICsgKFdlYlVuZG9TdGVwICopc3RlcFdpdGhVbmRvU3RlcDoo
UmVmPFVuZG9TdGVwPiYmKXN0ZXAKIHsKLSAgICByZXR1cm4gW1tbV2ViVW5kb1N0ZXAgYWxsb2Nd
IGluaXRXaXRoVW5kb1N0ZXA6V1RGTW92ZShzdGVwKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtbV2ViVW5kb1N0ZXAgYWxsb2NdIGluaXRXaXRoVW5kb1N0ZXA6V1RGTW92ZShz
dGVwKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFVuZG9TdGVwJilzdGVwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDJhYThjMzlhNDAzOTZiZmMxODEwNDQzNjlhM2M2MjBjMzRl
MDgwNDAuLmNkOGMwN2YxMWE4Y2FhZWQzMWNmNWVlZTA4MjQ0MzdhYTUyNGEwNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG8KICAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRlcikgewogICAgICAgICAvLyBUaGUg
cmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsIG9yIHRoZSBjb252ZXJzaW9uIGlzIGJl
aW5nIGF0dG1wdGVkIHdoZW4gbm90IGNhbGxpbmcgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSgpLgogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgICAgICBXZWJEb3dubG9hZCAqd2ViRG93bmxvYWQgPSBbW1dlYkRvd25sb2FkIGFsbG9j
XSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlV
cGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERl
bGVnYXRlXV07CisgICAgICAgIGF1dG8gd2ViRG93bmxvYWQgPSBhZG9wdE5TKFtbV2ViRG93bmxv
YWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpIGRlbGVnYXRlOlt3ZWJWaWV3IGRv
d25sb2FkRGVsZWdhdGVdXSk7CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAotICAgICAgICBbd2ViRG93bmxvYWQgYXV0b3JlbGVhc2VdOworICAgICAgICB3ZWJEb3du
bG9hZC5hdXRvcmVsZWFzZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjgsMTAg
KzkyOCwxMCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICptYWtlRm9ybUZpZWxkVmFsdWVzRGljdGlv
bmFyeShXZWJDb3JlOjpGb3JtU3RhdGUmIGZvcm1TdGF0ZQogewogICAgIGF1dG8mIHRleHRGaWVs
ZFZhbHVlcyA9IGZvcm1TdGF0ZS50ZXh0RmllbGRWYWx1ZXMoKTsKICAgICBzaXplX3Qgc2l6ZSA9
IHRleHRGaWVsZFZhbHVlcy5zaXplKCk7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlv
bmFyeSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXpl
XTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSk7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHRl
eHRGaWVsZFZhbHVlcykKICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnZhbHVlLnNlY29u
ZCBmb3JLZXk6dmFsdWUuZmlyc3RdOwotICAgIHJldHVybiBbZGljdGlvbmFyeSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGRpY3Rpb25hcnkuYXV0b3JlbGVhc2UoKTsKIH0KIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFJlZjxXZWJDb3Jl
OjpGb3JtU3RhdGU+JiYgZm9ybVN0YXRlKQpAQCAtMTE2OSwxMiArMTE2OSwxMSBAQCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJy
b3IoY29uc3QgV2ViQ29yZQogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewotICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vy
cm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JQbHVnSW5XaWxs
SGFuZGxlTG9hZAorICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRo
UGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VVJMOnJl
c3BvbnNlLnVybCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGx1Z2luUGFnZVVSTDpuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOm5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6cmVzcG9uc2UubWltZVR5
cGUoKV07Ci0gICAgcmV0dXJuIFtlcnJvciBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpyZXNwb25zZS5t
aW1lVHlwZSgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGNv
bnN0CkBAIC0xOTQwLDcgKzE5MzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgICAg
ICAgICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3KG1fd2ViRnJhbWUuZ2V0KCksIChXZWJQbHVnaW5Q
YWNrYWdlICopcGx1Z2luUGFja2FnZSwgYXR0cmlidXRlS2V5cy5nZXQoKSwgY3JlYXRlTlNBcnJh
eShwYXJhbVZhbHVlcykuZ2V0KCksIGJhc2VVUkwsIGtpdCgmZWxlbWVudCksIGxvYWRNYW51YWxs
eSk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgICAgICBlbHNlIGlm
IChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNsYXNzOltXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2Ug
Y2xhc3NdXSkgewotICAgICAgICAgICAgICAgIFdlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgKnBs
dWdpblZpZXcgPSBbW1tORVRTQ0FQRV9QTFVHSU5fVklFVyBhbGxvY10KKyAgICAgICAgICAgICAg
ICBhdXRvIHBsdWdpblZpZXcgPSBhZG9wdE5TKFtbTkVUU0NBUEVfUExVR0lOX1ZJRVcgYWxsb2Nd
CiAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgIHBsdWdpblBhY2th
Z2U6KFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSAqKXBsdWdpblBhY2thZ2UKICAgICAgICAgICAg
ICAgICAgICAgVVJMOnBsdWdpblVSTApAQCAtMTk0OSw5ICsxOTQ4LDkgQEAgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXoKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlS2V5czphdHRyaWJ1dGVL
ZXlzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlczpjcmVhdGVOU0Fy
cmF5KHBhcmFtVmFsdWVzKS5nZXQoKQogICAgICAgICAgICAgICAgICAgICBsb2FkTWFudWFsbHk6
bG9hZE1hbnVhbGx5Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6JmVsZW1lbnRdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudDomZWxlbWVudF0pOwogCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXRzY2FwZVBsdWdpbldpZGdldChwbHVn
aW5WaWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXRzY2FwZVBs
dWdpbldpZGdldChwbHVnaW5WaWV3LmF1dG9yZWxlYXNlKCkpKTsKICAgICAgICAgICAgIH0KICNl
bmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggYjg5ODcxODM1OTMx
NjM1ZTU1YTNjZGM3NDQ4NWRjOTk2M2ZiMWFkMi4uMzU5MTVjNjY5MzYwZTg2NWQxMzVkYmQ3MTkx
Y2U3N2IyYTExZGQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtNzk4LDcgKzc5OCw3
IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBmcmFtZTooV2ViRnJhbWUgKilm
cmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFGCiAKIC0gKE5TQXJyYXkgKil3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKill
bGVtZW50IGRlZmF1bHRNZW51SXRlbXM6KE5TQXJyYXkgKilkZWZhdWx0TWVudUl0ZW1zCiB7Ci0g
ICAgTlNNdXRhYmxlQXJyYXkgKm1lbnVJdGVtcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdOworICAgIGF1dG8gbWVudUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAKICAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gZGVmYXVsdE1lbnVJdGVt
cykgewogICAgICAgICBzd2l0Y2ggKGl0ZW0udGFnKSB7CkBAIC04MTUsNyArODE1LDcgQEAgLSAo
TlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY29udGV4dE1lbnVJdGVtc0ZvckVs
ZW1lbnQ6KE5TRGljdGlvbmFyeQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFttZW51
SXRlbXMgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBtZW51SXRlbXMuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCA4NWFmMzMzMWU2YjJh
OTBhZGVkOGRhOWE5NTNjMWYwYjY2YzE5OTJiLi4yZDQxNDFlZGIyMTk2MTk2MTc4Mjk3NjgwMWUw
YWYxMzMzNjgwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtNDgsNyArNDgsNyBAQCAr
IChpZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21EYXRhYmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICop
ZGF0YWJhc2VJZGVudGlmaWVyCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICByZXR1cm4gW1tbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNv
cmVTZWN1cml0eU9yaWdpbjpvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucHRyKCldIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnB0cigp
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KaW5kZXggMWZm
MmY1NDYyZDY1MjMzNjA4ZDZhYWE1MTUyZjQ2ZGIxZmEwYjY3NS4uMjJkNjc4YTFmMWI2ZTE5MjI5
OWMyMDRmMmQ2ZTZjYzY1OWM3OGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViQXJjaGl2ZS5tbQpAQCAtMzM1LDcgKzMzNSw3IEBAIC0gKE5TRGF0YSAqKWRhdGEK
ICNlbmRpZgogICAgIExPRyhUaW1pbmcsICJTZXJpYWxpemluZyB3ZWIgYXJjaGl2ZSB0byByYXcg
Q0ZQcm9wZXJ0eUxpc3QgZGF0YSB0b29rICVmIHNlY29uZHMiLCBkdXJhdGlvbik7CiAgICAgICAg
IAotICAgIHJldHVybiBbWyhOU0RhdGEgKilkYXRhLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiByZXRhaW5QdHIoKE5TRGF0YSAqKWRhdGEuZ2V0KCkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQppbmRleCBjMTQ2ZjE2MDVmMzgzOGUyODk1YWM5MDMwYzNiZmQ4ZTkxNDhk
ZmVkLi4wYWM2MGU5OTQzNmFlNzdlZjc1MzBiNjBiZjJlNWNiODBlNThhMjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0xNzgs
MTUgKzE3OCwxNSBAQCAtICh2b2lkKV9hZGRTdWJmcmFtZUFyY2hpdmVzOihOU0FycmF5ICopc3Vi
ZnJhbWVBcmNoaXZlcwogLSAoTlNGaWxlV3JhcHBlciAqKV9maWxlV3JhcHBlckZvclVSTDooTlNV
UkwgKilVUkwKIHsKICAgICBpZiAoW1VSTCBpc0ZpbGVVUkxdKQotICAgICAgICByZXR1cm4gW1tb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W1VSTCBVUkxCeVJlc29sdmluZ1N5bWxp
bmtzSW5QYXRoXSBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl0gYXV0b3JlbGVhc2VdOworICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltVUkwg
VVJMQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aF0gb3B0aW9uczowIGVycm9yOm51bGxwdHJdKS5h
dXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBbc2VsZiBzdWJyZXNvdXJj
ZUZvclVSTDpVUkxdKQogICAgICAgICByZXR1cm4gW3Jlc291cmNlIF9maWxlV3JhcHBlclJlcHJl
c2VudGF0aW9uXTsKIAogICAgIGlmIChhdXRvIGNhY2hlZFJlc3BvbnNlID0gW1tzZWxmIF93ZWJW
aWV3XSBfY2FjaGVkUmVzcG9uc2VGb3JVUkw6VVJMXSkgewotICAgICAgICBOU0ZpbGVXcmFwcGVy
ICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRhXV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRhXV0pOwogICAgICAgICBbd3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpbW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBzdWdnZXN0ZWRG
aWxlbmFtZV1dOwotICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICAgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG5pbDsKQEAgLTUzMiw3
ICs1MzIsNyBAQCAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2ZQogICAgIGlmICghdG9Qcml2YXRl
KF9wcml2YXRlKS0+bG9hZGVyLT5pc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgICAgICAKLSAgICByZXR1cm4gW1tbV2ViQXJjaGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxl
Z2FjeVdlYkFyY2hpdmU6V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlKFtz
ZWxmIHdlYkZyYW1lXSkpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJB
cmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpXZWJDb3JlOjpMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoW3NlbGYgd2ViRnJhbWVdKSldKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZQpAQCAtNTQwLDcgKzU0MCw3
IEBAIC0gKFdlYlJlc291cmNlICopbWFpblJlc291cmNlCiAgICAgYXV0byBjb3JlUmVzb3VyY2Ug
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZSgpOwogICAgIGlmICgh
Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1tXZWJSZXNv
dXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOmNvcmVSZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBh
bGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOmNvcmVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgp
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAqKXN1YnJlc291cmNlcwpAQCAtNTUz
LDcgKzU1Myw3IEBAIC0gKE5TQXJyYXkgKilzdWJyZXNvdXJjZXMKIC0gKFdlYlJlc291cmNlICop
c3VicmVzb3VyY2VGb3JVUkw6KE5TVVJMICopVVJMCiB7CiAgICAgYXV0byBzdWJyZXNvdXJjZSA9
IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c3VicmVzb3VyY2UoVVJMKTsKLSAgICByZXR1
cm4gc3VicmVzb3VyY2UgPyBbW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291
cmNlOnN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCldIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAg
ICByZXR1cm4gc3VicmVzb3VyY2UgPyBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0
V2l0aENvcmVSZXNvdXJjZTpzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpXSkuYXV0b3JlbGVh
c2UoKSA6IG5pbDsKIH0KIAogLSAodm9pZClhZGRTdWJyZXNvdXJjZTooV2ViUmVzb3VyY2UgKilz
dWJyZXNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggMjc2
ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1OWE3ODU4MzUwYS4uMDMwNDI1MDc3NTU2NWU0ZDNl
Nzg3OGJmOTE0MzA1MDZjMjY3ZmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsLmgiCiAKICNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uSW50
ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTYyLDcgKzYzLDcgQEAgLSAodm9pZClzdG9wVXBkYXRpbmcKIAogLSAoV2Vi
RGV2aWNlT3JpZW50YXRpb24qKWxhc3RPcmllbnRhdGlvbgogewotICAgIHJldHVybiBbW1tXZWJE
ZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9j
b3JlLT5sYXN0T3JpZW50YXRpb24oKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0
aW9uOm1fY29yZS0+bGFzdE9yaWVudGF0aW9uKCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAzYzRl
NGJiMzk2MDY1ODE3NDg0MzcxYzMwZTQzYzc1YzY2NTI2NTM5Li5iOWJlN2Q5OTA1ZGFmNTBlZTlm
ZDUzMDhlOTdmZjNjOWRlY2E5ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTIzMzMsNyArMjMzMyw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKWVs
ZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVx
dWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVl
c3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQgfTsKLSAgICByZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmhp
dFRlc3RSZXN1bHRBdFBvaW50KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgaGl0VHlwZSldIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRU
ZXN0UmVzdWx0QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIGhpdFR5cGUpXSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilfdW5yZWFjaGFibGVVUkwKQEAgLTI1NjcsNyAr
MjU2Nyw3IEBAIC0gKFdlYkZyYW1lICopcGFyZW50RnJhbWUKICAgICBhdXRvIGNvcmVGcmFtZSA9
IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmVGcmFtZS0+dHJlZSgpLnBhcmVudCgpKSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKGtpdChjb3JlRnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXkgKiljaGlsZEZy
YW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQppbmRleCA2NGRkNzJlYmFiOThlZWIxYTJmMDZiMjRhNmNmOWVlNWMxNDFiYjJjLi5jY2M3M2Iz
NDQyMzI1ZDkwNGQxNDM2ZTUxNGI5ZTNkMzZiMGEzNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIC0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgW3Njcm9sbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07CiAjZWxzZQotICAgIFtzY3JvbGxW
aWV3IHNldENvbnRlbnRWaWV3OltbW1dlYkNsaXBWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltz
Y3JvbGxWaWV3IGJvdW5kc11dIGF1dG9yZWxlYXNlXV07CisgICAgW3Njcm9sbFZpZXcgc2V0Q29u
dGVudFZpZXc6YWRvcHROUyhbW1dlYkNsaXBWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3Jv
bGxWaWV3IGJvdW5kc11dKS5hdXRvcmVsZWFzZSgpXTsKICNlbmRpZgogICAgIFtzY3JvbGxWaWV3
IHNldERyYXdzQmFja2dyb3VuZDpOT107CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzVmVydGljYWxT
Y3JvbGxlcjpOT107CkBAIC0xMjI5LDcgKzEyMjksNyBAQCAtICh2b2lkKV9zZXRDdXN0b21TY3Jv
bGxWaWV3Q2xhc3M6KENsYXNzKWN1c3RvbUNsYXNzCiAgICAgYXV0byBkb2N1bWVudFZpZXcgPSBy
ZXRhaW5QdHIoW3NlbGYgZG9jdW1lbnRWaWV3XSk7CiAKICAgICBSZXRhaW5QdHI8V2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3PiBzY3JvbGxWaWV3ICA9IGFkb3B0TlMoW1tjdXN0b21DbGFzcyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpbb2xkU2Nyb2xsVmlldyBmcmFtZV1dKTsKLSAgICBbc2Nyb2xsVmll
dyBzZXRDb250ZW50VmlldzpbW1tXZWJDbGlwVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2Ny
b2xsVmlldyBib3VuZHNdXSBhdXRvcmVsZWFzZV1dOworICAgIFtzY3JvbGxWaWV3IHNldENvbnRl
bnRWaWV3OmFkb3B0TlMoW1tXZWJDbGlwVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2Nyb2xs
VmlldyBib3VuZHNdXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NC
YWNrZ3JvdW5kOltvbGRTY3JvbGxWaWV3IGRyYXdzQmFja2dyb3VuZF1dOwogICAgIFtzY3JvbGxW
aWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6W29sZFNjcm9sbFZpZXcgaGFzVmVydGljYWxTY3Jv
bGxlcl1dOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6b250YWxTY3JvbGxlcjpbb2xkU2Ny
b2xsVmlldyBoYXNIb3Jpem9udGFsU2Nyb2xsZXJdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggNDFk
NzcxODg5MGVjZWQ1NjdlZmU3Y2FjZDgxNjg5M2Q0M2YyOWJmNy4uNGU2N2NkYWRjMGUyNGM4ZWNj
ODA1MjAxZDllYTQ2ZTcyNGE3YmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMSw4ICsyMzEs
NyBAQCAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rp
c3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAogICAgICAgICBTaGFyZWRCdWZmZXIg
KnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRl
cl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7Ci0gICAgICAgIE5TU3RyaW5nICpyZXN1bHQgPSBbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNo
aXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOwotICAgICAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNo
aXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW19wcml2YXRlLT5kYXRhU291cmNlIHdlYkZyYW1l
XSk7CkBAIC0yNzAsNyArMjY5LDcgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRl
ZFRleHQKIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmdGcm9tOihET01O
b2RlICopc3RhcnROb2RlIHN0YXJ0T2Zmc2V0OihpbnQpc3RhcnRPZmZzZXQgdG86KERPTU5vZGUg
KillbmROb2RlIGVuZE9mZnNldDooaW50KWVuZE9mZnNldAogewogICAgIGlmICghc3RhcnROb2Rl
IHx8ICFlbmROb2RlKQotICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICBhdXRvIHJhbmdlID0g
U2ltcGxlUmFuZ2UgeyB7ICpjb3JlKHN0YXJ0Tm9kZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydE9mZnNldCkgfSwgeyAqY29yZShlbmROb2RlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVu
ZE9mZnNldCkgfSB9OwogICAgIHJldHVybiBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhyYW5nZSku
c3RyaW5nLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA0NWFlM2QwY2E0NmJhZWFlM2Y1MTIxNzQ2NzY1YjJm
ZTVlOGEwNmFjLi4yMDU0YjY2ZDIwMWFjN2ZiNDhlNGM4ODg1NjA2YjIyNzNlNDlhZmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEx
NDMsNyArMTE0Myw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVu
dFdpdGhQYXRoczooTlNBcnJheSAqKXBhdGhzCiAKICsgKE5TQXJyYXkgKilfZXhjbHVkZWRFbGVt
ZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkg
KmVsZW1lbnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgorICAg
IGF1dG8gZWxlbWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czoKICAgICAgICAgLy8gT21pdCBzdHlsZSBzaW5jZSB3ZSB3YW50IHN0eWxlIHRvIGJl
IGlubGluZSBzbyB0aGUgZnJhZ21lbnQgY2FuIGJlIGVhc2lseSBpbnNlcnRlZC4KICAgICAgICAg
QCJzdHlsZSIsCiAgICAgICAgIC8vIE9taXQgeG1sIHNvIHRoZSByZXN1bHQgaXMgbm90IFhIVE1M
LgpAQCAtMTE1NywxNCArMTE1NywxNCBAQCArIChOU0FycmF5ICopX2V4Y2x1ZGVkRWxlbWVudHNG
b3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbgogICAgICAgICAvLyBPbWl0IG9iamVjdCBzbyBu
byBmaWxlIGF0dGFjaG1lbnRzIGFyZSBwYXJ0IG9mIHRoZSBmcmFnbWVudC4KICAgICAgICAgQCJv
YmplY3QiLAogI2VuZGlmCi0gICAgICAgIG5pbF07CisgICAgICAgIG5pbF0pOwogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBpZiAoIVdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpCiAg
ICAgICAgIFtlbGVtZW50cyBhZGRPYmplY3Q6QCJvYmplY3QiXTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIFtlbGVtZW50cyBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGVsZW1lbnRzLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZy
b21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGluQ29udGV4dDooRE9NUmFu
Z2UgKiljb250ZXh0IGFsbG93UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0CkBAIC0xMjIx
LDcgKzEyMjEsNyBAQCAtIChOU1N0cmluZyAqKV9wbGFpblRleHRGcm9tUGFzdGVib2FyZDooTlNQ
YXN0ZWJvYXJkICopcGFzdGVib2FyZAogICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5nID09IG5pbCAm
JiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUo
KV0pCiAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpXZWJDb3JlOjps
ZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpXSBkb2N1bWVudEF0dHJpYnV0ZXM6TlVMTF0pOwogICAg
IGlmIChhdHRyaWJ1dGVkU3RyaW5nKQotICAgICAgICByZXR1cm4gW1tbYXR0cmlidXRlZFN0cmlu
ZyBzdHJpbmddIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1th
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10gY29weV0pLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAo
W3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRU
eXBlKCldKSB7CiAgICAgICAgIGlmIChOU1N0cmluZyAqc3RyaW5nID0gW1twYXN0ZWJvYXJkIHBy
b3BlcnR5TGlzdEZvclR5cGU6V2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUo
KV0gY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiXG4iXSkKQEAgLTE4ODAsNyArMTg4MCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtIChOU1N0cmluZyAqKXZp
ZXc6KE5TVmlldyAqKXZpZXcgc3RyaW5nRm9yVG9vbFRpcDooTlNUb29sVGlwVGFnKXRhZyBwb2lu
dDooTlNQb2ludClwb2ludCB1c2VyRGF0YToodm9pZCAqKWRhdGEKIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIHJldHVybiBbW19wcml2YXRlLT50b29sVGlwIGNv
cHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbX3ByaXZhdGUtPnRvb2xUaXAg
Y29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRP
ZkNsaWNrT3JEcmFnKE5TRXZlbnQgKmV2ZW50KQpAQCAtMzM4Myw3ICszMzgzLDcgQEAgLSAodm9p
ZClyaWdodE1vdXNlVXA6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2Ug
dGhhdCBpZiB3ZSBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCB0aGUgZXZlbnQgd2lsbCBiZSByZWxl
YXNlZC4KICAgICAvLyBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZyBwcmV2ZW50cyB0
aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gbGF0ZXIgaGVyZSBvcgogICAgIC8vIGluc2lkZSBB
cHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFp
blB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFtzdXBlciByaWdodE1vdXNlVXA6ZXZl
bnRdOwogCkBAIC0zNzIwLDcgKzM3MjAsNyBAQCAtIChOU01lbnUgKiltZW51Rm9yRXZlbnQ6KE5T
RXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCBpZiB3ZSBydW4gYSBu
ZXN0ZWQgZXZlbnQgbG9vcCB0aGUgZXZlbnQgd2lsbCBiZSByZWxlYXNlZC4KICAgICAvLyBSZXRh
aW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZyBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBh
IHByb2JsZW0gbGF0ZXIgaGVyZSBvcgogICAgIC8vIGluc2lkZSBBcHBLaXQgY29kZS4KLSAgICBb
W2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3Jl
bGVhc2UoKTsKIAogICAgIFtfcHJpdmF0ZS0+Y29tcGxldGlvbkNvbnRyb2xsZXIgZW5kUmV2ZXJ0
aW5nQ2hhbmdlOk5PIG1vdmVMZWZ0Ok5PXTsKIApAQCAtNDA4MSw3ICs0MDgxLDcgQEAgLSAodm9p
ZClzY3JvbGxXaGVlbDooV2ViRXZlbnQgKilldmVudAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2
ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVs
ZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNp
bmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCiAgICAgLy8gRklYTUU6
IFdoeSBub3QgZG8gdGhpcyBvbiBpT1MgdG9vPwotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogI2VuZGlmCiAKICAg
ICBhdXRvKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CkBAIC00MTIxLDcgKzQxMjEsNyBA
QCAtIChCT09MKWFjY2VwdHNGaXJzdE1vdXNlOihOU0V2ZW50ICopZXZlbnQKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVz
dGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJl
bGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAg
Ly8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVt
IGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBOU1Zp
ZXcgKmhpdFZpZXcgPSBbc2VsZiBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsKICAgICBXZWJIVE1M
VmlldyAqaGl0SFRNTFZpZXcgPSBbaGl0VmlldyBpc0tpbmRPZkNsYXNzOltzZWxmIGNsYXNzXV0g
PyAoV2ViSFRNTFZpZXcgKiloaXRWaWV3IDogbmlsOwpAQCAtNDE1MCw3ICs0MTUwLDcgQEAgLSAo
Qk9PTClzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudAog
ICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2ls
bCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZl
bnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxl
YXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2lu
ZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJl
dGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsK
IAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtzZWxmIF9oaXRWaWV3Rm9yRXZlbnQ6ZXZlbnRdOwog
ICAgIFdlYkhUTUxWaWV3ICpoaXRIVE1MVmlldyA9IFtoaXRWaWV3IGlzS2luZE9mQ2xhc3M6W3Nl
bGYgY2xhc3NdXSA/IChXZWJIVE1MVmlldyAqKWhpdFZpZXcgOiBuaWw7CkBAIC00MTgxLDcgKzQx
ODEsNyBAQCAtICh2b2lkKW1vdXNlRG93bjooV2ViRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJl
J3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0
ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVs
ZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAv
LyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0g
aW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgogCiAg
ICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiBwcm90ZWN0b3IgPSBzZWxmOwpAQCAtNDI4Nyw3ICs0
Mjg3LDcgQEAgLSAodm9pZCltb3VzZURyYWdnZWQ6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRo
ZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBu
ZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQg
cmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAg
ICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2Js
ZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNJbnB1dE1hbmFnZXIgKmN1
cnJlbnRJbnB1dE1hbmFnZXIgPSBbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl07
CkBAIC00MzYzLDE0ICs0MzYzLDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0JFR0lOCiAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5h
dGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogewotICAgIE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBuaWw7CisgICAgUmV0
YWluUHRyPE5TRmlsZVdyYXBwZXI+IHdyYXBwZXI7CiAgICAgTlNVUkwgKmRyYWdnaW5nRWxlbWVu
dFVSTCA9IG5pbDsKICAgICAKICAgICBpZiAoYXV0byB0aWZmUmVzb3VyY2UgPSBfcHJpdmF0ZS0+
cHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9
IHRpZmZSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewogICAgICAgICAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSB0aWZmUmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgp
OwogICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0gW3Jlc3BvbnNlIFVSTF07Ci0gICAg
ICAgICAgICB3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgICAgIE5TU3RyaW5nKiBmaWxlbmFtZSA9IFtyZXNwb25zZSBzdWdnZXN0ZWRGaWxl
bmFtZV07CiAgICAgICAgICAgICBOU1N0cmluZyogdHJ1ZUV4dGVuc2lvbih0aWZmUmVzb3VyY2Ut
PmltYWdlKCktPmZpbGVuYW1lRXh0ZW5zaW9uKCkpOwogICAgICAgICAgICAgaWYgKCFtYXRjaGVz
RXh0ZW5zaW9uT3JFcXVpdmFsZW50KGZpbGVuYW1lLCB0cnVlRXh0ZW5zaW9uKSkKQEAgLTQ0NTgs
NyArNDQ1OCw3IEBAIC0gKHZvaWQpbW91c2VVcDooV2ViRXZlbnQgKilldmVudAogICAgIC8vIFRo
ZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBu
ZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQg
cmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAg
ICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2Js
ZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgog
CiAgICAgW3NlbGYgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07CkBAIC00OTM5LDcgKzQ5MzksNyBA
QCAtICh2b2lkKWtleURvd246KFdlYkV2ZW50ICopZXZlbnQKICAgICAvLyBUaGVyZSdzIGEgY2hh
bmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50
IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhl
IG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1
cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBX
ZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIAogICAgIFJldGFp
blB0cjxXZWJIVE1MVmlldz4gc2VsZlByb3RlY3RvciA9IHNlbGY7CkBAIC00OTgyLDcgKzQ5ODIs
NyBAQCAtICh2b2lkKWtleVVwOihXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNo
YW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVu
dCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRo
ZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBj
dXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUg
V2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogI2VuZGlmCiAKICAgICBCT09M
IGV2ZW50V2FzU2VudFRvV2ViQ29yZSA9IChfcHJpdmF0ZS0+a2V5RG93bkV2ZW50ID09IGV2ZW50
KTsKQEAgLTUwMDIsNyArNTAwMiw3IEBAIC0gKHZvaWQpZmxhZ3NDaGFuZ2VkOihOU0V2ZW50ICop
ZXZlbnQKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2
ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEg
bmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBh
dXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9t
IGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tl
dmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxl
YXNlKCk7CiAKICAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHNlbGZQcm90ZWN0b3IgPSBzZWxm
OwogCkBAIC01MDk3LDcgKzUwOTcsNyBAQCAtIChOU0RpY3Rpb25hcnkgKilfZm9udEF0dHJpYnV0
ZXNGcm9tRm9udFBhc3RlYm9hcmQKICAgICBpZiAoZGF0YSA9PSBuaWwgfHwgW2RhdGEgbGVuZ3Ro
XSA9PSAwKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIC8vIE5TVGV4dFZpZXcgZG9lcyBzb21l
dGhpbmcgbW9yZSBlZmZpY2llbnQgYnkgcGFyc2luZyB0aGUgYXR0cmlidXRlcyBvbmx5LCBidXQg
dGhhdCdzIG5vdCBhdmFpbGFibGUgaW4gQVBJLgotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nID0gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpkYXRhIGRvY3Vt
ZW50QXR0cmlidXRlczpOVUxMXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpkYXRhIGRvY3VtZW50
QXR0cmlidXRlczpOVUxMXSk7CiAgICAgaWYgKHN0cmluZyA9PSBuaWwgfHwgW3N0cmluZyBsZW5n
dGhdID09IDApCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtzdHJpbmcgZm9udEF0
dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIDEpXTsKQEAgLTUyNjAsNyArNTI2MCw3IEBA
IC0gKEJPT0wpcGVyZm9ybUtleUVxdWl2YWxlbnQ6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRo
ZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBu
ZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQg
cmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAg
ICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2Js
ZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIEJP
T0wgZXZlbnRXYXNTZW50VG9XZWJDb3JlID0gKF9wcml2YXRlLT5rZXlEb3duRXZlbnQgPT0gZXZl
bnQpOwogICAgIEJPT0wgcmV0ID0gTk87CkBAIC02MzE2LDcgKzYzMTYsNyBAQCAtIChOU0F0dHJp
YnV0ZWRTdHJpbmcgKil0ZXh0U3RvcmFnZQogICAgIExPRyhUZXh0SW5wdXQsICJ0ZXh0U3RvcmFn
ZSAtPiBcIiVAXCIiLCByZXN1bHQgPyBbcmVzdWx0IHN0cmluZ10gOiBAIiIpOwogICAgIAogICAg
IC8vIFdlIGhhdmUgdG8gcmV0dXJuIGFuIGVtcHR5IHN0cmluZyByYXRoZXIgdGhhbiBudWxsIHRv
IHByZXZlbnQgVFNNIGZyb20gY2FsbGluZyAtc3RyaW5nCi0gICAgcmV0dXJuIHJlc3VsdCA/IHJl
c3VsdCA6IFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQgOiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKQEAgLTY5NjMsOSArNjk2Myw5IEBAIC0gKE5TUmVjdClzZWxlY3Rpb25JbWFnZVJlY3QKIC0g
KE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24KIHsKICAgICBpZiAoW3NlbGYg
X2NhblNtYXJ0Q29weU9yRGVsZXRlXSkgewotICAgICAgICBOU011dGFibGVBcnJheSAqdHlwZXMg
PSBbW1tbc2VsZiBjbGFzc10gX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBlc10gbXV0YWJsZUNvcHld
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tbc2VsZiBjbGFz
c10gX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBlc10gbXV0YWJsZUNvcHldKTsKICAgICAgICAgW3R5
cGVzIGFkZE9iamVjdDpXZWJTbWFydFBhc3RlUGJvYXJkVHlwZV07Ci0gICAgICAgIHJldHVybiB0
eXBlczsKKyAgICAgICAgcmV0dXJuIHR5cGVzLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogICAgIHJl
dHVybiBbW3NlbGYgY2xhc3NdIF9zZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXNdOwogfQpAQCAtNzAw
Miw3ICs3MDAyLDcgQEAgLSAoTlNTdHJpbmcgKilzdHJpbmcKIC0gKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKV9sZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTooRE9NTm9kZSAqKXN0YXJ0Q29udGFpbmVy
IG9mZnNldDooaW50KXN0YXJ0T2Zmc2V0IHRvOihET01Ob2RlICopZW5kQ29udGFpbmVyIG9mZnNl
dDooaW50KWVuZE9mZnNldAogewogICAgIGlmICghc3RhcnRDb250YWluZXIgfHwgIWVuZENvbnRh
aW5lcikKLSAgICAgICAgcmV0dXJuIFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJp
bmcoV2ViQ29yZTo6U2ltcGxlUmFuZ2UgeyB7ICpjb3JlKHN0YXJ0Q29udGFpbmVyKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSB9LAogICAgICAgICB7ICpjb3JlKGVuZENvbnRh
aW5lciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0gfSkuc3RyaW5nLmF1dG9y
ZWxlYXNlKCk7CiB9CkBAIC03MDExLDcgKzcwMTEsNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KilhdHRyaWJ1dGVkU3RyaW5nCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IGNvcmUoW1tzZWxmIF9m
cmFtZV0gRE9NRG9jdW1lbnRdKTsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4g
W1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSkuYXV0b3Jl
bGVhc2UoKTsKICAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpkb2N1bWVudCk7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gYXR0cmlidXRlZFN0cmluZyhyYW5n
ZSkuc3RyaW5nKQogICAgICAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CkBAIC03MDIy
LDEwICs3MDIyLDEwIEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXNlbGVjdGVkQXR0cmlidXRl
ZFN0cmluZwogewogICAgIGF1dG8gZnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIGF1dG8gcmFuZ2UgPSBmcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwogICAgIGlmICghcmFuZ2Up
Ci0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIGlmIChhdXRvIHJlc3VsdCA9IGF0dHJpYnV0
ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmcpCiAgICAgICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVh
c2UoKTsKICAgICByZXR1cm4gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmcu
YXV0b3JlbGVhc2UoKTsKQEAgLTcwNjcsNyArNzA2Nyw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKWVs
ZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50IGFsbG93U2hhZG93Q29udGVudDooQk9PTClhbGxv
d1NoCiAgICAgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVz
dFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICBpZiAoIWFsbG93U2hhZG93
Q29udGVudCkKICAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNl
ckFnZW50U2hhZG93Q29udGVudCk7Ci0gICAgcmV0dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5o
aXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCB7IHBvaW50IH0sIGhpdFR5cGUpXSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10g
aW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJl
c3VsdEF0UG9pbnQoSW50UG9pbnQgeyBwb2ludCB9LCBoaXRUeXBlKV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TVUludGVnZXIpY291bnRNYXRjaGVzRm9yVGV4dDooTlNTdHJpbmcgKilzdHJp
bmcgaW5ET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylv
cHRpb25zIGxpbWl0OihOU1VJbnRlZ2VyKWxpbWl0IG1hcmtNYXRjaGVzOihCT09MKW1hcmtNYXRj
aGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggNTNkZjRjYmJhMTFkZjVjOTJi
MmExNzQwYmE4OTI4MGI4YjBhZjMzNS4uZjlhOWU0NmM5MzU4NmE4NGE2ZTE3NDI5ZjRiNTQ3MGNi
OWVkZTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjcwLDcgKzI3MCw3
IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9u
OihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSCiAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKIHsKICAgICBpZiAo
X2NvbnRlbnRQcmV2ZW50c0RlZmF1bHQpCi0gICAgICAgIHJldHVybiBbW1tXZWJBbmltYXRpb25D
b250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQW5pbWF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7
CiAKICAgICBOU1VSTCAqdXJsID0gX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAg
ICAgU3RyaW5nIGFic29sdXRlVVJMU3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tCmlu
ZGV4IGQxZmY4MzViOTk1MTEzZTI0N2E5ZjcwZDQzMzU5Zjg3NzJjMTZmNDkuLjI2YjExMmViZmEw
MTgyNjE1NWE0MGYxMTA0OGI0NjFhYjRhMjY0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAg
LSAoTlNTdHJpbmcgKilkaXIKIC0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7CiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgcmV0dXJuIFtbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29yZShzZWxmKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNl
Y3VyaXR5T3JpZ2luOmNvcmUoc2VsZiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRl
eCBiMDg0YmQzMDE1YTYwNTMyMzdlNmQxN2YyMDdhNjA4N2M1MDA3OTc1Li5mNzNhZTlhMGQwMDZk
MjA2Y2MxNmQyODljNTBlN2UxOWZhMDRiYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC04ODMsMTMgKzg4MywxMyBAQCAtIChOU0ltYWdl
ICopc2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0CiAg
ICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWUgdmFsdWU6W05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MC4wZiBhbHBo
YToxLjBmXSByYW5nZTp3aG9sZVN0cmluZ1JhbmdlXTsKICAgICBbYXR0cmlidXRlZFN0cmluZyBl
bmRFZGl0aW5nXTsKICAgICAKLSAgICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZSA9IFtbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpbc2VsZiBzZWxlY3Rpb25SZWN0XS5zaXplXSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byBzZWxlY3Rpb25JbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aFNpemU6W3NlbGYgc2VsZWN0aW9uUmVjdF0uc2l6ZV0pOwogICAgIAogICAgIFtz
ZWxlY3Rpb25JbWFnZSBsb2NrRm9jdXNdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nIGRyYXdBdFBv
aW50Ok5TWmVyb1BvaW50XTsKICAgICBbc2VsZWN0aW9uSW1hZ2UgdW5sb2NrRm9jdXNdOwogCi0g
ICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlOworICAgIHJldHVybiBzZWxlY3Rpb25JbWFnZS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CkBAIC0xMzMzLDcg
KzEzMzMsNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfc2NhbGVkQXR0cmlidXRlZFN0cmlu
ZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopdW5zY2FsZWRBdAogICAgIGlmIChzY2FsZUZhY3RvciA9
PSAxLjApCiAgICAgICAgIHJldHVybiB1bnNjYWxlZEF0dHJpYnV0ZWRTdHJpbmc7CiAgICAgCi0g
ICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqcmVzdWx0ID0gW1t1bnNjYWxlZEF0dHJpYnV0
ZWRTdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0TlMoW3Vuc2NhbGVkQXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weV0pOwogICAgIHVuc2ln
bmVkIGludCBsZW5ndGggPSBbcmVzdWx0IGxlbmd0aF07CiAgICAgTlNSYW5nZSBlZmZlY3RpdmVS
YW5nZSA9IE5TTWFrZVJhbmdlKDAsMCk7CiAgICAgCkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCAtIChO
U0F0dHJpYnV0ZWRTdHJpbmcgKilfc2NhbGVkQXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVk
U3RyaW5nICopdW5zY2FsZWRBdAogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbid0IHNjYWxl
IHRoZSBmb250IGlmIHdlIGRvbid0IGtub3cgd2hhdCBpdCBpcy4gV2Ugc2hvdWxkIGFsd2F5cyBr
bm93IHdoYXQgaXQgaXMsCiAgICAgICAgICAgICAvLyBidXQgc29tZXRpbWVzIGRvbid0IGR1ZSB0
byBQREZLaXQgaXNzdWUgNTA4OTQxMS4gV2hlbiB0aGF0J3MgYWRkcmVzc2VkLCB3ZSBjYW4gcmVt
b3ZlIHRoaXMKICAgICAgICAgICAgIC8vIGVhcmx5IGNvbnRpbnVlLgotICAgICAgICAgICAgTE9H
X0VSUk9SKCJubyBmb250IGF0dHJpYnV0ZSBmb3VuZCBpbiByYW5nZSAlQCBmb3IgYXR0cmlidXRl
ZCBzdHJpbmcgXCIlQFwiIG9uIHBhZ2UgJUAgKHNlZSByYWRhciA1MDg5NDExKSIsIE5TU3RyaW5n
RnJvbVJhbmdlKGVmZmVjdGl2ZVJhbmdlKSwgcmVzdWx0LCBbW2RhdGFTb3VyY2UgcmVxdWVzdF0g
VVJMXSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIm5vIGZvbnQgYXR0cmlidXRlIGZvdW5kIGlu
IHJhbmdlICVAIGZvciBhdHRyaWJ1dGVkIHN0cmluZyBcIiVAXCIgb24gcGFnZSAlQCAoc2VlIHJh
ZGFyIDUwODk0MTEpIiwgTlNTdHJpbmdGcm9tUmFuZ2UoZWZmZWN0aXZlUmFuZ2UpLCByZXN1bHQu
Z2V0KCksIFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTM1NCw3ICsxMzU0LDcgQEAgLSAoTlNBdHRyaWJ1
dGVkU3RyaW5nICopX3NjYWxlZEF0dHJpYnV0ZWRTdHJpbmc6KE5TQXR0cmlidXRlZFN0cmluZyAq
KXVuc2NhbGVkQXQKICAgICB9CiAgICAgW3Jlc3VsdCBlbmRFZGl0aW5nXTsKICAgICAKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
dm9pZClfc2V0VGV4dE1hdGNoZXM6KE5TQXJyYXkgKilhcnJheQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggZWYxMDk4NmRhODc1M2FiMzEw
OWUwYWYxNjIxYjMwMTJmNGU5ZTZhNi4uYWI3ZTJjNTUwY2RjMjU2NTdmZGJhNDNmNmJjNjQ5ZDI2
ZmRkNzQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgLSAoaWQpX2luaXRXaXRoRGF0YTooTlNEYXRhICop
ZGF0YQogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGF1dG8gY29yZVJlc291cmNl
ID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29weURhdGEg
PyBbW2RhdGEgY29weV0gYXV0b3JlbGVhc2VdIDogZGF0YSksIFVSTCwgTUlNRVR5cGUsIHRleHRF
bmNvZGluZ05hbWUsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOworICAgIGF1dG8gY29yZVJlc291cmNl
ID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29weURhdGEg
PyBhZG9wdE5TKFtkYXRhIGNvcHldKS5hdXRvcmVsZWFzZSgpIDogZGF0YSksIFVSTCwgTUlNRVR5
cGUsIHRleHRFbmNvZGluZ05hbWUsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwogICAgIGlmICghY29y
ZVJlc291cmNlKSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmls
OwpAQCAtMzM4LDEyICszMzgsMTIgQEAgLSAoTlNTdHJpbmcgKilfc3VnZ2VzdGVkRmlsZW5hbWUK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TRmlsZVdyYXBwZXIgKilfZmlsZVdyYXBw
ZXJSZXByZXNlbnRhdGlvbgogewotICAgIE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6W3NlbGYgZGF0YV1d
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltzZWxmIGRhdGFdXSk7CiAgICAg
TlNTdHJpbmcgKmZpbGVuYW1lID0gW3NlbGYgX3N1Z2dlc3RlZEZpbGVuYW1lXTsKICAgICBpZiAo
IWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgZmlsZW5hbWUgPSBbW3Nl
bGYgVVJMXSBfd2Via2l0X3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlOltzZWxmIE1JTUVU
eXBlXV07CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6ZmlsZW5hbWVdOwotICAg
IHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAj
ZW5kaWYKIApAQCAtMzU0LDcgKzM1NCw3IEBAIC0gKE5TVVJMUmVzcG9uc2UgKilfcmVzcG9uc2UK
ICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKICAgICBpZiAoX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZSkKICAgICAgICAgcmVzcG9uc2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5y
ZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKLSAgICByZXR1cm4gcmVzcG9uc2UgPyByZXNwb25z
ZSA6IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsgICAgICAgIAor
ICAgIHJldHVybiByZXNwb25zZSA/IHJlc3BvbnNlIDogYWRvcHROUyhbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKV9zdHJpbmdW
YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3Jp
cHRXb3JsZC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0V29y
bGQubW0KaW5kZXggMTE4MDgwMjlmNjY3NWEwMGM0YmYwY2ZhZjYyZTE5MDY3ZDUyZTkzYS4uMGFi
NDkwNDFhNmVmZjE3ZTBkY2RjZDc2YzIzMjhkMzhhMTZiNjNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdFdvcmxkLm1tCkBAIC05Miw3ICs5Miw3
IEBAICsgKFdlYlNjcmlwdFdvcmxkICopc3RhbmRhcmRXb3JsZAogCiArIChXZWJTY3JpcHRXb3Js
ZCAqKXdvcmxkCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiArIChXZWJTY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkRm9yR2xvYmFsQ29udGV4dDoo
SlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKQEAgLTEyNCw3ICsxMjQsNyBAQCArIChXZWJTY3Jp
cHRXb3JsZCAqKWZpbmRPckNyZWF0ZVdvcmxkOihXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKXdv
cmxkCiAgICAgaWYgKFdlYlNjcmlwdFdvcmxkICpleGlzdGluZ1dvcmxkID0gYWxsV29ybGRzKCku
Z2V0KCZ3b3JsZCkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ1dvcmxkOwogCi0gICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoV29ybGQ6d29ybGRdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoV29ybGQ6d29ybGRdKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggYTBk
YzJiOGRhOWVmYmI2OGEyOGZmZjM1YTMxZDk1MjVhMjcyYjQzMy4uMmIxOGY2OWNjMDEzZDc4ODYx
N2I5MmUwNjFlZDg3MWNjYmI4MmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpA
QCAtMTUxLDcgKzE1MSw3IEBAIC0gKGlkKWluaXQKICAgICBfcGxheWJhY2tJbnRlcmZhY2UgPSBX
ZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCpfcGxheWJhY2tN
b2RlbCk7CiAgICAgX2NvbnRlbnRPdmVybGF5ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CiAgICAgX2NvbnRlbnRPdmVybGF5LmdldCgpLmxheWVy
Q29udGVudHNSZWRyYXdQb2xpY3kgPSBOU1ZpZXdMYXllckNvbnRlbnRzUmVkcmF3TmV2ZXI7Ci0g
ICAgX2NvbnRlbnRPdmVybGF5LmdldCgpLmxheWVyID0gW1tbV2ViVmlkZW9GdWxsc2NyZWVuT3Zl
cmxheUxheWVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgX2NvbnRlbnRPdmVybGF5
LmdldCgpLmxheWVyID0gYWRvcHROUyhbW1dlYlZpZGVvRnVsbHNjcmVlbk92ZXJsYXlMYXllciBh
bGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgW19jb250ZW50T3ZlcmxheSBzZXRXYW50
c0xheWVyOllFU107CiAgICAgW19jb250ZW50T3ZlcmxheSBzZXRBdXRvcmVzaXppbmdNYXNrOihO
U1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CiAgICAgW3NlbGYgd2lu
ZG93RGlkTG9hZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggMTNlMWY4YmU5YjU5YWE2YTNlYzgwYmQ0MTIyYmE0Njc2NGI4NzRmYS4uODNmYzU1MGRh
MGE2MzlmYzk1MzY5ZTQ5MWVmNzA1NjI2MWNiMTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjczMCwxMSArMjczMCwxMSBAQCAtIChOU01lbnUg
KilfbWVudUZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgZGVmYXVsdEl0ZW1zOihO
U0FycmF5ICopaXRlbQogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU01lbnUgKm1lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdF07CisgICAgYXV0byBtZW51ID0g
YWRvcHROUyhbW05TTWVudSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBbbWVudSBhZGRJdGVtOlttZW51SXRlbXMgb2JqZWN0
QXRJbmRleDppXV07CiAKLSAgICByZXR1cm4gW21lbnUgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBtZW51LmF1dG9yZWxlYXNlKCk7CiB9CiAjZW5kaWYKIApAQCAtMzIxOCw3ICszMjE4LDcgQEAg
KyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFzcyByZXByZXNlbnRhdGlv
bkNsYXNzOihDbGFzcylyZXByZXNlbnQKICAgICBpZiAoc2NoZW1lc1dpdGhSZXByZXNlbnRhdGlv
bnNTZXQgPT0gbmlsKSB7CiAgICAgICAgIHNjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0ID0g
W1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOwogICAgIH0KLSAgICBbc2NoZW1lc1dpdGhSZXBy
ZXNlbnRhdGlvbnNTZXQgYWRkT2JqZWN0OltbW1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJpbmddIGNv
cHldIGF1dG9yZWxlYXNlXV07CisgICAgW3NjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0IGFk
ZE9iamVjdDphZG9wdE5TKFtbVVJMU2NoZW1lIGxvd2VyY2FzZVN0cmluZ10gY29weV0pLmF1dG9y
ZWxlYXNlKCldOwogfQogCiArIChOU1N0cmluZyAqKV9nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNj
aGVtZTooTlNTdHJpbmcgKilVUkxTY2hlbWUKQEAgLTM2MjYsMTAgKzM2MjYsOSBAQCAtIChOU1VS
TCAqKV9kaXNwbGF5VVJMCiAgICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSA9IFtmcmFtZSBw
cm92aXNpb25hbERhdGFTb3VyY2VdOwogICAgIGlmICghZGF0YVNvdXJjZSkKICAgICAgICAgZGF0
YVNvdXJjZSA9IFtmcmFtZSBkYXRhU291cmNlXTsKLSAgICBOU1VSTCAqdW5yZWFjaGFibGVVUkwg
PSBbZGF0YVNvdXJjZSB1bnJlYWNoYWJsZVVSTF07Ci0gICAgTlNVUkwgKlVSTCA9IHVucmVhY2hh
YmxlVVJMICE9IG5pbCA/IHVucmVhY2hhYmxlVVJMIDogW1tkYXRhU291cmNlIHJlcXVlc3RdIFVS
TF07Ci0gICAgW1tVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIFVSTDsKKyAg
ICBhdXRvIHVucmVhY2hhYmxlVVJMID0gcmV0YWluUHRyKFtkYXRhU291cmNlIHVucmVhY2hhYmxl
VVJMXSk7CisgICAgYXV0byB1cmwgPSB1bnJlYWNoYWJsZVVSTCAhPSBuaWwgPyB1bnJlYWNoYWJs
ZVVSTCA6IHJldGFpblB0cihbW2RhdGFTb3VyY2UgcmVxdWVzdF0gVVJMXSk7CisgICAgcmV0dXJu
IHVybC5hdXRvcmVsZWFzZSgpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
QEAgLTQwOTAsNyArNDA4OSw3IEBAIC0gKFdlYlRleHRJdGVyYXRvciAqKXRleHRJdGVyYXRvckZv
clJlY3Q6KE5TUmVjdClyZWN0CiAgICAgYXV0byBpbnRSZWN0ID0gV2ViQ29yZTo6ZW5jbG9zaW5n
SW50UmVjdChyZWN0KTsKICAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlv
bihjb3JlRnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGludFJlY3QubWluWE1pbllDb3Ju
ZXIoKSksCiAgICAgICAgIGNvcmVGcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoaW50UmVj
dC5tYXhYTWF4WUNvcm5lcigpKSkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICByZXR1cm4gW1tb
V2ViVGV4dEl0ZXJhdG9yIGFsbG9jXSBpbml0V2l0aFJhbmdlOmtpdChyYW5nZSldIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlRleHRJdGVyYXRvciBhbGxvY10gaW5pdFdp
dGhSYW5nZTpraXQocmFuZ2UpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQpAQCAtNTI2MiwxNCArNTI2MSwxNCBAQCArIChOU0FycmF5ICopTUlNRVR5cGVz
U2hvd25Bc0hUTUwKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp2aWV3VHlwZXMgPSBbV2ViRnJh
bWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOllFU107CiAgICAgTlNFbnVt
ZXJhdG9yICplbnVtZXJhdG9yID0gW3ZpZXdUeXBlcyBrZXlFbnVtZXJhdG9yXTsKICAgICBpZCBr
ZXk7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICB3aGlsZSAoKGtleSA9IFtlbnVtZXJhdG9yIG5l
eHRPYmplY3RdKSkgewogICAgICAgICBpZiAoW3ZpZXdUeXBlcyBvYmplY3RGb3JLZXk6a2V5XSA9
PSBbV2ViSFRNTFZpZXcgY2xhc3NdKQogICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDprZXld
OwogICAgIH0KIAotICAgIHJldHVybiBhcnJheTsKKyAgICByZXR1cm4gYXJyYXkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogKyAodm9pZClzZXRNSU1FVHlwZXNTaG93bkFzSFRNTDooTlNBcnJheSAqKU1J
TUVUeXBlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDE3MjI3MWIxMGE2OTk2M2E5OGFhYjYwOWMyNWM2NzU4NjhlZDZkMDUuLjVlNzUzMTMyNDJh
MDdjNGUxOWM0ZjlhZDdkOTQ3YTYzNjhhNTZkN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTMgQEAKKzIwMjEtMDItMTcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQg
dXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBldmVuIGZ1cnRoZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNp
dCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGZ1cnRoZXIgYnkgdXNpbmcg
UmV0YWluUHRyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0R1bXBSZW5kZXJUcmVl
QnJvd3NlclZpZXcubW06CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldyBp
bml0V2l0aEZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoY3JlYXRlSlNTdHJpbmdSZWYpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGNyZWF0
ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6
CisgICAgICAgIChkdW1wKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWVXaW5kb3cubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW1N5bnRoZXRpY1RvdWNoIHRvdWNoV2l0aExvY2F0
aW9uOnBoYXNlOmlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIgYmVnaW5EcmFnV2l0aEZpbGVzOl0pOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9s
bGVyIHJlcGxheVNhdmVkRXZlbnRzXSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Bv
bGljeURlbGVnYXRlLm1tOgorICAgICAgICAoZGlzcG9zaXRpb25UeXBlRnJvbUNvbnRlbnREaXNw
b3NpdGlvbkhlYWRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9h
ZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJl
c291cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291cmNlOl0p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAo
LVtVSURlbGVnYXRlIHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0Ol0pOgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6
ZXJNYWMubW06CisgICAgICAgICgrW0V2ZW50U2VyaWFsaXplciBkaWN0aW9uYXJ5Rm9yRXZlbnQ6
cmVsYXRpdmVUb1RpbWU6XSk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tOgorICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
IHNldFJlc3VsdHNGcm9tSlNWYWx1ZTppbkNvbnRleHQ6XSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnRyaWdnZXJHQyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRs
ZUVkaXRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tOgorICAg
ICAgICAoLVtCdW5kbGVGb3JtRGVsZWdhdGVQbHVnSW4gX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI6d2lsbEJlZ2luSW5wdXRTZXNzaW9uRm9yRWxlbWVudDppbkZyYW1l
OnVzZXJJc0ludGVyYWN0aW5nOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NsaXBib2FyZFRlc3RzLm1tOgorICAgICAgICAocmVhZE1hcmt1cEZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAoLVtDb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRleHRNZW51cy5t
bToKKyAgICAgICAgKC1bVGVzdENvbnRleHRNZW51VUlEZWxlZ2F0ZSB3ZWJWaWV3OmNvbnRleHRN
ZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1Rlc3RDb250ZXh0TWVudUFQSUJlZm9yZVNQSVVJRGVsZWdhdGUgd2ViVmlldzpjb250ZXh0
TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0Q29udGV4dE1lbnVTdWdnZXN0ZWRBY3Rpb25zVUlEZWxlZ2F0ZSB3ZWJWaWV3OmNv
bnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbToKKyAg
ICAgICAgKHJlYWRIVE1MU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9ucy5tbToK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRGlzcGxheU5hbWUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld1dpdGhEb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxp
ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXV0YXRlRmlsZSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoLVtJbkFwcEJyb3dz
ZXJTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1t
OgorICAgICAgICAoZ2V0TmV4dE1lc3NhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmls
aXR5Lm1tOgorICAgICAgICAoZ2V0TmV4dE1lc3NhZ2UpOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1wRmlsZVNp
emUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0pJVEVuYWJsZWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5t
bToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbkFjdGlvbi5tbToKKyAgICAgICAgKFRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1By
b2Nlc3MubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzQ3Jhc2hOb25QZXJzaXN0ZW50RGF0YVN0b3JlLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2ViVmlld1RpbWVv
dXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAoLVtSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2NoZW1lSGFuZGxlciB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NhZmVCcm93c2luZy5tbToKKyAgICAgICAgKCtbVGVzdFNlcnZpY2VM
b29rdXBSZXN1bHQgcmVzdWx0V2l0aFByb3ZpZGVyOnBoaXNoaW5nOm1hbHdhcmU6dW53YW50ZWRT
b2Z0d2FyZTpdKToKKyAgICAgICAgKCtbVGVzdExvb2t1cFJlc3VsdCByZXN1bHRXaXRoUmVzdWx0
czpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAoLVtTV0N1c3RvbVVzZXJB
Z2VudERlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJl
ZmVyZW5jZXM6dXNlckluZm86ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjptYWtlV2ViVmlld1dpdGgpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFu
aXB1bGF0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAo
VEVTVCk6CisgICAgICAgICgtW1VJVGVzdERlbGVnYXRlIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVU
YXNrOl0pOgorICAgICAgICAoLVtNb2RhbERlbGVnYXRlIHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dp
dGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVyZXM6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRy
b2xsZXIubW06CisgICAgICAgICh3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBs
ZUhhbmRsZXJSZW1vdmFsVGVzdCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bQXN5bmNT
Y3JpcHRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6cmVwbHlIYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06
CisgICAgICAgIChwbGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhJbWFnZSk6CisgICAgICAgIChwbGF0
Zm9ybUltYWdlV2l0aERhdGEpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1VJRGVsZWdhdGUgX3dlYlZpZXc6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVj
dG9yOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQREZW
aWV3Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKC1bVGFza1NjaGVt
ZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1N5bmNF
cnJvclNjaGVtZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bRnJh
bWVTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3Rv
cmUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5Lm1tOgorICAgICAgICAoLVtXZWJH
TFRlc3REZWxlZ2F0ZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5t
bToKKyAgICAgICAgKGdldE5leHRNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAg
KGdldE5leHRNZXNzYWdlKToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cyk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bQ29udGVudEJsb2NraW5nV2Vi
c2l0ZVBvbGljaWVzRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bQXV0b3BsYXlQ
b2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpw
cmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0FzeW5jQXV0b3BsYXlQ
b2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpw
cmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KC1bVGVzdFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAg
ICAgIChyZXNwb25kKToKKyAgICAgICAgKC1bQ3VzdG9tSGVhZGVyRmllbGRzRGVsZWdhdGUgd2Vi
VmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW0N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZSBfd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bQ3VzdG9tTmF2aWdhdG9yUGxhdGZvcm1EZWxlZ2F0ZSBfd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZWxlZ2F0
ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOnVz
ZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUG9wVXBQb2xpY2llc0RlbGVn
YXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXZWJzaXRlUG9saWNpZXNXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRl
Y2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2lPU01vdXNlU3VwcG9ydC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9EYXRlVGltZUlucHV0c0FjY2Vzc29yeVZp
ZXdUZXN0cy5tbToKKyAgICAgICAgKGNlbGxGb3JSb3dBdEluZGV4UGF0aCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnN3aXp6bGVkUmVzaXphYmxlU25hcHNob3RWaWV3RnJvbVJlY3QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9JbnNwZWN0b3JCYXIubW06CisgICAgICAgICgtW0luc3BlY3RvckJhckNvbnRyb2xs
ZXIgY29udmVydEF0dHJpYnV0ZXM6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW06CisgICAgICAgICgtW0phdmFzY3JpcHRVUkxO
YXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246
Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tOgorICAgICAgICAoK1tG
cmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl0p
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEltYWdlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9X
S1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3SWNvbkxvYWRpbmcubW06CisgICAgICAgIChp
bWFnZUZyb21EYXRhKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90b2Nv
bC5tbToKKyAgICAgICAgKGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoK1tU
ZXN0UHJvdG9jb2wgYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyc10pOgorICAgICAgICAoK1tUZXN0
UHJvdG9jb2wgc2V0QWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczpdKToKKyAgICAgICAgKC1bVGVz
dFByb3RvY29sIHN0YXJ0TG9hZGluZ10pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGluaXRXaXRo
RnJhbWU6Y29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246XSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW06CisgICAgICAg
ICgtW01vY2tEcm9wU2Vzc2lvbiBpbml0V2l0aFByb3ZpZGVyczpsb2NhdGlvbjp3aW5kb3c6YWxs
b3dNb3ZlOl0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZp
ZXdGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBfd2ViVmlldzp3aWxsVXBkYXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3NhbDpmb3JTZXNzaW9uOl0p
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1t
OgorICAgICAgICAoZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdlKToKKyAgICAgICAgKC1bRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAg
ICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgcnVuRnJvbTp0bzpdKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tOgorICAgICAgICAoV1RSOjpjcmVhdGVKU1N0cmluZ1JlZik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplRGF0YVN0b3JlKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbToKKyAgICAgICAgKC1b
SElERXZlbnRHZW5lcmF0b3Igc2VuZEV2ZW50U3RyZWFtOmNvbXBsZXRpb25CbG9jazpdKToKKwog
MjAyMS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBzbWFydCBwb2ludGVyIGZvciBXZWJWaWV3IG93bmVyc2hpcCBpbiBEdW1wUmVuZGVyVHJlZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0R1bXBSZW5kZXJUcmVlQnJvd3Nl
clZpZXcubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldy5tbQppbmRleCBlMTA2MmZhZmI3NDdmYjQ3YzhjMTMzOWQyMGI3MmY0MDc5ZDcyNGIyLi5j
NjY5OGRjOWRlZjQwYjFlZGJiZTY2YmZlMTNhYmQ1ZDFhMzI1MTkwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlVJRGVsZWdhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJVSUtpdERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIFVJV2ViQnJvd3NlclZpZXcg
KFdlYlVJS2l0RGVsZWdhdGUpCiAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHNo
b3VsZFNjcm9sbFRvUG9pbnQ6KENHUG9pbnQpcG9pbnQgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJh
bWU7CkBAIC0xMTMsNyArMTE0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAg
ICBzZWxmLnNjcm9sbFZpZXdEZWxlZ2F0ZSA9IFtbW0R1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmll
d0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbFZpZXc6c2VsZl0gYXV0b3JlbGVhc2VdOwor
ICAgIHNlbGYuc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlV2Vi
U2Nyb2xsVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbFZpZXc6c2VsZl0pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgc2VsZi5kZWxlZ2F0ZSA9IHNlbGYuc2Nyb2xsVmlld0RlbGVnYXRlOwog
CiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDk2NmY0NjViZmFiMDc3YWU4MmNlY2I3
YTE3MjE0YjQ4MmQ0NDA0ZTkuLjRiNGEwMDVkYzk1NWU1NzExMGFiYjljYWZlZWM0ZjkyNGVhMzdk
MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCkBAIC0xODA2LDcgKzE4MDYsNyBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIHsKICAgICBpZiAoIXN0
cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWQgbXV0YWJsZVN0cmluZyA9IFtb
W05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gbXV0
YWJsZVN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdKTsKICAg
ICBpZCBhdHRyaWJ1dGVzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVjdGl2ZVJh
bmdlOm5pbF07CiAgICAgaWQgYXR0cmlidXRlRW51bWVyYXRpb25CbG9jayA9IF4oTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkPiAqYXR0cnMsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKnN0b3ApIHsK
ICAgICAgICAgQk9PTCBtaXNzcGVsbGVkID0gW1thdHRycyBvYmplY3RGb3JLZXk6TlNBY2Nlc3Np
YmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGVdIGJvb2xWYWx1ZV07CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggZGU5OWM5ODBmMDZjOTAzZTJhYzE5
MDZiNGE5ZWJkZDI0ZjM1NDI0ZS4uNWY2MTM2YjJkMjAyOTUwNjYwOGMyZThiMDFiMzI4Y2VkYTEw
MDE4NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAt
NjgxLDcgKzY4MSw3IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3co
KQogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBUZXN0UnVubmVyOjp2aWV3V2lk
dGgsIFRlc3RSdW5uZXI6OnZpZXdIZWlnaHQpOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5h
bWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl0pOwogI2Vsc2UKLSAgICBEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICp3ZWJCcm93c2VyVmlldyA9IFtbW0R1bXBSZW5kZXJUcmVlQnJvd3Nl
clZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0UmVjdF0gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViQnJvd3NlclZpZXcgPSBhZG9wdE5TKFtbRHVtcFJlbmRlclRy
ZWVCcm93c2VyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpsYXlvdXRUZXN0Vmlld3BvcnRSZWN0
XSk7CiAgICAgW3dlYkJyb3dzZXJWaWV3IHNldElucHV0Vmlld09iZXlzRE9NRm9jdXM6WUVTXTsK
ICAgICBhdXRvIHdlYlZpZXcgPSByZXRhaW5QdHIoW3dlYkJyb3dzZXJWaWV3IHdlYlZpZXddKTsK
ICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07
CkBAIC03NDQsMjEgKzc0NCwyMSBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVu
V2luZG93KCkKIAogICAgIENHUmVjdCB1aVdpbmRvd1JlY3QgPSBsYXlvdXRUZXN0Vmlld3BvcnRS
ZWN0OwogICAgIHVpV2luZG93UmVjdC5vcmlnaW4ueSArPSBbVUlBcHAgc3RhdHVzQmFySGVpZ2h0
XTsKLSAgICBVSVdpbmRvdyAqdWlXaW5kb3cgPSBbW1tVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhG
cmFtZTp1aVdpbmRvd1JlY3RdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHVpV2luZG93ID0gYWRv
cHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOnVpV2luZG93UmVjdF0pOwogCiAg
ICAgYXV0byB2aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW3VpV2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJv
bGxlci5nZXQoKV07CiAKICAgICAvLyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcg
YXJlIHJlbGVhc2VkIHdoZW4gdGhlIER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KLSAg
ICBkcnRXaW5kb3cudWlXaW5kb3cgPSB1aVdpbmRvdzsKLSAgICBkcnRXaW5kb3cuYnJvd3NlclZp
ZXcgPSB3ZWJCcm93c2VyVmlldzsKKyAgICBkcnRXaW5kb3cudWlXaW5kb3cgPSB1aVdpbmRvdy5n
ZXQoKTsKKyAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmlldy5nZXQoKTsK
IAogICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZVdlYlNjcm9s
bFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0UmVjdF0pOwotICAg
IFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXddOworICAgIFtzY3JvbGxWaWV3
IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXcuZ2V0KCldOwogCiAgICAgW1t2aWV3Q29udHJvbGxl
ciB2aWV3XSBhZGRTdWJ2aWV3OnNjcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgYWRqdXN0V2ViRG9j
dW1lbnRGb3JTdGFuZGFyZFZpZXdwb3J0KHdlYkJyb3dzZXJWaWV3LCBzY3JvbGxWaWV3LmdldCgp
KTsKKyAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQod2ViQnJvd3NlclZp
ZXcuZ2V0KCksIHNjcm9sbFZpZXcuZ2V0KCkpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTE0MTMsNyArMTQxMyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVNjcm9s
bFBvc2l0aW9uKFdlYkZyYW1lICpmKQogICAgIH0KIH0KIAotc3RhdGljIE5TU3RyaW5nICpkdW1w
RnJhbWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+
IGR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogewogICAgIERPTURvY3VtZW50ICpk
b2N1bWVudCA9IFtmcmFtZSBET01Eb2N1bWVudF07CiAgICAgRE9NRWxlbWVudCAqZG9jdW1lbnRF
bGVtZW50ID0gW2RvY3VtZW50IGRvY3VtZW50RWxlbWVudF07CkBAIC0xNDIxLDExICsxNDIxLDEz
IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJhbWUpCiAg
ICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBAIiI7CiAKLSAgICBOU011
dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgIFJldGFpblB0cjxOU011dGFibGVTdHJpbmc+IHJlc3VsdDsKIAogICAg
IC8vIEFkZCBoZWFkZXIgZm9yIGFsbCBidXQgdGhlIG1haW4gZnJhbWUuCiAgICAgaWYgKFtmcmFt
ZSBwYXJlbnRGcmFtZV0pCiAgICAgICAgIHJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIlxuLS0tLS0tLS1cbkZyYW1lOiAnJUAnXG4tLS0tLS0tLVxuIiwgW2ZyYW1l
IG5hbWVdXTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVT
dHJpbmcgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICppbm5lclRleHQgPSBbZG9jdW1l
bnRFbGVtZW50IGlubmVyVGV4dF07CiAgICAgLy8gV2UgdXNlIFdLU3RyaW5nR2V0VVRGOENTdHJp
bmdOb25TdHJpY3QoKSB0byBjb252ZXJ0IGlubmVyVGV4dCB0byBhIFdLIFN0cmluZyBzaW5jZQpA
QCAtMTQ0MywxMyArMTQ0NSwxMyBAQCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQo
V2ViRnJhbWUgKmZyYW1lKQogICAgICAgICBOU0FycmF5ICpraWRzID0gW2ZyYW1lIGNoaWxkRnJh
bWVzXTsKICAgICAgICAgaWYgKGtpZHMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBba2lkcyBjb3VudF07IGkrKykKLSAgICAgICAgICAgICAgICBbcmVzdWx0IGFwcGVu
ZFN0cmluZzpkdW1wRnJhbWVzQXNUZXh0KFtraWRzIG9iamVjdEF0SW5kZXg6aV0pXTsKKyAgICAg
ICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpkdW1wRnJhbWVzQXNUZXh0KFtraWRzIG9i
amVjdEF0SW5kZXg6aV0pLmdldCgpXTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvIGtl
ZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGluZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBh
IG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRlc3Qgb3V0cHV0LgotICAgIFtyZXN1bHQg
cmVwbGFjZU9jY3VycmVuY2VzT2ZTdHJpbmc6QCIgK1xuIiB3aXRoU3RyaW5nOkAiXG4iIG9wdGlv
bnM6TlNSZWd1bGFyRXhwcmVzc2lvblNlYXJjaCByYW5nZTpOU01ha2VSYW5nZSgwLCByZXN1bHQu
bGVuZ3RoKV07Ci0gICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VPY2N1cnJl
bmNlc09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4
cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3Jlc3VsdCBsZW5ndGhdKV07Cisg
ICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIgd2l0aFN0cmluZzpA
IiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5TTWFrZVJhbmdlKDAs
IFtyZXN1bHQgbGVuZ3RoXSldOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE2MzUsNyAr
MTYzNyw3IEBAIHZvaWQgZHVtcCgpCiAgICAgQVNTRVJUKCFnVGVzdFJ1bm5lci0+aGFzUGVuZGlu
Z1dlYk5vdGlmaWNhdGlvbkNsaWNrKCkpOwogCiAgICAgaWYgKGR1bXBUcmVlKSB7Ci0gICAgICAg
IE5TU3RyaW5nICpyZXN1bHRTdHJpbmcgPSBuaWw7CisgICAgICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gcmVzdWx0U3RyaW5nOwogICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBuaWw7CiAgICAg
ICAgIE5TU3RyaW5nICpyZXN1bHRNaW1lVHlwZSA9IEAidGV4dC9wbGFpbiI7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbQppbmRleCAxMDgy
ZWZjY2RiNjI1MGM3MDQwNDcwY2U1ZjgxYWRhOWVmMmYwNDk3Li44MWI4OGU0ODZiNDM5ZWFjMjkz
ZGMyMDkxM2JlMTViMDRkODdhYjAzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tCkBAIC02MCw3ICs2MCw3IEBAIEBzeW50aGVzaXplIGJy
b3dzZXJWaWV3ID0gX2Jyb3dzZXJWaWV3OwogCiArIChOU0FycmF5ICopb3BlbldpbmRvd3MKIHsK
LSAgICByZXR1cm4gW1soTlNBcnJheSAqKW9wZW5XaW5kb3dzUmVmIGNvcHldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gYWRvcHROUyhbKE5TQXJyYXkgKilvcGVuV2luZG93c1JlZiBjb3B5XSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfYWRkVG9PcGVuV2luZG93cwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBj
NmIxOGU3MzAzYmVhMmNmMTM2NWU3NTNkZTNjYTdhMzJiZjdhMmNlLi5mYmNiNTNkOGQ5OWYzNjFm
MmEzMGIwMmJiZGFiZTE3MGFlYWIyMWQ0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIEBzeW50
aGVzaXplIGlkZW50aWZpZXIgPSBfaWRlbnRpZmllcjsKIAogKyAoaWQpdG91Y2hXaXRoTG9jYXRp
b246KENHUG9pbnQpbG9jYXRpb24gcGhhc2U6KFVJVG91Y2hQaGFzZSlwaGFzZSBpZGVudGlmaWVy
Oih1bnNpZ25lZClpZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIFtbW1N5bnRoZXRpY1RvdWNoIGFs
bG9jXSBpbml0V2l0aExvY2F0aW9uOmxvY2F0aW9uIHBoYXNlOnBoYXNlIGlkZW50aWZpZXI6aWRl
bnRpZmllcl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbU3ludGhldGljVG91
Y2ggYWxsb2NdIGluaXRXaXRoTG9jYXRpb246bG9jYXRpb24gcGhhc2U6cGhhc2UgaWRlbnRpZmll
cjppZGVudGlmaWVyXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhMb2NhdGlv
bjooQ0dQb2ludClsb2NhdGlvbiBwaGFzZTooVUlUb3VjaFBoYXNlKXBoYXNlIGlkZW50aWZpZXI6
KHVuc2lnbmVkKWlkZW50aWZpZXIKQEAgLTQ1Niw4ICs0NTYsOCBAQCAtICh2b2lkKWJlZ2luRHJh
Z1dpdGhGaWxlczooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2VydChbcGJv
YXJkIHByb3BlcnR5TGlzdEZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXSk7IC8vIHNldFBy
b3BlcnR5TGlzdCB3aWxsIHNpbGVudGx5IGZhaWwgb24gZXJyb3IsIGFzc2VydCB0aGF0IGl0IGRp
ZG4ndCBmYWlsCiAKICAgICAvLyBQcm92aWRlIGEgc291cmNlLCBvdGhlcndpc2UgW0R1bXBSZW5k
ZXJUcmVlRHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10gZGVmYXVsdHMg
dG8gTlNEcmFnT3BlcmF0aW9uTm9uZQotICAgIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291
cmNlICpzb3VyY2UgPSBbW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVE
cmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBh
c3RlYm9hcmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2VdOworICAgIGF1dG8gc291cmNlID0gYWRvcHRO
UyhbW0R1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlIGFsbG9jXSBpbml0XSk7CisgICAg
ZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdp
dGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNv
dXJjZS5nZXQoKV07CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gZHJhZ2dpbmdFbnRlcmVkOmRy
YWdnaW5nSW5mb107CiAKICAgICBkcmFnTW9kZSA9IE5POyAvLyBkcmFnTW9kZSBzYXZlcyBldmVu
dHMgYW5kIHRoZW4gcmVwbGF5cyB0aGVtIGxhdGVyLiAgV2UgZG9uJ3QgbmVlZC93YW50IHRoYXQu
CkBAIC05NTQsNyArOTU0LDcgQEAgKyAodm9pZClyZXBsYXlTYXZlZEV2ZW50cwogICAgIHJlcGxh
eWluZ1NhdmVkRXZlbnRzID0gWUVTOwogICAgIHdoaWxlIChbc2F2ZWRNb3VzZUV2ZW50cyBjb3Vu
dF0pIHsKICAgICAgICAgLy8gaWYgYSBkcmFnIGlzIGluaXRpYXRlZCwgdGhlIHJlbWFpbmluZyBz
YXZlZCBldmVudHMgd2lsbCBiZSBkaXNwYXRjaGVkIGZyb20gb3VyIGRyYWdnaW5nIGRlbGVnYXRl
Ci0gICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtbW3NhdmVkTW91c2VFdmVudHMg
b2JqZWN0QXRJbmRleDowXSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byBpbnZv
Y2F0aW9uID0gcmV0YWluUHRyKFtzYXZlZE1vdXNlRXZlbnRzIG9iamVjdEF0SW5kZXg6MF0pOwog
ICAgICAgICBbc2F2ZWRNb3VzZUV2ZW50cyByZW1vdmVPYmplY3RBdEluZGV4OjBdOwogICAgICAg
ICBbaW52b2NhdGlvbiBpbnZva2VdOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Q
b2xpY3lEZWxlZ2F0ZS5tbQppbmRleCA1NzgyNWY0YTE1ODJiZjM1OWM1NjgwODIwNWZkNGYzZTRm
MGY1NmM4Li45N2ExNzg3N2Q0ZDc5NjU5NGM4ZTkzNzQ5NzQ0YzMyMjg3MGYyMDBlIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tCkBAIC0xMDYsMTAgKzEwNiwx
MCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHVuYWJsZVRvSW1wbGVtZW50
UG9saWN5V2l0aEVycm9yOihOU0Vycm9yICopZQogCiBzdGF0aWMgTlNTdHJpbmcgKmRpc3Bvc2l0
aW9uVHlwZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXIoTlNTdHJpbmcgKmhlYWRlcikKIHsK
LSAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtbW1toZWFkZXIgY29tcG9uZW50c1NlcGFy
YXRlZEJ5U3RyaW5nOkAiOyJdIG9iamVjdEF0SW5kZXg6MF0gbXV0YWJsZUNvcHldIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tbaGVhZGVyIGNvbXBvbmVudHNTZXBh
cmF0ZWRCeVN0cmluZzpAIjsiXSBvYmplY3RBdEluZGV4OjBdIG11dGFibGVDb3B5XSk7CiAgICAg
aWYgKHJlc3VsdCkKLSAgICAgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3Ry
aW5nUmVmKXJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgQ0ZTdHJpbmdUcmlt
V2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJu
IHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilj
IGRlY2lkZVBvbGljeUZvck1JTUVUeXBlOihOU1N0cmluZyAqKXR5cGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBlMjQ5YWJmMGRm
NTM4NGFmOTNkNmI3YTBhN2FhOWJiZDAzMmE4NmRiLi41MzlkMTZhOGEwY2ZiYmFmYTBlMzQwMWY2
NDgzOWUwMjliYWYzMjkwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLShOU1VSTFJlcXVlc3QgKil3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0
OiAoTlMKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMgJiYgQ0ZTZXRDb250YWluc1ZhbHVlKGRpc2Fs
bG93ZWRVUkxzLCAoX19icmlkZ2UgQ0ZVUkxSZWYpdXJsKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbcmVxdWVzdCBtdXRhYmxl
Q29weV07CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29w
eV0pOwogICAgIGNvbnN0IHNldDxzdHJpbmc+JiBjbGVhckhlYWRlcnMgPSBnVGVzdFJ1bm5lci0+
d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKCk7CiAgICAgZm9yIChzZXQ8c3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVh
ckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKSB7CiAgICAgICAgIGF1dG8gbnNIZWFkZXIgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpoZWFkZXItPmNfc3RyKCld
KTsKQEAgLTE4NCw3ICsxODQsNyBAQCAtKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3
ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOUwogICAgIGlmIChh
dXRvKiBkZXN0aW5hdGlvbiA9IGdUZXN0UnVubmVyLT5yZWRpcmVjdGlvbkRlc3RpbmF0aW9uRm9y
VVJMKFtbdXJsIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSkpCiAgICAgICAgIFtuZXdSZXF1
ZXN0IHNldFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6ZGVzdGluYXRpb25dXV07CiAKLSAgICByZXR1cm4gW25ld1JlcXVlc3QgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBuZXdSZXF1ZXN0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQp
d2ViVmlldzooV2ViVmlldyAqKXd2IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVu
dFNlcmlhbGl6ZXJNYWMubW0gYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXph
dGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1tCmluZGV4IGJkZDIwN2JkNDA5ZjA0ZWU1ZjM4
MjMxOTRmYTI0ZTYzMjg4NTg5MTcuLjIxZjczNzI2OGM3ODFjNmY4M2U0OTBhOTlmNzM4YTBjY2Ez
MTRjNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0
aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMubW0KKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5tbQpAQCAtMTU4LDcg
KzE1OCw3IEBAIGJvb2wgZXZlbnRJc09mR2VzdHVyZVR5cGVzKENHRXZlbnRSZWYgZXZlbnQsIElP
SElERXZlbnRUeXBlIGZpcnN0LCBUeXBlcyAuLi4gcmVzCiAgICAgaW50NjRfdCB2YWx1ZSA9IENH
RXZlbnRHZXRJbnRlZ2VyVmFsdWVGaWVsZChyYXdFdmVudCwgZmllbGQpOyBcCiAgICAgaW50NjRf
dCBwbGFpblZhbHVlID0gQ0dFdmVudEdldEludGVnZXJWYWx1ZUZpZWxkKHJhd1BsYWluRXZlbnQs
IGZpZWxkKTsgXAogICAgIGlmICh2YWx1ZSAhPSBwbGFpblZhbHVlKSBcCi0gICAgICAgIGRpY3Rb
QCNmaWVsZF0gPSBAKHZhbHVlKTsgXAorICAgICAgICBkaWN0LmdldCgpW0AjZmllbGRdID0gQCh2
YWx1ZSk7IFwKIH0oKTsKIAogI2RlZmluZSBMT0FEX0RPVUJMRV9GSUVMRF9GUk9NX0VWRU5UKGV2
ZW50VHlwZUZpbHRlciwgZmllbGQpIFwKQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIGV2ZW50SXNP
Zkdlc3R1cmVUeXBlcyhDR0V2ZW50UmVmIGV2ZW50LCBJT0hJREV2ZW50VHlwZSBmaXJzdCwgVHlw
ZXMgLi4uIHJlcwogICAgIGlmICghaXNuYW4odmFsdWUpKSB7IFwKICAgICAgICAgZG91YmxlIHBs
YWluVmFsdWUgPSBDR0V2ZW50R2V0RG91YmxlVmFsdWVGaWVsZChyYXdQbGFpbkV2ZW50LCBmaWVs
ZCk7IFwKICAgICAgICAgaWYgKGZhYnModmFsdWUgLSBwbGFpblZhbHVlKSA+PSBGTFRfRVBTSUxP
TikgXAotICAgICAgICAgICAgZGljdFtAI2ZpZWxkXSA9IEAodmFsdWUpOyBcCisgICAgICAgICAg
ICBkaWN0LmdldCgpW0AjZmllbGRdID0gQCh2YWx1ZSk7IFwKICAgICB9IFwKIH0oKTsKIApAQCAt
MTk4LDMwICsxOTgsMzAgQEAgKyAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeUZvckV2ZW50OihD
R0V2ZW50UmVmKXJhd0V2ZW50IHJlbGF0aXZlVG9UaW1lOihDR0V2ZW4KICAgICBhdXRvIHBsYWlu
RXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGUoTlVMTCkpOwogICAgIENHRXZlbnRSZWYgcmF3
UGxhaW5FdmVudCA9IHBsYWluRXZlbnQuZ2V0KCk7CiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpkaWN0ID0gW1tbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gZGljdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7CiAKICAgICBGT1JfRUFDSF9DR0VWRU5UX0lOVEVHRVJfRklFTEQoTE9BRF9JTlRFR0VS
X0ZJRUxEX0ZST01fRVZFTlQpOwogICAgIEZPUl9FQUNIX0NHRVZFTlRfRE9VQkxFX0ZJRUxEKExP
QURfRE9VQkxFX0ZJRUxEX0ZST01fRVZFTlQpOwogCiAgICAgQ0dFdmVudFRpbWVzdGFtcCB0aW1l
c3RhbXAgPSBDR0V2ZW50R2V0VGltZXN0YW1wKHJhd0V2ZW50KTsKLSAgICBkaWN0W0AicmVsYXRp
dmVUaW1lTVMiXSA9IEAoc3RkOjptYXgoc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXAgLSBy
ZWZlcmVuY2VUaW1lc3RhbXApIC8gTlNFQ19QRVJfTVNFQywgMC4wKSk7CisgICAgZGljdC5nZXQo
KVtAInJlbGF0aXZlVGltZU1TIl0gPSBAKHN0ZDo6bWF4KHN0YXRpY19jYXN0PGRvdWJsZT4odGlt
ZXN0YW1wIC0gcmVmZXJlbmNlVGltZXN0YW1wKSAvIE5TRUNfUEVSX01TRUMsIDAuMCkpOwogCiAg
ICAgQ0dTRXZlbnRUeXBlIGV2ZW50VHlwZSA9IChDR1NFdmVudFR5cGUpQ0dFdmVudEdldEludGVn
ZXJWYWx1ZUZpZWxkKHJhd0V2ZW50LCBrQ0dTRXZlbnRUeXBlRmllbGQpOwogICAgIGlmIChldmVu
dFR5cGUgPT0ga0NHU0V2ZW50R2VzdHVyZSB8fCBldmVudFR5cGUgPT0ga0NHU0V2ZW50Rmx1aWRU
b3VjaEdlc3R1cmUgfHwgZXZlbnRUeXBlID09IGtDR1NFdmVudERvY2tDb250cm9sKSB7CiAgICAg
ICAgIGlmIChDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQocmF3RXZlbnQsIGtDR0V2ZW50R2Vz
dHVyZUlzUHJlZmxpZ2h0KSkgewotICAgICAgICAgICAgZGljdFtAImtDR0V2ZW50R2VzdHVyZUlz
UHJlZmxpZ2h0Il0gPSBAWUVTOwotICAgICAgICAgICAgZGljdFtAImtDR0V2ZW50R2VzdHVyZVBy
ZWZsaWdodFByb2dyZXNzIl0gPSBAKENHRXZlbnRHZXREb3VibGVWYWx1ZUZpZWxkKHJhd0V2ZW50
LCBrQ0dFdmVudEdlc3R1cmVQcmVmbGlnaHRQcm9ncmVzcykpOworICAgICAgICAgICAgZGljdC5n
ZXQoKVtAImtDR0V2ZW50R2VzdHVyZUlzUHJlZmxpZ2h0Il0gPSBAWUVTOworICAgICAgICAgICAg
ZGljdC5nZXQoKVtAImtDR0V2ZW50R2VzdHVyZVByZWZsaWdodFByb2dyZXNzIl0gPSBAKENHRXZl
bnRHZXREb3VibGVWYWx1ZUZpZWxkKHJhd0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVQcmVmbGlnaHRQ
cm9ncmVzcykpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgZGljdFtAIndpbmRvd0xvY2F0aW9u
Il0gPSBOU1N0cmluZ0Zyb21Qb2ludChOU1BvaW50RnJvbUNHUG9pbnQoQ0dFdmVudEdldFdpbmRv
d0xvY2F0aW9uKHJhd0V2ZW50KSkpOworICAgIGRpY3QuZ2V0KClbQCJ3aW5kb3dMb2NhdGlvbiJd
ID0gTlNTdHJpbmdGcm9tUG9pbnQoTlNQb2ludEZyb21DR1BvaW50KENHRXZlbnRHZXRXaW5kb3dM
b2NhdGlvbihyYXdFdmVudCkpKTsKIAogICAgIGF1dG8gZmxhZ3MgPSBzdGF0aWNfY2FzdDxDR0V2
ZW50RmxhZ3M+KENHRXZlbnRHZXRGbGFncyhyYXdFdmVudCkgJiB+TlhfTk9OQ09BTFNFU0NFRE1B
U0spOwogICAgIGF1dG8gcGxhaW5GbGFncyA9IHN0YXRpY19jYXN0PENHRXZlbnRGbGFncz4oQ0dF
dmVudEdldEZsYWdzKHJhd1BsYWluRXZlbnQpICYgfk5YX05PTkNPQUxTRVNDRURNQVNLKTsKICAg
ICBpZiAoZmxhZ3MgIT0gcGxhaW5GbGFncykKLSAgICAgICAgZGljdFtAImZsYWdzIl0gPSBAKGZs
YWdzKTsKKyAgICAgICAgZGljdC5nZXQoKVtAImZsYWdzIl0gPSBAKGZsYWdzKTsKIAotICAgIHJl
dHVybiBkaWN0OworICAgIHJldHVybiBkaWN0LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFJldGFp
blB0cjxDR0V2ZW50UmVmPiljcmVhdGVFdmVudEZvckRpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAq
KWRpY3QgaW5XaW5kb3c6KE5TV2luZG93ICopd2luZG93IHJlbGF0aXZlVG9UaW1lOihDR0V2ZW50
VGltZXN0YW1wKXJlZmVyZW5jZVRpbWVzdGFtcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCmluZGV4IGU5OWMwMTMwMzk4
ODM5MjQwYzhiZWM5YmE5NzUwMGJiOWQ2OTcwNmUuLjQyMzVlOTY1NmZiZmRhNmQ1NjcyZjIyMzk3
OTFlMDRjYTc4Njc4ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
TGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KQEAgLTI0OCw3ICsyNDgsNyBAQCAtICh2b2lk
KXNldFJlc3VsdHNGcm9tSlNWYWx1ZTooSlNWYWx1ZVJlZilyZXN1bHRzVmFsdWUgaW5Db250ZXh0
OihKU0NvbnRleHRSZWYpYwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBKU1By
b3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRhaWxzT2JqZWN0UHJvcGVydGllcyk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBbcmVzdWx0c0ZvcldvcmQgYWRkT2JqZWN0OltbW0xheW91dFRl
c3RUZXh0Q2hlY2tpbmdSZXN1bHQgYWxsb2NdIGluaXRXaXRoVHlwZTpuc1RleHRDaGVja2luZ1R5
cGUodHlwZVZhbHVlLmdldCgpKSByYW5nZTpOU01ha2VSYW5nZShmcm9tVmFsdWUsIHRvVmFsdWUg
LSBmcm9tVmFsdWUpIHJlcGxhY2VtZW50OihfX2JyaWRnZSBOU1N0cmluZyAqKXJlcGxhY2VtZW50
VGV4dC5nZXQoKSBkZXRhaWxzOmRldGFpbHMuZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgICAg
ICAgICBbcmVzdWx0c0ZvcldvcmQgYWRkT2JqZWN0OmFkb3B0TlMoW1tMYXlvdXRUZXN0VGV4dENo
ZWNraW5nUmVzdWx0IGFsbG9jXSBpbml0V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKHR5cGVW
YWx1ZS5nZXQoKSkgcmFuZ2U6TlNNYWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZh
bHVlKSByZXBsYWNlbWVudDooX19icmlkZ2UgTlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0
KCkgZGV0YWlsczpkZXRhaWxzLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIH0KICAg
ICAgICAgYXV0byBjZlRleHRUb0NoZWNrID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXh0VG9DaGVjaykpOwogICAgICAgICBbcmVzdWx0cyBzZXRP
YmplY3Q6cmVzdWx0c0ZvcldvcmQuZ2V0KCkgZm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWNm
VGV4dFRvQ2hlY2suZ2V0KCldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW0KaW5kZXggODZiYmFiODYwNzc2
NTBhODMwZTMxOTU5OGU1MjhiYWM4NzMzMGE1Yi4uZDQ5MDlmODQ2ODhhNDEzMzA3NWNlNGJmODVj
YzY2ODhiMjM0NzJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZh
U2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLm1tCkBAIC02NSw3ICs2NSw3IEBAIHN0
YXRpYyB2b2lkIHRyaWdnZXJHQyhKU0NvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwMDsgKytpKQotICAg
ICAgICAgICAgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OltbVGVzdE9iamVjdCBuZXddIGF1dG9y
ZWxlYXNlXSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICBbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6YWRvcHROUyhbVGVzdE9iamVjdCBuZXddKS5hdXRvcmVsZWFzZSgpIGluQ29udGV4
dDpjb250ZXh0XTsKICAgICAgICAgSlNHYXJiYWdlQ29sbGVjdChbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IDcx
YTdmZjRmMzZlY2FkOTNkYzk2N2ZiYzIzMTNjYTJjYjNiOTJmZjEuLmQ5NjIzMDc0YjIxNTgwZTcx
MmFmNDRjNmYzNDBkOWZlNjE2MWU5ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBA
IC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgICAgICBKU0M6OmluaXRpYWxpemUoKTsKICNl
bmRpZgogICAgICAgICB2aWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdF0pOwotICAgICAgICBbdmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpbW1tU
ZXN0TlNVUkxTZXNzaW9uTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07
CisgICAgICAgIFt2aWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmFkb3B0TlMoW1tUZXN0TlNVUkxT
ZXNzaW9uTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKIAogICAg
ICAgICBkaWRMb2FkTWFpblJlc291cmNlID0gZmFsc2U7CiAgICAgICAgIFt2aWV3IHNldE1haW5G
cmFtZVVSTDpkb2N1bWVudFVSTC5hYnNvbHV0ZVN0cmluZ107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQpp
bmRleCBmMjdlMzRkNDgwYTY5NGZiYmFlN2I1ZTgwNTk1MzgwYTQ4NDljMjAyLi4zOGVlY2RhNWVi
YzE1ZjViYzQyZGQzNTlmMDM0NTFjMGZjMWZkM2UwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KQEAg
LTExNSw3ICsxMTUsNyBAQCBURVNUKFdlYktpdCwgRGVmYXVsdERldmljZUlkSGFzaFNhbHRzRGly
ZWN0b3J5KQogICAgIH0KIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxl
YXNlXV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZyA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdOwogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNv
bm5lY3Rpb24gPSBOTzsKQEAgLTE0NSw3ICsxNDUsNyBAQCBURVNUKFdlYktpdCwgRGV2aWNlSWRI
YXNoU2FsdHNEaXJlY3RvcnkpCiAgICAgW3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNl
dERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTp0ZW1wRGlyXTsKICAgICAKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0
aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcgPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0
byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKICAgICBwcmVmZXJl
bmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVJbWdX
aXRoVmlkZW8ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4
dE1lbnVJbWdXaXRoVmlkZW8ubW0KaW5kZXggMmNiMjc3NTcxNGQ0OWMwODU5NWM1MWY3NTEyNjNm
ZjZiZDMwZTBlMy4uMmY0ZDdkZmNiODAwMmNjMmZmYjA0NzQ4ZDBlODYwNDU4ZjIyMTM5ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51
SW1nV2l0aFZpZGVvLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21h
Yy9Db250ZXh0TWVudUltZ1dpdGhWaWRlby5tbQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8pCiB7
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICB3ZWJWaWV3LmdldCgp
LlVJRGVsZWdhdGUgPSBbW1tDb250ZXh0TWVudUltZ1dpdGhWaWRlb0RlbGVnYXRlIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gYWRvcHRO
UyhbW0NvbnRleHRNZW51SW1nV2l0aFZpZGVvRGVsZWdhdGUgYWxsb2NdIGluaXRdKS5hdXRvcmVs
ZWFzZSgpOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNv
bnRleHRNZW51SW1nV2l0aFZpZGVvIl07CiAKICAgICBOU1dpbmRvdyogd2luZG93ID0gW3dlYlZp
ZXcgd2luZG93XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0KaW5kZXggMDQ2MmE4OGY0ODBk
OTVhNDk1NDdhMDZkMDJkMjFiMGIyNDNjM2I3ZS4uN2NjZmMwMjJkMmMyNTMzMmJiMmViY2U5NWQz
MDI1YWU3YTliYTJjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0KQEAgLTg3LDE4ICs4
NywxOCBAQCBURVNUKFdlYktpdCwgV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlKQog
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRXcml0ZVRvUGFzdGVib2FyZCk7CiAK
LSAgICBOU1N0cmluZyAqY29waWVkU3RyaW5nID0gbmlsOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gY29waWVkU3RyaW5nOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb3BpZWRTdHJpbmcgPSBb
W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc3RyaW5nRm9yVHlwZTpAIm9yZy53ZWJr
aXQuZGF0YSJdOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBjb3BpZWRTdHJpbmcg
PSBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QCJvcmcud2Via2l0LmRhdGEiXSBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgIGNvcGllZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltbVUlQYXN0ZWJvYXJk
IGdlbmVyYWxQYXN0ZWJvYXJkXSBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QCJvcmcud2Via2l0LmRh
dGEiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2VuZGlmCi0gICAgRVhQRUNU
X1dLX1NUUkVRKCJoZWxsbyIsIGNvcGllZFN0cmluZyk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJo
ZWxsbyIsIGNvcGllZFN0cmluZy5nZXQoKSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgW1tO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldFN0cmluZzpjb3BpZWRTdHJpbmcgZm9y
VHlwZTpAInB1YmxpYy51dGY4LXBsYWluLXRleHQiXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5l
cmFsUGFzdGVib2FyZF0gc2V0U3RyaW5nOmNvcGllZFN0cmluZy5nZXQoKSBmb3JUeXBlOkAicHVi
bGljLnV0ZjgtcGxhaW4tdGV4dCJdOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBb
W1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0VmFsdWU6Y29waWVkU3RyaW5nIGZv
clBhc3RlYm9hcmRUeXBlOkAicHVibGljLnV0ZjgtcGxhaW4tdGV4dCJdOworICAgIFtbVUlQYXN0
ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRWYWx1ZTpjb3BpZWRTdHJpbmcuZ2V0KCkgZm9y
UGFzdGVib2FyZFR5cGU6QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07CiAjZW5kaWYKICAgICBb
d2ViVmlldyBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHBhc3RlOikgd2l0aE9iamVjdDpuaWxd
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1
bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tCmluZGV4IGQwY2E5ZmRjNzIxMmM0
OWVhZDExYmJlN2UwZWRmNjQ5NGIwNTE1OTkuLmU4ZDlkNTI1ZmE3YmZlYmE1ODYwNTMyOWMxYzlh
M2JmZGYwN2U0MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tCkBAIC03MCw5
ICs3MCw3IEBAIC0gKE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKilfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQCiAgICAgaWYgKCFfc2hvdWxkVXNlQ3Vz
dG9tQ2xhc3MpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1VuaXRDb252ZXJ0ZXJMaW5l
YXIgKmtpbG9tZXRlcnNUb01ldGVycyA9IFtbTlNVbml0Q29udmVydGVyTGluZWFyIGFsbG9jXSBp
bml0V2l0aENvZWZmaWNpZW50OjEwMDAuMCBjb25zdGFudDowLjBdOwotCi0gICAgcmV0dXJuIFtr
aWxvbWV0ZXJzVG9NZXRlcnMgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNV
bml0Q29udmVydGVyTGluZWFyIGFsbG9jXSBpbml0V2l0aENvZWZmaWNpZW50OjEwMDAuMCBjb25z
dGFudDowLjBdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEZvY3VzVGV4dEZpZWxkOihXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlICopdGV4dEZpZWxkIGluRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lICopZnJhbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9DaGFsbGVuZ2UubW0KaW5kZXggMGI3NWJhNDNjMDNhZTM4ODgxNmExZjNjYzJjZWU2ZjE3NzFi
MTA2MS4uZDZlMzgzZTFhMGJlMmU1NWY3OTFiNGY0YWQ4NmYxOTQzYWYzMGM4YiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KQEAg
LTIzMiw4ICsyMzIsOCBAQCBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRpdHkpCiAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIC8vIE1ha2Ug
c3VyZSBubyBjcmVkZW50aWFsIGxlZnQgYnkgcHJldmlvdXMgdGVzdHMuCi0gICAgTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9IFtbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFs
bG9jXSBpbml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEiIHBvcnQ6c2VydmVyLnBvcnQoKSBwcm90b2Nv
bDpOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFAgcmVhbG06QCJ0ZXN0cmVhbG0iIGF1dGhlbnRpY2F0
aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWNdIGF1dG9yZWxlYXNl
XTsKLSAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFu
ZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlXTsKKyAgICBh
dXRvIHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxv
Y10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6
TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlv
bk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSk7CisgICAgW1t3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxz
Rm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZS5nZXQoKV07CiAKICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8i
LCBzZXJ2ZXIucG9ydCgpXV1dXTsKIApAQCAtMjQ1LDggKzI0NSw4IEBAIFRFU1QoQ2hhbGxlbmdl
LCBEZWFsbG9jYXRlRHVyaW5nQ2hhbGxlbmdlKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJOwogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHt7ICIvIiwgeyAiaGkiIH19fSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgZGVsZWdhdGUuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNy
ZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7
CiAgICAgfTsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFRFU1QoQ2hhbGxlbmdlLCBEZWFsbG9jYXRl
RHVyaW5nQ2hhbGxlbmdlKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDsgaSsr
KQogICAgICAgICAgICAgdmlld3MuYXBwZW5kKGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKSk7CiAg
ICAgICAgIGZvciAoYXV0byYgdmlldyA6IHZpZXdzKSB7Ci0gICAgICAgICAgICBbdmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOworICAgICAgICAgICAgW3ZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICAgICAgICAgIFt2aWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwogICAgICAgICB9CiAgICAgICAgIFV0aWw6OnNwaW5SdW5M
b29wKDEwKTsKQEAgLTM1MSw4ICszNTEsOCBAQCBURVNUKENoYWxsZW5nZSwgQmFzaWNQcm9wb3Nl
ZENyZWRlbnRpYWwpCiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKIAogICAgIC8vIE1ha2Ugc3VyZSBubyBjcmVkZW50aWFsIGxlZnQgYnkgcHJldmlv
dXMgdGVzdHMuCi0gICAgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9IFtb
W05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEiIHBv
cnQ6c2VydmVyLnBvcnQoKSBwcm90b2NvbDpOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFAgcmVhbG06
QCJ0ZXN0cmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RIVFRQQmFzaWNdIGF1dG9yZWxlYXNlXTsKLSAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0u
cHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6
cHJvdGVjdGlvblNwYWNlXTsKKyAgICBhdXRvIHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0TlMoW1tO
U1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0
OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAi
dGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
SFRUUEJhc2ljXSk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9j
bGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFj
ZS5nZXQoKV07CiAKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gc2VydmVy
LnJlcXVlc3QoKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKQEAg
LTM2MywyNSArMzYzLDI1IEBAIFRFU1QoQ2hhbGxlbmdlLCBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlh
bCkKICAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZFNlY29uZENoYWxsZW5nZSk7CiAKICAgICAvLyBD
bGVhciBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGNyZWF0ZWQgYnkgdGhpcyB0ZXN0LgotICAgIFtb
d2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50
aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2VdOworICAgIFtbd2ViVmlldyBj
b25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclBy
b3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogfQogCiBURVNUKENoYWxsZW5n
ZSwgQmFzaWNQZXJzaXN0ZW50Q3JlZGVudGlhbCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSTsKICAgICBIVFRQU2VydmVyIHNlcnZlcihIVFRQU2VydmVyOjpyZXNwb25kV2l0
aENoYWxsZW5nZVRoZW5PSyk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1VS
TFByb3RlY3Rpb25TcGFjZT4gcHJvdGVjdGlvblNwYWNlOwogICAgIGF1dG8gY3JlZGVudGlhbFN0
b3JhZ2UgPSBbTlNVUkxDcmVkZW50aWFsU3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV07
Ci0gICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS1dl
YlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CiAgICAgICAg
IHByb3RlY3Rpb25TcGFjZSA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2U7CiAgICAgICAgIE5T
VVJMQ3JlZGVudGlhbCAqZXhpc3RpbmdDcmVkZW50aWFsID0gW2NyZWRlbnRpYWxTdG9yYWdlIGRl
ZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZS5nZXQoKV07
CiAgICAgICAgIEVYUEVDVF9OVUxMKGV4aXN0aW5nQ3JlZGVudGlhbCk7CiAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShwcm90ZWN0aW9uU3BhY2UuZ2V0KCkuYXV0aGVudGljYXRpb25NZXRob2QsIE5T
VVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWMpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsV2l0aFVzZXI6QCJ0ZXN0dXNlciIgcGFzc3dvcmQ6QCJ0ZXN0cGFzc3dv
cmQiIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50XSk7CiAg
ICAgfTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICB3ZWJWaWV3LmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCldOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CiAKQEAgLTU1MywxMSArNTUzLDExIEBAIFRFU1QoV2ViS2l0LCBGYXN0U2VydmVyVHJ1
c3QpCiAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOwogICAgIH0sIFdURjo6bnVsbG9wdCwgMik7
CiAjZW5kaWYKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpkYXRhU3RvcmVDb25maWd1cmF0aW9uID0g
W1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKLSAgICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRp
b25FbmFibGVkID0gWUVTOwotICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IFtb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3Rv
cmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkYXRhU3RvcmVD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0RmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQ6WUVTXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJz
aXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNl
KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
ICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbU2VydmVyVHJ1c3REZWxlZ2F0ZSBuZXddKTsK
ICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovL2xvY2Fs
aG9zdDolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2FyZFRlc3RzLm1tCmluZGV4IDRlNTVjZjAx
YTk3ZjI3OWI0MmRjMGRhZDUyOGNhZTY1YmFhNmFhN2UuLjY1YzA3NzhkYTExZmMwYmYxYThiZDI1
NzM5ZDIyNjhlMDk0OGUxNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbQpAQCAtMTI5LDE0ICsxMjksMTQgQEAg
c3RhdGljIHZvaWQgd3JpdGVNdWx0aXBsZU9iamVjdHNUb1BsYXRmb3JtUGFzdGVib2FyZCgpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIE5TU3RyaW5nICpyZWFkTWFya3VwRnJvbVBhc3RlYm9hcmQoKQor
c3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gcmVhZE1hcmt1cEZyb21QYXN0ZWJvYXJkKCkKIHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNEYXRhICpyYXdEYXRhID0gW05TUGFzdGVib2FyZC5n
ZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2Fy
ZFR5cGUoKV07CiAjZWxzZQogICAgIE5TRGF0YSAqcmF3RGF0YSA9IFtVSVBhc3RlYm9hcmQuZ2Vu
ZXJhbFBhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVIVE1MXTsKICNlbmRpZgotICAgIHJldHVybiBbW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhEYXRhOnJhd0RhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
cmF3RGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogfQogCiBURVNUKENsaXBi
b2FyZFRlc3RzLCBSZWFkTXVsdGlwbGVJdGVtcykKQEAgLTE2MCw3ICsxNjAsNyBAQCBURVNUKENs
aXBib2FyZFRlc3RzLCBXcml0ZVNhbml0aXplZE1hcmt1cCkKICAgICBhdXRvIHdlYlZpZXcgPSBj
cmVhdGVXZWJWaWV3Rm9yQ2xpcGJvYXJkVGVzdHMoKTsKICAgICBbd2ViVmlldyB3cml0ZVN0cmlu
ZzpAIjxzY3JpcHQ+Lyogc3VwZXIgc2VjcmV0ICovPC9zY3JpcHQ+VGhpcyBpcyBhIHRlc3QuIiB0
b0NsaXBib2FyZFdpdGhUeXBlOkAidGV4dC9odG1sIl07CiAKLSAgICBOU1N0cmluZyAqd3JpdHRl
bk1hcmt1cCA9IHJlYWRNYXJrdXBGcm9tUGFzdGVib2FyZCgpOworICAgIGF1dG8gd3JpdHRlbk1h
cmt1cCA9IHJlYWRNYXJrdXBGcm9tUGFzdGVib2FyZCgpOwogICAgIEVYUEVDVF9UUlVFKFt3cml0
dGVuTWFya3VwIGNvbnRhaW5zU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3QuIl0pOwogICAgIEVYUEVD
VF9GQUxTRShbd3JpdHRlbk1hcmt1cCBjb250YWluc1N0cmluZzpAInN1cGVyIHNlY3JldCJdKTsK
ICAgICBFWFBFQ1RfRkFMU0UoW3dyaXR0ZW5NYXJrdXAgY29udGFpbnNTdHJpbmc6QCI8c2NyaXB0
PiJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW0KaW5kZXggYWU2ZWJh
OWRlN2E3MTY3YWRiOGE4MjRmMDQ4OTVlMWQ2NTJlM2U5OC4uZGQ4NWJhMGNkYjExY2RiZmM3OGM1
MjAzYThkOWJhYzI2N2YxOGJlMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKikKIAogLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdL
VVJMU2NoZW1lVGFzaz4pdXJsU2NoZW1lVGFzawogewotICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJl
Y2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hl
bWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdXJsU2No
ZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3Jl
bGVhc2UoKV07CiAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZXh0TWVudXMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRleHRNZW51cy5tbQpp
bmRleCBkM2QwN2Q2OWU2Mjg1YWM0NDkyMTNhYTc0NTU3NDE2YWVhNzVlZTA4Li42MzRmYjY3MTQ5
MWM0YzEzM2ViNGZhNzU3Yzc5M2M2NTUzNWQ5MGUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRleHRNZW51cy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRleHRNZW51cy5tbQpAQCAtNzQsNyArNzQs
NyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnVDb25m
aWd1cmF0aW9uRm9yRWxlbWVudDooV0tDb250ZQogICAgIGNvbnRleHRNZW51UmVxdWVzdGVkID0g
dHJ1ZTsKICAgICBVSUNvbnRleHRNZW51Q29udGVudFByZXZpZXdQcm92aWRlciBwcmV2aWV3UHJv
dmlkZXIgPSBeVUlWaWV3Q29udHJvbGxlciAqICgpCiAgICAgewotICAgICAgICByZXR1cm4gW1tb
VUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1
cm4gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgp
OwogICAgIH07CiAgICAgVUlDb250ZXh0TWVudUFjdGlvblByb3ZpZGVyIGFjdGlvblByb3ZpZGVy
ID0gXlVJTWVudSAqKE5TQXJyYXk8VUlNZW51RWxlbWVudCAqPiAqc3VnZ2VzdGVkQWN0aW9ucykK
ICAgICB7CkBAIC0xNDEsNyArMTQxLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6KFdLQ29udGUKICAgICBj
b250ZXh0TWVudVJlcXVlc3RlZCA9IHRydWU7CiAgICAgVUlDb250ZXh0TWVudUNvbnRlbnRQcmV2
aWV3UHJvdmlkZXIgcHJldmlld1Byb3ZpZGVyID0gXlVJVmlld0NvbnRyb2xsZXIgKiAoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFtbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICB9OwogICAgIFVJQ29udGV4dE1lbnVBY3Rpb25Q
cm92aWRlciBhY3Rpb25Qcm92aWRlciA9IF5VSU1lbnUgKihOU0FycmF5PFVJTWVudUVsZW1lbnQg
Kj4gKnN1Z2dlc3RlZEFjdGlvbnMpCiAgICAgewpAQCAtMzA5LDcgKzMwOSw3IEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0TWVudUNvbmZpZ3VyYXRpb25Gb3JF
bGVtZW50OihXS0NvbnRlCiAgICAgY29udGV4dE1lbnVSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIFVJ
Q29udGV4dE1lbnVDb250ZW50UHJldmlld1Byb3ZpZGVyIHByZXZpZXdQcm92aWRlciA9IF5VSVZp
ZXdDb250cm9sbGVyICogKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbW1tVSVZpZXdDb250cm9s
bGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
VUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfTsKICAg
ICBVSUNvbnRleHRNZW51QWN0aW9uUHJvdmlkZXIgYWN0aW9uUHJvdmlkZXIgPSBeVUlNZW51ICoo
TlNBcnJheTxVSU1lbnVFbGVtZW50ICo+ICpzdWdnZXN0ZWRBY3Rpb25zKQogICAgIHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCmluZGV4
IDZjYWI0YmI4OWZkY2MwZDkzNTQzZjYwMmYwYjFjYjEwYzViMmQwMDUuLmEwYzRkYjhlYWI2MTNk
YmRiYjAzYTQ4NGI5NmEwYTg2NzEzZTNiN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQpAQCAtNjgsMTEgKzY4LDExIEBAIE5TRGF0
YSAqcmVhZEhUTUxEYXRhRnJvbVBhc3RlYm9hcmQoKQogCiBOU1N0cmluZyAqcmVhZEhUTUxTdHJp
bmdGcm9tUGFzdGVib2FyZCgpCiB7Ci0gICAgaWQgdmFsdWUgPSBbW1VJUGFzdGVib2FyZCBnZW5l
cmFsUGFzdGVib2FyZF0gdmFsdWVGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlSFRNTF07CisgICAgUmV0YWluUHRyPGlkPiB2YWx1ZSA9IFtbVUlQYXN0ZWJvYXJk
IGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZvclBhc3RlYm9hcmRUeXBlOihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVIVE1MXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0
YSBjbGFzc11dKQotICAgICAgICB2YWx1ZSA9IFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERh
dGE6KE5TRGF0YSAqKXZhbHVlIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIHZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6KE5TRGF0YSAqKXZhbHVlIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAg
ICAgQVNTRVJUKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKLSAgICBy
ZXR1cm4gKE5TU3RyaW5nICopdmFsdWU7CisgICAgcmV0dXJuIChOU1N0cmluZyAqKXZhbHVlLmF1
dG9yZWxlYXNlKCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zLm1tCmluZGV4IGI4NDIzMTE3NGYzYTA1MmRjYzMyY2JjZTAzM2EzNDExNjJhOThiZDEu
LmQ3YjM2OTU3ZjI5MTQ1NTRhYTU3YjFkZDRmM2Y3YmZmOWI5MTg3MzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rl
dmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnMubW0KQEAgLTQyLDcgKzQyLDcgQEAgVEVTVChXZWJL
aXQsIERldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnMpCiAgICAgW2RhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0QWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9y
VGVzdGluZzpZRVNdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKIAogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVybyBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2lu
ZG93OllFU10pOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rpc3BsYXlOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9EaXNwbGF5TmFtZS5tbQppbmRleCA3MWQyYTVkYzdmN2ZiZDU1NjVhMDFkYWVlNTA1ZTUx
YTVmNTMwNTdlLi44YWQ4YmQ4ZmY4ZGQxZDNiM2M0OTAwY2EwY2ZlM2E0OTEyNzI5MTNmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rpc3BsYXlOYW1l
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGlzcGxheU5h
bWUubW0KQEAgLTU2LDEwICs1NiwxMCBAQCBzdGF0aWMgdm9pZCBjaGVja1VudGlsRGlzcGxheU5h
bWVJcyhXS1dlYlZpZXcgKndlYlZpZXcsIE5TU3RyaW5nICpleHBlY3RlZE5hbWUsCiAKIFRFU1Qo
V2ViS2l0LCBDdXN0b21EaXNwbGF5TmFtZSkKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7CiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lVG9TZXQgPSBAInRlc3QgZGlz
cGxheSBuYW1lIjsKLSAgICBjb25maWd1cmF0aW9uLl9wcm9jZXNzRGlzcGxheU5hbWUgPSBkaXNw
bGF5TmFtZVRvU2V0OwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX3Byb2Nlc3NE
aXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lVG9TZXQ7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgd2ViIHByb2Nlc3MiXTsKIAog
ICAgIGJvb2wgZG9uZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggYTIxN2FlZjRhZjhiMDU3M2QwZTIwY2FlMmE2
NjU0ZjUyYmViMDFlNy4uYjQwMzU2ZmYyNDc4NmM4YjNmZGIyNDBlNGYxMzVkYjIyM2RhYmIwZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCkBAIC04OTQsMTAgKzg5NCwxMCBAQCBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3V2l0
aERvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGllcihzaXplX3QgbXVsdGlwbGllcgogICAgIHN0
YXRpYyBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW0Rvd25sb2FkTmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG5ld10pOwogICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi50ZXN0U3BlZWRNdWx0aXBsaWVyID0gbXVsdGlwbGllcjsKKyAgICBhdXRv
IGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBuZXddKTsKKyAgICBbZGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRUZXN0U3Bl
ZWRNdWx0aXBsaWVyOm11bHRpcGxpZXJdOwogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVs
ZWFzZV1dOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFk
b3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sLl9k
b3dubG9hZERlbGVnYXRlID0gbW9uaXRvckRlbGVnYXRlKCkuZ2V0KCk7CkBAIC0xNDU1LDEzICsx
NDU1LDEzIEBAIFRFU1QoV0tEb3dubG9hZCwgRmluaXNoU3VjY2Vzc2Z1bGx5KQogewogICAgIGF1
dG8gc2VydmVyID0gc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKCk7CiAgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRl
RGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CiAgICAgICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5wcm9ncmVzcy5maWxlVVJMKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAg
ICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChkb3dubG9hZC5wcm9ncmVzcy5maWxlVVJMKTsKQEAg
LTE0NzMsNyArMTQ3Myw3IEBAIFRFU1QoV0tEb3dubG9hZCwgRmluaXNoU3VjY2Vzc2Z1bGx5KQog
CiAgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSk7CiAKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLApAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgc3RhdGljIHZvaWQgcmVz
dW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRp
b24pCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIGNoZWNrRmlsZUNvbnRlbnRzKGRl
c3RpbmF0aW9uLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwogCi0gICAgICAgIGF1dG8gKmRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwogICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAKICAgICAgICAg
W3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpyZXN1bWVEYXRhIGNvbXBsZXRp
b25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKQEAgLTE1MDAsOCArMTUwMCw4IEBA
IHN0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwg
TlNVUkwgKmRlc3RpbmF0aW9uKQogICAgICAgICAKICAgICAgICAgX19ibG9jayBib29sIGRvd25s
b2FkZWRTZWNvbmQ1ayA9IGZhbHNlOwogICAgICAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25s
b2FkLmdldCgpLmRlbGVnYXRlKTsKLSAgICAgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5n
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIHJldGFpbmVkRG93
bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUu
Z2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH07CiAK
QEAgLTE1MTUsNyArMTUxNSw3IEBAIHN0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2Fk
KE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQogICAgICAgICBbcmV0YWlu
ZWREb3dubG9hZC5nZXQoKS5wcm9ncmVzcyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07
CiAKICAgICAgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOwotICAgICAgICBkZWxl
Z2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKSwgZG93
bmxvYWQpOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoZG93bmxvYWRlZFNlY29uZDVrKTsKICAg
ICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CkBAIC0xNTI2LDcgKzE1MjYsNyBAQCBzdGF0aWMg
dm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJMICpk
ZXN0aW5hdGlvbikKICAgICAgICAgW3JldGFpbmVkRG93bmxvYWQuZ2V0KCkucHJvZ3Jlc3MgcmVt
b3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3Vu
dCIgY29udGV4dDpuaWxdOwogCiAgICAgICAgIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMo
ZGVzdGluYXRpb24pOwotICAgICAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Cisg
ICAgICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAogICAgICAgICB9KTsKICAgICAgICAgRVhQRUNU
X0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkud2ViVmlldywgd2ViVmlldy5nZXQoKSk7CkBAIC0x
NTU4LDE1ICsxNTU4LDE1IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2VsQW5kUmVzdW1lKQogewog
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CiAgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiBy
ZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3du
bG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAg
ICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBl
Y3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07CiAgICAgfTsKQEAgLTE1ODIsNyArMTU4Miw3
IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2VsQW5kUmVzdW1lKQogICAgIHdoaWxlICghcmV0YWlu
ZWRSZXN1bWVEYXRhKQogICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwogICAgIHJlc3VtZUFu
ZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9h
ZEZpbGUpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCkBAIC0xNTkyLDI0ICsxNTkyLDI0IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2Fu
Y2VsQW5kUmVzdW1lKQogCiBURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCiB7Ci0gICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10p
OwogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwogICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpZZXMsIFsmXSAoVGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CiAgICAgICAgIHdhaXRGb3JGaXJzdDVr
KHJldGFpbmVkRG93bmxvYWQpOwogICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOwogICAg
IH0pOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiByZXRhaW5lZFJlc3VtZURhdGE7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBtYWtlQmxvY2tQdHIoWyZdKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgp
Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gbWFrZUJsb2NrUHRyKFsmXShX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKICAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlv
blVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRl
Y2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAg
ICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9h
ZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAg
ICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxv
YWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKICAgICAgICAgICAgIEVY
UEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CiAgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0
KTsKQEAgLTE2MjIsNyArMTYyMiw3IEBAIFRFU1QoV0tEb3dubG9hZCwgRmFpbEFuZFJlc3VtZSkK
ICAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKICAgICAgICAgVXRpbDo6c3BpblJ1bkxv
b3AoKTsKICAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0
KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMTYzNSwxNSArMTYzNSwxNSBAQCBU
RVNUKFdLRG93bmxvYWQsIENhbmNlbE5vUmVzdW1lRGF0YSkKIHsKICAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8pOwogICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0
YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxv
YWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAg
ICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rv
d25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0
ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwogICAgIH07CkBAIC0xNjU3LDcgKzE2NTcsNyBA
QCBURVNUKFdLRG93bmxvYWQsIENhbmNlbE5vUmVzdW1lRGF0YSkKICAgICB9XTsKICAgICBVdGls
OjpydW4oJmRvbmUpOwogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxl
LCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0xNjY3LDI0ICsxNjY3LDI0IEBAIFRF
U1QoV0tEb3dubG9hZCwgQ2FuY2VsTm9SZXN1bWVEYXRhKQogCiBURVNUKFdLRG93bmxvYWQsIEZh
aWxOb1Jlc3VtZURhdGEpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10pOwogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRh
aW5lZERvd25sb2FkOwogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1
ZGVFVGFnOjpObywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsK
ICAgICAgICAgd2FpdEZvckZpcnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAgICAgICAgIGNvbm5l
Y3Rpb24udGVybWluYXRlKCk7CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
IAogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gbWFrZUJsb2NrUHRyKFsmXShXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5n
ZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG1ha2VCbG9ja1B0cihb
Jl0oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CiAgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGlu
YXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNT
dHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQo
KS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBtYWtlQmxv
Y2tQdHIoWyZdKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0
YSkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gbWFrZUJsb2Nr
UHRyKFsmXShXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEp
IHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3
b3JrQ29ubmVjdGlvbkxvc3QpOwogICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7
CkBAIC0xNjk0LDcgKzE2OTQsNyBAQCBURVNUKFdLRG93bmxvYWQsIEZhaWxOb1Jlc3VtZURhdGEp
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAgICAgVXRpbDo6
cnVuKCZkb25lKTsKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwg
bG9uZ1N0cmluZzw1MDAwPignYScpKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMTczOSwyNSArMTczOSwyNSBAQCBURVNU
KFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQpCiAgICAgfSk7CiAKICAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgd2ViVmlldy5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVz
cG9uc2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5k
ZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJl
c3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAg
ICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsKICAgICB9OwogICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOwotICAgIGRlbGVnYXRlLmRpZEZh
aWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVz
dW1lRGF0YSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93
bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAg
RVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwog
ICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOwogICAgIH07CiAgICAgX19i
bG9jayBib29sIGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kb3dubG9h
ZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxv
YWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgewogICAgICAgICBkb3dubG9hZEZpbmlzaGVk
ID0gdHJ1ZTsKICAgICB9OwogCkBAIC0xNzY4LDEyICsxNzY4LDEyIEBAIFRFU1QoV0tEb3dubG9h
ZCwgUmVzdW1lQWZ0ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxv
YWRGaWxlLnBhdGhdKTsKICAgICBFWFBFQ1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CiAgICAg
W3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH1dOwogICAgIFV0aWw6OnJ1bigmZG93bmxvYWRGaW5p
c2hlZCk7CiAgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdT
dHJpbmc8MTAwPigneCcpKTsKIAotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0xNzg3LDE1ICsxNzg3LDE1IEBAIFRFU1QoV0tE
b3dubG9hZCwgUmVzdW1lQWZ0ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKIAogdm9pZCB0ZXN0UmVzdW1l
QWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQogewotICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4g
cmV0YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93
bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICos
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAgICB9OwpA
QCAtMTgxNywxMyArMTgxNywxMyBAQCB2b2lkIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhO
U1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QsIE5TVVJMICpleHBlY3RlZERvdwogCiAgICAgX19i
bG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2Fk
RnJvbVJlc3VtZURhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKikgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAg
ICAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7
CiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwogICAgICAgICB9OwogICAgIH1dOwogICAg
IFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMTkyNyw3ICsxOTI3LDcgQEAgVEVTVChX
S0Rvd25sb2FkLCBSZXN1bWVXaXRoSW52YWxpZFJlc3VtZURhdGEpCiB7CiAgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAgICAgRVhQ
RUNUX1RSVUUoW1tAImluaXRpYWwgZGF0YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNh
bGx5OllFU10pOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBi
b29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIEB0cnkgewogICAgICAgICBbd2ViVmll
dyByZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpe
KFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CkBAIC0xOTQ0LDE1ICsxOTQ0LDE1IEBAIFRFU1QoV0tE
b3dubG9hZCwgUmVzdW1lQ2FudFJlY29ubmVjdCkKIHsKICAgICBhdXRvIHNlcnZlciA9IGRvd25s
b2FkVGVzdFNlcnZlcigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBG
aWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAg
ICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKLSAgICBk
ZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
ewogICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
VXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVj
aWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAg
ICAgICB9OwogICAgIH07CkBAIC0xOTc4LDE2ICsxOTc4LDE2IEBAIFRFU1QoV0tEb3dubG9hZCwg
UmVzdW1lQ2FudFJlY29ubmVjdCkKICAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCiAgICAg
ICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CiAKLSAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9
IGRlbGVnYXRlLmdldCgpOwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgZGVs
ZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwg
TlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OwogICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RU
b0hvc3QpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1lRGF0YSk7CiAgICAgICAgIGRv
bmUgPSB0cnVlOwogICAgIH07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKLSAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5n
ZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMjAwNCw5
ICsyMDA0LDkgQEAgVEVTVChXS0Rvd25sb2FkLCBVbmtub3duQ29udGVudExlbmd0aCkKICAgICAg
ICAgfSk7CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5T
KFtEb3dubG9hZE9ic2VydmVyIG5ld10pOwpAQCAtMjAxNywxMCArMjAxNywxMCBAQCBURVNUKFdL
RG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3RoKQogICAgIH07CiAKICAgICBfX2Jsb2NrIFJl
dGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CiAgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlv
blVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07CiAgICAg
ICAgIFtkb3dubG9hZC5wcm9ncmVzcyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07CkBA
IC0yMDMwLDcgKzIwMzAsNyBAQCBURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3Ro
KQogICAgIFtyZXRhaW5lZERvd25sb2FkLmdldCgpLnByb2dyZXNzIHJlbW92ZU9ic2VydmVyOm9i
c2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIGNvbnRleHQ6bmls
XTsKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmlu
Zzw1MDAwPignYScpKTsKIAotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMDQwLDEzICsyMDQwLDEzIEBAIFRFU1QoV0tEb3du
bG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCiAKIFRFU1QoV0tEb3dubG9hZCwgSW52YWxpZEFy
Z3VtZW50cykKIHsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAg
X19ibG9jayBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwogICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRV
c2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0g
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgQHRyeSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmcvIl0pOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
KSB7CkBAIC0yMDU2LDcgKzIwNTYsNyBAQCBURVNUKFdLRG93bmxvYWQsIEludmFsaWRBcmd1bWVu
dHMpCiAgICAgICAgIH07CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRpb24p
OwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAogICAgIH0pOwogfQpAQCAtMjA3MywzMiArMjA3MywzMiBAQCBURVNUKFdL
RG93bmxvYWQsIFJlZGlyZWN0QWxsb3cpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNl
cnZlcigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRl
IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10p
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxl
Q29weV0gYXV0b3JlbGVhc2VdOwotICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5
IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgYXV0byBzZXJ2
ZXJSZXF1ZXN0ID0gYWRvcHROUyhbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0pOworICAg
IFtzZXJ2ZXJSZXF1ZXN0IHNldEhUVFBCb2R5OltAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgCiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkRG93
bmxvYWQgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNl
cnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewot
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS53
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNw
b25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgW3dlYlZpZXcgc3RhcnRE
b3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkud2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5KSkgewogICAgICAgICAgICAgRVhQRUNUX05VTEwocmVxdWVzdC5IVFRQ
Qm9keSk7IC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4K
LSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcs
IHNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0IFVSTF0u
YWJzb2x1dGVTdHJpbmcpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0Nv
ZGUsIDMwMSk7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVy
RmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOwotICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5V
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0
ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1
dGVTdHJpbmcsIFtbc2VydmVyUmVxdWVzdCBVUkxdIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1dGVTdHJpbmcpOwogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3cpOwogICAgICAgICB9Owot
ICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dl
c3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3Vn
Z2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInJlZGlyZWN0VGFy
Z2V0LnR4dCIpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5wYXRo
LCAiL3JlZGlyZWN0VGFyZ2V0Iik7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxv
YWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5wYXRoLCAiLyIpOwotICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZl
clJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVx
dWVzdCBVUkxdLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZG93
bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICBkZWxlZ2F0ZS5nZXQo
KS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CiAgICAgICAgICAgICBmaW5p
c2hlZERvd25sb2FkID0gdHJ1ZTsKICAgICAgICAgfTsKICAgICB9XTsKQEAgLTIxMDgsNyArMjEw
OCw3IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVkaXJlY3RBbGxvdykKICAgICAKICAgICBFWFBFQ1Rf
RVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOwogCi0gICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAogICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmluaXNoCkBAIC0yMTE5LDIxICsyMTE5LDIxIEBAIFRFU1QoV0tEb3dubG9hZCwgUmVkaXJl
Y3RDYW5jZWwpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOwogICAgIE5T
VVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7Ci0gICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0gZmFsc2U7
CiAgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS53aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbiA9IF4oV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3kpKSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKICAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFt
ZSJdLCAiQ3VzdG9tLVZhbHVlIik7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCk7CiAg
ICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxv
YWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBkZWxl
Z2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vt
ZURhdGEpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxF
cnJvckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ckNhbmNlbGxlZCk7CkBAIC0yMTQxLDcgKzIxNDEsNyBAQCBURVNUKFdLRG93bmxvYWQsIFJlZGly
ZWN0Q2FuY2VsKQogICAgICAgICB9OwogICAgIH1dOwogICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVk
KTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxs
UmVkaXJlY3QsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKICAg
ICB9KTsKQEAgLTIxNTMsMTQgKzIxNTMsMTQgQEAgVEVTVChXS0Rvd25sb2FkLCBEb3dubG9hZFJl
cXVlc3RGYWlsdXJlKQogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSk7CiAgICAgTlNVUkxSZXF1
ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKICAgICBzZXJ2ZXIuY2FuY2Vs
KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmFp
bGVkID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2
ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGlk
RmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBO
U0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tE
b3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsK
ICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21h
aW4pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RD
b25uZWN0VG9Ib3N0KTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CkBAIC0yMTY4LDcgKzIx
NjgsNyBAQCBURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdEZhaWx1cmUpCiAgICAgfV07
CiAgICAgVXRpbDo6cnVuKCZmYWlsZWQpOwogCi0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKICAgICB9KTsKIH0KQEAgLTIx
NzksMTcgKzIxNzksMTcgQEAgVEVTVChXS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3Q0MDQpCiAg
ICAgICAgIHsgIi8iLCB7IDQwNCwgeyB9LCAiaHR0cCBib2R5IiB9IH0KICAgICB9KTsKICAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
LSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5p
c2ggPSBmYWxzZTsKICAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewot
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRl
bGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5p
c2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRv
d25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICAgICAg
ZGlkRmluaXNoID0gdHJ1ZTsKICAgICAgICAgfTsKICAgICB9XTsKQEAgLTIxOTcsNyArMjE5Nyw3
IEBAIFRFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQogCiAgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJodHRwIGJvZHkiKTsKIAotICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gsCiAgICAgfSk7CkBAIC0yMjA3
LDE1ICsyMjA3LDE1IEBAIFRFU1QoV0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKIHsK
ICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOwogICAgIE5TVVJMICpleHBl
Y3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4g
cmV0YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhw
ZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwogICAgIH07CkBAIC0yMjIzLDE0ICsyMjIz
LDE0IEBAIFRFU1QoV0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKICAgICB3YWl0Rm9y
Rmlyc3Q1ayhyZXRhaW5lZERvd25sb2FkKTsKICAgICAKICAgICBfX2Jsb2NrIGJvb2wgdGVybWlu
YXRlZCA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxv
YWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlk
RmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICop
IHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFp
bik7CiAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5l
Y3Rpb25Mb3N0KTsKICAgICAgICAgdGVybWluYXRlZCA9IHRydWU7CiAgICAgfTsKLSAgICBbd2Vi
Vmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzXTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZSBfdGVy
bWluYXRlTmV0d29ya1Byb2Nlc3NdOwogICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7Ci0gICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFj
dGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwK
QEAgLTIyNDUsMTMgKzIyNDUsMTMgQEAgVEVTVChXS0Rvd25sb2FkLCBTdWdnZXN0ZWRGaWxlbmFt
ZUZyb21Ib3N0KQogICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9CiAgICAg
fSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05v
dEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
LmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5n
ICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
ewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAu
MC4xLnR4dCIpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwpAQCAtMjI2MSw3ICsyMjYxLDcgQEAgVEVTVChXS0Rv
d25sb2FkLCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9y
RG93bmxvYWREaWRGaW5pc2hdOwogCiAgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTIyNzMsMTEgKzIyNzMsMTEg
QEAgVEVTVChXS0Rvd25sb2FkLCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQogVEVTVChXS0Rv
d25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAg
cmVxdWVzdC5IVFRQQm9keSA9IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKLSAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGF1dG8g
cmVxdWVzdCA9IGFkb3B0TlMoW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldKTsKKyAgICBb
cmVxdWVzdCBzZXRIVFRQQm9keTpbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ11dOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6cmVx
dWVzdC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAg
ICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5IVFRQQm9keSk7IC8v
IEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KICAgICAgICAg
ZG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC0yMjkxLDE3ICsyMjkxLDE3IEBAIFRFU1QoV0tEb3du
bG9hZCwgUGF0aE11c3RFeGlzdCkKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSBb
dGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOwogCiAg
ICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKLSAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKLSAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRl
bGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAg
ZGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICopIHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5k
b21haW4sIE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CkBAIC0yMzA5LDcgKzIzMDksNyBAQCBURVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhpc3Qp
CiAgICAgfTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKICAg
ICBVdGlsOjpydW4oJmZhaWxlZCk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTIzMjMsOCArMjMyMyw4IEBAIFRFU1QoV0tE
b3dubG9hZCwgRmlsZU11c3ROb3RFeGlzdCkKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhh
dERvZXNOb3RFeGlzdCgpOwogICAgIF9fYmxvY2sgYXV0byByZXRhaW5lZERlbGVnYXRlID0gYWRv
cHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6cmV0
YWluZWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRh
IG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRv
VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CiAKQEAgLTIzNTYsMTcg
KzIzNTYsMTcgQEAgVEVTVChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQogVEVTVChXS0Rv
d25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3du
bG9hZFRlc3RTZXJ2ZXIoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9f
YmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURl
c3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdL
RG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CiAgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKICAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CkBAIC0yMzc0LDcgKzIzNzQsNyBAQCBURVNUKFdLRG93bmxvYWQsIERl
c3RpbmF0aW9uTnVsbFN0cmluZykKICAgICB9OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOwogICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKLSAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5n
ZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMjM4OCwy
OSArMjM4OCwyOSBAQCBURVNUKFdLRG93bmxvYWQsIERlc3RpbmF0aW9uTnVsbFN0cmluZykKIFRF
U1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlU3VjY2VzcykKIHsKICAgICBIVFRQU2VydmVyIHNlcnZl
cih7eyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH19fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwog
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOwogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRv
d25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRl
LmdldCgpLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAg
ICAgICBmaW5pc2hlZCA9IHRydWU7CiAgICAgfTsKICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRD
aGFsbGVuZ2UgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgZGVsZWdhdGUuZ2V0
KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKICAgICAgICAgcmVjZWl2ZWRD
aGFsbGVuZ2UgPSB0cnVlOwogICAgIH07Ci0gICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRlLmdl
dCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwog
ICAgIH07CiAgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsK
ICAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZSk7CiAgICAgY2hlY2tGaWxlQ29udGVu
dHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7Ci0gICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKQEAgLTI0MjEsMTAgKzI0MjEsMTAgQEAg
VEVTVChXS0Rvd25sb2FkLCBDaGFsbGVuZ2VTdWNjZXNzKQogVEVTVChXS0Rvd25sb2FkLCBDaGFs
bGVuZ2VGYWlsdXJlKQogewogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSwgSFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3
IG5ld10pOwogICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5k
aWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3Is
IE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1
bWVEYXRhKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOwogI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKICAgICAgICAg
Ly8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBm
b3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCkBAIC0yNDM1LDE5ICsyNDM1LDE5IEBAIFRFU1Qo
V0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAg
ICB9OwogICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOwotICAgIGRl
bGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CiAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9k
LCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIG5pbCk7CiAgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKICAgICB9
OwogICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZmYWlsZWQpOwogI2lmICFV
U0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCiAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRD
aGFsbGVuZ2UpOwogI2VuZGlmCi0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICNpZiAhVVNFKExFR0FD
WV9DRk5FVFdPUktfRE9XTkxPQURTKQogICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFza3Mg
ZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlv
bi4KICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCkBA
IC0yNDY4LDExICsyNDY4LDExIEBAIHZvaWQgYmxvYlRlc3QoYm9vbCBkb3dubG9hZEZyb21OYXZp
Z2F0aW9uQWN0aW9uLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RG93bmxvYWRDCiAgICAgIn0iCiAg
ICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOwogICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBkZWxlZ2F0ZS5n
ZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rp
b24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKSB7CiAgICAgICAgIGlmIChbYWN0aW9uLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5n
IGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCiAgICAgICAgICAgICBFWFBFQ1RfRkFM
U0UoYWN0aW9uLnNob3VsZFBlcmZvcm1Eb3dubG9hZCk7CiAgICAgICAgIGVsc2UgewpAQCAtMjQ4
NSwyOSArMjQ4NSwyOSBAQCB2b2lkIGJsb2JUZXN0KGJvb2wgZG93bmxvYWRGcm9tTmF2aWdhdGlv
bkFjdGlvbiwgc3RkOjppbml0aWFsaXplcl9saXN0PERvd25sb2FkQwogICAgICAgICB9CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKICAg
ICB9OwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS0Rvd25s
b2FkICpkb3dubG9hZCkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoYWN0aW9uLnJlcXVlc3Qu
VVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9y
aWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOwotICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOwogICAgIH07Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOwogICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7
Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9u
VXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwg
TlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuc2NoZW1lLCAi
YmxvYiIpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJkb3du
bG9hZEZpbGVuYW1lIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKICAgICB9OwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgZGVs
ZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgIGRlbGVnYXRl
LmdldCgpLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKICAgICAgICAgZG9u
ZSA9IHRydWU7CiAgICAgfTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKLSAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCBleHBlY3RlZENhbGxiYWNrcyk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZS5nZXQoKSwgZXhwZWN0ZWRDYWxsYmFja3MpOwogfQogCiBURVNUKFdLRG93
bmxvYWQsIEJsb2JSZXNwb25zZSkKQEAgLTI1NDAsMjggKzI1NDAsMjggQEAgVEVTVChXS0Rvd25s
b2FkLCBCbG9iUmVzcG9uc2VOb0ZpbGVuYW1lKQogICAgICIgICAgYS5jbGljaygpOyIKICAgICAi
fSIKICAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7
Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
d2Via2l0Lm9yZy8iXV07Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
XihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgewogICAgICAg
ICBFWFBFQ1RfRkFMU0UoYWN0aW9uLnNob3VsZFBlcmZvcm1Eb3dubG9hZCk7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKICAgICB9Owot
ICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJl
c3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAid2Via2l0Lm9yZyIpOwotICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH07CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxl
bmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRl
LmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
c3VnZ2VzdGVkRmlsZW5hbWUsICJVbmtub3duIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5pbCk7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH07CiAgICAgVXRpbDo6cnVuKCZkb25l
KTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCkBAIC0yNTky
LDEyICsyNTkyLDEyIEBAIFRFU1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQogCiAg
ICAgTlNTdHJpbmcgKm1haW5IVE1MID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8aWZy
YW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGNoaWxkRnJhbWVTZXJ2
ZXIucG9ydCgpXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1dOwogCi0gICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2
aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKICAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25z
ZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcv
Il0KICAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Z10KICAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nXSkKQEAgLTI2MDUsMjEgKzI2MDUsMjEgQEAgVEVTVChXS0Rvd25sb2FkLCBTdWJmcmFt
ZU9yaWdpbmF0b3IpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWQpOwogICAgIH07Ci0gICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5V
Ukwuc2NoZW1lLCAiYmxvYiIpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2Zy
YW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsICIxMjcuMC4wLjEiKTsKICAgICAgICAgRVhQRUNUX0VR
KHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5wb3J0LCBncmFuZGNoaWxkRnJhbWVTZXJ2
ZXJQb3J0KTsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9OwogICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmlu
ZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0
ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9OwogICAg
IFV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9FdmVudEF0dHJpYnV0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCmluZGV4IGNlNGUyZGYxNjg1MzEzMjNhYjk3MmQ3N2Q0
OTM1YTkzYTliZjIzNmYuLjY2N2RhMzQ1OTMxYzAzNGEzNzAxZmYyODQwNTQwZjQ5YjM5YjJiNTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRB
dHRyaWJ1dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0V2ZW50QXR0cmlidXRpb24ubW0KQEAgLTEwMSwxMSArMTAxLDExIEBAIFRFU1QoRXZlbnRBdHRy
aWJ1dGlvbiwgQmFzaWMpCiAgICAgTlNVUkwgKnNlcnZlclVSTCA9IHNlcnZlci5yZXF1ZXN0KCku
VVJMOwogCiAgICAgYXV0byBleGFtcGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL2V4YW1wbGUuY29tLyJdOwotICAgIGF1dG8gYXR0cmlidXRpb24gPSBbW1tNb2NrRXZlbnRB
dHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgp
LlVSTCBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMXSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5fdWlF
dmVudEF0dHJpYnV0aW9uID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKWF0dHJpYnV0aW9uOwotICAg
IFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKLSAgICBbd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX2FsbG93VExTQ2VydGlmaWNhdGVDaGFpbjpAWyhpZCl0ZXN0Q2VydGlmaWNh
dGUoKS5nZXQoKV0gZm9ySG9zdDpzZXJ2ZXJVUkwuaG9zdF07CisgICAgYXV0byBhdHRyaWJ1dGlv
biA9IGFkb3B0TlMoW1tNb2NrRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRF
bmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMXSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIHdlYlZp
ZXcuZ2V0KCkuX3VpRXZlbnRBdHRyaWJ1dGlvbiA9IChVSUV2ZW50QXR0cmlidXRpb24gKilhdHRy
aWJ1dGlvbi5nZXQoKTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFT
dG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKyAgICBbW3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dUTFNDZXJ0aWZpY2F0ZUNo
YWluOkBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSBmb3JIb3N0OnNlcnZlclVSTC5ob3N0
XTsKICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJM
Rm9yVGVzdGluZzpzZXJ2ZXJVUkwgY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAgICAgW3dlYlZp
ZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6WUVT
IGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgICAgICBOU1N0cmluZyAqaHRtbCA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD5mZXRjaCgnJUBjb252ZXJzaW9uUmVxdWVz
dEJlZm9yZVJlZGlyZWN0Jyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIsIHNlcnZlclVSTF07
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggN2M4NzgyNmZlZTZmNGU0NDE5NzA3YmU3NWQy
MDZkY2U4NWE2NGU3NC4uYjIzMDJiNTU5NGU3NGJhZmM1YmYwZDE5NjdmYzg1MmY1ZTAwMmZkMiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTE2LDcgKzExNiw3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNj
aGVtZVRhc2s+KXRhCiAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LWFib3V0LWJsYW5rLXN1YmZy
YW1lIl0pCiAgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9keSBpZCA9ICdib2R5Jz48L2JvZHk+PGlm
cmFtZSBpZD0naWZyYW1lJz48L2lmcmFtZT48L2JvZHk+IjsKIAotICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9u
c2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxl
YXNlKCldOwogICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFt0YXNrIGRpZEZpbmlzaF07CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
Qk11bHRpUHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tCmluZGV4IDZmNjdkYzI3ZWRjM2QyNzQ1YjE3MGU0ODJi
Y2Q5MGU4NDk0Y2I5NWEuLjg3YWI5MWQ2ZTZlYjc3NDMzNTRjZGU0YWY4M2E0Y2NmNTE2NmNkZjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBX
S1NjcmlwdE1lc3NhZ2UgKmdldE5leHRNZXNzYWdlKCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIH0KIAotICAgIHJldHVybiBb
W3NjcmlwdE1lc3NhZ2VzLnRha2VGaXJzdCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBzY3JpcHRNZXNzYWdlcy50YWtlRmlyc3QoKS5hdXRvcmVsZWFzZSgpOwogfQogCiBURVNU
KEluZGV4ZWREQiwgSW5kZXhlZERCTXVsdGlQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNr
d2FyZENvbXBhdGliaWxpdHkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbQppbmRl
eCBjNzIwMWRhMDkxZjE2YjUyYjRhODU4ZmZhNGQ0ZWRlMDU2ZWMzZWY1Li5mM2MzZDg3ZDg1MDJl
NTE3ZDg1ZjYwYWZkMTNhMmEyYTkwYjM1ZjA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbQpAQCAtNzUs
NyArNzUsNyBAQCBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpnZXROZXh0TWVzc2FnZSgpCiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gW1tzY3JpcHRNZXNzYWdlcy50YWtlRmlyc3QoKSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogVEVTVChJbmRleGVkREIsIFN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eSkKQEAgLTk2LDcgKzk2LDcgQEAgVEVTVChJbmRleGVkREIsIFN0cnVjdHVyZWRD
bG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eSkKIAogICAgIFJldGFpblB0cjxfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAg
ICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkgPSBpZGJQYXRoOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFT
dG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWRiUGF0aCA9IFtp
ZGJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImZpbGVfXzAiXTsKICAgICBpZGJQ
YXRoID0gW2lkYlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYmFja3dhcmRfY29t
cGF0aWJpbGl0eSJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJUZW1wRmlsZVNpemUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbQppbmRleCBlN2I5OTIyOGNl
ODc2ZTQ0N2U2NDc4MmVmOWQ4N2YyNWFkYzliOWZhLi45MDYwZmI5Mjg5ZjdkZDdjNjZjNjQ2Zjg5
YjI1MWU0NmViNTkxNmMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbQpAQCAtNzEsNyAr
NzEsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGVtcEZpbGVTaXplKQogICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpZGJQYXRoLmdl
dCgpOwogCi0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgY29uZmlndXJhdGlv
bi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU1Nl
dCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJh
c2VzLCBuaWxdKTsKIAogICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tCmluZGV4IDFiMDYyNmUyYTA1MzA5
Y2I2NWY5ZTM4MDQwYWNlNGE0MjQ1ZDQ4ZjguLmE4NjcyMzAwY2FiMDY1ZTYxN2UxMmU2ZTc3YmYw
MDc0MjE4ZTk5MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSklURW5hYmxlZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0pJVEVuYWJsZWQubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgVEVTVChXZWJLaXQsIEpJVEVu
YWJsZWQpCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiBzZXRKSVRFbmFibGVkOk5PXTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOmFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1
dG9yZWxlYXNlKCldOwogICAgIGF1dG8gd2ViVmlld05vSklUID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBjaGVja0pJVEVuYWJsZWQoV1RGTW92
ZSh3ZWJWaWV3Tm9KSVQpLCBOTyk7CiAgICAgY2hlY2tKSVRFbmFibGVkKGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKSwgWUVTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0K
aW5kZXggMzRhMjExMDkzNTk4MzEyNmFhNmEzMDgyMjlhZWU4ZmQ3MmEzZWQyYy4uMGZjY2M2ZjNl
MDA3YTYzOWNiYTc3MDJhY2Q5ZWViMzQwNjliNzc5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIubW0KQEAgLTU2LDcgKzU2LDcgQEAgVEVTVChXS1dlYlZpZXcsIExvY2Fs
U3RvcmFnZUZldGNoRGF0YVJlY29yZHMpCiAgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9
IFtbW0xvY2FsU3RvcmFnZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBhZG9wdE5TKFtbTG9jYWxTdG9yYWdlVUlEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8c2NyaXB0PmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXN0S2V5JywgJ3Rlc3RWYWx1
ZScpO2FsZXJ0KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZXN0S2V5JykpOzwvc2NyaXB0PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9sb2NhbGhvc3QiXV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb24ubW0KaW5kZXggNWU3
NDgyMWZhNWE0Y2QyMTU2MjM5MDM2NjlkZmNiNWJkOWU2NmQyNS4uMDUxZjlhNzc5OGIzMzdmMWUy
YzNlZjRkY2M3NDA2ZjU2MmRlMzI2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQpAQCAtMjI1LDggKzIyNSw4IEBAIEBlbmQK
IAogVEVTVChXS05hdmlnYXRpb24sIEZyYW1lcykKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwotICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0gW1tU
ZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwog
ICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwg
aWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZVN0
cmluZyA9IG5pbDsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5n
IGlzRXF1YWxUb1N0cmluZzpAImZyYW1lOi8vaG9zdDEvIl0pCkBAIC0yNDQsOSArMjQ0LDkgQEAg
VEVTVChXS05hdmlnYXRpb24sIEZyYW1lcykKICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
W3Jlc3BvbnNlU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07
CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgfV07Ci0gICAgW2NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAImZyYW1lIl07CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAImZyYW1lIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgICAgICB3ZWJWaWV3Lmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJmcmFtZTovL2hvc3QxLyJdXV07CkBAIC03NDMsMzMgKzc0MywzMyBAQCBURVNUKFdLTmF2
aWdhdGlvbiwgRnJhbWVCYWNrTG9hZGluZykKICAgICAgICAgeyAiL2ZyYW1lMS5odG1sIiwgeyAi
PGEgaHJlZj0nZnJhbWUyLmh0bWwnPmxpbms8L2E+IiB9IH0sCiAgICAgICAgIHsgIi9mcmFtZTIu
aHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZyYW1lMiBsb2FkZWQnKTwvc2NyaXB0PiIgfSB9LAog
ICAgIH0pOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OwotICAgIGF1dG8gb2JzZXJ2ZXIgPSBbW0xvYWRpbmdPYnNlcnZlciBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBbd2ViVmlldyBhZGRP
YnNlcnZlcjpvYnNlcnZlciBmb3JLZXlQYXRoOkAibG9hZGluZyIgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKLSAgICBFWFBFQ1RfRkFMU0Uod2ViVmll
dy5sb2FkaW5nKTsKLSAgICBFWFBFQ1RfRVEob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkLCAwdSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIG9ic2Vy
dmVyID0gYWRvcHROUyhbTG9hZGluZ09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6QCJsb2FkaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBpc0xv
YWRpbmddKTsKKyAgICBFWFBFQ1RfRVEoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZlZF0sIDB1KTsK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICBFWFBFQ1Rf
VFJVRSh3ZWJWaWV3LmxvYWRpbmcpOwotICAgIEVYUEVDVF9FUShvYnNlcnZlci5jaGFuZ2VzT2Jz
ZXJ2ZWQsIDF1KTsKLSAgICB3aGlsZSAob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkIDwgMnUpCisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgaXNMb2FkaW5nXSk7CisgICAgRVhQRUNUX0VRKFtvYnNl
cnZlciBjaGFuZ2VzT2JzZXJ2ZWRdLCAxdSk7CisgICAgd2hpbGUgKFtvYnNlcnZlciBjaGFuZ2Vz
T2JzZXJ2ZWRdIDwgMnUpCiAgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHdlYlZpZXcubG9hZGluZyk7Ci0gICAgRVhQRUNUX0VRKG9ic2VydmVyLmNoYW5nZXNP
YnNlcnZlZCwgMnUpOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmNhbkdvQmFjayk7CisgICAg
RVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIEVYUEVDVF9FUShbb2JzZXJ2
ZXIgY2hhbmdlc09ic2VydmVkXSwgMnUpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBjYW5H
b0JhY2tdKTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdpZnJhbWUnKS5jb250ZW50V2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2EnKS5jbGljaygpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogICAgIEVYUEVDVF9XS19TVFJF
UShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImZyYW1lMiBsb2FkZWQiKTsKLSAgICBFWFBFQ1Rf
RVEob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkLCAydSk7Ci0gICAgRVhQRUNUX1RSVUUod2ViVmll
dy5jYW5Hb0JhY2spOworICAgIEVYUEVDVF9FUShbb2JzZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSwg
MnUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGNhbkdvQmFja10pOwogICAgIFt3ZWJWaWV3
IGdvQmFja107Ci0gICAgd2hpbGUgKG9ic2VydmVyLmNoYW5nZXNPYnNlcnZlZCA8IDMpCisgICAg
d2hpbGUgKFtvYnNlcnZlciBjaGFuZ2VzT2JzZXJ2ZWRdIDwgMykKICAgICAgICAgVXRpbDo6c3Bp
blJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3LmxvYWRpbmcpOwotICAgIHdoaWxl
IChvYnNlcnZlci5jaGFuZ2VzT2JzZXJ2ZWQgPCA0KQorICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IGlzTG9hZGluZ10pOworICAgIHdoaWxlIChbb2JzZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSA8IDQp
CiAgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcu
bG9hZGluZyk7Ci0gICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIgZm9yS2V5UGF0
aDpAImxvYWRpbmciXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaXNMb2FkaW5nXSk7Cisg
ICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImxv
YWRpbmciXTsKIAogfQogCkBAIC04MDQsMTEgKzgwNCwxMSBAQCBURVNUKFdLTmF2aWdhdGlvbiwg
U2ltdWx0YW5lb3VzTmF2aWdhdGlvbldpdGhGb250c0ZpbmlzaGVzKQogICAgICAgICB7ICIvaWZy
YW1lc3JjLmh0bWwiLCB7ICJmcmFtZSBjb250ZW50IiB9IH0sCiAgICAgfSk7CiAKLSAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgZGVsZWdh
dGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9u
QWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5KSkgewogICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUgaXNF
cXVhbFRvU3RyaW5nOkAicmVmcmVzaC1uYXYiXSkKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUNhbmNlbCk7CiAgICAgICAgIGVsc2UKQEAgLTgx
Niw3ICs4MTYsNyBAQCBURVNUKFdLTmF2aWdhdGlvbiwgU2ltdWx0YW5lb3VzTmF2aWdhdGlvbldp
dGhGb250c0ZpbmlzaGVzKQogICAgIH07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWROYXZp
Z2F0aW9uID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkRmluaXNoTmF2aWdhdGlvbiA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmluaXNo
TmF2aWdhdGlvbiA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqKSB7CiAgICAgICAgIGZp
bmlzaGVkTmF2aWdhdGlvbiA9IHRydWU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uQWN0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uQWN0aW9uLm1tCmluZGV4
IGZjYzcyNjVmZDJmMDkxZWJiZmNjMDM3OWRkYjlhODZhZTU3NDFmYjQuLmRmN2FhN2M1MzIwMWQw
ZmU5MWUyNjQzOTZhY2NiNmE2MTUxZGMyYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTE5OCwx
MSArMTk4LDExIEBAIFRFU1QoV0tOYXZpZ2F0aW9uQWN0aW9uLCBCbG9iUmVxdWVzdEJvZHkpCiAg
ICAgICAgICAgICAifSIKICAgICAgICAgIjwvc2NyaXB0PiIKICAgICAgICAgIjxib2R5IG9ubG9h
ZD0nYm9keUxvYWRlZCgpJz4iOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRp
b25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3kpKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKGFjdGlvbi5yZXF1ZXN0LkhUVFBC
b2R5KTsKICAgICAgICAgaWYgKFthY3Rpb24ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXSkKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCmluZGV4IDVk
ZGM1MTNiYzg5M2ZjM2M2MjYyMzBmZjZmM2MwZTc4MGU2OWEwOGEuLjQzZmMxZWRmYWQ1YmMzY2Ey
NDA0YTZkZjQ3OGFhZjM4ODYzZTEzNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQpAQCAtMzYsNyArMzYsNyBA
QAogCiBURVNUKFdlYktpdCwgTmV0d29ya1Byb2Nlc3NFbnRpdGxlbWVudHMpCiB7Ci0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpbW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwogICAgIFdLV2Vic2l0ZURhdGFT
dG9yZSAqc3RvcmUgPSBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlOwog
ICAgIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBbc3RvcmUgX25ldHdvcmtQcm9jZXNzSGFzRW50aXRs
ZW1lbnRGb3JUZXN0aW5nOkAiY29tLmFwcGxlLnJvb3RsZXNzLnN0b3JhZ2UuV2ViS2l0TmV0d29y
a2luZ1NhbmRib3giXTsKQEAgLTgyLDkgKzgyLDkgQEAgVEVTVChXZWJLaXQsIEhUVFBSZWZlcmVy
KQogCiBURVNUKFdlYktpdCwgTmV0d29ya1Byb2Nlc3NMYXVuY2hPbmx5V2hlbk5lY2Vzc2FyeSkK
IHsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAg
ICB3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBZRVM7Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi5wcm9jZXNz
UG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZTpAInRlc3QiXTsKLSAgICBbd2ViVmlldy5j
b25maWd1cmF0aW9uLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29u
dGVudFNlY3VyaXR5UG9saWN5OkAidGVzdCJdOwotICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldy5j
b25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX25ldHdvcmtQcm9jZXNzRXhpc3RzXSk7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkID0gWUVTOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBf
cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZTpAInRlc3QiXTsKKyAgICBbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50
U2VjdXJpdHlQb2xpY3k6QCJ0ZXN0Il07CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBjb25m
aWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF9uZXR3b3JrUHJvY2Vzc0V4aXN0c10pOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NyYXNoTm9uUGVyc2lzdGVudERhdGFTdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRh
U3RvcmUubW0KaW5kZXggMmY4YTJlMzNmZTg3MDNiYWIyZDhlMDUxMDgzMmJlY2Q5ZDQ4OTM0Yi4u
ODQ3YzI2YWYwMDk4Nzc2MWQyZDMwMTJlM2EwZjBkOTdkZGRjOTU1OSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzc0NyYXNoTm9u
UGVyc2lzdGVudERhdGFTdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL05ldHdvcmtQcm9jZXNzQ3Jhc2hOb25QZXJzaXN0ZW50RGF0YVN0b3JlLm1tCkBA
IC04NCw1ICs4NCw1IEBAIFRFU1QoV2ViS2l0LCBOZXR3b3JrUHJvY2Vzc0NyYXNoTm9uUGVyc2lz
dGVudERhdGFTdG9yZSkKIAogVEVTVChXZWJLaXQsIE5ldHdvcmtQcm9jZXNzQ3Jhc2hOb25EZWZh
dWx0UGVyc2lzdGVudERhdGFTdG9yZSkKIHsKLSAgICBjaGVja1JlY292ZXJ5QWZ0ZXJDcmFzaChb
W1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246W1tbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV0g
YXV0b3JlbGVhc2VdKTsKKyAgICBjaGVja1JlY292ZXJ5QWZ0ZXJDcmFzaChhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNl
KCldKS5hdXRvcmVsZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVyZW5jZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1ByZWZlcmVuY2VzLm1tCmluZGV4IDA5ZWYwNjFlZGExZmQ1NDIwNDYy
ZDA3ZTQwYmYzMDU1ZTQ2OTkyNDQuLmUyODNmNDU5MDQ2MzgwOTZmMGJmOTg0NzM4ODQxYTI2ZDA2
NGUzNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJlZmVyZW5jZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QcmVmZXJlbmNlcy5tbQpAQCAtNzAsOSArNzAsOSBAQCBURVNUKFdlYktpdCwgRXhwZXJpbWVu
dGFsRmVhdHVyZXMpCiBURVNUKFdlYktpdCwgV2ViQXVkaW9QcmVmZXJlbmNlKQogewogICAgIGF1
dG8gY2hlY2sgPSBbXShib29sIHZhbHVlKSB7Ci0gICAgICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMuX3dlYkF1
ZGlvRW5hYmxlZCA9IHZhbHVlOwotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAg
ICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3dlYkF1ZGlvRW5hYmxlZCA9IHZhbHVlOwor
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgICAg
ICBfX2Jsb2NrIFJldGFpblB0cjxOU1N0cmluZz4gcmVzdWx0OwogICAgICAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJuZXcgQm9vbGVhbih3aW5kb3cuQXVkaW9Db250ZXh0KS50b1N0
cmluZygpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdEZyb21KUywgTlNFcnJvciAqZXJy
b3IpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGI5MTJkMTY1YjdhZGM5
MTFhODQ0MWY4MmUyY2I0NDUwZDYwODJmYjkuLjNkZmI4ODBhYjBjYzJiMzkwMjU0YjJjNTNlYjRl
MmY0NjZiOWI4MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNTQ1NCw3
ICs1NDU0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVXNlUHJld2FybWVkUHJvY2Vzc0FmdGVyVGVy
bWluYXRpbmdOZXR3b3JrUHJvY2VzcykKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07Ci0g
ICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXdDb25maWd1
cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm94eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0K
aW5kZXggMWY2MDY1ZmQwYjQwNGZmYzQyYzdiNzYwM2NlZWVlYzA4YzAxZGM1ZC4uYTYwZWM2YTc5
OTIyNGE4YmNmM2UyMDZmNjkwODliN2FjNDBjNjExNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCkBAIC04NCw3ICs4NCw3IEBAIFRFU1QoV2Vi
S2l0LCBIVFRQU1Byb3h5KQogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFNQcm94eTpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8v
MTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CiAgICAgW3N0b3JlQ29uZmlndXJhdGlv
biBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5PXTsKICAgICBhdXRvIHZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbdmlld0Nv
bmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRv
cmVsZWFzZV1dOworICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFk
b3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Byb3h5RGVsZWdhdGUgbmV3XSk7CiAgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTEzMSw3
ICsxMzEsNyBAQCBURVNUKFdlYktpdCwgSFRUUFByb3h5QXV0aGVudGljYXRpb24pCiAgICAgW3N0
b3JlQ29uZmlndXJhdGlvbiBzZXRQcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9u
OllFU107CiAKICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt2aWV3Q29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1
cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Byb3h5RGVsZWdhdGUgbmV3XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUKFdlYktpdCwg
U2VjdXJlUHJveHlDb25uZWN0aW9uKQogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UmVxdWly
ZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjpZRVNdOwogCiAgICAgYXV0byB2aWV3Q29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Ci0gICAgW3Zp
ZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0g
YXV0b3JlbGVhc2VdXTsKKyAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdXV07CiAgICAg
d2hpbGUgKCFyZWNlaXZlZFZhbGlkQ2xpZW50SGVsbG8pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQppbmRleCBhZmUyNDg2OWU0ZDQ0YzJjZDg1NjBhZmQ1ZTZjYzNkYzJhMzEzODA3Li5lNTRjNzhj
NWI0ZWRhMjk3Y2E2MTFjYWQ3MjQ1MGYyM2E0NmY2MDYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KQEAgLTEyNywxMyArMTI3LDEzIEBAIFRFU1QoV2ViS2l0LCBSZW1vdGVPYmplY3RSZWdp
c3RyeSkKICAgICAgICAgaXNEb25lID0gZmFsc2U7CiAKICAgICAgICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07Ci0gICAgICAgIE5TSFRUUFVSTFJlc3BvbnNlICpy
ZXNwb25zZSA9IFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSBzdGF0dXNDb2RlOjIwMCBIVFRQ
VmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJ0ZXN0RmllbGROYW1lIiA6IEAi
dGVzdEZpZWxkVmFsdWUiIH1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29kZToyMDAgSFRUUFZl
cnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAidGVzdEZpZWxkTmFtZSIgOiBAInRl
c3RGaWVsZFZhbHVlIiB9XSk7CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOkAidGVzdERvbWFpbiIgY29kZToxMjMgdXNlckluZm86QHtAImEiOkAiYiJ9
XTsKLSAgICAgICAgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9IFtbW05T
VVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCJ0ZXN0SG9zdCIgcG9ydDo4
MCBwcm90b2NvbDpAInRlc3RQcm90b2NvbCIgcmVhbG06QCJ0ZXN0UmVhbG0iIGF1dGhlbnRpY2F0
aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQRGlnZXN0XSBhdXRvcmVsZWFz
ZV07CisgICAgICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gYWRvcHROUyhbW05TVVJMUHJvdGVj
dGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCJ0ZXN0SG9zdCIgcG9ydDo4MCBwcm90b2Nv
bDpAInRlc3RQcm90b2NvbCIgcmVhbG06QCJ0ZXN0UmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9k
Ok5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQRGlnZXN0XSk7CiAgICAgICAgIE5TVVJMQ3Jl
ZGVudGlhbCAqY3JlZGVudGlhbCA9IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhVc2Vy
OkAidGVzdFVzZXIiIHBhc3N3b3JkOkAidGVzdFBhc3N3b3JkIiBwZXJzaXN0ZW5jZTpOU1VSTENy
ZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dOwogICAgICAgICBpZDxOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyPiBzZW5kZXIgPSBuaWw7Ci0gICAgICAgIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSA9IFtbW05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZSBwcm9w
b3NlZENyZWRlbnRpYWw6Y3JlZGVudGlhbCBwcmV2aW91c0ZhaWx1cmVDb3VudDo0MiBmYWlsdXJl
UmVzcG9uc2U6cmVzcG9uc2UgZXJyb3I6ZXJyb3Igc2VuZGVyOnNlbmRlcl0gYXV0b3JlbGVhc2Vd
OwotICAgICAgICBbb2JqZWN0IHNlbmRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2Ug
Y2hhbGxlbmdlOmNoYWxsZW5nZSBlcnJvcjplcnJvciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TVVJM
UmVxdWVzdCAqZGVzZXJpYWxpemVkUmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqZGVzZXJpYWxpemVk
UmVzcG9uc2UsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmRlc2VyaWFsaXplZENoYWxs
ZW5nZSwgTlNFcnJvciAqZGVzZXJpYWxpemVkRXJyb3IpIHsKKyAgICAgICAgYXV0byBjaGFsbGVu
Z2UgPSBhZG9wdE5TKFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10gaW5pdFdp
dGhQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgpIHByb3Bvc2VkQ3JlZGVudGlh
bDpjcmVkZW50aWFsIHByZXZpb3VzRmFpbHVyZUNvdW50OjQyIGZhaWx1cmVSZXNwb25zZTpyZXNw
b25zZS5nZXQoKSBlcnJvcjplcnJvciBzZW5kZXI6c2VuZGVyXSk7CisgICAgICAgIFtvYmplY3Qg
c2VuZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZS5nZXQoKSBjaGFsbGVuZ2U6Y2hh
bGxlbmdlLmdldCgpIGVycm9yOmVycm9yIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNVUkxSZXF1ZXN0
ICpkZXNlcmlhbGl6ZWRSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpkZXNlcmlhbGl6ZWRSZXNwb25z
ZSwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqZGVzZXJpYWxpemVkQ2hhbGxlbmdlLCBO
U0Vycm9yICpkZXNlcmlhbGl6ZWRFcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGRlc2VyaWFsaXplZFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCAiaHR0cHM6Ly93ZWJraXQu
b3JnLyIpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFsoTlNIVFRQVVJMUmVzcG9uc2Ug
KilkZXNlcmlhbGl6ZWRSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdW0AidGVzdEZpZWxkTmFtZSJd
LCAidGVzdEZpZWxkVmFsdWUiKTsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXNlcmlh
bGl6ZWRDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnJlYWxtLCAidGVzdFJlYWxtIik7CkBAIC0y
MDksNyArMjA5LDcgQEAgQGVuZAogCiBURVNUKFdlYktpdCwgUmVtb3RlT2JqZWN0UmVnaXN0cnlf
Q2FsbFJlcGx5QmxvY2tBZnRlck9yaWdpbmF0aW5nV2ViVmlld0RlYWxsb2NhdGVzKQogewotICAg
IExvY2FsT2JqZWN0ICpsb2NhbE9iamVjdCA9IFtbW0xvY2FsT2JqZWN0IGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBsb2NhbE9iamVjdCA9IGFkb3B0TlMoW1tMb2NhbE9iamVj
dCBhbGxvY10gaW5pdF0pOwogICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gd2Vha1dlYlZpZXdQ
dHI7CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTIyMSw3ICsyMjEsNyBAQCBURVNUKFdl
YktpdCwgUmVtb3RlT2JqZWN0UmVnaXN0cnlfQ2FsbFJlcGx5QmxvY2tBZnRlck9yaWdpbmF0aW5n
V2ViVmlld0RlYWxsb2NhdAogICAgICAgICBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVy
ZmFjZSA9IHJlbW90ZU9iamVjdEludGVyZmFjZSgpOwogICAgICAgICBpZCA8UmVtb3RlT2JqZWN0
UHJvdG9jb2w+IG9iamVjdCA9IFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlbW90
ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTppbnRlcmZhY2VdOwogCi0gICAgICAgIFtbd2ViVmll
dyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6bG9jYWxPYmpl
Y3QgaW50ZXJmYWNlOmxvY2FsT2JqZWN0SW50ZXJmYWNlKCldOworICAgICAgICBbW3dlYlZpZXcg
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OmxvY2FsT2JqZWN0
LmdldCgpIGludGVyZmFjZTpsb2NhbE9iamVjdEludGVyZmFjZSgpXTsKIAogICAgICAgICBbb2Jq
ZWN0IGNhbGxVSVByb2Nlc3NNZXRob2RXaXRoUmVwbHlCbG9ja107CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3VGltZW91
dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJW
aWV3VGltZW91dC5tbQppbmRleCA3N2E1Mzc3ZDM2ZTE2ZTEzMDc3MjY3YWYyYzI2NWQ1NzA0Yzg1
M2JhLi5kY2JmZDUwNzk1NDZhNDZjMzY5OWYxODhkOGI2ZjMwYjdhMmVlZDRjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2ViVmlld1Rp
bWVvdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXBh
cmVudFdlYlZpZXdUaW1lb3V0Lm1tCkBAIC0zOCw3ICszOCw3IEBAIFRFU1QoV2ViS2l0LCBSZXBh
cmVudFdlYlZpZXdUaW1lb3V0KQogICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0SWdu
b3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3Rpbmc6WUVTXTsKIAogICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlv
biBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKS5hdXRvcmVsZWFzZSgpXTsKIAogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFk
ZFRvV2luZG93OllFU10pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAImhlbGxvIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCAwYzU1OWFjMzdkYzFj
M2EwNDczZmExMzMwYWExMDRiYmY4NWJiNzU0Li44MWIxNGY0NTYzZDM4MmNkMDUwMGYzYjU1Mzg2
NTdlNTllNjE2YWM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTM2NCw3ICszNjQs
NyBAQCBURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBMb2FkSW5mbykKIAogICAgIEVYUEVDVF9X
S19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzhdIGNsYXNzXSksICJO
U011dGFibGVVUkxSZXF1ZXN0Iik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRl
cnNbOF0gVVJMXS5wYXRoLCAiL2ZldGNoVGFyZ2V0Iik7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFtb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6W290aGVyUGFyYW1ldGVyc1s4XSBIVFRQQm9k
eV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXSwgImE9YiZjPWQi
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6W290aGVyUGFyYW1ldGVyc1s4XSBIVFRQQm9keV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKS5nZXQoKSwgImE9YiZjPWQiKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJp
bmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1s5XSBjbGFzc10pLCAiTlNIVFRQVVJMUmVzcG9u
c2UiKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW290aGVyUGFyYW1ldGVyc1s5XSBVUkxdLnBhdGgs
ICIvZmV0Y2hUYXJnZXQiKTsKICAgICBFWFBFQ1RfRVEob3RoZXJQYXJhbWV0ZXJzWzEwXSwgbmls
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQppbmRleCBjZjlmYzM0MGUzOTBlMjhlNDE0
ZDBkMDQxYWJkNjI4OTEzNjdjY2EwLi45MTQyODQ2NWFmMDcxNDAwOGNhZjNmNjk2YmRkMDNlNGNh
NmY1NzhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0zMjYsNyArMzI2LDcg
QEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBSZW1vdmVTZXNzaW9uSUQpCiB7CiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0p
LmF1dG9yZWxlYXNlKCk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC01MzUsMTIgKzUzNSwxMiBAQCBURVNU
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIERhdGFUYXNrSWRlbnRpZmllckNvbGxpc2lvbikKICAg
ICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIGJvZHksIHN0cmxlbihib2R5KSk7CiAgICAg
fSk7CiAKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1
cmF0aW9uID0gW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24uaHR0cHNQcm94eSA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQv
IiwgaHR0cHNTZXJ2ZXIucG9ydCgpXV07Ci0gICAgc3RvcmVDb25maWd1cmF0aW9uLmFsbG93c1Nl
cnZlclByZWNvbm5lY3QgPSBOTzsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9
IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9y
ZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOworICAg
IHN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5odHRwc1Byb3h5ID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBo
dHRwc1NlcnZlci5wb3J0KCldXTsKKyAgICBzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dz
U2VydmVyUHJlY29ubmVjdCA9IE5POworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CiAKICAgICBhdXRvIHdlYlZpZXcxID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIFt3ZWJWaWV3MSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBuZXR3b3Jr
IHByb2Nlc3MgYW5kIGluaXRpYWxpemUgZGF0YSBzdG9yZSJdOwpAQCAtNTgzLDggKzU4Myw4IEBA
IFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRGF0YVRhc2tJZGVudGlmaWVyQ29sbGlzaW9u
KQogVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBOb01lc3NhZ2VzV2hlbk5vdFRlc3Rpbmcp
CiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9
IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpbW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpk
YXRhU3RvcmVdOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOwogICAg
IFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIl07CkBAIC0xMjUwLDkgKzEyNTAsOSBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsIENhbkFjY2Vzc0RhdGFTdW1tYXJ5V2l0aE5vUHJvY2Vzc1Bvb2wpCiAgICAgW2RlZmF1bHRG
aWxlTWFuYWdlciBjb3B5SXRlbUF0UGF0aDpuZXdGaWxlVVJMLnBhdGggdG9QYXRoOmZpbGVVUkwu
cGF0aCBlcnJvcjpuaWxdOwogICAgIEVYUEVDVF9UUlVFKFtkZWZhdWx0RmlsZU1hbmFnZXIgZmls
ZUV4aXN0c0F0UGF0aDpmaWxlVVJMLnBhdGhdKTsKIAotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICpkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRhU3RvcmVDb25maWd1
cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gaXRwUm9vdFVSTDsKLSAg
ICBhdXRvICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIG5ld10pOworICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCku
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBpdHBSb290VVJMOworICAgIGF1dG8g
ZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW2RhdGFT
dG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKIAogICAgIHN0YXRp
YyBib29sIGRvbmVGbGFnID0gZmFsc2U7CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBURVNUKFJlc291
cmNlTG9hZFN0YXRpc3RpY3MsIFN0b3JlU3VzcGVuc2lvbikKIHsKICAgICBhdXRvICpzaGFyZWRQ
cm9jZXNzUG9vbCA9IFtXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF07CiAgICAgYXV0
byAqZGF0YVN0b3JlMSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07Ci0g
ICAgYXV0byAqZGF0YVN0b3JlMiA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkYXRhU3RvcmUy
ID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKS5hdXRvcmVsZWFzZSgpXSk7CiAKICAgICBbZGF0YVN0b3JlMSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICBbZGF0YVN0b3JlMiBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKQEAgLTEyOTAsNyArMTI5MCw3IEBAIFRFU1QoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcywgU3RvcmVTdXNwZW5zaW9uKQogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uMiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgW2NvbmZpZ3VyYXRpb24yIHNldFByb2Nlc3NQb29sOiBzaGFyZWRQcm9jZXNzUG9vbF07Ci0g
ICAgY29uZmlndXJhdGlvbjIuZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZTI7Cisg
ICAgY29uZmlndXJhdGlvbjIuZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZTIuZ2V0
KCk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24xLmdldCgpXSk7CiAgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uMi5nZXQoKV0pOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQg
PFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRo
IGlzRXF1YWxUb1N0cmluZzpAIi90cC1sb2FkIl0pCiAgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9k
eT48L2JvZHk+IjsKIAotICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9w
dE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0
aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt0YXNrIGRpZFJl
Y2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z11dOwogICAgIFt0YXNrIGRpZEZpbmlzaF07CiB9CkBAIC0xMzQyLDEwICsxMzQyLDEwIEBAIFRF
U1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgQmFja0ZvcndhcmRQZXJQYWdlRGF0YSkKICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKIAog
ICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicmVzb3VyY2Ut
bG9hZC1zdGF0aXN0aWNzIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc3RhdGljIGJv
b2wgZG9uZUZsYWcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW0KaW5kZXggYzBmNTI1MWY0NWYzZGQyOGE2ZTQ2
ZTEzMGFlNmUwZjliZTNkNmI4OS4uY2VhODU5YjU5ZDliYjYyOWE2NmEwYWY0ZTQ5OTQwNmU5NzE4
ODllOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
YWZlQnJvd3NpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TYWZlQnJvd3NpbmcubW0KQEAgLTc3LDcgKzc3LDcgQEAgQGltcGxlbWVudGF0aW9uIFRlc3RT
ZXJ2aWNlTG9va3VwUmVzdWx0CiAKICsgKGluc3RhbmNldHlwZSlyZXN1bHRXaXRoUHJvdmlkZXI6
KFJldGFpblB0cjxOU1N0cmluZz4mJilwcm92aWRlciBwaGlzaGluZzooQk9PTClwaGlzaGluZyBt
YWx3YXJlOihCT09MKW1hbHdhcmUgdW53YW50ZWRTb2Z0d2FyZTooQk9PTCl1bndhbnRlZFNvZnR3
YXJlCiB7Ci0gICAgVGVzdFNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCA9IFtbVGVzdFNlcnZp
Y2VMb29rdXBSZXN1bHQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhb
W1Rlc3RTZXJ2aWNlTG9va3VwUmVzdWx0IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTg2LDcgKzg2LDcgQEAgKyAoaW5zdGFuY2V0eXBl
KXJlc3VsdFdpdGhQcm92aWRlcjooUmV0YWluUHRyPE5TU3RyaW5nPiYmKXByb3ZpZGVyIHBoaXNo
aW5nOihCT08KICAgICByZXN1bHQtPl9pc01hbHdhcmUgPSBtYWx3YXJlOwogICAgIHJlc3VsdC0+
X2lzVW53YW50ZWRTb2Z0d2FyZSA9IHVud2FudGVkU29mdHdhcmU7CiAKLSAgICByZXR1cm4gW3Jl
c3VsdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChOU1N0cmluZyAqKXByb3ZpZGVyCkBAIC0xMjAsMTMgKzEyMCwxMyBAQCBAaW1wbGVtZW50
YXRpb24gVGVzdExvb2t1cFJlc3VsdAogCiArIChpbnN0YW5jZXR5cGUpcmVzdWx0V2l0aFJlc3Vs
dHM6KFJldGFpblB0cjxOU0FycmF5PFRlc3RTZXJ2aWNlTG9va3VwUmVzdWx0ICo+PiYmKXJlc3Vs
dHMKIHsKLSAgICBUZXN0TG9va3VwUmVzdWx0ICpyZXN1bHQgPSBbW1Rlc3RMb29rdXBSZXN1bHQg
YWxsb2NdIGluaXRdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW1Rlc3RMb29rdXBSZXN1
bHQgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICAKICAgICByZXN1bHQtPl9yZXN1bHRzID0gV1RGTW92ZShyZXN1bHRzKTsKICAgICAKLSAg
ICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChOU0FycmF5PFRlc3RTZXJ2aWNlTG9va3VwUmVzdWx0ICo+ICopc2Vy
dmljZUxvb2t1cFJlc3VsdHMKQEAgLTMwOCw3ICszMDgsNyBAQCBURVNUKFNhZmVCcm93c2luZywg
U2hvd1dhcm5pbmdTUEkpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOwogICAgIGF1dG8gc2hvd1dhcm5pbmcgPSBeewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
ckNhbGxlZCA9IGZhbHNlOwotICAgICAgICBbd2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5p
bmdXaXRoVVJMOm5pbCB0aXRsZTpAInRlc3QgdGl0bGUiIHdhcm5pbmc6QCJ0ZXN0IHdhcm5pbmci
IGRldGFpbHM6W1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAInRl
c3QgZGV0YWlscyJdIGF1dG9yZWxlYXNlXSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc2hvdWxk
Q29udGludWUpIHsKKyAgICAgICAgW3dlYlZpZXcgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0
aFVSTDpuaWwgdGl0bGU6QCJ0ZXN0IHRpdGxlIiB3YXJuaW5nOkAidGVzdCB3YXJuaW5nIiBkZXRh
aWxzOmFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
dGVzdCBkZXRhaWxzIl0pLmF1dG9yZWxlYXNlKCkgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHNo
b3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBzaG91bGRDb250aW51ZVZhbHVlID0gc2hvdWxk
Q29udGludWU7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IHRydWU7CiAg
ICAgICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCBlOTM2MDVmMDUyYTJiZWJiNmJk
YmIxY2Q5YTdiYmQyNjZhNDIxNWU2Li5kZDcwNzYyNTZiNWY0MmVjMTYwNzE5ZmMwMmY4NDc1ZDFh
MzRmYTY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtNDc3LDExICs0NzcsMTEgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoVXNlckFnZW50OihOU1N0cmluZyAqKXVzZXJBZ2VudAogCiAt
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVy
ZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgdXNlckluZm86KGlkIDxO
U1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxl
cgogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dl
YnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
c2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSk7CiAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKQogICAg
ICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0b21Vc2VyQWdlbnQ6X3VzZXJBZ2VudF07CiAK
LSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNp
dGVQb2xpY2llcyk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogfQogCiBAZW5kCkBAIC0xNDA3LDcgKzE0
MDcsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBOb25EZWZhdWx0U2Vzc2lvbklEKQogICAgIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc2VydmljZVdvcmtlcnNQYXRoOwogICAgIHdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYlBhdGg7
CiAKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpXSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJldGFpblB0cjxTV01lc3NhZ2VIYW5kbGVyV2l0
aEV4cGVjdGVkTWVzc2FnZT4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFu
ZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdl
SGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTE0NTYsMTAgKzE0NTYsMTAgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgUHJvY2Vzc1BlclNpdGUpCiAKICAgICAvLyBOb3JtYWxseSwgc2Vydmlj
ZSB3b3JrZXJzIGdldCB0ZXJtaW5hdGVkIHNldmVyYWwgc2Vjb25kcyBhZnRlciB0aGVpciBjbGll
bnRzIGFyZSBnb25lLgogICAgIC8vIERpc2FibGUgdGhpcyBkZWxheSBmb3IgdGhlIHB1cnBvc2Ug
b2YgdGVzdGluZy4KLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0YVN0
b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gTk87CisgICAgYXV0byBk
YXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDpOT107CiAKLSAgICBh
dXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgCiAgICAgLy8g
U3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKICAgICBbZGF0YVN0b3JlIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdl
UXVvdGEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VR
dW90YS5tbQppbmRleCAwZDc2NDhhZjkxMWVmMjkzMmM0ODkwNDcwMjEzMzc0ZmIwN2ZmYTQxLi5m
MWFiNjgzOWRlYzNkMmE0MWU3NGEyODc1MzQzM2RiYjQxNjZkZDgzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbQpAQCAt
MjUwLDE2ICsyNTAsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFZpc2libGUoVGVzdFdLV2Vi
VmlldyAqd2ViVmlldykKIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlSGlkZGVuKQogewogICAg
IGRvbmUgPSBmYWxzZTsKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3Rv
cmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2lu
U3RvcmFnZVF1b3RhID0gMTAyNCAqIDQwMDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFT
dG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1
b3RhOjEwMjQgKiA0MDBdOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAg
ICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCld
OwogCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpA
InF0Il07CkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZUhp
ZGRlbikKIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlKQogewogICAgIGRvbmUgPSBmYWxzZTsK
LSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1cmF0aW9u
ID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0g
MTAyNCAqIDQwMDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3Vy
YXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjEwMjQgKiA0MDBd
OworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vi
c2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0
aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOwogCiAgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CkBAIC0zNzEs
MTYgKzM3MSwxNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZSkKIFRFU1QoV2ViS2l0LCBR
dW90YURlbGVnYXRlUmVsb2FkKQogewogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBz
dG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gMTAyNCAqIDQwMDsKLSAg
ICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtzdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjEwMjQgKiA0MDBdOworICAgIGF1dG8gZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbZGF0YVN0b3JlIHJl
bW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10g
bW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkg
ewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOwogICAgIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24g
c2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0aW9uIHNldFdl
YnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKICAgICAKICAgICBhdXRvIG1lc3NhZ2VI
YW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsKQEAgLTQxOSwxNiArNDE5
LDE2IEBAIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlUmVsb2FkKQogVEVTVChXZWJLaXQsIFF1
b3RhRGVsZWdhdGVOYXZpZ2F0ZUZyYWdtZW50KQogewogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1cmF0aW9uID0gW1tb
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gMTAyNCAq
IDQwMDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtzdG9y
ZUNvbmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjEwMjQgKiA0MDBdOworICAg
IGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbZGF0
YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURh
dGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJh
dGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOwogCiAgICAgYXV0byBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CkBAIC00NzAsOCArNDcw
LDggQEAgVEVTVChXZWJLaXQsIFF1b3RhRGVsZWdhdGVOYXZpZ2F0ZUZyYWdtZW50KQogVEVTVChX
ZWJLaXQsIERlZmF1bHRRdW90YSkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAg
V0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9
IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBbZGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZp
ZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAg
ICAgICBkb25lID0gdHJ1ZTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBURVNUKFdlYktpdCwgRGVmYXVs
dFF1b3RhKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3Jl
XTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQo
KV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1l
OkAicXQiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVExTRGVwcmVjYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1RMU0RlcHJlY2F0aW9uLm1tCmluZGV4IDIzZGJjZmU0YzRmMTUyM2NkNzkzYWExMTExYzRk
YTRmMjEzMzIwOTYuLjU1ODcyNWQ0NTViNDViNWFkY2RlYmZkNWE5NTFjNjU1OGFlZTkyOGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNE
ZXByZWNhdGlvbi5tbQpAQCAtMTYzLDkgKzE2Myw5IEBAIFRFU1QoVExTVmVyc2lvbiwgRGVmYXVs
dEJlaGF2aW9yKQogCiBSZXRhaW5QdHI8V0tXZWJWaWV3PiBtYWtlV2ViVmlld1dpdGgoV0tXZWJz
aXRlRGF0YVN0b3JlICpzdG9yZSwgUmV0YWluUHRyPFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBb
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAg
Y29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gc3RvcmU7Ci0gICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6c3RvcmVdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKICAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4o
V0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9p
ZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhv
ZFNlcnZlclRydXN0KTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBURVNUKFRMU1ZlcnNpb24sIERpZE5l
Z290aWF0ZU1vZGVyblRMUykKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOwogICAg
IFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFi
bGVkOllFU107Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbW1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxl
YXNlKCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKQEAgLTQ3MCwxOCArNDcwLDE4IEBAIFRFU1QoVExTVmVyc2lvbiwgTGVnYWN5U3VicmVzb3Vy
Y2VzKQogICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8aWZyYW1lIHNyYz0naHR0cHM6Ly8x
MjcuMC4wLjE6IiwgbGVnYWN5U2VydmVyLnBvcnQoKSwgIi9mcmFtZScvPiIpIH19CiAgICAgfSwg
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAotICAgIGF1dG8gZGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRhU3RvcmVD
b25maWd1cmF0aW9uLmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkID0gWUVTOwotICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpk
YXRhU3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0g
W1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0p
OworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRp
b25FbmFibGVkOllFU107CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9u
IHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0
b3JlbGVhc2UoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIFtkZWxlZ2F0
ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7
CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhl
bnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwog
ICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH1dOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblNlcnZlci5y
ZXF1ZXN0KCldOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBA
IC00ODksOCArNDg5LDggQEAgVEVTVChUTFNWZXJzaW9uLCBMZWdhY3lTdWJyZXNvdXJjZXMpCiAg
ICAgRVhQRUNUX0VRKGxlZ2FjeVNlcnZlci50b3RhbFJlcXVlc3RzKCksIDB1KTsKICAgICBFWFBF
Q1RfRVEobW9kZXJuU2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMXUpOwogCi0gICAgYXV0byBkZWZh
dWx0V2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIFtkZWZhdWx0
V2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOworICAgIGF1dG8gZGVmYXVs
dFdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW2RlZmF1bHRXZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW2RlZmF1bHRXZWJW
aWV3IGxvYWRSZXF1ZXN0Om1vZGVyblNlcnZlci5yZXF1ZXN0KCldOwogICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgRVhQRUNUX0VRKGxlZ2FjeVNlcnZlci50
b3RhbFJlcXVlc3RzKCksIDF1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCAwMTkyYjk0ODMzZTZj
ZTk2MTUyN2FmZjZkYjAwM2Q5MzZkNGU3Yjg3Li5mNzgwMjNjMTVlNjgzNTIzMjBmZjI3MTIwMWQy
MDA1YzQxYWMxOTlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCkBAIC00MDQsNyArNDA0LDcgQEAgVEVT
VChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseVNpbmdsZUV4Y2x1
aW9uUnVsZUZvckVsZW1lbnQpCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlwdWxhdGlvbkNv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlv
bkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRFeGNs
dXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVs
ZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImNvZGUiXSBhdXRv
cmVsZWFzZV0sCisgICAgICAgIGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9u
UnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImNvZGUiXSku
YXV0b3JlbGVhc2UoKSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTQ0MCw4ICs0
NDAsOCBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvbkFwcGx5
SW5jbHVzaW9uRXhjbHVzaW9uUnVsZXNGb3JBdHRyaQogCiAgICAgUmV0YWluUHRyPF9XS1RleHRN
YW5pcHVsYXRpb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Rl
eHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckF0dHJpYnV0
ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJ5ZXMiXSBhdXRvcmVsZWFzZV0sCi0gICAgICAgIFtb
W19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOihC
T09MKU5PIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJubyJdIGF1dG9yZWxl
YXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxl
IGFsbG9jXSBpbml0RXhjbHVzaW9uOihCT09MKVlFUyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1
ZGUiIHZhbHVlOkAieWVzIl0pLmF1dG9yZWxlYXNlKCksCisgICAgICAgIGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClO
TyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAibm8iXSkuYXV0b3JlbGVhc2Uo
KSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBURVNU
KFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvbkFwcGx5SW5jbHVzaW9uRXhj
bHVzaW9uUnVsZXNGb3JDbGFzcwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlw
dWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246WUVTIGZvckNsYXNzOkAi
ZXhjbHVkZSJdIGF1dG9yZWxlYXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVs
YXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JDbGFzczpAImV4
Y2x1ZGUiXSkuYXV0b3JlbGVhc2UoKSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAg
LTQ5NSw5ICs0OTUsOSBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxh
dGlvbkFwcGx5SW5jbHVzaW9uRXhjbHVzaW9uUnVsZXNGb3JDbGFzcwogCiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKLSAg
ICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNs
dXNpb246WUVTIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJ5ZXMiXSBhdXRv
cmVsZWFzZV0sCi0gICAgICAgIFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFs
bG9jXSBpbml0RXhjbHVzaW9uOk5PIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6
QCJubyJdIGF1dG9yZWxlYXNlXSwKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1
c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246WUVTIGZvckNsYXNzOkAiZXhjbHVkZSJdIGF1
dG9yZWxlYXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNp
b25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1
ZGUiIHZhbHVlOkAieWVzIl0pLmF1dG9yZWxlYXNlKCksCisgICAgICAgIGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjpOTyBmb3JB
dHRyaWJ1dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAibm8iXSkuYXV0b3JlbGVhc2UoKSwKKyAg
ICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBp
bml0RXhjbHVzaW9uOllFUyBmb3JDbGFzczpAImV4Y2x1ZGUiXSkuYXV0b3JlbGVhc2UoKSwKICAg
ICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTI0MDYsNyArMjQwNiw3IEBAIFRFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdoZW5FeGNsdXNpb25J
c1Zpb2xhdGVkKQogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVs
ZXM6QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2Nd
IGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJlbSJdIGF1dG9yZWxlYXNlXSwK
KyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9j
XSBpbml0RXhjbHVzaW9uOihCT09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSkuYXV0b3JlbGVhc2Uo
KSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTI0NTEsNyArMjQ1MSw3IEBAIFRF
U1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdoZW5FeGNs
dWRlZENvbnRlbnRBcHBlYXJzTW9yCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlwdWxhdGlv
bkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxh
dGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRF
eGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9u
UnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImVtIl0gYXV0
b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lv
blJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJlbSJdKS5h
dXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZhbHNlOwpAQCAtMjQ5Niw3ICsy
NDk2LDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Q
cmVzZXJ2ZXNFeGNsdWRlZENvbnRlbnQpCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlwdWxh
dGlvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRFeGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVz
aW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImVtIl0g
YXV0b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1
c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJlbSJd
KS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCmluZGV4
IDBlYjQ1OWYzMWU0M2RlOTc4YmM2YmQ2YzkxYWNmMWE3MDYxNmU4Y2QuLjU2ZWQ2NjlmM2RiZGRh
NGVkMWI5YmZjZDZmYTMwMjNjYzIxNGMyOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0KQEAgLTY2LDcgKzY2LDcgQEAgQGVu
ZAogCiBURVNUKFdlYktpdCwgV0tXZWJWaWV3SXNQbGF5aW5nQXVkaW8pCiB7Ci0gICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpbW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV0pOwogICAgIGF1dG8gb2JzZXJ2ZXIgPSBh
ZG9wdE5TKFtbQXVkaW9PYnNlcnZlciBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IGFkZE9i
c2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfaXNQbGF5aW5nQXVkaW8iIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25PbGQgY29udGV4dDpuaWxdOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAImZpbGUtd2l0aC12aWRlbyJdOwpAQCAtMjI0LDcgKzIyNCw3IEBAIC0gKHZvaWQp
X3Nob3dXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1
cmxTY2hlbWVUYXNrCiB7CiAgICAgTlNTdHJpbmcgKmRhdGEgPSBAIjxzY3JpcHQ+d2luZG93Lm9w
ZW4oJ290aGVyLmh0bWwnKTs8L3NjcmlwdD4iOwotICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVU
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAg
W3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5n
TmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZl
RGF0YTpbZGF0YSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAg
IFt1cmxTY2hlbWVUYXNrIGRpZEZpbmlzaF07CiB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzZXRSZXNpemFibGU6KEJPT0wpaXNSZXNp
emFibGUKIAogLSAobnVsbGFibGUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlv
biAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMgKil3
aW5kb3dGZWF0dXJlcwogewotICAgIGNyZWF0ZWRXZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBjcmVhdGVkV2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFtjcmVhdGVk
V2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogICAgIHJldHVybiBjcmVhdGVkV2ViVmlldy5n
ZXQoKTsKIH0KQEAgLTUxMywxMSArNTEzLDExIEBAIFRFU1QoV2ViS2l0LCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKQogewogICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0Pk5vdGlmaWNhdGlv
bi5yZXF1ZXN0UGVybWlzc2lvbihmdW5jdGlvbihwKXthbGVydCgncGVybWlzc2lvbiAnK3ApfSk8
L3NjcmlwdD4iOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOltbW05vdGlmaWNhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEFsbG93Tm90aWZpY2F0aW9uczpZRVNdIGF1dG9yZWxlYXNlXV07
CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTphZG9wdE5TKFtbTm90aWZpY2F0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoQWxsb3dOb3RpZmljYXRpb25zOllFU10pLmF1dG9yZWxlYXNlKCld
OwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpbW1tOb3RpZmljYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhBbGxvd05vdGlmaWNh
dGlvbnM6Tk9dIGF1dG9yZWxlYXNlXV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTphZG9w
dE5TKFtbTm90aWZpY2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQWxsb3dOb3RpZmljYXRp
b25zOk5PXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRt
bCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtNTc2LDcgKzU3Niw3
IEBAIEBlbmQKIAogVEVTVChXZWJLaXQsIFRvb2xiYXJWaXNpYmxlKQogewotICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246W1tbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjphZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1Rvb2xiYXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxzY3JpcHQ+YWxlcnQoJ3Zpc2libGU6JyArIHdpbmRvdy50b29sYmFyLnZp
c2libGUpO2FsZXJ0KCd2aXNpYmxlOicgKyB3aW5kb3cudG9vbGJhci52aXNpYmxlKTwvc2NyaXB0
PiJdOwpAQCAtNjA0LDcgKzYwNCw3IEBAIFRFU1QoV2ViS2l0LCBNb3VzZU1vdmVPdmVyRWxlbWVu
dCkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uIl07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpbW1tNb3VzZU1vdmVPdmVyRWxlbWVudERlbGVnYXRlIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6YWRvcHROUyhbW01v
dXNlTW92ZU92ZXJFbGVtZW50RGVsZWdhdGUgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsK
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBocmVmPSdodHRw
Oi8vZXhhbXBsZS5jb20vcGF0aCcgdGl0bGU9J2xpbmsgdGl0bGUnPmxpbmsgbGFiZWw8L2E+Il07
CiAgICAgW3dlYlZpZXcgbW91c2VNb3ZlVG9Qb2ludDpOU01ha2VQb2ludCgyMCwgNjAwIC0gMjAp
IHdpdGhGbGFnczpOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnRdOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDg0M2Mx
MTAzMDM5NTkzNmU0OGI4MTJlOTA3ZGM1M2Y0OTEyMDJiYmEuLjM4YzQwZDNkNTBlMWU4YmQ0OGFl
ZTdhYzdkY2RjNjZhZDc0YWFkNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0y
MzgsNyArMjM4LDcgQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JTY3Jp
cHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWwKIAogICAgIFJldGFpblB0cjxT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBjb25maWd1cmF0aW9uQ29weSA9IGFkb3B0TlMoW2NvbmZpZ3VyYXRpb24gY29weV0pOwotICAg
IFtjb25maWd1cmF0aW9uQ29weSBzZXRVc2VyQ29udGVudENvbnRyb2xsZXI6W1tbV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgW2NvbmZpZ3Vy
YXRpb25Db3B5IHNldFVzZXJDb250ZW50Q29udHJvbGxlcjphZG9wdE5TKFtbV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbW2NvbmZpZ3Vy
YXRpb25Db3B5IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAgICAgW1tjb25maWd1cmF0
aW9uQ29weSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAImhhbmRsZXJUb1Bvc3QiXTsKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25Db3B5
LmdldCgpXSk7CkBAIC0yNTYsNyArMjU2LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxl
ciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsKQogCiAgICAgUmV0
YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVh
c2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJS
ZW1vdmFsVGVzdChjb25maWd1cmF0aW9uLmdldCgpKTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3MiA9IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxl
clJlbW92YWxUZXN0KGNvbmZpZ3VyYXRpb24uZ2V0KCkpOwpAQCAtMzkwLDcgKzM5MCw3IEBAIFRF
U1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFkZFVzZXJTdHlsZVNoZWV0QmVmb3JlQ3JlYXRp
bmdWaWV3KQogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgTm9uQ2Fub25pY2FsaXplZFVS
TCkKIHsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IHdvcmxkID0gW1dLQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKLSAgICBSZXRhaW5QdHI8X1dLVXNlclN0
eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2Nd
IGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3Om5pbCBmb3JNYWlu
RnJhbWVPbmx5Ok5PIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBleGNsdWRlTWF0Y2hQ
YXR0ZXJuU3RyaW5nczpAW10gYmFzZVVSTDpbW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCJodHRwOi8vQ2FtZWxDYXNlLyJdIGF1dG9yZWxlYXNlXSBsZXZlbDpfV0tVc2VyU3R5bGVVc2Vy
TGV2ZWwgY29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7CisgICAgUmV0YWluUHRyPF9XS1VzZXJT
dHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9j
XSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzpuaWwgZm9yTWFp
bkZyYW1lT25seTpOTyBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gZXhjbHVkZU1hdGNo
UGF0dGVyblN0cmluZ3M6QFtdIGJhc2VVUkw6YWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpAImh0dHA6Ly9DYW1lbENhc2UvIl0pLmF1dG9yZWxlYXNlKCkgbGV2ZWw6X1dLVXNl
clN0eWxlVXNlckxldmVsIGNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOwogfQogCiBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRVc2VyU3R5bGVTaGVldEFmdGVyQ3JlYXRpbmdWaWV3
KQpAQCAtODkyLDY1ICs4OTIsNjUgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
LCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQogewotICAgIFdLVXNlclNjcmlwdCAqd2FpdHNGb3JO
b3RpZmljYXRpb24gPSBbW1tXS1VzZXJTY3JpcHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFs
ZXJ0KCd3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlw
dEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgaW5jbHVk
ZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtdIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBh
c3NvY2lhdGVkVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9zY3JpcHQiXSBjb250
ZW50V29ybGQ6W1dLQ29udGVudFdvcmxkIGRlZmF1bHRDbGllbnRXb3JsZF0gZGVmZXJSdW5uaW5n
VW50aWxOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFzZV07Ci0gICAgV0tVc2VyU2NyaXB0ICpk
b2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCJhbGVy
dCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFtZU9ubHk6WUVTXSBhdXRvcmVsZWFz
ZV07Ci0KLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9IFtbVGVzdFdLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3MS5fZGVmZXJyYWJsZVVzZXJT
Y3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7Ci0gICAgW3dlYlZpZXcxLmNvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb25dOwot
ICAgIFt3ZWJWaWV3MS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2Vy
U2NyaXB0OmRvY3VtZW50RW5kXTsKLSAgICBUZXN0VUlEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1Rl
c3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcxLlVJRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICBhdXRvIHdhaXRzRm9yTm90aWZpY2F0aW9uID0gYWRvcHROUyhbW1dL
VXNlclNjcmlwdCBhbGxvY10gX2luaXRXaXRoU291cmNlOkAiYWxlcnQoJ3dhaXRlZCBmb3Igbm90
aWZpY2F0aW9uJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9j
dW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFUyBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5n
czpAW10gZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtdIGFzc29jaWF0ZWRVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50
V29ybGQgZGVmYXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZ
RVNdKTsKKyAgICBhdXRvIGRvY3VtZW50RW5kID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxv
Y10gaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5G
cmFtZU9ubHk6WUVTXSk7CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbVGVzdFdLV2Vi
VmlldyBuZXddKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2Ny
aXB0c05lZWROb3RpZmljYXRpb25dKTsKKyAgICBbW3dlYlZpZXcxIGNvbmZpZ3VyYXRpb25dLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uLmdl
dCgpXTsKKyAgICBbW3dlYlZpZXcxIGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxl
ciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kLmdldCgpXTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcxIHNldFVJRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3MSBsb2FkVGVzdFBhZ2VOYW1lZDpAInNp
bXBsZSJdOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRv
Y3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3MS5fZGVmZXJy
YWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgW3dlYlZp
ZXcxIF9ub3RpZnlVc2VyU2NyaXB0c107Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcxLl9kZWZl
cnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dl
YlZpZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmlj
YXRpb24iKTsKIAogICAgIFt3ZWJWaWV3MSBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRT
dGF0ZV07CiAgICAgW3dlYlZpZXcxIHJlbG9hZF07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2Rl
bGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7Ci0gICAgRVhQ
RUNUX1RSVUUod2ViVmlldzEuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24p
OworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3MSBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5v
dGlmaWNhdGlvbl0pOwogICAgIFt3ZWJWaWV3MSBfbm90aWZ5VXNlclNjcmlwdHNdOwotICAgIEVY
UEVDVF9GQUxTRSh3ZWJWaWV3MS5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlv
bik7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3MSBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVl
ZE5vdGlmaWNhdGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFs
ZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CiAKICAgICBbd2ViVmlldzEgcmVsb2Fk
XTsKIAotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3MS5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVl
ZE5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3MSBfZGVmZXJyYWJsZVVz
ZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdh
dGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CiAgICAgRVhQRUNU
X1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRl
ZCIpOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBFWFBFQ1RfVFJVRShj
b25maWd1cmF0aW9uLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmlj
YXRpb24pOwotICAgIGNvbmZpZ3VyYXRpb24uX2RlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdh
aXRVbnRpbE5vdGlmaWNhdGlvbiA9IE5POwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0g
W1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBF
WFBFQ1RfRkFMU0Uod2ViVmlldzIuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRp
b24pOwotICAgIFt3ZWJWaWV3Mi5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBh
ZGRVc2VyU2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uXTsKLSAgICBbd2ViVmlldzIuY29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDpkb2N1bWVudEVuZF07
Ci0gICAgd2ViVmlldzIuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgRVhQRUNU
X1RSVUUoW2NvbmZpZ3VyYXRpb24gX2RlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbl0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2RlZmVycmFibGVVc2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IE5POworICAgIGF1dG8gd2ViVmll
dzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcyIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90
aWZpY2F0aW9uXSk7CisgICAgW1t3ZWJWaWV3MiBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENv
bnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbi5nZXQoKV07CisgICAg
W1t3ZWJWaWV3MiBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDpkb2N1bWVudEVuZC5nZXQoKV07CisgICAgW3dlYlZpZXcyIHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3MiBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJd
OwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBm
b3Igbm90aWZpY2F0aW9uIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9y
QWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwogCi0gICAgVGVzdFdLV2ViVmlldyAq
d2ViVmlldzMgPSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgRVhQRUNU
X1RSVUUod2ViVmlldzMuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24pOwot
ICAgIFt3ZWJWaWV3My5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2Vy
U2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uXTsKLSAgICBbd2ViVmlldzMuY29uZmlndXJhdGlv
bi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDpkb2N1bWVudEVuZF07Ci0gICAg
d2ViVmlldzMuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2ViVmlldzMgPSBhZG9w
dE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3MyBfZGVm
ZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOworICAgIFtbd2ViVmlldzMgY29u
ZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JO
b3RpZmljYXRpb24uZ2V0KCldOworICAgIFtbd2ViVmlldzMgY29uZmlndXJhdGlvbl0udXNlckNv
bnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmQuZ2V0KCldOworICAgIFt3
ZWJWaWV3MyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldzMgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKICAgICBbd2ViVmlldzMgX25vdGlmeVVzZXJTY3Jp
cHRzXTsKLSAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldzMuX2RlZmVycmFibGVVc2VyU2NyaXB0c05l
ZWROb3RpZmljYXRpb24pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldzMgX2RlZmVycmFibGVV
c2VyU2NyaXB0c05lZWROb3RpZmljYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVn
YXRlIHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVD
VF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5k
ZWQiKTsKIAotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXc0ID0gW1tUZXN0V0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIEVYUEVDVF9UUlVFKHdlYlZpZXc0Ll9kZWZlcnJhYmxlVXNl
clNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKLSAgICBbd2ViVmlldzQuY29uZmlndXJhdGlvbi51
c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07
Ci0gICAgW3dlYlZpZXc0LmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVz
ZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOwotICAgIHdlYlZpZXc0LlVJRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICBhdXRvIHdlYlZpZXc0ID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldzQgX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmlj
YXRpb25dKTsKKyAgICBbW3dlYlZpZXc0IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJv
bGxlciBhZGRVc2VyU2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uLmdldCgpXTsKKyAgICBbW3dl
YlZpZXc0IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0
OmRvY3VtZW50RW5kLmdldCgpXTsKKyAgICBbd2ViVmlldzQgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAgICAgW3dlYlZpZXc0IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlLWlmcmFt
ZSJdOwogICAgIFt3ZWJWaWV3NCBfbm90aWZ5VXNlclNjcmlwdHNdOwogCkBAIC05ODYsNyArOTg2
LDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9s
bGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0VxdWFsVG9TdHJpbmc6QCJJbnZhbGlk
IHJlcGx5Il0pIHsKLSAgICAgICAgICAgIHJlcGx5SGFuZGxlcihbW1tOU0RhdGEgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXSwgbmlsKTsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKSwgbmlsKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbQppbmRleCAzODRlMzEy
NDI2ZGVhNzMxM2RjMWM0MDFkOTI5ZWViYjNjODY5MDdhLi4yOWIzOThjYWE1ZGVkNWQyNjY2NDE2
ZTJkNzZiZGQ4YzZlNDlmNGRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tCkBAIC0xNzIsNyArMTcyLDcg
QEAgVEVTVChVc2VyQ29udGVudFdvcmxkLCBJc29sYXRlZFdvcmxkUGx1Z0luKQogICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHRhc2sucmVxdWVzdC5VUkwucGF0aCwgIi9pZnJhbWVzcmMiKTsK
ICAgICAgICAgICAgIGJvZHkgPSBAImlmcmFtZSBjb250ZW50IjsKICAgICAgICAgfQotICAgICAg
ICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOmJvZHkubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1d
OworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpib2R5Lmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbYm9keSBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBbdGFzayBk
aWRGaW5pc2hdOwogICAgIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCAzYjNmNmRlZDFhODQ4
OWFhYWY5ZGIwNWMxNDczNjM2MTM4YmQzYTAxLi44ZWI4OGM3MTRkMDZmNmZhOThlMWEyOGFlMjQy
Yzk3YjhiZTI1MDZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTU2Miw5ICs1NjIsOSBAQCB2
b2lkIHBsYXRmb3JtQ29weVJpY2hUZXh0V2l0aEltYWdlKCkKICAgICBhdXRvIHJpY2hUZXh0ID0g
YWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKICAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRGF0
YTp0ZXN0SW1hZ2VEYXRhKCkgb2ZUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkdd
KTsKIAotICAgIFtyaWNoVGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJMb3JlbSBpcHN1bSAiXSBhdXRvcmVsZWFz
ZV1dOworICAgIFtyaWNoVGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiTG9yZW0gaXBzdW0gIl0pLmF1
dG9yZWxlYXNlKCldOwogICAgIFtyaWNoVGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltOU0F0
dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmltYWdlLmdldCgp
XV07Ci0gICAgW3JpY2hUZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6W1tbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiBkb2xvciBzaXQgYW1ldC4iXSBhdXRvcmVs
ZWFzZV1dOworICAgIFtyaWNoVGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIGRvbG9yIHNpdCBhbWV0
LiJdKS5hdXRvcmVsZWFzZSgpXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKQEAgLTYw
MSw3ICs2MDEsNyBAQCB0eXBlZGVmIFVJSW1hZ2UgUGxhdGZvcm1JbWFnZTsKIFBsYXRmb3JtSW1h
Z2UgKnBsYXRmb3JtSW1hZ2VXaXRoRGF0YShOU0RhdGEgKmRhdGEpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmRhdGFdKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICByZXR1cm4gW1VJSW1hZ2UgaW1h
Z2VXaXRoRGF0YTpkYXRhXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMGY4MDdi
OGZhMDI1ZDIxNmMzZDUyZTliMWJkMjc5OTkwYjQ0MTMyOC4uODdhODUwNDMyZDRiZmQ1ZjBlNTg1
NmY0NDA3ZmQwMWVhMjdiZWQ0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC02MTEsNyArNjEx
LDcgQEAgQGVuZAogCiBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVNdWx0aXBsZVZpZXdz
KQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcxID0gW1tUZXN0V0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3
IG5ld10pOwogICAgIFt3ZWJWaWV3MSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFy
dCBuZXR3b3JrIHByb2Nlc3MiXTsKIAogICAgIE5TSFRUUENvb2tpZSAqc2Vzc2lvbkNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKQEAgLTYyMiw3ICs2MjIsNyBA
QCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVNdWx0aXBsZVZpZXdzKQogICAgIH1dOwog
CiAgICAgX19ibG9jayBib29sIHNldENvb2tpZURvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldzEu
Y29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZSBzZXRDb29raWU6
c2Vzc2lvbkNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgIFtbd2ViVmlldzEgY29uZmln
dXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5odHRwQ29va2llU3RvcmUgc2V0Q29va2llOnNlc3Np
b25Db29raWUgY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAgICAgc2V0Q29va2llRG9uZSA9IHRy
dWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXRDb29raWVEb25l
KTsKQEAgLTYzMyw3ICs2MzMsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVNdWx0
aXBsZVZpZXdzKQogICAgIFt3ZWJWaWV3MSBsb2FkSFRNTFN0cmluZzpbZGVsZWdhdGUgYWxlcnRD
b29raWVIVE1MXSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovLzEyNy4wLjAu
MSJdXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JNZXNzYWdlXSwgIlNl
c3Npb25Db29raWVOYW1lPUNvb2tpZVZhbHVlIik7CiAKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJW
aWV3MiA9IFtbVGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcyID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldzIgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcyIGxvYWRIVE1MU3RyaW5nOltk
ZWxlZ2F0ZSBhbGVydENvb2tpZUhUTUxdIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vMTI3LjAuMC4xIl1dOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZv
ck1lc3NhZ2VdLCAiU2Vzc2lvbkNvb2tpZU5hbWU9Q29va2llVmFsdWUiKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQppbmRleCBhMzZkYjIxODkzYTExZWNlNWI0MTYwZGIzNGZjMzcwNGFlMWI1NjQ3
Li41YTA0NjQyZWZhNDIyNGMzYjIxN2YwYTIxMjQ4MWUwZjRlMDA3Y2Q4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckRlbGVnYXRlLm1tCkBAIC0xMjUsOSArMTI1LDkgQEAgLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JMb2MK
ICAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmdldCgp
XTsKIAogICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVSTFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdOwotICAgIFJldGFpblB0cjxfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
PiBpbnNwZWN0b3JDb25maWd1cmF0aW9uID0gW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XTsKKyAgICBhdXRvIGluc3BlY3RvckNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtpbnNwZWN0b3JD
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2hhcmVkVVJMU2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07Ci0gICAgcmV0dXJuIFtpbnNwZWN0b3JDb25m
aWd1cmF0aW9uIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQREZWaWV3
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0K
aW5kZXggNzBmY2Q3YWViMDgxMjU3ZTQ2YWFiOTJhZDE4ZmUyMTk2M2ZhYTBhZi4uZTFiZTQyMGY5
MzZjYjRjOTA4YjRhOWUzYjc2MDBhYWE4YTQyNmY1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0KQEAgLTE2MSwxOCArMTYxLDE4
IEBAIHN0YXRpYyB2b2lkIGNoZWNrRnJhbWUoTlNSZWN0IGZyYW1lLCBDR0Zsb2F0IHgsIENHRmxv
YXQgeSwgQ0dGbG9hdCB3aWR0aCwgQ0dGbG9hCiAKIFRFU1QoUERGSFVELCBNYWluUmVzb3VyY2VQ
REYpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSkuYXV0b3JlbGVhc2UoKV0pOwogICAgIFt3
ZWJWaWV3IGxvYWREYXRhOnBkZkRhdGEoKSBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgY2hh
cmFjdGVyRW5jb2RpbmdOYW1lOkAiIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93d3cuYXBwbGUuY29tL3Rlc3RQYXRoIl1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9w
ZGZIVURzLmNvdW50LCAwdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3Vu
dCwgMHUpOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
LSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJh
bWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUsIDAsIDAsIDgwMCwgNjAwKTsKKyAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFt
ZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAwLCAwLCA4MDAsIDYwMCk7CiAg
ICAgCi0gICAgVGVzdFVJRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tUZXN0VUlEZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgX19ibG9jayBib29sIHNhdmVS
ZXF1ZXN0UmVjZWl2ZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5zYXZlRGF0YVRvRmlsZSA9IF4o
V0tXZWJWaWV3ICp3ZWJWaWV3RnJvbURlbGVnYXRlLCBOU0RhdGEgKmRhdGEsIE5TU3RyaW5nICpz
dWdnZXN0ZWRGaWxlbmFtZSwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VSTCAqb3JpZ2luYXRpbmdV
UkwpIHsKLSAgICAgICAgRVhQRUNUX0VRKHdlYlZpZXcsIHdlYlZpZXdGcm9tRGVsZWdhdGUpOwor
ICAgIGRlbGVnYXRlLmdldCgpLnNhdmVEYXRhVG9GaWxlID0gXihXS1dlYlZpZXcgKndlYlZpZXdG
cm9tRGVsZWdhdGUsIE5TRGF0YSAqZGF0YSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCBO
U1N0cmluZyAqbWltZVR5cGUsIE5TVVJMICpvcmlnaW5hdGluZ1VSTCkgeworICAgICAgICBFWFBF
Q1RfRVEod2ViVmlldy5nZXQoKSwgd2ViVmlld0Zyb21EZWxlZ2F0ZSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKFtkYXRhIGlzRXF1YWxUb0RhdGE6cGRmRGF0YSgpXSk7CiAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInRlc3RQYXRoLnBkZiIpOwogICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEobWltZVR5cGUsICJhcHBsaWNhdGlvbi9wZGYiKTsKQEAgLTE4MSw5ICsxODEs
OSBAQCBURVNUKFBERkhVRCwgTWFpblJlc291cmNlUERGKQogICAgIFtbd2ViVmlldyBfcGRmSFVE
c10uYW55T2JqZWN0IHBlcmZvcm1TZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhAIl9wZXJm
b3JtQWN0aW9uRm9yQ29udHJvbDoiKSB3aXRoT2JqZWN0OkAiYXJyb3cuZG93bi5jaXJjbGUiXTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNhdmVSZXF1ZXN0UmVjZWl2ZWQpOwogCi0g
ICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKKyAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CiAgICAgW3dlYlZpZXcgX2tpbGxXZWJDb250
ZW50UHJvY2Vzc107Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgd2hp
bGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c3BpblJ1bkxvb3AoKTsKIH0KIApAQCAtMTkxLDE2MyArMTkxLDE2MyBAQCBURVNUKFBERkhV
RCwgTWFpblJlc291cmNlUERGKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMAogVEVTVChQREZIVUQsIE1vdmVJRnJhbWUpCiB7Ci0g
ICAgVGVzdFVSTFNjaGVtZUhhbmRsZXIgKmhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVy
IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxl
ciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIGhhbmRs
ZXIuZ2V0KCkuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdL
VVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKLSAgICAgICAgICAgIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGF1dG8g
cmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGh0bWwg
PSAiPGJyLz48aWZyYW1lIHNyYz0ndGVzdC5wZGYnIGlkPSdwZGZmcmFtZSc+PC9pZnJhbWU+IjsK
LSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3Ro
OnN0cmxlbihodG1sKV1dOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLnBh
dGgsICIvdGVzdC5wZGYiKTsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IHBkZkRhdGEoKTsK
LSAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9u
L3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6
bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
cmVzcG9uc2VdOworICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBw
bGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwotICAgIFRlc3RXS1dlYlZpZXcg
KndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAidGVzdDovLy9tYWluLmh0bWwiXV1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3
Ll9wZGZIVURzLmNvdW50LCAwdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5j
b3VudCwgMHUpOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKIAogICAgIC8vIElmIHRoZSBUZXN0V0tXZWJWaWV3IGlzIG5vdCB2aXNpYmxlLCB2aXNpYmls
aXR5RGlkQ2hhbmdlIHdpbGwgYmUgY2FsbGVkIHdpdGggZmFsc2UsIGFuZCB0aGVyZSB3aWxsIGJl
IG5vIEhVRC4KLSAgICBpZiAoIXdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgaWYgKCFbd2Vi
VmlldyBfcGRmSFVEc10uY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVYUEVDVF9FUSh3
ZWJWaWV3Ll9wZGZIVURzLmNvdW50LCAxdSk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJWaWV3Ll9wZGZI
VURzLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCAzMDAsIDE1MCk7CisgICAgRVhQRUNUX0VRKFt3
ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3Bk
ZkhVRHNdLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCAzMDAsIDE1MCk7CiAKICAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJwZGZmcmFtZS53aWR0aD00MDAiIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLnNp
emUud2lkdGggIT0gNDAwKQorICAgIHdoaWxlIChbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0
LmZyYW1lLnNpemUud2lkdGggIT0gNDAwKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3Qu
ZnJhbWUsIDEwLCAyOCwgNDAwLCAxNTApOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhV
RHNdLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCA0MDAsIDE1MCk7CiAKICAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZnJhbWVSZWZlcmVuY2UgPSBwZGZmcmFtZTsgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChwZGZmcmFtZSkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci0g
ICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgd2hpbGUgKFt3ZWJWaWV3IF9w
ZGZIVURzXS5jb3VudCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3Ao
KTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGZyYW1lUmVmZXJlbmNlKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICB3aGls
ZSAoIXdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgd2hpbGUgKCFbd2ViVmlldyBfcGRmSFVE
c10uY291bnQpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0g
ICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVja0ZyYW1l
KHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAwLCAwLCAwLCAwKTsKLSAgICB3aGls
ZSAod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0MDApCisg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJh
bWUoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9iamVjdC5mcmFtZSwgMCwgMCwgMCwgMCk7CisgICAg
d2hpbGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0
MDApCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgRVhQ
RUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVja0ZyYW1lKHdlYlZp
ZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDQwMCwgMTUwKTsKKyAgICBFWFBF
Q1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShbd2Vi
VmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDQwMCwgMTUwKTsKIAotICAg
IHdlYlZpZXcucGFnZVpvb20gPSAxLjQ7Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuYW55
T2JqZWN0LmZyYW1lLnNpemUud2lkdGggIT0gNTYwKQorICAgIFt3ZWJWaWV3IHNldFBhZ2Vab29t
OjEuNF07CisgICAgd2hpbGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUuc2l6
ZS53aWR0aCAhPSA1NjApCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29w
KCk7Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVj
a0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAxNCwgNDAsIDU2MCwgMjEw
KTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hl
Y2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxNCwgNDAsIDU2MCwg
MjEwKTsKIH0KICNlbmRpZgogCiBURVNUKFBERkhVRCwgTmVzdGVkSUZyYW1lcykKIHsKLSAgICBU
ZXN0VVJMU2NoZW1lSGFuZGxlciAqaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgaGFuZGxlci5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0g
XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7Ci0gICAgICAgIE5TVVJM
UmVzcG9uc2UgKmh0bWxSZXNwb25zZSA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBo
YW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CisgICAgaGFuZGxl
ci5nZXQoKS5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tV
UkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gaHRtbFJlc3BvbnNlID0gYWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAgICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8
aWZyYW1lIHNyYz0nZnJhbWUuaHRtbCcgaWQ9J3BhcmVudGZyYW1lJz48L2lmcmFtZT4iOwotICAg
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07CisgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsKICAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1sIGxl
bmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAg
ICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIv
ZnJhbWUuaHRtbCJdKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBodG1sID0gIjxpZnJhbWUg
c3JjPSd0ZXN0LnBkZic+PC9pZnJhbWU+IjsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpodG1sUmVzcG9uc2VdOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOmh0bWxSZXNwb25zZS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVuKGh0bWwpXV07CiAgICAg
ICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHRhc2sucmVxdWVzdC5VUkwucGF0aCwgIi90ZXN0LnBkZiIpOwogICAg
ICAgICAgICAgTlNEYXRhICpkYXRhID0gcGRmRGF0YSgpOwotICAgICAgICAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgICAgICAg
ICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGV4cGVjdGVk
Q29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKICAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmlu
aXNoXTsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2Vd
OwotICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxT
Y2hlbWU6QCJ0ZXN0Il07Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAidGVzdCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL21h
aW4uaHRtbCJdXV07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDB1KTsK
KyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAwdSk7CiAgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotICAgIEVYUEVDVF9FUSh3ZWJW
aWV3Ll9wZGZIVURzLmNvdW50LCAxdSk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJWaWV3Ll9wZGZIVURz
LmFueU9iamVjdC5mcmFtZSwgMjAsIDIwLCAzMDAsIDE1MCk7CisgICAgRVhQRUNUX0VRKFt3ZWJW
aWV3IF9wZGZIVURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhV
RHNdLmFueU9iamVjdC5mcmFtZSwgMjAsIDIwLCAzMDAsIDE1MCk7CiAgICAgCiAgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwYXJlbnRm
cmFtZSkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhV
RHMuY291bnQpCisgICAgd2hpbGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKIH0KIAogVEVTVChQREZIVUQsIElG
cmFtZTNEVHJhbnNmb3JtKQogewotICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0g
W1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBoYW5kbGVyLnN0
YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRh
c2s+IHRhc2spIHsKLSAgICAgICAgTlNVUkxSZXNwb25zZSAqaHRtbFJlc3BvbnNlID0gW1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1l
SGFuZGxlciBuZXddKTsKKyAgICBoYW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAg
YXV0byBodG1sUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgaWYgKFt0YXNrLnJl
cXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBodG1sID0gIjxpZnJhbWUgc3JjPSd0ZXN0LnBkZicgaGVpZ2h0PTUw
MCB3aWR0aD01MDAgc3R5bGU9J3RyYW5zZm9ybTpyb3RhdGVZKDIzNWRlZyk7Jz48L2lmcmFtZT4i
OwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07Cisg
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsK
ICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpo
dG1sIGxlbmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1
ZXN0LlVSTC5wYXRoLCAiL3Rlc3QucGRmIik7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBw
ZGZEYXRhKCk7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJh
cHBsaWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3Ro
IHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfTsK
IAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAgICBUZXN0
V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vbWFpbi5odG1sIl1dXTsKLSAgICBFWFBFQ1Rf
RVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBf
cGRmSFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsK
LSAgICBjaGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCA0MDMsIDEw
LCA1MDAsIDUwMCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMXUp
OworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9iamVjdC5mcmFtZSwgNDAz
LCAxMCwgNTAwLCA1MDApOwogfQogCiBURVNUKFBERkhVRCwgTXVsdGlwbGVJRnJhbWVzKQogewot
ICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxl
ciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBoYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKLSAgICAgICAg
TlNVUkxSZXNwb25zZSAqaHRtbFJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKKyAgICBo
YW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBp
ZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0byBodG1sUmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBodG1s
ID0gIjxpZnJhbWUgc3JjPSd0ZXN0LnBkZicgaGVpZ2h0PTEwMCB3aWR0aD0xNTA+PC9pZnJhbWU+
PGlmcmFtZSBzcmM9J3Rlc3QucGRmJyBoZWlnaHQ9MTIzIHdpZHRoPTEzND48L2lmcmFtZT4iOwot
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07CisgICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1s
IGxlbmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1ZXN0
LlVSTC5wYXRoLCAiL3Rlc3QucGRmIik7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBwZGZE
YXRhKCk7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBs
aWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0
YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAgICBUZXN0V0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vbWFpbi5odG1sIl1dXTsKLSAgICBFWFBFQ1RfRVEo
d2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRm
SFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDJ1KTsKKyAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAydSk7CiAgICAgYm9vbCBoYWRM
ZWZ0RnJhbWUgPSBmYWxzZTsKICAgICBib29sIGhhZFJpZ2h0RnJhbWUgPSBmYWxzZTsKLSAgICBm
b3IgKE5TVmlldyAqaHVkIGluIHdlYlZpZXcuX3BkZkhVRHMpIHsKKyAgICBmb3IgKE5TVmlldyAq
aHVkIGluIFt3ZWJWaWV3IF9wZGZIVURzXSkgewogICAgICAgICBpZiAoaHVkLmZyYW1lLm9yaWdp
bi54ID09IDEwKSB7CiAgICAgICAgICAgICBjaGVja0ZyYW1lKGh1ZC5mcmFtZSwgMTAsIDMzLCAx
NTAsIDEwMCk7CiAgICAgICAgICAgICBoYWRMZWZ0RnJhbWUgPSB0cnVlOwpAQCAtMzY0LDEyICsz
NjQsMTIgQEAgVEVTVChQREZIVUQsIExvYWRQREZUeXBlV2l0aFBsdWdpbnNCbG9ja2VkKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5OkAib2JqZWN0LXNyYyAnbm9uZSciXTsKLSAgICBUZXN0V0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkRGF0YTpwZGZEYXRhKCkg
TUlNRVR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAIiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS90ZXN0UGF0
aCJdXTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVY
UEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3Bk
ZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2Jq
ZWN0LmZyYW1lLCAwLCAwLCA4MDAsIDYwMCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZI
VURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9i
amVjdC5mcmFtZSwgMCwgMCwgODAwLCA2MDApOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCmluZGV4IGQ3NWU1YjI0MDYwMmZlOGRkMWEwMmI1Y2NkOGE5NDIwMzg3ZWQwZDku
LjAwNTYxYzcxYmIxODRjYWYzYWNjYTA0NWQ3NzU4OTk2M2I0NDYyY2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXItMS5tbQpAQCAtMzgwLDEzICszODAsMTMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4p
dGEKICAgICAgICAgZm9yIChhdXRvIGNvbW1hbmQgOiBjb21tYW5kcykgewogICAgICAgICAgICAg
c3dpdGNoIChjb21tYW5kKSB7CiAgICAgICAgICAgICBjYXNlIENvbW1hbmQ6OlJlZGlyZWN0Ogot
ICAgICAgICAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVy
Zm9ybVJlZGlyZWN0aW9uOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XSBuZXdSZXF1ZXN0OltbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2RpZFBl
cmZvcm1SZWRpcmVjdGlvbjphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0pLmF1
dG9yZWxlYXNlKCkgbmV3UmVxdWVzdDphZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0
XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENvbW1hbmQ6OlJlc3BvbnNlOgotICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAg
ICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNw
b25zZSBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDb21tYW5kOjpEYXRhOgotICAgICAgICAgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVEYXRhOltbW05TRGF0YSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAg
ICAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTphZG9wdE5TKFtbTlNEYXRhIGFsbG9j
XSBpbml0XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENvbW1hbmQ6OkZpbmlzaDoKICAgICAgICAgICAgICAgICBbdGFzayBkaWRGaW5p
c2hdOwpAQCAtNTc0LDEyICs1NzQsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKIHsKICAg
ICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAi
c3luY2Vycm9yOi8vL21haW4uaHRtbCJdKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBi
eXRlcyA9ICI8c2NyaXB0PnZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7eGhyLm9wZW4oJ0dF
VCcsJ3N1YnJlc291cmNlJyxmYWxzZSk7dHJ5e3hoci5zZW5kKG51bGwpO2FsZXJ0KCdubyBlcnJv
cicpfWNhdGNoKGUpe2FsZXJ0KGUpfTwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RybGVu
KGJ5dGVzKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6c3RybGVuKGJ5dGVzKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxl
YXNlKCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Ynl0ZXMgbGVuZ3RoOnN0cmxlbihieXRlcyldXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNo
XTsKICAgICB9IGVsc2UgewogICAgICAgICBFWFBFQ1RfU1RSRVEodGFzay5yZXF1ZXN0LlVSTC5h
YnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nLCAic3luY2Vycm9yOi8vL3N1YnJlc291cmNlIik7Ci0g
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRv
cHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAg
ICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJUZXN0
RXJyb3JEb21haW4iIGNvZGU6MTIzIHVzZXJJbmZvOm5pbF1dOwogICAgIH0KIH0KQEAgLTc5MSwx
OCArNzkxLDE4IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgQ09SUykKICAgICBbaGFuZGxlciBz
ZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtA
IjxzY3JpcHQ+ZmV0Y2goJ2NvcnM6Ly9ob3N0Mi9jb3JzcmVzb3VyY2UnKS50aGVuKGZ1bmN0aW9u
KCl7ZmV0Y2goJy9jb3Jzc3VjY2VzcycpfSkuY2F0Y2goZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNm
YWlsdXJlJyl9KTwvc2NyaXB0PiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTph
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3Ro
IHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCIvY29yc3Jlc291cmNlIl0pIHsKICAgICAgICAgICAgIGlmIChpbmNsdWRlQ09SU0hlYWRlckZp
ZWxkSW5SZXNwb25zZSkgewotICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpbW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpuaWwgaGVhZGVyRmllbGRzOkB7CisgICAgICAg
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU0hUVFBVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBI
VFRQVmVyc2lvbjpuaWwgaGVhZGVyRmllbGRzOkB7CiAgICAgICAgICAgICAgICAgICAgIEAiQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKICAgICAgICAgICAgICAgICAgICAgQCJD
b250ZW50LUxlbmd0aCI6IEAiMiIsCiAgICAgICAgICAgICAgICAgICAgIEAiQ29udGVudC1UeXBl
IjpAInRleHQvaHRtbCIKLSAgICAgICAgICAgICAgICB9XSBhdXRvcmVsZWFzZV1dOworICAgICAg
ICAgICAgICAgIH1dKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0
ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSku
YXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbQCJISSIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICAgICAgICAgIFt0
YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29yc3N1Y2Nlc3MiXSkgewpAQCAtODQzLDcgKzg0Myw3IEBA
IFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlMpCiAKICAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKIAotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBb
Y29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAiY29ycyJdOwogCiAgICAgTlNTdHJpbmcgKnRlc3RKUyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OgpAQCAtODYxLDcgKzg2MSw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlz
YWJsZUNPUlMpCiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OgogICAgICAgICAgICAgICAgIEAiPHNjcmlwdD4lQDwvc2Ny
aXB0PiIsIHRlc3RKU10gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwot
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4
cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0
b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRF
bmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAg
IH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29y
c3N1Y2Nlc3MiXSkgewpAQCAtODc1LDcgKzg3NSw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwg
RGlzYWJsZUNPUlMpCiAgICAgfV07CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtODg2LDgg
Kzg4Niw4IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlMpCiAgICAgY29yc2Zh
aWx1cmUgPSBmYWxzZTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBjb25maWd1cmF0aW9uLl9j
b3JzRGlzYWJsaW5nUGF0dGVybnMgPSBAW0AiKjovLyovKiJdOwotICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgY29uZmlndXJh
dGlvbi5nZXQoKS5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8qLyoiXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIEVYUEVDVF9UUlVFKGNvcnNz
dWNjZXNzKTsKQEAgLTkyNiwxMyArOTI2LDEzIEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlz
YWJsZUNPUlNDcmVkZW50aWFscykKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0
VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjb3JzIl07CiAK
ICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcg
KiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0
LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAgICAgICAg
TlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD5mZXRj
aCgnaHR0cDovLzEyNy4wLjAuMTolZC9zdWJyZXNvdXJjZScsIHtjcmVkZW50aWFsczonaW5jbHVk
ZSd9KS50aGVuKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3Jzc3VjY2VzcycpfSkuY2F0Y2goZnVuY3Rp
b24oKXtmZXRjaCgnL2NvcnNmYWlsdXJlJyl9KTwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCldIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0p
LmF1dG9yZWxlYXNlKCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07
CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNr
LnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NvcnNzdWNjZXNzIl0pIHsKQEAg
LTk0Niw3ICs5NDYsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTQ3JlZGVu
dGlhbHMpCiAgICAgfV07CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtOTU3LDkgKzk1Nyw5
IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNDcmVkZW50aWFscykKICAgICBj
b3JzZmFpbHVyZSA9IGZhbHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRp
b24uX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IE5POworICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkuX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IE5P
OwogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
ImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTk3OSwxNCArOTc5LDE0IEBAIFRFU1QoVVJMU2NoZW1l
SGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQpCiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJdOwogCiAg
ICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICos
IGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5V
UkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKICAgICAgICAgICAgIE5T
RGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQgdHlwZT0n
dGV4dC9qYXZhc2NyaXB0JyBjcm9zc29yaWdpbj0nYW5vbnltb3VzJyBvbmVycm9yPSdmZXRjaChc
ImxvYWRGYWlsXCIpJyBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L3NjcmlwdD4iLCBzZXJ2
ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4
dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFt
ZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxl
bmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hd
OwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL2xvYWRTdWNjZXNzIl0pIHsKQEAgLTEwMDAsNyArMTAwMCw3IEBAIFRFU1QoVVJMU2No
ZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQpCiAgICAgfV07CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFp
bi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAg
ICB9CkBAIC0xMDExLDkgKzEwMTEsOSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVD
T1JTU2NyaXB0KQogICAgIGxvYWRGYWlsID0gZmFsc2U7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0g
ICAgY29uZmlndXJhdGlvbi5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8qLyoiXTsK
KyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBAW0AiKjov
LyovKiJdOwogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTEwMjksNyArMTAyOSw3IEBAIFRFU1QoVVJM
U2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNDYW52YXMpCiAKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKIAotICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJd
OwogCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJW
aWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtMTA2NCwxNCArMTA2NCwxNCBA
QCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTQ2FudmFzKQogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICAgICAgaWYgKHJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTptaW1lVHlwZSBleHBlY3RlZENvbnRl
bnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFz
ZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm1p
bWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5n
TmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVE
YXRhOnJlc3BvbnNlXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0K
ICAgICB9XTsKIAogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTEwODIsOSArMTA4Miw5IEBAIFRFU1Qo
VVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNDYW52YXMpCiAgICAgY29yc2ZhaWx1cmUgPSBm
YWxzZTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBjb25maWd1cmF0aW9uLl9jb3JzRGlzYWJs
aW5nUGF0dGVybnMgPSBAW0AiKjovLyovKiJdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIqOi8vKi8qIl07CiAgICAgewotICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRt
bCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpA
QCAtMTEwNCw3ICsxMTA0LDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc0Zyb21OZXR3
b3JrKQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIg
bmV3XSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKIAogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJM
U2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRh
c2spIHsKQEAgLTExMTcsNyArMTExNyw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNG
cm9tTmV0d29yaykKICAgICAgICAgICAgICAgICAgICAgIndzLm9uZXJyb3IgPSBmdW5jdGlvbigp
IHsgZmV0Y2goJy9sb2FkRmFpbCcpIH07IgogICAgICAgICAgICAgICAgICJ9KSIKICAgICAgICAg
ICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKSwgc2VydmVyLnBvcnQoKV0gZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlk
UmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2su
cmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpk
YXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0
b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVx
dWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZFN1Y2Nlc3MiXSkgewpAQCAtMTEz
MSw3ICsxMTMxLDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc0Zyb21OZXR3b3JrKQog
ICAgIH1dOwogICAgIAogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTExNDMsOSArMTE0Myw5IEBAIFRF
U1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykKICAgICBsb2FkRmFpbCA9IGZh
bHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uX2xvYWRzRnJvbU5l
dHdvcmsgPSBOTzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9sb2Fkc0Zyb21OZXR3b3JrID0g
Tk87CiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAidGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgVEVTVChVUkxTY2hl
bWVIYW5kbGVyLCBMb2Fkc1N1YnJlc291cmNlcykKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0
TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CiAK
ICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcg
KiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CkBAIC0xMTc2LDEzICsxMTc2LDEzIEBAIFRF
U1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgICAgICAgICBsb2Fk
ZWRJRnJhbWUgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQv
aHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5jb2RpbmdO
YW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2Uu
bGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ11dOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH1dOwogICAgIAog
ICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRl
c3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmxvYWRlZEltYWdlKTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZsb2Fk
ZWRJRnJhbWUpOwpAQCAtMTE5MSw5ICsxMTkxLDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBM
b2Fkc1N1YnJlc291cmNlcykKICAgICBsb2FkZWRJbWFnZSA9IGZhbHNlOwogICAgIGxvYWRlZElG
cmFtZSA9IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5fbG9hZHNTdWJyZXNvdXJjZXMgPSBO
TzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9sb2Fkc1N1YnJlc291cmNlcyA9IE5POwogICAg
IHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgICAgIHdlYlZpZXcuZ2V0KCku
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKQEAgLTEyMzksNyArMTIzOSw3IEBAIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlk
IDxXS1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgfTsKIAogICAgIGF1dG8gcmVzcG9uZCA9IFtdIChp
ZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2ssIGNvbnN0IGNoYXIqIGJ5dGVzKSB7Ci0gICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6c3RybGVuKGJ5dGVzKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RybGVuKGJ5dGVzKSB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6Ynl0ZXMgbGVuZ3RoOnN0cmxlbihieXRlcyldXTsKICAgICAgICAgW3Rh
c2sgZGlkRmluaXNoXTsKICAgICB9OwpAQCAtMTM3NCwyMSArMTM3NCwyMSBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIEZyYW1lcykKIAogVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBPcmlnaW4pCiB7
Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIGF1dG8gaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtU
ZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVt
ZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewog
ICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcgPSBAIjxzY3JpcHQ+YWxlcnQoIgogICAg
ICAgICAgICAgIm5ldyBVUkwoJ3JlZ2lzdGVyZWQ6Ly9ob3N0OjEyMy9wYXRoJykub3JpZ2luICsg
JywgJyArICIKICAgICAgICAgICAgICJuZXcgVVJMKCdub3RyZWdpc3RlcmVkOi8vaG9zdDoxMjMv
cGF0aCcpLm9yaWdpbiIKICAgICAgICAgIik8L3NjcmlwdD4iOwotICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJl
c3BvbnNlU3RyaW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2VTdHJpbmcubGVuZ3RoIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRh
OltyZXNwb25zZVN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11d
OwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH1dOwotICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxTY2hlbWU6QCJyZWdpc3RlcmVkIl07
Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicmVn
aXN0ZXJlZCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInJlZ2lzdGVyZWQ6Ly8vIl1dXTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJyZWdpc3RlcmVkOi8vaG9z
dDoxMjMsIG51bGwiKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA2ZjI3
NmExNTc0Zjk5NmYzMmVkZmZlZWMyOThlNmYxODZjZWNlMTdmLi41YmY2ZGE5M2RiNjljNTliNjAy
MWU4YWJmOWVlNDRiMjdkNWJhZjdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBA
IC0xMTMsMTkgKzExMywxOSBAQCBURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbkhUVFBTVXBncmFk
ZSkKIAogICAgIGF1dG8gcnVuVGVzdCA9IFsmXSAoYm9vbCB1cGdyYWRlKSB7CiAgICAgICAgIGRv
bmUgPSBmYWxzZTsKLSAgICAgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1
cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHN0b3JlQ29uZmlndXJhdGlvbi5hbGxvd3NT
ZXJ2ZXJQcmVjb25uZWN0ID0gTk87Ci0gICAgICAgIHN0b3JlQ29uZmlndXJhdGlvbi5wcm94eUNv
bmZpZ3VyYXRpb24gPSBAeworICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNp
c3RlbnRDb25maWd1cmF0aW9uXSk7CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0QWxs
b3dzU2VydmVyUHJlY29ubmVjdDpOT107CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0
UHJveHlDb25maWd1cmF0aW9uOkB7CiAgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Q
cm9wZXJ0eUhUVFBTUHJveHlIb3N0OiBAIjEyNy4wLjAuMSIsCiAgICAgICAgICAgICAoTlNTdHJp
bmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBTUHJveHlQb3J0OiBAKHNlcnZlci5wb3J0KCkpLAog
ICAgICAgICAgICAgKE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlIb3N0OiBA
IjEyNy4wLjAuMSIsCiAgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhU
VFBQcm94eVBvcnQ6IEAoc2VydmVyLnBvcnQoKSksCi0gICAgICAgIH07Ci0gICAgICAgIGF1dG8g
c3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gc3RvcmU7Ci0gICAgICAgIGNv
bmZpZ3VyYXRpb24udXBncmFkZUtub3duSG9zdHNUb0hUVFBTID0gdXBncmFkZTsKLSAgICAgICAg
YXV0byB3ZWJWaWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFpl
cm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgICAgIH1d
OworICAgICAgICBhdXRvIHN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBuZXddKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpzdG9y
ZS5nZXQoKV07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFVwZ3JhZGVLbm93bkhvc3RzVG9I
VFRQUzp1cGdyYWRlXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogICAgICAgICBhdXRvIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3d3dy5vcGVuZ2wub3JnLyJd
XTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgICAgIFV0aWw6
OnJ1bigmZG9uZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCmluZGV4
IGM3MDVhOTE1YWNhM2I1NDcwNmQ2MzcyMzNmNzJhMTVmNGIwOTY4MTEuLmQxYzQ1MDM1Y2ZiOTM3
MDUwYWNlODg1YmI3MTg4ZThkYzY0NGFmMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVK
YXZhU2NyaXB0Lm1tCkBAIC0xOTcsOCArMTk3LDggQEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRl
SmF2YVNjcmlwdEluV29ybGRzKQogCiAgICAgLy8gQWRkIGEgc2NyaXB0TWVzc2FnZUhhbmRsZXIg
aW4gYSBuYW1lZCB3b3JsZC4KICAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IG5hbWVkV29y
bGQgPSBbV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWVkV29ybGQiXTsKLSAgICBp
ZCBoYW5kbGVyID0gW1tbRHVtbXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwotICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9s
bGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyIG5hbWU6QCJ0ZXN0SGFuZGxlck5h
bWUiIHVzZXJDb250ZW50V29ybGQ6bmFtZWRXb3JsZC5nZXQoKS5fdXNlckNvbnRlbnRXb3JsZF07
CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0R1bW15TWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29u
dHJvbGxlciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXJOYW1lIiB1c2VyQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkuX3VzZXJDb250
ZW50V29ybGRdOwogCiAgICAgLy8gU2V0IGEgdmFyaWFibGUgdmFsdWUgaW4gdGhhdCBuYW1lZCB3
b3JsZC4KICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgYmFyID0gJ2Jheici
IGluRnJhbWU6bmlsIGluQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CkBAIC00NDIsOSArNDQyLDkgQEAg
VEVTVChXZWJLaXQsIFNQSUphdmFzY3JpcHRNYXJrdXBWc0FQSUNvbnRlbnRKYXZhU2NyaXB0KQog
ewogICAgIC8vIFRoZXJlJ3Mgbm90IGEgZHluYW1pY2FsbHkgY29uZmlndXJhdGlvbiBzZXR0aW5n
IGZvciBqYXZhc2NyaXB0IG1hcmt1cCwKICAgICAvLyBidXQgaXQgY2FuIGJlIGNvbmZpZ3VyZWQg
YXQgV0tXZWJWaWV3IGNyZWF0aW9uIHRpbWUuCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXTsKLSAgICBjb25maWd1cmF0aW9uLl9hbGxvd3NKYXZhU2NyaXB0TWFya3VwID0g
Tk87Ci0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtj
b25maWd1cmF0aW9uIF9zZXRBbGxvd3NKYXZhU2NyaXB0TWFya3VwOk5PXTsKKyAgICBSZXRhaW5Q
dHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGZvbGxvd2lu
ZyBKUyBkb2VzIG5vdCBleGVjdXRlLgogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIjxzY3JpcHQ+dmFyIGZvbyA9ICdiYXInPC9zY3JpcHQ+Il07CkBAIC01MDMsMTkg
KzUwMywxOSBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJv
bVBvc3RNZXNzYWdlKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRnJhbWVz
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9w
dE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNl
IGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBm
b3JNYWluRnJhbWVPbmx5Ok5PIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRD
bGllbnRXb3JsZF0pOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
biA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
LSAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp1
c2VyU2NyaXB0LmdldCgpXTsKLSAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xs
ZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgY29udGVudFdv
cmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAiZnJhbWVzVGVzdGVy
Il07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOworICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3Nh
Z2VIYW5kbGVyLmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50
V29ybGQgbmFtZTpAImZyYW1lc1Rlc3RlciJdOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0
U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7CiAg
ICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
cyIsIGZyYW1lc01haW5SZXNvdXJjZV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVu
Z3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBb
dGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAib3RoZXJwcm90b2NvbDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7Ci0gICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07Cisg
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3Jl
bGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTI0LDcgKzUyNCw3IEBAIFRF
U1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2Up
CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAImZyYW1lc3Rlc3QiXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAib3RoZXJwcm90b2NvbCJdOwog
Ci0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4Lmh0bWwiXV1dOwog
CiAgICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOwpAQCAtNTc4LDIzICs1NzgsMjMg
QEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0
aW9uRGVsZWdhdGUpCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpb
Jl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBpZiAo
W3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVz
dGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBb
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyIsIGZyYW1lc01haW5SZXNvdXJjZV0gZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSku
YXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsK
ICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2su
cmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAib3RoZXJwcm90b2Nv
bDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbQCJG
b29CYXJCYXoiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRt
bCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVs
ZWFzZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAg
ICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9XTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWVzdGVzdCJdOwog
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JV
UkxTY2hlbWU6QCJvdGhlcnByb3RvY29sIl07CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKQEAgLTY2MywyMyArNjYzLDIz
IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJv
cikKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZp
ZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChbdGFzay5yZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZXN0ZXN0Oi8vdGVz
dC9pbmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVzIiwgZnJhbWVzTWFpblJlc291cmNlXSBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVu
Z3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFz
ZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAg
ICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVS
TC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9p
bmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtAIkZvb0JhckJheiIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFz
ayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH1dOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJmcmFtZXN0ZXN0Il07CiAgICAgW2NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
Im90aGVycHJvdG9jb2wiXTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKQEAgLTczNCwyOCAr
NzM0LDI4IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJh
bWVBZnRlck5hdmlnYXRpb25FcnJvcikKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRh
c2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAg
ICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJp
bmc6QCJmcmFtZXN0ZXN0Oi8vdGVzdC9pbmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0
YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzIiwgZnJhbWVzTWFpblJl
c291cmNlXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFz
ZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5n
TmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVE
YXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNl
IGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJv
dGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAq
ZGF0YSA9IFtAIkZvb0JhckJheiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVs
ZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBl
OkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0
YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0
YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImZyYW1lc3Rl
c3Q6Ly9pbmRleDIuaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbQCJIaSIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFz
ayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH1dOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJmcmFtZXN0ZXN0Il07CiAgICAgW2NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
Im90aGVycHJvdG9jb2wiXTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKQEAgLTgwOSw4ICs4
MDksOCBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0ZyYW1l
QWZ0ZXJOYXZpZ2F0aW9uRXJyb3IpCiAKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBXaW5kb3dQ
ZXJzaXN0ZW5jeSkKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwot
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAgICAgX19ibG9jayBib29sIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dl
YnNpdGVEYXRhc3RvcmUubW0KaW5kZXggZDQyYWE4NjE2YmU5Y2MxZDVkMWY3NTQzYmY3MmY3NGVk
ZTNlZjAxMi4uMmJmMDJiYmQ0MTczMDViYWEyZDAyYTc0NDAyM2FkNTg4ZGNiNWRhMCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRh
c3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dl
YnNpdGVEYXRhc3RvcmUubW0KQEAgLTE1Myw4ICsxNTMsOCBAQCBURVNUKFdLV2Vic2l0ZURhdGFT
dG9yZSwgRmV0Y2hQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBNYWtlIHN1
cmUgbm8gY3JlZGVudGlhbCBsZWZ0IGJ5IHByZXZpb3VzIHRlc3RzLgotICAgIE5TVVJMUHJvdGVj
dGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxv
Y10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6
TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlv
bk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSBhdXRvcmVsZWFzZV07
Ci0gICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVu
dENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZV07CisgICAgYXV0
byBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdE5TKFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2Nd
IGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5T
VVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVudGljYXRpb25N
ZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10pOworICAgIFtbd2ViVmll
dyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0Zv
clByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyLnBvcnQoKV1dXV07CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3Rv
cmUsIEZldGNoUGVyc2lzdGVudENyZWRlbnRpYWxzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiAKICAgICAvLyBDbGVhciBwZXJzaXN0ZW50IGNyZWRlbnRpYWxzIGNyZWF0
ZWQgYnkgdGhpcyB0ZXN0LgotICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9v
bCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9u
U3BhY2VdOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQ
ZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0
KCldOwogfQogCiBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlTm9uUGVyc2lzdGVudENy
ZWRlbnRpYWxzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJHTFBvbGljeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2ViR0xQb2xpY3kubW0KaW5kZXggOTk4MTE5ZjM1MDE4NGE0MGMyYjIyZGM5YzdkODRlMTEy
Y2I3ZDY5Yy4uNzE0ZWNiYWFkM2RmYmQ5NWZjMjU3MGU3OGFmZmM0ZThmODlmMWQxYiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJHTFBvbGljeS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5
Lm1tCkBAIC02NCw3ICs2NCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJHTFRlc3REZWxlZ2F0ZQog
CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNr
OihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCiB7Ci0gICAgW3VybFNjaGVtZVRh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVk
Q29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVh
c2VdXTsKKyAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt1cmxTY2hlbWVUYXNr
IGRpZFJlY2VpdmVEYXRhOltkYXRhIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXV07CiAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAubW0KaW5kZXggMzBmZWEwNzUzZGFiMzlkMjg4YTJhMGJkYjcyNGJlOTFk
NjFkNzRhZS4uMjk4MTk5NjkxMzI2ZTMwOGU5MDk0ZDdlMTBmZDQ0M2MyMzUxYmU0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNzS2ls
bElEQkNsZWFudXAubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFdL
U2NyaXB0TWVzc2FnZSAqZ2V0TmV4dE1lc3NhZ2UoKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFtb
c2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIHNjcmlwdE1lc3NhZ2VzLnRha2VGaXJzdCgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFRFU1Qo
SW5kZXhlZERCLCBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXApCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDNiMTMxZjdjYjg2MGFlODAxYjkyMzU1NTNkNTBmYjdh
MTZjMjc0ZDEuLmFhMTA4NDZhNGM3MGVkOTUzNDdmMDM4YzEwNmI0ZWU2MzFkNGVhMTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC03Niw3ICs3Niw3IEBAIHN0
YXRpYyBXS1NjcmlwdE1lc3NhZ2UgKmdldE5leHRNZXNzYWdlKCkKICAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIH0KIAotICAgIHJl
dHVybiBbW3NjcmlwdE1lc3NhZ2VzLnRha2VGaXJzdCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBzY3JpcHRNZXNzYWdlcy50YWtlRmlyc3QoKS5hdXRvcmVsZWFzZSgpOwogfQog
CiBlbnVtIGNsYXNzIFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nIHsgTm8sIFllcyB9OwpA
QCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2Nvb2tpZVN0b3JhZ2VGaWxlID0gY29va2llU3Rv
cmFnZUZpbGU7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aDsK
IAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKS5hdXRvcmVsZWFzZSgpOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wg
PSBwcm9jZXNzUG9vbC5nZXQoKTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtNDQ5
LDcgKzQ0OSw3IEBAIFRFU1QoV2ViS2l0LCBBbHRlcm5hdGl2ZVNlcnZpY2VzRGVmYXVsdERpcmVj
dG9yeUNyZWF0aW9uKQogICAgIE5TVVJMICpkZWZhdWx0RGlyZWN0b3J5ID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktp
dEFQSS9XZWJLaXQvQWx0ZXJuYXRpdmVTZXJ2aWNlcyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUlu
UGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIHJlbW92ZUl0ZW1BdFVSTDpkZWZhdWx0RGlyZWN0b3J5IGVycm9yOm5pbF07CiAgICAgCi0g
ICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzEgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcxIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAInN0YXJ0IGF1eGlsaWFyeSBwcm9jZXNzZXMiIGJhc2VVUkw6bmlsXTsKIAogICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZGVmYXVsdERpcmVjdG9yeS5wYXRoXSk7CkBAIC00NjQsOSArNDY0LDkgQEAgVEVTVChXZWJL
aXQsIEFsdGVybmF0aXZlU2VydmljZXNEZWZhdWx0RGlyZWN0b3J5Q3JlYXRpb24pCiAgICAgCiAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTprZXldOwogCi0gICAgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246W1tbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV0gYXV0
b3JlbGVhc2VdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0gW1tbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXSkuYXV0b3JlbGVhc2Uo
KV07CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3MiBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCJzdGFydCBhdXhpbGlhcnkgcHJvY2Vzc2VzIiBiYXNlVVJMOm5pbF07CiAKICAgICBF
WFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZGVmYXVsdERpcmVjdG9yeS5wYXRoXSk7CkBAIC00OTAsNyArNDkwLDcgQEAgVEVTVChXZWJL
aXQsIFdlYnNpdGVEYXRhU3RvcmVFcGhlbWVyYWxWaWFDb25maWd1cmF0aW9uKQogICAgIEVYUEVD
VF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKIAogICAgIFJldGFpblB0
cjxfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gZGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXTsK
KyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogICAgIFtjb25maWd1cmF0aW9uLmdl
dCgpLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllF
U107CiAKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7
CkBAIC01MzAsNyArNTMwLDcgQEAgVEVTVChXZWJLaXQsIERvTG9hZFdpdGhOb25EZWZhdWx0RGF0
YVN0b3JlQWZ0ZXJUZXJtaW5hdGluZ05ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHdl
YlZpZXdDb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlv
bi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtNTQ5LDgg
KzU0OSw4IEBAIFRFU1QoV2ViS2l0LCBEb0xvYWRXaXRoTm9uRGVmYXVsdERhdGFTdG9yZUFmdGVy
VGVybWluYXRpbmdOZXR3b3JrUHJvY2VzcykKIAogVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uUGF0aE51bGwpCiB7Ci0gICAgRVhQRUNUX1RSVUUoW1tbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0gX2luZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5XSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtbW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0
aW9uXSBhdXRvcmVsZWFzZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XSk7CisgICAgRVhQ
RUNUX1RSVUUoW2Fkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV0pOworICAgIEVYUEVDVF9GQUxT
RShbYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnld
KTsKIH0KIAogVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cykKQEAgLTYzMCwx
MyArNjMwLDEzIEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlUmVuYW1lT3JpZ2luRm9y
SW5kZXhlZERhdGFiYXNlKQogCiBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZVJlbmFtZU9y
aWdpbikKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPHNjcmlwdD5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVzdGtleScsICd0
ZXN0dmFsdWUnKTwvc2NyaXB0PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBz
Oi8vZXhhbXBsZS5jb20vIl1dOwogICAgIAogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
CiAgICAgTlNVUkwgKmV4YW1wbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
ZXhhbXBsZS5jb20vIl07CiAgICAgTlNVUkwgKndlYktpdFVSTCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdOwotICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0
YVN0b3JlID0gd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7CisgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJz
aXRlRGF0YVN0b3JlOwogICAgIE5TU2V0ICpsb2NhbFN0b3JhZ2VTZXQgPSBbTlNTZXQgc2V0V2l0
aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZV07CiAgICAgW2RhdGFTdG9yZSBf
cmVuYW1lT3JpZ2luOmV4YW1wbGVVUkwgdG86d2ViS2l0VVJMIGZvckRhdGFPZlR5cGVzOmxvY2Fs
U3RvcmFnZVNldCBjb21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICBkb25lID0gdHJ1ZTsKQEAg
LTY3Niw3ICs2NzYsNyBAQCBURVNUKFdlYktpdCwgTmV0d29ya0NhY2hlRGlyZWN0b3J5KQogICAg
IFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXROZXR3b3JrQ2FjaGVEaXJlY3Rvcnk6
dGVtcERpcl07CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlld0NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
IGF1dG9yZWxlYXNlXV07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRh
U3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNl
KCldOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3
ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBz
ZXJ2ZXIucG9ydCgpXV1dXTsKQEAgLTcwOSw3ICs3MDksNyBAQCBURVNUKFdlYktpdCwgQXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yaWVzKQogICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBzZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOkAidGVzdHN1YmRp
cmVjdG9yeSJdOwogICAgIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0
ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3Jl
bGVhc2UoKV07CiAgICAgCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAu
MTolZC9pbmRleC5odG1sIiwgc2VydmVyLnBvcnQoKV1dXV07CkBAIC03NDgsOSArNzQ4LDkgQEAg
VEVTVChXZWJLaXQsIERJU0FCTEVEX0FsdGVybmF0aXZlU2VydmljZSkKICAgICBOU0ZpbGVNYW5h
Z2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICBb
ZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOiZlcnJvcl07CiAKLSAgICBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9
IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVNlcnZpY2VzU3Rv
cmFnZURpcmVjdG9yeSA9IHRlbXBEaXI7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3Rv
cmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEFsdGVybmF0
aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5OnRlbXBEaXJdOworICAgIGF1dG8gZGF0YVN0b3Jl
ID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10g
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29y
ZHMpIHsKQEAgLTc1OSwxMiArNzU5LDEyIEBAIFRFU1QoV2ViS2l0LCBESVNBQkxFRF9BbHRlcm5h
dGl2ZVNlcnZpY2UpCiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIAotICAgIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKndlYlZpZXdDb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmU7Ci0gICAgV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNl
XTsKLSAgICBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1Rlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOmRhdGFTdG9yZS5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLV2ViVmll
dyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JU
cnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAgICAgfTsKQEAg
LTc3Miw3ICs3NzIsNyBAQCBURVNUKFdlYktpdCwgRElTQUJMRURfQWx0ZXJuYXRpdmVTZXJ2aWNl
KQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwogCiAgICAgZG9u
ZSA9IGZhbHNlOwotICAgIGNoZWNrVW50aWxFbnRyeUZvdW5kKGRhdGFTdG9yZSwgXihOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICBjaGVja1VudGlsRW50cnlG
b3VuZChkYXRhU3RvcmUuZ2V0KCksIF4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpy
ZWNvcmRzKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAxdSk7CiAgICAgICAg
IFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vi
c2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10gZm9yRGF0YVJlY29yZHM6cmVjb3JkcyBj
b21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICAgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNv
cmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5h
dGl2ZVNlcnZpY2VzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJl
Y29yZCAqPiAqcmVjb3JkcykgewpAQCAtODQ3LDcgKzg0Nyw3IEBAIFRFU1QoV2ViS2l0LCBNZWRp
YUNhY2hlKQogICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRNZWRpYUNhY2hl
RGlyZWN0b3J5OnRlbXBEaXJdOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZp
ZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5h
dXRvcmVsZWFzZSgpXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4w
LjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IGZiYzQxMjZj
ODExMmJjZDMxYjU5NDljMjZlMmQ5OTVlZmMyOGIxM2UuLmIzODAzMGIzNzcyYWY3ZmQzNzgzMDQy
ZTUzOTRjNzJjYzVjMzI4NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAg
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBh
bmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW4KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlv
biAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICop
cHJlZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIFdL
V2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vic2l0ZVBvbGljaWVz
ID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CiAgICAgc3dp
dGNoIChhbGVydENvdW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgICAvLyBWZXJpZnkgdGhlIGNv
bnRlbnQgYmxvY2tlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW9y
LgpAQCAtMTEzLDExICsxMTMsMTEgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICBjYXNl
IDE6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFZlcmlmeSBkaXNhYmxpbmcgY29udGVudCBi
bG9ja2VycyB3b3JrcyBjb3JyZWN0bHkuCi0gICAgICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIFt3ZWJzaXRlUG9saWNp
ZXMgX3NldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ6ZmFsc2VdOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBWZXJpZnkgY2FsbGluZyB0aGUgZGVjaXNpb25IYW5kbGVyIGFzeW5jaHJvbm91
c2x5IHdvcmtzIGNvcnJlY3RseS4KICAgICAgICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyQ29w
eSA9IEJsb2NrX2NvcHkoZGVjaXNpb25IYW5kbGVyKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW2RlY2lzaW9uSGFuZGxlckNvcHksIHdlYnNpdGVQb2xpY2llcyA9IHJldGFpblB0cih3
ZWJzaXRlUG9saWNpZXMpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lv
bkhhbmRsZXJDb3B5LCB3ZWJzaXRlUG9saWNpZXNdIHsKICAgICAgICAgICAgICAgICBkZWNpc2lv
bkhhbmRsZXJDb3B5KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoZGVjaXNpb25IYW5kbGVy
Q29weSk7CiAgICAgICAgICAgICB9KTsKQEAgLTEyNSwxMiArMTI1LDEyIEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OihXS05hdmlnYXRpCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIDI6CiAgICAgICAgIC8vIFZl
cmlmeSBlbmFibGluZyBjb250ZW50IGJsb2NrZXJzIGhhcyBubyBlZmZlY3Qgd2hlbiByZWxvYWRp
bmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgotICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9z
ZXRDb250ZW50QmxvY2tlcnNFbmFibGVkOnRydWVdOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CiAgICAgfQotICAgIGRlY2lzaW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQ
b2xpY2llcy5nZXQoKSk7CiB9CiAKIEBlbmQKQEAgLTE4OSwxMiArMTg5LDEyIEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOihXS05hdmlnYXRpCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZp
Z2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXByZWZlcmVu
Y2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFkb3B0
TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIGlmIChfYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzRm9yVVJMKQotICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX2FsbG93ZWRB
dXRvcGxheVF1aXJrcyA9IF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwobmF2aWdhdGlvbkFj
dGlvbi5yZXF1ZXN0LlVSTCk7CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEFsbG93ZWRB
dXRvcGxheVF1aXJrczpfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rp
b24ucmVxdWVzdC5VUkwpXTsKICAgICBpZiAoX2F1dG9wbGF5UG9saWN5Rm9yVVJMKQotICAgICAg
ICB3ZWJzaXRlUG9saWNpZXMuX2F1dG9wbGF5UG9saWN5ID0gX2F1dG9wbGF5UG9saWN5Rm9yVVJM
KG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwotICAgIGRlY2lzaW9uSGFuZGxlcihXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAgW3dl
YnNpdGVQb2xpY2llcyBfc2V0QXV0b3BsYXlQb2xpY3k6X2F1dG9wbGF5UG9saWN5Rm9yVVJMKG5h
dmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpXTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDoo
X1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylm
bGFncwpAQCAtMjIyLDEyICsyMjIsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2Vz
OihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlk
ZWNpc2lvbkhhbmRsZXIKIHsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeewotICAgICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVz
ID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAg
ICAgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgYWxsb2NdIGluaXRdKTsKICAgICAgICAgaWYgKF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JV
UkwpCi0gICAgICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX2FsbG93ZWRBdXRvcGxheVF1aXJrcyA9
IF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVS
TCk7CisgICAgICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRBbGxvd2VkQXV0b3BsYXlRdWly
a3M6X2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMKV07CiAgICAgICAgIGlmIChfYXV0b3BsYXlQb2xpY3lGb3JVUkwpCi0gICAgICAgICAgICB3
ZWJzaXRlUG9saWNpZXMuX2F1dG9wbGF5UG9saWN5ID0gX2F1dG9wbGF5UG9saWN5Rm9yVVJMKG5h
dmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgICAg
ICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRBdXRvcGxheVBvbGljeTpfYXV0b3BsYXlQb2xpY3lGb3JV
UkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCldOworICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTMwNCw5ICszMDQsOSBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNl
cywgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlFbmFibGVkKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAKICAgICAvLyBUZXN0IHVwZGF0aW5nIHdlYnNpdGUg
cG9saWNpZXMuCi0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtb
W1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgd2Vi
c2l0ZVBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFs
bG93OwotICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6d2Vic2l0ZVBvbGlj
aWVzXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEF1dG9wbGF5
UG9saWN5Ol9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93XTsKKyAgICBbd2ViVmlldyBfdXBk
YXRlV2VicGFnZVByZWZlcmVuY2VzOndlYnNpdGVQb2xpY2llcy5nZXQoKV07CiAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJhdXRvcGxheWVkIl07CiAKQEAgLTcwMSwxMCArNzAxLDEw
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZGVvRGF0YTooUmV0YWluUHRyPE5TRGF0YT4m
JilkYXRhCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCiB7CiAgICAgaWYgKFt0YXNrLnJlcXVl
c3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL3Nob3VsZC1yZWRpcmVjdCJdKSB7Ci0gICAg
ICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0
aW9uOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6bmlsIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmls
XSBhdXRvcmVsZWFzZV0gbmV3UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9hdXRvcGxheS1jaGVjay5odG1sIl1dXTsKKyAg
ICAgICAgWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJl
Y3Rpb246YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVx
dWVzdC5VUkwgTUlNRVR5cGU6bmlsIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKSBuZXdSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL2F1dG9wbGF5LWNoZWNrLmh0
bWwiXV1dOwogICAgICAgICAKICAgICAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1
dG9wbGF5LWNoZWNrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVu
Y29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRh
dGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwog
ICAgICAgICByZXR1cm47CkBAIC03MTYsOCArNzE2LDggQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4p
dGEKICAgICBhdXRvJiByYW5nZSA9ICpwYXJzZWRSYW5nZS5yYW5nZTsKICAgICAKICAgICBOU0Rp
Y3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IEB7IEAiQ29udGVudC1MZW5ndGgiOiBbQChyYW5nZS5z
ZWNvbmQgLSByYW5nZS5maXJzdCkgc3RyaW5nVmFsdWVdLCBAIkNvbnRlbnQtUmFuZ2UiOiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImJ5dGVzICVsdS0lbHUvJWx1IiwgcmFuZ2UuZmlyc3Qs
IHJhbmdlLnNlY29uZCwgW3ZpZGVvRGF0YSBsZW5ndGhdXSB9OwotICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2su
cmVxdWVzdC5VUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5nICopa0NGSFRU
UFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOmhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwotICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1
ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVy
c2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyRmllbGRzXSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlLmF1dG9yZWxlYXNlKCldOwogICAgIFt0YXNrIGRpZFJlY2VpdmVE
YXRhOlt2aWRlb0RhdGEgc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5nZShyYW5nZS5maXJzdCwg
cmFuZ2Uuc2Vjb25kIC0gcmFuZ2UuZmlyc3QpXV07CiAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAg
ICAKQEAgLTczMyw3ICs3MzMsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBv
bGljaWVzRHVyaW5nUmVkaXJlY3QpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHZpZGVv
RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIgd2l0aEV4dGVuc2lvbjpA
Im1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pOwotICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6W1tbVGVzdFNjaGVtZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoVmlkZW9EYXRhOldURk1vdmUodmlkZW9EYXRhKV0gYXV0b3JlbGVhc2VdIGZv
clVSTFNjaGVtZTpAInRlc3QiXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOmFkb3B0TlMoW1tUZXN0U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdFdpdGhWaWRlb0RhdGE6
V1RGTW92ZSh2aWRlb0RhdGEpXSkuYXV0b3JlbGVhc2UoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBdXRv
cGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTc3MSw5ICs3NzEsOSBAQCBU
RVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0V2l0aEF1ZGlvXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAImRpZC1ub3QtcGxheSJdOwogCi0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnBv
bGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKLSAgICBwb2xpY2llcy5fYXV0b3BsYXlQb2xpY3kgPSBfV0tXZWJzaXRlQXV0b3BsYXlQb2xp
Y3lBbGxvdzsKLSAgICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnBvbGljaWVz
XTsKKyAgICBhdXRvIHBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XSk7CisgICAgW3BvbGljaWVzIF9zZXRBdXRvcGxheVBvbGljeTpfV0tXZWJzaXRl
QXV0b3BsYXlQb2xpY3lBbGxvd107CisgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJl
bmNlczpwb2xpY2llcy5nZXQoKV07CiAKICAgICAvLyBOb3cgdGhhdCB3ZSB1cGRhdGVkIG91ciBw
b2xpY2llcywgYSBzY3JpcHQgc2hvdWxkIGJlIGFibGUgdG8gYXV0b3BsYXkgbWVkaWEuCiAgICAg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07CkBA
IC03ODEsOSArNzgxLDkgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2ll
c1VwZGF0ZXMpCiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
cGF1c2VWaWRlbygpIl07CiAKLSAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMg
PSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAg
IHByZWZlcmVuY2VzLl9hdXRvcGxheVBvbGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeURl
bnk7Ci0gICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF0pOworICAgIFtwcmVmZXJlbmNlcyBfc2V0QXV0b3BsYXlQb2xpY3k6X1dLV2Vi
c2l0ZUF1dG9wbGF5UG9saWN5RGVueV07CisgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVm
ZXJlbmNlczpwcmVmZXJlbmNlcy5nZXQoKV07CiAKICAgICAvLyBBIHNjcmlwdCBzaG91bGQgbm8g
bG9uZ2VyIGJlIGFibGUgdG8gYXV0b3BsYXkgbWVkaWEuCiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2
ZW50ID0gV1RGOjpudWxsb3B0OwpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgc3RhdGljIHZvaWQgZXhw
ZWN0SGVhZGVycyhpZCA8V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBib29sIGV4cGVjdGVkKQogCiBz
dGF0aWMgdm9pZCByZXNwb25kKGlkIDxXS1VSTFNjaGVtZVRhc2s+dGFzaywgTlNTdHJpbmcgKmh0
bWwgPSBuaWwpCiB7Ci0gICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpodG1sLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhb
W05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpodG1sLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRh
OltodG1sIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW3Rh
c2sgZGlkRmluaXNoXTsKIH0KQEAgLTEwNTAsNyArMTA1MCw3IEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05h
dmlnYXRpCiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShsZWdhY3lIZWFkZXJGaWVsZERpY3Rpb25h
cnkuZ2V0KCksIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlgta2V5MiIp
KS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidmFsdWUyIikp
LmdldCgpKTsKICAgICBXS1dlYnNpdGVQb2xpY2llc1NldEN1c3RvbUhlYWRlckZpZWxkcygoV0tX
ZWJzaXRlUG9saWNpZXNSZWYpcHJlZmVyZW5jZXMsIGxlZ2FjeUhlYWRlckZpZWxkRGljdGlvbmFy
eS5nZXQoKSk7CiAKLSAgICBfV0tDdXN0b21IZWFkZXJGaWVsZHMgKmhlYWRlckZpZWxkcyA9IFtb
W19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gaGVhZGVyRmllbGRzID0gYWRvcHROUyhbW19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY10g
aW5pdF0pOwogICAgIFtoZWFkZXJGaWVsZHMgc2V0RmllbGRzOkB7QCJYLWtleTMiOiBAInZhbHVl
MyIsIEAiWC1rZXk0IjogQCJ2YWx1ZTQifV07CiAgICAgW2hlYWRlckZpZWxkcyBzZXRUaGlyZFBh
cnR5RG9tYWluczpAWwogICAgICAgICBAIiouaG9zdHdpdGhhc3Rlcmlzay5jb20iLApAQCAtMTA1
OCw3ICsxMDU4LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICAgICAgQCIqLmNvbSIg
Ly8gc2hvdWxkIGJlIGlnbm9yZWQuCiAgICAgXV07CiAgICAgCi0gICAgW3ByZWZlcmVuY2VzIF9z
ZXRDdXN0b21IZWFkZXJGaWVsZHM6QFtoZWFkZXJGaWVsZHNdXTsKKyAgICBbcHJlZmVyZW5jZXMg
X3NldEN1c3RvbUhlYWRlckZpZWxkczpAW2hlYWRlckZpZWxkcy5nZXQoKV1dOwogICAgIAogICAg
IGlmIChbbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpA
Ii9tYWlucmVzb3VyY2UiXSkgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewpAQCAtMTIxNCwxMSArMTIxNCwxMSBAQCBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZp
Z2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29k
aW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiBJR05PUkVf
V0FSTklOR1NfRU5ECiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2ll
cyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdKTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFtZS5tYWlu
RnJhbWUpCiAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbVVzZXJBZ2VudDpAIkZv
byBDdXN0b20gVXNlckFnZW50Il07CiAKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwog
fQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdh
dGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgpAQCAtMTMwNCwxNCArMTMwNCwxNCBAQCBA
aW1wbGVtZW50YXRpb24gQ3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudERlbGVnYXRlCiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzoo
aWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25I
YW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtb
W1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRdKTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUp
IHsKICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tVXNlckFnZW50QXNTaXRlU3Bl
Y2lmaWNRdWlya3M6QCJGb28gU2l0ZSBTcGVjaWZpYyBRdXJpa3MgVXNlckFnZW50Il07CiAgICAg
ICAgIGlmIChfc2V0Q3VzdG9tVXNlckFnZW50KQogICAgICAgICAgICAgW3dlYnNpdGVQb2xpY2ll
cyBfc2V0Q3VzdG9tVXNlckFnZW50OkAiRm9vIEN1c3RvbSBSZXF1ZXN0IFVzZXJBZ2VudCJdOwog
ICAgIH0KIAotICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uCkBAIC0xNDAxLDExICsxNDAxLDExIEBAIEBpbXBsZW1lbnRhdGlvbiBD
dXN0b21OYXZpZ2F0b3JQbGF0Zm9ybURlbGVnYXRlCiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0
aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5n
Pil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVu
Y2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMg
PSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAo
bmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUpCiAgICAgICAgIFt3ZWJzaXRl
UG9saWNpZXMgX3NldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOkAiVGVzdCBDdXN0b20gUGxhdGZv
cm0iXTsKIAotICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uCkBAIC0xNDYwLDEwICsxNDYwLDEwIEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERldmljZU9yaWVudGF0aW9uQWNjZXNzUG9saWN5OihfV0tXZWJzaXRlRGV2aWNlT3Jp
ZW50YXRpCiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFj
dGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyB1c2Vy
SW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVj
aXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2ll
cyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdKTsKICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXREZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc1BvbGljeTpfYWNjZXNzUG9saWN5XTsKIAotICAgIGRlY2lzaW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQ
b2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCkBAIC0xNTY3
LDEwICsxNTY3LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikp
ZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xp
Y2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoX3BvcFVwUG9saWN5Rm9yVVJMKQotICAgICAgICB3
ZWJzaXRlUG9saWNpZXMuX3BvcFVwUG9saWN5ID0gX3BvcFVwUG9saWN5Rm9yVVJMKG5hdmlnYXRp
b25BY3Rpb24ucmVxdWVzdC5VUkwpOwotICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAgW3dlYnNpdGVQb2xp
Y2llcyBfc2V0UG9wVXBQb2xpY3k6X3BvcFVwUG9saWN5Rm9yVVJMKG5hdmlnYXRpb25BY3Rpb24u
cmVxdWVzdC5VUkwpXTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKG51bGxhYmxlIFdLV2Vi
VmlldyAqKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25m
aWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZp
Z2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRv
d0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKQEAgLTE2MTgsMTIg
KzE2MTgsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKIHsKICAgICBOU1VSTCAqdXJsID0g
bmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTDsKICAgICBpZiAoW3VybC5wYXRoIGlzRXF1YWxU
b1N0cmluZzpAIi9pbnZhbGlkIl0pIHsKLSAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndl
YnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07Ci0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURhdGFTdG9yZSA9IFtb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpbW1tfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSBh
dXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dL
V2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJzaXRlUG9saWNp
ZXMgX3NldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXSkuYXV0b3JlbGVhc2UoKV07
CiAKICAgICAgICAgYm9vbCBzYXdFeGNlcHRpb24gPSBmYWxzZTsKICAgICAgICAgQHRyeSB7Ci0g
ICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBzYXdFeGNlcHRp
b24gPSB0cnVlOwogICAgICAgICB9CkBAIC0xNjM0LDE2ICsxNjM0LDE2IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OihXS05hdmlnYXRpCiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tT
dG9yYWdlIl0KICAgICAgICAgfHwgW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja0Nv
b2tpZXMiXQogICAgICAgICB8fCBbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW5GcmFt
ZSJdKSB7Ci0gICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBb
W1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAg
ICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3Jl
IG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgIGF1dG8g
d2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSk7CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldFdlYnNpdGVEYXRhU3RvcmU6W1dL
V2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgICAgIGRlY2lz
aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVz
LmdldCgpKTsKICAgICB9CiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvc3Vi
RnJhbWUiXSkgewotICAgICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVz
ID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgd2Vic2l0ZVBvbGljaWVzLl93ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFT
dG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICAgICAgYXV0byB3ZWJzaXRlUG9saWNp
ZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICAg
ICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0V2Vic2l0ZURhdGFTdG9yZTpbV0tXZWJzaXRlRGF0YVN0
b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdXTsKICAgICAgICAgYm9vbCBzYXdFeGNlcHRpb24g
PSBmYWxzZTsKICAgICAgICAgQHRyeSB7Ci0gICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2VsLCB3ZWJzaXRlUG9saWNpZXMpOworICAgICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUNhbmNlbCwgd2Vic2l0
ZVBvbGljaWVzLmdldCgpKTsKICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKICAgICAgICAgICAgIHNhd0V4Y2VwdGlvbiA9IHRydWU7CiAgICAgICAgIH0KQEAgLTE3
MjgsMjQgKzE3MjgsMjQgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2ll
c0RhdGFTdG9yZSkKIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNVc2Vy
Q29udGVudENvbnRyb2xsZXIpCiB7CiAgICAgYXV0byBtYWtlU2NyaXB0ID0gW10gKE5TU3RyaW5n
ICpzY3JpcHQpIHsKLSAgICAgICAgcmV0dXJuIFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdp
dGhTb3VyY2U6c2NyaXB0IGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0
RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10gYXV0b3JlbGVhc2VdOworICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c2Ny
aXB0IGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFy
dCBmb3JNYWluRnJhbWVPbmx5OllFU10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfTsKLSAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRVc2VyU2NyaXB0Om1ha2VTY3JpcHQoQCJhbGVydCgndGVzdEFsZXJ0MScpIild
OwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwotICAgIFRlc3RVSURlbGVnYXRlICp1aURlbGVnYXRl
ID0gW1tUZXN0VUlEZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3LlVJRGVs
ZWdhdGUgPSB1aURlbGVnYXRlOwotICAgIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgKm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IG5ld10pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVz
ZXJTY3JpcHQ6bWFrZVNjcmlwdChAImFsZXJ0KCd0ZXN0QWxlcnQxJykiKV07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBhdXRv
IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3
XSk7CiAgICAgX19ibG9jayBib29sIGlmcmFtZUV4Y2VwdGlvblRocm93biA9IGZhbHNlOwogICAg
IF9fYmxvY2sgUmV0YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9sbGVyPiByZXBsYWNlbWVudFVz
ZXJDb250ZW50Q29udHJvbGxlcjsKLSAgICBuYXZpZ2F0aW9uRGVsZWdhdGUuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9u
ICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewor
ICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uV2l0aFByZWZlcmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CiAgICAgICAgIGlmIChbYWN0
aW9uLnJlcXVlc3QuVVJMLnBhdGggaGFzU3VmZml4OkAiL3NpbXBsZS1pZnJhbWUuaHRtbCJdKQog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93LCBuaWwpOwogICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5wYXRoIGhh
c1N1ZmZpeDpAIi9zaW1wbGUuaHRtbCJdKSB7CiAgICAgICAgICAgICBAdHJ5IHsKLSAgICAgICAg
ICAgICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dLV2VicGFnZVBy
ZWZlcmVuY2VzIG5ld10gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgICAgIHByZWZlcmVuY2Vz
Ll91c2VyQ29udGVudENvbnRyb2xsZXIgPSBbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgICAgICAgICAg
ICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBhZG9wdE5TKFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBuZXdd
KTsKKyAgICAgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVzZXJDb250ZW50Q29udHJvbGxl
cjphZG9wdE5TKFtXS1VzZXJDb250ZW50Q29udHJvbGxlciBuZXddKS5hdXRvcmVsZWFzZSgpXTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIHByZWZlcmVuY2VzLmdldCgpKTsKICAgICAgICAgICAgIH0gQGNhdGNo
IChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWZyYW1lRXhjZXB0
aW9uVGhyb3duID0gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTE3NTMsMTMgKzE3NTMsMTMgQEAg
VEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJDb250ZW50Q29udHJv
bGxlcikKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgRVhQRUNUX1RSVUUoW2FjdGlvbi5y
ZXF1ZXN0LlVSTC5wYXRoIGhhc1N1ZmZpeDpAIi9zaW1wbGUyLmh0bWwiXSk7Ci0gICAgICAgIFdL
V2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBhZG9wdE5TKFtX
S1dlYnBhZ2VQcmVmZXJlbmNlcyBuZXddKTsKICAgICAgICAgcmVwbGFjZW1lbnRVc2VyQ29udGVu
dENvbnRyb2xsZXIgPSBhZG9wdE5TKFtXS1VzZXJDb250ZW50Q29udHJvbGxlciBuZXddKTsKICAg
ICAgICAgW3JlcGxhY2VtZW50VXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6bWFr
ZVNjcmlwdChAImFsZXJ0KCd0ZXN0QWxlcnQyJykiKV07Ci0gICAgICAgIHByZWZlcmVuY2VzLl91
c2VyQ29udGVudENvbnRyb2xsZXIgPSByZXBsYWNlbWVudFVzZXJDb250ZW50Q29udHJvbGxlci5n
ZXQoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVc2VyQ29udGVu
dENvbnRyb2xsZXI6cmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCldOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJl
ZmVyZW5jZXMuZ2V0KCkpOwogICAgIH07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBuYXZpZ2F0aW9uRGVsZWdhdGU7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
Om5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZS1pZnJhbWUiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3VpRGVsZWdhdGUg
d2FpdEZvckFsZXJ0XSwgInRlc3RBbGVydDEiKTsKQEAgLTE3NzAsOSArMTc3MCw5IEBAIFRFU1Qo
V2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNVc2VyQ29udGVudENvbnRyb2xsZXIp
CiAKICAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIEB0cnkgewotICAgICAg
ICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dLV2VicGFnZVByZWZlcmVu
Y2VzIG5ld10gYXV0b3JlbGVhc2VdOwotICAgICAgICBwcmVmZXJlbmNlcy5fdXNlckNvbnRlbnRD
b250cm9sbGVyID0gW1tXS1VzZXJDb250ZW50Q29udHJvbGxlciBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICAgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107
CisgICAgICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBhZG9wdE5TKFtXS1dlYnBhZ2VQcmVmZXJlbmNl
cyBuZXddKTsKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVc2VyQ29udGVudENvbnRyb2xsZXI6
YWRvcHROUyhbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgbmV3XSkuYXV0b3JlbGVhc2UoKV07Cisg
ICAgICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0
KCldOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIGNh
dWdodEV4Y2VwdGlvbiA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pT1NNb3VzZVN1cHBvcnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2lPU01vdXNlU3VwcG9ydC5tbQppbmRleCA3MmNkNmJk
MTIyMjA5YmIzZWJiOGY1YThiNjZhNWZiZjBjOWFlOTAxLi42NGE4ZDg3MjQ4YTViZjczYjljNDc2
ZDNhYTBkNmNiYjUwMDcxZGU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2lPU01vdXNlU3VwcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2lPU01vdXNlU3VwcG9ydC5tbQpAQCAtMjg2LDEwICsyODYsMTAg
QEAgVEVTVChpT1NNb3VzZVN1cHBvcnQsIFdlYnNpdGVNb3VzZUV2ZW50UG9saWNpZXMpCiAKICAg
ICAvLyBJZiBsb2FkZWQgd2l0aCBfV0tXZWJzaXRlTW91c2VFdmVudFBvbGljeVN5bnRoZXNpemVU
b3VjaEV2ZW50cywgaXQgc2hvdWxkIHNlbmQgdG91Y2ggZXZlbnRzIGluc3RlYWQuCiAKLSAgICBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNl
cyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHByZWZlcmVuY2VzLl9tb3VzZUV2ZW50
UG9saWN5ID0gX1dLV2Vic2l0ZU1vdXNlRXZlbnRQb2xpY3lTeW50aGVzaXplVG91Y2hFdmVudHM7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF0pOworICAgIFtwcmVmZXJlbmNlcyBfc2V0TW91c2VFdmVudFBvbGljeTpfV0tX
ZWJzaXRlTW91c2VFdmVudFBvbGljeVN5bnRoZXNpemVUb3VjaEV2ZW50c107CiAKLSAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJ0d28iIHByZWZlcmVuY2VzOnByZWZl
cmVuY2VzXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJ0d28i
IHByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgpXTsKIAogICAgIC8vIEZJWE1FOiBCZWNhdXNl
IHdlJ3JlIGRpcmVjdGx5IGNhbGxpbmcgbW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6IHRv
IGVtdWxhdGUgdGhlIGdlc3R1cmUgcmVjb2duaXplciwKICAgICAvLyB3ZSBjYW4ndCBqdXN0IHRh
cEFuZFdhaXQoKSBhZ2FpbiBhbmQgZXhwZWN0IHRoZSBmYWN0IHRoYXQgaXQncyBkaXNhYmxlZCB0
byBzdG9wIHRoZSBtb3VzZSBldmVudHMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJbnB1dHNBY2Nlc3NvcnlWaWV3VGVzdHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJ
bnB1dHNBY2Nlc3NvcnlWaWV3VGVzdHMubW0KaW5kZXggZjRjZDc1ZmU2YmZmZmVmNTk2MTA5Y2Ez
NjI3MjQ4ZWRjOTA1MDhmZC4uZWU1ZDM2NTllYmU5MjRhNDkwNWJlMGUyMzMwZmJjNDU2ZDUzYjE5
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9z
L0RhdGVUaW1lSW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9EYXRlVGltZUlucHV0c0FjY2Vzc29yeVZpZXdU
ZXN0cy5tbQpAQCAtNTEsNyArNTEsNyBAQCBAZW5kCiAKIHN0YXRpYyBVSVRhYmxlVmlld0NlbGwg
KiBjZWxsRm9yUm93QXRJbmRleFBhdGgoaWQsIFNFTCkKIHsKLSAgICByZXR1cm4gW1tbVUlUYWJs
ZVZpZXdDZWxsIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0
aWMgdm9pZCBydW5UZXN0V2l0aElucHV0VHlwZShOU1N0cmluZyAqdHlwZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCmluZGV4IDc4N2Qz
ZmVlYWE2OWE4NTU4NzNkZmRjYTQ2ZWRiM2IyMTk5NTk3NTkuLjk2N2FjZTU5MmQ4NWE4ZWI4ODg1
OGRkYjZmNWI0NGYyZGViYmNjZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIFRFU1QoQWN0aW9u
U2hlZXRUZXN0cywgSW1hZ2VNYXBEb2VzTm90RGVzdHJveVNlbGVjdGlvbikKIAogc3RhdGljIFVJ
VmlldyAqc3dpenpsZWRSZXNpemFibGVTbmFwc2hvdFZpZXdGcm9tUmVjdChpZCwgU0VMLCBDR1Jl
Y3QgcmVjdCwgQk9PTCwgVUlFZGdlSW5zZXRzKQogewotICAgIHJldHVybiBbW1tVSVZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCByZWN0LnNpemUud2lkdGgsIHJlY3Qu
c2l6ZS5oZWlnaHQpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCByZWN0LnNpemUud2lkdGgsIHJl
Y3Quc2l6ZS5oZWlnaHQpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogVEVTVChBY3Rpb25TaGVldFRl
c3RzLCBEYXRhRGV0ZWN0b3JzTGlua0lzTm90UHJlc2VudGVkQXNBTGluaykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4
IDc1NjUyMmZkMWZkOTE5NjU0YzE0NzE3MjAxODcwMzQyZTcyYjEyOGQuLmE2ZGQyZTRkM2MxYzBi
MDgzNGU5YzEzNGEwZDM2OWUzNTdmNzNlZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQpAQCAtMTI3Nyw4ICsxMjc3LDgg
QEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBPdmVycmlkZURyb3ApCiAgICAgW3NpbXVsYXRvciBz
ZXREcm9wQ29tcGxldGlvbkJsb2NrOl4oQk9PTCBoYW5kbGVkLCBOU0FycmF5ICppdGVtUHJvdmlk
ZXJzKSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGVkKTsKICAgICAgICAgW2l0ZW1Qcm92
aWRlcnMuZmlyc3RPYmplY3QgbG9hZERhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVy
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNE
YXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICAgICAgTlNTdHJpbmcgKnRleHQg
PSBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
PGJvZHk+PC9ib2R5PiIsIHRleHQuVVRGOFN0cmluZyk7CisgICAgICAgICAgICBhdXRvIHRleHQg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIjxib2R5
PjwvYm9keT4iLCBbdGV4dCBVVEY4U3RyaW5nXSk7CiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
ISFlcnJvcik7CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdEYXRhID0gdHJ1ZTsKICAgICAg
ICAgfV07CkBAIC0xNTQ2LDEwICsxNTQ2LDEwIEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ3Vz
dG9tQWN0aW9uU2hlZXRQb3BvdmVyKQogCiBURVNUKERyYWdBbmREcm9wVGVzdHMsIFVucmVzcG9u
c2l2ZVBhZ2VEb2VzTm90SGFuZ1VJKQogewotICAgIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biAqcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gW1tbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nID0gWUVTOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gc2V0SWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3Rpbmc6WUVT
XTsKIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246W1tb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAid2hpbGUoMSk7IiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwog
CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2Zl
clNhbml0aXplSFRNTCkKICAgICAgICAgYXV0byAqaXRlbSA9IHNlc3Npb24uaXRlbXNbMF0uaXRl
bVByb3ZpZGVyOwogICAgICAgICBFWFBFQ1RfVFJVRShbaXRlbS5yZWdpc3RlcmVkVHlwZUlkZW50
aWZpZXJzIGNvbnRhaW5zT2JqZWN0OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MXSk7
CiAgICAgICAgIFtpdGVtIGxvYWREYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjoo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0
YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICptYXJrdXAg
PSBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICBhdXRvIG1h
cmt1cCA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKilk
YXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbbWFya3VwIGNvbnRhaW5zU3RyaW5nOkAiaGVsbG8iXSk7CiAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShbbWFya3VwIGNvbnRhaW5zU3RyaW5nOkAiLCB3b3JsZCJdKTsKICAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShbbWFya3VwIGNvbnRhaW5zU3RyaW5nOkAic2VjcmV0Il0pOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tCmluZGV4IDI1ZGZkMzRk
NjQ1YzM0ZDc3YWQ0MjhlYjA3N2YwZjEwOWU0MTc3MGYuLjBjZWE4ZjMwZTdlZDIwM2EwYTYzZDA1
MDZkM2FkZDkxODRhN2RkMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0luc3BlY3RvckJhci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9J
bnNwZWN0b3JCYXIubW0KQEAgLTQyLDkgKzQyLDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogCiAtIChO
U0RpY3Rpb25hcnkgKiljb252ZXJ0QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFy
eQogewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm5ld0RpY3Rpb25hcnkgPSBbZGljdGlvbmFy
eSBtdXRhYmxlQ29weV07CisgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gYWRvcHROUyhbZGljdGlv
bmFyeSBtdXRhYmxlQ29weV0pOwogICAgIFtuZXdEaWN0aW9uYXJ5IHJlbW92ZU9iamVjdEZvcktl
eTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwotICAgIHJldHVybiBbbmV3RGljdGlv
bmFyeSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIG5ld0RpY3Rpb25hcnkuYXV0b3JlbGVhc2Uo
KTsKIH0KIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
SmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9KYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbQppbmRleCBmZjgzMGQwMjNmMDY2MzVhNzlkNjc1
YjI4NDRmNzU3MTAzMzMxNzg3Li40NGY2MDI0YjhhYmZlY2VhYzRkMWQxMTRiNDFlZWVjMmI0ZDRl
NDM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZhc2NyaXB0
VVJMTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZh
c2NyaXB0VVJMTmF2aWdhdGlvbi5tbQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKV93ZWJWaWV3
UnVuTW9kYWw6KFdLV2ViVmlldyAqKXdlYlZpZXcKIAogLSAobnVsbGFibGUgV0tXZWJWaWV3ICop
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRp
b246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVy
ZXM6KFdLV2luZG93RmVhdHVyZXMgKil3aW5kb3dGZWF0dXJlcwogewotICAgIGNyZWF0ZWRXZWJW
aWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsK
KyAgICBjcmVhdGVkV2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl0pOwogICAgIFtjcmVhdGVkV2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogCiAg
ICAgbmF2RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5
RHJhZ0FuZERyb3BUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xlZ2Fj
eURyYWdBbmREcm9wVGVzdHMubW0KaW5kZXggNWRhZjE0NTY3OGM0ZDJhOThiYmIwNDg3MzRjZWMz
MTc1NDgxYTIyYy4uYzg4ZmQ1MmI2YjYyODlhZjIzYzRiMDgxOGJmMmE0MzVkOTMzNGQ0NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BU
ZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5k
RHJvcFRlc3RzLm1tCkBAIC00NSw3ICs0NSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBGcmFtZUxvYWRD
b21wbGV0aW9uTGlzdGVuZXIKIAogKyAoaW5zdGFuY2V0eXBlKWxpc3RlbmVyV2l0aENvbXBsZXRp
b25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxvY2sKIHsKLSAgICByZXR1cm4g
W1tbRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENvbXBsZXRpb25C
bG9jazpjb21wbGV0aW9uQmxvY2tdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhb
W0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uQmxv
Y2s6Y29tcGxldGlvbkJsb2NrXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9j
awpAQCAtMjEyLDcgKzIxMiw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGlj
IE5TSW1hZ2UgKmdldFRlc3RJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogc3RhdGlj
IFdlYlZpZXcgKndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKE5TUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lbW9yeVByZXNzdXJlSGFuZGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lbW9yeVByZXNzdXJlSGFuZGxlci5tbQppbmRleCAxZDdiYmQ1MTZhZWVjOThmNGZmYTNmNjhm
YTFiZDE1M2I0OGE0NDllLi44MGU5MDljNWMwOTYzZWU4YjE0YWVkYTUxOGRlMzQ5OGJkNDIzNjM4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLm1tCkBAIC0yNSwxMyArMjUsMTQgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKQogewogICAgIFdlYkluc3RhbGxNZW1vcnlQcmVzc3VyZUhh
bmRsZXIoKTsKLSAgICBbW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Qg
ZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSBhdXRvcmVsZWFzZV07CisgICAgYWRvcHROUyhb
W1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpOwogICAgIC8vIFRoaXMgdGVzdCBwYXNzZXMgaWYg
aXQgZG9lcyBub3QgYXNzZXJ0LgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9XS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0KaW5kZXggYmQyMjUxNjM2
NDkxNTQxMDJkN2I3ODhhMDI4YTE0ODA4MGMzZDQ4Yy4uODAzMTNhNzA1ZmU1OWYyYmJhZTUxYWUw
Zjc5YTJlMjg1ZjQ3YWJkZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL1dLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbQpAQCAtMTI2LDE0ICsxMjYsMTQg
QEAgVEVTVChXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMsIERvTm90Q3Jhc2hXaGVuSW50ZXJwcmV0
aW5nS2V5RXZlbnRXaGlsZURlYWxsb2NhdGkKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFs
c2U7CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgU2xvd0lucHV0V2ViVmlldyAq
d2ViVmlldyA9IFtbW1Nsb3dJbnB1dFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA0MDAsIDQwMCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Nsb3dJbnB1dFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKICAgICAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGJvZHkgY29udGVudGVk
aXRhYmxlPkhlbGxvIHdvcmxkPC9ib2R5PiJdXTsKICAgICAgICAgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOwogICAgICAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CiAgICAgICAgIFt3ZWJWaWV3
IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgICAgICBbd2ViVmlldyB0eXBlQ2hhcmFjdGVyOidh
J107CiAKLSAgICAgICAgd2ViVmlldy5fd2ViX3N1cGVySW5wdXRDb250ZXh0LmhhbmRsZWRJbnB1
dE1ldGhvZEV2ZW50QmxvY2sgPSBeKCkgeworICAgICAgICB3ZWJWaWV3LmdldCgpLl93ZWJfc3Vw
ZXJJbnB1dENvbnRleHQuaGFuZGxlZElucHV0TWV0aG9kRXZlbnRCbG9jayA9IF4oKSB7CiAgICAg
ICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdJY29uTG9hZGluZy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdJY29uTG9hZGluZy5tbQppbmRleCAzNDhk
NTU4ZTEwN2EyM2YxNzgwZWIwN2I1YjdhMDI4MTliMzU3ZWQxLi44OWNmOThiMDA5NTk4N2JmMGM3
YzQyMWVlOTkyYjU4YmNlNGIxOGY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9XZWJWaWV3SWNvbkxvYWRpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvV2ViVmlld0ljb25Mb2FkaW5nLm1tCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBO
U0RhdGEgKmN1c3RvbUZhdmljb25EYXRhKCkKIAogc3RhdGljIE5TSW1hZ2UgKmltYWdlRnJvbURh
dGEoTlNEYXRhICpkYXRhKQogewotICAgIGF1dG8gKmltYWdlID0gW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aERhdGE6ZGF0YV07CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pOwogCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJh
dGlvbnMiCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBOU0ltYWdlICppbWFnZUZyb21EYXRhKE5T
RGF0YSAqZGF0YSkKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICBbaW1hZ2Ugc2V0
U2l6ZTpOU01ha2VTaXplKDE2LCAxNildOwogCi0gICAgcmV0dXJuIFtpbWFnZSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGltYWdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBpbnRlcmZhY2UgSWNv
bkxvYWRpbmdQcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UHJvdG9jb2wubW0KaW5kZXggYWZkNmRkYzliN2U5MjJmYjY3Y2FiNzliNjBjOTA3NTAw
OTFkYTgzMi4uMjEzYTdmOTk3NTNmMmE5M2I0NGM2MThjYWVkMmVlNDRjNzI3Y2UyMCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wubW0KQEAgLTc2LDE3ICs3NiwyMCBA
QCArICh2b2lkKXVucmVnaXN0ZXIKICAgICB0ZXN0U2NoZW1lKCkgPSBuaWw7CiB9CiAKLXN0YXRp
YyBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKmFkZGl0aW9uYWxSZXNwb25z
ZUhlYWRlcnM7CitzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0
cmluZyAqPj4mIGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+
Pj4gX2FkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnM7CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsUmVz
cG9uc2VIZWFkZXJzOworfQogCiArIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcg
Kj4gKilhZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzCiB7Ci0gICAgcmV0dXJuIGFkZGl0aW9uYWxS
ZXNwb25zZUhlYWRlcnM7CisgICAgcmV0dXJuIGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMoKS5n
ZXQoKTsKIH0KIAogKyAodm9pZClzZXRBZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzOihOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilhZGRpdGlvbmFsSGVhZGVycwogewotICAg
IFthZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzIGF1dG9yZWxlYXNlXTsKLSAgICBhZGRpdGlvbmFs
UmVzcG9uc2VIZWFkZXJzID0gW2FkZGl0aW9uYWxIZWFkZXJzIGNvcHldOworICAgIGFkZGl0aW9u
YWxSZXNwb25zZUhlYWRlcnMoKSA9IGFkb3B0TlMoW2FkZGl0aW9uYWxIZWFkZXJzIGNvcHldKTsK
IH0KIAogc3RhdGljIE5TVVJMICpjcmVhdGVSZWRpcmVjdFVSTChOU1N0cmluZyAqcXVlcnkpCkBA
IC0xMzYsOCArMTM5LDggQEAgLSAodm9pZClzdGFydExvYWRpbmcKICAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpyZXNwb25zZUhlYWRlcnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aENhcGFjaXR5OjJdOwogICAgIHJlc3BvbnNlSGVhZGVyc1tAIkNvbnRlbnQtVHlwZSJdID0g
Y29udGVudFR5cGU7CiAgICAgcmVzcG9uc2VIZWFkZXJzW0AiQ29udGVudC1MZW5ndGgiXSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXR1IiwgZGF0YS5sZW5ndGhdOwotICAgIGlmIChh
ZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzKQotICAgICAgICBbcmVzcG9uc2VIZWFkZXJzIGFkZEVu
dHJpZXNGcm9tRGljdGlvbmFyeTphZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzXTsKKyAgICBpZiAo
YXV0byYgaGVhZGVycyA9IGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMoKSkKKyAgICAgICAgW3Jl
c3BvbnNlSGVhZGVycyBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6aGVhZGVycy5nZXQoKV07CiAK
ICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDpyZXF1ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8x
LjEiIGhlYWRlckZpZWxkczpyZXNwb25zZUhlYWRlcnNdKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDg3MTM3OTBiYTc4YjA4MDVhYzhjYjgzMjM0
NGQ2N2MzOGM5MWI3ODIuLmVjYjdhYTM4ZjgxOWY1NWY1NTkwNGNhODA3ZWI4NWExODllZDkxODIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTIwMywx
NiArMjAzLDE2IEBAIC0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5n
ICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyCiAgICAgICAgICplcnJvck91dCA9
IG5pbDsKIAogICAgIFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBSZXRhaW5QdHI8TlNF
cnJvcj4gc3Ryb25nRXJyb3I7CiAgICAgW3NlbGYgY2FsbEFzeW5jSmF2YVNjcmlwdDpzY3JpcHQg
YXJndW1lbnRzOmFyZ3VtZW50cyBpbkZyYW1lOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRX
b3JsZC5wYWdlV29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CiAgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIGlmIChlcnJv
ck91dCkKLSAgICAgICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRhaW5dOworICAgICAgICBz
dHJvbmdFcnJvciA9IGVycm9yOwogICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1
ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0Zvckph
dmFTY3JpcHQpOwogCiAgICAgaWYgKGVycm9yT3V0KQotICAgICAgICBbKmVycm9yT3V0IGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgKmVycm9yT3V0ID0gc3Ryb25nRXJyb3IuYXV0b3JlbGVhc2UoKTsK
IAogICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CkBAIC00MTYsOCArNDE2
LDggQEAgQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgewogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqZGVmYXVsdENvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJh
bWUgY29uZmlndXJhdGlvbjpkZWZhdWx0Q29uZmlndXJhdGlvbl07CisgICAgYXV0byBkZWZhdWx0
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlv
bjpkZWZhdWx0Q29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpXTsKIH0KIAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgpAQCAtNDU0LDcgKzQ1NCw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJW
aWV3Q29uZmlndXJhdGlvCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3Qp
ZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRp
b24gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOihfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
Kilwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24KIHsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25dKS5hdXRvcmVsZWFzZSgpXTsK
ICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFn
QW5kRHJvcFNpbXVsYXRvcklPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmRE
cm9wU2ltdWxhdG9ySU9TLm1tCmluZGV4IDI3MWU2NWMzZWY3NjdkNWQ2MmZmNTU3MDQ4MWM2ZGY3
MDUyODNjMTUuLmUxNDE1NjYzMzA2ZjdjZjljNmZmNmYzZWJmMjBmMTY4NzhkYWVmNDYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1t
CkBAIC0xNzMsNyArMTczLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdmlkZXJzOihO
U0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICopcHJvdmlkZXJzIGxvY2F0aW8KIHsKICAgICBhdXRv
IGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9y
IChOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIHByb3ZpZGVycykKLSAgICAgICAgW2l0
ZW1zIGFkZE9iamVjdDpbW1tVSURyYWdJdGVtIGFsbG9jXSBpbml0V2l0aEl0ZW1Qcm92aWRlcjpp
dGVtUHJvdmlkZXJdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRv
cHROUyhbW1VJRHJhZ0l0ZW0gYWxsb2NdIGluaXRXaXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRl
cl0pLmF1dG9yZWxlYXNlKCldOwogCiAgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aEl0ZW1zOml0
ZW1zLmdldCgpIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgd2luZG93OndpbmRvdyBhbGxvd01v
dmU6YWxsb3dNb3ZlXTsKIH0KQEAgLTM0NCw5ICszNDQsOSBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
V2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBpZiAoY29uZmlndXJhdGlvbikKLSAgICAg
ICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmlldzpbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVh
c2VdXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoV2ViVmlldzphZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKS5hdXRvcmVsZWFzZSgpXTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdl
YlZpZXc6W1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0gYXV0b3Jl
bGVhc2VdXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OmFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXSkuYXV0b3JlbGVhc2UoKV07CiB9
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3CkBAIC04OTIsNyArODkyLDcgQEAgLSAoVUlEcm9wUHJvcG9zYWwgKilfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyB3aWxsVXBkYXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3MKICAgICBpZiAo
IXNlbGYub3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2spCiAgICAgICAgIHJldHVybiBwcm9wb3NhbDsK
IAotICAgIHJldHVybiBbW1tVSURyb3BQcm9wb3NhbCBhbGxvY10gaW5pdFdpdGhEcm9wT3BlcmF0
aW9uOnNlbGYub3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2socHJvcG9zYWwub3BlcmF0aW9uLCBzZXNz
aW9uKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlEcm9wUHJvcG9zYWwg
YWxsb2NdIGluaXRXaXRoRHJvcE9wZXJhdGlvbjpzZWxmLm92ZXJyaWRlRHJhZ1VwZGF0ZUJsb2Nr
KHByb3Bvc2FsLm9wZXJhdGlvbiwgc2Vzc2lvbildKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWRqdXN0ZWREYXRhSW50ZXJh
Y3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOihOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Q
cm92aWRlciByZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0
cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KaW5kZXgg
NGI0ODM4ZWRjODgwMjE2ZGY5ZGNlYjQ4ZjI3YzA2MjViMDFlOGU3Ny4uZTk1NDQzYzBjY2JjMTE2
NWNjNGVmM2NjMzJiYmRkNjcwNmJhYjBlZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KQEAgLTc2LDkgKzc2LDkgQEAgQGVuZAog
Y29uc3QgZG91YmxlIGluaXRpYWxNb3VzZURyYWdEaXN0YW5jZSA9IDQ1OwogY29uc3QgZG91Ymxl
IGRyYWdVcGRhdGVQcm9ncmVzc0luY3JlbWVudCA9IDAuMDU7CiAKLXN0YXRpYyBOU0ltYWdlICpk
ZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQorc3RhdGljIFJldGFpblB0cjxOU0ltYWdlPiBkZWZh
dWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQogewotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pOwogfQogCiBAaW1wbGVtZW50YXRpb24gRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgewpAQCAtMTExLDcgKzExMSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbgogewogICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7
Ci0gICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gPzog
W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdIHNpbXVs
YXRvcjpzZWxmXSk7CisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24gPzogYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KS5hdXRvcmVsZWFzZSgpIHNpbXVsYXRvcjpzZWxmXSk7CiAgICAgICAgIF9maWxlUHJvbWlzZURl
c3RpbmF0aW9uVVJMcyA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwogICAgICAgICBb
X3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgc2VsZi5kcmFnRGVzdGluYXRp
b25BY3Rpb24gPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAmIH5XS0RyYWdEZXN0aW5hdGlv
bkFjdGlvbkxvYWQ7CkBAIC0xNjIsOCArMTYyLDggQEAgLSAodm9pZClydW5Gcm9tOihDR1BvaW50
KWZsaXBwZWRTdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWZsaXBwZWRFbmRMb2NhdGlvbgogCiAg
ICAgaWYgKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IHNlbGYuZXh0ZXJuYWxEcmFnUGFzdGVi
b2FyZCkgewogICAgICAgICBOU1BvaW50IHN0YXJ0TG9jYXRpb25JblZpZXcgPSBbX3dlYlZpZXcg
Y29udmVydFBvaW50Ol9zdGFydExvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6bmlsXTsKLSAgICAg
ICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZi5leHRlcm5hbERyYWdJbWFnZSA/OiBkZWZhdWx0
RXh0ZXJuYWxEcmFnSW1hZ2UoKTsKLSAgICAgICAgW3NlbGYgcGVyZm9ybURyYWdJbldlYlZpZXc6
X3dlYlZpZXcuZ2V0KCkgYXRMb2NhdGlvbjpzdGFydExvY2F0aW9uSW5WaWV3IHdpdGhJbWFnZTpk
cmFnSW1hZ2UgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpuaWxdOworICAgICAgICBhdXRv
IGRyYWdJbWFnZSA9ICFzZWxmLmV4dGVybmFsRHJhZ0ltYWdlID8gZGVmYXVsdEV4dGVybmFsRHJh
Z0ltYWdlKCk6IG5pbDsKKyAgICAgICAgW3NlbGYgcGVyZm9ybURyYWdJbldlYlZpZXc6X3dlYlZp
ZXcuZ2V0KCkgYXRMb2NhdGlvbjpzdGFydExvY2F0aW9uSW5WaWV3IHdpdGhJbWFnZTpkcmFnSW1h
Z2UuZ2V0KCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpuaWxdOwogICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJl9kb25lV2FpdGluZ0ZvckRyb3ApOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggZWZkYWY4YzUyZTg5YmViN2MzMTk2YmY2YzhmY2VmZjZhNmIwZWJhMy4uNDQyNGQ5MjkyMTQ5
YzFlMmE2ZTQ0ZTQ2NDkwYzUxYWI1OWJhYWFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xOTI3LDcgKzE5MjcsNyBAQCBSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZQogCiBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNyZWF0ZUpTU3RyaW5n
UmVmKGlkIHN0cmluZykKIHsKLSAgICBpZCBtdXRhYmxlU3RyaW5nID0gW1tbTlNNdXRhYmxlU3Ry
aW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBtdXRhYmxlU3RyaW5nID0g
YWRvcHROUyhbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0pOwogICAgIGlkIGF0dHJpYnV0
ZXMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OjAgZWZmZWN0aXZlUmFuZ2U6bmlsXTsKICAg
ICBpZCBhdHRyaWJ1dGVFbnVtZXJhdGlvbkJsb2NrID0gXihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICphdHRycywgTlNSYW5nZSByYW5nZSwgQk9PTCAqc3RvcCkgewogICAgICAgICBCT09M
IG1pc3NwZWxsZWQgPSBbW2F0dHJzIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlNaXNzcGVs
bGVkVGV4dEF0dHJpYnV0ZV0gYm9vbFZhbHVlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA2NWIxOGQzNzk0YmQyMDNk
NmU4ZjU4MmY2OWZmZjE2OTA3MGNjNDEzLi5kOTAwMjIwYWI4MzgxYjk4Y2VkZDE1OTA5YWEwZDk2
YzIwNGQ1YjU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCkBAIC0xMzIsMTYgKzEzMiwxNiBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwg
Y29uc3QgVAogICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbiA9IG9wdGlvbnMudXNlRXBoZW1l
cmFsU2Vzc2lvbigpOwogICAgIGF1dG8gc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMID0gb3B0
aW9ucy5zdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwoKTsKICAgICBpZiAodXNlRXBoZW1lcmFs
U2Vzc2lvbiB8fCBzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwubGVuZ3RoKCkgfHwgb3B0aW9u
cy5lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5KCkpIHsKLSAgICAgICAgYXV0byB3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlnID0gdXNlRXBoZW1lcmFsU2Vzc2lvbiA/IFtbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXSA6IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyA9
IHVzZUVwaGVtZXJhbFNlc3Npb24gPyBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0pIDogYWRvcHRO
UyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
ICAgIGlmICghdXNlRXBoZW1lcmFsU2Vzc2lvbikKLSAgICAgICAgICAgIGNvbmZpZ3VyZVdlYnNp
dGVEYXRhU3RvcmVUZW1wb3JhcnlEaXJlY3RvcmllcygoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvblJlZil3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnKTsKKyAgICAgICAgICAgIGNvbmZpZ3Vy
ZVdlYnNpdGVEYXRhU3RvcmVUZW1wb3JhcnlEaXJlY3RvcmllcygoV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvblJlZil3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnLmdldCgpKTsKICAgICAgICAg
aWYgKHN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTC5sZW5ndGgoKSkKICAgICAgICAgICAgIFt3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlnIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6c3RhbmRhbG9uZVdl
YkFwcGxpY2F0aW9uVVJMLmNfc3RyKCldXV07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgaWYgKG9wdGlvbnMuZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeSgpKQogICAgICAgICAg
ICAgW3dlYnNpdGVEYXRhU3RvcmVDb25maWcgc2V0RW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZv
clRlc3Rpbmc6WUVTXTsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19i
cmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlUmVmKVtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnXSBhdXRvcmVsZWFz
ZV07CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRh
U3RvcmVSZWYpYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKF9fYnJpZGdlIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlOwogfQpAQCAtMTkxLDExICsxOTEsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKIAog
UGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2Uo
UGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25z
dCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpu
ZXdDb25maWd1cmF0aW9uID0gW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5XSBhdXRv
cmVsZWFzZV07Ci0gICAgbmV3Q29uZmlndXJhdGlvbi5fcmVsYXRlZFdlYlZpZXcgPSBzdGF0aWNf
Y2FzdDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSk7Ci0gICAgaWYgKG5l
d0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3KQotICAgICAgICBuZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgPSBuZXdDb25maWd1cmF0aW9uLl9yZWxhdGVkV2ViVmlldy5jb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7Ci0gICAgUGxhdGZvcm1XZWJWaWV3KiB2aWV3ID0g
bmV3IFBsYXRmb3JtV2ViVmlldyhuZXdDb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBhdXRv
IG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiBj
b3B5XSk7CisgICAgW25ld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19j
YXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CisgICAgaWYgKFtu
ZXdDb25maWd1cmF0aW9uIF9yZWxhdGVkV2ViVmlld10pCisgICAgICAgIFtuZXdDb25maWd1cmF0
aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3
XS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmVdOworICAgIFBsYXRmb3JtV2ViVmlldyog
dmlldyA9IG5ldyBQbGF0Zm9ybVdlYlZpZXcobmV3Q29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgp
LCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyh2aWV3LCBvcHRp
b25zKTsKICAgICByZXR1cm4gdmlldzsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggZmZmYjE5MDQ0YzAyNTI4MTQzZGI1NGMxMzU2
MzM5YTgyZDdkN2I0Yy4uMDhmMzljNzIxNjlmMTI0OWYzZjYyNWQzYmM5MGJjMjZiMGMyOTJkYiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0K
QEAgLTExNDMsMTEgKzExNDMsMTEgQEAgLSAodm9pZClzZW5kRXZlbnRTdHJlYW06KE5TRGljdGlv
bmFyeSAqKWV2ZW50SW5mbyBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQKICAgICB9CiAg
ICAgCiAgICAgTlNEaWN0aW9uYXJ5KiB0aHJlYWREYXRhID0gQHsKLSAgICAgICAgQCJldmVudElu
Zm8iOiBbW2V2ZW50SW5mbyBjb3B5XSBhdXRvcmVsZWFzZV0sCi0gICAgICAgIEAiY29tcGxldGlv
bkJsb2NrIjogW1tjb21wbGV0aW9uQmxvY2sgY29weV0gYXV0b3JlbGVhc2VdCisgICAgICAgIEAi
ZXZlbnRJbmZvIjogYWRvcHROUyhbZXZlbnRJbmZvIGNvcHldKS5hdXRvcmVsZWFzZSgpLAorICAg
ICAgICBAImNvbXBsZXRpb25CbG9jayI6IGFkb3B0TlMoW2NvbXBsZXRpb25CbG9jayBjb3B5XSku
YXV0b3JlbGVhc2UoKQogICAgIH07CiAgICAgCi0gICAgTlNUaHJlYWQgKmV2ZW50RGlzcGF0Y2hU
aHJlYWQgPSBbW1tOU1RocmVhZCBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoZXZlbnREaXNwYXRjaFRocmVhZEVudHJ5Oikgb2JqZWN0OnRocmVhZERhdGFdIGF1
dG9yZWxlYXNlXTsKKyAgICBOU1RocmVhZCAqZXZlbnREaXNwYXRjaFRocmVhZCA9IGFkb3B0TlMo
W1tOU1RocmVhZCBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
ZXZlbnREaXNwYXRjaFRocmVhZEVudHJ5Oikgb2JqZWN0OnRocmVhZERhdGFdKS5hdXRvcmVsZWFz
ZSgpOwogICAgIGV2ZW50RGlzcGF0Y2hUaHJlYWQucXVhbGl0eU9mU2VydmljZSA9IE5TUXVhbGl0
eU9mU2VydmljZVVzZXJJbnRlcmFjdGl2ZTsKICAgICBbZXZlbnREaXNwYXRjaFRocmVhZCBzdGFy
dF07CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420764</attachid>
            <date>2021-02-17 17:23:29 -0800</date>
            <delta_ts>2021-02-17 18:22:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222060-20210217172328.patch</filename>
            <type>text/plain</type>
            <size>465756</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmNzNkMTBmOWRlYjRhYjIw
NDMzNWNjNmUwZmUzMTc3MjU0ZWQ4ZTIuLmM0N2FkNWY5NGFkOWNjZDUxYjJjZjFmYjliOTVhYWIx
NjgzNmY4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ug
b2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBldmVuIGZ1cnRoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGZ1cnRoZXIgYnkgdXNpbmcgUmV0YWlu
UHRyLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2VydmljZTo6dHJhbnNjZWl2ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFn
U291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgICgtW1dLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlciBnZXN0dXJlUmVj
b2duaXplckZvckludGVyYWN0aXZlVHJhbnNpdGlvbjpXaXRoVGFyZ2V0OmFjdGlvbjpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAg
IChhcHBMaW5rRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKGVuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250aW51ZUNv
bnRleHRNZW51SW50ZXJhY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RhdGFG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6YXRQb3NpdGlvbjp0eXBlOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJv
bGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICgrW1dLVGV4dFJhbmdlIHRleHRS
YW5nZVdpdGhTdGF0ZTppc1JhbmdlOmlzRWRpdGFibGU6c3RhcnRSZWN0OmVuZFJlY3Q6c2VsZWN0
aW9uUmVjdHM6c2VsZWN0ZWRUZXh0TGVuZ3RoOl0pOgorICAgICAgICAoK1tXS1RleHRQb3NpdGlv
biB0ZXh0UG9zaXRpb25XaXRoUmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRlciByZWN0c10pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbToKKyAgICAgICAgKC1bV0tXZWJF
dmVudCBpbml0V2l0aEV2ZW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvbnNQb3BvdmVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBlOl0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6
Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRGF0ZVBpY2tlclZp
ZXdDb250cm9sbGVyIF9kYXRlQ29tcG9uZW50Rm9yRGF5Om1vbnRoOnllYXI6ZXJhOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tOgorICAgICAg
ICAoLVtXS09wdGlvblBpY2tlckNlbGwgaW5pdFdpdGhPcHRpb25JdGVtOl0pOgorICAgICAgICAo
LVtXS09wdGlvbkdyb3VwUGlja2VyQ2VsbCBpbml0V2l0aE9wdGlvbkl0ZW06XSk6CisgICAgICAg
ICgtW1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIgcGlja2VyVmlldzp2aWV3Rm9yUm93OmZvckNvbXBv
bmVudDpyZXVzaW5nVmlldzpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RTaW5nbGVQaWNrZXIgcGlj
a2VyVmlldzphdHRyaWJ1dGVkVGl0bGVGb3JSb3c6Zm9yQ29tcG9uZW50Ol0pOgorICAgICAgICAo
LVtXS1NlbGVjdFBpY2tlclRhYmxlVmlld0NvbnRyb2xsZXIgdGFibGVWaWV3OnZpZXdGb3JIZWFk
ZXJJblNlY3Rpb246XSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyVGFibGVWaWV3Q29udHJv
bGxlciB0YWJsZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbToKKyAgICAgICAgKC1bV0tTZWxl
Y3RUYWJsZVZpZXdDb250cm9sbGVyIHRhYmxlVmlldzpjZWxsRm9yUm93QXRJbmRleFBhdGg6XSk6
CisgICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tOgorICAgICAg
ICAoLVtXS051bWJlclBhZFZpZXcgX2J1dHRvbkZvclBvc2l0aW9uOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlciBfaGFuZGxlS2V5UHJlc3M6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciBhY3Rpb25Db250cm9s
bGVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
ZW50ZXJUZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0UGFuZWwgX2ludGVycHJldEtleUV2ZW50OnVzaW5nTGVnYWN5Q29jb2FUZXh0
SW5wdXQ6c3RyaW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3Ry
YXRlZ3kubW06CisgICAgICAgICgrW1dLVmlld0xheW91dFN0cmF0ZWd5IGxheW91dFN0cmF0ZWd5
V2l0aFBhZ2U6dmlldzp2aWV3SW1wbDptb2RlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViQ29sb3JQaWNrZXJNYWMubW06CisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIHNldEFu
ZFNob3dQaWNrZXI6d2l0aENvbG9yOnN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tOgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzpyb3dWaWV3Rm9yUm93Ol0p
OgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzp2
aWV3Rm9yVGFibGVDb2x1bW46cm93Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoLVtX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBfY2VydGlmaWNhdGVDaGFpbl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtXS0RPTURvY3Vt
ZW50IHBhcnNlcllpZWxkVG9rZW5dKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OnRvV0tET01U
eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01S
YW5nZS5tbToKKyAgICAgICAgKC1bV0tET01SYW5nZSByYW5nZUJ5RXhwYW5kaW5nVG9Xb3JkQm91
bmRhcnlCeUNoYXJhY3RlcnM6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKwogMjAyMS0wMi0xNyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBTUEkgdG8gYWxsb3cgYXBwcyB0byBpbml0aWF0ZSBoaWdobGlnaHQg
Y3JlYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggZmI3NGUxN2JkZjA3YWNl
MTFjMjM5ZGZmNDU1ZTBiYzBhZTYxNDM3ZC4uZjBlOTdkZjJiOWI0NzNlZjNiYTBjYTllYmE0NmVj
YTQ3Y2Y2YjAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZXZl
biBmdXJ0aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBm
dXJ0aGVyIGJ5IHVzaW5nIFJldGFpblB0ci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblJlY3QubToKKyAgICAgICAgKCtbV2ViU2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25S
ZWN0XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmll
dyBfY2hlY2tQREZUaXRsZV0pOgorCiAyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVh
c2VdIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg2ODUxZjQ0MDE1
NTlmMmNlZGQxNDUwOTA0ODMyNGJmNzczNmEwZDguLjhkNTk5NDhjMTZiODM3OGM1NzcyNjc2MjJi
ZmQxYTk0NGMxNWZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
ODkgQEAKKzIwMjEtMDItMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktp
dCBldmVuIGZ1cnRoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2Vi
S2l0IGZ1cnRoZXIgYnkgdXNpbmcgUmV0YWluUHRyLgorCisgICAgICAgICogRE9NL0RPTS5tbToK
KyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAg
ICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAgICAgIChraXQpOgorICAg
ICAgICAqIERPTS9ET01DU1NSdWxlLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00v
RE9NQ1NTUnVsZUxpc3QubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01DU1NT
dHlsZURlY2xhcmF0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ1NT
VmFsdWUubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01Db3VudGVyLm1tOgor
ICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgIChraXQp
OgorICAgICAgICAqIERPTS9ET01GaWxlTGlzdC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAg
ICogRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAg
KiBET00vRE9NSW1wbGVtZW50YXRpb24ubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERP
TS9ET01NZWRpYUVycm9yLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTWVk
aWFMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTmFtZWROb2RlTWFw
Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTm9kZS5tbToKKyAgICAgICAg
KGtpdCk6CisgICAgICAgICogRE9NL0RPTU5vZGVJdGVyYXRvci5tbToKKyAgICAgICAgKGtpdCk6
CisgICAgICAgICogRE9NL0RPTU5vZGVMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAg
KiBET00vRE9NUkdCQ29sb3IubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01S
YW5nZS5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVJlY3QubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1tOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgKiBET00vRE9NU3R5bGVTaGVldExpc3QubW06CisgICAgICAgIChraXQpOgor
ICAgICAgICAqIERPTS9ET01UaW1lUmFuZ2VzLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAg
KiBET00vRE9NVG9rZW5MaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9N
VHJlZVdhbGtlci5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVhQYXRoLm1t
OgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NWFBhdGhFeHByZXNzaW9uLm1tOgor
ICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAg
IChraXQpOgorICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIHdlYkFyY2hpdmVdKToKKyAgICAgICAgKC1bRE9NTm9kZSB3ZWJBcmNoaXZlQnlGaWx0
ZXJpbmdTdWJmcmFtZXM6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHdlYkFyY2hpdmVdKToKKyAg
ICAgICAgKiBEZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSBtZW51SXRlbVdpdGhUYWc6dGFyZ2V0
OnJlcHJlc2VudGVkT2JqZWN0Ol0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViQmFja0ZvcndhcmRM
aXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IGFk
ZEl0ZW06XSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBiYWNrSXRlbV0pOgorICAg
ICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKToKKyAgICAgICAgKC1bV2Vi
QmFja0ZvcndhcmRMaXN0IGZvcndhcmRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJk
TGlzdCBpdGVtQXRJbmRleDpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06Cisg
ICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGRhdGFdKToKKyAgICAgICAgKiBIaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKCtbV2ViSGlzdG9yeUl0
ZW0gZW50cnlXaXRoVVJMOl0pOgorICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMu
bW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJraXRfc3RyaW5nQnlUcmltbWluZ1doaXRlc3Bh
Y2VdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TRGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNE
YXRhIF93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHNdKToKKyAgICAgICAgKiBNaXNjL1dl
Yk5TT2JqZWN0RXh0cmFzLm1tOgorICAgICAgICAoLVtXZWJNYWluVGhyZWFkSW52b2tlciBmb3J3
YXJkSW52b2NhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViTWFpblRocmVhZEludm9rZXIgaGFuZGxl
RXhjZXB0aW9uOl0pOgorICAgICAgICAoK1tOU09iamVjdCBfd2Via2l0X2ludm9rZU9uTWFpblRo
cmVhZF0pOgorICAgICAgICAoLVtOU09iamVjdCBfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZF0p
OgorICAgICAgICAqIE1pc2MvV2ViTlNVUkxFeHRyYXMubW06CisgICAgICAgICgtW05TVVJMIF93
ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmddKToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9ob3N0U3Ry
aW5nXSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpwbHVn
aW5DYW5jZWxsZWRDb25uZWN0aW9uRXJyb3IgY29uc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2Vi
QmFzZVBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgrW1dlYkJhc2VQbHVnaW5QYWNrYWdlIHBs
dWdpbldpdGhQYXRoOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2VsbGVk
Q29ubmVjdGlvbkVycm9yIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IHNlbmRFdmVudDpp
c0RyYXdSZWN0Ol0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2su
bW06CisgICAgICAgICgrW1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrIGNoZWNrV2l0aFJlcXVlc3Q6
dGFyZ2V0OnJlc3VsdE9iamVjdDpzZWxlY3Rvcjpjb250cm9sbGVyOmNvbnRleHRJbmZvOl0pOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06CisgICAgICAgICgtW1dlYlBs
dWdpbkRhdGFiYXNlIF9wbHVnSW5QYXRoc10pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKCtbV2ViVW5kb1N0ZXAgc3RlcFdpdGhVbmRvU3Rl
cDpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQpOgorICAgICAgICAobWFrZUZvcm1GaWVsZFZhbHVlc0RpY3Rpb25hcnkpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IgY29u
c3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
ZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6Y29udGV4dE1lbnVJdGVtc0ZvckVs
ZW1lbnQ6ZGVmYXVsdE1lbnVJdGVtczpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJT
ZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAg
ICAgICgtW1dlYkFyY2hpdmUgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBfZmlsZVdyYXBwZXJGb3JVUkw6XSk6Cisg
ICAgICAgICgtW1dlYkRhdGFTb3VyY2Ugd2ViQXJjaGl2ZV0pOgorICAgICAgICAoLVtXZWJEYXRh
U291cmNlIG1haW5SZXNvdXJjZV0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIHN1YnJlc291
cmNlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2subW06CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
SW50ZXJuYWwgbGFzdE9yaWVudGF0aW9uXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgZWxlbWVudEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1dl
YkZyYW1lIHBhcmVudEZyYW1lXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06
CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZVZpZXcgX3NldEN1c3RvbVNjcm9sbFZpZXdDbGFzczpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBhdHRyaWJ1dGVkU3RyaW5nRnJvbTpzdGFydE9mZnNldDp0bzplbmRPZmZzZXQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXcgX2V4
Y2x1ZGVkRWxlbWVudHNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbl0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQ6XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHZpZXc6c3RyaW5nRm9yVG9vbFRpcDpwb2ludDp1c2VyRGF0YTpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgcmlnaHRNb3VzZVVwOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBtZW51Rm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBhY2NlcHRzRmlyc3RNb3VzZTpdKToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgc2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50Ol0pOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyBtb3VzZURvd246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IG1vdXNlRHJhZ2dlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbW91
c2VVcDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcga2V5RG93bjpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcga2V5VXA6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGZsYWdzQ2hhbmdl
ZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ZvbnRBdHRyaWJ1dGVzRnJvbUZvbnRQYXN0
ZWJvYXJkXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHBlcmZvcm1LZXlFcXVpdmFsZW50Ol0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0ZXh0U3RvcmFnZV0pOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX2xlZ2FjeUF0dHJpYnV0ZWRTdHJpbmdGcm9tOm9mZnNldDp0bzpvZmZzZXQ6XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IGF0dHJpYnV0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgc2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGVsZW1lbnRBdFBvaW50OmFsbG93U2hhZG93Q29udGVudDpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW06CisgICAgICAgICgtW1dlYk5vdGlmaWNh
dGlvbiBvcmlnaW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAg
ICgtW1dlYlBERlZpZXcgc2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0Ol0pOgorICAgICAg
ICAoLVtXZWJQREZWaWV3IF9zY2FsZWRBdHRyaWJ1dGVkU3RyaW5nOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIF9pbml0V2l0aERh
dGE6VVJMOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6ZnJhbWVOYW1lOnJlc3BvbnNlOmNvcHlE
YXRhOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlv
bl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfcmVzcG9uc2VdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlNjcmlwdFdvcmxkLm1tOgorICAgICAgICAoK1tXZWJTY3JpcHRXb3JsZCB3b3JsZF0p
OgorICAgICAgICAoK1tXZWJTY3JpcHRXb3JsZCBmaW5kT3JDcmVhdGVXb3JsZDpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfbWVudUZvckVsZW1lbnQ6ZGVmYXVsdEl0
ZW1zOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9yZWdpc3RlclZpZXdDbGFzczpyZXByZXNlbnRh
dGlvbkNsYXNzOmZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGlzcGxheVVS
TF0pOgorICAgICAgICAoLVtXZWJWaWV3IHRleHRJdGVyYXRvckZvclJlY3Q6XSk6CisgICAgICAg
ICgrW1dlYlZpZXcgTUlNRVR5cGVzU2hvd25Bc0hUTUxdKToKKwogMjAyMS0wMi0xNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEludHJv
ZHVjZSBhIG5ldyBjb250ZXh0IG1lbnUgaXRlbSB0byBwcmV2aWV3IGltYWdlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCmluZGV4IGYxZWZhNDE3MGQ2MzczYjFlZjI3NjU1NjhkZjIxMzliOTYyOGFiYzUuLmI5
OTg4ZWNiYzBjZDkxMTlmODJkYmI0YmY5ZjhkOTUyNDg5NDcyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2Eu
bW0KQEAgLTEzMSw5ICsxMzEsOSBAQCBzdGF0aWMgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAq
c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQoY29uc3QgVVJMJiB1cmwsIFNTQlNlcgogICAgIGF1dG8g
bWFsd2FyZU9yVW53YW50ZWRTb2Z0d2FyZURldGFpbHMgPSBbJl0gKE5TU3RyaW5nICpkZXNjcmlw
dGlvbiwgTlNTdHJpbmcgKnN0YXR1c1N0cmluZ1RvUmVwbGFjZSwgYm9vbCBjb25maXJtTWFsd2Fy
ZSkgewogICAgICAgICBhdXRvIG1hbHdhcmVEZXNjcmlwdGlvbiA9IGFkb3B0TlMoW1tOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpkZXNjcmlwdGlvbl0pOwog
ICAgICAgICByZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwgQCIlc2FmZUJyb3dzaW5n
UHJvdmlkZXIlIiwgbG9jYWxpemVkUHJvdmlkZXIocmVzdWx0KSk7Ci0gICAgICAgIE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcgKnN0YXR1c0xpbmsgPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpXRUJfVUlfTlNTVFJJTkcoQCJ0aGUgc3RhdHVzIG9m
IOKAnCVzaXRlJeKAnSIsICJQYXJ0IG9mIG1hbHdhcmUgZGVzY3JpcHRpb24iKV0gYXV0b3JlbGVh
c2VdOwotICAgICAgICByZXBsYWNlKHN0YXR1c0xpbmssIEAiJXNpdGUlIiwgdXJsLmhvc3QoKS50
b1N0cmluZygpKTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2UobWFsd2FyZURlc2NyaXB0aW9u
LmdldCgpLCBzdGF0dXNTdHJpbmdUb1JlcGxhY2UsIHN0YXR1c0xpbmsuc3RyaW5nLCBtYWx3YXJl
RGV0YWlsc1VSTCh1cmwsIHJlc3VsdCkpOworICAgICAgICBhdXRvIHN0YXR1c0xpbmsgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6V0VC
X1VJX05TU1RSSU5HKEAidGhlIHN0YXR1cyBvZiDigJwlc2l0ZSXigJ0iLCAiUGFydCBvZiBtYWx3
YXJlIGRlc2NyaXB0aW9uIildKTsKKyAgICAgICAgcmVwbGFjZShzdGF0dXNMaW5rLmdldCgpLCBA
IiVzaXRlJSIsIHVybC5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGFkZExpbmtBbmRSZXBs
YWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwgc3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBbc3Rh
dHVzTGluayBzdHJpbmddLCBtYWx3YXJlRGV0YWlsc1VSTCh1cmwsIHJlc3VsdCkpOwogCiAgICAg
ICAgIGF1dG8gaWZZb3VVbmRlcnN0YW5kID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOldFQl9VSV9OU1NUUklORyhAIklmIHlvdSB1bmRl
cnN0YW5kIHRoZSByaXNrcyBpbnZvbHZlZCwgeW91IGNhbiAldmlzaXQtdGhpcy11bnNhZmUtc2l0
ZS1saW5rJS4iLCAiQWN0aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIildKTsKICAgICAg
ICAgYWRkTGlua0FuZFJlcGxhY2UoaWZZb3VVbmRlcnN0YW5kLmdldCgpLCBAIiV2aXNpdC10aGlz
LXVuc2FmZS1zaXRlLWxpbmslIiwgV0VCX1VJX05TU1RSSU5HKEAidmlzaXQgdGhpcyB1bnNhZmUg
d2Vic2l0ZSIsICJBY3Rpb24gZnJvbSBzYWZlIGJyb3dzaW5nIHdhcm5pbmciKSwgY29uZmlybU1h
bHdhcmUgPyBTYWZlQnJvd3NpbmdXYXJuaW5nOjpjb25maXJtTWFsd2FyZVNlbnRpbmVsKCkgOiBT
YWZlQnJvd3NpbmdXYXJuaW5nOjp2aXNpdFVuc2FmZVdlYnNpdGVTZW50aW5lbCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a05mY1NlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tCmluZGV4IDQyYjljM2NhMjdkYjMzMzk4YmE5YjgzMDY2
ZDYyNmYwNWMxYzUyZjguLmZiOGIxZDU2NDA2ZGEwNDYzMzY1YTdjNGNjM2U0MWJkNzgxMGE1OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja05mY1NlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMTg4LDkgKzE4OCw5IEBAIE5T
RGF0YSogTW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUoKQogICAgIGlmIChtX2NvbmZpZ3VyYXRp
b24ubmZjLT5wYXlsb2FkQmFzZTY0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0
cmluZzptX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0WzBdIG9wdGlvbnM6TlNEYXRh
QmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc107CisgICAgYXV0byByZXN1bHQg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9j
b25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERl
Y29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKTsKICAgICBtX2NvbmZpZ3VyYXRpb24ubmZj
LT5wYXlsb2FkQmFzZTY0LnJlbW92ZSgwKTsKLSAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIE1vY2tOZmNT
ZXJ2aWNlOjpyZWNlaXZlU3RvcFBvbGxpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggOGVmMWNlNDEy
NzM2YThlZWQzYzZhYTE2YzAzMmIzM2FkYjliZjRjNy4uMGQzZGE5MmNkNDE1NTA3YThiMTg4OTI0
NzMzNjE2N2I4Yzg1ZDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC0zOTcsMTYgKzM5NywxNiBAQCB2
b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFn
U291cmNlcygpCiAgICAgICAgICAgICBkcmFnSXRlbS5wcmV2aWV3UHJvdmlkZXIgPSBbdGl0bGUg
PSByZXRhaW5QdHIoKE5TU3RyaW5nICopc291cmNlLmxpbmtUaXRsZSksIHVybCA9IHJldGFpblB0
cigoTlNVUkwgKilzb3VyY2UubGlua1VSTCksIGNlbnRlciA9IHNvdXJjZS5hZGp1c3RlZE9yaWdp
bl0gKCkgLT4gVUlEcmFnUHJldmlldyAqIHsKICAgICAgICAgICAgICAgICBVSVVSTERyYWdQcmV2
aWV3VmlldyAqcHJldmlld1ZpZXcgPSBbVUlVUkxEcmFnUHJldmlld1ZpZXcgdmlld1dpdGhUaXRs
ZTp0aXRsZS5nZXQoKSBVUkw6dXJsLmdldCgpXTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Vmll
dy5jZW50ZXIgPSBjZW50ZXI7Ci0gICAgICAgICAgICAgICAgVUlEcmFnUHJldmlld1BhcmFtZXRl
cnMgKnBhcmFtZXRlcnMgPSBbW1tVSURyYWdQcmV2aWV3UGFyYW1ldGVycyBhbGxvY10gaW5pdFdp
dGhUZXh0TGluZVJlY3RzOkBbIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpwcmV2aWV3Vmlldy5i
b3VuZHNdIF1dIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gW1tbVUlEcmFn
UHJldmlldyBhbGxvY10gaW5pdFdpdGhWaWV3OnByZXZpZXdWaWV3IHBhcmFtZXRlcnM6cGFyYW1l
dGVyc10gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IGFk
b3B0TlMoW1tVSURyYWdQcmV2aWV3UGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhUZXh0TGluZVJl
Y3RzOkBbIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpwcmV2aWV3Vmlldy5ib3VuZHNdIF1dKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXcgYWxsb2NdIGlu
aXRXaXRoVmlldzpwcmV2aWV3VmlldyBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCldKS5hdXRv
cmVsZWFzZSgpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQogICAgICAgICBlbHNlIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdT
b3VyY2VBY3Rpb246OkNvbG9yKSkgewogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3Zp
ZGVyID0gW2ltYWdlID0gc291cmNlLmltYWdlXSAoKSAtPiBVSURyYWdQcmV2aWV3ICogewotICAg
ICAgICAgICAgICAgIFVJSW1hZ2VWaWV3ICppbWFnZVZpZXcgPSBbW1tVSUltYWdlVmlldyBhbGxv
Y10gaW5pdFdpdGhJbWFnZTppbWFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAg
ICAgIFVJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzICpwYXJhbWV0ZXJzID0gW1tbVUlEcmFnUHJldmll
d1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVSZWN0czpAWyBbTlNWYWx1ZSB2YWx1
ZVdpdGhDR1JlY3Q6W2ltYWdlVmlldyBib3VuZHNdXSBdXSBhdXRvcmVsZWFzZV07Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFtbW1VJRHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRoVmlldzppbWFn
ZVZpZXcgcGFyYW1ldGVyczpwYXJhbWV0ZXJzXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZVZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRo
SW1hZ2U6aW1hZ2UuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBh
ZG9wdE5TKFtbVUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVS
ZWN0czpAWyBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W2ltYWdlVmlldyBib3VuZHNdXSBdXSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSURyYWdQcmV2aWV3IGFsbG9jXSBp
bml0V2l0aFZpZXc6aW1hZ2VWaWV3LmdldCgpIHBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKV0p
LmF1dG9yZWxlYXNlKCk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tCmluZGV4IDk3YzE1YzYwMTZjYjczN2YxZTE1ZmIzZmFiZTViOTRjODJmNGNhMTIuLmQx
NGRkNGM3MmI4MWU0NTdmMTZjMGQ5OThkYmY3Mjg0YjI4NWQzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpA
QCAtMTIzLDEwICsxMjMsMTAgQEAgLSAoVUlQYW5HZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZWNvZ25pemVyRm9ySW50ZXJhY3RpdmVUcmFuc2l0aW9uOihfVUlOYXZpZ2EKIHsKICNpZiBIQVZF
KFVJX1BBUkFMTEFYX1RSQU5TSVRJT05fR0VTVFVSRV9SRUNPR05JWkVSKQogQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19CRUdJTgotICAgIF9VSVBhcmFsbGF4VHJhbnNpdGlvblBhbkdlc3R1
cmVSZWNvZ25pemVyICpyZWNvZ25pemVyID0gW1tfVUlQYXJhbGxheFRyYW5zaXRpb25QYW5HZXN0
dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjphY3Rpb25d
OworICAgIGF1dG8gcmVjb2duaXplciA9IGFkb3B0TlMoW1tfVUlQYXJhbGxheFRyYW5zaXRpb25Q
YW5HZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjph
Y3Rpb25dKTsKIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAjZWxzZQotICAgIFVJ
U2NyZWVuRWRnZVBhbkdlc3R1cmVSZWNvZ25pemVyICpyZWNvZ25pemVyID0gW1tVSVNjcmVlbkVk
Z2VQYW5HZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlv
bjphY3Rpb25dOworICAgIGF1dG8gcmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVNjcmVlbkVkZ2VQ
YW5HZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjph
Y3Rpb25dKTsKICNlbmRpZgogICAgIGJvb2wgaXNMVFIgPSBbVUlWaWV3IHVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb25Gb3JTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGU6W19nZXN0dXJlUmVjb2du
aXplclZpZXcuZ2V0KCkgc2VtYW50aWNDb250ZW50QXR0cmlidXRlXV0gPT0gVUlVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQ7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBBTExP
V19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgICAgICBbcmVjb2duaXplciBzZXRFZGdl
czppc0xUUiA/IFVJUmVjdEVkZ2VSaWdodCA6IFVJUmVjdEVkZ2VMZWZ0XTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiBbcmVjb2duaXplciBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIHJlY29nbml6ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTClpc05hdmlnYXRpb25T
d2lwZUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcmVjb2duaXplcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Np
c3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lz
dGFudC5tbQppbmRleCBhMjgxMTE4NGU2OGY0Yzk4MWI3ZjEwNTU0YzU3ZThhZDg0NTQ3N2ZmLi4x
MzdhZThlZTI2ZGMwY2E0ZTcxYjJlYmNhMDdiY2IzOTI4YWM5Nzg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAt
ODIsMTYgKzgyLDE0IEBAIHN0YXRpYyBMU0FwcExpbmsgKmFwcExpbmtGb3JVUkwoTlNVUkwgKnVy
bCkKICAgICByZXR1cm4gYXBwTGlua3MuZmlyc3RPYmplY3Q7CiAjZWxzZQogICAgIEJpbmFyeVNl
bWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgX19ibG9jayBMU0FwcExpbmsgKnN5bmNBcHBMaW5rID0g
bmlsOwotICAgIF9fYmxvY2sgQmluYXJ5U2VtYXBob3JlKiBzZW1hcGhvcmVQdHIgPSAmc2VtYXBo
b3JlOwotCi0gICAgW0xTQXBwTGluayBnZXRBcHBMaW5rV2l0aFVSTDp1cmwgY29tcGxldGlvbkhh
bmRsZXI6XihMU0FwcExpbmsgKmFwcExpbmssIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIHN5
bmNBcHBMaW5rID0gW2FwcExpbmsgcmV0YWluXTsKLSAgICAgICAgc2VtYXBob3JlUHRyLT5zaWdu
YWwoKTsKKyAgICBSZXRhaW5QdHI8TFNBcHBMaW5rPiBzeW5jQXBwTGluazsKKyAgICBbTFNBcHBM
aW5rIGdldEFwcExpbmtXaXRoVVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpbJnNlbWFwaG9yZSwg
JnN5bmNBcHBMaW5rXShMU0FwcExpbmsgKmFwcExpbmssIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIHN5bmNBcHBMaW5rID0gcmV0YWluUHRyKGFwcExpbmspOworICAgICAgICBzZW1hcGhvcmUu
c2lnbmFsKCk7CiAgICAgfV07CiAgICAgc2VtYXBob3JlLndhaXQoKTsKIAotICAgIHJldHVybiBb
c3luY0FwcExpbmsgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzeW5jQXBwTGluay5hdXRvcmVs
ZWFzZSgpOwogI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDZkZTYwY2Y1ZjY5
ZWU4MTJjZjk5MmQwOWYyYTlmY2YwYTBkZTNkOGIuLmQ4MjdkMGIwNjk0N2U0OGUxMGEzZTM0Yjc3
OTVhOTRkZDcyNjZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRp
YyBXS0RyYWdTZXNzaW9uQ29udGV4dCAqZW5zdXJlTG9jYWxEcmFnU2Vzc2lvbkNvbnRleHQoaWQg
PFVJRHJhZ1Nlc3Npb24+IHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IAotICAgIHNlc3Npb24ubG9jYWxDb250ZXh0ID0gW1tbV0tEcmFnU2Vzc2lvbkNvbnRleHQgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBzZXNzaW9uLmxvY2FsQ29udGV4dCA9IGFkb3B0
TlMoW1tXS0RyYWdTZXNzaW9uQ29udGV4dCBhbGxvY10gaW5pdF0pLmdldCgpOwogICAgIHJldHVy
biAoV0tEcmFnU2Vzc2lvbkNvbnRleHQgKilzZXNzaW9uLmxvY2FsQ29udGV4dDsKIH0KIApAQCAt
ODI4Myw3ICs4MjgzLDcgQEAgLSAodm9pZClpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZToo
Q0dTaXplKXNpemUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFUKICAgICAgICAgfQogICAg
ICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlclRvVXNlIHsgKnBsYWNlaG9s
ZGVyIH07CiAgICAgICAgIHBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1Nl
bGYgY29udmVydFJlY3Q6cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgZnJvbVZpZXc6W3N0
cm9uZ1NlbGYgd2ViVmlld11dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tXS1RleHRQ
bGFjZWhvbGRlciBhbGxvY10gaW5pdFdpdGhFbGVtZW50Q29udGV4dDpwbGFjZWhvbGRlclRvVXNl
XSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tU
ZXh0UGxhY2Vob2xkZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJU
b1VzZV0pLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMTAwMDAsNyArMTAwMDAsNyBAQCAtICh2
b2lkKWNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZCheKShVSUNvbnRleHRNZW51
Q29uZmlndXJhdGlvbiAqKSljbwogICAgICAgICAgICAgICAgIGlmICghc3Ryb25nU2VsZikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgICAgIHJldHVybiBb
W1tXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJ
bWFnZSBkZWZhdWx0QWN0aW9uczpuaWwgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLSW1hZ2VQcmV2
aWV3Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlIGRlZmF1bHRB
Y3Rpb25zOm5pbCBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7
CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBjb250aW51ZVdpdGhDb250ZXh0TWVudUNv
bmZpZ3VyYXRpb24oW1VJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25XaXRo
SWRlbnRpZmllcjpuaWwgcHJldmlld1Byb3ZpZGVyOmNvbnRlbnRQcmV2aWV3UHJvdmlkZXIgYWN0
aW9uUHJvdmlkZXI6YWN0aW9uTWVudVByb3ZpZGVyXSk7CkBAIC0xMDMzMSwxMyArMTAzMzEsMTMg
QEAgLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJl
dmlld0l0ZW1Db250cm9sbGVyICopY29udHIKICAgICAgICAgY2FuU2hvd0xpbmtQcmV2aWV3ID0g
Tk87CiAgICAgfQogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGF0YUZvclByZXZpZXcgPSBb
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byBkYXRhRm9yUHJldmlldyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7CiAgICAgaWYgKGNhblNob3dMaW5rUHJldmlldykgewogICAgICAgICAqdHlwZSA9IFVJ
UHJldmlld0l0ZW1UeXBlTGluazsKICAgICAgICAgaWYgKHVzZUltYWdlVVJMRm9yTGluaykKLSAg
ICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKV9w
b3NpdGlvbkluZm9ybWF0aW9uLmltYWdlVVJMOworICAgICAgICAgICAgZGF0YUZvclByZXZpZXcu
Z2V0KClbVUlQcmV2aWV3RGF0YUxpbmtdID0gKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24u
aW1hZ2VVUkw7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJl
dmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKWxpbmtVUkw7CisgICAgICAgICAgICBkYXRhRm9yUHJl
dmlldy5nZXQoKVtVSVByZXZpZXdEYXRhTGlua10gPSAoTlNVUkwgKilsaW5rVVJMOwogI2lmIEVO
QUJMRShEQVRBX0RFVEVDVElPTikKICAgICAgICAgaWYgKGlzRGF0YURldGVjdG9yTGluaykgewog
ICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0ID0gbmlsOwpAQCAtMTAzNDcsOSArMTAz
NDcsOSBAQCAtIChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxlcjoo
VUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cgogICAgICAgICAgICAgREREZXRlY3Rpb25D
b250cm9sbGVyICpjb250cm9sbGVyID0gW2dldERERGV0ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkg
c2hhcmVkQ29udHJvbGxlcl07CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKm5ld0NvbnRleHQg
PSBuaWw7CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5k
ZWRDb250ZXh0OwotICAgICAgICAgICAgRERSZXN1bHRSZWYgZGRSZXN1bHQgPSBbY29udHJvbGxl
ciByZXN1bHRGb3JVUkw6ZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUxpbmtdIGlkZW50aWZp
ZXI6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9ySWRlbnRpZmllciBzZWxlY3RlZFRl
eHQ6W3NlbGYgc2VsZWN0ZWRUZXh0XSByZXN1bHRzOl9wb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFE
ZXRlY3RvclJlc3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0IGV4dGVuZGVkQ29udGV4dDombmV3
Q29udGV4dF07CisgICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtjb250cm9sbGVy
IHJlc3VsdEZvclVSTDpkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhTGlua10gaWRl
bnRpZmllcjpfcG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVj
dGVkVGV4dDpbc2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24u
ZGF0YURldGVjdG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250ZXh0
OiZuZXdDb250ZXh0XTsKICAgICAgICAgICAgIGlmIChkZFJlc3VsdCkKLSAgICAgICAgICAgICAg
ICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhRERSZXN1bHRdID0gKF9fYnJpZGdlIGlkKWRk
UmVzdWx0OworICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0Rh
dGFERFJlc3VsdF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7CiAgICAgICAgICAgICBpZiAoIV9w
b3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFfcG9zaXRpb25JbmZv
cm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgZXh0ZW5kZWRD
b250ZXh0ID0gYWRvcHROUyhbQHsKICAgICAgICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3Rv
cnNMZWFkaW5nVGV4dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZSwKQEAgLTEw
MzYxLDEyICsxMDM2MSwxMiBAQCAtIChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVt
Q29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cgogICAgICAgICAgICAg
ICAgIG5ld0NvbnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobmV3Q29udGV4dCkKLSAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmll
d1tVSVByZXZpZXdEYXRhRERDb250ZXh0XSA9IG5ld0NvbnRleHQ7CisgICAgICAgICAgICAgICAg
ZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUREQ29udGV4dF0gPSBuZXdDb250ZXh0
OwogICAgICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIH0gZWxz
ZSBpZiAoY2FuU2hvd0ltYWdlUHJldmlldykgewogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0
ZW1UeXBlSW1hZ2U7Ci0gICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSA9
IChOU1VSTCAqKV9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlVVJMOworICAgICAgICBkYXRhRm9y
UHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhTGlua10gPSAoTlNVUkwgKilfcG9zaXRpb25JbmZv
cm1hdGlvbi5pbWFnZVVSTDsKICAgICB9IGVsc2UgaWYgKGNhblNob3dBdHRhY2htZW50UHJldmll
dykgewogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0ZW1UeXBlQXR0YWNobWVudDsKICAgICAg
ICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9j
XSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlQXR0YWNobWVudCBVUkw6KE5T
VVJMICopbGlua1VSTCBpbWFnZVVSTDooTlNVUkwgKilfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFn
ZVVSTCBsb2NhdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50IHRpdGxlOl9w
b3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmli
dXRlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOm5pbF0pOwpAQCAtMTAz
NzQsMTUgKzEwMzc0LDE1IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1D
b250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAgICAgIGlmIChp
bmRleCAhPSBOU05vdEZvdW5kKSB7CiAgICAgICAgICAgICBCT09MIHNvdXJjZUlzTWFuYWdlZCA9
IE5POwogICAgICAgICAgICAgaWYgKHJlc3BvbmRzVG9BdHRhY2htZW50TGlzdEZvcldlYlZpZXdT
b3VyY2VJc01hbmFnZWQpCi0gICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3
RGF0YUF0dGFjaG1lbnRMaXN0XSA9IFt1aURlbGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZp
ZXc6c2VsZi53ZWJWaWV3IHNvdXJjZUlzTWFuYWdlZDomc291cmNlSXNNYW5hZ2VkXTsKKyAgICAg
ICAgICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhQXR0YWNobWVudExp
c3RdID0gW3VpRGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0Rm9yV2ViVmlldzpzZWxmLndlYlZpZXcg
c291cmNlSXNNYW5hZ2VkOiZzb3VyY2VJc01hbmFnZWRdOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50TGlzdF0g
PSBbdWlEZWxlZ2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3OnNlbGYud2ViVmlld107Ci0g
ICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVudEluZGV4XSA9
IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluZGV4XTsKLSAgICAgICAgICAg
IGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50TGlzdElzQ29udGVudE1hbmFn
ZWRdID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnNvdXJjZUlzTWFuYWdlZF07CisgICAgICAg
ICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0
XSA9IFt1aURlbGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZpZXc6c2VsZi53ZWJWaWV3XTsK
KyAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFBdHRhY2htZW50
SW5kZXhdID0gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5kZXhdOworICAg
ICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0
SXNDb250ZW50TWFuYWdlZF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6c291cmNlSXNNYW5h
Z2VkXTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBkYXRhRm9yUHJldmlldzsKKyAg
ICByZXR1cm4gZGF0YUZvclByZXZpZXcuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ0dSZWN0KV9w
cmVzZW50YXRpb25SZWN0Rm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29u
dHJvbGxlciAqKWNvbnRyb2xsZXIKQEAgLTEwNDc4LDcgKzEwNDc4LDcgQEAgLSAoVUlWaWV3Q29u
dHJvbGxlciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxl
cjooVUlQcmV2aWUKICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlld1ZpZXdDb250cm9sbGVy
OwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIFtbW1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOmRlZmF1
bHRBY3Rpb25zIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvXSBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmNnSW1hZ2UgZGVmYXVsdEFjdGlvbnM6ZGVmYXVsdEFjdGlvbnMgZWxlbWVu
dEluZm86ZWxlbWVudEluZm9dKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVybiBu
aWw7CkBAIC0xMDU1Myw3ICsxMDU1Myw3IEBAIC0gKFVJSW1hZ2UgKilfcHJlc2VudGF0aW9uU25h
cHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sCiAgICAg
aWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
W1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25SZWN0c0Zv
clByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9s
bGVyCkBAIC0xMDYwMSwxNSArMTA2MDEsMTUgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFJhbmdl
CiAKICsoV0tUZXh0UmFuZ2UgKil0ZXh0UmFuZ2VXaXRoU3RhdGU6KEJPT0wpaXNOb25lIGlzUmFu
Z2U6KEJPT0wpaXNSYW5nZSBpc0VkaXRhYmxlOihCT09MKWlzRWRpdGFibGUgc3RhcnRSZWN0OihD
R1JlY3Qpc3RhcnRSZWN0IGVuZFJlY3Q6KENHUmVjdCllbmRSZWN0IHNlbGVjdGlvblJlY3RzOihO
U0FycmF5ICopc2VsZWN0aW9uUmVjdHMgc2VsZWN0ZWRUZXh0TGVuZ3RoOihOU1VJbnRlZ2VyKXNl
bGVjdGVkVGV4dExlbmd0aAogewotICAgIFdLVGV4dFJhbmdlICpyYW5nZSA9IFtbV0tUZXh0UmFu
Z2UgYWxsb2NdIGluaXRdOwotICAgIHJhbmdlLmlzTm9uZSA9IGlzTm9uZTsKLSAgICByYW5nZS5p
c1JhbmdlID0gaXNSYW5nZTsKLSAgICByYW5nZS5pc0VkaXRhYmxlID0gaXNFZGl0YWJsZTsKLSAg
ICByYW5nZS5zdGFydFJlY3QgPSBzdGFydFJlY3Q7Ci0gICAgcmFuZ2UuZW5kUmVjdCA9IGVuZFJl
Y3Q7Ci0gICAgcmFuZ2Uuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0TGVuZ3RoOwot
ICAgIHJhbmdlLnNlbGVjdGlvblJlY3RzID0gc2VsZWN0aW9uUmVjdHM7Ci0gICAgcmV0dXJuIFty
YW5nZSBhdXRvcmVsZWFzZV07CisgICAgYXV0byByYW5nZSA9IGFkb3B0TlMoW1tXS1RleHRSYW5n
ZSBhbGxvY10gaW5pdF0pOworICAgIFtyYW5nZSBzZXRJc05vbmU6aXNOb25lXTsKKyAgICBbcmFu
Z2Ugc2V0SXNSYW5nZTppc1JhbmdlXTsKKyAgICBbcmFuZ2Ugc2V0SXNFZGl0YWJsZTppc0VkaXRh
YmxlXTsKKyAgICBbcmFuZ2Ugc2V0U3RhcnRSZWN0OnN0YXJ0UmVjdF07CisgICAgW3JhbmdlIHNl
dEVuZFJlY3Q6ZW5kUmVjdF07CisgICAgW3JhbmdlIHNldFNlbGVjdGVkVGV4dExlbmd0aDpzZWxl
Y3RlZFRleHRMZW5ndGhdOworICAgIFtyYW5nZSBzZXRTZWxlY3Rpb25SZWN0czpzZWxlY3Rpb25S
ZWN0c107CisgICAgcmV0dXJuIHJhbmdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpZGVh
bGxvYwpAQCAtMTA2NzUsOSArMTA2NzUsOSBAQCBAc3ludGhlc2l6ZSBwb3NpdGlvblJlY3QgPSBf
cG9zaXRpb25SZWN0OwogCiArIChXS1RleHRQb3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhSZWN0
OihDR1JlY3QpcG9zaXRpb25SZWN0CiB7Ci0gICAgV0tUZXh0UG9zaXRpb24gKnBvcyA9W1tXS1Rl
eHRQb3NpdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgcG9zLnBvc2l0aW9uUmVjdCA9IHBvc2l0aW9u
UmVjdDsKLSAgICByZXR1cm4gW3BvcyBhdXRvcmVsZWFzZV07CisgICAgYXV0byBwb3MgPSBhZG9w
dE5TKFtbV0tUZXh0UG9zaXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbcG9zIHNldFBvc2l0aW9u
UmVjdDpwb3NpdGlvblJlY3RdOworICAgIHJldHVybiBwb3MuYXV0b3JlbGVhc2UoKTsKIH0KIAog
Ly8gRklYTUU6IE92ZXJyaWRpbmcgaXNFcXVhbDogd2l0aG91dCBvdmVycmlkaW5nIGhhc2ggd2ls
bCBjYXVzZSB0cm91YmxlIGlmIHRoaXMgZXZlciBnb2VzIGludG8gYSBOU1NldCBvciBpcyB0aGUg
a2V5IGluIGFuIE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5tbQppbmRleCBhZDU4ZDdiZTU2MDM1NTc2ZThiMGZhOTRkOWU3
ODQ5OTk1NTc4MWI3Li5lYzliNWU1YTZiMmJiMTJmMDZlMTIzNWUzMmIwY2IxMTBlM2IyOGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1t
CkBAIC01MCw3ICs1MCw3IEBAIC0gKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JillbGVt
ZW50Q29udGV4dAogCiAtIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJlY3QgKj4gKilyZWN0cwog
ewotICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9jXSBpbml0V2l0aENH
UmVjdDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVsZWFzZV0gXTsKKyAgICBy
ZXR1cm4gQFsgYWRvcHROUyhbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRXaXRoQ0dS
ZWN0Ol9lbGVtZW50Q29udGV4dC5ib3VuZGluZ1JlY3RdKS5nZXQoKSBdOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50Lm1tCmluZGV4IGFiNTk2ODc5YTBh
ODNhYzQ5YWQ0ZDVkODdhOWQ1MzczZTE0NGEwNTYuLmU3ZGEyODE2N2U4MGU1MWEzMDY5MDExNGMz
YWNjZjhhN2U4YWEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S1dlYkV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50
Lm1tCkBAIC00MSwyMyArNDEsMjUgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRXZlbnQ6KFVJ
RXZlbnQgKilldmVudAogICAgIFVJS2V5Ym9hcmRJbnB1dEZsYWdzIGlucHV0RmxhZ3M7CiAgICAg
TlNJbnRlZ2VyIG1vZGlmaWVyRmxhZ3M7CiAgICAgQk9PTCBpc0hhcmR3YXJlS2V5Ym9hcmRFdmVu
dCA9ICEhZXZlbnQuX2hpZEV2ZW50OworICAgIFJldGFpblB0cjxVSUV2ZW50PiB1aUV2ZW50Owog
ICAgIGlmICghaXNIYXJkd2FyZUtleWJvYXJkRXZlbnQpIHsKICAgICAgICAga2V5Q29kZSA9IDA7
CiAgICAgICAgIGlucHV0RmxhZ3MgPSAoVUlLZXlib2FyZElucHV0RmxhZ3MpMDsKICAgICAgICAg
bW9kaWZpZXJGbGFncyA9IDA7CisgICAgICAgIHVpRXZlbnQgPSBldmVudDsKICAgICB9IGVsc2Ug
ewogICAgICAgICBVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAqa2V5RXZlbnQgPSAoVUlQaHlzaWNh
bEtleWJvYXJkRXZlbnQgKilldmVudDsKICAgICAgICAga2V5Q29kZSA9IGtleUV2ZW50Ll9rZXlD
b2RlOwogICAgICAgICBpbnB1dEZsYWdzID0ga2V5RXZlbnQuX2lucHV0RmxhZ3M7CiAgICAgICAg
IG1vZGlmaWVyRmxhZ3MgPSBrZXlFdmVudC5fZ3NNb2RpZmllckZsYWdzOwotICAgICAgICBldmVu
dCA9IFtba2V5RXZlbnQgX2Nsb25lRXZlbnRdIGF1dG9yZWxlYXNlXTsgLy8gVUlLaXQgdXNlcyBh
IHNpbmdsZXRvbiBmb3IgaGFyZHdhcmUga2V5Ym9hcmQgZXZlbnRzLgorICAgICAgICB1aUV2ZW50
ID0gYWRvcHROUyhba2V5RXZlbnQgX2Nsb25lRXZlbnRdKTsgLy8gVUlLaXQgdXNlcyBhIHNpbmds
ZXRvbiBmb3IgaGFyZHdhcmUga2V5Ym9hcmQgZXZlbnRzLgogICAgIH0KIAotICAgIHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhLZXlFdmVudFR5cGU6KGV2ZW50Ll9pc0tleURvd24gPyBXZWJFdmVudEtl
eURvd24gOiBXZWJFdmVudEtleVVwKSB0aW1lU3RhbXA6ZXZlbnQudGltZXN0YW1wIGNoYXJhY3Rl
cnM6ZXZlbnQuX21vZGlmaWVkSW5wdXQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmV2ZW50
Ll91bm1vZGlmaWVkSW5wdXQgbW9kaWZpZXJzOm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6KGlu
cHV0RmxhZ3MgJiBrVUlLZXlib2FyZElucHV0UmVwZWF0KSB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OltldmVudC5f
bW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdXTsKKyAgICBzZWxmID0gW3N1cGVy
IGluaXRXaXRoS2V5RXZlbnRUeXBlOihbdWlFdmVudCBfaXNLZXlEb3duXSA/IFdlYkV2ZW50S2V5
RG93biA6IFdlYkV2ZW50S2V5VXApIHRpbWVTdGFtcDpbdWlFdmVudCB0aW1lc3RhbXBdIGNoYXJh
Y3RlcnM6W3VpRXZlbnQgX21vZGlmaWVkSW5wdXRdIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpbdWlFdmVudCBfdW5tb2RpZmllZElucHV0XSBtb2RpZmllcnM6bW9kaWZpZXJGbGFncyBpc1Jl
cGVhdGluZzooaW5wdXRGbGFncyAmIGtVSUtleWJvYXJkSW5wdXRSZXBlYXQpIHdpdGhGbGFnczpp
bnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJL
ZXk6W1t1aUV2ZW50IF9tb2RpZmllZElucHV0XSBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdXTsKICAg
ICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfdWlFdmVudCA9IGV2ZW50
OworICAgIF91aUV2ZW50ID0gV1RGTW92ZSh1aUV2ZW50KTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KaW5kZXggYjkzODU3ZWY5MGQxM2ZmOTJj
ZjQ0OTNkZGFiMjQ2MzM1M2VjYTQzNi4uYmZjNTM1YjYxNjc1NGJhM2MyZDgyOGEzYTZkZjA0NzNl
NjEwNDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCkBAIC0zMjEsNyArMzIx
LDcgQEAgLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MmKWRyb3AKICAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0
U3VnZ2VzdGlvbnMgPSBzZWxmLnRleHRTdWdnZXN0aW9uczsKIAogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICBbX3BvcG92ZXIgc2V0UG9wb3ZlckNvbnRyb2xsZXI6W1tb
VUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6
X3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIuZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgW19w
b3BvdmVyIHNldFBvcG92ZXJDb250cm9sbGVyOmFkb3B0TlMoW1tVSVBvcG92ZXJDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpfc3VnZ2VzdGlvbnNWaWV3Q29u
dHJvbGxlci5nZXQoKV0pLmdldCgpXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgW19wb3BvdmVyIHByZXNlbnRQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwpAQCAtMzU2LDE1
ICszNTYsMTUgQEAgLSAoTlNJbnRlZ2VyKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZp
ZXcgbnVtYmVyT2ZSb3dzSW5TZWN0aW9uOihOU0ludGVnZXIKIAogLSAoVUlUYWJsZVZpZXdDZWxs
ICopdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBjZWxsRm9yUm93QXRJbmRleFBh
dGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCiB7Ci0gICAgVUlUYWJsZVZpZXdDZWxsICpjZWxs
ID0gW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6c3VnZ2VzdGlv
bkNlbGxSZXVzZUlkZW50aWZpZXJdOworICAgIGF1dG8gY2VsbCA9IHJldGFpblB0cihbdGFibGVW
aWV3IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNl
SWRlbnRpZmllcl0pOwogICAgIGlmICghY2VsbCkKLSAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVW
aWV3Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQg
cmV1c2VJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSBhdXRvcmVsZWFz
ZV07CisgICAgICAgIGNlbGwgPSBhZG9wdE5TKFtbVUlUYWJsZVZpZXdDZWxsIGFsbG9jXSBpbml0
V2l0aFN0eWxlOlVJVGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6c3Vn
Z2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdKTsKIAotICAgIGNlbGwudGV4dExhYmVsLnRleHQg
PSBbc2VsZi5jb250cm9sIHN1Z2dlc3Rpb25BdEluZGV4OmluZGV4UGF0aC5yb3ddOwotICAgIGNl
bGwudGV4dExhYmVsLmxpbmVCcmVha01vZGUgPSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7
Ci0gICAgY2VsbC50ZXh0TGFiZWwudGV4dEFsaWdubWVudCA9IFtzZWxmLmNvbnRyb2wgdGV4dEFs
aWdubWVudF07CisgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0ID0gW3NlbGYuY29udHJvbCBzdWdn
ZXN0aW9uQXRJbmRleDppbmRleFBhdGgucm93XTsKKyAgICBbY2VsbCB0ZXh0TGFiZWxdLmxpbmVC
cmVha01vZGUgPSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7CisgICAgW2NlbGwgdGV4dExh
YmVsXS50ZXh0QWxpZ25tZW50ID0gW3NlbGYuY29udHJvbCB0ZXh0QWxpZ25tZW50XTsKIAotICAg
IHJldHVybiBjZWxsOworICAgIHJldHVybiBjZWxsLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZv
aWQpdGFibGVWaWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBkaWRTZWxlY3RSb3dBdEluZGV4
UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5t
bQppbmRleCA4OTEwZmI3ZjRlMTY1YjBkMWFiZTEzNTQ2NGQ0YTIzOTdhYTZiYjBjLi40NzQ4OGZk
ZTIyYTllOGQ5MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250
cm9sbGVyLm1tCkBAIC01MTIsMTMgKzUxMiwxMyBAQCAtIChOU0RhdGUgKilkYXRlCiAKIC0gKE5T
RGF0ZUNvbXBvbmVudHMgKilfZGF0ZUNvbXBvbmVudEZvckRheTooTlNJbnRlZ2VyKWRheSBtb250
aDooTlNJbnRlZ2VyKW1vbnRoIHllYXI6KE5TSW50ZWdlcil5ZWFyIGVyYTooTlNJbnRlZ2VyKWVy
YQogewotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmRhdGVDb21wb25lbnRzID0gW1tbTlNEYXRlQ29t
cG9uZW50cyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGRhdGVDb21wb25lbnRzLmRh
eSA9IGRheTsKLSAgICBkYXRlQ29tcG9uZW50cy5tb250aCA9IG1vbnRoOwotICAgIGRhdGVDb21w
b25lbnRzLnllYXIgPSB5ZWFyOwotICAgIGRhdGVDb21wb25lbnRzLmVyYSA9IGVyYTsKLSAgICBk
YXRlQ29tcG9uZW50cy5jYWxlbmRhciA9IF9jYWxlbmRhci5nZXQoKTsKLSAgICByZXR1cm4gZGF0
ZUNvbXBvbmVudHM7CisgICAgYXV0byBkYXRlQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU0RhdGVD
b21wb25lbnRzIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGVDb21wb25lbnRzIHNldERheTpkYXld
OworICAgIFtkYXRlQ29tcG9uZW50cyBzZXRNb250aDptb250aF07CisgICAgW2RhdGVDb21wb25l
bnRzIHNldFllYXI6eWVhcl07CisgICAgW2RhdGVDb21wb25lbnRzIHNldEVyYTplcmFdOworICAg
IFtkYXRlQ29tcG9uZW50cyBzZXRDYWxlbmRhcjpfY2FsZW5kYXIuZ2V0KCldOworICAgIHJldHVy
biBkYXRlQ29tcG9uZW50cy5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9hZGp1c3REYXRl
VG9WYWxpZERhdGVJZk5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0KaW5kZXggYjI1OTlhZjZlOWY3ZTU5
ZWQ2ZDQ3MmQwNWRjM2MxN2E0ZTUwN2E2OC4uMzBhNDBhN2VjMDg2ODUxNTY1YzliNWQ5ZTdiOWZi
NjM0YTQ5ZWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tCkBAIC03OSwxMCArNzksMTAgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoT3B0aW9uSXRlbTooY29uc3QgT3B0aW9uSXRlbSYpaXRlbQogICAgIGlm
ICghKHNlbGYgPSBbc2VsZiBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU011
dGFibGVTdHJpbmcgKnRyaW1tZWRUZXh0ID0gW1tpdGVtLnRleHQgbXV0YWJsZUNvcHldIGF1dG9y
ZWxlYXNlXTsKLSAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYp
dHJpbW1lZFRleHQpOworICAgIGF1dG8gdHJpbW1lZFRleHQgPSBhZG9wdE5TKFtpdGVtLnRleHQg
bXV0YWJsZUNvcHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJp
bmdSZWYpdHJpbW1lZFRleHQuZ2V0KCkpOwogCi0gICAgW1tzZWxmIHRpdGxlTGFiZWxdIHNldFRl
eHQ6dHJpbW1lZFRleHRdOworICAgIFtbc2VsZiB0aXRsZUxhYmVsXSBzZXRUZXh0OnRyaW1tZWRU
ZXh0LmdldCgpXTsKICAgICBbc2VsZiBzZXRDaGVja2VkOml0ZW0uaXNTZWxlY3RlZF07CiAgICAg
W3NlbGYgc2V0RGlzYWJsZWQ6aXRlbS5kaXNhYmxlZF07CiAgICAgaWYgKF9kaXNhYmxlZCkKQEAg
LTEwNSwxMCArMTA1LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE9wdGlvbkl0ZW06KGNv
bnN0IE9wdGlvbkl0ZW0mKWl0ZW0KICAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdF0pKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNNdXRhYmxlU3RyaW5nICp0cmltbWVkVGV4dCA9IFtb
aXRlbS50ZXh0IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdUcmltV2hp
dGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWRUZXh0KTsKKyAgICBhdXRvIHRyaW1t
ZWRUZXh0ID0gYWRvcHROUyhbaXRlbS50ZXh0IG11dGFibGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdU
cmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWRUZXh0LmdldCgpKTsKIAot
ICAgIFtbc2VsZiB0aXRsZUxhYmVsXSBzZXRUZXh0OnRyaW1tZWRUZXh0XTsKKyAgICBbW3NlbGYg
dGl0bGVMYWJlbF0gc2V0VGV4dDp0cmltbWVkVGV4dC5nZXQoKV07CiAgICAgW3NlbGYgc2V0Q2hl
Y2tlZDpOT107CiAgICAgW1tzZWxmIHRpdGxlTGFiZWxdIHNldFRleHRDb2xvcjpbVUlDb2xvciBj
b2xvcldpdGhXaGl0ZTowLjAgYWxwaGE6R3JvdXBPcHRpb25UZXh0Q29sb3JBbHBoYV1dOwogICAg
IFtzZWxmIHNldERpc2FibGVkOllFU107CkBAIC0yMjMsMTQgKzIyMywxOCBAQCAtICh2b2lkKWxh
eW91dFN1YnZpZXdzCiAtIChVSVZpZXcgKilwaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNr
ZXJWaWV3IHZpZXdGb3JSb3c6KE5TSW50ZWdlcilyb3dJbmRleCBmb3JDb21wb25lbnQ6KE5TSW50
ZWdlciljb2x1bW5JbmRleCByZXVzaW5nVmlldzooVUlWaWV3ICopdmlldwogewogICAgIGF1dG8m
IGl0ZW0gPSBbX3ZpZXcgZm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zXVtyb3dJbmRleF07Ci0g
ICAgVUlQaWNrZXJDb250ZW50VmlldyAqcGlja2VySXRlbSA9IGl0ZW0uaXNHcm91cCA/IFtbW1dL
T3B0aW9uR3JvdXBQaWNrZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0gYXV0
b3JlbGVhc2VdIDogW1tbV0tPcHRpb25QaWNrZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0
ZW06aXRlbV0gYXV0b3JlbGVhc2VdOworICAgIFJldGFpblB0cjxXS09wdGlvblBpY2tlckNlbGw+
IHBpY2tlckl0ZW07CisgICAgaWYgKGl0ZW0uaXNHcm91cCkKKyAgICAgICAgcGlja2VySXRlbSA9
IGFkb3B0TlMoW1tXS09wdGlvbkdyb3VwUGlja2VyQ2VsbCBhbGxvY10gaW5pdFdpdGhPcHRpb25J
dGVtOml0ZW1dKTsKKyAgICBlbHNlCisgICAgICAgIHBpY2tlckl0ZW0gPSBhZG9wdE5TKFtbV0tP
cHRpb25QaWNrZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0pOwogCiAgICAg
Ly8gVGhlIGNlbGwgc3RhcnRzIG91dCB3aXRoIGEgbnVsbCBmcmFtZS4gV2UgbmVlZCB0byBzZXQg
aXRzIGZyYW1lIG5vdyBzbyB3ZSBjYW4gZmluZCB0aGUgcmlnaHQgZm9udCBzaXplLgogICAgIFVJ
VGFibGVWaWV3ICp0YWJsZSA9IFtwaWNrZXJWaWV3IHRhYmxlVmlld0ZvckNvbHVtbjowXTsKICAg
ICBDR1JlY3QgZnJhbWUgPSBbdGFibGUgcmVjdEZvclJvd0F0SW5kZXhQYXRoOltOU0luZGV4UGF0
aCBpbmRleFBhdGhGb3JSb3c6cm93SW5kZXggaW5TZWN0aW9uOjBdXTsKLSAgICBwaWNrZXJJdGVt
LmZyYW1lID0gZnJhbWU7CisgICAgW3BpY2tlckl0ZW0gc2V0RnJhbWU6ZnJhbWVdOwogCi0gICAg
VUlMYWJlbCAqdGl0bGVUZXh0TGFiZWwgPSBwaWNrZXJJdGVtLnRpdGxlTGFiZWw7CisgICAgVUlM
YWJlbCAqdGl0bGVUZXh0TGFiZWwgPSBbcGlja2VySXRlbSB0aXRsZUxhYmVsXTsKICAgICBmbG9h
dCB3aWR0aCA9IFtwaWNrZXJJdGVtIGxhYmVsV2lkdGhGb3JCb3VuZHM6Q0dSZWN0TWFrZSgwLCAw
LCBDR1JlY3RHZXRXaWR0aChmcmFtZSksIENHUmVjdEdldEhlaWdodChmcmFtZSkpXTsKICAgICBB
U1NFUlQod2lkdGggPiAwKTsKIApAQCAtMjQ2LDcgKzI1MCw3IEBAIC0gKFVJVmlldyAqKXBpY2tl
clZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgdmlld0ZvclJvdzooTlNJbnRlZ2VyKXJv
d0luZGV4CiAgICAgW3RpdGxlVGV4dExhYmVsIHNldE51bWJlck9mTGluZXM6Ml07CiAgICAgW3Rp
dGxlVGV4dExhYmVsIHNldFRleHRBbGlnbm1lbnQ6X3RleHRBbGlnbm1lbnRdOwogCi0gICAgcmV0
dXJuIHBpY2tlckl0ZW07CisgICAgcmV0dXJuIHBpY2tlckl0ZW0uYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoTlNJbnRlZ2VyKW51bWJlck9mQ29tcG9uZW50c0luUGlja2VyVmlldzooVUlQaWNrZXJW
aWV3ICopYVBpY2tlclZpZXcKQEAgLTQwNywxNCArNDExLDE0IEBAIC0gKE5TQXR0cmlidXRlZFN0
cmluZyAqKXBpY2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgYXR0cmlidXRlZFRp
dGxlRm9yCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBjb25zdCBPcHRpb25JdGVtJiBvcHRp
b24gPSBbX3ZpZXcgZm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zXVtyb3ddOwotICAgIE5TTXV0
YWJsZVN0cmluZyAqdHJpbW1lZFRleHQgPSBbW29wdGlvbi50ZXh0IG11dGFibGVDb3B5XSBhdXRv
cmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVm
KXRyaW1tZWRUZXh0KTsKKyAgICBhdXRvIHRyaW1tZWRUZXh0ID0gYWRvcHROUyhbb3B0aW9uLnRl
eHQgbXV0YWJsZUNvcHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVT
dHJpbmdSZWYpdHJpbW1lZFRleHQuZ2V0KCkpOwogCi0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6dHJpbW1lZFRleHRdOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0
cmluZzp0cmltbWVkVGV4dC5nZXQoKV0pOwogICAgIGlmIChvcHRpb24uZGlzYWJsZWQpCiAgICAg
ICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWUgdmFsdWU6W1VJQ29sb3IgY29sb3JXaXRoV2hpdGU6MC4wIGFscGhhOkRpc2FibGVk
T3B0aW9uQWxwaGFdIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0cmltbWVkVGV4dCBsZW5ndGhdKV07
CiAKLSAgICByZXR1cm4gW2F0dHJpYnV0ZWRTdHJpbmcgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhdHRyaWJ1dGVkU3RyaW5nLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpcGlja2VyVmll
dzooVUlQaWNrZXJWaWV3ICopcGlja2VyVmlldyBkaWRTZWxlY3RSb3c6KE5TSW50ZWdlcilyb3cg
aW5Db21wb25lbnQ6KE5TSW50ZWdlciljb21wb25lbnQKQEAgLTgzOSwzOSArODQzLDM5IEBAIC0g
KFVJVmlldyAqKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgdmlld0ZvckhlYWRl
ckluU2VjdGlvbjooTlNJbnRlZ2VyCiAgICAgaWYgKCFzZWN0aW9uKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgVUlWaWV3ICpzZWN0aW9uVmlldyA9IFtbW1VJVmlldyBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2VjdGlvblZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFs
bG9jXSBpbml0XSk7CiAKLSAgICBVSUxhYmVsICpzZWN0aW9uTGFiZWwgPSBbW1tVSUxhYmVsIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgc2VjdGlvbkxhYmVsLnRleHQgPSBbc2VsZiB0
YWJsZVZpZXc6dGFibGVWaWV3IHRpdGxlRm9ySGVhZGVySW5TZWN0aW9uOnNlY3Rpb25dOwotICAg
IHNlY3Rpb25MYWJlbC50ZXh0Q29sb3IgPSBVSUNvbG9yLmJsYWNrQ29sb3I7Ci0gICAgc2VjdGlv
bkxhYmVsLmZvbnQgPSBbVUlGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOnNlY3Rpb25IZWFkZXJG
b250U2l6ZV07Ci0gICAgc2VjdGlvbkxhYmVsLmFkanVzdHNGb250U2l6ZVRvRml0V2lkdGggPSBO
TzsKLSAgICBzZWN0aW9uTGFiZWwubGluZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlUcnVuY2F0
aW5nVGFpbDsKLSAgICBbc2VjdGlvblZpZXcgYWRkU3VidmlldzpzZWN0aW9uTGFiZWxdOworICAg
IGF1dG8gc2VjdGlvbkxhYmVsID0gYWRvcHROUyhbW1VJTGFiZWwgYWxsb2NdIGluaXRdKTsKKyAg
ICBbc2VjdGlvbkxhYmVsIHNldFRleHQ6W3NlbGYgdGFibGVWaWV3OnRhYmxlVmlldyB0aXRsZUZv
ckhlYWRlckluU2VjdGlvbjpzZWN0aW9uXV07CisgICAgW3NlY3Rpb25MYWJlbCBzZXRUZXh0Q29s
b3I6VUlDb2xvci5ibGFja0NvbG9yXTsKKyAgICBbc2VjdGlvbkxhYmVsIHNldEZvbnQ6W1VJRm9u
dCBib2xkU3lzdGVtRm9udE9mU2l6ZTpzZWN0aW9uSGVhZGVyRm9udFNpemVdXTsKKyAgICBbc2Vj
dGlvbkxhYmVsIHNldEFkanVzdHNGb250U2l6ZVRvRml0V2lkdGg6Tk9dOworICAgIFtzZWN0aW9u
TGFiZWwgc2V0TGluZUJyZWFrTW9kZTpOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWxdOworICAg
IFtzZWN0aW9uVmlldyBhZGRTdWJ2aWV3OnNlY3Rpb25MYWJlbC5nZXQoKV07CiAKLSAgICBzZWN0
aW9uTGFiZWwudHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsK
KyAgICBbc2VjdGlvbkxhYmVsIHNldFRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0
cmFpbnRzOk5PXTsKICAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6
QFsKLSAgICAgICAgW3NlY3Rpb25MYWJlbC5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRv
QW5jaG9yOnNlY3Rpb25WaWV3LmxlYWRpbmdBbmNob3IgY29uc3RhbnQ6c2VjdGlvbkhlYWRlck1h
cmdpbl0sCi0gICAgICAgIFtzZWN0aW9uTGFiZWwudG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRv
QW5jaG9yOnNlY3Rpb25WaWV3LnRvcEFuY2hvciBjb25zdGFudDowXSwKKyAgICAgICAgW1tzZWN0
aW9uTGFiZWwgbGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3NlY3Rpb25W
aWV3IGxlYWRpbmdBbmNob3JdIGNvbnN0YW50OnNlY3Rpb25IZWFkZXJNYXJnaW5dLAorICAgICAg
ICBbW3NlY3Rpb25MYWJlbCB0b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0
aW9uVmlldyB0b3BBbmNob3JdIGNvbnN0YW50OjBdLAogICAgIF1dOwogCi0gICAgVUlCdXR0b24g
KmNvbGxhcHNlQnV0dG9uID0gW1tbVUlCdXR0b24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
LSAgICBjb2xsYXBzZUJ1dHRvbi50YWcgPSBzZWN0aW9uOworICAgIGF1dG8gY29sbGFwc2VCdXR0
b24gPSBhZG9wdE5TKFtbVUlCdXR0b24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29sbGFwc2VCdXR0
b24gc2V0VGFnOnNlY3Rpb25dOwogICAgIFtjb2xsYXBzZUJ1dHRvbiBzZXRJbWFnZTpbVUlJbWFn
ZSBzeXN0ZW1JbWFnZU5hbWVkOkAiY2hldnJvbi5kb3duIiB3aXRoQ29uZmlndXJhdGlvbjpbVUlJ
bWFnZVN5bWJvbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbldpdGhQb2ludFNpemU6c2VjdGlv
bkhlYWRlckNvbGxhcHNlQnV0dG9uU2l6ZSB3ZWlnaHQ6VUlJbWFnZVN5bWJvbFdlaWdodFNlbWli
b2xkXV0gZm9yU3RhdGU6VUlDb250cm9sU3RhdGVOb3JtYWxdOwogICAgIFtjb2xsYXBzZUJ1dHRv
biBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGNvbGxhcHNlU2VjdGlvbjopIGZvckNv
bnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRUb3VjaFVwSW5zaWRlXTsKLSAgICBbc2VjdGlvblZp
ZXcgYWRkU3Vidmlldzpjb2xsYXBzZUJ1dHRvbl07CisgICAgW3NlY3Rpb25WaWV3IGFkZFN1YnZp
ZXc6Y29sbGFwc2VCdXR0b24uZ2V0KCldOwogCiAgICAgaWYgKFtfY29sbGFwc2VkU2VjdGlvbnMg
Y29udGFpbnNPYmplY3Q6QChzZWN0aW9uKV0pCi0gICAgICAgIGNvbGxhcHNlQnV0dG9uLnRyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVJvdGF0aW9uKC1NX1BJIC8gMik7CisgICAgICAg
IFtjb2xsYXBzZUJ1dHRvbiBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRp
b24oLU1fUEkgLyAyKV07CiAKLSAgICBjb2xsYXBzZUJ1dHRvbi50cmFuc2xhdGVzQXV0b3Jlc2l6
aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POworICAgIFtjb2xsYXBzZUJ1dHRvbiBzZXRUcmFu
c2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50czpOT107CiAgICAgW05TTGF5b3V0
Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAgIFtjb2xsYXBzZUJ1dHRv
bi50cmFpbGluZ0FuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpzZWN0aW9uVmlldy50cmFp
bGluZ0FuY2hvciBjb25zdGFudDotc2VjdGlvbkhlYWRlck1hcmdpbl0sCi0gICAgICAgIFtjb2xs
YXBzZUJ1dHRvbi50b3BBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6c2VjdGlvbkxhYmVs
LnRvcEFuY2hvciBjb25zdGFudDowXSwKLSAgICAgICAgW2NvbGxhcHNlQnV0dG9uLmJvdHRvbUFu
Y2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpzZWN0aW9uTGFiZWwuYm90dG9tQW5jaG9yIGNv
bnN0YW50OjBdLAorICAgICAgICBbW2NvbGxhcHNlQnV0dG9uIHRyYWlsaW5nQW5jaG9yXSBjb25z
dHJhaW50RXF1YWxUb0FuY2hvcjpbc2VjdGlvblZpZXcgdHJhaWxpbmdBbmNob3JdIGNvbnN0YW50
Oi1zZWN0aW9uSGVhZGVyTWFyZ2luXSwKKyAgICAgICAgW1tjb2xsYXBzZUJ1dHRvbiB0b3BBbmNo
b3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0aW9uTGFiZWwgdG9wQW5jaG9yXSBjb25z
dGFudDowXSwKKyAgICAgICAgW1tjb2xsYXBzZUJ1dHRvbiBib3R0b21BbmNob3JdIGNvbnN0cmFp
bnRFcXVhbFRvQW5jaG9yOltzZWN0aW9uTGFiZWwgYm90dG9tQW5jaG9yXSBjb25zdGFudDowXSwK
ICAgICBdXTsKIAotICAgIHJldHVybiBzZWN0aW9uVmlldzsKKyAgICByZXR1cm4gc2VjdGlvblZp
ZXcuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZCljb2xsYXBzZVNlY3Rpb246KFVJQnV0dG9u
ICopYnV0dG9uCkBAIC05MzksMzQgKzk0MywzNCBAQCAtIChPcHRpb25JdGVtICopb3B0aW9uSXRl
bUF0SW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAogCiAtIChVSVRhYmxlVmlld0Nl
bGwgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4
UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKIHsKLSAgICBVSVRhYmxlVmlld0NlbGwgKmNl
bGwgPSBbdGFibGVWaWV3IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpvcHRpb25D
ZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3RhYmxlVmll
dyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6b3B0aW9uQ2VsbFJldXNlSWRlbnRp
Zmllcl0pOwogICAgIGlmICghY2VsbCkKLSAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2Vs
bCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJ
ZGVudGlmaWVyOm9wdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgY2VsbCA9IGFkb3B0TlMoW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6
VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZhdWx0IHJldXNlSWRlbnRpZmllcjpvcHRpb25DZWxsUmV1
c2VJZGVudGlmaWVyXSk7CiAKICAgICBpZiAoX2NvbnRlbnRWaWV3LmZvY3VzZWRTZWxlY3RFbGVt
ZW50T3B0aW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2VsbC50ZXh0TGFiZWwuZW5hYmxlZCA9
IE5POwotICAgICAgICBjZWxsLnRleHRMYWJlbC50ZXh0ID0gV0VCX1VJX1NUUklOR19LRVkoIk5v
IE9wdGlvbnMiLCAiTm8gT3B0aW9ucyBTZWxlY3QgUG9wb3ZlciIsICJFbXB0eSBzZWxlY3QgbGlz
dCIpOwotICAgICAgICBjZWxsLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAg
Y2VsbC5pbWFnZVZpZXcuaW1hZ2UgPSBuaWw7Ci0gICAgICAgIHJldHVybiBjZWxsOworICAgICAg
ICBbY2VsbCB0ZXh0TGFiZWxdLmVuYWJsZWQgPSBOTzsKKyAgICAgICAgW2NlbGwgdGV4dExhYmVs
XS50ZXh0ID0gV0VCX1VJX1NUUklOR19LRVkoIk5vIE9wdGlvbnMiLCAiTm8gT3B0aW9ucyBTZWxl
Y3QgUG9wb3ZlciIsICJFbXB0eSBzZWxlY3QgbGlzdCIpOworICAgICAgICBbY2VsbCBzZXRVc2Vy
SW50ZXJhY3Rpb25FbmFibGVkOk5PXTsKKyAgICAgICAgW2NlbGwgaW1hZ2VWaWV3XS5pbWFnZSA9
IG5pbDsKKyAgICAgICAgcmV0dXJuIGNlbGwuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBh
dXRvIG9wdGlvbiA9IFtzZWxmIG9wdGlvbkl0ZW1BdEluZGV4UGF0aDppbmRleFBhdGhdOwogICAg
IGlmICghb3B0aW9uKQotICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAgICAgcmV0dXJuIGNlbGwu
YXV0b3JlbGVhc2UoKTsKIAotICAgIGNlbGwudGV4dExhYmVsLnRleHQgPSBvcHRpb24tPnRleHQ7
Ci0gICAgY2VsbC50ZXh0TGFiZWwuZW5hYmxlZCA9ICFvcHRpb24tPmRpc2FibGVkOwotICAgIGNl
bGwudXNlckludGVyYWN0aW9uRW5hYmxlZCA9ICFvcHRpb24tPmRpc2FibGVkOworICAgIFtjZWxs
IHRleHRMYWJlbF0udGV4dCA9IG9wdGlvbi0+dGV4dDsKKyAgICBbY2VsbCB0ZXh0TGFiZWxdLmVu
YWJsZWQgPSAhb3B0aW9uLT5kaXNhYmxlZDsKKyAgICBbY2VsbCBzZXRVc2VySW50ZXJhY3Rpb25F
bmFibGVkOiFvcHRpb24tPmRpc2FibGVkXTsKIAogICAgIGlmIChvcHRpb24tPmlzU2VsZWN0ZWQp
Ci0gICAgICAgIGNlbGwuaW1hZ2VWaWV3LmltYWdlID0gW1VJSW1hZ2Ugc3lzdGVtSW1hZ2VOYW1l
ZDpAImNoZWNrbWFyay5jaXJjbGUuZmlsbCJdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmlt
YWdlID0gW1VJSW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNoZWNrbWFyay5jaXJjbGUuZmlsbCJd
OwogICAgIGVsc2UgaWYgKG9wdGlvbi0+ZGlzYWJsZWQpCi0gICAgICAgIGNlbGwuaW1hZ2VWaWV3
LmltYWdlID0gW1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhU
aW50Q29sb3I6VUlDb2xvci5xdWF0ZXJuYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1h
Z2VSZW5kZXJpbmdNb2RlQWx3YXlzT3JpZ2luYWxdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXdd
LmltYWdlID0gW1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhU
aW50Q29sb3I6VUlDb2xvci5xdWF0ZXJuYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1h
Z2VSZW5kZXJpbmdNb2RlQWx3YXlzT3JpZ2luYWxdOwogICAgIGVsc2UKLSAgICAgICAgY2VsbC5p
bWFnZVZpZXcuaW1hZ2UgPSBbW1VJSW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNpcmNsZSJdIGlt
YWdlV2l0aFRpbnRDb2xvcjpVSUNvbG9yLnRlcnRpYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2Rl
OlVJSW1hZ2VSZW5kZXJpbmdNb2RlQWx3YXlzT3JpZ2luYWxdOworICAgICAgICBbY2VsbCBpbWFn
ZVZpZXddLmltYWdlID0gW1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFn
ZVdpdGhUaW50Q29sb3I6VUlDb2xvci50ZXJ0aWFyeUxhYmVsQ29sb3IgcmVuZGVyaW5nTW9kZTpV
SUltYWdlUmVuZGVyaW5nTW9kZUFsd2F5c09yaWdpbmFsXTsKIAotICAgIHJldHVybiBjZWxsOwor
ICAgIHJldHVybiBjZWxsLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpdGFibGVWaWV3OihV
SVRhYmxlVmlldyAqKXRhYmxlVmlldyBkaWRTZWxlY3RSb3dBdEluZGV4UGF0aDooTlNJbmRleFBh
dGggKilpbmRleFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KaW5kZXggOWE1YzA3NzUxMWZhMDM2ZjgyNzY2
OWFhM2ExNGNhNDVjNDJhZmJkNi4uYTVmY2I2M2NlOWI0NjAwN2RhMzgwNWRkZmIzZmJhZGE4ZmJi
ZWQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bVNlbGVjdFBvcG92ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KQEAgLTI1NSwyNiArMjU1LDI2IEBAIC0gKE9wdGlvbkl0
ZW0gKilmaW5kSXRlbUF0OihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAogCiAtIChVSVRhYmxlVmll
d0NlbGwgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdElu
ZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKIHsKLSAgICBVSVRhYmxlVmlld0NlbGwg
KmNlbGwgPSBbdGFibGVWaWV3IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpXS1Bv
cG92ZXJUYWJsZVZpZXdDZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRh
aW5QdHIoW3RhYmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6V0tQb3Bv
dmVyVGFibGVWaWV3Q2VsbFJldXNlSWRlbnRpZmllcl0pOwogICAgIGlmICghY2VsbCkKLSAgICAg
ICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxl
Vmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVyOldLUG9wb3ZlclRhYmxlVmlld0Nl
bGxSZXVzZUlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY2VsbCA9IGFkb3B0TlMo
W1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5
bGVEZWZhdWx0IHJldXNlSWRlbnRpZmllcjpXS1BvcG92ZXJUYWJsZVZpZXdDZWxsUmV1c2VJZGVu
dGlmaWVyXSk7CiAgICAgCi0gICAgY2VsbC5zZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgPSBzZWxm
LnZpZXcuc2VtYW50aWNDb250ZW50QXR0cmlidXRlOwotICAgIGNlbGwudGV4dExhYmVsLnRleHRB
bGlnbm1lbnQgPSBfdGV4dEFsaWdubWVudDsKKyAgICBbY2VsbCBzZXRTZW1hbnRpY0NvbnRlbnRB
dHRyaWJ1dGU6c2VsZi52aWV3LnNlbWFudGljQ29udGVudEF0dHJpYnV0ZV07CisgICAgW2NlbGwg
dGV4dExhYmVsXS50ZXh0QWxpZ25tZW50ID0gX3RleHRBbGlnbm1lbnQ7CiAgICAgCiAgICAgaWYg
KF9jb250ZW50Vmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnNlbGVjdE9wdGlvbnMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGNlbGwudGV4dExhYmVsLmVuYWJsZWQgPSBOTzsKLSAgICAgICAg
Y2VsbC50ZXh0TGFiZWwudGV4dCA9IFdFQl9VSV9TVFJJTkdfS0VZKCJObyBPcHRpb25zIiwgIk5v
IE9wdGlvbnMgU2VsZWN0IFBvcG92ZXIiLCAiRW1wdHkgc2VsZWN0IGxpc3QiKTsKLSAgICAgICAg
Y2VsbC5hY2Nlc3NvcnlUeXBlID0gVUlUYWJsZVZpZXdDZWxsQWNjZXNzb3J5Tm9uZTsKLSAgICAg
ICAgY2VsbC5zZWxlY3Rpb25TdHlsZSA9IFVJVGFibGVWaWV3Q2VsbFNlbGVjdGlvblN0eWxlTm9u
ZTsKLSAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgICAgIFtjZWxsIHRleHRMYWJlbF0uZW5hYmxl
ZCA9IE5POworICAgICAgICBbY2VsbCB0ZXh0TGFiZWxdLnRleHQgPSBXRUJfVUlfU1RSSU5HX0tF
WSgiTm8gT3B0aW9ucyIsICJObyBPcHRpb25zIFNlbGVjdCBQb3BvdmVyIiwgIkVtcHR5IHNlbGVj
dCBsaXN0Iik7CisgICAgICAgIFtjZWxsIHNldEFjY2Vzc29yeVR5cGU6VUlUYWJsZVZpZXdDZWxs
QWNjZXNzb3J5Tm9uZV07CisgICAgICAgIFtjZWxsIHNldFNlbGVjdGlvblN0eWxlOlVJVGFibGVW
aWV3Q2VsbFNlbGVjdGlvblN0eWxlTm9uZV07CisgICAgICAgIHJldHVybiBjZWxsLmF1dG9yZWxl
YXNlKCk7CiAgICAgfQogICAgIAogICAgIENHUmVjdCB0ZXh0UmVjdCA9IFtjZWxsIHRleHRSZWN0
Rm9yQ29udGVudFJlY3Q6W2NlbGwgY29udGVudFJlY3RGb3JCb3VuZHM6W2NlbGwgYm91bmRzXV1d
OwogICAgIEFTU0VSVF9JTVBMSUVTKENHUmVjdEdldFdpZHRoKHRhYmxlVmlldy5ib3VuZHMpID4g
MCwgdGV4dFJlY3Quc2l6ZS53aWR0aCA+IDApOwogICAgIAogICAgIC8vIEFzc3VtZSBhbGwgY2Vs
bHMgaGF2ZSB0aGUgc2FtZSBhdmFpbGFibGUgdGV4dCB3aWR0aC4KLSAgICBVSUZvbnQgKmZvbnQg
PSBjZWxsLnRleHRMYWJlbC5mb250OworICAgIFVJRm9udCAqZm9udCA9IFtjZWxsIHRleHRMYWJl
bF0uZm9udDsKICAgICBDR0Zsb2F0IGluaXRpYWxGb250U2l6ZSA9IGZvbnQucG9pbnRTaXplOwog
ICAgIEFTU0VSVChpbml0aWFsRm9udFNpemUpOwogICAgIGlmICh0ZXh0UmVjdC5zaXplLndpZHRo
ICE9IF9tYXhpbXVtVGV4dFdpZHRoIHx8IF9mb250U2l6ZSA9PSAwKSB7CkBAIC0yODUsMTEgKzI4
NSwxMSBAQCAtIChVSVRhYmxlVmlld0NlbGwgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFi
bGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4UGF0aDooTgogICAgIGNvbnN0IE9wdGlvbkl0ZW0qIGl0
ZW0gPSBbc2VsZiBmaW5kSXRlbUF0OmluZGV4UGF0aF07CiAgICAgQVNTRVJUKGl0ZW0pOwogICAg
IAotICAgIFtzZWxmIHBvcHVsYXRlQ2VsbDpjZWxsIHdpdGhJdGVtOippdGVtXTsKLSAgICBbY2Vs
bC50ZXh0TGFiZWwgc2V0Rm9udDpbZm9udCBmb250V2l0aFNpemU6X2ZvbnRTaXplXV07Ci0gICAg
W2NlbGwudGV4dExhYmVsIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVdvcmRXcmFwcGlu
Z107Ci0gICAgW2NlbGwudGV4dExhYmVsIHNldE51bWJlck9mTGluZXM6Ml07Ci0gICAgcmV0dXJu
IGNlbGw7CisgICAgW3NlbGYgcG9wdWxhdGVDZWxsOmNlbGwuZ2V0KCkgd2l0aEl0ZW06Kml0ZW1d
OworICAgIFtbY2VsbCB0ZXh0TGFiZWxdIHNldEZvbnQ6W2ZvbnQgZm9udFdpdGhTaXplOl9mb250
U2l6ZV1dOworICAgIFtbY2VsbCB0ZXh0TGFiZWxdIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJl
YWtCeVdvcmRXcmFwcGluZ107CisgICAgW1tjZWxsIHRleHRMYWJlbF0gc2V0TnVtYmVyT2ZMaW5l
czoyXTsKKyAgICByZXR1cm4gY2VsbC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXRhYmxl
VmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6KE5T
SW5kZXhQYXRoICopaW5kZXhQYXRoCkBAIC00MTMsNyArNDEzLDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgaGFzR3JvdXBzOihCT09MKWhhc0dy
b3VwcwogICAgICAgICBbcG9wb3ZlclZpZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRT
aXplOiBwb3BvdmVyU2l6ZV07CiAgICAgCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KLSAgICBzZWxmLnBvcG92ZXJDb250cm9sbGVyID0gW1tbVUlQb3BvdmVyQ29udHJv
bGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6cG9wb3ZlclZpZXdDb250
cm9sbGVyLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wb3BvdmVyQ29udHJvbGxlciA9
IGFkb3B0TlMoW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3
Q29udHJvbGxlcjpwb3BvdmVyVmlld0NvbnRyb2xsZXIuZ2V0KCldKS5nZXQoKTsKICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRf
QURESVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLTnVtYmVyUGFkVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S051bWJlclBhZFZpZXcubW0KaW5kZXggN2VjMjhhYzEwYjhjMGEzMDQwZmRiNDg1YzYzNzJmMTI5
ZTg4ZDc2My4uOTE3ZWFiNmU2MWQwMTUxMTY4ODE3MGJlMDYxMzI5NWNlZmQ5ODE5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3
Lm1tCkBAIC00MzAsMTMgKzQzMCwxMyBAQCBzdGF0aWMgV0tOdW1iZXJQYWRLZXkgYWx0ZXJuYXRl
S2V5QXRQb3NpdGlvbihXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uIHBvc2l0aW9uKQogCiAtIChX
S051bWJlclBhZEJ1dHRvbiAqKV9idXR0b25Gb3JQb3NpdGlvbjooV0tOdW1iZXJQYWRCdXR0b25Q
b3NpdGlvbilwb3NpdGlvbgogewotICAgIFdLTnVtYmVyUGFkQnV0dG9uICpidXR0b24gPSBbW1tX
S051bWJlclBhZEJ1dHRvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGJ1dHRvbi5k
ZWZhdWx0S2V5ID0gZGVmYXVsdEtleUF0UG9zaXRpb24ocG9zaXRpb24sIFtfY29udHJvbGxlciBp
bnB1dE1vZGVdKTsKLSAgICBidXR0b24uYWx0ZXJuYXRlS2V5ID0gYWx0ZXJuYXRlS2V5QXRQb3Np
dGlvbihwb3NpdGlvbik7Ci0gICAgYnV0dG9uLmJ1dHRvblBvc2l0aW9uID0gcG9zaXRpb247Ci0g
ICAgYnV0dG9uLnRpdGxlTGFiZWwuZm9udCA9IFtVSUZvbnQgc3lzdGVtRm9udE9mU2l6ZTpudW1i
ZXJQYWRMYWJlbEZvbnRTaXplKCkgd2VpZ2h0OlVJRm9udFdlaWdodFNlbWlib2xkIGRlc2lnbjoo
TlNTdHJpbmcgKilrQ1RGb250VUlGb250RGVzaWduUm91bmRlZF07Ci0gICAgYnV0dG9uLnVzZXJJ
bnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICByZXR1cm4gYnV0dG9uOworICAgIGF1dG8gYnV0
dG9uID0gYWRvcHROUyhbW1dLTnVtYmVyUGFkQnV0dG9uIGFsbG9jXSBpbml0XSk7CisgICAgW2J1
dHRvbiBzZXREZWZhdWx0S2V5OmRlZmF1bHRLZXlBdFBvc2l0aW9uKHBvc2l0aW9uLCBbX2NvbnRy
b2xsZXIgaW5wdXRNb2RlXSldOworICAgIFtidXR0b24gc2V0QWx0ZXJuYXRlS2V5OmFsdGVybmF0
ZUtleUF0UG9zaXRpb24ocG9zaXRpb24pXTsKKyAgICBbYnV0dG9uIHNldEJ1dHRvblBvc2l0aW9u
OnBvc2l0aW9uXTsKKyAgICBbYnV0dG9uIHRpdGxlTGFiZWxdLmZvbnQgPSBbVUlGb250IHN5c3Rl
bUZvbnRPZlNpemU6bnVtYmVyUGFkTGFiZWxGb250U2l6ZSgpIHdlaWdodDpVSUZvbnRXZWlnaHRT
ZW1pYm9sZCBkZXNpZ246KE5TU3RyaW5nICopa0NURm9udFVJRm9udERlc2lnblJvdW5kZWRdOwor
ICAgIFtidXR0b24gc2V0VXNlckludGVyYWN0aW9uRW5hYmxlZDpOT107CisgICAgcmV0dXJuIGJ1
dHRvbi5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9pbml0S2V5cGFkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZp
ZXdDb250cm9sbGVyLm1tCmluZGV4IGQzOTY5MjVmZjA5YjM2MjM1MmY1ZjIyYmM5MTEyZTc1MmQ5
ZDM0ZDUuLjE3NmU4YTg3ZjRiNTE3OTNjYjMyYTg5MzJjN2I4NGIxYzE2OWViMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJl
clBhZFZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgLSAodm9pZClfaGFuZGxl
S2V5UHJlc3M6KFdLTnVtYmVyUGFkS2V5KWtleQogICAgICAgICBbX2lucHV0VGV4dCBhcHBlbmRT
dHJpbmc6QCIrIl07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0tOdW1iZXJQYWRLZXlBY2Nl
cHQ6Ci0gICAgICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmQ6c2VsZiB0ZXh0RW50ZXJlZDpb
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl9pbnB1dFRleHQuZ2V0
KCldIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmQ6c2Vs
ZiB0ZXh0RW50ZXJlZDphZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpfaW5wdXRUZXh0LmdldCgpXSkuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBXS051bWJlclBhZEtleTA6CiAgICAgICAgIFtfaW5wdXRUZXh0IGFwcGVuZFN0cmluZzpA
IjAiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IGZlNzE0OTRm
ZGUwNzc0MTdkMGM4NGNhNDE2OGMzMTUxYjkyZjM3MTAuLmIzZTIwZmZkMTBhMjQ0OWYyMGQwNWMy
Y2M3YmYyY2QyNGY0NDQ1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5t
bQpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKFBVSUNBY3Rpb25Db250cm9sbGVyICopYWN0aW9uQ29u
dHJvbGxlcgogCiAgICAgUFVJQ0FjdGlvbkl0ZW0gKmxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRl
bSA9IFtzZWxmLmxhbmd1YWdlQ29udHJvbGxlciBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW1G
b3JWaWV3Q29udHJvbGxlcjpzZWxmXTsKICAgICBhdXRvIGFjdGlvbkdyb3VwID0gYWRvcHROUyhb
W1BVSUNBY3Rpb25Hcm91cCBhbGxvY10gaW5pdFdpdGhBY3Rpb25JdGVtczpAWyBsYW5ndWFnZVNl
bGVjdGlvbkFjdGlvbkl0ZW0gXSBhY3Rpb25TdHlsZTpQVUlDQWN0aW9uU3R5bGVBdXRvbWF0aWNd
KTsKLSAgICByZXR1cm4gW1tbUFVJQ0FjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0
aW9uR3JvdXA6YWN0aW9uR3JvdXAuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRv
cHROUyhbW1BVSUNBY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGlvbkdyb3VwOmFj
dGlvbkdyb3VwLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5k
ZXggMjIzNzVmOTRhZTJiODE4ZTMyYTc4MGY2ZTUyNzJlOWY2NjgzODgyYy4uMGExOTBkMjhlMmNj
YTBiZWM4MWIwMDE5MzA3MzU0OGY2OTZiZTdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5tbQpAQCAtOTcsNyArOTcsNyBAQCAtICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9u
cwogCiAtICh2b2lkKWVudGVyVGV4dDooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgW3NlbGYuZGVs
ZWdhdGUgcXVpY2tib2FyZDpzZWxmIHRleHRFbnRlcmVkOltbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbc2VsZi5kZWxl
Z2F0ZSBxdWlja2JvYXJkOnNlbGYgdGV4dEVudGVyZWQ6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dF0pLmdldCgpXTsKIH0KIAogI3ByYWdtYSBt
YXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggNmY3MTliMGI3ZWI1YTMwYzJjOWZjZjJiMzNiMTA0
YTZiMWMyZTRmNS4uMDMzY2VlZmZiMzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVmYzQ2YzExMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC01NDks
NyArNTQ5LDcgQEAgLSAodm9pZCllbnRlckZ1bGxTY3JlZW4KICAgICBbX3dpbmRvdyBzZXRIaWRk
ZW46Tk9dOwogCiAgICAgX3Jvb3RWaWV3Q29udHJvbGxlciA9IFtbVUlWaWV3Q29udHJvbGxlciBh
bGxvY10gaW5pdF07Ci0gICAgX3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3ID0gW1tbVUlW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOl93aW5kb3cuZ2V0KCkuYm91bmRzXSBhdXRvcmVsZWFz
ZV07CisgICAgX3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3ID0gYWRvcHROUyhbW1VJVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpfd2luZG93LmdldCgpLmJvdW5kc10pLmdldCgpOwogICAg
IF9yb290Vmlld0NvbnRyb2xsZXIuZ2V0KCkudmlldy5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xv
ciBjbGVhckNvbG9yXTsKICAgICBfcm9vdFZpZXdDb250cm9sbGVyLmdldCgpLnZpZXcuYXV0b3Jl
c2l6aW5nTWFzayA9IChVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0
b3Jlc2l6aW5nRmxleGlibGVIZWlnaHQpOwogICAgIFtfcm9vdFZpZXdDb250cm9sbGVyIHNldE1v
ZGFsUHJlc2VudGF0aW9uU3R5bGU6VUlNb2RhbFByZXNlbnRhdGlvbkN1c3RvbV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5tbQppbmRleCBiMjRkNDk3MmVjOWZkNGVhZDVhZjIxMTZmZjgyMDU3Yjc4ZGM3Nzhk
Li45YmFhOGJlMjRjNzdjNzQ2ZTc5M2Y0MTM3OGRjZDAwYjNjZjRjNGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCAtIChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0
Pilfd2ViSGl0VGVzdFJlc3VsdAogLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29u
dHJvbGxlcj4pX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyCiB7CiAgICAgaWYgKF9jb250ZW50
UHJldmVudHNEZWZhdWx0KQotICAgICAgICByZXR1cm4gW1tbV0tBbmltYXRpb25Db250cm9sbGVy
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tB
bmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJl
ZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBbc2VsZiBfd2ViSGl0VGVz
dFJlc3VsdF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDBmODZhNTZlYWFhNDA4NGVlN2Jj
ZjlkYzhkOGM2ZDAzMzM1ZDRmYjAuLjliODFlYmNiNTAwYjdiZGE4NGVhMjAxNzY0MzBjOTU2NzRm
Y2Q0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
VGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKEJPT0wp
X2ludGVycHJldEtleUV2ZW50OihOU0V2ZW50ICopZXZlbnQgdXNpbmdMZWdhY3lDb2NvYVRleHRJ
bnB1dDooQk9PTCl1c2luCiAKICAgICAgICAgTlNTdHJpbmcgKnRleHQgPSBbW19pbnB1dFRleHRW
aWV3IHRleHRTdG9yYWdlXSBzdHJpbmddOwogICAgICAgICBpZiAoW3RleHQgbGVuZ3RoXSA+IDAp
Ci0gICAgICAgICAgICAqc3RyaW5nID0gW1t0ZXh0IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgICAgICpzdHJpbmcgPSBhZG9wdE5TKFt0ZXh0IGNvcHldKS5hdXRvcmVsZWFzZSgpOwogICAg
IH0KICAgICAgICAgICAgIAogICAgIFtfaW5wdXRUZXh0VmlldyBzZXRTdHJpbmc6QCIiXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVn
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5t
bQppbmRleCBlYjBiYWIzMDExMjlmYTA4M2U5YTE2ZGU2MmNlY2U2MDBkMDEzZDg0Li41MzEyNDIz
YjMxZjRkODdlZTE2ZTFhNmQ1ZTEzM2QwMjFlZGEyMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVmlld0xheW91dFN0cmF0ZWd5Lm1tCkBAIC00OSwyNyArNDks
MjcgQEAgQGltcGxlbWVudGF0aW9uIFdLVmlld0xheW91dFN0cmF0ZWd5CiAKICsgKGluc3RhbmNl
dHlwZSlsYXlvdXRTdHJhdGVneVdpdGhQYWdlOihOYWtlZFJlZjxXZWJLaXQ6OldlYlBhZ2VQcm94
eT4pcGFnZSB2aWV3OihOU1ZpZXcgKil2aWV3IHZpZXdJbXBsOihOYWtlZFJlZjxXZWJLaXQ6Oldl
YlZpZXdJbXBsPil3ZWJWaWV3SW1wbCBtb2RlOihXS0xheW91dE1vZGUpbW9kZQogewotICAgIFdL
Vmlld0xheW91dFN0cmF0ZWd5ICpzdHJhdGVneTsKKyAgICBSZXRhaW5QdHI8V0tWaWV3TGF5b3V0
U3RyYXRlZ3k+IHN0cmF0ZWd5OwogCiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBrV0tM
YXlvdXRNb2RlRml4ZWRTaXplOgotICAgICAgICBzdHJhdGVneSA9IFtbV0tWaWV3Rml4ZWRTaXpl
TGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZp
ZXcgdmlld0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0
cmF0ZWd5ID0gYWRvcHROUyhbW1dLVmlld0ZpeGVkU2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBp
bml0V2l0aFBhZ2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBs
LmNvcHlSZWYoKSBtb2RlOm1vZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlv
dXRNb2RlRHluYW1pY1NpemVDb21wdXRlZEZyb21WaWV3U2NhbGU6Ci0gICAgICAgIHN0cmF0ZWd5
ID0gW1tXS1ZpZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0ZWd5
IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndl
YlZpZXdJbXBsLmNvcHlSZWYoKSBtb2RlOm1vZGVdOworICAgICAgICBzdHJhdGVneSA9IGFkb3B0
TlMoW1tXS1ZpZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0ZWd5
IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndl
YlZpZXdJbXBsLmNvcHlSZWYoKSBtb2RlOm1vZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBrV0tMYXlvdXRNb2RlRHluYW1pY1NpemVDb21wdXRlZEZyb21NaW5pbXVtRG9jdW1lbnRTaXpl
OgotICAgICAgICBzdHJhdGVneSA9IFtbV0tWaWV3RHluYW1pY1NpemVDb21wdXRlZEZyb21NaW5p
bXVtRG9jdW1lbnRTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNv
cHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9k
ZV07CisgICAgICAgIHN0cmF0ZWd5ID0gYWRvcHROUyhbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0
ZWRGcm9tTWluaW11bURvY3VtZW50U2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBh
Z2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYo
KSBtb2RlOm1vZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlVmll
d1NpemU6CiAgICAgZGVmYXVsdDoKLSAgICAgICAgc3RyYXRlZ3kgPSBbW1dLVmlld1ZpZXdTaXpl
TGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZp
ZXcgdmlld0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0
cmF0ZWd5ID0gYWRvcHROUyhbW1dLVmlld1ZpZXdTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGlu
aXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwu
Y29weVJlZigpIG1vZGU6bW9kZV0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBbc3Ry
YXRlZ3kgdXBkYXRlTGF5b3V0XTsKIAotICAgIHJldHVybiBbc3RyYXRlZ3kgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBzdHJhdGVneS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYWdlOihOYWtlZFJlZjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pcGFnZSB2aWV3
OihOU1ZpZXcgKil2aWV3IHZpZXdJbXBsOihOYWtlZFJlZjxXZWJLaXQ6OldlYlZpZXdJbXBsPil3
ZWJWaWV3SW1wbCBtb2RlOihXS0xheW91dE1vZGUpbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCmluZGV4IDg2YTZmNDY4YzQ2ZmQ4MWI4
ZTAyNzc5NzNlYTJmYmVjNzIyZjFjNTAuLjM5NzFiYWUxM2Y0NGZjMjRmM2I4MjgwYTg5OTZhZGI5
NzMyZDY2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xv
clBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQ
aWNrZXJNYWMubW0KQEAgLTIzMywxNCArMjMzLDE0IEBAIC0gKHZvaWQpc2V0QW5kU2hvd1BpY2tl
cjooV2ViS2l0OjpXZWJDb2xvclBpY2tlck1hYyopcGlja2VyIHdpdGhDb2xvcjooTlNDb2xvciAq
CiAgICAgW19wb3BvdmVyV2VsbCBzZXRBY3Rpb246QHNlbGVjdG9yKGRpZENob29zZUNvbG9yOild
OwogICAgIFtfcG9wb3ZlcldlbGwgc2V0Q29sb3I6Y29sb3JdOwogCi0gICAgTlNDb2xvckxpc3Qg
KnN1Z2dlc3RlZENvbG9ycyA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNDb2xvckxpc3Q+IHN1Z2dl
c3RlZENvbG9yczsKICAgICBpZiAoc3VnZ2VzdGlvbnMuc2l6ZSgpKSB7Ci0gICAgICAgIHN1Z2dl
c3RlZENvbG9ycyA9IFtbW05TQ29sb3JMaXN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIHN1Z2dlc3RlZENvbG9ycyA9IGFkb3B0TlMoW1tOU0NvbG9yTGlzdCBhbGxvY10gaW5p
dF0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKHN1Z2dlc3Rpb25z
LnNpemUoKSwgbWF4Q29sb3JTdWdnZXN0aW9ucyk7IGkrKykKICAgICAgICAgICAgIFtzdWdnZXN0
ZWRDb2xvcnMgaW5zZXJ0Q29sb3I6bnNDb2xvcihzdWdnZXN0aW9ucy5hdChpKSkga2V5OkAoaSku
c3RyaW5nVmFsdWUgYXRJbmRleDppXTsKICAgICB9CiAKLSAgICBbX3BvcG92ZXJXZWxsIHNldFN1
Z2dlc3RlZENvbG9yczpzdWdnZXN0ZWRDb2xvcnNdOworICAgIFtfcG9wb3ZlcldlbGwgc2V0U3Vn
Z2VzdGVkQ29sb3JzOnN1Z2dlc3RlZENvbG9ycy5nZXQoKV07CiAgICAgW19wb3BvdmVyV2VsbCBf
c2hvd1BvcG92ZXJdOwogCiAgICAgW1tOU0NvbG9yUGFuZWwgc2hhcmVkQ29sb3JQYW5lbF0gc2V0
RGVsZWdhdGU6c2VsZl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRleCBlOTA1
YTExYjE0OWQ2YThhOTMyZTY5ZWQ3MzAwMTU2OTY3MGFmZDhlLi40ZDA5M2JhY2Y3NWYyOWU5NGMw
OWM4NzM0NTU0ZWM1ZDM1NWFkY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0K
QEAgLTQ5NCwyMyArNDk0LDIzIEBAIC0gKENHRmxvYXQpdGFibGVWaWV3OihOU1RhYmxlVmlldyAq
KXRhYmxlVmlldyBoZWlnaHRPZlJvdzooTlNJbnRlZ2VyKXJvdwogCiAtIChOU1RhYmxlUm93Vmll
dyAqKXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgcm93Vmlld0ZvclJvdzooTlNJ
bnRlZ2VyKXJvdwogewotICAgIHJldHVybiBbW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93
VmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tE
YXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVJvd1ZpZXcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1ZpZXcgKil0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHZp
ZXdGb3JUYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJbnRl
Z2VyKXJvdwogewotICAgIFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyAqcmVzdWx0ID0gW3RhYmxl
VmlldyBtYWtlVmlld1dpdGhJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVy
IG93bmVyOnNlbGZdOworICAgIGF1dG8gcmVzdWx0ID0gcmV0YWluUHRyKFt0YWJsZVZpZXcgbWFr
ZVZpZXdXaXRoSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciBvd25lcjpz
ZWxmXSk7CiAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tXS0RhdGFM
aXN0U3VnZ2VzdGlvblZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmVz
dWx0ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdF0pOwog
ICAgICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZp
ZXJdOwogICAgIH0KIAogICAgIGF1dG8mIHN1Z2dlc3Rpb24gPSBfc3VnZ2VzdGlvbnMuYXQocm93
KTsKLSAgICByZXN1bHQuc2hvdWxkU2hvd0JvdHRvbURpdmlkZXIgPSBfc2hvd0RpdmlkZXJzQmV0
d2VlbkNlbGxzICYmIHJvdyA8IHN0YXRpY19jYXN0PE5TSW50ZWdlcj4oX3N1Z2dlc3Rpb25zLnNp
emUoKSAtIDEpOworICAgIFtyZXN1bHQgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6X3Nob3dE
aXZpZGVyc0JldHdlZW5DZWxscyAmJiByb3cgPCBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KF9zdWdn
ZXN0aW9ucy5zaXplKCkgLSAxKV07CiAgICAgW3Jlc3VsdCBzZXRWYWx1ZTpzdWdnZXN0aW9uLnZh
bHVlIGxhYmVsOnN1Z2dlc3Rpb24ubGFiZWxdOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IDMwNDcxMjc2ZjQ0MWY5
NWNhY2YzMmIwN2RmYjk1OTc3NmRhYzhiNTkuLjFkM2IxZmE3MzI1YTVmMzIzNWQ1ZmU4NjJmMTQz
YTkwMzA5ZTI4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZS5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKEJPT0wpX2hhc0N1c3RvbUNvbnRl
bnRQcm92aWRlcgogCiAtIChOU0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KIHsKLSAgICByZXR1
cm4gW1soTlNBcnJheSAqKV9mcmFtZS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFp
bigpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoKE5TQXJyYXkg
KilfZnJhbWUtPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoU2VjVHJ1c3RSZWYpX3NlcnZlclRydXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggOWIw
OTRiZWQwNTgxYmZlYjUyZWY2YjIxMjkwNzA1ODAyOTU0YTNiYS4uY2YyM2E0NDk3Y2ZhOGMyMmI1
MzQ5ZjA0ZTZkMDk4MzkyYmUwMjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtNzEsOSArNzEsOSBAQCAtIChD
b2NvYUltYWdlICopcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOihXS1NuYXBzaG90T3B0aW9ucylv
cHRpb25zIHdpZHRoOihOU051bQogICAgICAgICByZXR1cm4gbmlsOwogCiAjaWYgVVNFKEFQUEtJ
VCkKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5i
aXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0gYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmlt
YWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9y
ZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFn
ZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2UoKS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggOTVkMWMwN2FiMmNjYjY1
NWQ2ZDdiMWZlMzI1Y2M1OWUwODNiZWRjNy4uZjBiNTA5NzZkYTRkZWU0NTVlZjI5M2QxZmMxZWQw
ZmM4NTc2ZjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCkBAIC04NSw3ICs4
NSw3IEBAIC0gKFdLRE9NTm9kZSAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNT
dHJpbmcgKil0ZXh0CiAKIC0gKGlkKXBhcnNlcllpZWxkVG9rZW4KIHsKLSAgICByZXR1cm4gW1tb
V0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4gYWxsb2NdIGluaXRXaXRoRG9jdW1lbnQ6ZG93
bmNhc3Q8V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW1dLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuIGFsbG9jXSBpbml0V2l0
aERvY3VtZW50OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpXSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQppbmRleCA2
M2NkZDJiYzJiYzRiNzk4YjU4NzcwYjQzMWYzYTE2NGQ5YzBkYWNmLi4yNDg2N2RmMzYxYTJkZDlm
OTMxYzcwYTE3YWNlOTA1MDBiZDdlZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFs
cy5tbQpAQCAtMTU0LDExICsxNTQsMTEgQEAgc3RhdGljIFdLRE9NVHlwZSB0b1dLRE9NVHlwZShX
ZWJDb3JlVHlwZSBpbXBsLCBET01DYWNoZTxXZWJDb3JlVHlwZSwgV0tET01UeXBlPiYKICAgICBp
ZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKFdLRE9NVHlwZSB3cmFwcGVy
ID0gY2FjaGUuZ2V0KGltcGwpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIFdLRE9NVHlwZSB3cmFwcGVyID0gaW5pdFdpdGhJbXBsKGltcGwpOwor
ICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhpbml0V2l0aEltcGwoaW1wbCkpOwogICAgIGlmICghd3JhcHBl
cikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggM2NhZDJjNWU4MTBiZjRiYjY1
M2E0ZDQ5NTZjMDcxZDVlODJlYTg3Zi4uOTBiZDAxMTg0NDg4MWU1NWQ4MTZhN2YxZWUxMzc4MTAz
ZjUyYTMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAg
LSAoV0tET01SYW5nZSAqKXJhbmdlQnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVy
czooTlNVSW50ZWdlciljaGFyYWN0ZXIKIHsKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJh
bmdlKCpfaW1wbCk7CiAgICAgYXV0byBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3Rl
cnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
ZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8gcmFuZ2UuZW5kIDogcmFu
Z2Uuc3RhcnQpLCBjaGFyYWN0ZXJzLCBkaXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZv
cndhcmQgPyBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgOiBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKLSAgICByZXR1cm4gW1tbV0tET01SYW5nZSBh
bGxvY10gX2luaXRXaXRoSW1wbDpjcmVhdGVMaXZlUmFuZ2UobmV3UmFuZ2UpLmdldCgpXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdp
dGhJbXBsOmNyZWF0ZUxpdmVSYW5nZShuZXdSYW5nZSkuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMmE0ZjgwZmFl
OGExYWUzZmEwNDgxNGU5MmZmZTk4MTRjNjEyNTBmZS4uYzEwNmE2Mjk1YWU5OWNjNmE4Y2M2NDhi
MDhlZWExNzc4NmRhZDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
NDIzLDcgKzQyMyw3IEBAIC0gKFdLQnVuZGxlUGFnZVJlZilfYnVuZGxlUGFnZVJlZgogCiAtIChX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqKWhhbmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZToqX3BhZ2VdIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBf
aW5pdFdpdGhQYWdlOipfcGFnZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlw
ZSlsb29rVXBCcm93c2luZ0NvbnRleHRGcm9tSGFuZGxlOihXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSAqKWhhbmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQppbmRleCAxYzI3Y2E4MDkyMjZhMzE3ZGQ4YjA5ZmNkNWE2OThlODFjNjNl
YTI4Li4wYTQ0NDBkZmE1ZjQ3MGE0ZDc2ZThlYzJhNWM5Njc5ZDI4OTM5M2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MTA3LDE2ICsxMDcsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0KiBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBbW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBtb2NrQWNjZXNzaWJp
bGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxv
Y10gaW5pdF0pOwogCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNz
LgogICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwog
ICAgIC8vIEZJWE1FOiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGRvZXNuJ3QgcmVzcG9u
ZCB0byAtYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOi4KICAgICAv
LyBFaXRoZXIgaXQgbmVlZHMgdG8gb3IgdGhpcyBjYWxsIHNob3VsZCBiZSByZW1vdmVkLgogICAg
IGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAg
ICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVy
UHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKKyAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBp
ZF07CiAgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAg
IG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50Owor
ICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQpOwogCiAgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNz
aWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRl
eCA4ZmZiYzIyMTQ4YjcwODY2ZWNmZTIwNDNjZjA4YTNhMDZjZDlmMTgyLi5kODdkMWY5YzFkNTJk
MGQ2ZjlkNGY0YjU1OTY3MGRkOTM2MTE2MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBA
IC01NiwxMCArNTYsMTAgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpc2libGVQb3NpdGlvbiAoSW50
ZXJuYWwpCiAKICsgKFdlYlZpc2libGVQb3NpdGlvbiAqKV93cmFwVmlzaWJsZVBvc2l0aW9uOihW
aXNpYmxlUG9zaXRpb24pdmlzaWJsZVBvc2l0aW9uCiB7Ci0gICAgV2ViVmlzaWJsZVBvc2l0aW9u
ICp2cCA9IFtbV2ViVmlzaWJsZVBvc2l0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHZwID0g
YWRvcHROUyhbW1dlYlZpc2libGVQb3NpdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFZpc2libGVQ
b3NpdGlvbiAqY29weSA9IG5ldyBWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKICAg
ICB2cC0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxXZWJPYmplY3RJbnRlcm5hbCAqPihj
b3B5KTsKLSAgICByZXR1cm4gW3ZwIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gdnAuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLy8gUmV0dXJucyBuaWwgaWYgdmlzaWJsZSBwb3NpdGlvbiBpcyBudWxs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CmluZGV4IDhhZTMyYWE0ZTFiN2I1ZDIyNDVmOGJlODQ0NGZmZTEwNTBmZDEyZTguLmFkNTMwMTI1
Y2IyZmZmZmQzMDNmNjM4NGJlZjQ2ZmRjZGM4YmVmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTI4NywxNiArMjg3LDE2IEBA
IC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKICAgICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKnRpdGxlID0gbmlsOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gdGl0bGU7CiAKICAgICBDR1BERkRpY3Rpb25hcnlSZWYgaW5mbyA9IENHUERGRG9j
dW1lbnRHZXRJbmZvKF9QREZEb2N1bWVudCk7CiAgICAgQ0dQREZTdHJpbmdSZWYgdmFsdWU7CiAg
ICAgaWYgKENHUERGRGljdGlvbmFyeUdldFN0cmluZyhpbmZvLCAiVGl0bGUiLCAmdmFsdWUpKQot
ICAgICAgICB0aXRsZSA9IFsoTlNTdHJpbmcgKilDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZh
bHVlKSBhdXRvcmVsZWFzZV07CisgICAgICAgIHRpdGxlID0gYWRvcHRDRihDR1BERlN0cmluZ0Nv
cHlUZXh0U3RyaW5nKHZhbHVlKSk7CiAKLSAgICBpZiAoW3RpdGxlIGxlbmd0aF0pIHsKLSAgICAg
ICAgX3RpdGxlID0gYWRvcHROUyhbdGl0bGUgY29weV0pOwotICAgICAgICBjb3JlKFtzZWxmIF9m
cmFtZV0pLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxl
LCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CisgICAgaWYgKHRpdGxlICYmIENGU3RyaW5nR2V0TGVu
Z3RoKHRpdGxlLmdldCgpKSkgeworICAgICAgICBfdGl0bGUgPSBhZG9wdE5TKFsoTlNTdHJpbmcg
Kil0aXRsZS5nZXQoKSBjb3B5XSk7CisgICAgICAgIGNvcmUoW3NlbGYgX2ZyYW1lXSktPmxvYWRl
cigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUuYnJpZGdpbmdBdXRv
cmVsZWFzZSgpLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTS5tbQppbmRleCA4NWEyZmRiNjcxYzJkMjY2Yjg1YzFmYTJjOTQ5ZWJlMDRm
M2I0ZjBlLi4xNmU3N2U4MTIwNzM0N2RhNzgzY2FjZGMwODg5ZGU2NDJlODgzZTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTc4NCwxMyArNzg0LDEzIEBAIERPTU5vZGVGaWx0
ZXIgKmtpdChXZWJDb3JlOjpOb2RlRmlsdGVyKiBpbXBsKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIAogICAgIGlmIChET01Ob2RlRmlsdGVyICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcihpbXBs
KSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOwogICAgIAotICAgIERP
TU5vZGVGaWx0ZXIgKndyYXBwZXIgPSBbW0RPTU5vZGVGaWx0ZXIgYWxsb2NdIF9pbml0XTsKKyAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NTm9kZUZpbHRlciBhbGxvY10gX2luaXRdKTsK
ICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCBpbXBsKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdy
YXBwZXIod3JhcHBlci5nZXQoKSwgaW1wbCk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVh
c2UoKTsKIH0KIAogV2ViQ29yZTo6Tm9kZUZpbHRlciogY29yZShET01Ob2RlRmlsdGVyICp3cmFw
cGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0K
aW5kZXggYmVlMWZjNjA2NTE3Y2ViNjZkNTliYjU4YjNiN2MyM2RmMTM0ZmMwZC4uOGJkNjdmNzIw
MmRkNDE0ZmJlNGNkZTFhODliN2MwNTgzNjQzNzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCkBAIC04NywxMSArODcsMTEgQEAgRE9NQWJz
dHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2luZG93KiB2YWx1ZSkKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01BYnN0cmFjdFZpZXcgKndyYXBwZXIg
PSBnZXRET01XcmFwcGVyKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKLSAgICBET01BYnN0cmFjdFZpZXcgKndyYXBwZXIgPSBbW0RPTUFic3Ry
YWN0VmlldyBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIp
LmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUFic3RyYWN0
VmlldyBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJl
dF9jYXN0PERPTU9iamVjdEludGVybmFsKj4oZnJhbWUpOwotICAgIGFkZERPTVdyYXBwZXIod3Jh
cHBlciwgZnJhbWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRk
RE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCBmcmFtZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0
b3JlbGVhc2UoKTsKIH0KIAogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RE
T01XaW5kb3cqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUJsb2IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQppbmRl
eCA5ZDg5YjljNTljOTE2YzFhN2RlMmVkYTE3MDZjNTZjMWZlYjY1NzBhLi4yMzZhNTAxYWI2MDQ3
YmI2NmM3N2RjMTk5ODk2ZDYzNzI2MDBiNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQmxvYi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQmxvYi5tbQpAQCAtNzAsMTIgKzcwLDEyIEBAIERPTUJsb2IgKmtpdChXZWJDb3JlOjpCbG9i
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChE
T01CbG9iICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBb
W3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NQmxvYiAqd3JhcHBlciA9IFtb
RE9NQmxvYiBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIp
LmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUJsb2IgYWxs
b2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxE
T01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9N
V3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNl
XTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4g
d3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQppbmRleCAyNzljNWU4ZDlmZmE4NDQwYzExYzdlNmYy
YjFmMTY2M2I2N2RhOGQ5Li5hN2U2ODkwMGE5ODA1YjBkODA2NDdjOTE4ZjIzZTdiMTNiOWZjMGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQpAQCAtOTEsMTQg
KzkxLDE0IEBAIERPTUNTU1J1bGUgKmtpdChXZWJDb3JlOjpDU1NSdWxlKiB2YWx1ZSkKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01DU1NSdWxlICp3cmFw
cGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0
YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NQ1NTUnVsZSAqd3JhcHBlciA9IFtba2l0Q2xhc3Mo
dmFsdWUpIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlciku
YXV0b3JlbGVhc2UoKTsKKyAgICBSZXRhaW5QdHI8RE9NQ1NTUnVsZT4gd3JhcHBlciA9IGFkb3B0
TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XSk7CiAgICAgaWYgKCF3cmFwcGVyKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRv
cmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAg
cmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlTGlzdC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlTGlzdC5tbQppbmRleCA5NmJkYzVmMDM2
NTc3ODkyNTE5YWI2MTZmMWEyYzBiOWE1MTI1YjRjLi4xNGZjZTA0MTNjOTgxNGU1M2QwN2ZhMjMw
MjNmYzgwMWIxMDU1ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTUnVsZUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1J1bGVMaXN0Lm1tCkBAIC03MiwxMiArNzIsMTIgQEAgRE9NQ1NTUnVsZUxpc3QgKmtpdChXZWJD
b3JlOjpDU1NSdWxlTGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBpZiAoRE9NQ1NTUnVsZUxpc3QgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICBET01DU1NSdWxlTGlzdCAqd3JhcHBlciA9IFtbRE9NQ1NTUnVsZUxpc3QgYWxsb2NdIF9pbml0
XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01DU1NSdWxlTGlzdCBhbGxvY10gX2luaXRdKTsK
ICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERP
TVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCmluZGV4IDg3YTMxMzBjODkwNDk0
MzliNDcxYWE5MjU5YWU3YTkzZDc0ZWFiYmUuLjE4NDA5NzllMTY3MTZmZDU0ZGQ2M2I2MzFmMTBh
M2U5NjBmNDFiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NTdHlsZURlY2xhcmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCkBAIC0xNDksMTIgKzE0OSwxMiBAQCBET01DU1NTdHls
ZURlY2xhcmF0aW9uICpraXQoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogdmFsdWUpCiAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1
cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKndyYXBwZXIgPSBbW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gYWxsb2NdIF9pbml0XTsK
KyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01DU1NTdHlsZURlY2xhcmF0aW9uIGFsbG9jXSBfaW5p
dF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIo
d3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIu
YXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NWYWx1ZS5tbQppbmRleCBmZWIxMjQzMDQ1M2NiZDllODU5NjBlNmFiNjE1MWMx
NDBmZWUxY2Y1Li5hZTI5NjljYjI3MDIzN2YzMDkwYmY5MmQyMmZiMjM5NDc0ZGMxMjc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCkBAIC03NiwxNCArNzYs
MTQgQEAgRE9NQ1NTVmFsdWUgKmtpdChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSogdmFs
dWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ1NT
VmFsdWUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01DU1NWYWx1ZSAqd3JhcHBlciA9
IFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5Q
dHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBSZXRhaW5QdHI8RE9NQ1NTVmFsdWU+IHdy
YXBwZXIgPSBhZG9wdE5TKFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF0pOwogICAgIGlm
ICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwg
PSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVl
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4g
W3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwg
dmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJ
TVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Db3VudGVyLm1tCmluZGV4IGE2YWNl
ODJiYWY2NGNiZjM4NDIwOWM5Y2EzOTE5YTcyNDZlZDdlOTQuLmQwZTFiMjJhYzIwNWZkYWFhZDM2
MGEzMDUzZWU1N2ZiMDZjOWY0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Db3VudGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
b3VudGVyLm1tCkBAIC03NiwxMiArNzYsMTIgQEAgRE9NQ291bnRlciAqa2l0KFdlYkNvcmU6OkRl
cHJlY2F0ZWRDU1NPTUNvdW50ZXIqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgaWYgKERPTUNvdW50ZXIgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICBET01Db3VudGVyICp3cmFwcGVyID0gW1tET01Db3VudGVyIGFsbG9jXSBfaW5pdF07CisgICAg
ICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbRE9NQ291bnRlciBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVy
LT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUp
OwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsK
LSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3Jh
cHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9
CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KaW5k
ZXggNWNlZTM5ZTBiZTdkNGNjMTdjOTc3ZmM1YjE3NzcyNGEyYzMyODg0MS4uZGZhMzViNDFiZTYy
Y2RkYzc4ZDFmZDA3YTA5NjE2MTliNWJjZGIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01FdmVudC5tbQpAQCAtMTg4LDE0ICsxODgsMTQgQEAgRE9NRXZlbnQgKmtpdChXZWJDb3Jl
OjpFdmVudCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICBpZiAoRE9NRXZlbnQgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01FdmVudCAqd3Jh
cHBlciA9IFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiBy
ZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBSZXRhaW5QdHI8RE9NRXZlbnQ+
IHdyYXBwZXIgPSBhZG9wdE5TKFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBfaW5pdF0pOwogICAg
IGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB3cmFwcGVyLT5faW50ZXJu
YWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZh
bHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1
cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQo
KSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRl
ZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZUxp
c3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZUxpc3QubW0KaW5kZXgg
M2JmNzBlYWQ4ODFjM2E4YTc4MDFmOTViN2E3NTg5MGE4NjU5YmM1Mi4uZDkzNzY3ODZmYmVjYmQ2
NTBlNzAxNThhOTNjOGIwMjQ5ZmE3OWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUZpbGVMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01GaWxlTGlzdC5tbQpAQCAtNzYsMTIgKzc2LDEyIEBAIERPTUZpbGVMaXN0ICpraXQoV2Vi
Q29yZTo6RmlsZUxpc3QqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgaWYgKERPTUZpbGVMaXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9N
RmlsZUxpc3QgKndyYXBwZXIgPSBbW0RPTUZpbGVMaXN0IGFsbG9jXSBfaW5pdF07CisgICAgICAg
IHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbRE9NRmlsZUxpc3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+
X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsK
ICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0g
ICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQog
CiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxDb2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxD
b2xsZWN0aW9uLm1tCmluZGV4IDQyN2UwMzJiNWY2ZDVlNjJkOGRhN2RjMmIzYzliNjc1YzAzMzZk
OTcuLjliYmQwNTIzMWIwZGZlNTgxMjE4Y2IxZWZjMTk5MjkwYWQ0YmMwODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KQEAgLTg5LDE0
ICs4OSwxNCBAQCBET01IVE1MQ29sbGVjdGlvbiAqa2l0KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9u
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChE
T01IVE1MQ29sbGVjdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAg
ICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUhUTUxDb2xs
ZWN0aW9uICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAg
ICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0
cjxET01IVE1MQ29sbGVjdGlvbj4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkg
YWxsb2NdIF9pbml0XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9N
V3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IDE0YmQ2ZTdkYTQw
YzM0ZmI2OWY1YTI2ZDkzODBjODg4MDRiMjNhMzUuLjAzMjk5MTYzYzQwNWQwZTJmYThlYTVmNGJh
ZTQ2YjE5NjFlNDcwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQpAQCAtMTEzLDEyICsxMTMsMTIgQEAgRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uICpraXQoV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9u
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChE
T01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb24gKndyYXBwZXIgPSBbW0RPTUhUTUxPcHRpb25zQ29sbGVjdGlv
biBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9y
ZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbiBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVy
cHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIg
YXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOwor
ICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW1wbGVtZW50YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW1wbGVtZW50YXRpb24ubW0KaW5kZXgg
NzMyY2Y0MzhiZDYyMTFlYWIzMmY0NjIxOWFjMTg5YWNiYmM5OWNhZS4uM2M5ZjQ5Y2JkZDhkNjBi
NjgwYTZhZWZmZDRmY2NkNWIxOGUxYzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUltcGxlbWVudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01JbXBsZW1lbnRhdGlvbi5tbQpAQCAtMTE4LDEwICsxMTgsMTAgQEAgRE9NSW1w
bGVtZW50YXRpb24gKmtpdChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiogdmFsdWUpCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NSW1wbGVtZW50YXRp
b24gKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01JbXBsZW1lbnRhdGlvbiAqd3JhcHBl
ciA9IFtbRE9NSW1wbGVtZW50YXRpb24gYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tET01JbXBsZW1lbnRhdGlvbiBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50
ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAg
IHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICBy
ZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5n
ZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFFcnJvci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUVycm9yLm1tCmluZGV4IGU3ZDk2Mzdj
M2Y0NzAwNjYzYTE3YTYxNDY4NzQ3N2EzYjg4MTQ4OWIuLjQ0MTU3YzQyYjQwYTc5ZTZmNmI5MTE4
NDM4MTRkNDkyOWE1YmE3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01NZWRpYUVycm9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
ZWRpYUVycm9yLm1tCkBAIC02OSwxMiArNjksMTIgQEAgRE9NTWVkaWFFcnJvciAqa2l0KFdlYkNv
cmU6Ok1lZGlhRXJyb3IqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgaWYgKERPTU1lZGlhRXJyb3IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBE
T01NZWRpYUVycm9yICp3cmFwcGVyID0gW1tET01NZWRpYUVycm9yIGFsbG9jXSBfaW5pdF07Cisg
ICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NTWVkaWFFcnJvciBhbGxvY10gX2luaXRdKTsKICAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNl
KCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTU1lZGlhTGlzdC5tbQppbmRleCA5NTdkNTQ1NWE2NjM0YTBlZjc3NzU3Zjc3YjE5
MDVlNGNhYzFlYjRiLi4yZDE3OWQ0ODU2ODA4NzVkYWU5NDdhYjA0M2IyMGM3ZTg0MzU2NmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KQEAgLTk2LDEy
ICs5NiwxMiBAQCBET01NZWRpYUxpc3QgKmtpdChXZWJDb3JlOjpNZWRpYUxpc3QqIHZhbHVlKQog
ICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU1lZGlhTGlz
dCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFw
cGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTU1lZGlhTGlzdCAqd3JhcHBlciA9IFtb
RE9NTWVkaWFMaXN0IGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3Jh
cHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NTWVk
aWFMaXN0IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwot
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBh
dXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDZmNjg1
YjQ1MzNmMTVmZTI3NTEwYjRlYzk4Mzg5MjcxYjg4ZGMxNzcuLmQ0NjAxZTdkZDUxMmRkMWVhYmJm
NjVlOGU2Yzg0MGIzNTMwM2EwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01OYW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTU5hbWVkTm9kZU1hcC5tbQpAQCAtMTI1LDEyICsxMjUsMTIgQEAgRE9NTmFtZWROb2RlTWFw
ICpraXQoV2ViQ29yZTo6TmFtZWROb2RlTWFwKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01OYW1lZE5vZGVNYXAgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICBET01OYW1lZE5vZGVNYXAgKndyYXBwZXIgPSBbW0RPTU5hbWVkTm9kZU1h
cCBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9y
ZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTU5hbWVkTm9kZU1hcCBh
bGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0
PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVh
c2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVy
biB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Ob2RlLm1tCmluZGV4IDVkMTRiYTE0OTZlMjk0ZDI1NjE2MmY4MzgyYTMx
ZWMwODJiNjNkZjMuLmI1MmUzNjYxNGUyY2E1ZTMyODcwNjc0ZDkxNDJjMzAzMzQ5ZDk3NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlLm1tCkBAIC02MiwxNCArNjIsMTQgQEAg
RE9NTm9kZSAqa2l0KE5vZGUqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgaWYgKERPTU5vZGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01O
b2RlICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAg
cmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxE
T01Ob2RlPiB3cmFwcGVyID0gYWRvcHROUyhbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRd
KTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+
X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsK
ICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0g
ICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQog
CiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU5vZGVJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Ob2RlSXRlcmF0b3IubW0KaW5kZXggMTU3ZGQxODBkZTRlNTY0OTFjZDBhMGExOTgwNmYz
ZDA1NzBjZmU0Zi4uNTVmODU0ZDVlNDJjNjkzZGM3ODllMzcwZjY4ZGY3MzViZGE3MjA2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGVJdGVyYXRvci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUl0ZXJhdG9yLm1tCkBAIC0x
MjcsMTIgKzEyNywxMiBAQCBET01Ob2RlSXRlcmF0b3IgKmtpdChXZWJDb3JlOjpOb2RlSXRlcmF0
b3IqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYg
KERPTU5vZGVJdGVyYXRvciAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAg
ICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTU5vZGVJdGVy
YXRvciAqd3JhcHBlciA9IFtbRE9NTm9kZUl0ZXJhdG9yIGFsbG9jXSBfaW5pdF07CisgICAgICAg
IHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbRE9NTm9kZUl0ZXJhdG9yIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBw
ZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1
ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUp
OwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3
cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsK
IH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Ob2RlTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlTGlz
dC5tbQppbmRleCBlMDk4NjU2ZjNiM2FiOTEwYzU2NTg5MDE5ZTRiNTM0ZGEwNDkxY2QzLi5kMDAz
M2Q5Y2ZiZjU5OWQwNDhjMTczZmY1MjRlM2RiNDc0YWJmMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTU5vZGVMaXN0Lm1tCkBAIC03MCwxMiArNzAsMTIgQEAgRE9NTm9kZUxp
c3QgKmtpdChXZWJDb3JlOjpOb2RlTGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NTm9kZUxpc3QgKndyYXBwZXIgPSBnZXRET01XcmFw
cGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKLSAgICBET01Ob2RlTGlzdCAqd3JhcHBlciA9IFtbRE9NTm9kZUxpc3QgYWxsb2NdIF9pbml0
XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Ob2RlTGlzdCBhbGxvY10gX2luaXRdKTsKICAg
ICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFs
Kj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIs
IHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdy
YXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxl
YXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUkdCQ29sb3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UkdCQ29sb3IubW0KaW5kZXggOTViYzA4OGMwNjhhMjZiOWI5MmY5OGFiOWJjMGQ5OTNmOWNiMDIz
YS4uOTc2MmE2MDQwZmFkN2Y0N2UyNTFmMGE3MGM5NzI2NjRjODkwNDM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SR0JDb2xvci5tbQpAQCAtMTAzLDEyICsxMDMsMTIgQEAg
RE9NUkdCQ29sb3IgKmtpdChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01SR0JDb2xvciogdmFsdWUp
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NUkdCQ29s
b3IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01SR0JDb2xvciAqd3JhcHBlciA9IFtb
RE9NUkdCQ29sb3IgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFw
cGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01SR0JD
b2xvciBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJl
dF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0
b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAg
IHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KaW5kZXggMjg3NjYwZmVjYWU5ODZkZjliMzlk
OGQ1N2UwM2ViYmNkMGY5NDE5Mi4uMTRmNDg5ZGFhNTEyNjU1M2FlZjFlN2IzODMyYjI3ZDkxMWI4
NzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQpAQCAtMzA0LDEy
ICszMDQsMTIgQEAgRE9NUmFuZ2UgKmtpdChXZWJDb3JlOjpSYW5nZSogdmFsdWUpCiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NUmFuZ2UgKndyYXBwZXIg
PSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKLSAgICBET01SYW5nZSAqd3JhcHBlciA9IFtbRE9NUmFuZ2UgYWxsb2Nd
IF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgp
OworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01SYW5nZSBhbGxvY10gX2luaXRdKTsK
ICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERP
TVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIERPTVJhbmdlICpraXQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01SZWN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJlY3QubW0KaW5k
ZXggOTI0M2VmMjg3ZmMzZDE3OGQzM2M4YTFjZGFkNmFhODI3M2JmZTJmNi4uZDcyYzBkMWY5YjNm
YmVkMTJhMDg4ZjUyNTEyZjY5ZDMwMzBjNzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVJlY3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVJlY3QubW0KQEAgLTgzLDEyICs4MywxMiBAQCBET01SZWN0ICpraXQoV2ViQ29yZTo6RGVw
cmVjYXRlZENTU09NUmVjdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICBpZiAoRE9NUmVjdCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQot
ICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVJl
Y3QgKndyYXBwZXIgPSBbW0RPTVJlY3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tET01SZWN0IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJl
ZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3Jh
cHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1
ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KaW5kZXggOWEy
M2NlNDRjNjE3ZTA1OTRhNjk0ZDBhYjdiNjA5MDVhODU4ZDIwOS4uYzExYjJkMmNhZGU4ZmQ2NTVj
ZTlmMTAwZGM2YzJhNGE4N2U0ZDdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVN0eWxlU2hlZXQubW0KQEAgLTExMSwxNCArMTExLDE0IEBAIERPTVN0eWxlU2hlZXQgKmtp
dChXZWJDb3JlOjpTdHlsZVNoZWV0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIGlmIChET01TdHlsZVNoZWV0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBl
cih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgRE9NU3R5bGVTaGVldCAqd3JhcHBlciA9IFtba2l0Q2xhc3ModmFsdWUpIGFsbG9jXSBf
aW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsK
KyAgICBSZXRhaW5QdHI8RE9NU3R5bGVTaGVldD4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFz
cyh2YWx1ZSkgYWxsb2NdIF9pbml0XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1
cm4gbmlsOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2Jq
ZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBw
ZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cisg
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0TGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0TGlzdC5tbQppbmRleCBiZjA5MmIxZmZlYjc2MjY2
NGNjYWUzNDNlMDZhMzFkOWQzNzVkYTY1Li44OTRhNjM0MWE3N2YyN2NhZmY1ZjI1M2RiNTc3OTQ1
OGZlMDI4MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5
bGVTaGVldExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxl
U2hlZXRMaXN0Lm1tCkBAIC03MywxMiArNzMsMTIgQEAgRE9NU3R5bGVTaGVldExpc3QgKmtpdChX
ZWJDb3JlOjpTdHlsZVNoZWV0TGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBpZiAoRE9NU3R5bGVTaGVldExpc3QgKndyYXBwZXIgPSBnZXRET01X
cmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKLSAgICBET01TdHlsZVNoZWV0TGlzdCAqd3JhcHBlciA9IFtbRE9NU3R5bGVTaGVldExp
c3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRv
cmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01TdHlsZVNoZWV0TGlz
dCBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9j
YXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBh
ZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3Jl
bGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGltZVJhbmdlcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UaW1lUmFuZ2VzLm1tCmluZGV4IDE0MWYyYmIyYzJmNDVi
ODQ1NWJmODY0NWI4YzA5OGQ5ZTNjOGNmNDcuLjA0MjE1ODYxZjEwM2RiNGI1YzE3ZDM0NDQyODYz
MTYxOTU1MDI1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01U
aW1lUmFuZ2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UaW1lUmFu
Z2VzLm1tCkBAIC04MCwxMiArODAsMTIgQEAgRE9NVGltZVJhbmdlcyAqa2l0KFdlYkNvcmU6OlRp
bWVSYW5nZXMqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgaWYgKERPTVRpbWVSYW5nZXMgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UaW1l
UmFuZ2VzICp3cmFwcGVyID0gW1tET01UaW1lUmFuZ2VzIGFsbG9jXSBfaW5pdF07CisgICAgICAg
IHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbRE9NVGltZVJhbmdlcyBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVy
LT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUp
OwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsK
LSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3Jh
cHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVRva2VuTGlzdC5tbQppbmRleCAyNGE1ZDEyZWNiM2FjMjVmNDViMWIyMDAzZDRlNjQ5MTgx
MzliYTgxLi4xZDExZWU0Y2Y5MWYxNDc5NDQ3N2MyNTI2YTEyM2ViYzVjNmM1MmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTk2LDEyICs5Niwx
MiBAQCBET01Ub2tlbkxpc3QgKmtpdChXZWJDb3JlOjpET01Ub2tlbkxpc3QqIHZhbHVlKQogICAg
IGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTVRva2VuTGlzdCAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVRva2VuTGlzdCAqd3JhcHBlciA9IFtbRE9N
VG9rZW5MaXN0IGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBl
cikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NVG9rZW5M
aXN0IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRv
cmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAg
cmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UcmVlV2Fsa2VyLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRyZWVXYWxrZXIubW0KaW5kZXggM2RkYjgwMzdhZDE5
YThiODFkYTRlZDczZWQyYTBhMGM4YTA4NGNjOS4uMmE2MWRhZDRiZTdhNDUxMTNjOWM3NjlkMzQx
ODZiOWE1NjhiOGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVRyZWVXYWxrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRyZWVX
YWxrZXIubW0KQEAgLTE3NiwxMiArMTc2LDEyIEBAIERPTVRyZWVXYWxrZXIgKmtpdChXZWJDb3Jl
OjpUcmVlV2Fsa2VyKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIGlmIChET01UcmVlV2Fsa2VyICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkp
Ci0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9N
VHJlZVdhbGtlciAqd3JhcHBlciA9IFtbRE9NVHJlZVdhbGtlciBhbGxvY10gX2luaXRdOworICAg
ICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW0RPTVRyZWVXYWxrZXIgYWxsb2NdIF9pbml0XSk7CiAgICAgd3Jh
cHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZh
bHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1
ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVy
KHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgp
OwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVhQYXRoLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoLm1t
CmluZGV4IGM3ZTM0OGI1YzI5NGE2NWRmZGU1NDIyYTBjODAzYjJiNDBiYTQxZGYuLjdmMzJkYzZh
MTU5NDNkYWM2YTk2YzFkYzQ1NzZkZDg1MzhmMmY1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NWFBhdGgubW0KQEAgLTYzLDEzICs2MywxMyBAQCBET01OYXRpdmVYUGF0aE5TUmVz
b2x2ZXIgKmtpdChXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIGltcGwpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgCiAgICAgaWYgKERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqd3JhcHBlciA9
IGdldERPTVdyYXBwZXIoaW1wbCkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBh
dXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVh
c2UoKTsKICAgICAKLSAgICBET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKndyYXBwZXIgPSBbW0RP
TU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBhbGxvY10gX2luaXRdOworICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgYWxsb2NdIF9pbml0XSk7CiAgICAg
d3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+
KGltcGwpOwogICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgaW1w
bCk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsgICAgCisgICAgYWRkRE9NV3Jh
cHBlcih3cmFwcGVyLmdldCgpLCBpbXBsKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFz
ZSgpOyAgICAKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01YUGF0aEV4cHJlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NWFBhdGhFeHByZXNzaW9uLm1tCmluZGV4IGFlZGYzNWEyMDMyYTVkZmE1NjFkMjkz
NmYyMTQ3YzYyYmY5NGYwZGIuLmMxNDcwMDNiNDY0MTkyZWZjM2ExMzI2NTEyMjFkODBlZjYwMzlh
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aEV4cHJl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoRXhwcmVz
c2lvbi5tbQpAQCAtNzgsMTIgKzc4LDEyIEBAIERPTVhQYXRoRXhwcmVzc2lvbiAqa2l0KFdlYkNv
cmU6OlhQYXRoRXhwcmVzc2lvbiogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICBpZiAoRE9NWFBhdGhFeHByZXNzaW9uICp3cmFwcGVyID0gZ2V0RE9NV3Jh
cHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFz
ZV07Ci0gICAgRE9NWFBhdGhFeHByZXNzaW9uICp3cmFwcGVyID0gW1tET01YUGF0aEV4cHJlc3Np
b24gYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRv
cmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01YUGF0aEV4cHJlc3Np
b24gYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRf
Y2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9y
ZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBy
ZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCmluZGV4IDU0OWM4ZTE1ZDAx
ZDQ0ODc3YWFlZTJmMzVmYmI1ZWRiNjc5MTdlMGQuLjM5Njg2NzM5ZDBhNmFiM2RlOTRjZTQ2YjBj
YTZmZmYzZDAwNGJhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01YUGF0aFJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBh
dGhSZXN1bHQubW0KQEAgLTExOCwxMiArMTE4LDEyIEBAIERPTVhQYXRoUmVzdWx0ICpraXQoV2Vi
Q29yZTo6WFBhdGhSZXN1bHQqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgaWYgKERPTVhQYXRoUmVzdWx0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2
YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0g
ICAgRE9NWFBhdGhSZXN1bHQgKndyYXBwZXIgPSBbW0RPTVhQYXRoUmVzdWx0IGFsbG9jXSBfaW5p
dF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NWFBhdGhSZXN1bHQgYWxsb2NdIF9pbml0XSk7
CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRl
cm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFw
cGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRE
T01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRv
cmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQppbmRleCA3ZDcyZmY1YmQ2ZGI5NDY2ZjRlOTYyNjkw
NzQyYTI4ODllYTYzYWY5Li41MjAwN2M0NGQ4ZTJkZjM3YWVkNzk2OGRmN2JmYWVjMTliNzZkMTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9u
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5t
bQpAQCAtODcsMTYgKzg3LDE2IEBAIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJET01Ob2Rl
T3BlcmF0aW9ucykKIAogLSAoV2ViQXJjaGl2ZSAqKXdlYkFyY2hpdmUKIHsKLSAgICByZXR1cm4g
W1tbV2ViQXJjaGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlKHNlbGYpKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hp
dmU6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlKHNlbGYpKV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlQnlGaWx0ZXJpbmdTdWJmcmFtZXM6KFdl
YkFyY2hpdmVTdWJmcmFtZUZpbHRlcil3ZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXIKIHsKLSAgICBX
ZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3Jl
TGVnYWN5V2ViQXJjaGl2ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoc2VsZiksIFt3
ZWJBcmNoaXZlU3ViZnJhbWVGaWx0ZXJdKEZyYW1lJiBzdWJmcmFtZSkgLT4gYm9vbCB7CisgICAg
YXV0byB3ZWJBcmNoaXZlID0gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0V2l0aENv
cmVMZWdhY3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZShzZWxmKSwg
W3dlYkFyY2hpdmVTdWJmcmFtZUZpbHRlcl0oRnJhbWUmIHN1YmZyYW1lKSAtPiBib29sIHsKICAg
ICAgICAgcmV0dXJuIHdlYkFyY2hpdmVTdWJmcmFtZUZpbHRlcihraXQoJnN1YmZyYW1lKSk7Ci0g
ICAgfSldOworICAgIH0pXSk7CiAKLSAgICByZXR1cm4gW3dlYkFyY2hpdmUgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiB3ZWJBcmNoaXZlLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtMTg2LDcgKzE4Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBET01SYW5n
ZSAoV2ViRE9NUmFuZ2VPcGVyYXRpb25zKQogCiAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2ZQog
ewotICAgIHJldHVybiBbW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2Vi
QXJjaGl2ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUobWFrZVNpbXBsZVJhbmdlKCpjb3JlKHNl
bGYpKSldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxs
b2NdIF9pbml0V2l0aENvcmVMZWdhY3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShtYWtlU2ltcGxlUmFuZ2UoKmNvcmUoc2VsZikpKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KE5TU3RyaW5nICopbWFya3VwU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4
dE1lbnVEZWxlZ2F0ZS5tbQppbmRleCBkY2VjNmNkNWIyMmE3ZGFmOWY0Mjg4Mzk3M2E1N2EyZTc1
MDEwNjIwLi5mMmU3ZTMyNjIxZTFhZGE4YTgxMzA1N2UwMzg2Y2U1MTFmZDNhMTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRD
b250ZXh0TWVudURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1
bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW0KQEAgLTU3LDcgKzU3
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdlYkRlZmF1bHRVSURlbGVnYXRlIChXZWJDb250ZXh0TWVu
dSkKIAogLSAoTlNNZW51SXRlbSAqKW1lbnVJdGVtV2l0aFRhZzooaW50KXRhZyB0YXJnZXQ6KGlk
KXRhcmdldCByZXByZXNlbnRlZE9iamVjdDooaWQpcmVwcmVzZW50ZWRPYmplY3QKIHsKLSAgICBO
U01lbnVJdGVtICptZW51SXRlbSA9IFtbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIG1lbnVJdGVtID0gYWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGlu
aXRdKTsKICAgICBbbWVudUl0ZW0gc2V0VGFnOnRhZ107CiAgICAgW21lbnVJdGVtIHNldFRhcmdl
dDp0YXJnZXRdOyAvLyBjYW4gYmUgbmlsCiAgICAgW21lbnVJdGVtIHNldFJlcHJlc2VudGVkT2Jq
ZWN0OnJlcHJlc2VudGVkT2JqZWN0XTsKQEAgLTExNCw3ICsxMTQsNyBAQCAtIChOU01lbnVJdGVt
ICopbWVudUl0ZW1XaXRoVGFnOihpbnQpdGFnIHRhcmdldDooaWQpdGFyZ2V0IHJlcHJlc2VudGVk
T2JqZWN0OihpZAogCiAgICAgW21lbnVJdGVtIHNldEFjdGlvbjphY3Rpb25dOwogICAgIAotICAg
IHJldHVybiBtZW51SXRlbTsKKyAgICByZXR1cm4gbWVudUl0ZW0uYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAodm9pZClhcHBlbmREZWZhdWx0SXRlbXM6KE5TQXJyYXkgKilkZWZhdWx0SXRlbXMgdG9B
cnJheTooTlNNdXRhYmxlQXJyYXkgKiltZW51SXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggZDZhZjc1NWZm
YTczOGI5OTNmN2Y3ODdlYzNlOGMzZjRlY2RhNzBmMy4uYzdlZDBmZDMyMzY1YzMyMDhhZjg5MzY0
Mzc0MjVhZTQxYWVkMmM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTgxLDcgKzgxLDcgQEAgV2ViQmFja0Zv
cndhcmRMaXN0ICpraXQoQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QpCiAgICAgaWYg
KFdlYkJhY2tGb3J3YXJkTGlzdCAqd2ViQmFja0ZvcndhcmRMaXN0ID0gYmFja0ZvcndhcmRMaXN0
cygpLmdldChiYWNrRm9yd2FyZExpc3QpKQogICAgICAgICByZXR1cm4gd2ViQmFja0ZvcndhcmRM
aXN0OwogCi0gICAgcmV0dXJuIFtbW1dlYkJhY2tGb3J3YXJkTGlzdCBhbGxvY10gaW5pdFdpdGhC
YWNrRm9yd2FyZExpc3Q6KmJhY2tGb3J3YXJkTGlzdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtbV2ViQmFja0ZvcndhcmRMaXN0IGFsbG9jXSBpbml0V2l0aEJhY2tGb3J3YXJk
TGlzdDoqYmFja0ZvcndhcmRMaXN0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdp
dGhCYWNrRm9yd2FyZExpc3Q6KFJlZjxCYWNrRm9yd2FyZExpc3Q+JiYpYmFja0ZvcndhcmRMaXN0
CkBAIC0xMzksNyArMTM5LDcgQEAgLSAodm9pZClhZGRJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWVu
dHJ5CiAgICAgLy8gU2luY2UgdGhlIGFzc3VtZWQgY29udHJhY3Qgd2l0aCBXZWJCYWNrRm9yd2Fy
ZExpc3QgaXMgdGhhdCBpdCByZXRhaW5zIGl0cyBXZWJIaXN0b3J5SXRlbXMsCiAgICAgLy8gdGhl
IGZvbGxvd2luZyBsaW5lIHByZXZlbnRzIGEgd2hvbGUgY2xhc3Mgb2YgcHJvYmxlbXMgd2hlcmUg
YSBoaXN0b3J5IGl0ZW0gd2lsbCBiZSBjcmVhdGVkIGluCiAgICAgLy8gYSBmdW5jdGlvbiwgYWRk
ZWQgdG8gdGhlIEJGbGlzdCwgdGhlbiB1c2VkIGluIHRoZSByZXN0IG9mIHRoYXQgZnVuY3Rpb24u
Ci0gICAgW1tlbnRyeSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZW50cnkp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlSXRlbTooV2ViSGlzdG9yeUl0ZW0g
KilpdGVtCkBAIC0yMTQsMTcgKzIxNCwxNyBAQCAtICh2b2lkKWdvVG9JdGVtOihXZWJIaXN0b3J5
SXRlbSAqKWl0ZW0KIAogLSAoV2ViSGlzdG9yeUl0ZW0gKiliYWNrSXRlbQogewotICAgIHJldHVy
biBbW2tpdChjb3JlKHNlbGYpLT5iYWNrSXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gcmV0YWluUHRyKGtpdChjb3JlKHNlbGYpLT5iYWNrSXRlbSgpLmdldCgp
KSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV2ViSGlzdG9yeUl0ZW0gKiljdXJyZW50SXRlbQog
ewotICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5jdXJyZW50SXRlbSgpLmdldCgpKSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKGtpdChjb3JlKHNlbGYpLT5j
dXJyZW50SXRlbSgpLmdldCgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV2ViSGlzdG9yeUl0
ZW0gKilmb3J3YXJkSXRlbQogewotICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5mb3J3YXJk
SXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRy
KGtpdChjb3JlKHNlbGYpLT5mb3J3YXJkSXRlbSgpLmdldCgpKSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogc3RhdGljIGJvb2wgYnVtcGVyQ2FyQmFja0ZvcndhcmRIYWNrTmVlZGVkKCkKQEAgLTMzMyw3
ICszMzMsNyBAQCAtIChpbnQpZm9yd2FyZExpc3RDb3VudAogCiAtIChXZWJIaXN0b3J5SXRlbSAq
KWl0ZW1BdEluZGV4OihpbnQpaW5kZXgKIHsKLSAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+
aXRlbUF0SW5kZXgoaW5kZXgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gcmV0YWluUHRyKGtpdChjb3JlKHNlbGYpLT5pdGVtQXRJbmRleChpbmRleCkuZ2V0KCkpKS5h
dXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggYzdmNDVhYzVlMDNlMDUyNGFlOWU5MDRmZjYxMTIxMTJi
OTUyYzg3My4uMTcxZThiMzQ3Y2IxZDkyZGIyMWY3NzkwMTU0ZDhkZTZlMzFjZGVjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtNjI0LDcg
KzYyNCw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICAvLyB0aGF0IGNsaWVudHMgY2FuIGxlYXJu
IG9mIGRpc2NhcmRlZCBpdGVtcyBieSBsaXN0ZW5pbmcgdG8gV2ViSGlzdG9yeUl0ZW1zRGlzY2Fy
ZGVkV2hpbGVMb2FkaW5nTm90aWZpY2F0aW9uLgogICAgIFdlYkhpc3RvcnlXcml0ZXIgd3JpdGVy
KF9lbnRyaWVzQnlEYXRlLmdldCgpKTsKICAgICB3cml0ZXIud3JpdGVQcm9wZXJ0eUxpc3QoKTsK
LSAgICByZXR1cm4gW1soTlNEYXRhICopd3JpdGVyLnJlbGVhc2VEYXRhKCkuZ2V0KCkgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cigoTlNEYXRhICopd3JpdGVyLnJl
bGVhc2VEYXRhKCkuZ2V0KCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpc2F2ZVRvVVJM
OihOU1VSTCAqKVVSTCBlcnJvcjooTlNFcnJvciAqKillcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggOGE2MThjNmQxODA4
Y2Y3ZTM4ZDVlMDAyNWRmMzhjN2Y3OGJhNWZlOS4uODEwZjY3YjdhODU4Y2Y3YmFkODA4NTIyMGNm
ODliZGMzZDIxMGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0yNzAsMTMgKzI3MCwxMyBAQCBXZWJIaXN0b3J5SXRlbSAq
a2l0KEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBpZiAoYXV0byB3cmFwcGVyID0gaGlzdG9yeUl0ZW1XcmFwcGVycygpLmdldChpdGVt
KSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBy
ZXR1cm4gW1tbV2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVt
OippdGVtXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlciku
YXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkhpc3RvcnlJdGVtIGFsbG9j
XSBpbml0V2l0aFdlYkNvcmVIaXN0b3J5SXRlbToqaXRlbV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAK
ICsgKFdlYkhpc3RvcnlJdGVtICopZW50cnlXaXRoVVJMOihOU1VSTCAqKVVSTAogewotICAgIHJl
dHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgdGl0bGU6bmlsXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgdGl0
bGU6bmlsXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhVUkxTdHJpbmc6KE5T
U3RyaW5nICopVVJMU3RyaW5nIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGRpc3BsYXlUaXRsZToo
TlNTdHJpbmcgKilkaXNwbGF5VGl0bGUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6KE5TVGltZUlu
dGVydmFsKXRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDkyNmY1ZDU2MmY4MzhiYjczNjNlNzk0OTY5ODI4NmZi
ZTFjNTkzN2IuLjJiYTAwNmRkM2U3YjJhZmM1MGVmZjI4NDUzMjBkOTY1MDViYTcxYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJh
cy5tbQpAQCAtMTU4LDkgKzE1OCw5IEBAIC0oTlNTdHJpbmcgKilfd2Via2l0X2ZpbGVuYW1lQnlG
aXhpbmdJbGxlZ2FsQ2hhcmFjdGVycwogCiAtKE5TU3RyaW5nICopX3dlYmtpdF9zdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZQogewotICAgIE5TTXV0YWJsZVN0cmluZyAqdHJpbW1lZCA9IFtbc2Vs
ZiBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2Uo
KF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVkKTsKLSAgICByZXR1cm4gdHJpbW1l
ZDsKKyAgICBhdXRvIHRyaW1tZWQgPSBhZG9wdE5TKFtzZWxmIG11dGFibGVDb3B5XSk7CisgICAg
Q0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1t
ZWQuZ2V0KCkpOworICAgIHJldHVybiB0cmltbWVkLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
Yk5TRGF0YUV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRh
RXh0cmFzLm1tCmluZGV4IDgyYWUxZGI1ZTVmNzRlMjRlZTY5N2IxYThmYzA1YzVjNDY1MWJjOWMu
LjZlYzdjYzBkYjIyNzJjZTRiZDNkYTE3NGVhMzI5NDU4NmRkZmQxN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tCkBAIC0yODYsNyArMjg2
LDcgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJG
aWVsZHMKIAogICAgIGNvbnN0IFVJbnQ4KiBieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4
Kj4oW3NlbGYgYnl0ZXNdKTsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IFtzZWxmIGxlbmd0aF07
Ci0gICAgTlNTdHJpbmcgKmxhc3RLZXkgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBs
YXN0S2V5OwogICAgIGNvbnN0IFVJbnQ4ICplb2w7CiAKICAgICAvLyBMb29wIG92ZXIgbGluZXMg
dW50aWwgd2UncmUgcGFzdCB0aGUgaGVhZGVyLCBvciB3ZSBjYW4ndCBmaW5kIGFueSBtb3JlIGVu
ZC1vZi1saW5lcwpAQCAtMzExLDExICszMTEsMTEgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAq
KV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBjb250aW51YXRpb24g
b2YgdGhlIHByZXZpb3VzIGhlYWRlcgotICAgICAgICAgICAgTlNTdHJpbmcgKmN1cnJlbnRWYWx1
ZSA9IFtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXldOworICAgICAgICAgICAgTlNT
dHJpbmcgKmN1cnJlbnRWYWx1ZSA9IFtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXku
Z2V0KCldOwogICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhCeXRlczpsaW5lIGxlbmd0aDpsaW5lTGVuZ3RoIGVuY29kaW5nOk5TSVNP
TGF0aW4xU3RyaW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50VmFsdWUp
OwogICAgICAgICAgICAgQVNTRVJUKG5ld1ZhbHVlKTsKLSAgICAgICAgICAgIFtoZWFkZXJGaWVs
ZHMgc2V0T2JqZWN0OltjdXJyZW50VmFsdWUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmV3VmFs
dWUuZ2V0KCldIGZvcktleTpsYXN0S2V5XTsKKyAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0
T2JqZWN0OltjdXJyZW50VmFsdWUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bmV3VmFsdWUuZ2V0
KCldIGZvcktleTpsYXN0S2V5LmdldCgpXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IC8vIEJyYW5kIG5ldyBoZWFkZXIKICAgICAgICAgICAgIGNvbnN0IFVJbnQ4KiBjb2xvbjsKQEAg
LTMyNCwxNyArMzI0LDE2IEBAIC0gKE5TTXV0YWJsZURpY3Rpb25hcnkgKilfd2Via2l0X3BhcnNl
UkZDODIySGVhZGVyRmllbGRzCiAgICAgICAgICAgICAgICAgLy8gbWFsZm9ybWVkIGhlYWRlcjsg
aWdub3JlIGl0IGFuZCBjb250aW51ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbGFzdEtleSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6bGluZSBsZW5ndGg6Y29sb24gLSBsaW5lIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5n
RW5jb2RpbmddOwotICAgICAgICAgICAgW2xhc3RLZXkgYXV0b3JlbGVhc2VdOworICAgICAgICAg
ICAgbGFzdEtleSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczpsaW5l
IGxlbmd0aDpjb2xvbiAtIGxpbmUgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10p
OwogICAgICAgICAgICAgbGFzdEtleSA9IFtsYXN0S2V5IF93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhl
YWRlckZpZWxkTmFtZV07CiAgICAgICAgICAgICBmb3IgKGNvbG9uKys7IGNvbG9uICE9IGVvbDsg
Y29sb24rKykgewogICAgICAgICAgICAgICAgIGlmICgqY29sb24gIT0gJyAnICYmICpjb2xvbiAh
PSAnXHQnKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGF1dG8gdmFsdWUgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0
ZXM6Y29sb24gbGVuZ3RoOmVvbCAtIGNvbG9uIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5j
b2RpbmddKTsKLSAgICAgICAgICAgIGlmIChOU1N0cmluZyAqb2xkVmFsdWUgPSBbaGVhZGVyRmll
bGRzIG9iamVjdEZvcktleTpsYXN0S2V5XSkKKyAgICAgICAgICAgIGlmIChOU1N0cmluZyAqb2xk
VmFsdWUgPSBbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpsYXN0S2V5LmdldCgpXSkKICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3Jt
YXQ6QCIlQCwgJUAiLCBvbGRWYWx1ZSwgdmFsdWUuZ2V0KCldKTsKLSAgICAgICAgICAgIFtoZWFk
ZXJGaWVsZHMgc2V0T2JqZWN0OnZhbHVlLmdldCgpIGZvcktleTpsYXN0S2V5XTsKKyAgICAgICAg
ICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OnZhbHVlLmdldCgpIGZvcktleTpsYXN0S2V5Lmdl
dCgpXTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTlNPYmplY3RFeHRyYXMubW0KaW5kZXggNzQ5OGU1YTUzYWIwNzA1OTZiYTkzYzQ2
ODg0NTllMjc0M2I2NmExNi4uMmY1YTk0NjBkMDFjNzEwYjJjMGIzYjdjNGM3ZTdjZGZmZjJjYjg3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU09iamVjdEV4
dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0
cmFzLm1tCkBAIC0yOSwxMSArMjksMTIgQEAKICNpbXBvcnQgIldlYk5TT2JqZWN0RXh0cmFzLmgi
CiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKIEBpbnRlcmZhY2UgV2ViTWFpblRocmVhZEludm9rZXIgOiBOU1Byb3h5CiB7CiAgICAgaWQg
dGFyZ2V0OwotICAgIGlkIGV4Y2VwdGlvbjsKKyAgICBSZXRhaW5QdHI8aWQ+IGV4Y2VwdGlvbjsK
IH0KIEBlbmQKIApAQCAtNjEsMTUgKzYyLDE0IEBAIC0gKHZvaWQpZm9yd2FyZEludm9jYXRpb246
KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24KICAgICBbaW52b2NhdGlvbiBzZXRUYXJnZXQ6dGFy
Z2V0XTsKICAgICBbaW52b2NhdGlvbiBwZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVj
dG9yKF93ZWJraXRfaW52b2tlQW5kSGFuZGxlRXhjZXB0aW9uOikgd2l0aE9iamVjdDpzZWxmIHdh
aXRVbnRpbERvbmU6WUVTXTsKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlkIGV4Y2Vw
dGlvblRvVGhyb3cgPSBbZXhjZXB0aW9uIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgZXhjZXB0aW9u
ID0gbmlsOworICAgICAgICBpZCBleGNlcHRpb25Ub1Rocm93ID0gc3RkOjpleGNoYW5nZShleGNl
cHRpb24sIG5pbCkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAgQHRocm93IGV4Y2VwdGlvblRvVGhy
b3c7CiAgICAgfSBlbHNlIGlmIChyZXR1cm5UeXBlSXNPYmplY3QoaW52b2NhdGlvbikpIHsKICAg
ICAgICAgLy8gX3dlYmtpdF9pbnZva2VBbmRIYW5kbGVFeGNlcHRpb24gcmV0YWluZWQgdGhlIHJl
dHVybiB2YWx1ZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIC8vIE5vdyBhdXRvcmVsZWFz
ZSBpdCBvbiB0aGUgY2FsbGluZyB0aHJlYWQuCiAgICAgICAgIGlkIHJldHVyblZhbHVlOwogICAg
ICAgICBbaW52b2NhdGlvbiBnZXRSZXR1cm5WYWx1ZTomcmV0dXJuVmFsdWVdOwotICAgICAgICBb
cmV0dXJuVmFsdWUgYXV0b3JlbGVhc2VdOworICAgICAgICBhZG9wdE5TKHJldHVyblZhbHVlKS5h
dXRvcmVsZWFzZSgpOwogICAgIH0KIH0KIApAQCAtODEsNyArODEsNyBAQCAtIChOU01ldGhvZFNp
Z25hdHVyZSAqKW1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IKIC0gKHZv
aWQpaGFuZGxlRXhjZXB0aW9uOihpZClwYXNzZWRFeGNlcHRpb24KIHsKICAgICBBU1NFUlQoIWV4
Y2VwdGlvbik7Ci0gICAgZXhjZXB0aW9uID0gW3Bhc3NlZEV4Y2VwdGlvbiByZXRhaW5dOworICAg
IGV4Y2VwdGlvbiA9IHBhc3NlZEV4Y2VwdGlvbjsKIH0KIAogQGVuZApAQCAtMTExLDEyICsxMTEs
MTIgQEAgQGltcGxlbWVudGF0aW9uIE5TT2JqZWN0IChXZWJOU09iamVjdEV4dHJhcykKIAogKyAo
aWQpX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWQKIHsKLSAgICByZXR1cm4gW1tbV2ViTWFpblRo
cmVhZEludm9rZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGZdIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW1dlYk1haW5UaHJlYWRJbnZva2VyIGFsbG9jXSBpbml0V2l0aFRh
cmdldDpzZWxmXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpX3dlYmtpdF9pbnZva2VPbk1h
aW5UaHJlYWQKIHsKLSAgICByZXR1cm4gW1tbV2ViTWFpblRocmVhZEludm9rZXIgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0OnNlbGZdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dl
Yk1haW5UaHJlYWRJbnZva2VyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmXSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNV
UkxFeHRyYXMubW0KaW5kZXggN2U5ODkyZmMzZDIyZGI1MjkxYmU0YTY2MTI5NDQ1ZGZhYWY4M2M5
YS4uODc1MzYyNDJiNzkwMzRlYjkzNGNiNWY3MmE4OTczNmY3MTFhOTUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0xMDQsNyArMTA0
LDcgQEAgLSAoTlNEYXRhICopX3dlYl9vcmlnaW5hbERhdGEKIAogLSAoTlNTdHJpbmcgKilfd2Vi
X29yaWdpbmFsRGF0YUFzU3RyaW5nCiB7Ci0gICAgcmV0dXJuIFtbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6b3JpZ2luYWxVUkxEYXRhKHNlbGYpIGVuY29kaW5nOk5TSVNPTGF0aW4xU3Ry
aW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aERhdGE6b3JpZ2luYWxVUkxEYXRhKHNlbGYpIGVuY29kaW5nOk5TSVNP
TGF0aW4xU3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAq
KV93ZWJfdXNlclZpc2libGVTdHJpbmcKQEAgLTIwMiw3ICsyMDIsNyBAQCAtKE5TRGF0YSAqKV93
ZWJfaG9zdERhdGEKIAogLSAoTlNTdHJpbmcgKilfd2ViX2hvc3RTdHJpbmcKIHsKLSAgICByZXR1
cm4gW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbc2VsZiBfd2ViX2hvc3REYXRhXSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbc2VsZiBfd2ViX2hvc3REYXRh
XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KE5TU3RyaW5nICopX3dlYmtpdF9zdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRl
eCA1ZTIyMzI4ZmQ4NDU0OGFkMjNmMWI1OWU2MWRlZmVjNDFiNmNlY2RjLi41N2FhNGE4MmQ2YTY3
MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQpAQCAtMjYxLDExICsyNjEsMTEgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6Y2FuY2VsTG9hZChOU0Vycm9yICplcnJvcikKIAogTlNFcnJvciAqSG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFtbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9y
Q29kZTpXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24KKyAgICByZXR1cm4gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJv
clBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZW50VVJMOm1fcmVzcG9uc2VVUkwgPyBtX3Jlc3BvbnNlVVJMLmdl
dCgpIDogbV9yZXF1ZXN0VVJMLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGx1Z2luUGFnZVVSTDpuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbHVnaW5OYW1lOltbbV9pbnN0YW5jZS0+cGx1Z2luVmlldygpIHBsdWdp
blBhY2thZ2VdIHBsdWdpbkluZm9dLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOm1fbWltZVR5cGUuZ2V0KCldIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOm1f
bWltZVR5cGUuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBOU0Vycm9yICpIb3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbTo6ZXJyb3JGb3JSZWFzb24oTlBSZWFzb24gcmVhc29uKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2lu
UGFja2FnZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdp
blBhY2thZ2UubW0KaW5kZXggZmNlM2NmOGQyZDhkMDY3ZTZmMTM1OTExNDgyN2I0ZTZlZjIzODdm
Zi4uYmI4YmMyYTUyZjRhZWE5ZmNiOTU4OTA3OGQxYmFhMWU5ODUwYjUxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdl
Lm1tCkBAIC02OSwxNyArNjksMTcgQEAgKyAodm9pZClpbml0aWFsaXplCiArIChXZWJCYXNlUGx1
Z2luUGFja2FnZSAqKXBsdWdpbldpdGhQYXRoOihOU1N0cmluZyAqKXBsdWdpblBhdGgKIHsKICAg
ICAKLSAgICBXZWJCYXNlUGx1Z2luUGFja2FnZSAqcGx1Z2luUGFja2FnZSA9IFtbV2ViUGx1Z2lu
UGFja2FnZSBhbGxvY10gaW5pdFdpdGhQYXRoOnBsdWdpblBhdGhdOworICAgIGF1dG8gcGx1Z2lu
UGFja2FnZSA9IGFkb3B0TlMoW1tXZWJQbHVnaW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6
cGx1Z2luUGF0aF0pOwogCiAgICAgaWYgKCFwbHVnaW5QYWNrYWdlKSB7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgICAgIHBsdWdpblBhY2thZ2UgPSBbW1dlYk5ldHNjYXBl
UGx1Z2luUGFja2FnZSBhbGxvY10gaW5pdFdpdGhQYXRoOnBsdWdpblBhdGhdOworICAgICAgICBw
bHVnaW5QYWNrYWdlID0gYWRvcHROUyhbW1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBhbGxvY10g
aW5pdFdpdGhQYXRoOnBsdWdpblBhdGhdKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBuaWw7CiAj
ZW5kaWYKICAgICB9CiAKLSAgICByZXR1cm4gW3BsdWdpblBhY2thZ2UgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBwbHVnaW5QYWNrYWdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkKWluaXRX
aXRoUGF0aDooTlNTdHJpbmcgKilwbHVnaW5QYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCAw
YjMyNjcyNzIyZjhjOTAyNDU3ZmI0NTNkMjIxNjIxYTZiYTFmMjNmLi41NTYzZDA5YmQ1NmMwYjI2
ZTZkOTFkMDdmY2Q3NThkZjE4MGYwYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTEwNiwx
MSArMTA2LDExIEBAIE5QUmVhc29uIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpyZWFzb25Gb3JF
cnJvcihOU0Vycm9yICplcnJvcikKIAogTlNFcnJvciAqV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06
OnBsdWdpbkNhbmNlbGxlZENvbm5lY3Rpb25FcnJvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtb
W05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJ
bkNhbmNlbGxlZENvbm5lY3Rpb24KKyAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2Nd
IF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5l
Y3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50
VVJMOm1fcmVzcG9uc2VVUkwgPyBtX3Jlc3BvbnNlVVJMLmdldCgpIDogKE5TVVJMICopbV9yZXF1
ZXN0VVJMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFn
ZVVSTDpuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVn
aW5OYW1lOltbbV9wbHVnaW5WaWV3LmdldCgpIHBsdWdpblBhY2thZ2VdIHBsdWdpbkluZm9dLm5h
bWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBl
OihOU1N0cmluZyAqKVN0cmluZzo6ZnJvbVVURjgobV9taW1lVHlwZS5kYXRhKCksIG1fbWltZVR5
cGUubGVuZ3RoKCkpXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNSU1FVHlwZTooTlNTdHJpbmcgKilTdHJpbmc6OmZyb21VVEY4KG1f
bWltZVR5cGUuZGF0YSgpLCBtX21pbWVUeXBlLmxlbmd0aCgpKV0pLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIE5TRXJyb3IgKldlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjplcnJvckZvclJlYXNvbihOUFJl
YXNvbiByZWFzb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDA2ODdiYmJiZTgwZjViN2Q4
N2IyNzhmOTE4MzkwNTBjMDVlMGQ3ZDUuLmYwZDk5OGMwOTYwNDhkOWFmZDEzNmVkMjIxYWQ1MWU2
MTdlMmIxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0zNTUsNyArMzU1LDcgQEAgLSAoQk9PTClz
ZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0CiAg
ICAgfQogCiAgICAgLy8gVGVtcG9yYXJpbHkgcmV0YWluIHNlbGYgaW4gY2FzZSB0aGUgcGx1Zy1p
biB2aWV3IGlzIHJlbGVhc2VkIHdoaWxlIHNlbmRpbmcgYW4gZXZlbnQuIAotICAgIFtbc2VsZiBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsK
IAogICAgIEJPT0wgYWNjZXB0ZWRFdmVudDsKICAgICBbc2VsZiB3aWxsQ2FsbFBsdWdJbkZ1bmN0
aW9uXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1
Z2luQ29udGFpbmVyQ2hlY2subW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCmluZGV4IDc0MDg4OGZkOTY4MjFhMzQyOWM0Nzk0MTE3
NWEzNzAwZDUwNzc4NjMuLjFkOThiYTBkZDA2MjJkOWMxMGU2YjI3NmY4NTFjNGQ0ZjdjNjE1OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29u
dGFpbmVyQ2hlY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQ
bHVnaW5Db250YWluZXJDaGVjay5tbQpAQCAtNzIsNyArNzIsNyBAQCAtIChpZClpbml0V2l0aFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldCBy
ZXN1bHRPYgogCiArIChpZCljaGVja1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IHRhcmdldDooTlNTdHJpbmcgKil0YXJnZXQgcmVzdWx0T2JqZWN0OihpZClvYmogc2VsZWN0b3I6
KFNFTClzZWxlY3RvciBjb250cm9sbGVyOihpZCA8V2ViUGx1Z2luQ29udGFpbmVyQ2hlY2tDb250
cm9sbGVyPiljb250cm9sbGVyIGNvbnRleHRJbmZvOihpZCljb250ZXh0SW5mbyAvKm9wdGlvbmFs
Ki8KIHsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3Qg
dGFyZ2V0OnRhcmdldCByZXN1bHRPYmplY3Q6b2JqIHNlbGVjdG9yOnNlbGVjdG9yIGNvbnRyb2xs
ZXI6Y29udHJvbGxlciBjb250ZXh0SW5mbzpjb250ZXh0SW5mb10gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgdGFy
Z2V0OnRhcmdldCByZXN1bHRPYmplY3Q6b2JqIHNlbGVjdG9yOnNlbGVjdG9yIGNvbnRyb2xsZXI6
Y29udHJvbGxlciBjb250ZXh0SW5mbzpjb250ZXh0SW5mb10pLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KaW5kZXggNmUyODcyZDJjM2MzNzA1YjM0MTU3ZTgzMjgz
MjVmMDg0MWVjNzNjNS4uYjU5Y2U0YmNkZjhhNTM3MWMyMWY2ZjBmMzM4MWVlZjNlMGQ3ZmU4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRh
YmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRh
dGFiYXNlLm1tCkBAIC00MTksOSArNDE5LDkgQEAgLSAoTlNBcnJheSAqKV9wbHVnSW5QYXRocwog
ICAgICAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBv
ZiB0aGUgK3NldEFkZGl0aW9uYWxXZWJQbHVnSW5QYXRoczogU1BJLAogICAgICAgICAvLyB3aGlj
aCBzaW1wbHkgc2F2ZWQgYSBjb3B5IG9mIHRoZSBhZGRpdGlvbmFsIHBhdGhzIGFuZCBkaWQgbm90
IGNhdXNlIHRoZSBwbHVnaW4gREIgdG8gCiAgICAgICAgIC8vIHJlZnJlc2guICBTZWUgUmFkYXJz
IDQ2MDg0ODcgYW5kIDQ2MDkwNDcuCi0gICAgICAgIE5TTXV0YWJsZUFycmF5ICptb2RpZmllZFBs
dWdJblBhdGhzID0gW1twbHVnSW5QYXRocyBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAg
ICAgICBhdXRvIG1vZGlmaWVkUGx1Z0luUGF0aHMgPSBhZG9wdE5TKFtwbHVnSW5QYXRocyBtdXRh
YmxlQ29weV0pOwogICAgICAgICBbbW9kaWZpZWRQbHVnSW5QYXRocyBhZGRPYmplY3RzRnJvbUFy
cmF5OmFkZGl0aW9uYWxXZWJQbHVnSW5QYXRocygpLmdldCgpXTsKLSAgICAgICAgcmV0dXJuIG1v
ZGlmaWVkUGx1Z0luUGF0aHM7CisgICAgICAgIHJldHVybiBtb2RpZmllZFBsdWdJblBhdGhzLmF1
dG9yZWxlYXNlKCk7CiAgICAgfQogICAgIHJldHVybiBwbHVnSW5QYXRoczsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQppbmRleCBhYzdkMTY0OGNiODI5NGI3ODQ2Y2FmMDUyZDU3NDkyYjRlMjJhNGFmLi45
MWFmYzVkNzQ0OTE0MzRmNGUxMjNmMThhNTA0MTczODliMzRiM2I5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKICsgKFdlYlVuZG9TdGVw
ICopc3RlcFdpdGhVbmRvU3RlcDooUmVmPFVuZG9TdGVwPiYmKXN0ZXAKIHsKLSAgICByZXR1cm4g
W1tbV2ViVW5kb1N0ZXAgYWxsb2NdIGluaXRXaXRoVW5kb1N0ZXA6V1RGTW92ZShzdGVwKV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViVW5kb1N0ZXAgYWxsb2NdIGluaXRX
aXRoVW5kb1N0ZXA6V1RGTW92ZShzdGVwKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFVuZG9T
dGVwJilzdGVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDJhYThjMzlhNDAzOTZi
ZmMxODEwNDQzNjlhM2M2MjBjMzRlMDgwNDAuLmNkOGMwN2YxMWE4Y2FhZWQzMWNmNWVlZTA4MjQ0
MzdhYTUyNGEwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0zMDUsOSArMzA1
LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG8KICAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRl
cikgewogICAgICAgICAvLyBUaGUgcmVzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsIG9y
IHRoZSBjb252ZXJzaW9uIGlzIGJlaW5nIGF0dG1wdGVkIHdoZW4gbm90IGNhbGxpbmcgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgpLgogICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBXZWJEb3dubG9hZCAqd2ViRG93bmxvYWQg
PSBbW1dlYkRvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KSBkZWxlZ2F0
ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXV07CisgICAgICAgIGF1dG8gd2ViRG93bmxvYWQg
PSBhZG9wdE5TKFtbV2ViRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkp
IGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdXSk7CiAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICBbd2ViRG93bmxvYWQgYXV0b3JlbGVh
c2VdOworICAgICAgICB3ZWJEb3dubG9hZC5hdXRvcmVsZWFzZSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05MjgsMTAgKzkyOCwxMCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICptYWtl
Rm9ybUZpZWxkVmFsdWVzRGljdGlvbmFyeShXZWJDb3JlOjpGb3JtU3RhdGUmIGZvcm1TdGF0ZQog
ewogICAgIGF1dG8mIHRleHRGaWVsZFZhbHVlcyA9IGZvcm1TdGF0ZS50ZXh0RmllbGRWYWx1ZXMo
KTsKICAgICBzaXplX3Qgc2l6ZSA9IHRleHRGaWVsZFZhbHVlcy5zaXplKCk7Ci0gICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpzaXplXTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSk7CiAgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IHRleHRGaWVsZFZhbHVlcykKICAgICAgICAgW2RpY3Rpb25hcnkg
c2V0T2JqZWN0OnZhbHVlLnNlY29uZCBmb3JLZXk6dmFsdWUuZmlyc3RdOwotICAgIHJldHVybiBb
ZGljdGlvbmFyeSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGRpY3Rpb25hcnkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1
Ym1pdEV2ZW50KFJlZjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYgZm9ybVN0YXRlKQpAQCAtMTE2OSwx
MiArMTE2OSwxMSBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZQogCiBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewotICAgIE5T
RXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6
V2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZAorICAgIHJldHVybiBhZG9wdE5TKFtbTlNF
cnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luV2ls
bEhhbmRsZUxvYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50VVJMOnJlc3BvbnNlLnVybCgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTDpuaWwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOm5pbAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlN
RVR5cGU6cmVzcG9uc2UubWltZVR5cGUoKV07Ci0gICAgcmV0dXJuIFtlcnJvciBhdXRvcmVsZWFz
ZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogYm9v
bCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CkBAIC0xOTQwLDcgKzE5MzksNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpegogICAgICAgICAgICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3KG1fd2ViRnJh
bWUuZ2V0KCksIChXZWJQbHVnaW5QYWNrYWdlICopcGx1Z2luUGFja2FnZSwgYXR0cmlidXRlS2V5
cy5nZXQoKSwgY3JlYXRlTlNBcnJheShwYXJhbVZhbHVlcykuZ2V0KCksIGJhc2VVUkwsIGtpdCgm
ZWxlbWVudCksIGxvYWRNYW51YWxseSk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAgICAgICAgICAgICBlbHNlIGlmIChbcGx1Z2luUGFja2FnZSBpc0tpbmRPZkNsYXNzOltXZWJO
ZXRzY2FwZVBsdWdpblBhY2thZ2UgY2xhc3NdXSkgewotICAgICAgICAgICAgICAgIFdlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcgPSBbW1tORVRTQ0FQRV9QTFVHSU5fVklFVyBh
bGxvY10KKyAgICAgICAgICAgICAgICBhdXRvIHBsdWdpblZpZXcgPSBhZG9wdE5TKFtbTkVUU0NB
UEVfUExVR0lOX1ZJRVcgYWxsb2NdCiAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpCiAgICAgICAgICAg
ICAgICAgICAgIHBsdWdpblBhY2thZ2U6KFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSAqKXBsdWdp
blBhY2thZ2UKICAgICAgICAgICAgICAgICAgICAgVVJMOnBsdWdpblVSTApAQCAtMTk0OSw5ICsx
OTQ4LDkgQEAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlS2V5czphdHRyaWJ1dGVLZXlzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZVZhbHVlczpjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQoKQogICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFudWFsbHk6bG9hZE1hbnVhbGx5Ci0gICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQ6JmVsZW1lbnRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dDomZWxlbWVudF0pOwogCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXRz
Y2FwZVBsdWdpbldpZGdldChwbHVnaW5WaWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOZXRzY2FwZVBsdWdpbldpZGdldChwbHVnaW5WaWV3LmF1dG9yZWxlYXNlKCkp
KTsKICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KaW5kZXggYjg5ODcxODM1OTMxNjM1ZTU1YTNjZGM3NDQ4NWRjOTk2M2ZiMWFkMi4uMzU5MTVj
NjY5MzYwZTg2NWQxMzVkYmQ3MTkxY2U3N2IyYTExZGQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQpAQCAtNzk4LDcgKzc5OCw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFGCiAKIC0gKE5T
QXJyYXkgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGNvbnRleHRNZW51SXRlbXNGb3JFbGVt
ZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50IGRlZmF1bHRNZW51SXRlbXM6KE5TQXJyYXkgKilk
ZWZhdWx0TWVudUl0ZW1zCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKm1lbnVJdGVtcyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gbWVudUl0ZW1zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBmb3IgKE5TTWVudUl0ZW0gKml0
ZW0gaW4gZGVmYXVsdE1lbnVJdGVtcykgewogICAgICAgICBzd2l0Y2ggKGl0ZW0udGFnKSB7CkBA
IC04MTUsNyArODE1LDcgQEAgLSAoTlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeQogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIFttZW51SXRlbXMgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBtZW51
SXRlbXMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQppbmRleCA4NWFmMzMzMWU2YjJhOTBhZGVkOGRhOWE5NTNjMWYwYjY2YzE5OTJiLi4yZDQxNDFl
ZGIyMTk2MTk2MTc4Mjk3NjgwMWUwYWYxMzMzNjgwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQpAQCAtNDgsNyArNDgsNyBAQCArIChpZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21EYXRhYmFzZUlk
ZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiAgICAgaWYgKCFvcmlnaW4p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW1tbV2ViU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luKCkucHRyKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlNlY3Vy
aXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luLT5z
ZWN1cml0eU9yaWdpbigpLnB0cigpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdp
dGhVUkw6KE5TVVJMICopdXJsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkFyY2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkFyY2hpdmUubW0KaW5kZXggMWZmMmY1NDYyZDY1MjMzNjA4ZDZhYWE1MTUyZjQ2ZGIxZmEwYjY3
NS4uMjJkNjc4YTFmMWI2ZTE5MjI5OWMyMDRmMmQ2ZTZjYzY1OWM3OGQ0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQpAQCAtMzM1LDcgKzMzNSw3
IEBAIC0gKE5TRGF0YSAqKWRhdGEKICNlbmRpZgogICAgIExPRyhUaW1pbmcsICJTZXJpYWxpemlu
ZyB3ZWIgYXJjaGl2ZSB0byByYXcgQ0ZQcm9wZXJ0eUxpc3QgZGF0YSB0b29rICVmIHNlY29uZHMi
LCBkdXJhdGlvbik7CiAgICAgICAgIAotICAgIHJldHVybiBbWyhOU0RhdGEgKilkYXRhLmdldCgp
IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoKE5TRGF0YSAqKWRh
dGEuZ2V0KCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCBjMTQ2ZjE2MDVmMzgzOGUy
ODk1YWM5MDMwYzNiZmQ4ZTkxNDhkZmVkLi4wYWM2MGU5OTQzNmFlNzdlZjc1MzBiNjBiZjJlNWNi
ODBlNThhMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCkBAIC0xNzgsMTUgKzE3OCwxNSBAQCAtICh2b2lkKV9hZGRTdWJmcmFtZUFy
Y2hpdmVzOihOU0FycmF5ICopc3ViZnJhbWVBcmNoaXZlcwogLSAoTlNGaWxlV3JhcHBlciAqKV9m
aWxlV3JhcHBlckZvclVSTDooTlNVUkwgKilVUkwKIHsKICAgICBpZiAoW1VSTCBpc0ZpbGVVUkxd
KQotICAgICAgICByZXR1cm4gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W1VS
TCBVUkxCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoXSBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl0g
YXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRXaXRoVVJMOltVUkwgVVJMQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aF0gb3B0aW9u
czowIGVycm9yOm51bGxwdHJdKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKGF1dG8gcmVzb3Vy
Y2UgPSBbc2VsZiBzdWJyZXNvdXJjZUZvclVSTDpVUkxdKQogICAgICAgICByZXR1cm4gW3Jlc291
cmNlIF9maWxlV3JhcHBlclJlcHJlc2VudGF0aW9uXTsKIAogICAgIGlmIChhdXRvIGNhY2hlZFJl
c3BvbnNlID0gW1tzZWxmIF93ZWJWaWV3XSBfY2FjaGVkUmVzcG9uc2VGb3JVUkw6VVJMXSkgewot
ICAgICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRhXV0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRhXV0p
OwogICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpbW2NhY2hlZFJlc3BvbnNl
IHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxlbmFtZV1dOwotICAgICAgICByZXR1cm4gd3JhcHBlcjsK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgCiAgICAg
cmV0dXJuIG5pbDsKQEAgLTUzMiw3ICs1MzIsNyBAQCAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2
ZQogICAgIGlmICghdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5pc0NvbW1pdHRlZCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAKLSAgICByZXR1cm4gW1tbV2ViQXJjaGl2ZSBh
bGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6V2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCpjb3JlKFtzZWxmIHdlYkZyYW1lXSkpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5V2Vi
QXJjaGl2ZTpXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoW3NlbGYgd2Vi
RnJhbWVdKSldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJSZXNvdXJjZSAqKW1haW5SZXNv
dXJjZQpAQCAtNTQwLDcgKzU0MCw3IEBAIC0gKFdlYlJlc291cmNlICopbWFpblJlc291cmNlCiAg
ICAgYXV0byBjb3JlUmVzb3VyY2UgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5S
ZXNvdXJjZSgpOwogICAgIGlmICghY29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBbW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOmNv
cmVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFk
b3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOmNvcmVSZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAq
KXN1YnJlc291cmNlcwpAQCAtNTUzLDcgKzU1Myw3IEBAIC0gKE5TQXJyYXkgKilzdWJyZXNvdXJj
ZXMKIC0gKFdlYlJlc291cmNlICopc3VicmVzb3VyY2VGb3JVUkw6KE5TVVJMICopVVJMCiB7CiAg
ICAgYXV0byBzdWJyZXNvdXJjZSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c3VicmVz
b3VyY2UoVVJMKTsKLSAgICByZXR1cm4gc3VicmVzb3VyY2UgPyBbW1tXZWJSZXNvdXJjZSBhbGxv
Y10gX2luaXRXaXRoQ29yZVJlc291cmNlOnN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCldIGF1
dG9yZWxlYXNlXSA6IG5pbDsKKyAgICByZXR1cm4gc3VicmVzb3VyY2UgPyBhZG9wdE5TKFtbV2Vi
UmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpzdWJyZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpXSkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAodm9pZClhZGRTdWJyZXNv
dXJjZTooV2ViUmVzb3VyY2UgKilzdWJyZXNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2subW0KaW5kZXggMjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1OWE3ODU4MzUw
YS4uMDMwNDI1MDc3NTU2NWU0ZDNlNzg3OGJmOTE0MzA1MDZjMjY3ZmRjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgiCiAKICNpbXBvcnQgIldl
YkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYyLDcgKzYzLDcgQEAgLSAodm9pZClz
dG9wVXBkYXRpbmcKIAogLSAoV2ViRGV2aWNlT3JpZW50YXRpb24qKWxhc3RPcmllbnRhdGlvbgog
ewotICAgIHJldHVybiBbW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3Jl
RGV2aWNlT3JpZW50YXRpb246bV9jb3JlLT5sYXN0T3JpZW50YXRpb24oKV0gYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxsb2NdIGluaXRX
aXRoQ29yZURldmljZU9yaWVudGF0aW9uOm1fY29yZS0+bGFzdE9yaWVudGF0aW9uKCldKS5hdXRv
cmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCAzYzRlNGJiMzk2MDY1ODE3NDg0MzcxYzMwZTQzYzc1YzY2NTI2NTM5
Li5iOWJlN2Q5OTA1ZGFmNTBlZTlmZDUzMDhlOTdmZjNjOWRlY2E5ZTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTIzMzMsNyArMjMzMyw3IEBA
IC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50CiAgICAgaWYg
KCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwg
SGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKLSAgICByZXR1cm4gW1tb
V2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlRnJh
bWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KFdlYkNvcmU6OkludFBvaW50
KHBvaW50KSwgaGl0VHlwZSldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dl
YkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1l
LT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChw
b2ludCksIGhpdFR5cGUpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilfdW5yZWFj
aGFibGVVUkwKQEAgLTI1NjcsNyArMjU2Nyw3IEBAIC0gKFdlYkZyYW1lICopcGFyZW50RnJhbWUK
ICAgICBhdXRvIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmVGcmFtZS0+
dHJlZSgpLnBhcmVudCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWlu
UHRyKGtpdChjb3JlRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKE5TQXJyYXkgKiljaGlsZEZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCA2NGRkNzJlYmFiOThlZWIxYTJmMDZiMjRhNmNm
OWVlNWMxNDFiYjJjLi5jY2M3M2IzNDQyMzI1ZDkwNGQxNDM2ZTUxNGI5ZTNkMzZiMGEzNzY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpA
QCAtMzY5LDcgKzM2OSw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3Njcm9sbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07
CiAjZWxzZQotICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRWaWV3OltbW1dlYkNsaXBWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dIGF1dG9yZWxlYXNlXV07Cisg
ICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6YWRvcHROUyhbW1dlYkNsaXBWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dKS5hdXRvcmVsZWFzZSgpXTsKICNl
bmRpZgogICAgIFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpOT107CiAgICAgW3Njcm9s
bFZpZXcgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpOT107CkBAIC0xMjI5LDcgKzEyMjksNyBAQCAt
ICh2b2lkKV9zZXRDdXN0b21TY3JvbGxWaWV3Q2xhc3M6KENsYXNzKWN1c3RvbUNsYXNzCiAgICAg
YXV0byBkb2N1bWVudFZpZXcgPSByZXRhaW5QdHIoW3NlbGYgZG9jdW1lbnRWaWV3XSk7CiAKICAg
ICBSZXRhaW5QdHI8V2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3PiBzY3JvbGxWaWV3ICA9IGFkb3B0
TlMoW1tjdXN0b21DbGFzcyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbb2xkU2Nyb2xsVmlldyBmcmFt
ZV1dKTsKLSAgICBbc2Nyb2xsVmlldyBzZXRDb250ZW50VmlldzpbW1tXZWJDbGlwVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpbc2Nyb2xsVmlldyBib3VuZHNdXSBhdXRvcmVsZWFzZV1dOworICAg
IFtzY3JvbGxWaWV3IHNldENvbnRlbnRWaWV3OmFkb3B0TlMoW1tXZWJDbGlwVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpbc2Nyb2xsVmlldyBib3VuZHNdXSkuYXV0b3JlbGVhc2UoKV07CiAgICAg
W3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOltvbGRTY3JvbGxWaWV3IGRyYXdzQmFja2dy
b3VuZF1dOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6W29sZFNjcm9s
bFZpZXcgaGFzVmVydGljYWxTY3JvbGxlcl1dOwogICAgIFtzY3JvbGxWaWV3IHNldEhhc0hvcml6
b250YWxTY3JvbGxlcjpbb2xkU2Nyb2xsVmlldyBoYXNIb3Jpem9udGFsU2Nyb2xsZXJdXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KaW5kZXggNDFkNzcxODg5MGVjZWQ1NjdlZmU3Y2FjZDgxNjg5M2Q0M2YyOWJm
Ny4uNGU2N2NkYWRjMGUyNGM4ZWNjODA1MjAxZDllYTQ2ZTcyNGE3YmU2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KQEAgLTIzMSw4ICsyMzEsNyBAQCAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7
CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAog
ICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRh
U291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7Ci0gICAgICAgIE5T
U3RyaW5nICpyZXN1bHQgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJj
aGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICByZXR1cm4gW3Jlc3VsdCBh
dXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgfQogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW19wcml2YXRl
LT5kYXRhU291cmNlIHdlYkZyYW1lXSk7CkBAIC0yNzAsNyArMjY5LDcgQEAgLSAoTlNBdHRyaWJ1
dGVkU3RyaW5nICopYXR0cmlidXRlZFRleHQKIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJp
YnV0ZWRTdHJpbmdGcm9tOihET01Ob2RlICopc3RhcnROb2RlIHN0YXJ0T2Zmc2V0OihpbnQpc3Rh
cnRPZmZzZXQgdG86KERPTU5vZGUgKillbmROb2RlIGVuZE9mZnNldDooaW50KWVuZE9mZnNldAog
ewogICAgIGlmICghc3RhcnROb2RlIHx8ICFlbmROb2RlKQotICAgICAgICByZXR1cm4gW1tbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2Uo
KTsKICAgICBhdXRvIHJhbmdlID0gU2ltcGxlUmFuZ2UgeyB7ICpjb3JlKHN0YXJ0Tm9kZSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCkgfSwgeyAqY29yZShlbmROb2RlKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCkgfSB9OwogICAgIHJldHVybiBlZGl0aW5nQXR0
cmlidXRlZFN0cmluZyhyYW5nZSkuc3RyaW5nLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA0NWFlM2QwY2E0
NmJhZWFlM2Y1MTIxNzQ2NzY1YjJmZTVlOGEwNmFjLi4yMDU0YjY2ZDIwMWFjN2ZiNDhlNGM4ODg1
NjA2YjIyNzNlNDlhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KQEAgLTExNDMsNyArMTE0Myw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhQYXRoczooTlNBcnJheSAqKXBhdGhzCiAKICsgKE5T
QXJyYXkgKilfZXhjbHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uCiB7
Ci0gICAgTlNNdXRhYmxlQXJyYXkgKmVsZW1lbnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOgorICAgIGF1dG8gZWxlbWVudHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgLy8gT21pdCBzdHlsZSBzaW5j
ZSB3ZSB3YW50IHN0eWxlIHRvIGJlIGlubGluZSBzbyB0aGUgZnJhZ21lbnQgY2FuIGJlIGVhc2ls
eSBpbnNlcnRlZC4KICAgICAgICAgQCJzdHlsZSIsCiAgICAgICAgIC8vIE9taXQgeG1sIHNvIHRo
ZSByZXN1bHQgaXMgbm90IFhIVE1MLgpAQCAtMTE1NywxNCArMTE1NywxNCBAQCArIChOU0FycmF5
ICopX2V4Y2x1ZGVkRWxlbWVudHNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbgogICAgICAg
ICAvLyBPbWl0IG9iamVjdCBzbyBubyBmaWxlIGF0dGFjaG1lbnRzIGFyZSBwYXJ0IG9mIHRoZSBm
cmFnbWVudC4KICAgICAgICAgQCJvYmplY3QiLAogI2VuZGlmCi0gICAgICAgIG5pbF07CisgICAg
ICAgIG5pbF0pOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBpZiAoIVdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVu
dEVsZW1lbnRFbmFibGVkKCkpCiAgICAgICAgIFtlbGVtZW50cyBhZGRPYmplY3Q6QCJvYmplY3Qi
XTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFtlbGVtZW50cyBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIGVsZW1lbnRzLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQg
KilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJv
YXJkIGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0IGFsbG93UGxhaW5UZXh0OihCT09MKWFs
bG93UGxhaW5UZXh0CkBAIC0xMjIxLDcgKzEyMjEsNyBAQCAtIChOU1N0cmluZyAqKV9wbGFpblRl
eHRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZAogICAgIGlmIChhdHRy
aWJ1dGVkU3RyaW5nID09IG5pbCAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVn
YWN5UlRGUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpbcGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpXSBkb2N1bWVudEF0
dHJpYnV0ZXM6TlVMTF0pOwogICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5nKQotICAgICAgICByZXR1
cm4gW1tbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1thdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10gY29weV0pLmF1dG9y
ZWxlYXNlKCk7CiAKICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2Fj
eUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCldKSB7CiAgICAgICAgIGlmIChOU1N0cmluZyAqc3Ry
aW5nID0gW1twYXN0ZWJvYXJkIHByb3BlcnR5TGlzdEZvclR5cGU6V2ViQ29yZTo6bGVnYWN5Rmls
ZW5hbWVzUGFzdGVib2FyZFR5cGUoKV0gY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiXG4iXSkK
QEAgLTE4ODAsNyArMTg4MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JF
R0lOCiAtIChOU1N0cmluZyAqKXZpZXc6KE5TVmlldyAqKXZpZXcgc3RyaW5nRm9yVG9vbFRpcDoo
TlNUb29sVGlwVGFnKXRhZyBwb2ludDooTlNQb2ludClwb2ludCB1c2VyRGF0YToodm9pZCAqKWRh
dGEKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIHJldHVybiBb
W19wcml2YXRlLT50b29sVGlwIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbX3ByaXZhdGUtPnRvb2xUaXAgY29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBi
b29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQgKmV2ZW50KQpAQCAtMzM4
Myw3ICszMzgzLDcgQEAgLSAodm9pZClyaWdodE1vdXNlVXA6KE5TRXZlbnQgKilldmVudAogICAg
IC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCBpZiB3ZSBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCB0
aGUgZXZlbnQgd2lsbCBiZSByZWxlYXNlZC4KICAgICAvLyBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0
b3JlbGVhc2luZyBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gbGF0ZXIgaGVy
ZSBvcgogICAgIC8vIGluc2lkZSBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFtz
dXBlciByaWdodE1vdXNlVXA6ZXZlbnRdOwogCkBAIC0zNzIwLDcgKzM3MjAsNyBAQCAtIChOU01l
bnUgKiltZW51Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFu
Y2UgdGhhdCBpZiB3ZSBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCB0aGUgZXZlbnQgd2lsbCBiZSBy
ZWxlYXNlZC4KICAgICAvLyBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZyBwcmV2ZW50
cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gbGF0ZXIgaGVyZSBvcgogICAgIC8vIGluc2lk
ZSBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJl
dGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFtfcHJpdmF0ZS0+Y29tcGxldGlv
bkNvbnRyb2xsZXIgZW5kUmV2ZXJ0aW5nQ2hhbmdlOk5PIG1vdmVMZWZ0Ok5PXTsKIApAQCAtNDA4
MSw3ICs0MDgxLDcgQEAgLSAodm9pZClzY3JvbGxXaGVlbDooV2ViRXZlbnQgKilldmVudAogICAg
IC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFp
bmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJl
dmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0
IGNvZGUuCiAgICAgLy8gRklYTUU6IFdoeSBub3QgZG8gdGhpcyBvbiBpT1MgdG9vPwotICAgIFtb
ZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVs
ZWFzZSgpOwogI2VuZGlmCiAKICAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7
CkBAIC00MTIxLDcgKzQxMjEsNyBAQCAtIChCT09MKWFjY2VwdHNGaXJzdE1vdXNlOihOU0V2ZW50
ICopZXZlbnQKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlz
IGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5n
IGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhl
biBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBm
cm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAg
W1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9y
ZWxlYXNlKCk7CiAKICAgICBOU1ZpZXcgKmhpdFZpZXcgPSBbc2VsZiBfaGl0Vmlld0ZvckV2ZW50
OmV2ZW50XTsKICAgICBXZWJIVE1MVmlldyAqaGl0SFRNTFZpZXcgPSBbaGl0VmlldyBpc0tpbmRP
ZkNsYXNzOltzZWxmIGNsYXNzXV0gPyAoV2ViSFRNTFZpZXcgKiloaXRWaWV3IDogbmlsOwpAQCAt
NDE1MCw3ICs0MTUwLDcgQEAgLSAoQk9PTClzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZl
bnQ6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25k
aW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAg
Ly8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWlu
aW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2
ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQg
Y29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihl
dmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtzZWxmIF9oaXRW
aWV3Rm9yRXZlbnQ6ZXZlbnRdOwogICAgIFdlYkhUTUxWaWV3ICpoaXRIVE1MVmlldyA9IFtoaXRW
aWV3IGlzS2luZE9mQ2xhc3M6W3NlbGYgY2xhc3NdXSA/IChXZWJIVE1MVmlldyAqKWhpdFZpZXcg
OiBuaWw7CkBAIC00MTgxLDcgKzQxODEsNyBAQCAtICh2b2lkKW1vdXNlRG93bjooV2ViRXZlbnQg
KilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMg
ZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcg
YSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVu
IGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZy
b20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBb
W2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3Jl
bGVhc2UoKTsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiBwcm90ZWN0b3Ig
PSBzZWxmOwpAQCAtNDI4Nyw3ICs0Mjg3LDcgQEAgLSAodm9pZCltb3VzZURyYWdnZWQ6KE5TRXZl
bnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRo
aXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hp
bmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0
aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0
IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAg
ICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0
b3JlbGVhc2UoKTsKIAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgTlNJbnB1dE1hbmFnZXIgKmN1cnJlbnRJbnB1dE1hbmFnZXIgPSBbTlNJbnB1dE1hbmFnZXIg
Y3VycmVudElucHV0TWFuYWdlcl07CkBAIC00MzYzLDE0ICs0MzYzLDE0IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogewotICAgIE5TRmlsZVdyYXBwZXIgKndy
YXBwZXIgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IHdyYXBwZXI7CiAgICAg
TlNVUkwgKmRyYWdnaW5nRWxlbWVudFVSTCA9IG5pbDsKICAgICAKICAgICBpZiAoYXV0byB0aWZm
UmVzb3VyY2UgPSBfcHJpdmF0ZS0+cHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2UpIHsKICAgICAg
ICAgaWYgKGF1dG8qIGJ1ZmZlciA9IHRpZmZSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewog
ICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSB0aWZmUmVzb3VyY2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0g
W3Jlc3BvbnNlIFVSTF07Ci0gICAgICAgICAgICB3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nKiBmaWxlbmFtZSA9IFty
ZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZV07CiAgICAgICAgICAgICBOU1N0cmluZyogdHJ1ZUV4
dGVuc2lvbih0aWZmUmVzb3VyY2UtPmltYWdlKCktPmZpbGVuYW1lRXh0ZW5zaW9uKCkpOwogICAg
ICAgICAgICAgaWYgKCFtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50KGZpbGVuYW1lLCB0cnVl
RXh0ZW5zaW9uKSkKQEAgLTQ0NTgsNyArNDQ1OCw3IEBAIC0gKHZvaWQpbW91c2VVcDooV2ViRXZl
bnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRo
aXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hp
bmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0
aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0
IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAg
ICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0
b3JlbGVhc2UoKTsKICNlbmRpZgogCiAgICAgW3NlbGYgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07
CkBAIC00OTM5LDcgKzQ5MzksNyBAQCAtICh2b2lkKWtleURvd246KFdlYkV2ZW50ICopZXZlbnQK
ICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdp
bGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2
ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVs
ZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNp
bmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7
CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gc2VsZlByb3RlY3RvciA9IHNl
bGY7CkBAIC00OTgyLDcgKzQ5ODIsNyBAQCAtICh2b2lkKWtleVVwOihXZWJFdmVudCAqKWV2ZW50
CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3
aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBl
dmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3Jl
bGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVz
aW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQg
cmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgp
OwogI2VuZGlmCiAKICAgICBCT09MIGV2ZW50V2FzU2VudFRvV2ViQ29yZSA9IChfcHJpdmF0ZS0+
a2V5RG93bkV2ZW50ID09IGV2ZW50KTsKQEAgLTUwMDIsNyArNTAwMiw3IEBAIC0gKHZvaWQpZmxh
Z3NDaGFuZ2VkOihOU0V2ZW50ICopZXZlbnQKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQg
cmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFu
ZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUu
IFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZl
bnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3Ig
QXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRh
aW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+
IHNlbGZQcm90ZWN0b3IgPSBzZWxmOwogCkBAIC01MDk3LDcgKzUwOTcsNyBAQCAtIChOU0RpY3Rp
b25hcnkgKilfZm9udEF0dHJpYnV0ZXNGcm9tRm9udFBhc3RlYm9hcmQKICAgICBpZiAoZGF0YSA9
PSBuaWwgfHwgW2RhdGEgbGVuZ3RoXSA9PSAwKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIC8v
IE5TVGV4dFZpZXcgZG9lcyBzb21ldGhpbmcgbW9yZSBlZmZpY2llbnQgYnkgcGFyc2luZyB0aGUg
YXR0cmlidXRlcyBvbmx5LCBidXQgdGhhdCdzIG5vdCBhdmFpbGFibGUgaW4gQVBJLgotICAgIE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpkYXRhIGRvY3VtZW50QXR0cmlidXRlczpOVUxMXSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURjpkYXRhIGRvY3VtZW50QXR0cmlidXRlczpOVUxMXSk7CiAgICAgaWYgKHN0cmluZyA9
PSBuaWwgfHwgW3N0cmluZyBsZW5ndGhdID09IDApCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIFtzdHJpbmcgZm9udEF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIDEpXTsK
QEAgLTUyNjAsNyArNTI2MCw3IEBAIC0gKEJPT0wpcGVyZm9ybUtleUVxdWl2YWxlbnQ6KE5TRXZl
bnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRo
aXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hp
bmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0
aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0
IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAg
ICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0
b3JlbGVhc2UoKTsKIAogICAgIEJPT0wgZXZlbnRXYXNTZW50VG9XZWJDb3JlID0gKF9wcml2YXRl
LT5rZXlEb3duRXZlbnQgPT0gZXZlbnQpOwogICAgIEJPT0wgcmV0ID0gTk87CkBAIC02MzE2LDcg
KzYzMTYsNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKil0ZXh0U3RvcmFnZQogICAgIExPRyhU
ZXh0SW5wdXQsICJ0ZXh0U3RvcmFnZSAtPiBcIiVAXCIiLCByZXN1bHQgPyBbcmVzdWx0IHN0cmlu
Z10gOiBAIiIpOwogICAgIAogICAgIC8vIFdlIGhhdmUgdG8gcmV0dXJuIGFuIGVtcHR5IHN0cmlu
ZyByYXRoZXIgdGhhbiBudWxsIHRvIHByZXZlbnQgVFNNIGZyb20gY2FsbGluZyAtc3RyaW5nCi0g
ICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6IFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQgOiBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKQEAgLTY5NjMsOSArNjk2Myw5IEBAIC0gKE5TUmVjdClz
ZWxlY3Rpb25JbWFnZVJlY3QKIC0gKE5TQXJyYXkgKilwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rp
b24KIHsKICAgICBpZiAoW3NlbGYgX2NhblNtYXJ0Q29weU9yRGVsZXRlXSkgewotICAgICAgICBO
U011dGFibGVBcnJheSAqdHlwZXMgPSBbW1tbc2VsZiBjbGFzc10gX3NlbGVjdGlvblBhc3RlYm9h
cmRUeXBlc10gbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byB0eXBlcyA9
IGFkb3B0TlMoW1tbc2VsZiBjbGFzc10gX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBlc10gbXV0YWJs
ZUNvcHldKTsKICAgICAgICAgW3R5cGVzIGFkZE9iamVjdDpXZWJTbWFydFBhc3RlUGJvYXJkVHlw
ZV07Ci0gICAgICAgIHJldHVybiB0eXBlczsKKyAgICAgICAgcmV0dXJuIHR5cGVzLmF1dG9yZWxl
YXNlKCk7CiAgICAgfQogICAgIHJldHVybiBbW3NlbGYgY2xhc3NdIF9zZWxlY3Rpb25QYXN0ZWJv
YXJkVHlwZXNdOwogfQpAQCAtNzAwMiw3ICs3MDAyLDcgQEAgLSAoTlNTdHJpbmcgKilzdHJpbmcK
IC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9sZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTooRE9N
Tm9kZSAqKXN0YXJ0Q29udGFpbmVyIG9mZnNldDooaW50KXN0YXJ0T2Zmc2V0IHRvOihET01Ob2Rl
ICopZW5kQ29udGFpbmVyIG9mZnNldDooaW50KWVuZE9mZnNldAogewogICAgIGlmICghc3RhcnRD
b250YWluZXIgfHwgIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFtbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAg
cmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmcoV2ViQ29yZTo6U2ltcGxlUmFuZ2UgeyB7ICpjb3JlKHN0
YXJ0Q29udGFpbmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSB9LAogICAg
ICAgICB7ICpjb3JlKGVuZENvbnRhaW5lciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZz
ZXQpIH0gfSkuc3RyaW5nLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC03MDExLDcgKzcwMTEsNyBAQCAt
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nCiB7CiAgICAgYXV0byBkb2N1
bWVudCA9IGNvcmUoW1tzZWxmIF9mcmFtZV0gRE9NRG9jdW1lbnRdKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQotICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudCk7CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0g
YXR0cmlidXRlZFN0cmluZyhyYW5nZSkuc3RyaW5nKQogICAgICAgICByZXR1cm4gcmVzdWx0LmF1
dG9yZWxlYXNlKCk7CkBAIC03MDIyLDEwICs3MDIyLDEwIEBAIC0gKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKXNlbGVjdGVkQXR0cmlidXRlZFN0cmluZwogewogICAgIGF1dG8gZnJhbWUgPSBjb3JlKFtz
ZWxmIF9mcmFtZV0pOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwog
ICAgIGF1dG8gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5n
ZSgpOwogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIGlmIChh
dXRvIHJlc3VsdCA9IGF0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmcpCiAgICAgICAgIHJl
dHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4gZWRpdGluZ0F0dHJpYnV0ZWRT
dHJpbmcoKnJhbmdlKS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsKQEAgLTcwNjcsNyArNzA2Nyw3IEBA
IC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50IGFsbG93U2hh
ZG93Q29udGVudDooQk9PTClhbGxvd1NoCiAgICAgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpS
ZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsK
ICAgICBpZiAoIWFsbG93U2hhZG93Q29udGVudCkKICAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCk7Ci0gICAgcmV0dXJuIFtb
W1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZy
YW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCB7IHBvaW50
IH0sIGhpdFR5cGUpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJFbGVt
ZW50RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZl
bnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQgeyBwb2ludCB9LCBoaXRU
eXBlKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVUludGVnZXIpY291bnRNYXRjaGVzRm9y
VGV4dDooTlNTdHJpbmcgKilzdHJpbmcgaW5ET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBvcHRp
b25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zIGxpbWl0OihOU1VJbnRlZ2VyKWxpbWl0IG1hcmtN
YXRjaGVzOihCT09MKW1hcmtNYXRjaGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5k
ZXggNTNkZjRjYmJhMTFkZjVjOTJiMmExNzQwYmE4OTI4MGI4YjBhZjMzNS4uZjlhOWU0NmM5MzU4
NmE4NGE2ZTE3NDI5ZjRiNTQ3MGNiOWVkZTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbQpAQCAtMjcwLDcgKzI3MCw3IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXpl
ckRpZENvbXBsZXRlQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSCiAtIChpZCA8
TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNv
bnRyb2xsZXIKIHsKICAgICBpZiAoX2NvbnRlbnRQcmV2ZW50c0RlZmF1bHQpCi0gICAgICAgIHJl
dHVybiBbW1tXZWJBbmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQW5pbWF0aW9uQ29udHJvbGxlciBhbGxvY10g
aW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAKICAgICBOU1VSTCAqdXJsID0gX2hpdFRlc3RSZXN1bHQu
YWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgU3RyaW5nIGFic29sdXRlVVJMU3RyaW5nID0gW3VybCBh
YnNvbHV0ZVN0cmluZ107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk5vdGlmaWNhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTm90aWZpY2F0aW9uLm1tCmluZGV4IGQxZmY4MzViOTk1MTEzZTI0N2E5ZjcwZDQzMzU5Zjg3
NzJjMTZmNDkuLjI2YjExMmViZmEwMTgyNjE1NWE0MGYxMTA0OGI0NjFhYjRhMjY0NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1t
CkBAIC0xNTAsNyArMTUwLDcgQEAgLSAoTlNTdHJpbmcgKilkaXIKIC0gKFdlYlNlY3VyaXR5T3Jp
Z2luICopb3JpZ2luCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgcmV0dXJuIFtb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46
Y29yZShzZWxmKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpXSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxv
Y10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmNvcmUoc2VsZiktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQog
ICAgIHJldHVybiBuaWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQppbmRleCBiMDg0YmQzMDE1YTYwNTMyMzdlNmQxN2YyMDdhNjA4N2M1
MDA3OTc1Li5mNzNhZTlhMGQwMDZkMjA2Y2MxNmQyODljNTBlN2UxOWZhMDRiYmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC04ODMsMTMg
Kzg4MywxMyBAQCAtIChOU0ltYWdlICopc2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0OihC
T09MKWZvcmNlQmxhY2tUZXh0CiAgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0
ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgdmFsdWU6W05TQ29sb3IgY29sb3JXaXRo
RGV2aWNlV2hpdGU6MC4wZiBhbHBoYToxLjBmXSByYW5nZTp3aG9sZVN0cmluZ1JhbmdlXTsKICAg
ICBbYXR0cmlidXRlZFN0cmluZyBlbmRFZGl0aW5nXTsKICAgICAKLSAgICBOU0ltYWdlKiBzZWxl
Y3Rpb25JbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpbc2VsZiBzZWxlY3Rp
b25SZWN0XS5zaXplXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZWxlY3Rpb25JbWFnZSA9IGFk
b3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6W3NlbGYgc2VsZWN0aW9uUmVjdF0u
c2l6ZV0pOwogICAgIAogICAgIFtzZWxlY3Rpb25JbWFnZSBsb2NrRm9jdXNdOwogICAgIFthdHRy
aWJ1dGVkU3RyaW5nIGRyYXdBdFBvaW50Ok5TWmVyb1BvaW50XTsKICAgICBbc2VsZWN0aW9uSW1h
Z2UgdW5sb2NrRm9jdXNdOwogCi0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlOworICAgIHJldHVy
biBzZWxlY3Rpb25JbWFnZS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9u
SW1hZ2VSZWN0CkBAIC0xMzMzLDcgKzEzMzMsNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilf
c2NhbGVkQXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopdW5zY2FsZWRBdAog
ICAgIGlmIChzY2FsZUZhY3RvciA9PSAxLjApCiAgICAgICAgIHJldHVybiB1bnNjYWxlZEF0dHJp
YnV0ZWRTdHJpbmc7CiAgICAgCi0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqcmVzdWx0
ID0gW1t1bnNjYWxlZEF0dHJpYnV0ZWRTdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW3Vuc2NhbGVkQXR0cmlidXRlZFN0cmluZyBtdXRh
YmxlQ29weV0pOwogICAgIHVuc2lnbmVkIGludCBsZW5ndGggPSBbcmVzdWx0IGxlbmd0aF07CiAg
ICAgTlNSYW5nZSBlZmZlY3RpdmVSYW5nZSA9IE5TTWFrZVJhbmdlKDAsMCk7CiAgICAgCkBAIC0x
MzQ1LDcgKzEzNDUsNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfc2NhbGVkQXR0cmlidXRl
ZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopdW5zY2FsZWRBdAogICAgICAgICAgICAgLy8g
RklYTUU6IFdlIGNhbid0IHNjYWxlIHRoZSBmb250IGlmIHdlIGRvbid0IGtub3cgd2hhdCBpdCBp
cy4gV2Ugc2hvdWxkIGFsd2F5cyBrbm93IHdoYXQgaXQgaXMsCiAgICAgICAgICAgICAvLyBidXQg
c29tZXRpbWVzIGRvbid0IGR1ZSB0byBQREZLaXQgaXNzdWUgNTA4OTQxMS4gV2hlbiB0aGF0J3Mg
YWRkcmVzc2VkLCB3ZSBjYW4gcmVtb3ZlIHRoaXMKICAgICAgICAgICAgIC8vIGVhcmx5IGNvbnRp
bnVlLgotICAgICAgICAgICAgTE9HX0VSUk9SKCJubyBmb250IGF0dHJpYnV0ZSBmb3VuZCBpbiBy
YW5nZSAlQCBmb3IgYXR0cmlidXRlZCBzdHJpbmcgXCIlQFwiIG9uIHBhZ2UgJUAgKHNlZSByYWRh
ciA1MDg5NDExKSIsIE5TU3RyaW5nRnJvbVJhbmdlKGVmZmVjdGl2ZVJhbmdlKSwgcmVzdWx0LCBb
W2RhdGFTb3VyY2UgcmVxdWVzdF0gVVJMXSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIm5vIGZv
bnQgYXR0cmlidXRlIGZvdW5kIGluIHJhbmdlICVAIGZvciBhdHRyaWJ1dGVkIHN0cmluZyBcIiVA
XCIgb24gcGFnZSAlQCAoc2VlIHJhZGFyIDUwODk0MTEpIiwgTlNTdHJpbmdGcm9tUmFuZ2UoZWZm
ZWN0aXZlUmFuZ2UpLCByZXN1bHQuZ2V0KCksIFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTM1NCw3ICsx
MzU0LDcgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopX3NjYWxlZEF0dHJpYnV0ZWRTdHJpbmc6
KE5TQXR0cmlidXRlZFN0cmluZyAqKXVuc2NhbGVkQXQKICAgICB9CiAgICAgW3Jlc3VsdCBlbmRF
ZGl0aW5nXTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfc2V0VGV4dE1hdGNoZXM6KE5TQXJyYXkgKilhcnJh
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5k
ZXggZWYxMDk4NmRhODc1M2FiMzEwOWUwYWYxNjIxYjMwMTJmNGU5ZTZhNi4uMTIxOThmNDAxZWE4
YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zMDIsNyArMzAyLDcgQEAgLSAoaWQpX2lu
aXRXaXRoRGF0YTooTlNEYXRhICopZGF0YQogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAot
ICAgIGF1dG8gY29yZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29weURhdGEgPyBbW2RhdGEgY29weV0gYXV0b3JlbGVhc2VdIDogZGF0YSks
IFVSTCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwor
ICAgIGF1dG8gY29yZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29weURhdGEgPyBhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSA6IGRhdGEp
LCBVUkwsIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsK
ICAgICBpZiAoIWNvcmVSZXNvdXJjZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTMzOCwxMiArMzM4LDEyIEBAIC0gKE5TU3RyaW5nICopX3N1Z2dl
c3RlZEZpbGVuYW1lCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChOU0ZpbGVXcmFwcGVy
ICopX2ZpbGVXcmFwcGVyUmVwcmVzZW50YXRpb24KIHsKLSAgICBOU0ZpbGVXcmFwcGVyICp3cmFw
cGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OltzZWxmIGRhdGFdXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpbc2VsZiBk
YXRhXV0pOwogICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtzZWxmIF9zdWdnZXN0ZWRGaWxlbmFt
ZV07CiAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgIGZp
bGVuYW1lID0gW1tzZWxmIFVSTF0gX3dlYmtpdF9zdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlw
ZTpbc2VsZiBNSU1FVHlwZV1dOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOmZp
bGVuYW1lXTsKLSAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVs
ZWFzZSgpOwogfQogI2VuZGlmCiAKQEAgLTM1NCw3ICszNTQsNyBAQCAtIChOU1VSTFJlc3BvbnNl
ICopX3Jlc3BvbnNlCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7CiAgICAgaWYg
KF9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJlc3BvbnNlID0gX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7Ci0gICAgcmV0dXJuIHJlc3Bv
bnNlID8gcmVzcG9uc2UgOiBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07ICAgICAgICAKKyAgICByZXR1cm4gcmVzcG9uc2UgPyByZXNwb25zZSA6IGFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJp
bmcgKilfc3RyaW5nVmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlNjcmlwdFdvcmxkLm1tCmluZGV4IDExODA4MDI5ZjY2NzVhMDBjNGJmMGNmYWY2MmUxOTA2
N2Q1MmU5M2EuLjBhYjQ5MDQxYTZlZmYxN2UwZGNkY2Q3NmMyMzI4ZDM4YTE2YjYzYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0V29ybGQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5tbQpA
QCAtOTIsNyArOTIsNyBAQCArIChXZWJTY3JpcHRXb3JsZCAqKXN0YW5kYXJkV29ybGQKIAogKyAo
V2ViU2NyaXB0V29ybGQgKil3b3JsZAogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0XSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoV2ViU2NyaXB0V29ybGQgKilzY3JpcHRXb3JsZEZvckds
b2JhbENvbnRleHQ6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0CkBAIC0xMjQsNyArMTI0LDcg
QEAgKyAoV2ViU2NyaXB0V29ybGQgKilmaW5kT3JDcmVhdGVXb3JsZDooV2ViQ29yZTo6RE9NV3Jh
cHBlcldvcmxkJil3b3JsZAogICAgIGlmIChXZWJTY3JpcHRXb3JsZCAqZXhpc3RpbmdXb3JsZCA9
IGFsbFdvcmxkcygpLmdldCgmd29ybGQpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdXb3JsZDsK
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFdvcmxkOndvcmxkXSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFdvcmxkOndv
cmxkXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Lm1tCmluZGV4IGEwZGMyYjhkYTllZmJiNjhhMjhmZmYzNWEzMWQ5NTI1YTI3MmI0MzMuLjJiMThm
NjljYzAxM2Q3ODg2MTdiOTJlMDYxZWQ4NzFjY2JiODJkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCAtIChpZClpbml0CiAgICAgX3BsYXliYWNr
SW50ZXJmYWNlID0gV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNyZWF0
ZSgqX3BsYXliYWNrTW9kZWwpOwogICAgIF9jb250ZW50T3ZlcmxheSA9IGFkb3B0TlMoW1tOU1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOwogICAgIF9jb250ZW50T3Zlcmxh
eS5nZXQoKS5sYXllckNvbnRlbnRzUmVkcmF3UG9saWN5ID0gTlNWaWV3TGF5ZXJDb250ZW50c1Jl
ZHJhd05ldmVyOwotICAgIF9jb250ZW50T3ZlcmxheS5nZXQoKS5sYXllciA9IFtbW1dlYlZpZGVv
RnVsbHNjcmVlbk92ZXJsYXlMYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIF9j
b250ZW50T3ZlcmxheS5nZXQoKS5sYXllciA9IGFkb3B0TlMoW1tXZWJWaWRlb0Z1bGxzY3JlZW5P
dmVybGF5TGF5ZXIgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIFtfY29udGVudE92
ZXJsYXkgc2V0V2FudHNMYXllcjpZRVNdOwogICAgIFtfY29udGVudE92ZXJsYXkgc2V0QXV0b3Jl
c2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwog
ICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IDEzZTFmOGJlOWI1OWFhNmEzZWM4MGJkNDEyMmJhNDY3NjRiODc0
ZmEuLjVhY2I1ZDlkZDhjNDdhMTAwMDM0YmZhNmVmYWI2NzdmMWIxNWM4OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI3MzAsMTEgKzI3MzAsMTEg
QEAgLSAoTlNNZW51ICopX21lbnVGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50IGRl
ZmF1bHRJdGVtczooTlNBcnJheSAqKWl0ZW0KICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgTlNNZW51ICptZW51ID0gW1tOU01lbnUgYWxsb2NdIGluaXRdOworICAg
IGF1dG8gbWVudSA9IGFkb3B0TlMoW1tOU01lbnUgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgW21lbnUgYWRkSXRlbTpbbWVu
dUl0ZW1zIG9iamVjdEF0SW5kZXg6aV1dOwogCi0gICAgcmV0dXJuIFttZW51IGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gbWVudS5hdXRvcmVsZWFzZSgpOwogfQogI2VuZGlmCiAKQEAgLTMyMTgs
NyArMzIxOCw3IEBAICsgKHZvaWQpX3JlZ2lzdGVyVmlld0NsYXNzOihDbGFzcyl2aWV3Q2xhc3Mg
cmVwcmVzZW50YXRpb25DbGFzczooQ2xhc3MpcmVwcmVzZW50CiAgICAgaWYgKHNjaGVtZXNXaXRo
UmVwcmVzZW50YXRpb25zU2V0ID09IG5pbCkgewogICAgICAgICBzY2hlbWVzV2l0aFJlcHJlc2Vu
dGF0aW9uc1NldCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKICAgICB9Ci0gICAgW3Nj
aGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0IGFkZE9iamVjdDpbW1tVUkxTY2hlbWUgbG93ZXJj
YXNlU3RyaW5nXSBjb3B5XSBhdXRvcmVsZWFzZV1dOworICAgIFtzY2hlbWVzV2l0aFJlcHJlc2Vu
dGF0aW9uc1NldCBhZGRPYmplY3Q6YWRvcHROUyhbW1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJpbmdd
IGNvcHldKS5nZXQoKV07CiB9CiAKICsgKE5TU3RyaW5nICopX2dlbmVyYXRlZE1JTUVUeXBlRm9y
VVJMU2NoZW1lOihOU1N0cmluZyAqKVVSTFNjaGVtZQpAQCAtMzYyNiwxMCArMzYyNiw5IEBAIC0g
KE5TVVJMICopX2Rpc3BsYXlVUkwKICAgICBXZWJEYXRhU291cmNlICpkYXRhU291cmNlID0gW2Zy
YW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV07CiAgICAgaWYgKCFkYXRhU291cmNlKQogICAgICAg
ICBkYXRhU291cmNlID0gW2ZyYW1lIGRhdGFTb3VyY2VdOwotICAgIE5TVVJMICp1bnJlYWNoYWJs
ZVVSTCA9IFtkYXRhU291cmNlIHVucmVhY2hhYmxlVVJMXTsKLSAgICBOU1VSTCAqVVJMID0gdW5y
ZWFjaGFibGVVUkwgIT0gbmlsID8gdW5yZWFjaGFibGVVUkwgOiBbW2RhdGFTb3VyY2UgcmVxdWVz
dF0gVVJMXTsKLSAgICBbW1VSTCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gVVJM
OworICAgIGF1dG8gdW5yZWFjaGFibGVVUkwgPSByZXRhaW5QdHIoW2RhdGFTb3VyY2UgdW5yZWFj
aGFibGVVUkxdKTsKKyAgICBhdXRvIHVybCA9IHVucmVhY2hhYmxlVVJMICE9IG5pbCA/IHVucmVh
Y2hhYmxlVVJMIDogcmV0YWluUHRyKFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxdKTsKKyAgICBy
ZXR1cm4gdXJsLmF1dG9yZWxlYXNlKCk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIApAQCAtNDA5MCw3ICs0MDg5LDcgQEAgLSAoV2ViVGV4dEl0ZXJhdG9yICopdGV4dEl0ZXJh
dG9yRm9yUmVjdDooTlNSZWN0KXJlY3QKICAgICBhdXRvIGludFJlY3QgPSBXZWJDb3JlOjplbmNs
b3NpbmdJbnRSZWN0KHJlY3QpOwogICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uKGNvcmVGcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoaW50UmVjdC5taW5YTWlu
WUNvcm5lcigpKSwKICAgICAgICAgY29yZUZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChp
bnRSZWN0Lm1heFhNYXhZQ29ybmVyKCkpKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIHJldHVy
biBbW1tXZWJUZXh0SXRlcmF0b3IgYWxsb2NdIGluaXRXaXRoUmFuZ2U6a2l0KHJhbmdlKV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViVGV4dEl0ZXJhdG9yIGFsbG9jXSBp
bml0V2l0aFJhbmdlOmtpdChyYW5nZSldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCkBAIC01MjYyLDE0ICs1MjYxLDE0IEBAICsgKE5TQXJyYXkgKilNSU1F
VHlwZXNTaG93bkFzSFRNTAogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnZpZXdUeXBlcyA9IFtX
ZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVTXTsKICAgICBO
U0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbdmlld1R5cGVzIGtleUVudW1lcmF0b3JdOwogICAg
IGlkIGtleTsKLSAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gYXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIHdoaWxlICgoa2V5ID0gW2VudW1lcmF0
b3IgbmV4dE9iamVjdF0pKSB7CiAgICAgICAgIGlmIChbdmlld1R5cGVzIG9iamVjdEZvcktleTpr
ZXldID09IFtXZWJIVE1MVmlldyBjbGFzc10pCiAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OmtleV07CiAgICAgfQogCi0gICAgcmV0dXJuIGFycmF5OworICAgIHJldHVybiBhcnJheS5hdXRv
cmVsZWFzZSgpOwogfQogCiArICh2b2lkKXNldE1JTUVUeXBlc1Nob3duQXNIVE1MOihOU0FycmF5
ICopTUlNRVR5cGVzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMzQ3NDg5NWFlMTg1OGMwM2ViYTcwY2VlYmFkMWQxMTUzMDFiNWNjZi4uZTI2YzJh
YmM3YWJiYWViMzA1YWFjYjNmNGVjNGY4OTVmYTZjNGVhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMyBAQAorMjAyMS0wMi0x
NyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBs
aWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGV2ZW4gZnVydGhlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIGV4
cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZnVydGhlciBieSB1
c2luZyBSZXRhaW5QdHIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRl
clRyZWVCcm93c2VyVmlldy5tbToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxW
aWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChjcmVhdGVKU1N0cmluZ1JlZik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAo
Y3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChkdW1wRnJhbWVzQXNU
ZXh0KToKKyAgICAgICAgKGR1bXApOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZVdpbmRvdy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKCtbU3ludGhldGljVG91Y2ggdG91Y2hXaXRo
TG9jYXRpb246cGhhc2U6aWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29u
dHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvUG9saWN5RGVsZWdhdGUubW06CisgICAgICAgIChkaXNwb3NpdGlvblR5cGVGcm9tQ29udGVu
dERpc3Bvc2l0aW9uSGVhZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZp
ZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3Vy
Y2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6XSk6Cisg
ICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2Vy
aWFsaXplck1hYy5tbToKKyAgICAgICAgKCtbRXZlbnRTZXJpYWxpemVyIGRpY3Rpb25hcnlGb3JF
dmVudDpyZWxhdGl2ZVRvVGltZTpdKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29h
L0xheW91dFRlc3RTcGVsbENoZWNrZXIubW06CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgc2V0UmVzdWx0c0Zyb21KU1ZhbHVlOmluQ29udGV4dDpdKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dHJpZ2dlckdDKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OldlYkNvcmVOU1VSTFNlc3Npb25UZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L21hYy9Db250ZXh0TWVudUltZ1dpdGhWaWRlby5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVGb3JtRGVsZWdhdGVQbHVnSW4ubW06
CisgICAgICAgICgtW0J1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbiBfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjp3aWxsQmVnaW5JbnB1dFNlc3Npb25Gb3JFbGVtZW50Omlu
RnJhbWU6dXNlcklzSW50ZXJhY3Rpbmc6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW06CisgICAgICAgIChyZWFkTWFya3VwRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW06CisgICAgICAgICgtW0NvbnRl
bnRSdWxlTGlzdE5vdGlmaWNhdGlvbkRlbGVnYXRlIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNr
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGV4dE1l
bnVzLm1tOgorICAgICAgICAoLVtUZXN0Q29udGV4dE1lbnVVSURlbGVnYXRlIHdlYlZpZXc6Y29u
dGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bVGVzdENvbnRleHRNZW51QVBJQmVmb3JlU1BJVUlEZWxlZ2F0ZSB3ZWJWaWV3OmNv
bnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1Rlc3RDb250ZXh0TWVudVN1Z2dlc3RlZEFjdGlvbnNVSURlbGVnYXRlIHdlYlZp
ZXc6Y29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1t
OgorICAgICAgICAocmVhZEhUTUxTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25z
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EaXNwbGF5TmFtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3V2l0aERvd25sb2FkTW9uaXRvclNwZWVkTXVs
dGlwbGllcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptdXRhdGVGaWxlKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICgtW0luQXBw
QnJvd3NlclNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nl
c3MubW06CisgICAgICAgIChnZXROZXh0TWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHkubW06CisgICAgICAgIChnZXROZXh0TWVzc2FnZSk6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlRlbXBG
aWxlU2l6ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3
b3JrUHJvY2Vzcy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRhU3Rv
cmUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3
VGltZW91dC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICgtW1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5k
bGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1tOgorICAgICAgICAoK1tUZXN0U2Vy
dmljZUxvb2t1cFJlc3VsdCByZXN1bHRXaXRoUHJvdmlkZXI6cGhpc2hpbmc6bWFsd2FyZTp1bndh
bnRlZFNvZnR3YXJlOl0pOgorICAgICAgICAoK1tUZXN0TG9va3VwUmVzdWx0IHJlc3VsdFdpdGhS
ZXN1bHRzOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgICgtW1NXQ3VzdG9t
VXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjpwcmVmZXJlbmNlczp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VXZWJWaWV3V2l0aCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
eHRNYW5pcHVsYXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKC1bVUlUZXN0RGVsZWdhdGUgd2ViVmlldzpzdGFydFVSTFNj
aGVtZVRhc2s6XSk6CisgICAgICAgICgtW01vZGFsRGVsZWdhdGUgd2ViVmlldzpjcmVhdGVXZWJW
aWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0dXJlczpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50
Q29udHJvbGxlci5tbToKKyAgICAgICAgKHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11
bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtB
c3luY1NjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTpyZXBseUhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbToKKyAgICAgICAgKHBsYXRmb3JtQ29weVJpY2hUZXh0V2l0aEltYWdlKToKKyAgICAgICAg
KHBsYXRmb3JtSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBfd2ViVmlldzpjb25maWd1cmF0aW9uRm9yTG9jYWxJ
bnNwZWN0b3I6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1BERlZpZXcubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tOgorICAgICAgICAoLVtUYXNr
U2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1b
U3luY0Vycm9yU2NoZW1lIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAo
LVtGcmFtZVNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW06CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURh
dGFzdG9yZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViR0xQb2xpY3kubW06CisgICAgICAgICgt
W1dlYkdMVGVzdERlbGVnYXRlIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLm1tOgorICAgICAgICAoZ2V0TmV4dE1lc3NhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAg
ICAgICAoZ2V0TmV4dE1lc3NhZ2UpOgorICAgICAgICAocnVuV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tOgorICAgICAgICAoLVtDb250ZW50QmxvY2tp
bmdXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246cHJlZmVyZW5jZXM6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtBdXRv
cGxheVBvbGljaWVzRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bQXN5bmNBdXRv
cGxheVBvbGljaWVzRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAoLVtUZXN0U2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToK
KyAgICAgICAgKHJlc3BvbmQpOgorICAgICAgICAoLVtDdXN0b21IZWFkZXJGaWVsZHNEZWxlZ2F0
ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJlZmVyZW5jZXM6ZGVj
aXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtDdXN0b21Vc2VyQWdlbnREZWxlZ2F0ZSBfd2Vi
VmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bQ3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudERlbGVnYXRlIF93
ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246dXNlckluZm86ZGVjaXNpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybURlbGVnYXRlIF93
ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246dXNlckluZm86ZGVjaXNpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkRl
bGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJlZmVyZW5j
ZXM6dXNlckluZm86ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtQb3BVcFBvbGljaWVz
RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJlZmVyZW5j
ZXM6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvaU9TTW91c2VTdXBwb3J0Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL0RhdGVUaW1lSW5wdXRzQWNjZXNz
b3J5Vmlld1Rlc3RzLm1tOgorICAgICAgICAoY2VsbEZvclJvd0F0SW5kZXhQYXRoKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6c3dpenpsZWRSZXNpemFibGVTbmFwc2hvdFZpZXdGcm9tUmVjdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5tbToKKyAgICAgICAgKC1bSW5zcGVjdG9yQmFyQ29u
dHJvbGxlciBjb252ZXJ0QXR0cmlidXRlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9KYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bSmF2YXNjcmlw
dFVSTE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJh
dGlvbjpmb3JOYXZpZ2F0aW9uQWN0aW9uOndpbmRvd0ZlYXR1cmVzOl0pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW06CisgICAgICAg
ICgrW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxv
Y2s6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRUZXN0SW1hZ2UpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1dLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdJY29uTG9hZGluZy5tbToKKyAgICAg
ICAgKGltYWdlRnJvbURhdGEpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBy
b3RvY29sLm1tOgorICAgICAgICAoYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAg
ICgrW1Rlc3RQcm90b2NvbCBhZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzXSk6CisgICAgICAgICgr
W1Rlc3RQcm90b2NvbCBzZXRBZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzOl0pOgorICAgICAgICAo
LVtUZXN0UHJvdG9jb2wgc3RhcnRMb2FkaW5nXSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgb2JqZWN0QnlDYWxs
aW5nQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmVycm9yOl0pOgorICAgICAgICAoLVtUZXN0
V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5p
dFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbToKKyAg
ICAgICAgKC1bTW9ja0Ryb3BTZXNzaW9uIGluaXRXaXRoUHJvdmlkZXJzOmxvY2F0aW9uOndpbmRv
dzphbGxvd01vdmU6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGluaXRXaXRo
V2ViVmlld0ZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2lt
dWxhdG9yIF93ZWJWaWV3OndpbGxVcGRhdGVEcm9wUHJvcG9zYWxUb1Byb3Bvc2FsOmZvclNlc3Np
b246XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JN
YWMubW06CisgICAgICAgIChkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UpOgorICAgICAgICAoLVtE
cmFnQW5kRHJvcFNpbXVsYXRvciBpbml0V2l0aFdlYlZpZXdGcmFtZTpjb25maWd1cmF0aW9uOl0p
OgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBydW5Gcm9tOnRvOl0pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNyZWF0ZUpTU3RyaW5nUmVmKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAg
ICAoLVtISURFdmVudEdlbmVyYXRvciBzZW5kRXZlbnRTdHJlYW06Y29tcGxldGlvbkJsb2NrOl0p
OgorCiAyMDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHVtcFJlbmRlclRyZWUncyBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkgc2hv
dWxkIHJldHVybiBhIFJldGFpblB0cgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL0R1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbQppbmRleCBlMTA2MmZhZmI3NDdmYjQ3Yzhj
MTMzOWQyMGI3MmY0MDc5ZDcyNGIyLi5jY2E3Zjg1OTM5ZTgzZmZjYzFjYWFjZmI0NmZkN2M2ZmNl
YTE2N2E3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRlclRy
ZWVCcm93c2VyVmlldy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJlbmRl
clRyZWVCcm93c2VyVmlldy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dl
YlVJRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJVSUtpdERlbGVnYXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50
ZXJmYWNlIFVJV2ViQnJvd3NlclZpZXcgKFdlYlVJS2l0RGVsZWdhdGUpCiAtIChCT09MKXdlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHNob3VsZFNjcm9sbFRvUG9pbnQ6KENHUG9pbnQpcG9pbnQg
Zm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CkBAIC0xMTMsNyArMTE0LDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBzZWxmLnNjcm9sbFZpZXdEZWxlZ2F0ZSA9IFtbW0R1
bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbFZp
ZXc6c2VsZl0gYXV0b3JlbGVhc2VdOworICAgIHNlbGYuc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRv
cHROUyhbW0R1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aFNjcm9sbFZpZXc6c2VsZl0pLmdldCgpOwogICAgIHNlbGYuZGVsZWdhdGUgPSBzZWxmLnNjcm9s
bFZpZXdEZWxlZ2F0ZTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA5NjZmNDY1
YmZhYjA3N2FlODJjZWNiN2ExNzIxNGI0ODJkNDQwNGU5Li40YjRhMDA1ZGM5NTVlNTcxMTBhYmI5
Y2FmZWVjNGY5MjRlYTM3ZDE5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTgwNiw3ICsxODA2LDcgQEAgc3Rh
dGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVKU1N0cmluZ1JlZihpZCBzdHJpbmcp
CiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlkIG11
dGFibGVTdHJpbmcgPSBbW1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIG11dGFibGVTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU3RyaW5nIGFs
bG9jXSBpbml0XSk7CiAgICAgaWQgYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5k
ZXg6MCBlZmZlY3RpdmVSYW5nZTpuaWxdOwogICAgIGlkIGF0dHJpYnV0ZUVudW1lcmF0aW9uQmxv
Y2sgPSBeKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKmF0dHJzLCBOU1JhbmdlIHJhbmdl
LCBCT09MICpzdG9wKSB7CiAgICAgICAgIEJPT0wgbWlzc3BlbGxlZCA9IFtbYXR0cnMgb2JqZWN0
Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlXSBib29sVmFsdWVd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDkxZTNi
MWYzMTQyYzM4NmI4YjVlNDBhYTgxODRkMzVjYzFjODBmYTEuLjM3OWQ1MjBkNzM5NzkyN2JmZThh
OGY5ODYwODU5ZjZlYzgxMzUyYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KQEAgLTY4MSw3ICs2ODEsNyBAQCBSZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0
KDAsIDAsIFRlc3RSdW5uZXI6OnZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dmlld0hlaWdodCk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
cmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUi
XSk7CiAjZWxzZQotICAgIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcgKndlYkJyb3dzZXJWaWV3
ID0gW1tbRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpsYXlv
dXRUZXN0Vmlld3BvcnRSZWN0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJCcm93c2VyVmll
dyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmxheW91dFRlc3RWaWV3cG9ydFJlY3RdKTsKICAgICBbd2ViQnJvd3NlclZpZXcgc2V0SW5w
dXRWaWV3T2JleXNET01Gb2N1czpZRVNdOwogICAgIGF1dG8gd2ViVmlldyA9IHJldGFpblB0cihb
d2ViQnJvd3NlclZpZXcgd2ViVmlld10pOwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpAIm9y
Zy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKQEAgLTc0NCwyMSArNzQ0LDIxIEBAIFJldGFpblB0
cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKIAogICAgIENHUmVj
dCB1aVdpbmRvd1JlY3QgPSBsYXlvdXRUZXN0Vmlld3BvcnRSZWN0OwogICAgIHVpV2luZG93UmVj
dC5vcmlnaW4ueSArPSBbVUlBcHAgc3RhdHVzQmFySGVpZ2h0XTsKLSAgICBVSVdpbmRvdyAqdWlX
aW5kb3cgPSBbW1tVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTp1aVdpbmRvd1JlY3RdIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHVpV2luZG93ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9j
XSBpbml0V2l0aEZyYW1lOnVpV2luZG93UmVjdF0pOwogCiAgICAgYXV0byB2aWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW3VpV2lu
ZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKV07CiAKICAgICAv
LyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcgYXJlIHJlbGVhc2VkIHdoZW4gdGhl
IER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KLSAgICBkcnRXaW5kb3cudWlXaW5kb3cg
PSB1aVdpbmRvdzsKLSAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmlldzsK
KyAgICBkcnRXaW5kb3cudWlXaW5kb3cgPSB1aVdpbmRvdy5nZXQoKTsKKyAgICBkcnRXaW5kb3cu
YnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmlldy5nZXQoKTsKIAogICAgIGF1dG8gc2Nyb2xsVmll
dyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0UmVjdF0pOwotICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZp
ZXc6d2ViQnJvd3NlclZpZXddOworICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3Nl
clZpZXcuZ2V0KCldOwogCiAgICAgW1t2aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OnNj
cm9sbFZpZXcuZ2V0KCldOwogCi0gICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdw
b3J0KHdlYkJyb3dzZXJWaWV3LCBzY3JvbGxWaWV3LmdldCgpKTsKKyAgICBhZGp1c3RXZWJEb2N1
bWVudEZvclN0YW5kYXJkVmlld3BvcnQod2ViQnJvd3NlclZpZXcuZ2V0KCksIHNjcm9sbFZpZXcu
Z2V0KCkpOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE0MTMsNyAr
MTQxMyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKFdlYkZyYW1lICpm
KQogICAgIH0KIH0KIAotc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYW1l
ICpmcmFtZSkKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGR1bXBGcmFtZXNBc1RleHQoV2Vi
RnJhbWUgKmZyYW1lKQogewogICAgIERPTURvY3VtZW50ICpkb2N1bWVudCA9IFtmcmFtZSBET01E
b2N1bWVudF07CiAgICAgRE9NRWxlbWVudCAqZG9jdW1lbnRFbGVtZW50ID0gW2RvY3VtZW50IGRv
Y3VtZW50RWxlbWVudF07CkBAIC0xNDIxLDExICsxNDIxLDEzIEBAIHN0YXRpYyBOU1N0cmluZyAq
ZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJhbWUpCiAgICAgaWYgKCFkb2N1bWVudEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBAIiI7CiAKLSAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9
IFtbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFJldGFp
blB0cjxOU011dGFibGVTdHJpbmc+IHJlc3VsdDsKIAogICAgIC8vIEFkZCBoZWFkZXIgZm9yIGFs
bCBidXQgdGhlIG1haW4gZnJhbWUuCiAgICAgaWYgKFtmcmFtZSBwYXJlbnRGcmFtZV0pCi0gICAg
ICAgIHJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlxuLS0tLS0t
LS1cbkZyYW1lOiAnJUAnXG4tLS0tLS0tLVxuIiwgW2ZyYW1lIG5hbWVdXTsKKyAgICAgICAgcmVz
dWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCJc
bi0tLS0tLS0tXG5GcmFtZTogJyVAJ1xuLS0tLS0tLS1cbiIsIFtmcmFtZSBuYW1lXV0pOworICAg
IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cmluZyBhbGxvY10g
aW5pdF0pOwogCiAgICAgTlNTdHJpbmcgKmlubmVyVGV4dCA9IFtkb2N1bWVudEVsZW1lbnQgaW5u
ZXJUZXh0XTsKICAgICAvLyBXZSB1c2UgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdCgp
IHRvIGNvbnZlcnQgaW5uZXJUZXh0IHRvIGEgV0sgU3RyaW5nIHNpbmNlCkBAIC0xNDQzLDEzICsx
NDQ1LDEzIEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJh
bWUpCiAgICAgICAgIE5TQXJyYXkgKmtpZHMgPSBbZnJhbWUgY2hpbGRGcmFtZXNdOwogICAgICAg
ICBpZiAoa2lkcykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFtraWRz
IGNvdW50XTsgaSsrKQotICAgICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOmR1bXBG
cmFtZXNBc1RleHQoW2tpZHMgb2JqZWN0QXRJbmRleDppXSldOworICAgICAgICAgICAgICAgIFty
ZXN1bHQgYXBwZW5kU3RyaW5nOmR1bXBGcmFtZXNBc1RleHQoW2tpZHMgb2JqZWN0QXRJbmRleDpp
XSkuZ2V0KCldOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlk
eSwgc3RyaXAgYWxsIHRyYWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBw
YXJ0IG9mIGR1bXBBc1RleHQgdGVzdCBvdXRwdXQuCi0gICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJy
ZW5jZXNPZlN0cmluZzpAIiArXG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJF
eHByZXNzaW9uU2VhcmNoIHJhbmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKLSAg
ICBbcmVzdWx0IHJlcGxhY2VPY2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAi
IiBvcHRpb25zOk5TUmVndWxhckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
cmVzdWx0Lmxlbmd0aCldOworICAgIFtyZXN1bHQgcmVwbGFjZU9jY3VycmVuY2VzT2ZTdHJpbmc6
QCIgK1xuIiB3aXRoU3RyaW5nOkAiXG4iIG9wdGlvbnM6TlNSZWd1bGFyRXhwcmVzc2lvblNlYXJj
aCByYW5nZTpOU01ha2VSYW5nZSgwLCBbcmVzdWx0IGxlbmd0aF0pXTsKKyAgICBbcmVzdWx0IHJl
cGxhY2VPY2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5T
UmVndWxhckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3Jlc3VsdCBsZW5n
dGhdKV07CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTYzNSw3ICsxNjM3LDcgQEAgdm9p
ZCBkdW1wKCkKICAgICBBU1NFUlQoIWdUZXN0UnVubmVyLT5oYXNQZW5kaW5nV2ViTm90aWZpY2F0
aW9uQ2xpY2soKSk7CiAKICAgICBpZiAoZHVtcFRyZWUpIHsKLSAgICAgICAgTlNTdHJpbmcgKnJl
c3VsdFN0cmluZyA9IG5pbDsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHRTdHJp
bmc7CiAgICAgICAgIE5TRGF0YSAqcmVzdWx0RGF0YSA9IG5pbDsKICAgICAgICAgTlNTdHJpbmcg
KnJlc3VsdE1pbWVUeXBlID0gQCJ0ZXh0L3BsYWluIjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tCmluZGV4IDEwODJlZmNjZGI2MjUwYzcw
NDA0NzBjZTVmODFhZGE5ZWYyZjA0OTcuLjgxYjg4ZTQ4NmI0MzllYWMyOTNkYzIwOTEzYmUxNWIw
NGQ4N2FiMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVdpbmRvdy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVXaW5kb3cubW0KQEAgLTYwLDcgKzYwLDcgQEAgQHN5bnRoZXNpemUgYnJvd3NlclZpZXcgPSBf
YnJvd3NlclZpZXc7CiAKICsgKE5TQXJyYXkgKilvcGVuV2luZG93cwogewotICAgIHJldHVybiBb
WyhOU0FycmF5ICopb3BlbldpbmRvd3NSZWYgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFsoTlNBcnJheSAqKW9wZW5XaW5kb3dzUmVmIGNvcHldKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtICh2b2lkKV9hZGRUb09wZW5XaW5kb3dzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IGM2YjE4ZTczMDNiZWEy
Y2YxMzY1ZTc1M2RlM2NhN2EzMmJmN2EyY2UuLjUyNjY3MDU5ZGM4YTlmN2MwYTA3OTYyMDhmMDBm
YjBiOTQyZjRlMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9N
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxm
dW5jdGlvbmFsPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTkxLDEwICs5Miwx
NSBAQCBOU1BvaW50IGxhc3RNb3VzZVBvc2l0aW9uOwogTlNQb2ludCBsYXN0Q2xpY2tQb3NpdGlv
bjsKIGludCBsYXN0Q2xpY2tCdXR0b24gPSBOb01vdXNlQnV0dG9uOwogTlNBcnJheSAqd2Via2l0
RG9tRXZlbnROYW1lczsKLU5TTXV0YWJsZUFycmF5ICpzYXZlZE1vdXNlRXZlbnRzOyAvLyBtb3Vz
ZSBldmVudHMgc2VudCBiZXR3ZWVuIG1vdXNlRG93biBhbmQgbW91c2VVcCBhcmUgc3RvcmVkIGhl
cmUsIGFuZCB0aGVuIGV4ZWN1dGVkIGF0IG9uY2UuCiBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRz
OwogdW5zaWduZWQgbW91c2VCdXR0b25zQ3VycmVudGx5RG93biA9IDA7CiAKK3N0YXRpYyBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBzYXZlZE1vdXNlRXZlbnRzKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Pj4gX3NhdmVkTW91c2VFdmVu
dHM7IC8vIG1vdXNlIGV2ZW50cyBzZW50IGJldHdlZW4gbW91c2VEb3duIGFuZCBtb3VzZVVwIGFy
ZSBzdG9yZWQgaGVyZSwgYW5kIHRoZW4gZXhlY3V0ZWQgYXQgb25jZS4KKyAgICByZXR1cm4gX3Nh
dmVkTW91c2VFdmVudHM7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFj
ZSBTeW50aGV0aWNUb3VjaCA6IE5TT2JqZWN0IHsKIEBwdWJsaWMKQEAgLTExOSw3ICsxMjUsNyBA
QCBAc3ludGhlc2l6ZSBpZGVudGlmaWVyID0gX2lkZW50aWZpZXI7CiAKICsgKGlkKXRvdWNoV2l0
aExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIHBoYXNlOihVSVRvdWNoUGhhc2UpcGhhc2UgaWRl
bnRpZmllcjoodW5zaWduZWQpaWRlbnRpZmllcgogewotICAgIHJldHVybiBbW1tTeW50aGV0aWNU
b3VjaCBhbGxvY10gaW5pdFdpdGhMb2NhdGlvbjpsb2NhdGlvbiBwaGFzZTpwaGFzZSBpZGVudGlm
aWVyOmlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1N5bnRo
ZXRpY1RvdWNoIGFsbG9jXSBpbml0V2l0aExvY2F0aW9uOmxvY2F0aW9uIHBoYXNlOnBoYXNlIGlk
ZW50aWZpZXI6aWRlbnRpZmllcl0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRo
TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gcGhhc2U6KFVJVG91Y2hQaGFzZSlwaGFzZSBpZGVu
dGlmaWVyOih1bnNpZ25lZClpZGVudGlmaWVyCkBAIC00NTYsOCArNDYyLDggQEAgLSAodm9pZCli
ZWdpbkRyYWdXaXRoRmlsZXM6KFdlYlNjcmlwdE9iamVjdCopanNGaWxlUGF0aHMKICAgICBhc3Nl
cnQoW3Bib2FyZCBwcm9wZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV0pOyAv
LyBzZXRQcm9wZXJ0eUxpc3Qgd2lsbCBzaWxlbnRseSBmYWlsIG9uIGVycm9yLCBhc3NlcnQgdGhh
dCBpdCBkaWRuJ3QgZmFpbAogCiAgICAgLy8gUHJvdmlkZSBhIHNvdXJjZSwgb3RoZXJ3aXNlIFtE
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdIGRl
ZmF1bHRzIHRvIE5TRHJhZ09wZXJhdGlvbk5vbmUKLSAgICBEdW1wUmVuZGVyVHJlZUZpbGVEcmFn
Z2luZ1NvdXJjZSAqc291cmNlID0gW1tbRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2Ug
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5k
ZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJv
U2l6ZSBwYXN0ZWJvYXJkOnBib2FyZCBzb3VyY2U6c291cmNlXTsKKyAgICBhdXRvIHNvdXJjZSA9
IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10gaW5pdF0p
OworICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGJvYXJkIHNv
dXJjZTpzb3VyY2UuZ2V0KCldOwogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5nRW50
ZXJlZDpkcmFnZ2luZ0luZm9dOwogCiAgICAgZHJhZ01vZGUgPSBOTzsgLy8gZHJhZ01vZGUgc2F2
ZXMgZXZlbnRzIGFuZCB0aGVuIHJlcGxheXMgdGhlbSBsYXRlci4gIFdlIGRvbid0IG5lZWQvd2Fu
dCB0aGF0LgpAQCAtOTQ0LDE4ICs5NTAsMjAgQEAgLSAodm9pZClzY2hlZHVsZUFzeW5jaHJvbm91
c0NsaWNrCiAKICsgKHZvaWQpc2F2ZUV2ZW50OihOU0ludm9jYXRpb24gKilldmVudAogewotICAg
IGlmICghc2F2ZWRNb3VzZUV2ZW50cykKLSAgICAgICAgc2F2ZWRNb3VzZUV2ZW50cyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIFtzYXZlZE1vdXNlRXZlbnRzIGFkZE9iamVj
dDpldmVudF07CisgICAgYXV0byYgc2F2ZWRFdmVudHMgPSBzYXZlZE1vdXNlRXZlbnRzKCk7Cisg
ICAgaWYgKCFzYXZlZEV2ZW50cykKKyAgICAgICAgc2F2ZWRFdmVudHMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBbc2F2ZWRFdmVudHMgYWRkT2JqZWN0OmV2
ZW50XTsKIH0KIAogKyAodm9pZClyZXBsYXlTYXZlZEV2ZW50cwogewogICAgIHJlcGxheWluZ1Nh
dmVkRXZlbnRzID0gWUVTOwotICAgIHdoaWxlIChbc2F2ZWRNb3VzZUV2ZW50cyBjb3VudF0pIHsK
KyAgICBhdXRvJiBzYXZlZEV2ZW50cyA9IHNhdmVkTW91c2VFdmVudHMoKTsKKyAgICB3aGlsZSAo
W3NhdmVkRXZlbnRzIGNvdW50XSkgewogICAgICAgICAvLyBpZiBhIGRyYWcgaXMgaW5pdGlhdGVk
LCB0aGUgcmVtYWluaW5nIHNhdmVkIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNoZWQgZnJvbSBvdXIg
ZHJhZ2dpbmcgZGVsZWdhdGUKLSAgICAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gW1tb
c2F2ZWRNb3VzZUV2ZW50cyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBbc2F2ZWRNb3VzZUV2ZW50cyByZW1vdmVPYmplY3RBdEluZGV4OjBdOworICAgICAg
ICBhdXRvIGludm9jYXRpb24gPSByZXRhaW5QdHIoc2F2ZWRFdmVudHMuZ2V0KClbMF0pOworICAg
ICAgICBbc2F2ZWRFdmVudHMgcmVtb3ZlT2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgW2ludm9j
YXRpb24gaW52b2tlXTsKICAgICB9CiAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBOTzsKQEAg
LTk2Myw3ICs5NzEsNyBAQCArICh2b2lkKXJlcGxheVNhdmVkRXZlbnRzCiAKICsgKHZvaWQpY2xl
YXJTYXZlZEV2ZW50cwogewotICAgIGF1dG8gb2xkRXZlbnRzID0gYWRvcHROUyhzdGQ6OmV4Y2hh
bmdlKHNhdmVkTW91c2VFdmVudHMsIG5pbCkpOworICAgIHNhdmVkTW91c2VFdmVudHMoKSA9IG5p
bDsKIH0KIAogLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZp
ZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBs
b25nKWxvY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5
RGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdhdGUubW0K
aW5kZXggNTc4MjVmNGExNTgyYmYzNTljNTY4MDgyMDVmZDRmM2U0ZjBmNTZjOC4uOTdhMTc4Nzdk
NGQ3OTY1OTRjOGU5Mzc0OTc0NGMzMjI4NzBmMjAwZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbQpAQCAtMTA2LDEwICsxMDYsMTAgQEAgLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopd2ViVmlldyB1bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcjoo
TlNFcnJvciAqKWUKIAogc3RhdGljIE5TU3RyaW5nICpkaXNwb3NpdGlvblR5cGVGcm9tQ29udGVu
dERpc3Bvc2l0aW9uSGVhZGVyKE5TU3RyaW5nICpoZWFkZXIpCiB7Ci0gICAgTlNNdXRhYmxlU3Ry
aW5nICpyZXN1bHQgPSBbW1tbaGVhZGVyIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIjsi
XSBvYmplY3RBdEluZGV4OjBdIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdE5TKFtbW2hlYWRlciBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCI7
Il0gb2JqZWN0QXRJbmRleDowXSBtdXRhYmxlQ29weV0pOwogICAgIGlmIChyZXN1bHQpCi0gICAg
ICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKENGTXV0YWJsZVN0cmluZ1JlZilyZXN1bHQpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKENGTXV0
YWJsZVN0cmluZ1JlZilyZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopYyBkZWNpZGVQb2xpY3lGb3JN
SU1FVHlwZTooTlNTdHJpbmcgKil0eXBlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggZTI0OWFiZjBkZjUzODRhZjkzZDZiN2EwYTdh
YTliYmQwMzJhODZkYi4uNTM5ZDE2YThhMGNmYmJhZmEwZTM0MDFmNjQ4MzllMDI5YmFmMzI5MCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bQpAQCAtMTc1LDcgKzE3NSw3IEBAIC0oTlNVUkxSZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcg
Kil3diByZXNvdXJjZTppZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDogKE5TCiAgICAgaWYgKGRp
c2FsbG93ZWRVUkxzICYmIENGU2V0Q29udGFpbnNWYWx1ZShkaXNhbGxvd2VkVVJMcywgKF9fYnJp
ZGdlIENGVVJMUmVmKXVybCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU011dGFibGVV
UkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW3JlcXVlc3QgbXV0YWJsZUNvcHldOworICAgIGF1dG8g
bmV3UmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKICAgICBjb25zdCBz
ZXQ8c3RyaW5nPiYgY2xlYXJIZWFkZXJzID0gZ1Rlc3RSdW5uZXItPndpbGxTZW5kUmVxdWVzdENs
ZWFySGVhZGVycygpOwogICAgIGZvciAoc2V0PHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRl
ciA9IGNsZWFySGVhZGVycy5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJIZWFkZXJzLmVuZCgpOyAr
K2hlYWRlcikgewogICAgICAgICBhdXRvIG5zSGVhZGVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFVURjhTdHJpbmc6aGVhZGVyLT5jX3N0cigpXSk7CkBAIC0xODQsNyArMTg0
LDcgQEAgLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlk
ZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlMKICAgICBpZiAoYXV0byogZGVzdGluYXRpb24g
PSBnVGVzdFJ1bm5lci0+cmVkaXJlY3Rpb25EZXN0aW5hdGlvbkZvclVSTChbW3VybCBhYnNvbHV0
ZVN0cmluZ10gVVRGOFN0cmluZ10pKQogICAgICAgICBbbmV3UmVxdWVzdCBzZXRVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmRlc3RpbmF0aW9u
XV1dOwogCi0gICAgcmV0dXJuIFtuZXdSZXF1ZXN0IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
bmV3UmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
Kil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgZnJvbURhdGFT
b3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLm1t
IGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2Vy
aWFsaXplck1hYy5tbQppbmRleCBiZGQyMDdiZDQwOWYwNGVlNWYzODIzMTk0ZmEyNGU2MzI4ODU4
OTE3Li4yMWY3MzcyNjhjNzgxYzZmODNlNDkwYTk5ZjczOGEwY2NhMzE0YzZjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJp
YWxpemVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0
aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMubW0KQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIGV2
ZW50SXNPZkdlc3R1cmVUeXBlcyhDR0V2ZW50UmVmIGV2ZW50LCBJT0hJREV2ZW50VHlwZSBmaXJz
dCwgVHlwZXMgLi4uIHJlcwogICAgIGludDY0X3QgdmFsdWUgPSBDR0V2ZW50R2V0SW50ZWdlclZh
bHVlRmllbGQocmF3RXZlbnQsIGZpZWxkKTsgXAogICAgIGludDY0X3QgcGxhaW5WYWx1ZSA9IENH
RXZlbnRHZXRJbnRlZ2VyVmFsdWVGaWVsZChyYXdQbGFpbkV2ZW50LCBmaWVsZCk7IFwKICAgICBp
ZiAodmFsdWUgIT0gcGxhaW5WYWx1ZSkgXAotICAgICAgICBkaWN0W0AjZmllbGRdID0gQCh2YWx1
ZSk7IFwKKyAgICAgICAgZGljdC5nZXQoKVtAI2ZpZWxkXSA9IEAodmFsdWUpOyBcCiB9KCk7CiAK
ICNkZWZpbmUgTE9BRF9ET1VCTEVfRklFTERfRlJPTV9FVkVOVChldmVudFR5cGVGaWx0ZXIsIGZp
ZWxkKSBcCkBAIC0xNjksNyArMTY5LDcgQEAgYm9vbCBldmVudElzT2ZHZXN0dXJlVHlwZXMoQ0dF
dmVudFJlZiBldmVudCwgSU9ISURFdmVudFR5cGUgZmlyc3QsIFR5cGVzIC4uLiByZXMKICAgICBp
ZiAoIWlzbmFuKHZhbHVlKSkgeyBcCiAgICAgICAgIGRvdWJsZSBwbGFpblZhbHVlID0gQ0dFdmVu
dEdldERvdWJsZVZhbHVlRmllbGQocmF3UGxhaW5FdmVudCwgZmllbGQpOyBcCiAgICAgICAgIGlm
IChmYWJzKHZhbHVlIC0gcGxhaW5WYWx1ZSkgPj0gRkxUX0VQU0lMT04pIFwKLSAgICAgICAgICAg
IGRpY3RbQCNmaWVsZF0gPSBAKHZhbHVlKTsgXAorICAgICAgICAgICAgZGljdC5nZXQoKVtAI2Zp
ZWxkXSA9IEAodmFsdWUpOyBcCiAgICAgfSBcCiB9KCk7CiAKQEAgLTE5OCwzMCArMTk4LDMwIEBA
ICsgKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlGb3JFdmVudDooQ0dFdmVudFJlZilyYXdFdmVu
dCByZWxhdGl2ZVRvVGltZTooQ0dFdmVuCiAgICAgYXV0byBwbGFpbkV2ZW50ID0gYWRvcHRDRihD
R0V2ZW50Q3JlYXRlKE5VTEwpKTsKICAgICBDR0V2ZW50UmVmIHJhd1BsYWluRXZlbnQgPSBwbGFp
bkV2ZW50LmdldCgpOwogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdCA9IFtbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRpY3Qg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgRk9S
X0VBQ0hfQ0dFVkVOVF9JTlRFR0VSX0ZJRUxEKExPQURfSU5URUdFUl9GSUVMRF9GUk9NX0VWRU5U
KTsKICAgICBGT1JfRUFDSF9DR0VWRU5UX0RPVUJMRV9GSUVMRChMT0FEX0RPVUJMRV9GSUVMRF9G
Uk9NX0VWRU5UKTsKIAogICAgIENHRXZlbnRUaW1lc3RhbXAgdGltZXN0YW1wID0gQ0dFdmVudEdl
dFRpbWVzdGFtcChyYXdFdmVudCk7Ci0gICAgZGljdFtAInJlbGF0aXZlVGltZU1TIl0gPSBAKHN0
ZDo6bWF4KHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wIC0gcmVmZXJlbmNlVGltZXN0YW1w
KSAvIE5TRUNfUEVSX01TRUMsIDAuMCkpOworICAgIGRpY3QuZ2V0KClbQCJyZWxhdGl2ZVRpbWVN
UyJdID0gQChzdGQ6Om1heChzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCAtIHJlZmVyZW5j
ZVRpbWVzdGFtcCkgLyBOU0VDX1BFUl9NU0VDLCAwLjApKTsKIAogICAgIENHU0V2ZW50VHlwZSBl
dmVudFR5cGUgPSAoQ0dTRXZlbnRUeXBlKUNHRXZlbnRHZXRJbnRlZ2VyVmFsdWVGaWVsZChyYXdF
dmVudCwga0NHU0V2ZW50VHlwZUZpZWxkKTsKICAgICBpZiAoZXZlbnRUeXBlID09IGtDR1NFdmVu
dEdlc3R1cmUgfHwgZXZlbnRUeXBlID09IGtDR1NFdmVudEZsdWlkVG91Y2hHZXN0dXJlIHx8IGV2
ZW50VHlwZSA9PSBrQ0dTRXZlbnREb2NrQ29udHJvbCkgewogICAgICAgICBpZiAoQ0dFdmVudEdl
dEludGVnZXJWYWx1ZUZpZWxkKHJhd0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVJc1ByZWZsaWdodCkp
IHsKLSAgICAgICAgICAgIGRpY3RbQCJrQ0dFdmVudEdlc3R1cmVJc1ByZWZsaWdodCJdID0gQFlF
UzsKLSAgICAgICAgICAgIGRpY3RbQCJrQ0dFdmVudEdlc3R1cmVQcmVmbGlnaHRQcm9ncmVzcyJd
ID0gQChDR0V2ZW50R2V0RG91YmxlVmFsdWVGaWVsZChyYXdFdmVudCwga0NHRXZlbnRHZXN0dXJl
UHJlZmxpZ2h0UHJvZ3Jlc3MpKTsKKyAgICAgICAgICAgIGRpY3QuZ2V0KClbQCJrQ0dFdmVudEdl
c3R1cmVJc1ByZWZsaWdodCJdID0gQFlFUzsKKyAgICAgICAgICAgIGRpY3QuZ2V0KClbQCJrQ0dF
dmVudEdlc3R1cmVQcmVmbGlnaHRQcm9ncmVzcyJdID0gQChDR0V2ZW50R2V0RG91YmxlVmFsdWVG
aWVsZChyYXdFdmVudCwga0NHRXZlbnRHZXN0dXJlUHJlZmxpZ2h0UHJvZ3Jlc3MpKTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGRpY3RbQCJ3aW5kb3dMb2NhdGlvbiJdID0gTlNTdHJpbmdGcm9t
UG9pbnQoTlNQb2ludEZyb21DR1BvaW50KENHRXZlbnRHZXRXaW5kb3dMb2NhdGlvbihyYXdFdmVu
dCkpKTsKKyAgICBkaWN0LmdldCgpW0Aid2luZG93TG9jYXRpb24iXSA9IE5TU3RyaW5nRnJvbVBv
aW50KE5TUG9pbnRGcm9tQ0dQb2ludChDR0V2ZW50R2V0V2luZG93TG9jYXRpb24ocmF3RXZlbnQp
KSk7CiAKICAgICBhdXRvIGZsYWdzID0gc3RhdGljX2Nhc3Q8Q0dFdmVudEZsYWdzPihDR0V2ZW50
R2V0RmxhZ3MocmF3RXZlbnQpICYgfk5YX05PTkNPQUxTRVNDRURNQVNLKTsKICAgICBhdXRvIHBs
YWluRmxhZ3MgPSBzdGF0aWNfY2FzdDxDR0V2ZW50RmxhZ3M+KENHRXZlbnRHZXRGbGFncyhyYXdQ
bGFpbkV2ZW50KSAmIH5OWF9OT05DT0FMU0VTQ0VETUFTSyk7CiAgICAgaWYgKGZsYWdzICE9IHBs
YWluRmxhZ3MpCi0gICAgICAgIGRpY3RbQCJmbGFncyJdID0gQChmbGFncyk7CisgICAgICAgIGRp
Y3QuZ2V0KClbQCJmbGFncyJdID0gQChmbGFncyk7CiAKLSAgICByZXR1cm4gZGljdDsKKyAgICBy
ZXR1cm4gZGljdC5hdXRvcmVsZWFzZSgpOwogfQogCiArIChSZXRhaW5QdHI8Q0dFdmVudFJlZj4p
Y3JlYXRlRXZlbnRGb3JEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0IGluV2luZG93OihO
U1dpbmRvdyAqKXdpbmRvdyByZWxhdGl2ZVRvVGltZTooQ0dFdmVudFRpbWVzdGFtcClyZWZlcmVu
Y2VUaW1lc3RhbXAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQppbmRleCBlOTljMDEzMDM5ODgzOTI0MGM4YmVjOWJhOTc1
MDBiYjlkNjk3MDZlLi40MjM1ZTk2NTZmYmZkYTZkNTY3MmYyMjM5NzkxZTA0Y2E3ODY3OGZhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENo
ZWNrZXIubW0KKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tCkBAIC0yNDgsNyArMjQ4LDcgQEAgLSAodm9pZClzZXRSZXN1bHRzRnJvbUpT
VmFsdWU6KEpTVmFsdWVSZWYpcmVzdWx0c1ZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0UmVmKWMK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJl
bGVhc2UoZGV0YWlsc09iamVjdFByb3BlcnRpZXMpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgW3Jlc3VsdHNGb3JXb3JkIGFkZE9iamVjdDpbW1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVz
dWx0IGFsbG9jXSBpbml0V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKHR5cGVWYWx1ZS5nZXQo
KSkgcmFuZ2U6TlNNYWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBs
YWNlbWVudDooX19icmlkZ2UgTlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCkgZGV0YWls
czpkZXRhaWxzLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Jlc3VsdHNGb3JX
b3JkIGFkZE9iamVjdDphZG9wdE5TKFtbTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxv
Y10gaW5pdFdpdGhUeXBlOm5zVGV4dENoZWNraW5nVHlwZSh0eXBlVmFsdWUuZ2V0KCkpIHJhbmdl
Ok5TTWFrZVJhbmdlKGZyb21WYWx1ZSwgdG9WYWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6
KF9fYnJpZGdlIE5TU3RyaW5nICopcmVwbGFjZW1lbnRUZXh0LmdldCgpIGRldGFpbHM6ZGV0YWls
cy5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gY2ZUZXh0
VG9DaGVjayA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdGV4dFRvQ2hlY2spKTsKICAgICAgICAgW3Jlc3VsdHMgc2V0T2JqZWN0OnJlc3VsdHNGb3JX
b3JkLmdldCgpIGZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKiljZlRleHRUb0NoZWNrLmdldCgp
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUv
SlNSdW5Mb29wVGltZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRD
b3JlL0pTUnVuTG9vcFRpbWVyLm1tCmluZGV4IDg2YmJhYjg2MDc3NjUwYTgzMGUzMTk1OThlNTI4
YmFjODczMzBhNWIuLmQ0OTA5Zjg0Njg4YTQxMzMwNzVjZTRiZjg1Y2M2Njg4YjIzNDcyYTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5M
b29wVGltZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29y
ZS9KU1J1bkxvb3BUaW1lci5tbQpAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2Vy
R0MoSlNDb250ZXh0ICpjb250ZXh0KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDA7ICsraSkKLSAgICAgICAgICAgIFtKU1ZhbHVl
IHZhbHVlV2l0aE9iamVjdDpbW1Rlc3RPYmplY3QgbmV3XSBhdXRvcmVsZWFzZV0gaW5Db250ZXh0
OmNvbnRleHRdOworICAgICAgICAgICAgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmFkb3B0TlMo
W1Rlc3RPYmplY3QgbmV3XSkuYXV0b3JlbGVhc2UoKSBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAg
ICAgIEpTR2FyYmFnZUNvbGxlY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCA3MWE3ZmY0ZjM2ZWNhZDkzZGM5
NjdmYmMyMzEzY2EyY2IzYjkyZmYxLi5kOTYyMzA3NGIyMTU4MGU3MTJhZjQ0YzZmMzQwZDlmZTYx
NjFlOWZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtMTE4LDcgKzExOCw3IEBA
IHB1YmxpYzoKICAgICAgICAgSlNDOjppbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICAgICAgdmll
dyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsK
LSAgICAgICAgW3ZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6W1tbVGVzdE5TVVJMU2Vzc2lvbkxv
YWRlckRlbGVnYXRlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdmlldyBz
ZXRGcmFtZUxvYWREZWxlZ2F0ZTphZG9wdE5TKFtbVGVzdE5TVVJMU2Vzc2lvbkxvYWRlckRlbGVn
YXRlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV07CiAKICAgICAgICAgZGlkTG9hZE1haW5S
ZXNvdXJjZSA9IGZhbHNlOwogICAgICAgICBbdmlldyBzZXRNYWluRnJhbWVVUkw6ZG9jdW1lbnRV
UkwuYWJzb2x1dGVTdHJpbmddOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggZjI3ZTM0ZDQ4MGE2
OTRmYmJhZTdiNWU4MDU5NTM4MGE0ODQ5YzIwMi4uMzhlZWNkYTVlYmMxNWY1YmM0MmRkMzU5ZjAz
NDUxYzBmYzFmZDNlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC0xMTUsNyArMTE1LDcgQEAg
VEVTVChXZWJLaXQsIERlZmF1bHREZXZpY2VJZEhhc2hTYWx0c0RpcmVjdG9yeSkKICAgICB9CiAK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6
W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25m
aWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcg
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKICAgICBw
cmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CkBA
IC0xNDUsNyArMTQ1LDcgQEAgVEVTVChXZWJLaXQsIERldmljZUlkSGFzaFNhbHRzRGlyZWN0b3J5
KQogICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXREZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3Rvcnk6dGVtcERpcl07CiAgICAgCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBb
Y29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0
YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFz
ZSgpXTsKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlnID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVy
ZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51SW1nV2l0aFZpZGVv
Lm1tCmluZGV4IDJjYjI3NzU3MTRkNDljMDg1OTVjNTFmNzUxMjYzZmY2YmQzMGUwZTMuLjJmNGQ3
ZGZjYjgwMDJjYzJmZmIwNDc0OGQwZTg2MDQ1OGYyMjEzOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudUltZ1dpdGhWaWRlby5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVJbWdX
aXRoVmlkZW8ubW0KQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
VEVTVChXZWJLaXQsIENvbnRleHRNZW51SW1nV2l0aFZpZGVvKQogewogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApXSk7Ci0gICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gW1tb
Q29udGV4dE1lbnVJbWdXaXRoVmlkZW9EZWxlZ2F0ZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb250ZXh0TWVudUlt
Z1dpdGhWaWRlb0RlbGVnYXRlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDb250ZXh0TWVudUltZ1dpdGhW
aWRlbyJdOwogCiAgICAgTlNXaW5kb3cqIHdpbmRvdyA9IFt3ZWJWaWV3IHdpbmRvd107CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRp
bmdEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVu
ZGxlRWRpdGluZ0RlbGVnYXRlLm1tCmluZGV4IDA0NjJhODhmNDgwZDk1YTQ5NTQ3YTA2ZDAyZDIx
YjBiMjQzYzNiN2UuLjdjY2ZjMDIyZDJjMjUzMzJiYjJlYmNlOTVkMzAyNWFlN2E5YmEyYzkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRp
dGluZ0RlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1tCkBAIC04NywxOCArODcsMTggQEAgVEVTVChXZWJL
aXQsIFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZSkKIAogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZGlkV3JpdGVUb1Bhc3RlYm9hcmQpOwogCi0gICAgTlNTdHJpbmcgKmNv
cGllZFN0cmluZyA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNvcGllZFN0cmluZzsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgY29waWVkU3RyaW5nID0gW1tOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIHN0cmluZ0ZvclR5cGU6QCJvcmcud2Via2l0LmRhdGEiXTsKICNlbGlm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgY29waWVkU3RyaW5nID0gW1tbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTpbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGF0YUZv
clBhc3RlYm9hcmRUeXBlOkAib3JnLndlYmtpdC5kYXRhIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKKyAgICBjb3BpZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2Fy
ZF0gZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAib3JnLndlYmtpdC5kYXRhIl0gZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNlbmRpZgotICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8i
LCBjb3BpZWRTdHJpbmcpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBjb3BpZWRTdHJp
bmcuZ2V0KCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVy
YWxQYXN0ZWJvYXJkXSBzZXRTdHJpbmc6Y29waWVkU3RyaW5nIGZvclR5cGU6QCJwdWJsaWMudXRm
OC1wbGFpbi10ZXh0Il07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNl
dFN0cmluZzpjb3BpZWRTdHJpbmcuZ2V0KCkgZm9yVHlwZTpAInB1YmxpYy51dGY4LXBsYWluLXRl
eHQiXTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW1tVSVBhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIHNldFZhbHVlOmNvcGllZFN0cmluZyBmb3JQYXN0ZWJvYXJkVHlwZTpA
InB1YmxpYy51dGY4LXBsYWluLXRleHQiXTsKKyAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gc2V0VmFsdWU6Y29waWVkU3RyaW5nLmdldCgpIGZvclBhc3RlYm9hcmRUeXBlOkAi
cHVibGljLnV0ZjgtcGxhaW4tdGV4dCJdOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgcGVyZm9ybVNl
bGVjdG9yOkBzZWxlY3RvcihwYXN0ZTopIHdpdGhPYmplY3Q6bmlsXTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVGb3JtRGVsZWdhdGVQ
bHVnSW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUZv
cm1EZWxlZ2F0ZVBsdWdJbi5tbQppbmRleCBkMGNhOWZkYzcyMTJjNDllYWQxMWJiZTdlMGVkZjY0
OTRiMDUxNTk5Li5lOGQ5ZDUyNWZhN2JmZWJhNTg2MDUzMjljMWM5YTNiZmRmMDdlNDIwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUZvcm1E
ZWxlZ2F0ZVBsdWdJbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0J1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbQpAQCAtNzAsOSArNzAsNyBAQCAtIChOU09i
amVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6KFdLV2ViUAogICAgIGlmICghX3Nob3VsZFVzZUN1c3RvbUNsYXNzKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgTlNVbml0Q29udmVydGVyTGluZWFyICpraWxvbWV0ZXJzVG9N
ZXRlcnMgPSBbW05TVW5pdENvbnZlcnRlckxpbmVhciBhbGxvY10gaW5pdFdpdGhDb2VmZmljaWVu
dDoxMDAwLjAgY29uc3RhbnQ6MC4wXTsKLQotICAgIHJldHVybiBba2lsb21ldGVyc1RvTWV0ZXJz
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TVW5pdENvbnZlcnRlckxpbmVh
ciBhbGxvY10gaW5pdFdpdGhDb2VmZmljaWVudDoxMDAwLjAgY29uc3RhbnQ6MC4wXSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAodm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRGb2N1c1RleHRGaWVsZDooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAq
KXRleHRGaWVsZCBpbkZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCmlu
ZGV4IDBiNzViYTQzYzAzYWUzODg4MTZhMWYzY2MyY2VlNmYxNzcxYjEwNjEuLmQ2ZTM4M2UxYTBi
ZTJlNTVmNzkxYjRmNGFkODZmMTk0M2FmMzBjOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCkBAIC0yMzIsOCArMjMyLDggQEAg
VEVTVChDaGFsbGVuZ2UsIFNlY0lkZW50aXR5KQogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBNYWtlIHN1cmUgbm8gY3JlZGVudGlh
bCBsZWZ0IGJ5IHByZXZpb3VzIHRlc3RzLgotICAgIE5TVVJMUHJvdGVjdGlvblNwYWNlICpwcm90
ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0
OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9u
U3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSBhdXRvcmVsZWFzZV07Ci0gICAgW1t3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9y
UHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZV07CisgICAgYXV0byBwcm90ZWN0aW9uU3Bh
Y2UgPSBhZG9wdE5TKFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpA
IjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5TVVJMUHJvdGVjdGlvblNw
YWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10pOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9u
XS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFj
ZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1d
XV07CiAKQEAgLTI0NSw4ICsyNDUsOCBAQCBURVNUKENoYWxsZW5nZSwgRGVhbGxvY2F0ZUR1cmlu
Z0NoYWxsZW5nZSkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICAgICBIVFRQ
U2VydmVyIHNlcnZlcih7eyAiLyIsIHsgImhpIiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNo
YWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGRlbGVnYXRlLmdl
dCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCAqKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH07CiAKQEAgLTI1
NSw3ICsyNTUsNyBAQCBURVNUKENoYWxsZW5nZSwgRGVhbGxvY2F0ZUR1cmluZ0NoYWxsZW5nZSkK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7IGkrKykKICAgICAgICAgICAgIHZp
ZXdzLmFwcGVuZChhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSkpOwogICAgICAgICBmb3IgKGF1dG8m
IHZpZXcgOiB2aWV3cykgewotICAgICAgICAgICAgW3ZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlXTsKKyAgICAgICAgICAgIFt2aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAgICAgICAgICAgICBbdmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKICAgICAgICAgfQogICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CkBAIC0zNTEs
OCArMzUxLDggQEAgVEVTVChDaGFsbGVuZ2UsIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsKQogICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAv
LyBNYWtlIHN1cmUgbm8gY3JlZGVudGlhbCBsZWZ0IGJ5IHByZXZpb3VzIHRlc3RzLgotICAgIE5T
VVJMUHJvdGVjdGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25T
cGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkg
cHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRo
ZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSBhdXRv
cmVsZWFzZV07Ci0gICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVh
clBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZV07
CisgICAgYXV0byBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdE5TKFtbTlNVUkxQcm90ZWN0aW9uU3Bh
Y2UgYWxsb2NdIGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHBy
b3RvY29sOk5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVu
dGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10pOworICAg
IFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVk
ZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogCiAgICAg
UmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CkBAIC0zNjMsMjUgKzM2MywyNSBA
QCBURVNUKENoYWxsZW5nZSwgQmFzaWNQcm9wb3NlZENyZWRlbnRpYWwpCiAgICAgRVhQRUNUX1RS
VUUocmVjZWl2ZWRTZWNvbmRDaGFsbGVuZ2UpOwogCiAgICAgLy8gQ2xlYXIgcGVyc2lzdGVudCBj
cmVkZW50aWFscyBjcmVhdGVkIGJ5IHRoaXMgdGVzdC4KLSAgICBbW3dlYlZpZXcgY29uZmlndXJh
dGlvbl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9u
U3BhY2U6cHJvdGVjdGlvblNwYWNlXTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJv
Y2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJv
dGVjdGlvblNwYWNlLmdldCgpXTsKIH0KIAogVEVTVChDaGFsbGVuZ2UsIEJhc2ljUGVyc2lzdGVu
dENyZWRlbnRpYWwpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAg
SFRUUFNlcnZlciBzZXJ2ZXIoSFRUUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0sp
OwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUgbmV3XSk7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNVUkxQcm90ZWN0aW9uU3BhY2U+
IHByb3RlY3Rpb25TcGFjZTsKICAgICBhdXRvIGNyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMQ3Jl
ZGVudGlhbFN0b3JhZ2Ugc2hhcmVkQ3JlZGVudGlhbFN0b3JhZ2VdOwotICAgIGRlbGVnYXRlLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
KSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5n
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewogICAgICAgICBwcm90ZWN0aW9uU3BhY2Ug
PSBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlOwogICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmV4
aXN0aW5nQ3JlZGVudGlhbCA9IFtjcmVkZW50aWFsU3RvcmFnZSBkZWZhdWx0Q3JlZGVudGlhbEZv
clByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogICAgICAgICBFWFBFQ1Rf
TlVMTChleGlzdGluZ0NyZWRlbnRpYWwpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocHJvdGVj
dGlvblNwYWNlLmdldCgpLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kSFRUUEJhc2ljKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdp
dGhVc2VyOkAidGVzdHVzZXIiIHBhc3N3b3JkOkAidGVzdHBhc3N3b3JkIiBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudF0pOwogICAgIH07Ci0gICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCkBAIC01NTMs
MTEgKzU1MywxMSBAQCBURVNUKFdlYktpdCwgRmFzdFNlcnZlclRydXN0KQogICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3NsKTsKICAgICB9LCBXVEY6Om51bGxvcHQsIDIpOwogI2VuZGlmCi0gICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiAqZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCA9IFlFUzsK
LSAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0g
YXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
KTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25F
bmFibGVkOllFU107CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFpl
cm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1NlcnZlclRydXN0RGVsZWdhdGUgbmV3XSk7CiAgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly9sb2NhbGhvc3Q6JWQvIiwgc2VydmVy
LnBvcnQoKV1dXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NsaXBib2FyZFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbQppbmRleCA0ZTU1Y2YwMWE5N2YyNzliNDJkYzBkYWQ1
MjhjYWU2NWJhYTZhYTdlLi42NWMwNzc4ZGExMWZjMGJmMWE4YmQyNTczOWQyMjY4ZTA5NDhlMTYz
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBi
b2FyZFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q2xpcGJvYXJkVGVzdHMubW0KQEAgLTEyOSwxNCArMTI5LDE0IEBAIHN0YXRpYyB2b2lkIHdyaXRl
TXVsdGlwbGVPYmplY3RzVG9QbGF0Zm9ybVBhc3RlYm9hcmQoKQogI2VuZGlmCiB9CiAKLXN0YXRp
YyBOU1N0cmluZyAqcmVhZE1hcmt1cEZyb21QYXN0ZWJvYXJkKCkKK3N0YXRpYyBSZXRhaW5QdHI8
TlNTdHJpbmc+IHJlYWRNYXJrdXBGcm9tUGFzdGVib2FyZCgpCiB7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIE5TRGF0YSAqcmF3RGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6V2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCldOwogI2Vsc2UK
ICAgICBOU0RhdGEgKnJhd0RhdGEgPSBbVUlQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTF07CiAj
ZW5kaWYKLSAgICByZXR1cm4gW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpyYXdEYXRh
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnJhd0RhdGEgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKIH0KIAogVEVTVChDbGlwYm9hcmRUZXN0cywgUmVhZE11
bHRpcGxlSXRlbXMpCkBAIC0xNjAsNyArMTYwLDcgQEAgVEVTVChDbGlwYm9hcmRUZXN0cywgV3Jp
dGVTYW5pdGl6ZWRNYXJrdXApCiAgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld0ZvckNs
aXBib2FyZFRlc3RzKCk7CiAgICAgW3dlYlZpZXcgd3JpdGVTdHJpbmc6QCI8c2NyaXB0Pi8qIHN1
cGVyIHNlY3JldCAqLzwvc2NyaXB0PlRoaXMgaXMgYSB0ZXN0LiIgdG9DbGlwYm9hcmRXaXRoVHlw
ZTpAInRleHQvaHRtbCJdOwogCi0gICAgTlNTdHJpbmcgKndyaXR0ZW5NYXJrdXAgPSByZWFkTWFy
a3VwRnJvbVBhc3RlYm9hcmQoKTsKKyAgICBhdXRvIHdyaXR0ZW5NYXJrdXAgPSByZWFkTWFya3Vw
RnJvbVBhc3RlYm9hcmQoKTsKICAgICBFWFBFQ1RfVFJVRShbd3JpdHRlbk1hcmt1cCBjb250YWlu
c1N0cmluZzpAIlRoaXMgaXMgYSB0ZXN0LiJdKTsKICAgICBFWFBFQ1RfRkFMU0UoW3dyaXR0ZW5N
YXJrdXAgY29udGFpbnNTdHJpbmc6QCJzdXBlciBzZWNyZXQiXSk7CiAgICAgRVhQRUNUX0ZBTFNF
KFt3cml0dGVuTWFya3VwIGNvbnRhaW5zU3RyaW5nOkAiPHNjcmlwdD4iXSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCmluZGV4IGFlNmViYTlkZTdhNzE2N2FkYjhhODI0
ZjA0ODk1ZTFkNjUyZTNlOTguLmRkODViYTBjZGIxMWNkYmZjNzhjNTIwM2E4ZDliYWMyNjdmMThi
ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC04Niw3ICs4
Niw3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGVudFJ1bGVM
aXN0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVy
bFNjaGVtZVRhc2sKIHsKLSAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxT
Y2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt1
cmxTY2hlbWVUYXNrIGRpZEZpbmlzaF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGV4dE1lbnVzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZXh0TWVudXMubW0KaW5kZXggZDNkMDdkNjllNjI4
NWFjNDQ5MjEzYWE3NDU1NzQxNmFlYTc1ZWUwOC4uNjM0ZmI2NzE0OTFjNGMxMzNlYjRmYTc1N2M3
OTNjNjU1MzVkOTBlMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZXh0TWVudXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db250ZXh0TWVudXMubW0KQEAgLTc0LDcgKzc0LDcgQEAgLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1l
bnQ6KFdLQ29udGUKICAgICBjb250ZXh0TWVudVJlcXVlc3RlZCA9IHRydWU7CiAgICAgVUlDb250
ZXh0TWVudUNvbnRlbnRQcmV2aWV3UHJvdmlkZXIgcHJldmlld1Byb3ZpZGVyID0gXlVJVmlld0Nv
bnRyb2xsZXIgKiAoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFtbW1VJVmlld0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVZp
ZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICB9OwogICAgIFVJ
Q29udGV4dE1lbnVBY3Rpb25Qcm92aWRlciBhY3Rpb25Qcm92aWRlciA9IF5VSU1lbnUgKihOU0Fy
cmF5PFVJTWVudUVsZW1lbnQgKj4gKnN1Z2dlc3RlZEFjdGlvbnMpCiAgICAgewpAQCAtMTQxLDcg
KzE0MSw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0TWVu
dUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OihXS0NvbnRlCiAgICAgY29udGV4dE1lbnVSZXF1ZXN0
ZWQgPSB0cnVlOwogICAgIFVJQ29udGV4dE1lbnVDb250ZW50UHJldmlld1Byb3ZpZGVyIHByZXZp
ZXdQcm92aWRlciA9IF5VSVZpZXdDb250cm9sbGVyICogKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBbW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmF1dG9yZWxl
YXNlKCk7CiAgICAgfTsKICAgICBVSUNvbnRleHRNZW51QWN0aW9uUHJvdmlkZXIgYWN0aW9uUHJv
dmlkZXIgPSBeVUlNZW51ICooTlNBcnJheTxVSU1lbnVFbGVtZW50ICo+ICpzdWdnZXN0ZWRBY3Rp
b25zKQogICAgIHsKQEAgLTMwOSw3ICszMDksNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgY29udGV4dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDooV0tDb250ZQog
ICAgIGNvbnRleHRNZW51UmVxdWVzdGVkID0gdHJ1ZTsKICAgICBVSUNvbnRleHRNZW51Q29udGVu
dFByZXZpZXdQcm92aWRlciBwcmV2aWV3UHJvdmlkZXIgPSBeVUlWaWV3Q29udHJvbGxlciAqICgp
CiAgICAgewotICAgICAgICByZXR1cm4gW1tbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIH07CiAgICAgVUlDb250ZXh0TWVudUFj
dGlvblByb3ZpZGVyIGFjdGlvblByb3ZpZGVyID0gXlVJTWVudSAqKE5TQXJyYXk8VUlNZW51RWxl
bWVudCAqPiAqc3VnZ2VzdGVkQWN0aW9ucykKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQppbmRleCA2Y2FiNGJiODlmZGNjMGQ5
MzU0M2Y2MDJmMGIxY2IxMGM1YjJkMDA1Li5hMGM0ZGI4ZWFiNjEzZGJkYmIwM2E0ODRiOTZhMGE4
NjcxM2UzYjdlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvcHlIVE1MLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29weUhUTUwubW0KQEAgLTY4LDExICs2OCwxMSBAQCBOU0RhdGEgKnJlYWRIVE1MRGF0YUZy
b21QYXN0ZWJvYXJkKCkKIAogTlNTdHJpbmcgKnJlYWRIVE1MU3RyaW5nRnJvbVBhc3RlYm9hcmQo
KQogewotICAgIGlkIHZhbHVlID0gW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHZh
bHVlRm9yUGFzdGVib2FyZFR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUxdOwor
ICAgIFJldGFpblB0cjxpZD4gdmFsdWUgPSBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2Fy
ZF0gdmFsdWVGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRN
TF07CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKLSAgICAg
ICAgdmFsdWUgPSBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKil2YWx1
ZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgICAgICB2
YWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKil2
YWx1ZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAgIEFTU0VSVChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7Ci0gICAgcmV0dXJuIChOU1N0cmluZyAq
KXZhbHVlOworICAgIHJldHVybiAoTlNTdHJpbmcgKil2YWx1ZS5hdXRvcmVsZWFzZSgpOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9ucy5tbQppbmRleCBi
ODQyMzExNzRmM2EwNTJkY2MzMmNiY2UwMzNhMzQxMTYyYTk4YmQxLi5kN2IzNjk1N2YyOTE0NTU0
YWE1N2IxZGQ0ZjNmN2JmZjliOTE4NzM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0RldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zLm1tCkBAIC00Miw3ICs0Miw3IEBAIFRFU1QoV2ViS2l0LCBEZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zKQogICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEFsbExvYWRz
QmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc6WUVTXTsKIAog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
W3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdl
YnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVh
c2UoKV07CiAKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNwbGF5TmFt
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGlzcGxheU5hbWUu
bW0KaW5kZXggNzFkMmE1ZGM3ZjdmYmQ1NTY1YTAxZGFlZTUwNWU1MWE1ZjUzMDU3ZS4uOGFkOGJk
OGZmOGRkMWQzYjNjNDkwMGNhMGNmZTNhNDkxMjcyOTEzZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNwbGF5TmFtZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rpc3BsYXlOYW1lLm1tCkBAIC01NiwxMCAr
NTYsMTAgQEAgc3RhdGljIHZvaWQgY2hlY2tVbnRpbERpc3BsYXlOYW1lSXMoV0tXZWJWaWV3ICp3
ZWJWaWV3LCBOU1N0cmluZyAqZXhwZWN0ZWROYW1lLAogCiBURVNUKFdlYktpdCwgQ3VzdG9tRGlz
cGxheU5hbWUpCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9
IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAg
IE5TU3RyaW5nICpkaXNwbGF5TmFtZVRvU2V0ID0gQCJ0ZXN0IGRpc3BsYXkgbmFtZSI7Ci0gICAg
Y29uZmlndXJhdGlvbi5fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWVUb1NldDsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9wcm9jZXNzRGlzcGxheU5hbWUgPSBkaXNw
bGF5TmFtZVRvU2V0OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAInN0YXJ0IHdlYiBwcm9jZXNzIl07CiAKICAgICBib29sIGRvbmUgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCmluZGV4IGEyMTdhZWY0YWY4YjA1NzNkMGUyMGNhZTJhNjY1NGY1MmJlYjAxZTcuLmI0
MDM1NmZmMjQ3ODZjOGIzZmRiMjQwZTRmMTM1ZGIyMjNkYWJiMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtODk0LDEwICs4
OTQsMTAgQEAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld1dpdGhEb3dubG9hZE1vbml0b3JT
cGVlZE11bHRpcGxpZXIoc2l6ZV90IG11bHRpcGxpZXIKICAgICBzdGF0aWMgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtEb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsK
ICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBuZXddKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24udGVz
dFNwZWVkTXVsdGlwbGllciA9IG11bHRpcGxpZXI7CisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7
CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0VGVzdFNwZWVkTXVsdGlwbGllcjptdWx0
aXBsaWVyXTsKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vi
c2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdXTsKKyAgICBbd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKICAg
ICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9
IG1vbml0b3JEZWxlZ2F0ZSgpLmdldCgpOwpAQCAtMTQ1NSwxMyArMTQ1NSwxMyBAQCBURVNUKFdL
RG93bmxvYWQsIEZpbmlzaFN1Y2Nlc3NmdWxseSkKIHsKICAgICBhdXRvIHNlcnZlciA9IHNpbXBs
ZURvd25sb2FkVGVzdFNlcnZlcigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCi0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25s
b2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdS
ZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAg
RVhQRUNUX05VTEwoZG93bmxvYWQucHJvZ3Jlc3MuZmlsZVVSTCk7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgICAgICBFWFBFQ1Rf
Tk9UX05VTEwoZG93bmxvYWQucHJvZ3Jlc3MuZmlsZVVSTCk7CkBAIC0xNDczLDcgKzE0NzMsNyBA
QCBURVNUKFdLRG93bmxvYWQsIEZpbmlzaFN1Y2Nlc3NmdWxseSkKIAogICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwogCi0g
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAog
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIHN0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25s
b2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewogICAgICAgICBjaGVja0ZpbGVDb250ZW50cyhkZXN0aW5hdGlvbiwgbG9uZ1N0
cmluZzw1MDAwPignYScpKTsKIAotICAgICAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogCiAgICAgICAgIFt3ZWJWaWV3IHJlc3VtZURv
d25sb2FkRnJvbVJlc3VtZURhdGE6cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CkBAIC0xNTAwLDggKzE1MDAsOCBAQCBzdGF0aWMgdm9pZCByZXN1
bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJMICpkZXN0aW5hdGlv
bikKICAgICAgICAgCiAgICAgICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkU2Vjb25kNWsgPSBm
YWxzZTsKICAgICAgICAgRVhQRUNUX05VTEwocmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0
ZSk7Ci0gICAgICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
LSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rv
d25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3Rp
bmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9OwogCkBAIC0xNTE1LDcgKzE1MTUs
NyBAQCBzdGF0aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURh
dGEsIE5TVVJMICpkZXN0aW5hdGlvbikKICAgICAgICAgW3JldGFpbmVkRG93bmxvYWQuZ2V0KCku
cHJvZ3Jlc3MgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRl
ZFVuaXRDb3VudCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwogCiAgICAgICAgIF9fYmxv
Y2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKLSAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRG
aW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICAg
ICAgRVhQRUNUX0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCksIGRvd25sb2FkKTsKICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKGRvd25sb2FkZWRTZWNvbmQ1ayk7CiAgICAgICAgICAgICBkaWRGaW5p
c2ggPSB0cnVlOwpAQCAtMTUyNiw3ICsxNTI2LDcgQEAgc3RhdGljIHZvaWQgcmVzdW1lQW5kRmlu
aXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCiAgICAg
ICAgIFtyZXRhaW5lZERvd25sb2FkLmdldCgpLnByb2dyZXNzIHJlbW92ZU9ic2VydmVyOm9ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIGNvbnRleHQ6bmlsXTsK
IAogICAgICAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKLSAg
ICAgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEaWRGaW5pc2gKICAgICAgICAgfSk7CiAgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25s
b2FkLmdldCgpLndlYlZpZXcsIHdlYlZpZXcuZ2V0KCkpOwpAQCAtMTU1OCwxNSArMTU1OCwxNSBA
QCBURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKIHsKICAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsK
LSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQg
PSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3du
bG9hZCkgewogICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0
KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUp
OwogICAgICAgICB9OwogICAgIH07CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCBURVNUKFdLRG93bmxv
YWQsIENhbmNlbEFuZFJlc3VtZSkKICAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKICAg
ICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKICAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChy
ZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKLSAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAt
MTU5MiwyNCArMTU5MiwyNCBAQCBURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKIAog
VEVTVChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBSZXRhaW5QdHI8
V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2Fk
VGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6WWVzLCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rp
b24gY29ubmVjdGlvbikgewogICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhyZXRhaW5lZERvd25sb2Fk
KTsKICAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKICAgICB9KTsKICAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVE
YXRhOwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
bWFrZUJsb2NrUHRyKFsmXShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IG1ha2VCbG9ja1B0cihbJl0oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIHJldGFp
bmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVz
aW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07Ci0gICAgICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vy
cm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQs
IHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CkBAIC0xNjIyLDcgKzE2
MjIsNyBAQCBURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCiAgICAgd2hpbGUgKCFyZXRh
aW5lZFJlc3VtZURhdGEpCiAgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CiAgICAgcmVzdW1l
QW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25s
b2FkRmlsZSk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VC
ZWNhbWVEb3dubG9hZCwKQEAgLTE2MzUsMTUgKzE2MzUsMTUgQEAgVEVTVChXS0Rvd25sb2FkLCBD
YW5jZWxOb1Jlc3VtZURhdGEpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0
ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
IAogICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0g
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKICAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0
cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJl
c3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsK
ICAgICAgICAgfTsKICAgICB9OwpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAgVEVTVChXS0Rvd25sb2Fk
LCBDYW5jZWxOb1Jlc3VtZURhdGEpCiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKICAg
ICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAw
PignYScpKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJl
Y2FtZURvd25sb2FkLApAQCAtMTY2NywyNCArMTY2NywyNCBAQCBURVNUKFdLRG93bmxvYWQsIENh
bmNlbE5vUmVzdW1lRGF0YSkKIAogVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQog
ewotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddKTsKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKICAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CiAgICAgICAgIHdhaXRGb3JG
aXJzdDVrKHJldGFpbmVkRG93bmxvYWQpOwogICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OwogICAgIH0pOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhh
dERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBib29sIGRvbmUg
PSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IG1ha2VCbG9ja1B0cihbJl0oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBtYWtlQmxvY2tQdHIoWyZdKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBy
ZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRp
b25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwotICAg
ICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gbWFrZUJsb2NrUHRyKFsmXShXS0Rvd25s
b2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgZGVs
ZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IG1ha2VCbG9ja1B0cihbJl0oV0tEb3dubG9h
ZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0
KTsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOwpAQCAtMTY5NCw3ICsxNjk0
LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAg
Y2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKSk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKQEAgLTE3MzksMjUgKzE3MzksMjUgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1
bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQogICAgIH0pOwogCiAgICAgTlNVUkwgKmV4cGVjdGVk
RG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxl
Z2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CiAKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH07
Ci0gICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gWyZdKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gWyZdKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgc2VydmVyQ29ubmVj
dGlvbi0+dGVybWluYXRlKCk7CiAgICAgfTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+
IHJldGFpbmVkUmVzdW1lRGF0YTsKLSAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihX
S0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKICAgICAgICAgcmV0YWluZWRS
ZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKICAgICB9OwogICAgIF9fYmxvY2sgYm9vbCBkb3dubG9h
ZEZpbmlzaGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdL
RG93bmxvYWQgKikgeworICAgIGRlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKICAgICAgICAgZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7CiAgICAgfTsK
IApAQCAtMTc2OCwxMiArMTc2OCwxMiBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVy
b0J5dGVzUmVjZWl2ZWQpCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoXSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKGRvd25sb2FkRmluaXNoZWQpOwogICAgIFt3ZWJWaWV3IHJlc3VtZURv
d25sb2FkRnJvbVJlc3VtZURhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmRvd25sb2FkRmluaXNoZWQpOwogICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMD4oJ3gnKSk7
CiAKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLApAQCAtMTc4NywxNSArMTc4NywxNSBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFm
dGVyWmVyb0J5dGVzUmVjZWl2ZWQpCiAKIHZvaWQgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNr
KE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCwgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
LCB2b2lkKF5tdXRhdGVGaWxlKSh2b2lkKSkKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7
Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKICAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVs
ZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBl
Y3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07CiAgICAgfTsKQEAgLTE4MTcsMTMgKzE4MTcs
MTMgQEAgdm9pZCB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2
ZXJSZXF1ZXN0LCBOU1VSTCAqZXhwZWN0ZWREb3cKIAogICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5p
c2ggPSBmYWxzZTsKICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOnJl
dGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAg
IGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0
KCkuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgewogICAgICAgICAgICAgZGlk
RmluaXNoID0gdHJ1ZTsKICAgICAgICAgfTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaCk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKQEAgLTE5MjcsNyArMTkyNyw3IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVzdW1l
V2l0aEludmFsaWRSZXN1bWVEYXRhKQogewogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwogICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0
aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
IHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKLSAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgYm9vbCBjYXVnaHRFeGNlcHRp
b24gPSBmYWxzZTsKICAgICBAdHJ5IHsKICAgICAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRG
cm9tUmVzdW1lRGF0YTpbQCJpbnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10gY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3du
bG9hZCkgewpAQCAtMTk0NCwxNSArMTk0NCwxNSBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUNh
bnRSZWNvbm5lY3QpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsK
ICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sgUmV0YWlu
UHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25S
ZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNp
bmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICos
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAgICB9OwpA
QCAtMTk3OCwxNiArMTk3OCwxNiBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUNhbnRSZWNvbm5l
Y3QpCiAgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQogICAgICAgICBVdGlsOjpzcGluUnVu
TG9vcCgpOwogCi0gICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
ICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRo
RXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0
YSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQg
KiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgRVhQRUNU
X0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKICAgICAgICAg
RVhQRUNUX05PVF9OVUxMKHJlc3VtZURhdGEpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9
OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTIwMDQsOSArMjAwNCw5IEBAIFRFU1Qo
V0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCiAgICAgICAgIH0pOwogICAgIH0pOwog
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbRG93bmxvYWRPYnNlcnZl
ciBuZXddKTsKQEAgLTIwMTcsMTAgKzIwMTcsMTAgQEAgVEVTVChXS0Rvd25sb2FkLCBVbmtub3du
Q29udGVudExlbmd0aCkKICAgICB9OwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9h
ZD4gcmV0YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwog
ICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwogICAgICAgICBbZG93bmxvYWQucHJv
Z3Jlc3MgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVu
aXRDb3VudCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1
ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwpAQCAtMjAzMCw3ICsyMDMwLDcg
QEAgVEVTVChXS0Rvd25sb2FkLCBVbmtub3duQ29udGVudExlbmd0aCkKICAgICBbcmV0YWluZWRE
b3dubG9hZC5nZXQoKS5wcm9ncmVzcyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBjb250ZXh0Om5pbF07CiAgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CiAK
LSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Us
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25s
b2FkLApAQCAtMjA0MCwxMyArMjA0MCwxMyBAQCBURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250
ZW50TGVuZ3RoKQogCiBURVNUKFdLRG93bmxvYWQsIEludmFsaWRBcmd1bWVudHMpCiB7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIF9fYmxvY2sgYm9vbCBjYXVn
aHRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddKTsKICAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewot
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRl
bGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJd
KTsKICAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgewpAQCAtMjA1Niw3ICsy
MDU2LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBJbnZhbGlkQXJndW1lbnRzKQogICAgICAgICB9Owog
ICAgIH1dOwogICAgIFV0aWw6OnJ1bigmY2F1Z2h0RXhjZXB0aW9uKTsKLSAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5n
ZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKICAg
ICB9KTsKIH0KQEAgLTIwNzMsMzIgKzIwNzMsMzIgQEAgVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVj
dEFsbG93KQogewogICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKICAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnNl
cnZlclJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNl
XTsKLSAgICBzZXJ2ZXJSZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIGF1dG8gc2VydmVyUmVxdWVzdCA9IGFkb3B0
TlMoW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldKTsKKyAgICBbc2VydmVyUmVxdWVzdCBz
ZXRIVFRQQm9keTpbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z11dOwogICAgIAogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBs
ZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5KSkgeworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVl
c3Q6c2VydmVyUmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgICAgIGRlbGVnYXRlLmdldCgpLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rv
d25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkp
IHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTog
V2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCi0gICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVS
TC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdCBVUkxdLmFic29sdXRlU3RyaW5nKTsK
ICAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXNDb2RlLCAzMDEpOwogICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRlckZpZWxkc1tAIkN1c3RvbS1O
YW1lIl0sICJDdXN0b20tVmFsdWUiKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1dGVTdHJpbmcpOworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbW3NlcnZl
clJlcXVlc3QgVVJMXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdl
dCJdLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93
bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93KTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwg
TlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQo
KS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
LCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKICAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdl
dCIpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5VUkwucGF0aCwgIi8iKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5v
cmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2lu
YWxSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3QgVVJMXS5hYnNvbHV0
ZVN0cmluZyk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2Fk
RmlsZSk7CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0g
XihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5p
c2ggPSBeKFdLRG93bmxvYWQgKikgewogICAgICAgICAgICAgZmluaXNoZWREb3dubG9hZCA9IHRy
dWU7CiAgICAgICAgIH07CiAgICAgfV07CkBAIC0yMTA4LDcgKzIxMDgsNyBAQCBURVNUKFdLRG93
bmxvYWQsIFJlZGlyZWN0QWxsb3cpCiAgICAgCiAgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJl
cXVlc3RzKCksIDJ1KTsKIAotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaApAQCAtMjEx
OSwyMSArMjExOSwyMSBAQCBURVNUKFdLRG93bmxvYWQsIFJlZGlyZWN0Q2FuY2VsKQogewogICAg
IGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKICAgICBOU1VSTFJlcXVlc3QgKnNlcnZl
clJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCiAgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0g
XihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBv
bGljeSkpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93
bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkg
ewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmlu
Zywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgICAgICAgICAgRVhQRUNU
X0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1
ZSIpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3Ry
aW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVk
aXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOwogICAgICAgICB9OwotICAgICAg
ICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmFp
bFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1
bWVEYXRhKSB7CiAgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKICAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwogICAg
ICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOwpAQCAt
MjE0MSw3ICsyMTQxLDcgQEAgVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKICAgICAg
ICAgfTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7Ci0gICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUu
Z2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCiAgICAgfSk7CkBAIC0yMTUzLDE0
ICsyMTUzLDE0IEBAIFRFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKICAg
ICBIVFRQU2VydmVyIHNlcnZlcih7IH0pOwogICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVz
dCA9IHNlcnZlci5yZXF1ZXN0KCk7CiAgICAgc2VydmVyLmNhbmNlbCgpOwotICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOwogICAg
IFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBe
KFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRh
KSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAg
IGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CiAg
ICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwpAQCAtMjE2OCw3ICsyMTY4LDcgQEAgVEVTVChXS0Rv
d25sb2FkLCBEb3dubG9hZFJlcXVlc3RGYWlsdXJlKQogICAgIH1dOwogICAgIFV0aWw6OnJ1bigm
ZmFpbGVkKTsKIAotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZEZhaWxXaXRoRXJyb3IsCiAgICAgfSk7CiB9CkBAIC0yMTc5LDE3ICsyMTc5LDE3IEBA
IFRFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQogICAgICAgICB7ICIvIiwgeyA0
MDQsIHsgfSwgImh0dHAgYm9keSIgfSB9CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CiAgICAg
W3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNp
ZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAg
ICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZEZpbmlzaCA9
IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7
CiAgICAgICAgIH07CiAgICAgfV07CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBURVNUKFdLRG93bmxv
YWQsIERvd25sb2FkUmVxdWVzdDQwNCkKIAogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CiAKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmluaXNoLAogICAgIH0pOwpAQCAtMjIwNywxNSArMjIwNywxNSBAQCBU
RVNUKFdLRG93bmxvYWQsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCiB7CiAgICAgYXV0byBzZXJ2ZXIg
PSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7
Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKICAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdl
dCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxl
KTsKICAgICAgICAgfTsKICAgICB9OwpAQCAtMjIyMywxNCArMjIyMywxNCBAQCBURVNUKFdLRG93
bmxvYWQsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCiAgICAgd2FpdEZvckZpcnN0NWsocmV0YWluZWRE
b3dubG9hZCk7CiAgICAgCiAgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKLSAg
ICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKikgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBe
KFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CiAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICBFWFBF
Q1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CiAgICAg
ICAgIHRlcm1pbmF0ZWQgPSB0cnVlOwogICAgIH07Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlv
bi53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CisgICAgW1t3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzXTsKICAgICBVdGlsOjpydW4oJnRlcm1pbmF0ZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMjQ1LDEzICsyMjQ1
LDEzIEBAIFRFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkKICAgICAg
ICAgeyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH0gfQogICAgIH0pOwogICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwot
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdn
ZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAg
IGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAg
ZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKICAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4w
LjAuMS50eHQiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKQEAgLTIyNjEsNyArMjI2MSw3IEBAIFRFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVk
RmlsZW5hbWVGcm9tSG9zdCkKICAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNo
XTsKIAogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxv
YWQgY29udGVudCIpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMjczLDExICsyMjczLDExIEBAIFRFU1QoV0tEb3dubG9h
ZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkKIFRFU1QoV0tEb3dubG9hZCwgUmVxdWVzdEhU
VFBCb2R5KQogewogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbc2VydmVyLnJl
cXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIHJlcXVlc3QuSFRUUEJvZHkg
PSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAg
W3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5T
KFtzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVDb3B5XSk7CisgICAgW3JlcXVlc3Qgc2V0SFRUUEJv
ZHk6W0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAg
ICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBFWFBFQ1RfTlVM
TChkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFi
bHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAg
IH1dOwpAQCAtMjI5MSwxNyArMjI5MSwxNyBAQCBURVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhp
c3QpCiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKIAogICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAg
ICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNp
ZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAg
ICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQg
KiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRp
ZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAq
KSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9y
RG9tYWluKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fu
bm90Q3JlYXRlRmlsZSk7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwpAQCAtMjMwOSw3ICsy
MzA5LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBQYXRoTXVzdEV4aXN0KQogICAgIH07CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAgICAgVXRpbDo6cnVuKCZmYWls
ZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1l
RG93bmxvYWQsCkBAIC0yMzIzLDggKzIzMjMsOCBAQCBURVNUKFdLRG93bmxvYWQsIEZpbGVNdXN0
Tm90RXhpc3QpCiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKICAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
ICAgICBfX2Jsb2NrIGF1dG8gcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10pOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gcmV0YWluZWREZWxl
Z2F0ZS5nZXQoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnJldGFpbmVkRGVsZWdhdGUuZ2V0
KCldOwogCiAgICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0YSBvbiBkaXNrIiBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25s
b2FkRmlsZSBhdG9taWNhbGx5OllFU10pOwogCkBAIC0yMzU2LDE3ICsyMzU2LDE3IEBAIFRFU1Qo
V0tEb3dubG9hZCwgRmlsZU11c3ROb3RFeGlzdCkKIFRFU1QoV0tEb3dubG9hZCwgRGVzdGluYXRp
b25OdWxsU3RyaW5nKQogewogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmFpbGVk
ID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
LmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihuaWwpOwogICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVy
cm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAg
ICBkZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKikgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9y
LmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3Iu
Y29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwpA
QCAtMjM3NCw3ICsyMzc0LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJp
bmcpCiAgICAgfTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
ICAgICBVdGlsOjpydW4oJmZhaWxlZCk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTIzODgsMjkgKzIzODgsMjkgQEAgVEVT
VChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCiBURVNUKFdLRG93bmxvYWQsIENo
YWxsZW5nZVN1Y2Nlc3MpCiB7CiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3du
bG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Ci0gICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0g
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBOU1VSTCAqZXhwZWN0
ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKICAgICBfX2Jsb2Nr
IGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9
IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERp
ZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgZmluaXNoZWQgPSB0
cnVlOwogICAgIH07CiAgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7
Ci0gICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rv
d25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRp
b25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLnNlcnZlclRydXN0XSk7CiAgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsK
ICAgICB9OwotICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5h
dGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0
cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICB9OwogICAgIFt3ZWJW
aWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CiAgICAgRVhQRUNUX1RSVUUo
cmVjZWl2ZWRDaGFsbGVuZ2UpOwogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxv
YWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkRmluaXNoCkBAIC0yNDIxLDEwICsyNDIxLDEwIEBAIFRFU1QoV0tEb3dubG9hZCwg
Q2hhbGxlbmdlU3VjY2VzcykKIFRFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKIHsK
ICAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10p
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBfX2Js
b2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9
IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURh
dGEpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICNpZiBV
U0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCiAgICAgICAgIC8vIE1vamF2ZSBkb3dubG9h
ZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBl
dmFsdWF0aW9uLgpAQCAtMjQzNSwxOSArMjQzNSwxOSBAQCBURVNUKFdLRG93bmxvYWQsIENoYWxs
ZW5nZUZhaWx1cmUpCiAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgfTsKICAgICBfX2Jsb2Nr
IGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7Cisg
ICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOwog
ICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CiAgICAgfTsKICAgICBbd2ViVmlldyBz
dGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwog
ICAgIH1dOwogICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKICNpZiAhVVNFKExFR0FDWV9DRk5FVFdP
UktfRE9XTkxPQURTKQogICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKICNlbmRp
ZgotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05M
T0FEUykKICAgICAgICAgLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVj
ZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLApAQCAtMjQ2OCwxMSArMjQ2OCwx
MSBAQCB2b2lkIGJsb2JUZXN0KGJvb2wgZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbiwgc3Rk
Ojppbml0aWFsaXplcl9saXN0PERvd25sb2FkQwogICAgICJ9IgogICAgICI8L3NjcmlwdD48Ym9k
eSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKICAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRt
bCBiYXNlVVJMOm5pbF07Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
XihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgewogICAgICAg
ICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
QCJhYm91dDpibGFuayJdKQogICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGFjdGlvbi5zaG91bGRQ
ZXJmb3JtRG93bmxvYWQpOwogICAgICAgICBlbHNlIHsKQEAgLTI0ODUsMjkgKzI0ODUsMjkgQEAg
dm9pZCBibG9iVGVzdChib29sIGRvd25sb2FkRnJvbU5hdmlnYXRpb25BY3Rpb24sIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxEb3dubG9hZEMKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiAgICAgfTsKLSAgICBkZWxlZ2F0
ZS5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9i
Iik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJM
LnNjaGVtZSwgImJsb2IiKTsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9OwotICAg
IGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVz
cG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25s
b2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOwotICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOwogICAgIH07Ci0gICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmlu
ZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0
ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiZG93bmxvYWRGaWxlbmFtZSIpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgfTsK
ICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRvd25sb2FkRGlk
RmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERp
ZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH07
CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIAogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCAiMTIzIik7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
ZXhwZWN0ZWRDYWxsYmFja3MpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0
KCksIGV4cGVjdGVkQ2FsbGJhY2tzKTsKIH0KIAogVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9u
c2UpCkBAIC0yNTQwLDI4ICsyNTQwLDI4IEBAIFRFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNl
Tm9GaWxlbmFtZSkKICAgICAiICAgIGEuY2xpY2soKTsiCiAgICAgIn0iCiAgICAgIjwvc2NyaXB0
Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOwotICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1s
IGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOwot
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgZGVs
ZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0
aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5KSkgeworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGFj
dGlvbi5zaG91bGRQZXJmb3JtRG93bmxvYWQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hl
bWUsICJibG9iIik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2Vj
dXJpdHlPcmlnaW4uaG9zdCwgIndlYmtpdC5vcmciKTsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKICAgICB9OwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNj
aGVtZSwgImJsb2IiKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1l
LCAiVW5rbm93biIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAgICBk
b25lID0gdHJ1ZTsKICAgICB9OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUu
Z2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLApAQCAtMjU5MiwxMiArMjU5MiwxMiBAQCBU
RVNUKFdLRG93bmxvYWQsIFN1YmZyYW1lT3JpZ2luYXRvcikKIAogICAgIE5TU3RyaW5nICptYWlu
SFRNTCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8x
MjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07CiAKLSAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6bWFpbkhUTUwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93
ZWJraXQub3JnLyJdXTsKIAotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
ID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAq
cmVzcG9uc2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKSB7CiAgICAgICAgIGlmIChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdCiAgICAgICAgICAgICB8
fCBbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpj
aGlsZEZyYW1lU2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddCiAgICAgICAgICAgICB8
fCBbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpn
cmFuZGNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCkBAIC0yNjA1
LDIxICsyNjA1LDIxIEBAIFRFU1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeURvd25sb2FkKTsKICAgICB9OwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgp
Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2Ii
KTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdp
bi5ob3N0LCAiMTI3LjAuMC4xIik7CiAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5fZnJhbWUu
c2VjdXJpdHlPcmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7Ci0gICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgfTsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwotICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVu
YW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUu
Z2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShz
dWdnZXN0ZWRGaWxlbmFtZSwgIlVua25vd24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bmlsKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfTsKICAgICBVdGlsOjpydW4oJmRvbmUp
OwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24s
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlv
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1
dGlvbi5tbQppbmRleCBjZTRlMmRmMTY4NTMxMzIzYWI5NzJkNzdkNDkzNWE5M2E5YmYyMzZmLi42
NjdkYTM0NTkzMWMwMzRhMzcwMWZmMjg0MDU0MGY0OWIzOWIyYjU0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9u
Lm1tCkBAIC0xMDEsMTEgKzEwMSwxMSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljKQog
ICAgIE5TVVJMICpzZXJ2ZXJVUkwgPSBzZXJ2ZXIucmVxdWVzdCgpLlVSTDsKIAogICAgIGF1dG8g
ZXhhbXBsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8i
XTsKLSAgICBhdXRvIGF0dHJpYnV0aW9uID0gW1tbTW9ja0V2ZW50QXR0cmlidXRpb24gYWxsb2Nd
IGluaXRXaXRoUmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgZGVzdGluYXRpb25V
Ukw6ZXhhbXBsZVVSTF0gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcuX3VpRXZlbnRBdHRyaWJ1dGlvbiA9
IChVSUV2ZW50QXR0cmlidXRpb24gKilhdHRyaWJ1dGlvbjsKLSAgICBbd2ViVmlldy5jb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OllFU107Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9hbGxv
d1RMU0NlcnRpZmljYXRlQ2hhaW46QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIGZvckhv
c3Q6c2VydmVyVVJMLmhvc3RdOworICAgIGF1dG8gYXR0cmlidXRpb24gPSBhZG9wdE5TKFtbTW9j
a0V2ZW50QXR0cmlidXRpb24gYWxsb2NdIGluaXRXaXRoUmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJl
cXVlc3QoKS5VUkwgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTF0pOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICB3ZWJWaWV3LmdldCgpLl91aUV2ZW50
QXR0cmlidXRpb24gPSAoVUlFdmVudEF0dHJpYnV0aW9uICopYXR0cmlidXRpb24uZ2V0KCk7Cisg
ICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
LndlYnNpdGVEYXRhU3RvcmUgX2FsbG93VExTQ2VydGlmaWNhdGVDaGFpbjpAWyhpZCl0ZXN0Q2Vy
dGlmaWNhdGUoKS5nZXQoKV0gZm9ySG9zdDpzZXJ2ZXJVUkwuaG9zdF07CiAgICAgW3dlYlZpZXcg
X3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3Rpbmc6c2VydmVy
VVJMIGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOllFUyBjb21wbGV0aW9uSGFuZGxl
cjpeewogICAgICAgICAgICAgTlNTdHJpbmcgKmh0bWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIjxzY3JpcHQ+ZmV0Y2goJyVAY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCcs
e21vZGU6J25vLWNvcnMnfSk8L3NjcmlwdD4iLCBzZXJ2ZXJVUkxdOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCmluZGV4IDdjODc4MjZmZWU2ZjRlNDQxOTcwN2JlNzVkMjA2ZGNlODVhNjRlNzQuLmIy
MzAyYjU1OTRlNzRiYWZjNWJmMGQxOTY3ZmM4NTJmNWUwMDJmZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0KQEAgLTExNiw3ICsxMTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAg
IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFw
cC1icm93c2VyLXByaXZhY3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSJdKQogICAgICAgICBy
ZXNwb25zZSA9IEAiPGJvZHkgaWQgPSAnYm9keSc+PC9ib2R5PjxpZnJhbWUgaWQ9J2lmcmFtZSc+
PC9pZnJhbWU+PC9ib2R5PiI7CiAKLSAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25z
ZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbdGFz
ayBkaWRSZWNlaXZlRGF0YTpbcmVzcG9uc2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddXTsKICAgICBbdGFzayBkaWRGaW5pc2hdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11bHRpUHJv
Y2Vzcy5tbQppbmRleCA2ZjY3ZGMyN2VkYzNkMjc0NWIxNzBlNDgyYmNkOTBlODQ5NGNiOTVhLi44
N2FiOTFkNmU2ZWI3NzQzMzU0Y2RlNGFmODNhNGNjZjUxNjZjZGY0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11
bHRpUHJvY2Vzcy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpn
ZXROZXh0TWVzc2FnZSgpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKICAgICB9CiAKLSAgICByZXR1cm4gW1tzY3JpcHRNZXNzYWdlcy50
YWtlRmlyc3QoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc2NyaXB0TWVzc2Fn
ZXMudGFrZUZpcnN0KCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogVEVTVChJbmRleGVkREIsIEluZGV4
ZWREQk11bHRpUHJvY2VzcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0KaW5kZXggYzcyMDFkYTA5MWYxNmI1
MmI0YTg1OGZmYTRkNGVkZTA1NmVjM2VmNS4uZjNjM2Q4N2Q4NTAyZTUxN2Q4NWY2MGFmZDEzYTJh
MmE5MGIzNWYwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1
cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0KQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGlj
IFdLU2NyaXB0TWVzc2FnZSAqZ2V0TmV4dE1lc3NhZ2UoKQogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IFtbc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIHNjcmlwdE1lc3NhZ2VzLnRha2VGaXJzdCgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFRF
U1QoSW5kZXhlZERCLCBTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkpCkBAIC05
Niw3ICs5Niw3IEBAIFRFU1QoSW5kZXhlZERCLCBTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHkpCiAKICAgICBSZXRhaW5QdHI8X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+IHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0
aDsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpXSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGlkYlBhdGggPSBbaWRiUGF0aCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJmaWxlX18wIl07CiAgICAgaWRiUGF0aCA9IFtpZGJQYXRoIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImJhY2t3YXJkX2NvbXBhdGliaWxpdHkiXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
VGVtcEZpbGVTaXplLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJUZW1wRmlsZVNpemUubW0KaW5kZXggZTdiOTkyMjhjZTg3NmU0NDdlNjQ3ODJlZjlk
ODdmMjVhZGM5YjlmYS4uOTA2MGZiOTI4OWY3ZGQ3YzY2YzY0NmY4OWIyNTFlNDZlYjU5MTZjMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJUZW1wRmlsZVNpemUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJUZW1wRmlsZVNpemUubW0KQEAgLTcxLDcgKzcxLDcgQEAgVEVTVChJbmRl
eGVkREIsIEluZGV4ZWREQlRlbXBGaWxlU2l6ZSkKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCku
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0aC5nZXQoKTsKIAotICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURh
dGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVs
ZWFzZSgpOwogICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7CiAKICAg
ICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVz
OnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSklURW5hYmxlZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSklURW5hYmxlZC5tbQppbmRleCAxYjA2MjZlMmEwNTMwOWNiNjVmOWUzODA0MGFjZTRh
NDI0NWQ0OGY4Li5hODY3MjMwMGNhYjA2NWU2MTdlMTJlNmU3N2JmMDA3NDIxOGU5OTJiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0pJVEVuYWJsZWQu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVk
Lm1tCkBAIC00OSw3ICs0OSw3IEBAIFRFU1QoV2ViS2l0LCBKSVRFbmFibGVkKQogICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIG5ld10pOwogICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0SklURW5hYmxl
ZDpOT107CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBuZXddKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAg
ICBhdXRvIHdlYlZpZXdOb0pJVCA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAgICAgY2hlY2tKSVRFbmFibGVkKFdURk1vdmUod2ViVmlld05vSklUKSwg
Tk8pOwogICAgIGNoZWNrSklURW5hYmxlZChhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSksIFlFUyk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tCmluZGV4IDM0YTIxMTA5MzU5
ODMxMjZhYTZhMzA4MjI5YWVlOGZkNzJhM2VkMmMuLjBmY2NjNmYzZTAwN2E2MzljYmE3NzAyYWNk
OWVlYjM0MDY5Yjc3OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1t
CkBAIC01Niw3ICs1Niw3IEBAIFRFU1QoV0tXZWJWaWV3LCBMb2NhbFN0b3JhZ2VGZXRjaERhdGFS
ZWNvcmRzKQogICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKLSAgICB3ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBbW1tMb2NhbFN0b3JhZ2VV
SURlbGVnYXRlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5nZXQoKS5V
SURlbGVnYXRlID0gYWRvcHROUyhbW0xvY2FsU3RvcmFnZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
KS5hdXRvcmVsZWFzZSgpOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD5s
b2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVzdEtleScsICd0ZXN0VmFsdWUnKTthbGVydChsb2NhbFN0
b3JhZ2UuZ2V0SXRlbSgndGVzdEtleScpKTs8L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vbG9jYWxob3N0Il1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCmluZGV4IDVlNzQ4MjFmYTVhNGNkMjE1NjIz
OTAzNjY5ZGZjYjViZDllNjZkMjUuLjA1MWY5YTc3OThiMzM3ZjFlMmMzZWY0ZGNjNzQwNmY1NjJk
ZTMyNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05hdmlnYXRpb24ubW0KQEAgLTIyNSw4ICsyMjUsOCBAQCBAZW5kCiAKIFRFU1QoV0tOYXZpZ2F0
aW9uLCBGcmFtZXMpCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
biA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
LSAgICBUZXN0VVJMU2NoZW1lSGFuZGxlciAqaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRs
ZXIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKICAgICBbaGFuZGxlciBzZXRT
dGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgewogICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcgPSBuaWw7CiAgICAg
ICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
QCJmcmFtZTovL2hvc3QxLyJdKQpAQCAtMjQ0LDkgKzI0NCw5IEBAIFRFU1QoV0tOYXZpZ2F0aW9u
LCBGcmFtZXMpCiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZVN0cmluZyBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBbdGFzayBk
aWRGaW5pc2hdOwogICAgIH1dOwotICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlciBmb3JVUkxTY2hlbWU6QCJmcmFtZSJdOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJmcmFtZSJdOwog
Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtGcmFtZU5hdmln
YXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICAgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJhbWU6Ly9ob3N0
MS8iXV1dOwpAQCAtNzQzLDMzICs3NDMsMzMgQEAgVEVTVChXS05hdmlnYXRpb24sIEZyYW1lQmFj
a0xvYWRpbmcpCiAgICAgICAgIHsgIi9mcmFtZTEuaHRtbCIsIHsgIjxhIGhyZWY9J2ZyYW1lMi5o
dG1sJz5saW5rPC9hPiIgfSB9LAogICAgICAgICB7ICIvZnJhbWUyLmh0bWwiLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmcmFtZTIgbG9hZGVkJyk8L3NjcmlwdD4iIH0gfSwKICAgICB9KTsKLSAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0VUlEZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIG9ic2Vy
dmVyID0gW1tMb2FkaW5nT2JzZXJ2ZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5V
SURlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIg
Zm9yS2V5UGF0aDpAImxvYWRpbmciIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5l
dyBjb250ZXh0Om5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcubG9hZGluZyk7Ci0gICAg
RVhQRUNUX0VRKG9ic2VydmVyLmNoYW5nZXNPYnNlcnZlZCwgMHUpOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW0xv
YWRpbmdPYnNlcnZlciBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKyAgICBbd2ViVmlldyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOkAibG9hZGluZyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRl
eHQ6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaXNMb2FkaW5nXSk7CisgICAgRVhQ
RUNUX0VRKFtvYnNlcnZlciBjaGFuZ2VzT2JzZXJ2ZWRdLCAwdSk7CiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0gICAgRVhQRUNUX1RSVUUod2ViVmlldy5sb2Fk
aW5nKTsKLSAgICBFWFBFQ1RfRVEob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkLCAxdSk7Ci0gICAg
d2hpbGUgKG9ic2VydmVyLmNoYW5nZXNPYnNlcnZlZCA8IDJ1KQorICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIEVYUEVDVF9FUShbb2JzZXJ2ZXIgY2hhbmdlc09ic2Vy
dmVkXSwgMXUpOworICAgIHdoaWxlIChbb2JzZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSA8IDJ1KQog
ICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3Lmxv
YWRpbmcpOwotICAgIEVYUEVDVF9FUShvYnNlcnZlci5jaGFuZ2VzT2JzZXJ2ZWQsIDJ1KTsKLSAg
ICBFWFBFQ1RfRkFMU0Uod2ViVmlldy5jYW5Hb0JhY2spOworICAgIEVYUEVDVF9GQUxTRShbd2Vi
VmlldyBpc0xvYWRpbmddKTsKKyAgICBFWFBFQ1RfRVEoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZl
ZF0sIDJ1KTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgY2FuR29CYWNrXSk7CiAgICAgW3dl
YlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1l
JykuY29udGVudFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhJykuY2xpY2soKSIgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRG
b3JBbGVydF0sICJmcmFtZTIgbG9hZGVkIik7Ci0gICAgRVhQRUNUX0VRKG9ic2VydmVyLmNoYW5n
ZXNPYnNlcnZlZCwgMnUpOwotICAgIEVYUEVDVF9UUlVFKHdlYlZpZXcuY2FuR29CYWNrKTsKKyAg
ICBFWFBFQ1RfRVEoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZlZF0sIDJ1KTsKKyAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBjYW5Hb0JhY2tdKTsKICAgICBbd2ViVmlldyBnb0JhY2tdOwotICAgIHdo
aWxlIChvYnNlcnZlci5jaGFuZ2VzT2JzZXJ2ZWQgPCAzKQorICAgIHdoaWxlIChbb2JzZXJ2ZXIg
Y2hhbmdlc09ic2VydmVkXSA8IDMpCiAgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAg
RVhQRUNUX1RSVUUod2ViVmlldy5sb2FkaW5nKTsKLSAgICB3aGlsZSAob2JzZXJ2ZXIuY2hhbmdl
c09ic2VydmVkIDwgNCkKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKyAg
ICB3aGlsZSAoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZlZF0gPCA0KQogICAgICAgICBVdGlsOjpz
cGluUnVuTG9vcCgpOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmxvYWRpbmcpOwotICAgIFt3
ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyIGZvcktleVBhdGg6QCJsb2FkaW5nIl07Cisg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIFt3ZWJWaWV3IHJlbW92
ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJsb2FkaW5nIl07CiAKIH0KIApA
QCAtODA0LDExICs4MDQsMTEgQEAgVEVTVChXS05hdmlnYXRpb24sIFNpbXVsdGFuZW91c05hdmln
YXRpb25XaXRoRm9udHNGaW5pc2hlcykKICAgICAgICAgeyAiL2lmcmFtZXNyYy5odG1sIiwgeyAi
ZnJhbWUgY29udGVudCIgfSB9LAogICAgIH0pOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCi0gICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9
IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKICAg
ICAgICAgaWYgKFthY3Rpb24ucmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAInJl
ZnJlc2gtbmF2Il0pCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lDYW5jZWwpOwogICAgICAgICBlbHNlCkBAIC04MTYsNyArODE2LDcgQEAgVEVT
VChXS05hdmlnYXRpb24sIFNpbXVsdGFuZW91c05hdmlnYXRpb25XaXRoRm9udHNGaW5pc2hlcykK
ICAgICB9OwogCiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOwot
ICAgIGRlbGVnYXRlLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb24gKikgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgewogICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24g
PSB0cnVlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTmF2aWdhdGlvbkFjdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCBmY2M3MjY1ZmQyZjA5MWVi
YmZjYzAzNzlkZGI5YTg2YWU1NzQxZmI0Li5kZjdhYTdjNTMyMDFkMGZlOTFlMjY0Mzk2YWNjYjZh
NjE1MWRjMmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL05hdmlnYXRpb25BY3Rpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9OYXZpZ2F0aW9uQWN0aW9uLm1tCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCBURVNU
KFdLTmF2aWdhdGlvbkFjdGlvbiwgQmxvYlJlcXVlc3RCb2R5KQogICAgICAgICAgICAgIn0iCiAg
ICAgICAgICI8L3NjcmlwdD4iCiAgICAgICAgICI8Ym9keSBvbmxvYWQ9J2JvZHlMb2FkZWQoKSc+
IjsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
ID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24s
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgewog
ICAgICAgICBFWFBFQ1RfTlVMTChhY3Rpb24ucmVxdWVzdC5IVFRQQm9keSk7CiAgICAgICAgIGlm
IChbYWN0aW9uLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImFi
b3V0OmJsYW5rIl0pCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQppbmRleCA1ZGRjNTEzYmM4OTNmYzNjNjI2
MjMwZmY2ZjNjMGU3ODBlNjlhMDhhLi40M2ZjMWVkZmFkNWJjM2NhMjQwNGE2ZGY0NzhhYWYzODg2
M2UxMzRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05ldHdvcmtQcm9jZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogVEVTVChXZWJLaXQs
IE5ldHdvcmtQcm9jZXNzRW50aXRsZW1lbnRzKQogewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjphZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pLmF1dG9yZWxlYXNlKCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJzaW1wbGUiXTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKnN0b3JlID0gW3dl
YlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZTsKICAgICBib29sIGhhc0VudGl0
bGVtZW50ID0gW3N0b3JlIF9uZXR3b3JrUHJvY2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZzpA
ImNvbS5hcHBsZS5yb290bGVzcy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94Il07CkBA
IC04Miw5ICs4Miw5IEBAIFRFU1QoV2ViS2l0LCBIVFRQUmVmZXJlcikKIAogVEVTVChXZWJLaXQs
IE5ldHdvcmtQcm9jZXNzTGF1bmNoT25seVdoZW5OZWNlc3NhcnkpCiB7Ci0gICAgYXV0byB3ZWJW
aWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5jb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0g
WUVTOwotICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJM
U2NoZW1lQXNTZWN1cmU6QCJ0ZXN0Il07Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi5wcm9j
ZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eTpAInRlc3QiXTsKLSAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9uZXR3b3JrUHJvY2Vzc0V4aXN0c10pOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53
ZWJzaXRlRGF0YVN0b3JlLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IFlFUzsKKyAg
ICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1l
QXNTZWN1cmU6QCJ0ZXN0Il07CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQ
b29sIF9yZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5OkAi
dGVzdCJdOworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0
ZURhdGFTdG9yZSBfbmV0d29ya1Byb2Nlc3NFeGlzdHNdKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3NDcmFzaE5vblBl
cnNpc3RlbnREYXRhU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL05ldHdvcmtQcm9jZXNzQ3Jhc2hOb25QZXJzaXN0ZW50RGF0YVN0b3JlLm1tCmluZGV4IDJm
OGEyZTMzZmU4NzAzYmFiMmQ4ZTA1MTA4MzJiZWNkOWQ0ODkzNGIuLjg0N2MyNmFmMDA5ODc3NjFk
MmQzMDEyZTNhMGYwZDk3ZGRkYzk1NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRhU3Rv
cmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NyYXNoTm9uUGVyc2lzdGVudERhdGFTdG9yZS5tbQpAQCAtODQsNSArODQsNSBAQCBU
RVNUKFdlYktpdCwgTmV0d29ya1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRhU3RvcmUpCiAK
IFRFU1QoV2ViS2l0LCBOZXR3b3JrUHJvY2Vzc0NyYXNoTm9uRGVmYXVsdFBlcnNpc3RlbnREYXRh
U3RvcmUpCiB7Ci0gICAgY2hlY2tSZWNvdmVyeUFmdGVyQ3Jhc2goW1tbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOltbW19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNlXSk7Cisg
ICAgY2hlY2tSZWNvdmVyeUFmdGVyQ3Jhc2goYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXSkuYXV0b3JlbGVhc2Uo
KSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1ByZWZlcmVuY2VzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cmVmZXJlbmNlcy5tbQppbmRleCAwOWVmMDYxZWRhMWZkNTQyMDQ2MmQwN2U0MGJmMzA1NWU0Njk5
MjQ0Li5lMjgzZjQ1OTA0NjM4MDk2ZjBiZjk4NDczODg0MWEyNmQwNjRlMzVlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWZlcmVuY2VzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVyZW5jZXMubW0K
QEAgLTcwLDkgKzcwLDkgQEAgVEVTVChXZWJLaXQsIEV4cGVyaW1lbnRhbEZlYXR1cmVzKQogVEVT
VChXZWJLaXQsIFdlYkF1ZGlvUHJlZmVyZW5jZSkKIHsKICAgICBhdXRvIGNoZWNrID0gW10oYm9v
bCB2YWx1ZSkgewotICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLl93ZWJBdWRpb0VuYWJsZWQgPSB2YWx1
ZTsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdLl93ZWJBdWRpb0VuYWJsZWQgPSB2YWx1ZTsKKyAgICAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICAgICAgX19ibG9jayBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHJlc3VsdDsKICAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0
OkAibmV3IEJvb2xlYW4od2luZG93LkF1ZGlvQ29udGV4dCkudG9TdHJpbmcoKSIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHRGcm9tSlMsIE5TRXJyb3IgKmVycm9yKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiOTEyZDE2NWI3YWRjOTExYTg0NDFmODJlMmNiNDQ1
MGQ2MDgyZmI5Li4zZGZiODgwYWIwY2MyYjM5MDI1NGIyYzUzZWI0ZTJmNDY2YjliODAxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTU0NTQsNyArNTQ1NCw3IEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIFVzZVByZXdhcm1lZFByb2Nlc3NBZnRlclRlcm1pbmF0aW5nTmV0d29ya1By
b2Nlc3MpCiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlld0NvbmZpZ3VyYXRp
b24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwotICAgIHdlYlZpZXdDb25maWd1
cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJz
aXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1
dG9yZWxlYXNlKCk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCmluZGV4IDFmNjA2NWZkMGI0
MDRmZmM0MmM3Yjc2MDNjZWVlZWMwOGMwMWRjNWQuLmE2MGVjNmE3OTkyMjRhOGJjZjNlMjA2ZjY5
MDg5YjdhYzQwYzYxMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJveHkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm94eS5tbQpAQCAtODQsNyArODQsNyBAQCBURVNUKFdlYktpdCwgSFRUUFNQcm94eSkK
ICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldEhUVFBTUHJveHk6W05TVVJMIFVSTFdpdGhTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBz
ZXJ2ZXIucG9ydCgpXV1dOwogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0QWxsb3dzU2VydmVy
UHJlY29ubmVjdDpOT107CiAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Ci0gICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdl
YnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBb
dmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjp2aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtQcm94eURlbGVnYXRlIG5ld10pOwogICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0xMzEsNyArMTMxLDcgQEAgVEVTVChX
ZWJLaXQsIEhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKQogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24g
c2V0UHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjpZRVNdOwogCiAgICAgYXV0
byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3
XSk7Ci0gICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vi
c2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCld
OwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtQcm94eURlbGVn
YXRlIG5ld10pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CkBAIC0xNzQsNyArMTc0LDcgQEAgVEVTVChXZWJLaXQsIFNlY3VyZVByb3h5Q29ubmVj
dGlvbikKICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94
eUNvbm5lY3Rpb246WUVTXTsKIAogICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAgIFt2aWV3Q29uZmlndXJhdGlvbiBz
ZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXV07Cisg
ICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAx
MDApIGNvbmZpZ3VyYXRpb246dmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXV1dOwogICAgIHdoaWxlICghcmVjZWl2ZWRW
YWxpZENsaWVudEhlbGxvKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWZlMjQ4Njll
NGQ0NGMyY2Q4NTYwYWZkNWU2Y2MzZGMyYTMxMzgwNy4uZTU0Yzc4YzViNGVkYTI5N2NhNjExY2Fk
NzI0NTBmMjNhNDZmNjA2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMjcsMTMg
KzEyNywxMyBAQCBURVNUKFdlYktpdCwgUmVtb3RlT2JqZWN0UmVnaXN0cnkpCiAgICAgICAgIGlz
RG9uZSA9IGZhbHNlOwogCiAgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtp
dC5vcmcvIl1dOwotICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEu
MSIgaGVhZGVyRmllbGRzOkB7IEAidGVzdEZpZWxkTmFtZSIgOiBAInRlc3RGaWVsZFZhbHVlIiB9
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQ
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93ZWJraXQub3JnLyJdIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEi
IGhlYWRlckZpZWxkczpAeyBAInRlc3RGaWVsZE5hbWUiIDogQCJ0ZXN0RmllbGRWYWx1ZSIgfV0p
OwogICAgICAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAInRl
c3REb21haW4iIGNvZGU6MTIzIHVzZXJJbmZvOkB7QCJhIjpAImIifV07Ci0gICAgICAgIE5TVVJM
UHJvdGVjdGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25TcGFj
ZSBhbGxvY10gaW5pdFdpdGhIb3N0OkAidGVzdEhvc3QiIHBvcnQ6ODAgcHJvdG9jb2w6QCJ0ZXN0
UHJvdG9jb2wiIHJlYWxtOkAidGVzdFJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kSFRUUERpZ2VzdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRv
IHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10g
aW5pdFdpdGhIb3N0OkAidGVzdEhvc3QiIHBvcnQ6ODAgcHJvdG9jb2w6QCJ0ZXN0UHJvdG9jb2wi
IHJlYWxtOkAidGVzdFJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0
aW9uTWV0aG9kSFRUUERpZ2VzdF0pOwogICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRp
YWwgPSBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoVXNlcjpAInRlc3RVc2VyIiBwYXNz
d29yZDpAInRlc3RQYXNzd29yZCIgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2VGb3JTZXNzaW9uXTsKICAgICAgICAgaWQ8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlcj4gc2VuZGVyID0gbmlsOwotICAgICAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICpjaGFsbGVuZ2UgPSBbW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGFsbG9jXSBpbml0
V2l0aFByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UgcHJvcG9zZWRDcmVkZW50aWFsOmNy
ZWRlbnRpYWwgcHJldmlvdXNGYWlsdXJlQ291bnQ6NDIgZmFpbHVyZVJlc3BvbnNlOnJlc3BvbnNl
IGVycm9yOmVycm9yIHNlbmRlcjpzZW5kZXJdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgW29iamVj
dCBzZW5kUmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGNoYWxsZW5nZTpjaGFsbGVu
Z2UgZXJyb3I6ZXJyb3IgY29tcGxldGlvbkhhbmRsZXI6XihOU1VSTFJlcXVlc3QgKmRlc2VyaWFs
aXplZFJlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKmRlc2VyaWFsaXplZFJlc3BvbnNlLCBOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpkZXNlcmlhbGl6ZWRDaGFsbGVuZ2UsIE5TRXJyb3IgKmRl
c2VyaWFsaXplZEVycm9yKSB7CisgICAgICAgIGF1dG8gY2hhbGxlbmdlID0gYWRvcHROUyhbW05T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVjdGlvblNwYWNl
OnByb3RlY3Rpb25TcGFjZS5nZXQoKSBwcm9wb3NlZENyZWRlbnRpYWw6Y3JlZGVudGlhbCBwcmV2
aW91c0ZhaWx1cmVDb3VudDo0MiBmYWlsdXJlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgZXJyb3I6
ZXJyb3Igc2VuZGVyOnNlbmRlcl0pOworICAgICAgICBbb2JqZWN0IHNlbmRSZXF1ZXN0OnJlcXVl
c3QgcmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSBlcnJv
cjplcnJvciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TVVJMUmVxdWVzdCAqZGVzZXJpYWxpemVkUmVx
dWVzdCwgTlNVUkxSZXNwb25zZSAqZGVzZXJpYWxpemVkUmVzcG9uc2UsIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKmRlc2VyaWFsaXplZENoYWxsZW5nZSwgTlNFcnJvciAqZGVzZXJpYWxp
emVkRXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXNlcmlhbGl6ZWRSZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKICAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShbKE5TSFRUUFVSTFJlc3BvbnNlICopZGVzZXJpYWxpemVkUmVz
cG9uc2UgYWxsSGVhZGVyRmllbGRzXVtAInRlc3RGaWVsZE5hbWUiXSwgInRlc3RGaWVsZFZhbHVl
Iik7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzZXJpYWxpemVkQ2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5yZWFsbSwgInRlc3RSZWFsbSIpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIEBl
bmQKIAogVEVTVChXZWJLaXQsIFJlbW90ZU9iamVjdFJlZ2lzdHJ5X0NhbGxSZXBseUJsb2NrQWZ0
ZXJPcmlnaW5hdGluZ1dlYlZpZXdEZWFsbG9jYXRlcykKIHsKLSAgICBMb2NhbE9iamVjdCAqbG9j
YWxPYmplY3QgPSBbW1tMb2NhbE9iamVjdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gbG9jYWxPYmplY3QgPSBhZG9wdE5TKFtbTG9jYWxPYmplY3QgYWxsb2NdIGluaXRdKTsK
ICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IHdlYWtXZWJWaWV3UHRyOwogCiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CkBAIC0yMjEsNyArMjIxLDcgQEAgVEVTVChXZWJLaXQsIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5X0NhbGxSZXBseUJsb2NrQWZ0ZXJPcmlnaW5hdGluZ1dlYlZpZXdEZWFsbG9jYXQK
ICAgICAgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2UgPSByZW1vdGVPYmpl
Y3RJbnRlcmZhY2UoKTsKICAgICAgICAgaWQgPFJlbW90ZU9iamVjdFByb3RvY29sPiBvYmplY3Qg
PSBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZW1vdGVPYmplY3RQcm94eVdpdGhJ
bnRlcmZhY2U6aW50ZXJmYWNlXTsKIAotICAgICAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJl
Z2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OmxvY2FsT2JqZWN0IGludGVyZmFjZTpsb2Nh
bE9iamVjdEludGVyZmFjZSgpXTsKKyAgICAgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdp
c3RyeV0gcmVnaXN0ZXJFeHBvcnRlZE9iamVjdDpsb2NhbE9iamVjdC5nZXQoKSBpbnRlcmZhY2U6
bG9jYWxPYmplY3RJbnRlcmZhY2UoKV07CiAKICAgICAgICAgW29iamVjdCBjYWxsVUlQcm9jZXNz
TWV0aG9kV2l0aFJlcGx5QmxvY2tdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2ViVmlld1RpbWVvdXQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2ViVmlld1RpbWVvdXQubW0KaW5k
ZXggNzdhNTM3N2QzNmUxNmUxMzA3NzI2N2FmMmMyNjVkNTcwNGM4NTNiYS4uZGNiZmQ1MDc5NTQ2
YTQ2YzM2OTlmMTg4ZDhiNmYzMGI3YTJlZWQ0YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3VGltZW91
dC5tbQpAQCAtMzgsNyArMzgsNyBAQCBURVNUKFdlYktpdCwgUmVwYXJlbnRXZWJWaWV3VGltZW91
dCkKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldElnbm9yZVN5bmNocm9ub3VzTWVz
c2FnaW5nVGltZW91dHNGb3JUZXN0aW5nOllFU107CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6
W1tbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2Uo
KV07CiAKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAx
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsK
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJoZWxsbyJdOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggMGM1NTlhYzM3ZGMxYzNhMDQ3M2ZhMTMzMGFhMTA0
YmJmODViYjc1NC4uODFiMTRmNDU2M2QzODJjZDA1MDBmM2I1NTM4NjU3ZTU5ZTYxNmFjNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVChSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSwgTG9hZEluZm8pCiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdG
cm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1s4XSBjbGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVz
dCIpOwogICAgIEVYUEVDVF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzhdIFVSTF0ucGF0aCwg
Ii9mZXRjaFRhcmdldCIpOwotICAgIEVYUEVDVF9XS19TVFJFUShbW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOltvdGhlclBhcmFtZXRlcnNbOF0gSFRUUEJvZHldIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSBhdXRvcmVsZWFzZV0sICJhPWImYz1kIik7CisgICAgRVhQRUNUX1dL
X1NUUkVRKGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltvdGhlclBhcmFt
ZXRlcnNbOF0gSFRUUEJvZHldIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuZ2V0KCks
ICJhPWImYz1kIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKE5TU3RyaW5nRnJvbUNsYXNzKFtvdGhl
clBhcmFtZXRlcnNbOV0gY2xhc3NdKSwgIk5TSFRUUFVSTFJlc3BvbnNlIik7CiAgICAgRVhQRUNU
X1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbOV0gVVJMXS5wYXRoLCAiL2ZldGNoVGFyZ2V0Iik7
CiAgICAgRVhQRUNUX0VRKG90aGVyUGFyYW1ldGVyc1sxMF0sIG5pbCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MubW0KaW5kZXggY2Y5ZmMzNDBlMzkwZTI4ZTQxNGQwZDA0MWFiZDYyODkxMzY3
Y2NhMC4uOTE0Mjg0NjVhZjA3MTQwMDhjYWYzZjY5NmJkZDAzZTRjYTZmNTc4ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIFRFU1QoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcywgUmVtb3ZlU2Vzc2lvbklEKQogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0g
YXV0b3JlbGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9
IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwog
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIApAQCAtNTM1LDEyICs1MzUsMTIgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLCBEYXRhVGFza0lkZW50aWZpZXJDb2xsaXNpb24pCiAgICAgICAgIFRDUFNlcnZlcjo6
d3JpdGUoc29ja2V0LCBib2R5LCBzdHJsZW4oYm9keSkpOwogICAgIH0pOwogCi0gICAgX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgc3RvcmVD
b25maWd1cmF0aW9uLmh0dHBzUHJveHkgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIGh0dHBzU2VydmVyLnBv
cnQoKV1dOwotICAgIHN0b3JlQ29uZmlndXJhdGlvbi5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0ID0g
Tk87Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBzdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCkuaHR0cHNQcm94eSA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgaHR0cHNTZXJ2ZXIucG9ydCgp
XV07CisgICAgc3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmFsbG93c1NlcnZlclByZWNvbm5lY3Qg
PSBOTzsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7Ci0gICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6
ZGF0YVN0b3JlXTsKKyAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpk
YXRhU3RvcmUuZ2V0KCldOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNv
bmZpZ3VyYXRpb246dmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldzEgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIGFuZCBpbml0
aWFsaXplIGRhdGEgc3RvcmUiXTsKQEAgLTU4Myw4ICs1ODMsOCBAQCBURVNUKFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MsIERhdGFUYXNrSWRlbnRpZmllckNvbGxpc2lvbikKIFRFU1QoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcywgTm9NZXNzYWdlc1doZW5Ob3RUZXN0aW5nKQogewogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246W1tbX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV0gYXV0b3JlbGVhc2VdOwot
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKKyAgICBh
dXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV0pOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKICAgICBbZGF0YVN0b3JlIF9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwpAQCAtMTI1
MCw5ICsxMjUwLDkgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBDYW5BY2Nlc3NEYXRh
U3VtbWFyeVdpdGhOb1Byb2Nlc3NQb29sKQogICAgIFtkZWZhdWx0RmlsZU1hbmFnZXIgY29weUl0
ZW1BdFBhdGg6bmV3RmlsZVVSTC5wYXRoIHRvUGF0aDpmaWxlVVJMLnBhdGggZXJyb3I6bmlsXTsK
ICAgICBFWFBFQ1RfVFJVRShbZGVmYXVsdEZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6Zmls
ZVVSTC5wYXRoXSk7CiAKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0
YVN0b3JlQ29uZmlndXJhdGlvbiA9IFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
bmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGl0cFJvb3RVUkw7Ci0gICAgYXV0byAqZGF0YVN0b3Jl
ID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRh
dGFTdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBu
ZXddKTsKKyAgICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5ID0gaXRwUm9vdFVSTDsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0
TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CiAKICAgICBzdGF0aWMgYm9vbCBkb25lRmxhZyA9
IGZhbHNlOwpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LCBTdG9yZVN1c3BlbnNpb24pCiB7CiAgICAgYXV0byAqc2hhcmVkUHJvY2Vzc1Bvb2wgPSBbV0tQ
cm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOwogICAgIGF1dG8gKmRhdGFTdG9yZTEgPSBb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwotICAgIGF1dG8gKmRhdGFTdG9y
ZTIgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
W1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGF0YVN0b3JlMiA9IGFkb3B0TlMoW1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246YWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2Uo
KV0pOwogCiAgICAgW2RhdGFTdG9yZTEgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OllFU107CiAgICAgW2RhdGFTdG9yZTIgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OllFU107CkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3Ms
IFN0b3JlU3VzcGVuc2lvbikKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbjIgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9u
MiBzZXRQcm9jZXNzUG9vbDogc2hhcmVkUHJvY2Vzc1Bvb2xdOwotICAgIGNvbmZpZ3VyYXRpb24y
LmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmUyOworICAgIGNvbmZpZ3VyYXRpb24y
LmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmUyLmdldCgpOwogCiAgICAgYXV0byB3
ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uMS5nZXQoKV0p
OwogICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbjIuZ2V0KCldKTsKQEAgLTEzMjUsNyArMTMyNSw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+
KXRhCiAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCIvdHAtbG9hZCJdKQogICAgICAgICByZXNwb25zZSA9IEAiPGJvZHk+PC9ib2R5PiI7CiAKLSAg
ICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVh
c2VdXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFt
ZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbcmVzcG9u
c2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbdGFzayBk
aWRGaW5pc2hdOwogfQpAQCAtMTM0MiwxMCArMTM0MiwxMCBAQCBURVNUKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MsIEJhY2tGb3J3YXJkUGVyUGFnZURhdGEpCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAKICAgICBhdXRvIHNjaGVtZUhh
bmRsZXIgPSBhZG9wdE5TKFtbUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NjaGVtZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hl
bWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInJlc291cmNlLWxvYWQtc3RhdGlzdGljcyJd
OwogCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIHN0YXRpYyBib29sIGRvbmVGbGFnID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nh
ZmVCcm93c2luZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Fm
ZUJyb3dzaW5nLm1tCmluZGV4IGMwZjUyNTFmNDVmM2RkMjhhNmU0NmUxMzBhZTZlMGY5YmUzZDZi
ODkuLmNlYTg1OWI1OWQ5YmI2MjlhNjZhMGFmNGU0OTk0MDZlOTcxODg5ZTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1t
CkBAIC03Nyw3ICs3Nyw3IEBAIEBpbXBsZW1lbnRhdGlvbiBUZXN0U2VydmljZUxvb2t1cFJlc3Vs
dAogCiArIChpbnN0YW5jZXR5cGUpcmVzdWx0V2l0aFByb3ZpZGVyOihSZXRhaW5QdHI8TlNTdHJp
bmc+JiYpcHJvdmlkZXIgcGhpc2hpbmc6KEJPT0wpcGhpc2hpbmcgbWFsd2FyZTooQk9PTCltYWx3
YXJlIHVud2FudGVkU29mdHdhcmU6KEJPT0wpdW53YW50ZWRTb2Z0d2FyZQogewotICAgIFRlc3RT
ZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQgPSBbW1Rlc3RTZXJ2aWNlTG9va3VwUmVzdWx0IGFs
bG9jXSBpbml0XTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tUZXN0U2VydmljZUxvb2t1
cFJlc3VsdCBhbGxvY10gaW5pdF0pOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
bmlsOwogCkBAIC04Niw3ICs4Niw3IEBAICsgKGluc3RhbmNldHlwZSlyZXN1bHRXaXRoUHJvdmlk
ZXI6KFJldGFpblB0cjxOU1N0cmluZz4mJilwcm92aWRlciBwaGlzaGluZzooQk9PCiAgICAgcmVz
dWx0LT5faXNNYWx3YXJlID0gbWFsd2FyZTsKICAgICByZXN1bHQtPl9pc1Vud2FudGVkU29mdHdh
cmUgPSB1bndhbnRlZFNvZnR3YXJlOwogCi0gICAgcmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilw
cm92aWRlcgpAQCAtMTIwLDEzICsxMjAsMTMgQEAgQGltcGxlbWVudGF0aW9uIFRlc3RMb29rdXBS
ZXN1bHQKIAogKyAoaW5zdGFuY2V0eXBlKXJlc3VsdFdpdGhSZXN1bHRzOihSZXRhaW5QdHI8TlNB
cnJheTxUZXN0U2VydmljZUxvb2t1cFJlc3VsdCAqPj4mJilyZXN1bHRzCiB7Ci0gICAgVGVzdExv
b2t1cFJlc3VsdCAqcmVzdWx0ID0gW1tUZXN0TG9va3VwUmVzdWx0IGFsbG9jXSBpbml0XTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tUZXN0TG9va3VwUmVzdWx0IGFsbG9jXSBpbml0XSk7
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgcmVzdWx0
LT5fcmVzdWx0cyA9IFdURk1vdmUocmVzdWx0cyk7CiAgICAgCi0gICAgcmV0dXJuIFtyZXN1bHQg
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
TlNBcnJheTxUZXN0U2VydmljZUxvb2t1cFJlc3VsdCAqPiAqKXNlcnZpY2VMb29rdXBSZXN1bHRz
CkBAIC0zMDgsNyArMzA4LDcgQEAgVEVTVChTYWZlQnJvd3NpbmcsIFNob3dXYXJuaW5nU1BJKQog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBhdXRvIHNo
b3dXYXJuaW5nID0gXnsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSBmYWxzZTsK
LSAgICAgICAgW3dlYlZpZXcgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFVSTDpuaWwgdGl0
bGU6QCJ0ZXN0IHRpdGxlIiB3YXJuaW5nOkAidGVzdCB3YXJuaW5nIiBkZXRhaWxzOltbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJ0ZXN0IGRldGFpbHMiXSBhdXRv
cmVsZWFzZV0gY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIFt3ZWJWaWV3IF9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhVUkw6bmlsIHRpdGxlOkAi
dGVzdCB0aXRsZSIgd2FybmluZzpAInRlc3Qgd2FybmluZyIgZGV0YWlsczphZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAInRlc3QgZGV0YWlscyJdKS5h
dXRvcmVsZWFzZSgpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzaG91bGRDb250aW51ZSkgewog
ICAgICAgICAgICAgc2hvdWxkQ29udGludWVWYWx1ZSA9IHNob3VsZENvbnRpbnVlOwogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSB0cnVlOwogICAgICAgICB9XTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNl
V29ya2VyQmFzaWMubW0KaW5kZXggZTkzNjA1ZjA1MmEyYmViYjZiZGJiMWNkOWE3YmJkMjY2YTQy
MTVlNi4uZGQ3MDc2MjU2YjVmNDJlYzE2MDcxOWZjMDJmODQ3NWQxYTM0ZmE2NSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNl
V29ya2VyQmFzaWMubW0KQEAgLTQ3NywxMSArNDc3LDExIEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFVzZXJBZ2VudDooTlNTdHJpbmcgKil1c2VyQWdlbnQKIAogLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05h
dmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVz
ZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFk
b3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIGlmIChuYXZp
Z2F0aW9uQWN0aW9uLnRhcmdldEZyYW1lLm1haW5GcmFtZSkKICAgICAgICAgW3dlYnNpdGVQb2xp
Y2llcyBfc2V0Q3VzdG9tVXNlckFnZW50Ol91c2VyQWdlbnRdOwogCi0gICAgZGVjaXNpb25IYW5k
bGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBv
bGljaWVzLmdldCgpKTsKIH0KIAogQGVuZApAQCAtMTQwNyw3ICsxNDA3LDcgQEAgVEVTVChTZXJ2
aWNlV29ya2VycywgTm9uRGVmYXVsdFNlc3Npb25JRCkKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHNl
cnZpY2VXb3JrZXJzUGF0aDsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQo
KS5faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpZGJQYXRoOwogCi0gICAgY29uZmlndXJh
dGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpXSBhdXRvcmVsZWFzZV07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNl
KCk7CiAKICAgICBSZXRhaW5QdHI8U1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2U+
IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRN
ZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CkBAIC0xNDU2LDEwICsxNDU2LDEwIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFBy
b2Nlc3NQZXJTaXRlKQogCiAgICAgLy8gTm9ybWFsbHksIHNlcnZpY2Ugd29ya2VycyBnZXQgdGVy
bWluYXRlZCBzZXZlcmFsIHNlY29uZHMgYWZ0ZXIgdGhlaXIgY2xpZW50cyBhcmUgZ29uZS4KICAg
ICAvLyBEaXNhYmxlIHRoaXMgZGVsYXkgZm9yIHRoZSBwdXJwb3NlIG9mIHRlc3RpbmcuCi0gICAg
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
PSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3Jl
bGVhc2VdOwotICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IE5POworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFNlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQ6Tk9dOwogCi0gICAgYXV0byBkYXRhU3RvcmUgPSBh
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OmRhdGFTdG9yZUNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMo
W1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVh
biBzbGF0ZSBkYXRhIHN0b3JlCiAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0
ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcmFnZVF1b3RhLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW0KaW5kZXggMGQ3
NjQ4YWY5MTFlZjI5MzJjNDg5MDQ3MDIxMzM3NGZiMDdmZmE0MS4uZjFhYjY4MzlkZWMzZDJhNDFl
NzRhMjg3NTM0MzNkYmI0MTY2ZGQ4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9yYWdlUXVvdGEubW0KQEAgLTI1MCwxNiArMjUwLDE2IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRWaXNpYmxlKFRlc3RXS1dlYlZpZXcgKndlYlZpZXcpCiBU
RVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZUhpZGRlbikKIHsKICAgICBkb25lID0gZmFsc2U7Ci0g
ICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9
IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07Ci0gICAgc3RvcmVDb25maWd1cmF0aW9uLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IDEw
MjQgKiA0MDA7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0
aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
c3RvcmVDb25maWd1cmF0aW9uIHNldFBlck9yaWdpblN0b3JhZ2VRdW90YToxMDI0ICogNDAwXTsK
KyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
W2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZp
Z3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0
aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKIAogICAgIGF1dG8gbWVz
c2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOwpAQCAtMzEwLDE2
ICszMTAsMTYgQEAgVEVTVChXZWJLaXQsIFF1b3RhRGVsZWdhdGVIaWRkZW4pCiBURVNUKFdlYktp
dCwgUXVvdGFEZWxlZ2F0ZSkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgc3Rv
cmVDb25maWd1cmF0aW9uLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IDEwMjQgKiA0MDA7Ci0gICAg
V0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc3RvcmVDb25maWd1cmF0
aW9uIHNldFBlck9yaWdpblN0b3JhZ2VRdW90YToxMDI0ICogNDAwXTsKKyAgICBhdXRvIGRhdGFT
dG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW2RhdGFTdG9yZSByZW1v
dmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
ICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vi
c2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVE
YXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1l
c3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOwpAQCAtMzcxLDE2ICszNzEsMTYgQEAgVEVT
VChXZWJLaXQsIFF1b3RhRGVsZWdhdGUpCiBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZVJlbG9h
ZCkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgc3RvcmVDb25maWd1cmF0aW9u
LnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IDEwMjQgKiA0MDA7Ci0gICAgV0tXZWJzaXRlRGF0YVN0
b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBz
dG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldFBlck9yaWdp
blN0b3JhZ2VRdW90YToxMDI0ICogNDAwXTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMo
W1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9
IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAg
ICAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6ZGF0YVN0b3JlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRh
dGFTdG9yZS5nZXQoKV07CiAgICAgCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMo
W1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CkBAIC00MTksMTYgKzQxOSwxNiBAQCBURVNUKFdlYktp
dCwgUXVvdGFEZWxlZ2F0ZVJlbG9hZCkKIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlTmF2aWdh
dGVGcmFnbWVudCkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgc3RvcmVDb25m
aWd1cmF0aW9uLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IDEwMjQgKiA0MDA7Ci0gICAgV0tXZWJz
aXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNl
dFBlck9yaWdpblN0b3JhZ2VRdW90YToxMDI0ICogNDAwXTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9
IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRh
T2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVk
U2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6ZGF0YVN0b3JlLmdldCgpXTsKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbUXVvdGFNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VI
YW5kbGVyLmdldCgpIG5hbWU6QCJxdCJdOwpAQCAtNDcwLDggKzQ3MCw4IEBAIFRFU1QoV2ViS2l0
LCBRdW90YURlbGVnYXRlTmF2aWdhdGVGcmFnbWVudCkKIFRFU1QoV2ViS2l0LCBEZWZhdWx0UXVv
dGEpCiB7CiAgICAgZG9uZSA9IGZhbHNlOwotICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc3Rv
cmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBk
aXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7
CkBAIC00NzksNyArNDc5LDcgQEAgVEVTVChXZWJLaXQsIERlZmF1bHRRdW90YSkKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOwogCiAgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlv
bi5tbQppbmRleCAyM2RiY2ZlNGM0ZjE1MjNjZDc5M2FhMTExMWM0ZGE0ZjIxMzMyMDk2Li41NTg3
MjVkNDU1YjQ1YjVhZGNkZWJmZDVhOTUxYzY1NThhZWU5MjhiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KQEAg
LTE2Myw5ICsxNjMsOSBAQCBURVNUKFRMU1ZlcnNpb24sIERlZmF1bHRCZWhhdmlvcikKIAogUmV0
YWluUHRyPFdLV2ViVmlldz4gbWFrZVdlYlZpZXdXaXRoKFdLV2Vic2l0ZURhdGFTdG9yZSAqc3Rv
cmUsIFJldGFpblB0cjxUZXN0TmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKIHsKLSAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGNvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSA9IHN0b3JlOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOnN0b3JlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW2RlbGVnYXRl
IHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsK
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVu
dGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CkBA
IC00MTMsNyArNDEzLDcgQEAgVEVTVChUTFNWZXJzaW9uLCBEaWROZWdvdGlhdGVNb2Rlcm5UTFMp
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBuZXddKTsKICAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKICAgICBbZGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBzZXRGYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZDpZRVNdOwotICAgIFtj
b25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
IGF1dG9yZWxlYXNlXV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTph
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CkBAIC00NzAsMTggKzQ3
MCwxOCBAQCBURVNUKFRMU1ZlcnNpb24sIExlZ2FjeVN1YnJlc291cmNlcykKICAgICAgICAgeyAi
LyIsIHsgbWFrZVN0cmluZygiPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOiIsIGxlZ2Fj
eVNlcnZlci5wb3J0KCksICIvZnJhbWUnLz4iKSB9fQogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKLSAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25m
aWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5mYXN0
U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwot
ICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJh
dGlvbl0gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OndlYlZpZXdDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkYXRhU3RvcmVD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICBbZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBzZXRGYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZDpZRVNdOwor
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIG5ld10pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCi0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewogICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwg
TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKICAgICAgICAgY2FsbGJhY2so
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwg
Y3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3Rd
KTsKICAgICB9XTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVd
OworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDptb2Rlcm5TZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBb
ZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtNDg5LDggKzQ4OSw4IEBA
IFRFU1QoVExTVmVyc2lvbiwgTGVnYWN5U3VicmVzb3VyY2VzKQogICAgIEVYUEVDVF9FUShsZWdh
Y3lTZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAwdSk7CiAgICAgRVhQRUNUX0VRKG1vZGVyblNlcnZl
ci50b3RhbFJlcXVlc3RzKCksIDF1KTsKIAotICAgIGF1dG8gZGVmYXVsdFdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBbZGVmYXVsdFdlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICBhdXRvIGRlZmF1bHRXZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOworICAgIFtkZWZhdWx0V2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFtkZWZhdWx0V2ViVmlldyBsb2FkUmVxdWVzdDpt
b2Rlcm5TZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOwogICAgIEVYUEVDVF9FUShsZWdhY3lTZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAx
dSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
eHRNYW5pcHVsYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1RleHRNYW5pcHVsYXRpb24ubW0KaW5kZXggMDE5MmI5NDgzM2U2Y2U5NjE1MjdhZmY2ZGIwMDNk
OTM2ZDRlN2I4Ny4uZjc4MDIzYzE1ZTY4MzUyMzIwZmYyNzEyMDFkMjAwNWM0MWFjMTk5YSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1
bGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4
dE1hbmlwdWxhdGlvbi5tbQpAQCAtNDA0LDcgKzQwNCw3IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlv
biwgU3RhcnRUZXh0TWFuaXB1bGF0aW9uQXBwbHlTaW5nbGVFeGNsdWlvblJ1bGVGb3JFbGVtZW50
KQogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKLSAg
ICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNs
dXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJjb2RlIl0gYXV0b3JlbGVhc2VdLAorICAgICAg
ICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRF
eGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJjb2RlIl0pLmF1dG9yZWxlYXNlKCksCiAg
ICAgXV07CiAKICAgICBkb25lID0gZmFsc2U7CkBAIC00NDAsOCArNDQwLDggQEAgVEVTVChUZXh0
TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lv
blJ1bGVzRm9yQXR0cmkKIAogICAgIFJldGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lv
blJ1bGVzOkBbCi0gICAgICAgIFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFs
bG9jXSBpbml0RXhjbHVzaW9uOihCT09MKVlFUyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1ZGUi
IHZhbHVlOkAieWVzIl0gYXV0b3JlbGVhc2VdLAotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0
aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClOTyBmb3JBdHRyaWJ1
dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAibm8iXSBhdXRvcmVsZWFzZV0sCisgICAgICAgIGFk
b3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1
c2lvbjooQk9PTClZRVMgZm9yQXR0cmlidXRlOkAiZGF0YS1leGNsdWRlIiB2YWx1ZTpAInllcyJd
KS5hdXRvcmVsZWFzZSgpLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4
Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpTk8gZm9yQXR0cmlidXRlOkAi
ZGF0YS1leGNsdWRlIiB2YWx1ZTpAIm5vIl0pLmF1dG9yZWxlYXNlKCksCiAgICAgXV07CiAKICAg
ICBkb25lID0gZmFsc2U7CkBAIC00NjgsNyArNDY4LDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9u
LCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9yQ2xh
c3MKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0
aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4
Y2x1c2lvblJ1bGVzOkBbCi0gICAgICAgIFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25S
dWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JDbGFzczpAImV4Y2x1ZGUiXSBhdXRvcmVs
ZWFzZV0sCisgICAgICAgIGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVs
ZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjpZRVMgZm9yQ2xhc3M6QCJleGNsdWRlIl0pLmF1dG9yZWxl
YXNlKCksCiAgICAgXV07CiAKICAgICBkb25lID0gZmFsc2U7CkBAIC00OTUsOSArNDk1LDkgQEAg
VEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lv
bkV4Y2x1c2lvblJ1bGVzRm9yQ2xhc3MKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCi0gICAgICAgIFtbW19XS1RleHRN
YW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JBdHRy
aWJ1dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAieWVzIl0gYXV0b3JlbGVhc2VdLAotICAgICAg
ICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lv
bjpOTyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAibm8iXSBhdXRvcmVsZWFz
ZV0sCi0gICAgICAgIFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBp
bml0RXhjbHVzaW9uOllFUyBmb3JDbGFzczpAImV4Y2x1ZGUiXSBhdXRvcmVsZWFzZV0sCisgICAg
ICAgIGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5p
dEV4Y2x1c2lvbjpZRVMgZm9yQXR0cmlidXRlOkAiZGF0YS1leGNsdWRlIiB2YWx1ZTpAInllcyJd
KS5hdXRvcmVsZWFzZSgpLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4
Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246Tk8gZm9yQXR0cmlidXRlOkAiZGF0YS1l
eGNsdWRlIiB2YWx1ZTpAIm5vIl0pLmF1dG9yZWxlYXNlKCksCisgICAgICAgIGFkb3B0TlMoW1tf
V0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjpZRVMg
Zm9yQ2xhc3M6QCJleGNsdWRlIl0pLmF1dG9yZWxlYXNlKCksCiAgICAgXV07CiAKICAgICBkb25l
ID0gZmFsc2U7CkBAIC0yNDA2LDcgKzI0MDYsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVzaW9uSXNWaW9sYXRlZCkKIAogICAg
IFJldGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCi0gICAgICAgIFtb
W19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOihC
T09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSBhdXRvcmVsZWFzZV0sCisgICAgICAgIGFkb3B0TlMo
W1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjoo
Qk9PTClZRVMgZm9yRWxlbWVudDpAImVtIl0pLmF1dG9yZWxlYXNlKCksCiAgICAgXV07CiAKICAg
ICBkb25lID0gZmFsc2U7CkBAIC0yNDUxLDcgKzI0NTEsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRp
b24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVkZWRDb250ZW50QXBwZWFy
c01vcgogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsK
LSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRF
eGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJlbSJdIGF1dG9yZWxlYXNlXSwKKyAgICAg
ICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0
RXhjbHVzaW9uOihCT09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSkuYXV0b3JlbGVhc2UoKSwKICAg
ICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTI0OTYsNyArMjQ5Niw3IEBAIFRFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUHJlc2VydmVzRXhjbHVkZWRD
b250ZW50KQogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9u
PiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6
QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGlu
aXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJlbSJdIGF1dG9yZWxlYXNlXSwKKyAg
ICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBp
bml0RXhjbHVzaW9uOihCT09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSkuYXV0b3JlbGVhc2UoKSwK
ICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAwZWI0NTlmMzFlNDNkZTk3
OGJjNmJkNmM5MWFjZjFhNzA2MTZlOGNkLi41NmVkNjY5ZjNkYmRkYTRlZDFiOWJmY2Q2ZmEzMDIz
Y2MyMTRjMjk0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9VSURlbGVnYXRlLm1tCkBAIC02Niw3ICs2Niw3IEBAIEBlbmQKIAogVEVTVChXZWJLaXQs
IFdLV2ViVmlld0lzUGxheWluZ0F1ZGlvKQogewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjphZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
LmF1dG9yZWxlYXNlKCldKTsKICAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW0F1ZGlvT2Jz
ZXJ2ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBhZGRPYnNlcnZlcjpvYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOkAiX2lzUGxheWluZ0F1ZGlvIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNl
cnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uT2xkIGNvbnRleHQ6bmls
XTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmaWxlLXdp
dGgtdmlkZW8iXTsKQEAgLTIyNCw3ICsyMjQsNyBAQCAtICh2b2lkKV9zaG93V2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0
YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXJsU2NoZW1lVGFzawogewog
ICAgIE5TU3RyaW5nICpkYXRhID0gQCI8c2NyaXB0PndpbmRvdy5vcGVuKCdvdGhlci5odG1sJyk7
PC9zY3JpcHQ+IjsKLSAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt1cmxTY2hlbWVUYXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3Jl
bGVhc2UoKV07CiAgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZURhdGE6W2RhdGEgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbdXJsU2NoZW1lVGFzayBk
aWRGaW5pc2hdOwogfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgc2V0UmVzaXphYmxlOihCT09MKWlzUmVzaXphYmxlCiAKIC0gKG51bGxh
YmxlIFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmll
d1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
biBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0
aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKIHsK
LSAgICBjcmVhdGVkV2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSBhdXRvcmVsZWFzZV07CisgICAgY3JlYXRlZFdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbY3JlYXRlZFdlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpzZWxmXTsKICAgICByZXR1cm4gY3JlYXRlZFdlYlZpZXcuZ2V0KCk7CiB9CkBAIC01MTMs
MTEgKzUxMywxMSBAQCBURVNUKFdlYktpdCwgTm90aWZpY2F0aW9uUGVybWlzc2lvbikKIHsKICAg
ICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD5Ob3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Np
b24oZnVuY3Rpb24ocCl7YWxlcnQoJ3Blcm1pc3Npb24gJytwKX0pPC9zY3JpcHQ+IjsKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgW3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTpbW1tOb3RpZmljYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhBbGxvd05vdGlmaWNhdGlvbnM6WUVTXSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6YWRvcHROUyhbW05vdGlmaWNhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEFsbG93Tm90aWZpY2F0aW9uczpZRVNdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L2V4YW1wbGUub3JnIl1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAg
ICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6W1tbTm90aWZpY2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQWxsb3dOb3RpZmljYXRpb25zOk5PXSBhdXRvcmVs
ZWFzZV1dOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6YWRvcHROUyhbW05vdGlmaWNhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEFsbG93Tm90aWZpY2F0aW9uczpOT10pLmF1dG9yZWxl
YXNlKCldOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKIH0KQEAgLTU3Niw3ICs1NzYsNyBAQCBAZW5kCiAKIFRFU1Qo
V2ViS2l0LCBUb29sYmFyVmlzaWJsZSkKIHsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOltbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5h
dXRvcmVsZWFzZSgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUb29sYmFyRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8c2Ny
aXB0PmFsZXJ0KCd2aXNpYmxlOicgKyB3aW5kb3cudG9vbGJhci52aXNpYmxlKTthbGVydCgndmlz
aWJsZTonICsgd2luZG93LnRvb2xiYXIudmlzaWJsZSk8L3NjcmlwdD4iXTsKQEAgLTYwNCw3ICs2
MDQsNyBAQCBURVNUKFdlYktpdCwgTW91c2VNb3ZlT3ZlckVsZW1lbnQpCiB7CiAgICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkZyYW1lSGFuZGxl
U2VyaWFsaXphdGlvbiJdOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6W1tb
TW91c2VNb3ZlT3ZlckVsZW1lbnREZWxlZ2F0ZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmFkb3B0TlMoW1tNb3VzZU1vdmVPdmVyRWxlbWVu
dERlbGVnYXRlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGEgaHJlZj0naHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgnIHRpdGxlPSdsaW5rIHRpdGxlJz5saW5rIGxhYmVsPC9hPiJdOwogICAgIFt3ZWJWaWV3IG1v
dXNlTW92ZVRvUG9pbnQ6TlNNYWtlUG9pbnQoMjAsIDYwMCAtIDIwKSB3aXRoRmxhZ3M6TlNFdmVu
dE1vZGlmaWVyRmxhZ1NoaWZ0XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA4NDNjMTEwMzAzOTU5MzZlNDhiODEy
ZTkwN2RjNTNmNDkxMjAyYmJhLi5iYjAyNDMxYjkyZWE5MWRmYjI3OTAzNzQyYmViZTQwNTQ2YmMz
YTM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJN
dWx0aXBsZUhhbmRsZXJSZW1vdmFsCiAKICAgICBSZXRhaW5QdHI8U2NyaXB0TWVzc2FnZUhhbmRs
ZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkNv
cHkgPSBhZG9wdE5TKFtjb25maWd1cmF0aW9uIGNvcHldKTsKLSAgICBbY29uZmlndXJhdGlvbkNv
cHkgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyOltbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0aW9uQ29weSBzZXRVc2Vy
Q29udGVudENvbnRyb2xsZXI6YWRvcHROUyhbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFsbG9j
XSBpbml0XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW1tjb25maWd1cmF0aW9uQ29weSB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFt
ZTpAImhhbmRsZXJUb1JlbW92ZSJdOwogICAgIFtbY29uZmlndXJhdGlvbkNvcHkgdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6
QCJoYW5kbGVyVG9Qb3N0Il07CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uQ29weS5nZXQoKV0pOwpAQCAtMjU2
LDcgKzI1Niw3IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VI
YW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6W1tbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0
b3JlbGVhc2UoKV07CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gd2ViVmll
d0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3QoY29uZmln
dXJhdGlvbi5nZXQoKSk7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzIgPSB3ZWJW
aWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsVGVzdChjb25m
aWd1cmF0aW9uLmdldCgpKTsKQEAgLTM5MCw3ICszOTAsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBBZGRVc2VyU3R5bGVTaGVldEJlZm9yZUNyZWF0aW5nVmlldykKIFRFU1QoV0tV
c2VyQ29udGVudENvbnRyb2xsZXIsIE5vbkNhbm9uaWNhbGl6ZWRVUkwpCiB7CiAgICAgUmV0YWlu
UHRyPFdLQ29udGVudFdvcmxkPiB3b3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1l
OkAiVGVzdFdvcmxkIl07Ci0gICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNo
ZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpz
dHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzpuaWwgZm9yTWFpbkZyYW1lT25seTpOTyBpbmNs
dWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtd
IGJhc2VVUkw6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL0NhbWVsQ2Fz
ZS8iXSBhdXRvcmVsZWFzZV0gbGV2ZWw6X1dLVXNlclN0eWxlVXNlckxldmVsIGNvbnRlbnRXb3Js
ZDp3b3JsZC5nZXQoKV0pOworICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVT
aGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6
c3R5bGVTaGVldFNvdXJjZSBmb3JXS1dlYlZpZXc6bmlsIGZvck1haW5GcmFtZU9ubHk6Tk8gaW5j
bHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtdIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBb
XSBiYXNlVVJMOmFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJodHRwOi8v
Q2FtZWxDYXNlLyJdKS5nZXQoKSBsZXZlbDpfV0tVc2VyU3R5bGVVc2VyTGV2ZWwgY29udGVudFdv
cmxkOndvcmxkLmdldCgpXSk7CiB9CiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFk
ZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVhdGluZ1ZpZXcpCkBAIC04OTIsNjUgKzg5Miw2NSBAQCBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkp
CiAKIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHROb3RpZmljYXRpb24p
CiB7Ci0gICAgV0tVc2VyU2NyaXB0ICp3YWl0c0Zvck5vdGlmaWNhdGlvbiA9IFtbW1dLVXNlclNj
cmlwdCBhbGxvY10gX2luaXRXaXRoU291cmNlOkAiYWxlcnQoJ3dhaXRlZCBmb3Igbm90aWZpY2F0
aW9uJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRT
dGFydCBmb3JNYWluRnJhbWVPbmx5OllFUyBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10g
ZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtdIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQg
ZGVmYXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZRVNdIGF1
dG9yZWxlYXNlXTsKLSAgICBXS1VzZXJTY3JpcHQgKmRvY3VtZW50RW5kID0gW1tbV0tVc2VyU2Ny
aXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAImFsZXJ0KCdkb2N1bWVudCBwYXJzaW5nIGVuZGVk
JykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQg
Zm9yTWFpbkZyYW1lT25seTpZRVNdIGF1dG9yZWxlYXNlXTsKLQotICAgIFRlc3RXS1dlYlZpZXcg
KndlYlZpZXcxID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIEVYUEVD
VF9UUlVFKHdlYlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsK
LSAgICBbd2ViVmlldzEuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNl
clNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07Ci0gICAgW3dlYlZpZXcxLmNvbmZpZ3VyYXRp
b24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOwotICAg
IFRlc3RVSURlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07Ci0gICAgd2ViVmlldzEuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2Fp
dHNGb3JOb3RpZmljYXRpb24gPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdp
dGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBub3RpZmljYXRpb24nKSIgaW5qZWN0aW9uVGlt
ZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9u
bHk6WUVTIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBleGNsdWRlTWF0Y2hQYXR0ZXJu
U3RyaW5nczpAW10gYXNzb2NpYXRlZFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8v
c2NyaXB0Il0gY29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRd
IGRlZmVyUnVubmluZ1VudGlsTm90aWZpY2F0aW9uOllFU10pOworICAgIGF1dG8gZG9jdW1lbnRF
bmQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAImFsZXJ0
KCdkb2N1bWVudCBwYXJzaW5nIGVuZGVkJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKworICAgIGF1
dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3MSBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOwor
ICAgIFtbd2ViVmlldzEgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVz
ZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb24uZ2V0KCldOworICAgIFtbd2ViVmlldzEgY29u
ZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRF
bmQuZ2V0KCldOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBu
ZXddKTsKKyAgICBbd2ViVmlldzEgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAg
W3dlYlZpZXcxIGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgRVhQRUNUX1dLX1NU
UkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwot
ICAgIEVYUEVDVF9UUlVFKHdlYlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZp
Y2F0aW9uKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2NyaXB0
c05lZWROb3RpZmljYXRpb25dKTsKICAgICBbd2ViVmlldzEgX25vdGlmeVVzZXJTY3JpcHRzXTsK
LSAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldzEuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3Rp
ZmljYXRpb24pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2Ny
aXB0c05lZWROb3RpZmljYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdh
aXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogCiAgICAgW3dlYlZpZXcx
IF9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlXTsKICAgICBbd2ViVmlldzEgcmVs
b2FkXTsKIAogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRv
Y3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3MS5fZGVmZXJy
YWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgW3dlYlZp
ZXcxIF9ub3RpZnlVc2VyU2NyaXB0c107Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcxLl9kZWZl
cnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dl
YlZpZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmlj
YXRpb24iKTsKIAogICAgIFt3ZWJWaWV3MSByZWxvYWRdOwogCi0gICAgRVhQRUNUX0ZBTFNFKHdl
YlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9u
XSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVk
IGZvciBub3RpZmljYXRpb24iKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRG
b3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7CiAKLSAgICBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIEVYUEVDVF9UUlVFKGNvbmZpZ3VyYXRpb24uX2RlZmVycmFibGVV
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbik7Ci0gICAgY29uZmlndXJhdGlv
bi5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gTk87
Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzIgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3Mi5fZGVm
ZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7Ci0gICAgW3dlYlZpZXcyLmNvbmZp
Z3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3Rp
ZmljYXRpb25dOwotICAgIFt3ZWJWaWV3Mi5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJv
bGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKLSAgICB3ZWJWaWV3Mi5VSURlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBFWFBFQ1RfVFJVRShbY29uZmlndXJhdGlvbiBfZGVm
ZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uXSk7CisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uID0gTk87CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmll
dzIgX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb25dKTsKKyAgICBbW3dlYlZp
ZXcyIGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0Ondh
aXRzRm9yTm90aWZpY2F0aW9uLmdldCgpXTsKKyAgICBbW3dlYlZpZXcyIGNvbmZpZ3VyYXRpb25d
LnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kLmdldCgpXTsK
KyAgICBbd2ViVmlldzIgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZp
ZXcyIGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtk
ZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5n
IGVuZGVkIik7CiAKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MyA9IFtbVGVzdFdLV2ViVmll
dyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3My5fZGVmZXJyYWJs
ZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7Ci0gICAgW3dlYlZpZXczLmNvbmZpZ3VyYXRp
b24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRp
b25dOwotICAgIFt3ZWJWaWV3My5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBh
ZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKLSAgICB3ZWJWaWV3My5VSURlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgYXV0byB3ZWJWaWV3MyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7
CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXczIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90
aWZpY2F0aW9uXSk7CisgICAgW1t3ZWJWaWV3MyBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENv
bnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbi5nZXQoKV07CisgICAg
W1t3ZWJWaWV3MyBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDpkb2N1bWVudEVuZC5nZXQoKV07CisgICAgW3dlYlZpZXczIHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3MyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJd
OwogICAgIFt3ZWJWaWV3MyBfbm90aWZ5VXNlclNjcmlwdHNdOwotICAgIEVYUEVDVF9GQUxTRSh3
ZWJWaWV3My5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgRVhQ
RUNUX0ZBTFNFKFt3ZWJWaWV3MyBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlv
bl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRl
ZCBmb3Igbm90aWZpY2F0aW9uIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0
Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwogCi0gICAgVGVzdFdLV2ViVmll
dyAqd2ViVmlldzQgPSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgRVhQ
RUNUX1RSVUUod2ViVmlldzQuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24p
OwotICAgIFt3ZWJWaWV3NC5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRV
c2VyU2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uXTsKLSAgICBbd2ViVmlldzQuY29uZmlndXJh
dGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDpkb2N1bWVudEVuZF07Ci0g
ICAgd2ViVmlldzQuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2ViVmlldzQgPSBh
ZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3NCBf
ZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOworICAgIFtbd2ViVmlldzQg
Y29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNG
b3JOb3RpZmljYXRpb24uZ2V0KCldOworICAgIFtbd2ViVmlldzQgY29uZmlndXJhdGlvbl0udXNl
ckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmQuZ2V0KCldOworICAg
IFt3ZWJWaWV3NCBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldzQg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUtaWZyYW1lIl07CiAgICAgW3dlYlZpZXc0IF9ub3Rp
ZnlVc2VyU2NyaXB0c107CiAKQEAgLTk4Niw3ICs5ODYsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50
Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xs
ZXIgZAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChbbWVzc2Fn
ZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAIkludmFsaWQgcmVwbHkiXSkgewotICAgICAgICAgICAg
cmVwbHlIYW5kbGVyKFtbW05TRGF0YSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdLCBuaWwpOwor
ICAgICAgICAgICAgcmVwbHlIYW5kbGVyKGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRdKS5n
ZXQoKSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRX
b3JsZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRl
bnRXb3JsZC5tbQppbmRleCAzODRlMzEyNDI2ZGVhNzMxM2RjMWM0MDFkOTI5ZWViYjNjODY5MDdh
Li43OTU4MjY1NjEzMWM3MWIwYWIxODY1ZmEzY2EyYzVhOTRjZDU2YTY0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdv
cmxkLm1tCkBAIC0xNzIsNyArMTcyLDcgQEAgVEVTVChVc2VyQ29udGVudFdvcmxkLCBJc29sYXRl
ZFdvcmxkUGx1Z0luKQogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHRhc2sucmVxdWVzdC5V
UkwucGF0aCwgIi9pZnJhbWVzcmMiKTsKICAgICAgICAgICAgIGJvZHkgPSBAImlmcmFtZSBjb250
ZW50IjsKICAgICAgICAgfQotICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmJvZHkubGVuZ3RoIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpib2R5Lmxl
bmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W2JvZHkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsK
ICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5k
ZXggM2IzZjZkZWQxYTg0ODlhYWFmOWRiMDVjMTQ3MzYzNjEzOGJkM2EwMS4uNjY2YzdlZGE1Mzcx
MDEwZjIyYjUyYTc3MmUwMWUzOWUwOWUwZjA4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC01
NjIsOSArNTYyLDkgQEAgdm9pZCBwbGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhJbWFnZSgpCiAgICAg
YXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0XSk7CiAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFs
bG9jXSBpbml0V2l0aERhdGE6dGVzdEltYWdlRGF0YSgpIG9mVHlwZTooX19icmlkZ2UgTlNTdHJp
bmcgKilrVVRUeXBlUE5HXSk7CiAKLSAgICBbcmljaFRleHQgYXBwZW5kQXR0cmlidXRlZFN0cmlu
ZzpbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiTG9yZW0gaXBz
dW0gIl0gYXV0b3JlbGVhc2VdXTsKKyAgICBbcmljaFRleHQgYXBwZW5kQXR0cmlidXRlZFN0cmlu
ZzphZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIkxv
cmVtIGlwc3VtICJdKS5nZXQoKV07CiAgICAgW3JpY2hUZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6W05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6aW1h
Z2UuZ2V0KCldXTsKLSAgICBbcmljaFRleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIGRvbG9yIHNpdCBhbWV0LiJd
IGF1dG9yZWxlYXNlXV07CisgICAgW3JpY2hUZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6YWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIgZG9sb3Ig
c2l0IGFtZXQuIl0pLmdldCgpXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKQEAgLTYw
MSw3ICs2MDEsNyBAQCB0eXBlZGVmIFVJSW1hZ2UgUGxhdGZvcm1JbWFnZTsKIFBsYXRmb3JtSW1h
Z2UgKnBsYXRmb3JtSW1hZ2VXaXRoRGF0YShOU0RhdGEgKmRhdGEpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmRhdGFdKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICByZXR1cm4gW1VJSW1hZ2UgaW1h
Z2VXaXRoRGF0YTpkYXRhXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMGY4MDdi
OGZhMDI1ZDIxNmMzZDUyZTliMWJkMjc5OTkwYjQ0MTMyOC4uODdhODUwNDMyZDRiZmQ1ZjBlNTg1
NmY0NDA3ZmQwMWVhMjdiZWQ0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC02MTEsNyArNjEx
LDcgQEAgQGVuZAogCiBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVNdWx0aXBsZVZpZXdz
KQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcxID0gW1tUZXN0V0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3
IG5ld10pOwogICAgIFt3ZWJWaWV3MSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFy
dCBuZXR3b3JrIHByb2Nlc3MiXTsKIAogICAgIE5TSFRUUENvb2tpZSAqc2Vzc2lvbkNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKQEAgLTYyMiw3ICs2MjIsNyBA
QCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVNdWx0aXBsZVZpZXdzKQogICAgIH1dOwog
CiAgICAgX19ibG9jayBib29sIHNldENvb2tpZURvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldzEu
Y29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZSBzZXRDb29raWU6
c2Vzc2lvbkNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgIFtbd2ViVmlldzEgY29uZmln
dXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZS5odHRwQ29va2llU3RvcmUgc2V0Q29va2llOnNlc3Np
b25Db29raWUgY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAgICAgc2V0Q29va2llRG9uZSA9IHRy
dWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXRDb29raWVEb25l
KTsKQEAgLTYzMyw3ICs2MzMsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVNdWx0
aXBsZVZpZXdzKQogICAgIFt3ZWJWaWV3MSBsb2FkSFRNTFN0cmluZzpbZGVsZWdhdGUgYWxlcnRD
b29raWVIVE1MXSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovLzEyNy4wLjAu
MSJdXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JNZXNzYWdlXSwgIlNl
c3Npb25Db29raWVOYW1lPUNvb2tpZVZhbHVlIik7CiAKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJW
aWV3MiA9IFtbVGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcyID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldzIgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcyIGxvYWRIVE1MU3RyaW5nOltk
ZWxlZ2F0ZSBhbGVydENvb2tpZUhUTUxdIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vMTI3LjAuMC4xIl1dOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZv
ck1lc3NhZ2VdLCAiU2Vzc2lvbkNvb2tpZU5hbWU9Q29va2llVmFsdWUiKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQppbmRleCBhMzZkYjIxODkzYTExZWNlNWI0MTYwZGIzNGZjMzcwNGFlMWI1NjQ3
Li41YTA0NjQyZWZhNDIyNGMzYjIxN2YwYTIxMjQ4MWUwZjRlMDA3Y2Q4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckRlbGVnYXRlLm1tCkBAIC0xMjUsOSArMTI1LDkgQEAgLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JMb2MK
ICAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmdldCgp
XTsKIAogICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVSTFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdOwotICAgIFJldGFpblB0cjxfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
PiBpbnNwZWN0b3JDb25maWd1cmF0aW9uID0gW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XTsKKyAgICBhdXRvIGluc3BlY3RvckNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtpbnNwZWN0b3JD
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2hhcmVkVVJMU2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07Ci0gICAgcmV0dXJuIFtpbnNwZWN0b3JDb25m
aWd1cmF0aW9uIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQREZWaWV3
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0K
aW5kZXggNzBmY2Q3YWViMDgxMjU3ZTQ2YWFiOTJhZDE4ZmUyMTk2M2ZhYTBhZi4uZTFiZTQyMGY5
MzZjYjRjOTA4YjRhOWUzYjc2MDBhYWE4YTQyNmY1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0KQEAgLTE2MSwxOCArMTYxLDE4
IEBAIHN0YXRpYyB2b2lkIGNoZWNrRnJhbWUoTlNSZWN0IGZyYW1lLCBDR0Zsb2F0IHgsIENHRmxv
YXQgeSwgQ0dGbG9hdCB3aWR0aCwgQ0dGbG9hCiAKIFRFU1QoUERGSFVELCBNYWluUmVzb3VyY2VQ
REYpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSkuYXV0b3JlbGVhc2UoKV0pOwogICAgIFt3
ZWJWaWV3IGxvYWREYXRhOnBkZkRhdGEoKSBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgY2hh
cmFjdGVyRW5jb2RpbmdOYW1lOkAiIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93d3cuYXBwbGUuY29tL3Rlc3RQYXRoIl1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9w
ZGZIVURzLmNvdW50LCAwdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3Vu
dCwgMHUpOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
LSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJh
bWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUsIDAsIDAsIDgwMCwgNjAwKTsKKyAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFt
ZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAwLCAwLCA4MDAsIDYwMCk7CiAg
ICAgCi0gICAgVGVzdFVJRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tUZXN0VUlEZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgX19ibG9jayBib29sIHNhdmVS
ZXF1ZXN0UmVjZWl2ZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5zYXZlRGF0YVRvRmlsZSA9IF4o
V0tXZWJWaWV3ICp3ZWJWaWV3RnJvbURlbGVnYXRlLCBOU0RhdGEgKmRhdGEsIE5TU3RyaW5nICpz
dWdnZXN0ZWRGaWxlbmFtZSwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VSTCAqb3JpZ2luYXRpbmdV
UkwpIHsKLSAgICAgICAgRVhQRUNUX0VRKHdlYlZpZXcsIHdlYlZpZXdGcm9tRGVsZWdhdGUpOwor
ICAgIGRlbGVnYXRlLmdldCgpLnNhdmVEYXRhVG9GaWxlID0gXihXS1dlYlZpZXcgKndlYlZpZXdG
cm9tRGVsZWdhdGUsIE5TRGF0YSAqZGF0YSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCBO
U1N0cmluZyAqbWltZVR5cGUsIE5TVVJMICpvcmlnaW5hdGluZ1VSTCkgeworICAgICAgICBFWFBF
Q1RfRVEod2ViVmlldy5nZXQoKSwgd2ViVmlld0Zyb21EZWxlZ2F0ZSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKFtkYXRhIGlzRXF1YWxUb0RhdGE6cGRmRGF0YSgpXSk7CiAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInRlc3RQYXRoLnBkZiIpOwogICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEobWltZVR5cGUsICJhcHBsaWNhdGlvbi9wZGYiKTsKQEAgLTE4MSw5ICsxODEs
OSBAQCBURVNUKFBERkhVRCwgTWFpblJlc291cmNlUERGKQogICAgIFtbd2ViVmlldyBfcGRmSFVE
c10uYW55T2JqZWN0IHBlcmZvcm1TZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmluZyhAIl9wZXJm
b3JtQWN0aW9uRm9yQ29udHJvbDoiKSB3aXRoT2JqZWN0OkAiYXJyb3cuZG93bi5jaXJjbGUiXTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNhdmVSZXF1ZXN0UmVjZWl2ZWQpOwogCi0g
ICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKKyAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CiAgICAgW3dlYlZpZXcgX2tpbGxXZWJDb250
ZW50UHJvY2Vzc107Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgd2hp
bGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c3BpblJ1bkxvb3AoKTsKIH0KIApAQCAtMTkxLDE2MyArMTkxLDE2MyBAQCBURVNUKFBERkhV
RCwgTWFpblJlc291cmNlUERGKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMAogVEVTVChQREZIVUQsIE1vdmVJRnJhbWUpCiB7Ci0g
ICAgVGVzdFVSTFNjaGVtZUhhbmRsZXIgKmhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVy
IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxl
ciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIGhhbmRs
ZXIuZ2V0KCkuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdL
VVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKLSAgICAgICAgICAgIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGF1dG8g
cmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGh0bWwg
PSAiPGJyLz48aWZyYW1lIHNyYz0ndGVzdC5wZGYnIGlkPSdwZGZmcmFtZSc+PC9pZnJhbWU+IjsK
LSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3Ro
OnN0cmxlbihodG1sKV1dOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLnBh
dGgsICIvdGVzdC5wZGYiKTsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IHBkZkRhdGEoKTsK
LSAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9u
L3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6
bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
cmVzcG9uc2VdOworICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBw
bGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwotICAgIFRlc3RXS1dlYlZpZXcg
KndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAidGVzdDovLy9tYWluLmh0bWwiXV1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3
Ll9wZGZIVURzLmNvdW50LCAwdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5j
b3VudCwgMHUpOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKIAogICAgIC8vIElmIHRoZSBUZXN0V0tXZWJWaWV3IGlzIG5vdCB2aXNpYmxlLCB2aXNpYmls
aXR5RGlkQ2hhbmdlIHdpbGwgYmUgY2FsbGVkIHdpdGggZmFsc2UsIGFuZCB0aGVyZSB3aWxsIGJl
IG5vIEhVRC4KLSAgICBpZiAoIXdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgaWYgKCFbd2Vi
VmlldyBfcGRmSFVEc10uY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVYUEVDVF9FUSh3
ZWJWaWV3Ll9wZGZIVURzLmNvdW50LCAxdSk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJWaWV3Ll9wZGZI
VURzLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCAzMDAsIDE1MCk7CisgICAgRVhQRUNUX0VRKFt3
ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3Bk
ZkhVRHNdLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCAzMDAsIDE1MCk7CiAKICAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJwZGZmcmFtZS53aWR0aD00MDAiIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLnNp
emUud2lkdGggIT0gNDAwKQorICAgIHdoaWxlIChbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0
LmZyYW1lLnNpemUud2lkdGggIT0gNDAwKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3Qu
ZnJhbWUsIDEwLCAyOCwgNDAwLCAxNTApOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhV
RHNdLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCA0MDAsIDE1MCk7CiAKICAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZnJhbWVSZWZlcmVuY2UgPSBwZGZmcmFtZTsgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChwZGZmcmFtZSkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci0g
ICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgd2hpbGUgKFt3ZWJWaWV3IF9w
ZGZIVURzXS5jb3VudCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3Ao
KTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGZyYW1lUmVmZXJlbmNlKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICB3aGls
ZSAoIXdlYlZpZXcuX3BkZkhVRHMuY291bnQpCisgICAgd2hpbGUgKCFbd2ViVmlldyBfcGRmSFVE
c10uY291bnQpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0g
ICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVja0ZyYW1l
KHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAwLCAwLCAwLCAwKTsKLSAgICB3aGls
ZSAod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0MDApCisg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJh
bWUoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9iamVjdC5mcmFtZSwgMCwgMCwgMCwgMCk7CisgICAg
d2hpbGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0
MDApCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgRVhQ
RUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVja0ZyYW1lKHdlYlZp
ZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDQwMCwgMTUwKTsKKyAgICBFWFBF
Q1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShbd2Vi
VmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDQwMCwgMTUwKTsKIAotICAg
IHdlYlZpZXcucGFnZVpvb20gPSAxLjQ7Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhVRHMuYW55
T2JqZWN0LmZyYW1lLnNpemUud2lkdGggIT0gNTYwKQorICAgIFt3ZWJWaWV3IHNldFBhZ2Vab29t
OjEuNF07CisgICAgd2hpbGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUuc2l6
ZS53aWR0aCAhPSA1NjApCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29w
KCk7Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVj
a0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAxNCwgNDAsIDU2MCwgMjEw
KTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hl
Y2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxNCwgNDAsIDU2MCwg
MjEwKTsKIH0KICNlbmRpZgogCiBURVNUKFBERkhVRCwgTmVzdGVkSUZyYW1lcykKIHsKLSAgICBU
ZXN0VVJMU2NoZW1lSGFuZGxlciAqaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgaGFuZGxlci5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0g
XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7Ci0gICAgICAgIE5TVVJM
UmVzcG9uc2UgKmh0bWxSZXNwb25zZSA9IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBo
YW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CisgICAgaGFuZGxl
ci5nZXQoKS5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tV
UkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gaHRtbFJlc3BvbnNlID0gYWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAgICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8
aWZyYW1lIHNyYz0nZnJhbWUuaHRtbCcgaWQ9J3BhcmVudGZyYW1lJz48L2lmcmFtZT4iOwotICAg
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07CisgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsKICAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1sIGxl
bmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAg
ICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIv
ZnJhbWUuaHRtbCJdKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBodG1sID0gIjxpZnJhbWUg
c3JjPSd0ZXN0LnBkZic+PC9pZnJhbWU+IjsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpodG1sUmVzcG9uc2VdOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOmh0bWxSZXNwb25zZS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVuKGh0bWwpXV07CiAgICAg
ICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHRhc2sucmVxdWVzdC5VUkwucGF0aCwgIi90ZXN0LnBkZiIpOwogICAg
ICAgICAgICAgTlNEYXRhICpkYXRhID0gcGRmRGF0YSgpOwotICAgICAgICAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgICAgICAg
ICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGV4cGVjdGVk
Q29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKICAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmlu
aXNoXTsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2Vd
OwotICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxT
Y2hlbWU6QCJ0ZXN0Il07Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAidGVzdCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL21h
aW4uaHRtbCJdXV07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDB1KTsK
KyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAwdSk7CiAgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotICAgIEVYUEVDVF9FUSh3ZWJW
aWV3Ll9wZGZIVURzLmNvdW50LCAxdSk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJWaWV3Ll9wZGZIVURz
LmFueU9iamVjdC5mcmFtZSwgMjAsIDIwLCAzMDAsIDE1MCk7CisgICAgRVhQRUNUX0VRKFt3ZWJW
aWV3IF9wZGZIVURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhV
RHNdLmFueU9iamVjdC5mcmFtZSwgMjAsIDIwLCAzMDAsIDE1MCk7CiAgICAgCiAgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwYXJlbnRm
cmFtZSkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci0gICAgd2hpbGUgKHdlYlZpZXcuX3BkZkhV
RHMuY291bnQpCisgICAgd2hpbGUgKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKIH0KIAogVEVTVChQREZIVUQsIElG
cmFtZTNEVHJhbnNmb3JtKQogewotICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0g
W1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBoYW5kbGVyLnN0
YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRh
c2s+IHRhc2spIHsKLSAgICAgICAgTlNVUkxSZXNwb25zZSAqaHRtbFJlc3BvbnNlID0gW1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1l
SGFuZGxlciBuZXddKTsKKyAgICBoYW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAg
YXV0byBodG1sUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgaWYgKFt0YXNrLnJl
cXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBodG1sID0gIjxpZnJhbWUgc3JjPSd0ZXN0LnBkZicgaGVpZ2h0PTUw
MCB3aWR0aD01MDAgc3R5bGU9J3RyYW5zZm9ybTpyb3RhdGVZKDIzNWRlZyk7Jz48L2lmcmFtZT4i
OwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07Cisg
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsK
ICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpo
dG1sIGxlbmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1
ZXN0LlVSTC5wYXRoLCAiL3Rlc3QucGRmIik7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBw
ZGZEYXRhKCk7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJh
cHBsaWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3Ro
IHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfTsK
IAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAgICBUZXN0
V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vbWFpbi5odG1sIl1dXTsKLSAgICBFWFBFQ1Rf
RVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBf
cGRmSFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsK
LSAgICBjaGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCA0MDMsIDEw
LCA1MDAsIDUwMCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMXUp
OworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9iamVjdC5mcmFtZSwgNDAz
LCAxMCwgNTAwLCA1MDApOwogfQogCiBURVNUKFBERkhVRCwgTXVsdGlwbGVJRnJhbWVzKQogewot
ICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxl
ciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBoYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKLSAgICAgICAg
TlNVUkxSZXNwb25zZSAqaHRtbFJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKKyAgICBo
YW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBp
ZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0byBodG1sUmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBodG1s
ID0gIjxpZnJhbWUgc3JjPSd0ZXN0LnBkZicgaGVpZ2h0PTEwMCB3aWR0aD0xNTA+PC9pZnJhbWU+
PGlmcmFtZSBzcmM9J3Rlc3QucGRmJyBoZWlnaHQ9MTIzIHdpZHRoPTEzND48L2lmcmFtZT4iOwot
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07CisgICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1s
IGxlbmd0aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1ZXN0
LlVSTC5wYXRoLCAiL3Rlc3QucGRmIik7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBwZGZE
YXRhKCk7Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBs
aWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0
YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAgICBUZXN0V0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vbWFpbi5odG1sIl1dXTsKLSAgICBFWFBFQ1RfRVEo
d2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRm
SFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDJ1KTsKKyAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAydSk7CiAgICAgYm9vbCBoYWRM
ZWZ0RnJhbWUgPSBmYWxzZTsKICAgICBib29sIGhhZFJpZ2h0RnJhbWUgPSBmYWxzZTsKLSAgICBm
b3IgKE5TVmlldyAqaHVkIGluIHdlYlZpZXcuX3BkZkhVRHMpIHsKKyAgICBmb3IgKE5TVmlldyAq
aHVkIGluIFt3ZWJWaWV3IF9wZGZIVURzXSkgewogICAgICAgICBpZiAoaHVkLmZyYW1lLm9yaWdp
bi54ID09IDEwKSB7CiAgICAgICAgICAgICBjaGVja0ZyYW1lKGh1ZC5mcmFtZSwgMTAsIDMzLCAx
NTAsIDEwMCk7CiAgICAgICAgICAgICBoYWRMZWZ0RnJhbWUgPSB0cnVlOwpAQCAtMzY0LDEyICsz
NjQsMTIgQEAgVEVTVChQREZIVUQsIExvYWRQREZUeXBlV2l0aFBsdWdpbnNCbG9ja2VkKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5OkAib2JqZWN0LXNyYyAnbm9uZSciXTsKLSAgICBUZXN0V0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkRGF0YTpwZGZEYXRhKCkg
TUlNRVR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAIiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS90ZXN0UGF0
aCJdXTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVY
UEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3Bk
ZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2Jq
ZWN0LmZyYW1lLCAwLCAwLCA4MDAsIDYwMCk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZI
VURzXS5jb3VudCwgMXUpOworICAgIGNoZWNrRnJhbWUoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9i
amVjdC5mcmFtZSwgMCwgMCwgODAwLCA2MDApOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCmluZGV4IGQ3NWU1YjI0MDYwMmZlOGRkMWEwMmI1Y2NkOGE5NDIwMzg3ZWQwZDku
LjZiMGZhNTEzZWVmZWVhNTE3YjczNWMyMGNkM2U1ZjM1NTMxN2I2MzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXItMS5tbQpAQCAtMzgwLDEzICszODAsMTMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4p
dGEKICAgICAgICAgZm9yIChhdXRvIGNvbW1hbmQgOiBjb21tYW5kcykgewogICAgICAgICAgICAg
c3dpdGNoIChjb21tYW5kKSB7CiAgICAgICAgICAgICBjYXNlIENvbW1hbmQ6OlJlZGlyZWN0Ogot
ICAgICAgICAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVy
Zm9ybVJlZGlyZWN0aW9uOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XSBuZXdSZXF1ZXN0OltbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsK
KyAgICAgICAgICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2RpZFBl
cmZvcm1SZWRpcmVjdGlvbjphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0pLmdl
dCgpIG5ld1JlcXVlc3Q6YWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdF0pLmdldCgp
XTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ29tbWFuZDo6UmVz
cG9uc2U6Ci0gICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
XSkuZ2V0KCldOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDb21t
YW5kOjpEYXRhOgotICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltbW05TRGF0
YSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlRGF0YTphZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0XSkuZ2V0KCldOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDb21tYW5kOjpGaW5pc2g6CiAgICAg
ICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKQEAgLTU3NCwxMiArNTc0LDEyIEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxX
S1VSTFNjaGVtZVRhc2s+KXRhCiB7CiAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAInN5bmNlcnJvcjovLy9tYWluLmh0bWwiXSkgewogICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogYnl0ZXMgPSAiPHNjcmlwdD52YXIgeGhyPW5ldyBYTUxI
dHRwUmVxdWVzdCgpO3hoci5vcGVuKCdHRVQnLCdzdWJyZXNvdXJjZScsZmFsc2UpO3RyeXt4aHIu
c2VuZChudWxsKTthbGVydCgnbm8gZXJyb3InKX1jYXRjaChlKXthbGVydChlKX08L3NjcmlwdD4i
OwotICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihieXRlcykgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1
dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihieXRlcykgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltO
U0RhdGEgZGF0YVdpdGhCeXRlczpieXRlcyBsZW5ndGg6c3RybGVuKGJ5dGVzKV1dOwogICAgICAg
ICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEVYUEVDVF9TVFJFUSh0
YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcsICJzeW5jZXJyb3I6Ly8v
c3VicmVzb3VyY2UiKTsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJl
Y2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0pLmF1dG9y
ZWxlYXNlKCldOwogICAgICAgICBbdGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpAIlRlc3RFcnJvckRvbWFpbiIgY29kZToxMjMgdXNlckluZm86bmlsXV07CiAg
ICAgfQogfQpAQCAtNzkxLDE4ICs3OTEsMTggQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBDT1JT
KQogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcg
KiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0
LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAgICAgICAg
TlNEYXRhICpkYXRhID0gW0AiPHNjcmlwdD5mZXRjaCgnY29yczovL2hvc3QyL2NvcnNyZXNvdXJj
ZScpLnRoZW4oZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNzdWNjZXNzJyl9KS5jYXRjaChmdW5jdGlv
bigpe2ZldGNoKCcvY29yc2ZhaWx1cmUnKX0pPC9zY3JpcHQ+IiBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlk
UmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZp
bmlzaF07CiAgICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvY29yc3Jlc291cmNlIl0pIHsKICAgICAgICAgICAgIGlmIChpbmNsdWRlQ09S
U0hlYWRlckZpZWxkSW5SZXNwb25zZSkgewotICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTpbW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpuaWwgaGVhZGVyRmllbGRzOkB7
CisgICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBzdGF0dXND
b2RlOjIwMCBIVFRQVmVyc2lvbjpuaWwgaGVhZGVyRmllbGRzOkB7CiAgICAgICAgICAgICAgICAg
ICAgIEAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKICAgICAgICAgICAgICAg
ICAgICAgQCJDb250ZW50LUxlbmd0aCI6IEAiMiIsCiAgICAgICAgICAgICAgICAgICAgIEAiQ29u
dGVudC1UeXBlIjpAInRleHQvaHRtbCIKLSAgICAgICAgICAgICAgICB9XSBhdXRvcmVsZWFzZV1d
OworICAgICAgICAgICAgICAgIH1dKS5hdXRvcmVsZWFzZSgpXTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3Jl
bGVhc2VdXTsKKyAgICAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05h
bWU6bmlsXSkuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSEki
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL2NvcnNzdWNjZXNzIl0pIHsKQEAgLTg0Myw3ICs4NDMsNyBA
QCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTKQogCiAgICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAKLSAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAImNvcnMiXTsKIAogICAgIE5TU3RyaW5nICp0ZXN0SlMgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDoKQEAgLTg2MSw3ICs4NjEsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERp
c2FibGVDT1JTKQogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAgICAgICBAIjxzY3JpcHQ+JUA8L3Nj
cmlwdD4iLCB0ZXN0SlNdIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK
LSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1
dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVE
YXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNl
IGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jb3Jzc3VjY2Vz
cyJdKSB7CkBAIC04NzUsNyArODc1LDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxl
Q09SUykKICAgICB9XTsKICAgICAKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICB9CkBAIC04ODYsOCArODg2LDgg
QEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SUykKICAgICBjb3JzZmFpbHVyZSA9
IGZhbHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uX2NvcnNEaXNh
YmxpbmdQYXR0ZXJucyA9IEBbQCIqOi8vKi8qIl07Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBAW0AiKjovLyovKiJdOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgRVhQRUNUX1RSVUUoY29yc3N1Y2Nlc3Mp
OwpAQCAtOTI2LDEzICs5MjYsMTMgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09S
U0NyZWRlbnRpYWxzKQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hl
bWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImNvcnMiXTsKIAogICAgIFto
YW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxX
S1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEg
KmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PmZldGNoKCdodHRw
Oi8vMTI3LjAuMC4xOiVkL3N1YnJlc291cmNlJywge2NyZWRlbnRpYWxzOidpbmNsdWRlJ30pLnRo
ZW4oZnVuY3Rpb24oKXtmZXRjaCgnL2NvcnNzdWNjZXNzJyl9KS5jYXRjaChmdW5jdGlvbigpe2Zl
dGNoKCcvY29yc2ZhaWx1cmUnKX0pPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV0gZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVx
dWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRh
Lmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCld
OwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL2NvcnNzdWNjZXNzIl0pIHsKQEAgLTk0Niw3ICs5NDYsNyBA
QCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTQ3JlZGVudGlhbHMpCiAgICAgfV07
CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtOTU3LDkgKzk1Nyw5IEBAIFRFU1QoVVJMU2No
ZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNDcmVkZW50aWFscykKICAgICBjb3JzZmFpbHVyZSA9IGZh
bHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IE5POworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
X2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IE5POwogICAgIHsKLSAgICAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
KTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9t
YWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
ICAgIH0KQEAgLTk3OSwxNCArOTc5LDE0IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJs
ZUNPUlNTY3JpcHQpCiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1l
SGFuZGxlciBuZXddKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJdOwogCiAgICAgW2hhbmRsZXIgc2V0
U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0
JyBjcm9zc29yaWdpbj0nYW5vbnltb3VzJyBvbmVycm9yPSdmZXRjaChcImxvYWRGYWlsXCIpJyBz
cmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXSBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxl
YXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRh
dGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChb
dGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9sb2FkU3VjY2VzcyJdKSB7
CkBAIC0xMDAwLDcgKzEwMDAsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JT
U2NyaXB0KQogICAgIH1dOwogCiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtMTAxMSw5ICsxMDExLDkg
QEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU1NjcmlwdCkKICAgICBsb2FkRmFp
bCA9IGZhbHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uX2NvcnNE
aXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIqOi8vKi8qIl07CisgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8qLyoiXTsKICAgICB7Ci0gICAgICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFp
bi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAg
ICB9CkBAIC0xMDI5LDcgKzEwMjksNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVD
T1JTQ2FudmFzKQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhh
bmRsZXIgbmV3XSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpo
YW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImNvcnMiXTsKIAogICAgIFtoYW5kbGVyIHNldFN0
YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRh
c2s+IHRhc2spIHsKQEAgLTEwNjQsMTQgKzEwNjQsMTQgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVy
LCBEaXNhYmxlQ09SU0NhbnZhcykKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
CiAgICAgICAgIGlmIChyZXNwb25zZSkgewotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5V
UkwgTUlNRVR5cGU6bWltZVR5cGUgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0
aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTptaW1lVHlwZSBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAg
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6cmVzcG9uc2VdOwogICAgICAgICAgICAgW3Rh
c2sgZGlkRmluaXNoXTsKICAgICAgICAgfQogICAgIH1dOwogCiAgICAgewotICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRt
bCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpA
QCAtMTA4Miw5ICsxMDgyLDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU0Nh
bnZhcykKICAgICBjb3JzZmFpbHVyZSA9IGZhbHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAg
IGNvbmZpZ3VyYXRpb24uX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIqOi8vKi8qIl07Cisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8q
LyoiXTsKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKICAgICB9CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdvcmspCiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9w
dE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwog
CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3
ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtMTExNyw3ICsxMTE3LDcgQEAgVEVT
VChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc0Zyb21OZXR3b3JrKQogICAgICAgICAgICAgICAgICAg
ICAid3Mub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBmZXRjaCgnL2xvYWRGYWlsJykgfTsiCiAgICAg
ICAgICAgICAgICAgIn0pIgogICAgICAgICAgICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9y
dCgpLCBzZXJ2ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRt
bCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmls
XSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFk
b3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNl
aXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0g
ZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbG9hZFN1
Y2Nlc3MiXSkgewpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBM
b2Fkc0Zyb21OZXR3b3JrKQogICAgIH1dOwogICAgIAogICAgIHsKLSAgICAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1d
OwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTEx
NDMsOSArMTE0Myw5IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykK
ICAgICBsb2FkRmFpbCA9IGZhbHNlOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3Vy
YXRpb24uX2xvYWRzRnJvbU5ldHdvcmsgPSBOTzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9s
b2Fkc0Zyb21OZXR3b3JrID0gTk87CiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtMTE2MSw3ICsxMTYx
LDcgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc1N1YnJlc291cmNlcykKIAogICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwogCi0gICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJ0ZXN0Il07CiAKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5k
bGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CkBAIC0xMTc2
LDEzICsxMTc2LDEzIEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNTdWJyZXNvdXJjZXMp
CiAgICAgICAgICAgICBsb2FkZWRJRnJhbWUgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxl
bmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwog
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbcmVzcG9uc2UgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9
XTsKICAgICAKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZsb2FkZWRJbWFnZSk7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmbG9hZGVkSUZyYW1lKTsKQEAgLTExOTEsOSArMTE5MSw5IEBAIFRFU1QoVVJMU2NoZW1l
SGFuZGxlciwgTG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgbG9hZGVkSW1hZ2UgPSBmYWxzZTsKICAg
ICBsb2FkZWRJRnJhbWUgPSBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uX2xvYWRzU3VicmVz
b3VyY2VzID0gTk87CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbG9hZHNTdWJyZXNvdXJjZXMg
PSBOTzsKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgICAgICB3ZWJW
aWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAidGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CkBAIC0xMjM5LDcgKzEy
MzksNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgIH07CiAKICAgICBhdXRvIHJlc3Bv
bmQgPSBbXSAoaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBjb25zdCBjaGFyKiBieXRlcykgewot
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihieXRlcykgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9y
ZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihieXRlcykgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpieXRlcyBsZW5ndGg6c3RybGVuKGJ5dGVzKV1dOwogICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOwogICAgIH07CkBAIC0xMzc0LDIxICsxMzc0LDIxIEBAIFRFU1QoVVJM
U2NoZW1lSGFuZGxlciwgRnJhbWVzKQogCiBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIE9yaWdpbikK
IHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3
XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byBoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxl
ciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMo
W1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2No
ZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7
CiAgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZVN0cmluZyA9IEAiPHNjcmlwdD5hbGVydCgiCiAg
ICAgICAgICAgICAibmV3IFVSTCgncmVnaXN0ZXJlZDovL2hvc3Q6MTIzL3BhdGgnKS5vcmlnaW4g
KyAnLCAnICsgIgogICAgICAgICAgICAgIm5ldyBVUkwoJ25vdHJlZ2lzdGVyZWQ6Ly9ob3N0OjEy
My9wYXRoJykub3JpZ2luIgogICAgICAgICAiKTwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
cmVzcG9uc2VTdHJpbmcubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1d
OworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZVN0cmluZy5sZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNw
b25zZVN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAg
ICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH1dOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxTY2hlbWU6QCJyZWdpc3RlcmVkIl07Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicmVnaXN0ZXJl
ZCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInJlZ2lzdGVyZWQ6Ly8vIl1dXTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJyZWdpc3RlcmVkOi8vaG9zdDoxMjMs
IG51bGwiKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA2ZjI3NmExNTc0
Zjk5NmYzMmVkZmZlZWMyOThlNmYxODZjZWNlMTdmLi41YmY2ZGE5M2RiNjljNTliNjAyMWU4YWJm
OWVlNDRiMjdkNWJhZjdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0xMTMs
MTkgKzExMywxOSBAQCBURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbkhUVFBTVXBncmFkZSkKIAog
ICAgIGF1dG8gcnVuVGVzdCA9IFsmXSAoYm9vbCB1cGdyYWRlKSB7CiAgICAgICAgIGRvbmUgPSBm
YWxzZTsKLSAgICAgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9u
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHN0b3JlQ29uZmlndXJhdGlvbi5hbGxvd3NTZXJ2ZXJQ
cmVjb25uZWN0ID0gTk87Ci0gICAgICAgIHN0b3JlQ29uZmlndXJhdGlvbi5wcm94eUNvbmZpZ3Vy
YXRpb24gPSBAeworICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRD
b25maWd1cmF0aW9uXSk7CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0QWxsb3dzU2Vy
dmVyUHJlY29ubmVjdDpOT107CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJveHlD
b25maWd1cmF0aW9uOkB7CiAgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0
eUhUVFBTUHJveHlIb3N0OiBAIjEyNy4wLjAuMSIsCiAgICAgICAgICAgICAoTlNTdHJpbmcgKilr
Q0ZTdHJlYW1Qcm9wZXJ0eUhUVFBTUHJveHlQb3J0OiBAKHNlcnZlci5wb3J0KCkpLAogICAgICAg
ICAgICAgKE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlIb3N0OiBAIjEyNy4w
LjAuMSIsCiAgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBQcm94
eVBvcnQ6IEAoc2VydmVyLnBvcnQoKSksCi0gICAgICAgIH07Ci0gICAgICAgIGF1dG8gc3RvcmUg
PSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3Rv
cmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
Y29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gc3RvcmU7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24udXBncmFkZUtub3duSG9zdHNUb0hUVFBTID0gdXBncmFkZTsKLSAgICAgICAgYXV0byB3
ZWJWaWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgICAgIH1dOworICAg
ICAgICBhdXRvIHN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
KTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpzdG9yZS5nZXQo
KV07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFVwZ3JhZGVLbm93bkhvc3RzVG9IVFRQUzp1
cGdyYWRlXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgICAgICBhdXRvIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3d3dy5vcGVuZ2wub3JnLyJdXTsKICAg
ICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgICAgIFV0aWw6OnJ1bigm
ZG9uZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCmluZGV4IGM3MDVh
OTE1YWNhM2I1NDcwNmQ2MzcyMzNmNzJhMTVmNGIwOTY4MTEuLjU1YzUwMDZmZjg3YWE5MDEwYWFl
NTg1Yzc3Yzk3MmMzMzMxMTM3ZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2Ny
aXB0Lm1tCkBAIC0xOTcsOCArMTk3LDggQEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNj
cmlwdEluV29ybGRzKQogCiAgICAgLy8gQWRkIGEgc2NyaXB0TWVzc2FnZUhhbmRsZXIgaW4gYSBu
YW1lZCB3b3JsZC4KICAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IG5hbWVkV29ybGQgPSBb
V0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWVkV29ybGQiXTsKLSAgICBpZCBoYW5k
bGVyID0gW1tbRHVtbXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwot
ICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIF9h
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyIG5hbWU6QCJ0ZXN0SGFuZGxlck5hbWUiIHVz
ZXJDb250ZW50V29ybGQ6bmFtZWRXb3JsZC5nZXQoKS5fdXNlckNvbnRlbnRXb3JsZF07CisgICAg
YXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0R1bW15TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxl
ciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRs
ZXJOYW1lIiB1c2VyQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkuX3VzZXJDb250ZW50V29y
bGRdOwogCiAgICAgLy8gU2V0IGEgdmFyaWFibGUgdmFsdWUgaW4gdGhhdCBuYW1lZCB3b3JsZC4K
ICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgYmFyID0gJ2JheiciIGluRnJh
bWU6bmlsIGluQ29udGVudFdvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CkBAIC00NDIsOSArNDQyLDkgQEAgVEVTVChX
ZWJLaXQsIFNQSUphdmFzY3JpcHRNYXJrdXBWc0FQSUNvbnRlbnRKYXZhU2NyaXB0KQogewogICAg
IC8vIFRoZXJlJ3Mgbm90IGEgZHluYW1pY2FsbHkgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciBq
YXZhc2NyaXB0IG1hcmt1cCwKICAgICAvLyBidXQgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgYXQgV0tX
ZWJWaWV3IGNyZWF0aW9uIHRpbWUuCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKLSAgICBjb25maWd1cmF0aW9uLl9hbGxvd3NKYXZhU2NyaXB0TWFya3VwID0gTk87Ci0g
ICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIF9zZXRBbGxvd3NKYXZhU2NyaXB0TWFya3VwOk5PXTsKKyAgICBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGZvbGxvd2luZyBKUyBk
b2VzIG5vdCBleGVjdXRlLgogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIjxzY3JpcHQ+dmFyIGZvbyA9ICdiYXInPC9zY3JpcHQ+Il07CkBAIC01MDMsMTkgKzUwMywx
OSBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbVBvc3RN
ZXNzYWdlKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRnJhbWVzTWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtb
V0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVj
dGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWlu
RnJhbWVPbmx5Ok5PIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRX
b3JsZF0pOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBb
Y29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp1c2VyU2Ny
aXB0LmdldCgpXTsKLSAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldL
Q29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAiZnJhbWVzVGVzdGVyIl07Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOworICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5k
bGVyLmdldCgpIGNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQg
bmFtZTpAImZyYW1lc1Rlc3RlciJdOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRV
UkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4g
dGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7CiAgICAgICAg
ICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyIsIGZy
YW1lc01haW5SZXNvdXJjZV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0g
YXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9w
dE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgICAgICBbdGFzayBk
aWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAg
ICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRv
U3RyaW5nOkAib3RoZXJwcm90b2NvbDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7Ci0gICAgICAgICAg
ICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4
cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAg
ICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUyNCw3ICs1MjQsNyBAQCBURVNUKEV2YWx1YXRlSmF2
YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgIFtjb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJm
cmFtZXN0ZXN0Il07CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIm90aGVycHJvdG9jb2wiXTsKIAotICAgIFJldGFpblB0
cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJmcmFtZXN0ZXN0Oi8vdGVzdC9pbmRleC5odG1sIl1dXTsKIAogICAgIEVYUEVDVF9F
UShhbGxGcmFtZXMuY291bnQsIDJ1KTsKQEAgLTU3OCwyMyArNTc4LDIzIEBAIFRFU1QoRXZhbHVh
dGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tTmF2aWdhdGlvbkRlbGVnYXRlKQog
ICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAq
LCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3Qu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2lu
ZGV4Lmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJXMiLCBmcmFtZXNNYWluUmVzb3VyY2VdIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBk
aWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlk
RmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0p
IHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtAIkZvb0JhckJheiIgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRF
bmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9XTsKIAot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
ICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAiZnJhbWVzdGVzdCJdOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJvdGhlcnByb3RvY29sIl07CiAK
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAKQEAgLTY2MywyMyArNjYzLDIzIEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBK
YXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNj
aGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
KSB7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFs
VG9TdHJpbmc6QCJmcmFtZXN0ZXN0Oi8vdGVzdC9pbmRleC5odG1sIl0pIHsKICAgICAgICAgICAg
IE5TRGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzIiwgZnJhbWVz
TWFpblJlc291cmNlXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0g
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRv
cmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBp
ZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAib3Ro
ZXJwcm90b2NvbDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRh
dGEgPSBbQCJGb29CYXJCYXoiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVh
c2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxd
KS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAg
ICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfV07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImZyYW1lc3Rlc3QiXTsK
ICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAib3RoZXJwcm90b2NvbCJdOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIApA
QCAtNzM0LDI4ICs3MzQsMjggQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJ
bk1pc3NpbmdGcmFtZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogICAgIFtoYW5kbGVyIHNldFN0YXJ0
VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+
IHRhc2spIHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlz
RXF1YWxUb1N0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4Lmh0bWwiXSkgewogICAgICAg
ICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMiLCBm
cmFtZXNNYWluUmVzb3VyY2VdIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRv
cHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBl
bHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0
YSAqZGF0YSA9IFtAIkZvb0JhckJheiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRv
cmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5y
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZXN0ZXN0Oi8v
aW5kZXgyLmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW0AiSGkiIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBb
dGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fV07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIGZvclVSTFNjaGVtZTpAImZyYW1lc3Rlc3QiXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAib3RoZXJwcm90b2Nv
bCJdOwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIApAQCAtODA5LDggKzgwOSw4IEBAIFRFU1Qo
RXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRp
b25FcnJvcikKIAogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIFdpbmRvd1BlcnNpc3RlbmN5KQog
ewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBf
X2Jsb2NrIGJvb2wgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9y
ZS5tbQppbmRleCBkNDJhYTg2MTZiZTljYzFkNWQxZjc1NDNiZjcyZjc0ZWRlM2VmMDEyLi4yYmYw
MmJiZDQxNzMwNWJhYTJkMDJhNzQ0MDIzYWQ1ODhkY2I1ZGEwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9y
ZS5tbQpAQCAtMTUzLDggKzE1Myw4IEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBGZXRjaFBl
cnNpc3RlbnRDcmVkZW50aWFscykKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKIAogICAgIC8vIE1ha2Ugc3VyZSBubyBjcmVkZW50
aWFsIGxlZnQgYnkgcHJldmlvdXMgdGVzdHMuCi0gICAgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnBy
b3RlY3Rpb25TcGFjZSA9IFtbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhv
c3Q6QCIxMjcuMC4wLjEiIHBvcnQ6c2VydmVyLnBvcnQoKSBwcm90b2NvbDpOU1VSTFByb3RlY3Rp
b25TcGFjZUhUVFAgcmVhbG06QCJ0ZXN0cmVhbG0iIGF1dGhlbnRpY2F0aW9uTWV0aG9kOk5TVVJM
QXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWNdIGF1dG9yZWxlYXNlXTsKLSAgICBbW3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNG
b3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlXTsKKyAgICBhdXRvIHByb3RlY3Rpb25T
cGFjZSA9IGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0
OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9u
U3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNw
YWNlOnByb3RlY3Rpb25TcGFjZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgp
XV1dXTsKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hQZXJz
aXN0ZW50Q3JlZGVudGlhbHMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
IAogICAgIC8vIENsZWFyIHBlcnNpc3RlbnQgY3JlZGVudGlhbHMgY3JlYXRlZCBieSB0aGlzIHRl
c3QuCi0gICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1h
bmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZV07CisgICAg
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRl
bnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZS5nZXQoKV07CiB9CiAKIFRF
U1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9s
aWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJHTFBvbGlj
eS5tbQppbmRleCA5OTgxMTlmMzUwMTg0YTQwYzJiMjJkYzljN2Q4NGUxMTJjYjdkNjljLi5hNGZi
Mzc1ZTVkYzY5MGZlYzYxZDhhMDg3MjE1ZTYyZDVlMWU3NmZkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViR0xQb2xpY3kubW0KQEAgLTY0LDcg
KzY0LDcgQEAgQGltcGxlbWVudGF0aW9uIFdlYkdMVGVzdERlbGVnYXRlCiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNj
aGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKIHsKLSAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt1
cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXSkuZ2V0KCldOwogICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRhOltkYXRh
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW3VybFNjaGVt
ZVRhc2sgZGlkRmluaXNoXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0KaW5k
ZXggMzBmZWEwNzUzZGFiMzlkMjg4YTJhMGJkYjcyNGJlOTFkNjFkNzRhZS4uMjk4MTk5NjkxMzI2
ZTMwOGU5MDk0ZDdlMTBmZDQ0M2MyMzUxYmU0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFdLU2NyaXB0TWVzc2FnZSAqZ2V0TmV4
dE1lc3NhZ2UoKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFtbc2NyaXB0TWVzc2FnZXMudGFrZUZp
cnN0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNjcmlwdE1lc3NhZ2VzLnRh
a2VGaXJzdCgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFRFU1QoSW5kZXhlZERCLCBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmlu
ZGV4IDNiMTMxZjdjYjg2MGFlODAxYjkyMzU1NTNkNTBmYjdhMTZjMjc0ZDEuLjI4MWFjMWJhMjIx
MGRjNjVjNjhiNTBkNzk3Yzk4ZWEzMTI5YjA0YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLm1tCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBXS1NjcmlwdE1lc3NhZ2Ug
KmdldE5leHRNZXNzYWdlKCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIH0KIAotICAgIHJldHVybiBbW3NjcmlwdE1lc3NhZ2Vz
LnRha2VGaXJzdCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzY3JpcHRNZXNz
YWdlcy50YWtlRmlyc3QoKS5hdXRvcmVsZWFzZSgpOwogfQogCiBlbnVtIGNsYXNzIFNob3VsZEVu
YWJsZVByb2Nlc3NQcmV3YXJtaW5nIHsgTm8sIFllcyB9OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0
YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9j
ZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCkuX2Nvb2tpZVN0b3JhZ2VGaWxlID0gY29va2llU3RvcmFnZUZpbGU7CiAgICAgd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aDsKIAotICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0g
YXV0b3JlbGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9
IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKTsKICAgICBjb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2wuZ2V0KCk7CiAKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTQ0OSw3ICs0NDksNyBAQCBURVNUKFdlYktpdCwgQWx0
ZXJuYXRpdmVTZXJ2aWNlc0RlZmF1bHREaXJlY3RvcnlDcmVhdGlvbikKICAgICBOU1VSTCAqZGVm
YXVsdERpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hl
cy9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L0FsdGVybmF0aXZlU2Vydmlj
ZXMiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CiAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZGVmYXVsdERp
cmVjdG9yeSBlcnJvcjpuaWxdOwogICAgIAotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcxID0g
W1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
VmlldzEgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJW
aWV3MSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBhdXhpbGlhcnkgcHJvY2Vz
c2VzIiBiYXNlVVJMOm5pbF07CiAKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHREaXJlY3RvcnkucGF0aF0pOwpA
QCAtNDY0LDkgKzQ2NCw5IEBAIFRFU1QoV2ViS2l0LCBBbHRlcm5hdGl2ZVNlcnZpY2VzRGVmYXVs
dERpcmVjdG9yeUNyZWF0aW9uKQogICAgIAogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JL
ZXk6a2V5XTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgY29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOltbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNlXTsKLSAgICBUZXN0V0tXZWJWaWV3
ICp3ZWJWaWV3MiA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFk
b3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSku
Z2V0KCldKS5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3MiBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBhdXhpbGlhcnkgcHJvY2Vzc2VzIiBiYXNlVVJMOm5p
bF07CiAKICAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6ZGVmYXVsdERpcmVjdG9yeS5wYXRoXSk7CkBAIC00OTAsNyArNDkwLDcg
QEAgVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVFcGhlbWVyYWxWaWFDb25maWd1cmF0aW9u
KQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKIAog
ICAgIFJldGFpblB0cjxfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7Ci0gICAgY29uZmlndXJh
dGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1
dG9yZWxlYXNlXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBh
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKTsKICAgICBbY29uZmlndXJhdGlv
bi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZDpZRVNdOwogCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgucGF0
aF0pOwpAQCAtNTMwLDcgKzUzMCw3IEBAIFRFU1QoV2ViS2l0LCBEb0xvYWRXaXRoTm9uRGVmYXVs
dERhdGFTdG9yZUFmdGVyVGVybWluYXRpbmdOZXR3b3JrUHJvY2VzcykKICAgICBhdXRvIHdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlld0NvbmZpZ3Vy
YXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKS5nZXQoKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC01NDksOCArNTQ5
LDggQEAgVEVTVChXZWJLaXQsIERvTG9hZFdpdGhOb25EZWZhdWx0RGF0YVN0b3JlQWZ0ZXJUZXJt
aW5hdGluZ05ldHdvcmtQcm9jZXNzKQogCiBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25QYXRoTnVsbCkKIHsKLSAgICBFWFBFQ1RfVFJVRShbW1tbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXSBfaW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnldKTsKLSAgICBFWFBFQ1RfRkFMU0UoW1tbW19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25d
IGF1dG9yZWxlYXNlXSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldKTsKKyAgICBFWFBFQ1Rf
VFJVRShbYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSkgX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XSk7CisgICAgRVhQRUNUX0ZBTFNFKFth
ZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25Q
ZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0pIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV0pOwog
fQogCiBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUlmRXhpc3RzKQpAQCAtNjMwLDEzICs2
MzAsMTMgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVSZW5hbWVPcmlnaW5Gb3JJbmRl
eGVkRGF0YWJhc2UpCiAKIFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlUmVuYW1lT3JpZ2lu
KQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8c2NyaXB0PmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXN0a2V5JywgJ3Rlc3R2
YWx1ZScpPC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9l
eGFtcGxlLmNvbS8iXV07CiAgICAgCiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAg
ICBOU1VSTCAqZXhhbXBsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFt
cGxlLmNvbS8iXTsKICAgICBOU1VSTCAqd2ViS2l0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwczovL3dlYmtpdC5vcmcvIl07Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3Rv
cmUgPSB3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXS1dlYnNp
dGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVE
YXRhU3RvcmU7CiAgICAgTlNTZXQgKmxvY2FsU3RvcmFnZVNldCA9IFtOU1NldCBzZXRXaXRoT2Jq
ZWN0OldLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlXTsKICAgICBbZGF0YVN0b3JlIF9yZW5h
bWVPcmlnaW46ZXhhbXBsZVVSTCB0bzp3ZWJLaXRVUkwgZm9yRGF0YU9mVHlwZXM6bG9jYWxTdG9y
YWdlU2V0IGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgIGRvbmUgPSB0cnVlOwpAQCAtNjc2
LDcgKzY3Niw3IEBAIFRFU1QoV2ViS2l0LCBOZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCiAgICAgW3dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeTp0ZW1w
RGlyXTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0
b3JlbGVhc2VdXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCldOwogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgp
XV1dXTsKQEAgLTcwOSw3ICs3MDksNyBAQCBURVNUKFdlYktpdCwgQXBwbGljYXRpb25DYWNoZURp
cmVjdG9yaWVzKQogICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRBcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOkAidGVzdHN1YmRpcmVjdG9yeSJdOwog
ICAgIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRXZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3Jl
bGVhc2VdXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTph
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCldOwogICAgIAogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvaW5kZXguaHRtbCIsIHNl
cnZlci5wb3J0KCldXV1dOwpAQCAtNzQ4LDkgKzc0OCw5IEBAIFRFU1QoV2ViS2l0LCBESVNBQkxF
RF9BbHRlcm5hdGl2ZVNlcnZpY2UpCiAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0
ZW1BdFBhdGg6cGF0aCBlcnJvcjomZXJyb3JdOwogCi0gICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGRhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkgPSB0ZW1w
RGlyOwotICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRp
b25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbZGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURp
cmVjdG9yeTp0ZW1wRGlyXTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBb
ZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9X
S1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CkBAIC03NTksMTIgKzc1
OSwxMiBAQCBURVNUKFdlYktpdCwgRElTQUJMRURfQWx0ZXJuYXRpdmVTZXJ2aWNlKQogICAgIH1d
OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICp3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlID0gZGF0YVN0b3JlOwotICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOndlYlZpZXdDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKLSAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBe
KFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
d2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCld
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CiAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRp
Y2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH07CkBAIC03NzIsNyArNzcyLDcgQEAgVEVT
VChXZWJLaXQsIERJU0FCTEVEX0FsdGVybmF0aXZlU2VydmljZSkKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBjaGVj
a1VudGlsRW50cnlGb3VuZChkYXRhU3RvcmUsIF4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+ICpyZWNvcmRzKSB7CisgICAgY2hlY2tVbnRpbEVudHJ5Rm91bmQoZGF0YVN0b3JlLmdldCgp
LCBeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgewogICAgICAgICBF
WFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMXUpOwogICAgICAgICBbZGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0
aXZlU2VydmljZXNdIGZvckRhdGFSZWNvcmRzOnJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6XnsK
ICAgICAgICAgICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNl
dFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10gY29tcGxl
dGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsK
QEAgLTg0Nyw3ICs4NDcsNyBAQCBURVNUKFdlYktpdCwgTWVkaWFDYWNoZSkKICAgICBbd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0TWVkaWFDYWNoZURpcmVjdG9yeTp0ZW1wRGlyXTsK
IAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVh
c2VdXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCldOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW0KaW5kZXggZmJjNDEyNmM4MTEyYmNkMzFiNTk0OWMyNmUyZDk5NWVmYzI4
YjEzZS4uMDQxNzRjOTlkMGQ2YzM1Zjg5MjI5YjM5MDNiMDA3YzBhNDcyODA4NCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9s
aWNpZXMubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbgogCiAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJl
bmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQ
b2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBzd2l0Y2ggKGFsZXJ0Q291bnQpIHsKICAgICBjYXNl
IDA6CiAgICAgICAgIC8vIFZlcmlmeSB0aGUgY29udGVudCBibG9ja2VycyBiZWhhdmUgY29ycmVj
dGx5IHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3IuCkBAIC0xMTMsMTEgKzExMywxMSBAQCAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aQogICAgIGNhc2UgMToKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gVmVyaWZ5IGRpc2FibGluZyBjb250ZW50IGJsb2NrZXJzIHdvcmtzIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNl
OworICAgICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q29udGVudEJsb2NrZXJzRW5hYmxl
ZDpmYWxzZV07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFZlcmlmeSBjYWxsaW5nIHRo
ZSBkZWNpc2lvbkhhbmRsZXIgYXN5bmNocm9ub3VzbHkgd29ya3MgY29ycmVjdGx5LgogICAgICAg
ICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShkZWNpc2lvbkhhbmRs
ZXIpOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyQ29weSwg
d2Vic2l0ZVBvbGljaWVzID0gcmV0YWluUHRyKHdlYnNpdGVQb2xpY2llcyldIHsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlckNvcHksIHdlYnNpdGVQb2xpY2ll
c10gewogICAgICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlckNvcHkoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
QmxvY2tfcmVsZWFzZShkZWNpc2lvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgICAgIH0pOwpAQCAt
MTI1LDEyICsxMjUsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgMjoKICAgICAgICAgLy8gVmVyaWZ5IGVuYWJsaW5nIGNvbnRlbnQgYmxvY2tl
cnMgaGFzIG5vIGVmZmVjdCB3aGVuIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMu
Ci0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7
CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ6dHJ1
ZV07CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVYUEVDVF9UUlVFKGZh
bHNlKTsKICAgICB9Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIH0KIAogQGVuZApA
QCAtMTg5LDEyICsxODksMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKIAogLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdL
V2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lz
aW9uSGFuZGxlcgogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMg
PSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XSk7CiAgICAgaWYgKF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwpCi0gICAg
ICAgIHdlYnNpdGVQb2xpY2llcy5fYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2FsbG93ZWRBdXRv
cGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAg
W3dlYnNpdGVQb2xpY2llcyBfc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzOl9hbGxvd2VkQXV0b3Bs
YXlRdWlya3NGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCldOwogICAgIGlmIChf
YXV0b3BsYXlQb2xpY3lGb3JVUkwpCi0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYXV0b3BsYXlQ
b2xpY3kgPSBfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVS
TCk7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3
ZWJzaXRlUG9saWNpZXMpOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRBdXRvcGxheVBv
bGljeTpfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCld
OworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vi
c2l0ZVBvbGljaWVzLmdldCgpKTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhG
bGFnczooX1dLQXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJl
ZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFdLV2VicGFn
ZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9
IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgICAgICBp
ZiAoX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTCkKLSAgICAgICAgICAgIHdlYnNpdGVQb2xp
Y2llcy5fYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVS
TChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAgICAgIFt3ZWJzaXRlUG9s
aWNpZXMgX3NldEFsbG93ZWRBdXRvcGxheVF1aXJrczpfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9y
VVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpXTsKICAgICAgICAgaWYgKF9hdXRvcGxh
eVBvbGljeUZvclVSTCkKLSAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYXV0b3BsYXlQb2xp
Y3kgPSBfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCk7
Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywg
d2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEF1dG9w
bGF5UG9saWN5Ol9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMKV07CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzA0LDkgKzMw
NCw5IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVu
YWJsZWQpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIAog
ICAgIC8vIFRlc3QgdXBkYXRpbmcgd2Vic2l0ZSBwb2xpY2llcy4KLSAgICBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJzaXRlUG9saWNpZXMuX2F1dG9wbGF5UG9saWN5
ID0gX1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5QWxsb3c7Ci0gICAgW3dlYlZpZXcgX3VwZGF0ZVdl
YnBhZ2VQcmVmZXJlbmNlczp3ZWJzaXRlUG9saWNpZXNdOworICAgIGF1dG8gd2Vic2l0ZVBvbGlj
aWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYnNpdGVQb2xpY2llcyBfc2V0QXV0b3BsYXlQb2xpY3k6X1dLV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5QWxsb3ddOworICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6d2Vic2l0
ZVBvbGljaWVzLmdldCgpXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAicGxheVZpZGVvKCkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9w
bGF5ZWQiXTsKIApAQCAtNzAxLDEwICs3MDEsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlkZW9EYXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGEKIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+
KXRhc2sKIHsKICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCIvc2hvdWxkLXJlZGlyZWN0Il0pIHsKLSAgICAgICAgWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2
YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246W1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXSBuZXdSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8v
L2F1dG9wbGF5LWNoZWNrLmh0bWwiXV1dOworICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1By
aXZhdGU+KXRhc2sgX2RpZFBlcmZvcm1SZWRpcmVjdGlvbjphZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKSBuZXdSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0
Oi8vL2F1dG9wbGF5LWNoZWNrLmh0bWwiXV1dOwogICAgICAgICAKICAgICAgICAgTlNEYXRhICpk
YXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5LWNoZWNrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0
KCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgW3Rhc2sg
ZGlkRmluaXNoXTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzE2LDggKzcxNiw4IEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VS
TFNjaGVtZVRhc2s+KXRhCiAgICAgYXV0byYgcmFuZ2UgPSAqcGFyc2VkUmFuZ2UucmFuZ2U7CiAg
ICAgCiAgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBAeyBAIkNvbnRlbnQtTGVuZ3Ro
IjogW0AocmFuZ2Uuc2Vjb25kIC0gcmFuZ2UuZmlyc3QpIHN0cmluZ1ZhbHVlXSwgQCJDb250ZW50
LVJhbmdlIjogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJieXRlcyAlbHUtJWx1LyVsdSIs
IHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQsIFt2aWRlb0RhdGEgbGVuZ3RoXV0gfTsKLSAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOihOU1N0
cmluZyAqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJGaWVsZHNdIGF1dG9y
ZWxlYXNlXTsKLSAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOworICAgIGF1
dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5n
ICopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOmhlYWRlckZpZWxkc10pOworICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CiAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W3ZpZGVvRGF0YSBzdWJkYXRhV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJhbmdlLmZp
cnN0LCByYW5nZS5zZWNvbmQgLSByYW5nZS5maXJzdCldXTsKICAgICBbdGFzayBkaWRGaW5pc2hd
OwogICAgIApAQCAtNzMzLDcgKzczMyw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJz
aXRlUG9saWNpZXNEdXJpbmdSZWRpcmVjdCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
dmlkZW9EYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJM
OltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ0ZXN0IiB3aXRoRXh0ZW5z
aW9uOkAibXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSk7Ci0g
ICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpbW1tUZXN0U2NoZW1lSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhWaWRlb0RhdGE6V1RGTW92ZSh2aWRlb0RhdGEpXSBhdXRvcmVsZWFz
ZV0gZm9yVVJMU2NoZW1lOkAidGVzdCJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6YWRvcHROUyhbW1Rlc3RTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFZpZGVv
RGF0YTpXVEZNb3ZlKHZpZGVvRGF0YSldKS5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAgICAgCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBdXRvcGxh
eVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTc3MSw5ICs3NzEsOSBAQCBURVNU
KFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0V2l0aEF1ZGlvXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVz
c2FnZTpAImRpZC1ub3QtcGxheSJdOwogCi0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnBvbGlj
aWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
LSAgICBwb2xpY2llcy5fYXV0b3BsYXlQb2xpY3kgPSBfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lB
bGxvdzsKLSAgICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnBvbGljaWVzXTsK
KyAgICBhdXRvIHBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9j
XSBpbml0XSk7CisgICAgW3BvbGljaWVzIF9zZXRBdXRvcGxheVBvbGljeTpfV0tXZWJzaXRlQXV0
b3BsYXlQb2xpY3lBbGxvd107CisgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNl
czpwb2xpY2llcy5nZXQoKV07CiAKICAgICAvLyBOb3cgdGhhdCB3ZSB1cGRhdGVkIG91ciBwb2xp
Y2llcywgYSBzY3JpcHQgc2hvdWxkIGJlIGFibGUgdG8gYXV0b3BsYXkgbWVkaWEuCiAgICAgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07CkBAIC03
ODEsOSArNzgxLDkgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1Vw
ZGF0ZXMpCiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGF1
c2VWaWRlbygpIl07CiAKLSAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBb
W1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHBy
ZWZlcmVuY2VzLl9hdXRvcGxheVBvbGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeURlbnk7
Ci0gICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxv
Y10gaW5pdF0pOworICAgIFtwcmVmZXJlbmNlcyBfc2V0QXV0b3BsYXlQb2xpY3k6X1dLV2Vic2l0
ZUF1dG9wbGF5UG9saWN5RGVueV07CisgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJl
bmNlczpwcmVmZXJlbmNlcy5nZXQoKV07CiAKICAgICAvLyBBIHNjcmlwdCBzaG91bGQgbm8gbG9u
Z2VyIGJlIGFibGUgdG8gYXV0b3BsYXkgbWVkaWEuCiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50
ID0gV1RGOjpudWxsb3B0OwpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgc3RhdGljIHZvaWQgZXhwZWN0
SGVhZGVycyhpZCA8V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBib29sIGV4cGVjdGVkKQogCiBzdGF0
aWMgdm9pZCByZXNwb25kKGlkIDxXS1VSTFNjaGVtZVRhc2s+dGFzaywgTlNTdHJpbmcgKmh0bWwg
PSBuaWwpCiB7Ci0gICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpodG1sLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0g
YXV0b3JlbGVhc2VdXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpodG1sLmxlbmd0aCB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbaHRtbCBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFt0YXNrIGRpZEZpbmlz
aF07CiB9CkBAIC0xMDUwLDcgKzEwNTAsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aQogICAg
IFdLRGljdGlvbmFyeVNldEl0ZW0obGVnYWN5SGVhZGVyRmllbGREaWN0aW9uYXJ5LmdldCgpLCBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJYLWtleTIiKSkuZ2V0KCksIGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInZhbHVlMiIpKS5nZXQoKSk7CiAg
ICAgV0tXZWJzaXRlUG9saWNpZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMoKFdLV2Vic2l0ZVBvbGlj
aWVzUmVmKXByZWZlcmVuY2VzLCBsZWdhY3lIZWFkZXJGaWVsZERpY3Rpb25hcnkuZ2V0KCkpOwog
Ci0gICAgX1dLQ3VzdG9tSGVhZGVyRmllbGRzICpoZWFkZXJGaWVsZHMgPSBbW1tfV0tDdXN0b21I
ZWFkZXJGaWVsZHMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhlYWRlckZp
ZWxkcyA9IGFkb3B0TlMoW1tfV0tDdXN0b21IZWFkZXJGaWVsZHMgYWxsb2NdIGluaXRdKTsKICAg
ICBbaGVhZGVyRmllbGRzIHNldEZpZWxkczpAe0AiWC1rZXkzIjogQCJ2YWx1ZTMiLCBAIlgta2V5
NCI6IEAidmFsdWU0In1dOwogICAgIFtoZWFkZXJGaWVsZHMgc2V0VGhpcmRQYXJ0eURvbWFpbnM6
QFsKICAgICAgICAgQCIqLmhvc3R3aXRoYXN0ZXJpc2suY29tIiwKQEAgLTEwNTgsNyArMTA1OCw3
IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAgICAgICAgIEAiKi5jb20iIC8vIHNob3VsZCBi
ZSBpZ25vcmVkLgogICAgIF1dOwogICAgIAotICAgIFtwcmVmZXJlbmNlcyBfc2V0Q3VzdG9tSGVh
ZGVyRmllbGRzOkBbaGVhZGVyRmllbGRzXV07CisgICAgW3ByZWZlcmVuY2VzIF9zZXRDdXN0b21I
ZWFkZXJGaWVsZHM6QFtoZWFkZXJGaWVsZHMuZ2V0KCldXTsKICAgICAKICAgICBpZiAoW25hdmln
YXRpb25BY3Rpb24ucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbnJlc291
cmNlIl0pIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKQEAgLTEyMTQsMTEgKzEyMTQsMTEgQEAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXBy
ZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlv
biAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlcklu
Zm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdL
V2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogSUdOT1JFX1dBUk5JTkdTX0VO
RAogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dl
YnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
c2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSk7CiAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKQogICAg
ICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0b21Vc2VyQWdlbnQ6QCJGb28gQ3VzdG9tIFVz
ZXJBZ2VudCJdOwogCi0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIH0KIAogLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24KQEAgLTEzMDQsMTQgKzEzMDQsMTQgQEAgQGltcGxlbWVudGF0
aW9uIEN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZQogCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3Vy
ZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewot
ICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vic2l0ZVBv
bGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CiAg
ICAgaWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKSB7CiAgICAgICAg
IFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtz
OkAiRm9vIFNpdGUgU3BlY2lmaWMgUXVyaWtzIFVzZXJBZ2VudCJdOwogICAgICAgICBpZiAoX3Nl
dEN1c3RvbVVzZXJBZ2VudCkKICAgICAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3Rv
bVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gUmVxdWVzdCBVc2VyQWdlbnQiXTsKICAgICB9CiAKLSAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQ
b2xpY2llcyk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgpAQCAtMTQwMSwxMSArMTQwMSwxMSBAQCBAaW1wbGVtZW50YXRpb24gQ3VzdG9tTmF2aWdh
dG9yUGxhdGZvcm1EZWxlZ2F0ZQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8g
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIFdLV2VicGFnZVByZWZl
cmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhb
W1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKG5hdmlnYXRpb25B
Y3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKQogICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9z
ZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTpAIlRlc3QgQ3VzdG9tIFBsYXRmb3JtIl07CiAKLSAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQ
b2xpY2llcyk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgpAQCAtMTQ2MCwxMCArMTQ2MCwxMCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZXZp
Y2VPcmllbnRhdGlvbkFjY2Vzc1BvbGljeTooX1dLV2Vic2l0ZURldmljZU9yaWVudGF0aQogCiAt
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVy
ZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgdXNlckluZm86KGlkIDxO
U1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxl
cgogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dl
YnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
c2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSk7CiAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NQb2xpY3k6X2FjY2Vzc1BvbGljeV07CiAKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0
KCkpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNo
TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgpAQCAtMTU2NywxMCArMTU2Nywx
MCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFu
ZGxlcgogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tX
S1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSk7CiAgICAgaWYgKF9wb3BVcFBvbGljeUZvclVSTCkKLSAgICAgICAgd2Vic2l0ZVBvbGlj
aWVzLl9wb3BVcFBvbGljeSA9IF9wb3BVcFBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJl
cXVlc3QuVVJMKTsKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldFBv
cFVwUG9saWN5Ol9wb3BVcFBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJM
KV07CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3
ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogfQogCiAtIChudWxsYWJsZSBXS1dlYlZpZXcgKil3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlv
bjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczoo
V0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCkBAIC0xNjE4LDEyICsxNjE4LDEyIEBA
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiB7CiAgICAgTlNVUkwgKnVybCA9IG5hdmlnYXRpb25B
Y3Rpb24ucmVxdWVzdC5VUkw7CiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIv
aW52YWxpZCJdKSB7Ci0gICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNp
ZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246W1tbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV0gYXV0b3JlbGVhc2Vd
OworICAgICAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRXZWJz
aXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSkuZ2V0KCldKS5nZXQoKV07CiAKICAgICAgICAgYm9vbCBzYXdFeGNlcHRp
b24gPSBmYWxzZTsKICAgICAgICAgQHRyeSB7Ci0gICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAg
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNp
dGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0
aW9uKSB7CiAgICAgICAgICAgICBzYXdFeGNlcHRpb24gPSB0cnVlOwogICAgICAgICB9CkBAIC0x
NjM0LDE2ICsxNjM0LDE2IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAgICAgaWYgKFt1cmwu
cGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tTdG9yYWdlIl0KICAgICAgICAgfHwgW3VybC5w
YXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja0Nvb2tpZXMiXQogICAgICAgICB8fCBbdXJsLnBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW5GcmFtZSJdKSB7Ci0gICAgICAgIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVE
YXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwot
ICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdl
YnNpdGVQb2xpY2llcyk7CisgICAgICAgIGF1dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhb
W1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJzaXRlUG9s
aWNpZXMgX3NldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0
ZW50RGF0YVN0b3JlXV07CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICB9CiAgICAgaWYgKFt1
cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvc3ViRnJhbWUiXSkgewotICAgICAgICBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl93ZWJz
aXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3Jl
XTsKKyAgICAgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0V2Vi
c2l0ZURhdGFTdG9yZTpbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVd
XTsKICAgICAgICAgYm9vbCBzYXdFeGNlcHRpb24gPSBmYWxzZTsKICAgICAgICAgQHRyeSB7Ci0g
ICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2Vs
LCB3ZWJzaXRlUG9saWNpZXMpOworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUNhbmNlbCwgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICAgICAg
fSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgICAgIHNhd0V4Y2Vw
dGlvbiA9IHRydWU7CiAgICAgICAgIH0KQEAgLTE3MjgsMjQgKzE3MjgsMjQgQEAgVEVTVChXZWJw
YWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0RhdGFTdG9yZSkKIFRFU1QoV2VicGFnZVBy
ZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNVc2VyQ29udGVudENvbnRyb2xsZXIpCiB7CiAgICAg
YXV0byBtYWtlU2NyaXB0ID0gW10gKE5TU3RyaW5nICpzY3JpcHQpIHsKLSAgICAgICAgcmV0dXJu
IFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c2NyaXB0IGluamVjdGlvblRp
bWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVP
bmx5OllFU10gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLVXNlclNj
cmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c2NyaXB0IGluamVjdGlvblRpbWU6V0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwog
ICAgIH07Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBbY29uZmlndXJhdGlv
bi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDptYWtlU2NyaXB0KEAiYWxlcnQo
J3Rlc3RBbGVydDEnKSIpXTsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBUZXN0VUlEZWxl
Z2F0ZSAqdWlEZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0g
ICAgd2ViVmlldy5VSURlbGVnYXRlID0gdWlEZWxlZ2F0ZTsKLSAgICBUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlICpuYXZpZ2F0aW9uRGVsZWdhdGUgPSBbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRVc2VyU2NyaXB0Om1ha2VTY3JpcHQoQCJhbGVydCgndGVzdEFsZXJ0MScp
IikuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxl
Z2F0ZS5nZXQoKV07CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIF9fYmxvY2sgYm9vbCBpZnJhbWVFeGNlcHRp
b25UaHJvd24gPSBmYWxzZTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxXS1VzZXJDb250ZW50Q29u
dHJvbGxlcj4gcmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXI7Ci0gICAgbmF2aWdhdGlv
bkRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMg
PSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICBuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9u
QWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
KSkgewogICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5wYXRoIGhhc1N1ZmZpeDpAIi9z
aW1wbGUtaWZyYW1lLmh0bWwiXSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgbmlsKTsKICAgICAgICAgaWYgKFthY3Rp
b24ucmVxdWVzdC5VUkwucGF0aCBoYXNTdWZmaXg6QCIvc2ltcGxlLmh0bWwiXSkgewogICAgICAg
ICAgICAgQHRyeSB7Ci0gICAgICAgICAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZl
cmVuY2VzID0gW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICAg
ICAgICAgICAgICBwcmVmZXJlbmNlcy5fdXNlckNvbnRlbnRDb250cm9sbGVyID0gW1tXS1VzZXJD
b250ZW50Q29udHJvbGxlciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZl
cmVuY2VzKTsKKyAgICAgICAgICAgICAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhbV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgbmV3XSk7CisgICAgICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9z
ZXRVc2VyQ29udGVudENvbnRyb2xsZXI6YWRvcHROUyhbV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
bmV3XSkuZ2V0KCldOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMuZ2V0KCkpOwogICAgICAg
ICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgICAgICAg
ICBpZnJhbWVFeGNlcHRpb25UaHJvd24gPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTc1Mywx
MyArMTc1MywxMyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNl
ckNvbnRlbnRDb250cm9sbGVyKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBFWFBFQ1Rf
VFJVRShbYWN0aW9uLnJlcXVlc3QuVVJMLnBhdGggaGFzU3VmZml4OkAiL3NpbXBsZTIuaHRtbCJd
KTsKLSAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXS1dlYnBh
Z2VQcmVmZXJlbmNlcyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byBwcmVmZXJlbmNl
cyA9IGFkb3B0TlMoW1dLV2VicGFnZVByZWZlcmVuY2VzIG5ld10pOwogICAgICAgICByZXBsYWNl
bWVudFVzZXJDb250ZW50Q29udHJvbGxlciA9IGFkb3B0TlMoW1dLVXNlckNvbnRlbnRDb250cm9s
bGVyIG5ld10pOwotICAgICAgICBbcmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXIgYWRk
VXNlclNjcmlwdDptYWtlU2NyaXB0KEAiYWxlcnQoJ3Rlc3RBbGVydDInKSIpXTsKLSAgICAgICAg
cHJlZmVyZW5jZXMuX3VzZXJDb250ZW50Q29udHJvbGxlciA9IHJlcGxhY2VtZW50VXNlckNvbnRl
bnRDb250cm9sbGVyLmdldCgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgICAgICBbcmVwbGFjZW1lbnRV
c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDptYWtlU2NyaXB0KEAiYWxlcnQoJ3Rl
c3RBbGVydDInKSIpLmdldCgpXTsKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVc2VyQ29udGVu
dENvbnRyb2xsZXI6cmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCldOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJl
ZmVyZW5jZXMuZ2V0KCkpOwogICAgIH07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBuYXZpZ2F0aW9uRGVsZWdhdGU7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
Om5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZS1pZnJhbWUiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3VpRGVsZWdhdGUg
d2FpdEZvckFsZXJ0XSwgInRlc3RBbGVydDEiKTsKQEAgLTE3NzAsMTQgKzE3NzAsMTQgQEAgVEVT
VChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJDb250ZW50Q29udHJvbGxl
cikKIAogICAgIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CiAgICAgQHRyeSB7Ci0gICAg
ICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHByZWZlcmVuY2VzLl91c2VyQ29udGVu
dENvbnRyb2xsZXIgPSBbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIG5ld10gYXV0b3JlbGVhc2Vd
OwotICAgICAgICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2Vz
XTsKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0TlMoW1dLV2VicGFnZVByZWZlcmVu
Y2VzIG5ld10pOworICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVzZXJDb250ZW50Q29udHJvbGxl
cjphZG9wdE5TKFtXS1VzZXJDb250ZW50Q29udHJvbGxlciBuZXddKS5nZXQoKV07CisgICAgICAg
IFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwog
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIGNhdWdodEV4
Y2VwdGlvbiA9IHRydWU7CiAgICAgfQogICAgIEVYUEVDVF9UUlVFKGNhdWdodEV4Y2VwdGlvbik7
CiAKLSAgICBbcmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTY3JpcHRJ
bW1lZGlhdGVseTptYWtlU2NyaXB0KEAiYWxlcnQoJ3Rlc3RBbGVydDMnKTsiKV07CisgICAgW3Jl
cGxhY2VtZW50VXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU2NyaXB0SW1tZWRpYXRlbHk6
bWFrZVNjcmlwdChAImFsZXJ0KCd0ZXN0QWxlcnQzJyk7IikuZ2V0KCldOwogICAgIEVYUEVDVF9X
S19TVFJFUShbdWlEZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAidGVzdEFsZXJ0MyIpOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pT1NNb3VzZVN1
cHBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2lPU01vdXNl
U3VwcG9ydC5tbQppbmRleCA3MmNkNmJkMTIyMjA5YmIzZWJiOGY1YThiNjZhNWZiZjBjOWFlOTAx
Li42NGE4ZDg3MjQ4YTViZjczYjljNDc2ZDNhYTBkNmNiYjUwMDcxZGU3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2lPU01vdXNlU3VwcG9ydC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2lPU01vdXNlU3VwcG9y
dC5tbQpAQCAtMjg2LDEwICsyODYsMTAgQEAgVEVTVChpT1NNb3VzZVN1cHBvcnQsIFdlYnNpdGVN
b3VzZUV2ZW50UG9saWNpZXMpCiAKICAgICAvLyBJZiBsb2FkZWQgd2l0aCBfV0tXZWJzaXRlTW91
c2VFdmVudFBvbGljeVN5bnRoZXNpemVUb3VjaEV2ZW50cywgaXQgc2hvdWxkIHNlbmQgdG91Y2gg
ZXZlbnRzIGluc3RlYWQuCiAKLSAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMg
PSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAg
IHByZWZlcmVuY2VzLl9tb3VzZUV2ZW50UG9saWN5ID0gX1dLV2Vic2l0ZU1vdXNlRXZlbnRQb2xp
Y3lTeW50aGVzaXplVG91Y2hFdmVudHM7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0TlMo
W1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgIFtwcmVmZXJlbmNlcyBf
c2V0TW91c2VFdmVudFBvbGljeTpfV0tXZWJzaXRlTW91c2VFdmVudFBvbGljeVN5bnRoZXNpemVU
b3VjaEV2ZW50c107CiAKLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCJ0d28iIHByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJ0d28iIHByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgpXTsK
IAogICAgIC8vIEZJWE1FOiBCZWNhdXNlIHdlJ3JlIGRpcmVjdGx5IGNhbGxpbmcgbW91c2VHZXN0
dXJlUmVjb2duaXplckNoYW5nZWQ6IHRvIGVtdWxhdGUgdGhlIGdlc3R1cmUgcmVjb2duaXplciwK
ICAgICAvLyB3ZSBjYW4ndCBqdXN0IHRhcEFuZFdhaXQoKSBhZ2FpbiBhbmQgZXhwZWN0IHRoZSBm
YWN0IHRoYXQgaXQncyBkaXNhYmxlZCB0byBzdG9wIHRoZSBtb3VzZSBldmVudHMuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJ
bnB1dHNBY2Nlc3NvcnlWaWV3VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJbnB1dHNBY2Nlc3NvcnlWaWV3VGVzdHMubW0KaW5kZXgg
ZjRjZDc1ZmU2YmZmZmVmNTk2MTA5Y2EzNjI3MjQ4ZWRjOTA1MDhmZC4uZWU1ZDM2NTllYmU5MjRh
NDkwNWJlMGUyMzMwZmJjNDU2ZDUzYjE5MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL0RhdGVUaW1lSW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3Rz
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9EYXRl
VGltZUlucHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbQpAQCAtNTEsNyArNTEsNyBAQCBAZW5kCiAK
IHN0YXRpYyBVSVRhYmxlVmlld0NlbGwgKiBjZWxsRm9yUm93QXRJbmRleFBhdGgoaWQsIFNFTCkK
IHsKLSAgICByZXR1cm4gW1tbVUlUYWJsZVZpZXdDZWxsIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRdKS5h
dXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgdm9pZCBydW5UZXN0V2l0aElucHV0VHlwZShOU1N0
cmluZyAqdHlwZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Fj
dGlvblNoZWV0VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25T
aGVldFRlc3RzLm1tCmluZGV4IDc4N2QzZmVlYWE2OWE4NTU4NzNkZmRjYTQ2ZWRiM2IyMTk5NTk3
NTkuLjk2N2FjZTU5MmQ4NWE4ZWI4ODg1OGRkYjZmNWI0NGYyZGViYmNjZTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQpAQCAtMTU0
LDcgKzE1NCw3IEBAIFRFU1QoQWN0aW9uU2hlZXRUZXN0cywgSW1hZ2VNYXBEb2VzTm90RGVzdHJv
eVNlbGVjdGlvbikKIAogc3RhdGljIFVJVmlldyAqc3dpenpsZWRSZXNpemFibGVTbmFwc2hvdFZp
ZXdGcm9tUmVjdChpZCwgU0VMLCBDR1JlY3QgcmVjdCwgQk9PTCwgVUlFZGdlSW5zZXRzKQogewot
ICAgIHJldHVybiBbW1tVSVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpXSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogVEVTVChBY3Rpb25TaGVldFRlc3RzLCBEYXRhRGV0ZWN0b3JzTGlua0lzTm90UHJlc2Vu
dGVkQXNBTGluaykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Ry
YWdBbmREcm9wVGVzdHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFn
QW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4IDc1NjUyMmZkMWZkOTE5NjU0YzE0NzE3MjAxODcwMzQy
ZTcyYjEyOGQuLjE5MDBhNTg4MzQwY2FkMmM3MDQzMzQ2NGQ2ZGQyZmU2YjIxOGI3YjkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1Mu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lP
Uy5tbQpAQCAtMTI3Nyw4ICsxMjc3LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBPdmVycmlk
ZURyb3ApCiAgICAgW3NpbXVsYXRvciBzZXREcm9wQ29tcGxldGlvbkJsb2NrOl4oQk9PTCBoYW5k
bGVkLCBOU0FycmF5ICppdGVtUHJvdmlkZXJzKSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5k
bGVkKTsKICAgICAgICAgW2l0ZW1Qcm92aWRlcnMuZmlyc3RPYmplY3QgbG9hZERhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1M
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgewotICAg
ICAgICAgICAgTlNTdHJpbmcgKnRleHQgPSBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRh
OmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKLSAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgiPGJvZHk+PC9ib2R5PiIsIHRleHQuVVRGOFN0cmluZyk7
CisgICAgICAgICAgICBhdXRvIHRleHQgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoIjxib2R5PjwvYm9keT4iLCBbdGV4dCBVVEY4U3RyaW5nXSk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CiAgICAgICAgICAgICBmaW5pc2hlZExv
YWRpbmdEYXRhID0gdHJ1ZTsKICAgICAgICAgfV07CkBAIC0xNTQ2LDEwICsxNTQ2LDEwIEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgQ3VzdG9tQWN0aW9uU2hlZXRQb3BvdmVyKQogCiBURVNUKERy
YWdBbmREcm9wVGVzdHMsIFVucmVzcG9uc2l2ZVBhZ2VEb2VzTm90SGFuZ1VJKQogewotICAgIF9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gW1tb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGlt
ZW91dHNGb3JUZXN0aW5nID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0SWdub3JlU3luY2hyb25vdXNNZXNzYWdp
bmdUaW1lb3V0c0ZvclRlc3Rpbmc6WUVTXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApIGNvbmZpZ3VyYXRpb246W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuZ2V0KCkg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJd
OwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndoaWxlKDEpOyIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKIApAQCAtMjA3Niw3ICsyMDc2LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBEYXRhVHJhbnNmZXJTYW5pdGl6ZUhUTUwpCiAgICAgICAgIGF1dG8gKml0ZW0gPSBzZXNz
aW9uLml0ZW1zWzBdLml0ZW1Qcm92aWRlcjsKICAgICAgICAgRVhQRUNUX1RSVUUoW2l0ZW0ucmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycyBjb250YWluc09iamVjdDooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlSFRNTF0pOwogICAgICAgICBbaXRlbSBsb2FkRGF0YVJlcHJlc2VudGF0aW9uRm9y
VHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgY29tcGxldGlv
bkhhbmRsZXI6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgICAgICBO
U1N0cmluZyAqbWFya3VwID0gW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTooTlNEYXRh
ICopZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAg
ICAgICAgICAgYXV0byBtYXJrdXAgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
RGF0YTooTlNEYXRhICopZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW21hcmt1cCBjb250YWluc1N0cmluZzpAImhlbGxvIl0pOwog
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoW21hcmt1cCBjb250YWluc1N0cmluZzpAIiwgd29ybGQi
XSk7CiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoW21hcmt1cCBjb250YWluc1N0cmluZzpAInNl
Y3JldCJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3Bl
Y3RvckJhci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5t
bQppbmRleCAyNWRmZDM0ZDY0NWMzNGQ3N2FkNDI4ZWIwNzdmMGYxMDllNDE3NzBmLi4wY2VhOGYz
MGU3ZWQyMDNhMGE2M2QwNTA2ZDNhZGQ5MTg0YTdkZDBhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9JbnNwZWN0b3JCYXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tCkBAIC00Miw5ICs0Miw5IEBAIC0gKHZvaWQp
d2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1l
ICopZnJhbWUKIAogLSAoTlNEaWN0aW9uYXJ5ICopY29udmVydEF0dHJpYnV0ZXM6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnkKIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpuZXdEaWN0aW9u
YXJ5ID0gW2RpY3Rpb25hcnkgbXV0YWJsZUNvcHldOworICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9
IGFkb3B0TlMoW2RpY3Rpb25hcnkgbXV0YWJsZUNvcHldKTsKICAgICBbbmV3RGljdGlvbmFyeSBy
ZW1vdmVPYmplY3RGb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKLSAgICBy
ZXR1cm4gW25ld0RpY3Rpb25hcnkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBuZXdEaWN0aW9u
YXJ5LmF1dG9yZWxlYXNlKCk7CiB9CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0phdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0KaW5kZXggZmY4MzBk
MDIzZjA2NjM1YTc5ZDY3NWIyODQ0Zjc1NzEwMzMzMTc4Ny4uNDRmNjAyNGI4YWJmZWNlYWM0ZDFk
MTE0YjQxZWVlYzJiNGQ0ZTQzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0KQEAgLTYwLDcgKzYwLDcgQEAg
LSAodm9pZClfd2ViVmlld1J1bk1vZGFsOihXS1dlYlZpZXcgKil3ZWJWaWV3CiAKIC0gKG51bGxh
YmxlIFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmll
d1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
biBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0
aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKIHsK
LSAgICBjcmVhdGVkV2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSBhdXRvcmVsZWFzZV07CisgICAgY3JlYXRlZFdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbY3JlYXRlZFdlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpzZWxmXTsKIAogICAgIG5hdkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tCmluZGV4IDVkYWYxNDU2NzhjNGQy
YTk4YmJiMDQ4NzM0Y2VjMzE3NTQ4MWEyMmMuLmM4OGZkNTJiNmI2Mjg5YWYyM2M0YjA4MThiZjJh
NDM1ZDkzMzRkNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xl
Z2FjeURyYWdBbmREcm9wVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbQpAQCAtNDUsNyArNDUsNyBAQCBAaW1wbGVtZW50
YXRpb24gRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyCiAKICsgKGluc3RhbmNldHlwZSlsaXN0
ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2Nr
CiB7Ci0gICAgcmV0dXJuIFtbW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBhbGxvY10gaW5p
dFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoQ29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja10pLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tf
dCljb21wbGV0aW9uQmxvY2sKQEAgLTIxMiw3ICsyMTIsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIHN0YXRpYyBOU0ltYWdlICpnZXRUZXN0SW1hZ2UoKQogewotICAgIHJldHVybiBb
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBu
ZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIHN0YXRpYyBXZWJWaWV3ICp3ZWJWaWV3QWZ0ZXJQZXJmb3JtaW5nRHJhZ09wZXJh
dGlvbihOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0KaW5kZXggMWQ3YmJkNTE2
YWVlYzk4ZjRmZmEzZjY4ZmExYmQxNTNiNDhhNDQ5ZS4uMDViMjdjZjRlMWQ1YjUwMjQ2M2U5YmJl
NDQ3YmJjNWZmMDdlYWI4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlci5tbQpAQCAtMjUsMTMgKzI1LDE0IEBACiAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVT
VChXZWJLaXRMZWdhY3ksIE1lbW9yeVByZXNzdXJlSGFuZGxlcikKIHsKICAgICBXZWJJbnN0YWxs
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7Ci0gICAgW1tbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAgICAgLy8gVGhp
cyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBhc3NlcnQuCiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5t
bQppbmRleCBiZDIyNTE2MzY0OTE1NDEwMmQ3Yjc4OGEwMjhhMTQ4MDgwYzNkNDhjLi44MDMxM2E3
MDVmZTU5ZjJiYmFlNTFhZTBmNzlhMmUyODVmNDdhYmRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9XS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tCkBA
IC0xMjYsMTQgKzEyNiwxNCBAQCBURVNUKFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cywgRG9Ob3RD
cmFzaFdoZW5JbnRlcnByZXRpbmdLZXlFdmVudFdoaWxlRGVhbGxvY2F0aQogICAgIF9fYmxvY2sg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBT
bG93SW5wdXRXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbU2xvd0lucHV0V2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0gYXV0b3JlbGVhc2VdOworICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbU2xvd0lucHV0V2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOwogICAgICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8Ym9keSBjb250ZW50ZWRpdGFibGU+SGVsbG8gd29ybGQ8L2JvZHk+Il1dOwogICAgICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5mb2N1
cygpIl07CiAgICAgICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
ICAgICAgICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgIFt3ZWJWaWV3
IHR5cGVDaGFyYWN0ZXI6J2EnXTsKIAotICAgICAgICB3ZWJWaWV3Ll93ZWJfc3VwZXJJbnB1dENv
bnRleHQuaGFuZGxlZElucHV0TWV0aG9kRXZlbnRCbG9jayA9IF4oKSB7CisgICAgICAgIHdlYlZp
ZXcuZ2V0KCkuX3dlYl9zdXBlcklucHV0Q29udGV4dC5oYW5kbGVkSW5wdXRNZXRob2RFdmVudEJs
b2NrID0gXigpIHsKICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0ljb25M
b2FkaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0ljb25Mb2Fk
aW5nLm1tCmluZGV4IDM0OGQ1NThlMTA3YTIzZjE3ODBlYjA3YjViN2EwMjgxOWIzNTdlZDEuLjg5
Y2Y5OGIwMDk1OTg3YmYwYzdjNDIxZWU5OTJiNThiY2U0YjE4ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdJY29uTG9hZGluZy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XZWJWaWV3SWNvbkxvYWRpbmcubW0KQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIE5TRGF0YSAqY3VzdG9tRmF2aWNvbkRhdGEoKQogCiBzdGF0aWMgTlNJ
bWFnZSAqaW1hZ2VGcm9tRGF0YShOU0RhdGEgKmRhdGEpCiB7Ci0gICAgYXV0byAqaW1hZ2UgPSBb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXTsKKyAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSk7CiAKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk
ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIE5TSW1hZ2Ug
KmltYWdlRnJvbURhdGEoTlNEYXRhICpkYXRhKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAogICAgIFtpbWFnZSBzZXRTaXplOk5TTWFrZVNpemUoMTYsIDE2KV07CiAKLSAgICByZXR1cm4g
W2ltYWdlIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gaW1hZ2UuYXV0b3JlbGVhc2UoKTsKIH0K
IAogQGludGVyZmFjZSBJY29uTG9hZGluZ1Byb3RvY29sIDogTlNVUkxQcm90b2NvbApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90b2NvbC5tbQppbmRleCBhZmQ2ZGRjOWI3ZTkyMmZi
NjdjYWI3OWI2MGM5MDc1MDA5MWRhODMyLi4yMTNhN2Y5OTc1M2YyYTkzYjQ0YzYxOGNhZWQyZWU0
NGM3MjdjZTIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90
b2NvbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQcm90b2NvbC5tbQpA
QCAtNzYsMTcgKzc2LDIwIEBAICsgKHZvaWQpdW5yZWdpc3RlcgogICAgIHRlc3RTY2hlbWUoKSA9
IG5pbDsKIH0KIAotc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAq
YWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKK3N0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
PE5TU3RyaW5nICosIE5TU3RyaW5nICo+PiYgYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVycygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTlNTdHJpbmcgKj4+PiBfYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKKyAgICByZXR1
cm4gX2FkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnM7Cit9CiAKICsgKE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqKWFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMKIHsKLSAgICBy
ZXR1cm4gYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKKyAgICByZXR1cm4gYWRkaXRpb25hbFJl
c3BvbnNlSGVhZGVycygpLmdldCgpOwogfQogCiArICh2b2lkKXNldEFkZGl0aW9uYWxSZXNwb25z
ZUhlYWRlcnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWFkZGl0aW9u
YWxIZWFkZXJzCiB7Ci0gICAgW2FkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMgYXV0b3JlbGVhc2Vd
OwotICAgIGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMgPSBbYWRkaXRpb25hbEhlYWRlcnMgY29w
eV07CisgICAgYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVycygpID0gYWRvcHROUyhbYWRkaXRpb25h
bEhlYWRlcnMgY29weV0pOwogfQogCiBzdGF0aWMgTlNVUkwgKmNyZWF0ZVJlZGlyZWN0VVJMKE5T
U3RyaW5nICpxdWVyeSkKQEAgLTEzNiw4ICsxMzksOCBAQCAtICh2b2lkKXN0YXJ0TG9hZGluZwog
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3BvbnNlSGVhZGVycyA9IFtOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6Ml07CiAgICAgcmVzcG9uc2VIZWFkZXJzW0Ai
Q29udGVudC1UeXBlIl0gPSBjb250ZW50VHlwZTsKICAgICByZXNwb25zZUhlYWRlcnNbQCJDb250
ZW50LUxlbmd0aCJdID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIldHUiLCBkYXRhLmxl
bmd0aF07Ci0gICAgaWYgKGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnMpCi0gICAgICAgIFtyZXNw
b25zZUhlYWRlcnMgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmFkZGl0aW9uYWxSZXNwb25zZUhl
YWRlcnNdOworICAgIGlmIChhdXRvJiBoZWFkZXJzID0gYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVy
cygpKQorICAgICAgICBbcmVzcG9uc2VIZWFkZXJzIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpo
ZWFkZXJzLmdldCgpXTsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3RVUkwgc3RhdHVzQ29kZToyMDAgSFRU
UFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOnJlc3BvbnNlSGVhZGVyc10pOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggODcxMzc5MGJh
NzhiMDgwNWFjOGNiODMyMzQ0ZDY3YzM4YzkxYjc4Mi4uMzRhNDY0MDljMTIyZWM3ZmEyYTY4NmVi
YWRmOTUxMTlhOGJhNTJhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQpAQCAtMjAzLDE2ICsyMDMsMTYgQEAgLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNG
dW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXIKICAg
ICAgICAgKmVycm9yT3V0ID0gbmlsOwogCiAgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0Owor
ICAgIFJldGFpblB0cjxOU0Vycm9yPiBzdHJvbmdFcnJvcjsKICAgICBbc2VsZiBjYWxsQXN5bmNK
YXZhU2NyaXB0OnNjcmlwdCBhcmd1bWVudHM6YXJndW1lbnRzIGluRnJhbWU6bmlsIGluQ29udGVu
dFdvcmxkOldLQ29udGVudFdvcmxkLnBhZ2VXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlk
IHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsK
LSAgICAgICAgaWYgKGVycm9yT3V0KQotICAgICAgICAgICAgKmVycm9yT3V0ID0gW2Vycm9yIHJl
dGFpbl07CisgICAgICAgIHN0cm9uZ0Vycm9yID0gZXJyb3I7CiAgICAgICAgIGlzV2FpdGluZ0Zv
ckphdmFTY3JpcHQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CiAKICAgICBpZiAoZXJyb3JPdXQpCi0gICAgICAg
IFsqZXJyb3JPdXQgYXV0b3JlbGVhc2VdOworICAgICAgICAqZXJyb3JPdXQgPSBzdHJvbmdFcnJv
ci5hdXRvcmVsZWFzZSgpOwogCiAgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsK
IH0KQEAgLTQxNiw4ICs0MTYsOCBAQCBAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyB7CiAK
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKIHsKLSAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpkZWZhdWx0Q29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gW3NlbGYg
aW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmRlZmF1bHRDb25maWd1cmF0aW9uXTsK
KyAgICBhdXRvIGRlZmF1bHRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpm
cmFtZSBjb25maWd1cmF0aW9uOmRlZmF1bHRDb25maWd1cmF0aW9uLmdldCgpXTsKIH0KIAogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihX
S1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgpAQCAtNDU0LDcgKzQ1NCw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOihfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gKilwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24KIHsKLSAgICBbY29uZmlndXJhdGlv
biBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25dKS5nZXQoKV07
CiAgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJh
Z0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5k
RHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCAyNzFlNjVjM2VmNzY3ZDVkNjJmZjU1NzA0ODFjNmRm
NzA1MjgzYzE1Li5lMDQ5OTVkNDMzNzE2MTIyODk0NmQ0NzI5OWUzZDZmZWQ3MmMwZTU0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5t
bQpAQCAtMTczLDcgKzE3Myw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3ZpZGVyczoo
TlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqKXByb3ZpZGVycyBsb2NhdGlvCiB7CiAgICAgYXV0
byBpdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZv
ciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBwcm92aWRlcnMpCi0gICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6W1tbVUlEcmFnSXRlbSBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6
aXRlbVByb3ZpZGVyXSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFk
b3B0TlMoW1tVSURyYWdJdGVtIGFsbG9jXSBpbml0V2l0aEl0ZW1Qcm92aWRlcjppdGVtUHJvdmlk
ZXJdKS5nZXQoKV07CiAKICAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoSXRlbXM6aXRlbXMuZ2V0
KCkgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyB3aW5kb3c6d2luZG93IGFsbG93TW92ZTphbGxv
d01vdmVdOwogfQpAQCAtMzQ0LDkgKzM0NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdl
YlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3
RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICopY29uZmlndXJhdGlvbgogewogICAgIGlmIChjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OltbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV1dOwor
ICAgICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OmFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pLmdldCgpXTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6W1tbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0gYXV0b3JlbGVhc2VdXTsKKyAgICBy
ZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWJWaWV3OmFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOmZyYW1lXSkuZ2V0KCldOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldwpAQCAtODkyLDcgKzg5Miw3IEBA
IC0gKFVJRHJvcFByb3Bvc2FsICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFVw
ZGF0ZURyb3BQcm9wb3NhbFRvUHJvcG9zCiAgICAgaWYgKCFzZWxmLm92ZXJyaWRlRHJhZ1VwZGF0
ZUJsb2NrKQogICAgICAgICByZXR1cm4gcHJvcG9zYWw7CiAKLSAgICByZXR1cm4gW1tbVUlEcm9w
UHJvcG9zYWwgYWxsb2NdIGluaXRXaXRoRHJvcE9wZXJhdGlvbjpzZWxmLm92ZXJyaWRlRHJhZ1Vw
ZGF0ZUJsb2NrKHByb3Bvc2FsLm9wZXJhdGlvbiwgc2Vzc2lvbildIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW1VJRHJvcFByb3Bvc2FsIGFsbG9jXSBpbml0V2l0aERyb3BPcGVy
YXRpb246c2VsZi5vdmVycmlkZURyYWdVcGRhdGVCbG9jayhwcm9wb3NhbC5vcGVyYXRpb24sIHNl
c3Npb24pXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0
ZW1Qcm92aWRlcjooTlNJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIgcmVwcmVzZW50aW5nT2Jq
ZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGlj
dGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFj
L0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tCmluZGV4IDRiNDgzOGVkYzg4MDIxNmRmOWRjZWI0
OGYyN2MwNjI1YjAxZThlNzcuLjc4NGVjZjUzZmNhMjAwOThkOGE0Yzc3YmZjZDAzNjRhMTAwOWIy
MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxh
dG9yTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxh
dG9yTWFjLm1tCkBAIC03Niw5ICs3Niw5IEBAIEBlbmQKIGNvbnN0IGRvdWJsZSBpbml0aWFsTW91
c2VEcmFnRGlzdGFuY2UgPSA0NTsKIGNvbnN0IGRvdWJsZSBkcmFnVXBkYXRlUHJvZ3Jlc3NJbmNy
ZW1lbnQgPSAwLjA1OwogCi1zdGF0aWMgTlNJbWFnZSAqZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdl
KCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNJbWFnZT4gZGVmYXVsdEV4dGVybmFsRHJhZ0ltYWdlKCkK
IHsKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRoRXh0ZW5zaW9u
OkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRl
bnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdp
dGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKQEAgLTEx
MSw3ICsxMTEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3RnJhbWU6KENHUmVj
dClmcmFtZQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJh
bWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24K
IHsKICAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewotICAgICAgICBfd2ViVmlldyA9IGFk
b3B0TlMoW1tEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJh
bWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uID86IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXSBzaW11bGF0b3I6c2VsZl0pOworICAgICAgICBf
d2ViVmlldyA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFRlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uID86IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuZ2V0KCkgc2ltdWxhdG9yOnNlbGZd
KTsKICAgICAgICAgX2ZpbGVQcm9taXNlRGVzdGluYXRpb25VUkxzID0gYWRvcHROUyhbTlNNdXRh
YmxlQXJyYXkgbmV3XSk7CiAgICAgICAgIFtfd2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwog
ICAgICAgICBzZWxmLmRyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKQEAgLTE2Miw4ICsxNjIsOCBA
QCAtICh2b2lkKXJ1bkZyb206KENHUG9pbnQpZmxpcHBlZFN0YXJ0TG9jYXRpb24gdG86KENHUG9p
bnQpZmxpcHBlZEVuZExvY2F0aW9uCiAKICAgICBpZiAoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJk
ID0gc2VsZi5leHRlcm5hbERyYWdQYXN0ZWJvYXJkKSB7CiAgICAgICAgIE5TUG9pbnQgc3RhcnRM
b2NhdGlvbkluVmlldyA9IFtfd2ViVmlldyBjb252ZXJ0UG9pbnQ6X3N0YXJ0TG9jYXRpb25Jbldp
bmRvdyBmcm9tVmlldzpuaWxdOwotICAgICAgICBOU0ltYWdlICpkcmFnSW1hZ2UgPSBzZWxmLmV4
dGVybmFsRHJhZ0ltYWdlID86IGRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSgpOwotICAgICAgICBb
c2VsZiBwZXJmb3JtRHJhZ0luV2ViVmlldzpfd2ViVmlldy5nZXQoKSBhdExvY2F0aW9uOnN0YXJ0
TG9jYXRpb25JblZpZXcgd2l0aEltYWdlOmRyYWdJbWFnZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQg
c291cmNlOm5pbF07CisgICAgICAgIGF1dG8gZHJhZ0ltYWdlID0gIXNlbGYuZXh0ZXJuYWxEcmFn
SW1hZ2UgPyBkZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKTogbmlsOworICAgICAgICBbc2VsZiBw
ZXJmb3JtRHJhZ0luV2ViVmlldzpfd2ViVmlldy5nZXQoKSBhdExvY2F0aW9uOnN0YXJ0TG9jYXRp
b25JblZpZXcgd2l0aEltYWdlOmRyYWdJbWFnZS5nZXQoKSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQg
c291cmNlOm5pbF07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX2RvbmVXYWl0
aW5nRm9yRHJvcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBlZmRhZjhjNTJlODliZWI3YzMxOTZiZjZjOGZj
ZWZmNmE2YjBlYmEzLi40NDI0ZDkyOTIxNDljMWUyYTZlNDRlNDY0OTBjNTFhYjU5YmFhYWI1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE5MjcsNyAr
MTkyNyw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRlCiAKIHN0YXRpYyBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gY3JlYXRlSlNTdHJpbmdSZWYoaWQgc3RyaW5nKQogewotICAgIGlkIG11dGFi
bGVTdHJpbmcgPSBbW1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIG11dGFibGVTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU3RyaW5nIGFsbG9j
XSBpbml0XSk7CiAgICAgaWQgYXR0cmlidXRlcyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5kZXg6
MCBlZmZlY3RpdmVSYW5nZTpuaWxdOwogICAgIGlkIGF0dHJpYnV0ZUVudW1lcmF0aW9uQmxvY2sg
PSBeKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKmF0dHJzLCBOU1JhbmdlIHJhbmdlLCBC
T09MICpzdG9wKSB7CiAgICAgICAgIEJPT0wgbWlzc3BlbGxlZCA9IFtbYXR0cnMgb2JqZWN0Rm9y
S2V5Ok5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlXSBib29sVmFsdWVdOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDY1YjE4ZDM3OTRiZDIwM2Q2ZThmNTgyZjY5ZmZmMTY5MDcwY2M0MTMuLmNlMzZm
YmEyZDRiYjE1MWY4NzllMzFhMTU0MmQ0ZDA2ZTllMjlkZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTEzMiwxNiAr
MTMyLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFTdG9y
ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUCiAgICAgYm9vbCB1c2VFcGhlbWVyYWxT
ZXNzaW9uID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgYXV0byBzdGFuZGFs
b25lV2ViQXBwbGljYXRpb25VUkwgPSBvcHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVS
TCgpOwogICAgIGlmICh1c2VFcGhlbWVyYWxTZXNzaW9uIHx8IHN0YW5kYWxvbmVXZWJBcHBsaWNh
dGlvblVSTC5sZW5ndGgoKSB8fCBvcHRpb25zLmVuYWJsZUluQXBwQnJvd3NlclByaXZhY3koKSkg
ewotICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWcgPSB1c2VFcGhlbWVyYWxTZXNz
aW9uID8gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25Q
ZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdIDogW1tbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0
byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnID0gdXNlRXBoZW1lcmFsU2Vzc2lvbiA/IGFkb3B0TlMo
W1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3Rl
bnRDb25maWd1cmF0aW9uXSkgOiBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICAgICAgaWYgKCF1c2VFcGhlbWVyYWxTZXNzaW9uKQot
ICAgICAgICAgICAgY29uZmlndXJlV2Vic2l0ZURhdGFTdG9yZVRlbXBvcmFyeURpcmVjdG9yaWVz
KChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmKXdlYnNpdGVEYXRhU3RvcmVDb25m
aWcpOworICAgICAgICAgICAgY29uZmlndXJlV2Vic2l0ZURhdGFTdG9yZVRlbXBvcmFyeURpcmVj
dG9yaWVzKChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmKXdlYnNpdGVEYXRhU3Rv
cmVDb25maWcuZ2V0KCkpOwogICAgICAgICBpZiAoc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJM
Lmxlbmd0aCgpKQogICAgICAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmVDb25maWcgc2V0U3RhbmRh
bG9uZUFwcGxpY2F0aW9uVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoVVRGOFN0cmluZzpzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwuY19zdHIoKV1dXTsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5KCkpCiAgICAgICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyBzZXRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZzpZRVNdOwogI2VuZGlmCi0gICAgICAg
IG1fd2Vic2l0ZURhdGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRhU3RvcmVSZWYpW1tb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVE
YXRhU3RvcmVDb25maWddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
ID0gKF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilhZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWcuZ2V0KCldKS5nZXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
ID0gKF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlOwogfQpAQCAtMTkxLDExICsxOTEsMTEgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYs
IGNvbnN0IFRlc3RPcHQKIAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpuZXdDb25maWd1cmF0aW9uID0gW1tnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgbmV3Q29uZmlndXJhdGlvbi5fcmVsYXRl
ZFdlYlZpZXcgPSBzdGF0aWNfY2FzdDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZp
ZXcoKSk7Ci0gICAgaWYgKG5ld0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3KQotICAgICAg
ICBuZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBuZXdDb25maWd1cmF0aW9uLl9y
ZWxhdGVkV2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7Ci0gICAgUGxhdGZv
cm1XZWJWaWV3KiB2aWV3ID0gbmV3IFBsYXRmb3JtV2ViVmlldyhuZXdDb25maWd1cmF0aW9uLCBv
cHRpb25zKTsKKyAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbiBjb3B5XSk7CisgICAgW25ld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0
ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmll
dygpKV07CisgICAgaWYgKFtuZXdDb25maWd1cmF0aW9uIF9yZWxhdGVkV2ViVmlld10pCisgICAg
ICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W25ld0NvbmZpZ3VyYXRp
b24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmVdOworICAg
IFBsYXRmb3JtV2ViVmlldyogdmlldyA9IG5ldyBQbGF0Zm9ybVdlYlZpZXcobmV3Q29uZmlndXJh
dGlvbi5nZXQoKSwgb3B0aW9ucyk7CiAgICAgZmluaXNoQ3JlYXRpbmdQbGF0Zm9ybVdlYlZpZXco
dmlldywgb3B0aW9ucyk7CiAgICAgcmV0dXJuIHZpZXc7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4IGZmZmIxOTA0NGMwMjUyODE0
M2RiNTRjMTM1NjMzOWE4MmQ3ZDdiNGMuLjEyYjM1NjE3MzJhN2U0MzNlMzcwMjdmMTMyZWY0M2Q4
MWY5MDBkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50
R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2Vu
ZXJhdG9yLm1tCkBAIC0xMTQzLDEyICsxMTQzLDEyIEBAIC0gKHZvaWQpc2VuZEV2ZW50U3RyZWFt
OihOU0RpY3Rpb25hcnkgKilldmVudEluZm8gY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lk
CiAgICAgfQogICAgIAogICAgIE5TRGljdGlvbmFyeSogdGhyZWFkRGF0YSA9IEB7Ci0gICAgICAg
IEAiZXZlbnRJbmZvIjogW1tldmVudEluZm8gY29weV0gYXV0b3JlbGVhc2VdLAotICAgICAgICBA
ImNvbXBsZXRpb25CbG9jayI6IFtbY29tcGxldGlvbkJsb2NrIGNvcHldIGF1dG9yZWxlYXNlXQor
ICAgICAgICBAImV2ZW50SW5mbyI6IGFkb3B0TlMoW2V2ZW50SW5mbyBjb3B5XSkuZ2V0KCksCisg
ICAgICAgIEAiY29tcGxldGlvbkJsb2NrIjogYWRvcHROUyhbY29tcGxldGlvbkJsb2NrIGNvcHld
KS5nZXQoKQogICAgIH07CiAgICAgCi0gICAgTlNUaHJlYWQgKmV2ZW50RGlzcGF0Y2hUaHJlYWQg
PSBbW1tOU1RocmVhZCBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoZXZlbnREaXNwYXRjaFRocmVhZEVudHJ5Oikgb2JqZWN0OnRocmVhZERhdGFdIGF1dG9yZWxl
YXNlXTsKLSAgICBldmVudERpc3BhdGNoVGhyZWFkLnF1YWxpdHlPZlNlcnZpY2UgPSBOU1F1YWxp
dHlPZlNlcnZpY2VVc2VySW50ZXJhY3RpdmU7CisgICAgYXV0byBldmVudERpc3BhdGNoVGhyZWFk
ID0gYWRvcHROUyhbW05TVGhyZWFkIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihldmVudERpc3BhdGNoVGhyZWFkRW50cnk6KSBvYmplY3Q6dGhyZWFkRGF0YV0p
OworICAgIFtldmVudERpc3BhdGNoVGhyZWFkIHNldFF1YWxpdHlPZlNlcnZpY2U6TlNRdWFsaXR5
T2ZTZXJ2aWNlVXNlckludGVyYWN0aXZlXTsKICAgICBbZXZlbnREaXNwYXRjaFRocmVhZCBzdGFy
dF07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420779</attachid>
            <date>2021-02-17 18:22:48 -0800</date>
            <delta_ts>2021-02-17 21:06:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222060-20210217182247.patch</filename>
            <type>text/plain</type>
            <size>465665</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmNzNkMTBmOWRlYjRhYjIw
NDMzNWNjNmUwZmUzMTc3MjU0ZWQ4ZTIuLjJhMjQzYjcxODBmNWY4YzE2NDNmNGVlNGRmODE2ZTRk
ZWNjNDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ug
b2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBldmVuIGZ1cnRoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjA2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBv
ZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGZ1cnRoZXIgYnkgdXNpbmcgUmV0YWluUHRy
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpNb2NrTmZjU2VydmljZTo6dHJhbnNjZWl2ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291
cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgICgtW1dLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlciBnZXN0dXJlUmVjb2du
aXplckZvckludGVyYWN0aXZlVHJhbnNpdGlvbjpXaXRoVGFyZ2V0OmFjdGlvbjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgIChh
cHBMaW5rRm9yVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKGVuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZTpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjb250aW51ZUNvbnRl
eHRNZW51SW50ZXJhY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RhdGFGb3JQ
cmV2aWV3SXRlbUNvbnRyb2xsZXI6YXRQb3NpdGlvbjp0eXBlOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQ
cmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICgrW1dLVGV4dFJhbmdlIHRleHRSYW5n
ZVdpdGhTdGF0ZTppc1JhbmdlOmlzRWRpdGFibGU6c3RhcnRSZWN0OmVuZFJlY3Q6c2VsZWN0aW9u
UmVjdHM6c2VsZWN0ZWRUZXh0TGVuZ3RoOl0pOgorICAgICAgICAoK1tXS1RleHRQb3NpdGlvbiB0
ZXh0UG9zaXRpb25XaXRoUmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBs
YWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRlciByZWN0c10pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbToKKyAgICAgICAgKC1bV0tXZWJFdmVu
dCBpbml0V2l0aEV2ZW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNQb3BvdmVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRpb25UeXBlOl0pOgorICAg
ICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciB0YWJsZVZpZXc6Y2Vs
bEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tE
YXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRGF0ZVBpY2tlclZpZXdD
b250cm9sbGVyIF9kYXRlQ29tcG9uZW50Rm9yRGF5Om1vbnRoOnllYXI6ZXJhOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tOgorICAgICAgICAo
LVtXS09wdGlvblBpY2tlckNlbGwgaW5pdFdpdGhPcHRpb25JdGVtOl0pOgorICAgICAgICAoLVtX
S09wdGlvbkdyb3VwUGlja2VyQ2VsbCBpbml0V2l0aE9wdGlvbkl0ZW06XSk6CisgICAgICAgICgt
W1dLTXVsdGlwbGVTZWxlY3RQaWNrZXIgcGlja2VyVmlldzp2aWV3Rm9yUm93OmZvckNvbXBvbmVu
dDpyZXVzaW5nVmlldzpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RTaW5nbGVQaWNrZXIgcGlja2Vy
VmlldzphdHRyaWJ1dGVkVGl0bGVGb3JSb3c6Zm9yQ29tcG9uZW50Ol0pOgorICAgICAgICAoLVtX
S1NlbGVjdFBpY2tlclRhYmxlVmlld0NvbnRyb2xsZXIgdGFibGVWaWV3OnZpZXdGb3JIZWFkZXJJ
blNlY3Rpb246XSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyVGFibGVWaWV3Q29udHJvbGxl
ciB0YWJsZVZpZXc6Y2VsbEZvclJvd0F0SW5kZXhQYXRoOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbToKKyAgICAgICAgKC1bV0tTZWxlY3RU
YWJsZVZpZXdDb250cm9sbGVyIHRhYmxlVmlldzpjZWxsRm9yUm93QXRJbmRleFBhdGg6XSk6Cisg
ICAgICAgICgtW1dLU2VsZWN0UG9wb3ZlciBpbml0V2l0aFZpZXc6aGFzR3JvdXBzOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tOgorICAgICAgICAo
LVtXS051bWJlclBhZFZpZXcgX2J1dHRvbkZvclBvc2l0aW9uOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlciBfaGFuZGxlS2V5UHJlc3M6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW06Cisg
ICAgICAgICgtW1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciBhY3Rpb25Db250cm9sbGVy
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgZW50
ZXJUZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIGVudGVyRnVsbFNjcmVlbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
VGV4dElucHV0UGFuZWwgX2ludGVycHJldEtleUV2ZW50OnVzaW5nTGVnYWN5Q29jb2FUZXh0SW5w
dXQ6c3RyaW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3RyYXRl
Z3kubW06CisgICAgICAgICgrW1dLVmlld0xheW91dFN0cmF0ZWd5IGxheW91dFN0cmF0ZWd5V2l0
aFBhZ2U6dmlldzp2aWV3SW1wbDptb2RlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29sb3JQaWNrZXJNYWMubW06CisgICAgICAgICgtW1dLQ29sb3JQb3BvdmVyTWFjIHNldEFuZFNo
b3dQaWNrZXI6d2l0aENvbG9yOnN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tOgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzpyb3dWaWV3Rm9yUm93Ol0pOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIHRhYmxlVmlldzp2aWV3
Rm9yVGFibGVDb2x1bW46cm93Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZSBfY2VydGlmaWNhdGVDaGFpbl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVyZWRJ
bWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtXS0RPTURvY3VtZW50
IHBhcnNlcllpZWxkVG9rZW5dKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJLaXQ6OnRvV0tET01UeXBl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5n
ZS5tbToKKyAgICAgICAgKC1bV0tET01SYW5nZSByYW5nZUJ5RXhwYW5kaW5nVG9Xb3JkQm91bmRh
cnlCeUNoYXJhY3RlcnM6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToK
KwogMjAyMS0wMi0xNyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBTUEkgdG8gYWxsb3cgYXBwcyB0byBpbml0aWF0ZSBoaWdobGlnaHQgY3Jl
YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggZmI3NGUxN2JkZjA3YWNlMTFj
MjM5ZGZmNDU1ZTBiYzBhZTYxNDM3ZC4uMDczNGMzNWZhNTA3NjU2NjgzZWFjYTQ1OTc2NmU2Yjg5
OWJkNGFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIxLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBm
dXJ0aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjIwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWR1
Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBmdXJ0aGVy
IGJ5IHVzaW5nIFJldGFpblB0ci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVj
dGlvblJlY3QubToKKyAgICAgICAgKCtbV2ViU2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0XSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfY2hl
Y2tQREZUaXRsZV0pOgorCiAyMDIxLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIHJlbGVhc2VdIGlu
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg2ODUxZjQ0MDE1NTlmMmNl
ZGQxNDUwOTA0ODMyNGJmNzczNmEwZDguLmNiM2EzMTNhZGIwODcyNWZiMDM2MWRjOGUxMTkyNzNh
ZDM5ODZlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODkgQEAK
KzIwMjEtMDItMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBldmVu
IGZ1cnRoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJl
ZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGZ1cnRo
ZXIgYnkgdXNpbmcgUmV0YWluUHRyLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAg
KGtpdCk6CisgICAgICAgICogRE9NL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAgICAgKGtpdCk6
CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERP
TS9ET01DU1NSdWxlLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ1NTUnVs
ZUxpc3QubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01DU1NTdHlsZURlY2xh
cmF0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NQ1NTVmFsdWUubW06
CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01Db3VudGVyLm1tOgorICAgICAgICAo
a2l0KToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgIChraXQpOgorICAgICAg
ICAqIERPTS9ET01GaWxlTGlzdC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RP
TUhUTUxDb2xsZWN0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9N
SW1wbGVtZW50YXRpb24ubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01NZWRp
YUVycm9yLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTWVkaWFMaXN0Lm1t
OgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTmFtZWROb2RlTWFwLm1tOgorICAg
ICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NTm9kZS5tbToKKyAgICAgICAgKGtpdCk6Cisg
ICAgICAgICogRE9NL0RPTU5vZGVJdGVyYXRvci5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAg
ICogRE9NL0RPTU5vZGVMaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9N
UkdCQ29sb3IubW06CisgICAgICAgIChraXQpOgorICAgICAgICAqIERPTS9ET01SYW5nZS5tbToK
KyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVJlY3QubW06CisgICAgICAgIChraXQp
OgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAg
ICAgKiBET00vRE9NU3R5bGVTaGVldExpc3QubW06CisgICAgICAgIChraXQpOgorICAgICAgICAq
IERPTS9ET01UaW1lUmFuZ2VzLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9N
VG9rZW5MaXN0Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NVHJlZVdhbGtl
ci5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICogRE9NL0RPTVhQYXRoLm1tOgorICAgICAg
ICAoa2l0KToKKyAgICAgICAgKiBET00vRE9NWFBhdGhFeHByZXNzaW9uLm1tOgorICAgICAgICAo
a2l0KToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgIChraXQpOgor
ICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtET01Ob2RlIHdl
YkFyY2hpdmVdKToKKyAgICAgICAgKC1bRE9NTm9kZSB3ZWJBcmNoaXZlQnlGaWx0ZXJpbmdTdWJm
cmFtZXM6XSk6CisgICAgICAgICgtW0RPTVJhbmdlIHdlYkFyY2hpdmVdKToKKyAgICAgICAgKiBE
ZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSBtZW51SXRlbVdpdGhUYWc6dGFyZ2V0OnJlcHJlc2Vu
dGVkT2JqZWN0Ol0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tOgor
ICAgICAgICAoa2l0KToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IGFkZEl0ZW06XSk6
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBiYWNrSXRlbV0pOgorICAgICAgICAoLVtX
ZWJCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKToKKyAgICAgICAgKC1bV2ViQmFja0Zvcndh
cmRMaXN0IGZvcndhcmRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpdGVt
QXRJbmRleDpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgt
W1dlYkhpc3RvcnlQcml2YXRlIGRhdGFdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgKCtbV2ViSGlzdG9yeUl0ZW0gZW50cnlX
aXRoVVJMOl0pOgorICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW06CisgICAg
ICAgICgtW05TU3RyaW5nIF93ZWJraXRfc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2VdKToKKyAg
ICAgICAgKiBNaXNjL1dlYk5TRGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNEYXRhIF93ZWJr
aXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHNdKToKKyAgICAgICAgKiBNaXNjL1dlYk5TT2JqZWN0
RXh0cmFzLm1tOgorICAgICAgICAoLVtXZWJNYWluVGhyZWFkSW52b2tlciBmb3J3YXJkSW52b2Nh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViTWFpblRocmVhZEludm9rZXIgaGFuZGxlRXhjZXB0aW9u
Ol0pOgorICAgICAgICAoK1tOU09iamVjdCBfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZF0pOgor
ICAgICAgICAoLVtOU09iamVjdCBfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZF0pOgorICAgICAg
ICAqIE1pc2MvV2ViTlNVUkxFeHRyYXMubW06CisgICAgICAgICgtW05TVVJMIF93ZWJfb3JpZ2lu
YWxEYXRhQXNTdHJpbmddKToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9ob3N0U3RyaW5nXSk6Cisg
ICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06Cisg
ICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpwbHVnaW5DYW5jZWxs
ZWRDb25uZWN0aW9uRXJyb3IgY29uc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZVBsdWdp
blBhY2thZ2UubW06CisgICAgICAgICgrW1dlYkJhc2VQbHVnaW5QYWNrYWdlIHBsdWdpbldpdGhQ
YXRoOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06Cisg
ICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2VsbGVkQ29ubmVjdGlv
bkVycm9yIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IHNlbmRFdmVudDppc0RyYXdSZWN0
Ol0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW06CisgICAg
ICAgICgrW1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrIGNoZWNrV2l0aFJlcXVlc3Q6dGFyZ2V0OnJl
c3VsdE9iamVjdDpzZWxlY3Rvcjpjb250cm9sbGVyOmNvbnRleHRJbmZvOl0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW06CisgICAgICAgICgtW1dlYlBsdWdpbkRhdGFi
YXNlIF9wbHVnSW5QYXRoc10pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKCtbV2ViVW5kb1N0ZXAgc3RlcFdpdGhVbmRvU3RlcDpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQp
OgorICAgICAgICAobWFrZUZvcm1GaWVsZFZhbHVlc0RpY3Rpb25hcnkpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IgY29uc3QpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQ6ZGVm
YXVsdE1lbnVJdGVtczpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9y
aWdpbi5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAgICAgICgtW1dl
YkFyY2hpdmUgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBfZmlsZVdyYXBwZXJGb3JVUkw6XSk6CisgICAgICAgICgt
W1dlYkRhdGFTb3VyY2Ugd2ViQXJjaGl2ZV0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIG1h
aW5SZXNvdXJjZV0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIHN1YnJlc291cmNlRm9yVVJM
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2su
bW06CisgICAgICAgICgtW1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwg
bGFzdE9yaWVudGF0aW9uXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAg
ICAgKC1bV2ViRnJhbWUgZWxlbWVudEF0UG9pbnQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHBh
cmVudEZyYW1lXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAg
ICgtW1dlYkZyYW1lVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXZWJGcmFtZVZp
ZXcgX3NldEN1c3RvbVNjcm9sbFZpZXdDbGFzczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRv
Y3VtZW50U291cmNlXSk6CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBhdHRyaWJ1
dGVkU3RyaW5nRnJvbTpzdGFydE9mZnNldDp0bzplbmRPZmZzZXQ6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXcgX2V4Y2x1ZGVkRWxl
bWVudHNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbl0pOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyBfcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IHZpZXc6c3RyaW5nRm9yVG9vbFRpcDpwb2ludDp1c2VyRGF0YTpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgcmlnaHRNb3VzZVVwOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtZW51Rm9y
RXZlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBhY2NlcHRzRmlyc3RNb3VzZTpdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgc2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50Ol0pOgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBtb3VzZURvd246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1vdXNlRHJh
Z2dlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbW91c2VVcDpdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcga2V5RG93bjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcga2V5VXA6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGZsYWdzQ2hhbmdlZDpdKToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgX2ZvbnRBdHRyaWJ1dGVzRnJvbUZvbnRQYXN0ZWJvYXJkXSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHBlcmZvcm1LZXlFcXVpdmFsZW50Ol0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyB0ZXh0U3RvcmFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBw
YXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2xl
Z2FjeUF0dHJpYnV0ZWRTdHJpbmdGcm9tOm9mZnNldDp0bzpvZmZzZXQ6XSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IGF0dHJpYnV0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
c2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGVsZW1l
bnRBdFBvaW50OmFsbG93U2hhZG93Q29udGVudDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJOb3RpZmljYXRpb24ubW06CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBvcmln
aW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBE
RlZpZXcgc2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0Ol0pOgorICAgICAgICAoLVtXZWJQ
REZWaWV3IF9zY2FsZWRBdHRyaWJ1dGVkU3RyaW5nOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIF9pbml0V2l0aERhdGE6VVJMOk1J
TUVUeXBlOnRleHRFbmNvZGluZ05hbWU6ZnJhbWVOYW1lOnJlc3BvbnNlOmNvcHlEYXRhOl0pOgor
ICAgICAgICAoLVtXZWJSZXNvdXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl0pOgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZSBfcmVzcG9uc2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNj
cmlwdFdvcmxkLm1tOgorICAgICAgICAoK1tXZWJTY3JpcHRXb3JsZCB3b3JsZF0pOgorICAgICAg
ICAoK1tXZWJTY3JpcHRXb3JsZCBmaW5kT3JDcmVhdGVXb3JsZDpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfbWVudUZvckVsZW1lbnQ6ZGVmYXVsdEl0ZW1zOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9yZWdpc3RlclZpZXdDbGFzczpyZXByZXNlbnRhdGlvbkNsYXNz
OmZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGlzcGxheVVSTF0pOgorICAg
ICAgICAoLVtXZWJWaWV3IHRleHRJdGVyYXRvckZvclJlY3Q6XSk6CisgICAgICAgICgrW1dlYlZp
ZXcgTUlNRVR5cGVzU2hvd25Bc0hUTUxdKToKKwogMjAyMS0wMi0xNyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEludHJvZHVjZSBhIG5l
dyBjb250ZXh0IG1lbnUgaXRlbSB0byBwcmV2aWV3IGltYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmlu
ZGV4IGYxZWZhNDE3MGQ2MzczYjFlZjI3NjU1NjhkZjIxMzliOTYyOGFiYzUuLmI5OTg4ZWNiYzBj
ZDkxMTlmODJkYmI0YmY5ZjhkOTUyNDg5NDcyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTEz
MSw5ICsxMzEsOSBAQCBzdGF0aWMgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc2FmZUJyb3dz
aW5nRGV0YWlsc1RleHQoY29uc3QgVVJMJiB1cmwsIFNTQlNlcgogICAgIGF1dG8gbWFsd2FyZU9y
VW53YW50ZWRTb2Z0d2FyZURldGFpbHMgPSBbJl0gKE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgTlNT
dHJpbmcgKnN0YXR1c1N0cmluZ1RvUmVwbGFjZSwgYm9vbCBjb25maXJtTWFsd2FyZSkgewogICAg
ICAgICBhdXRvIG1hbHdhcmVEZXNjcmlwdGlvbiA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpkZXNjcmlwdGlvbl0pOwogICAgICAgICBy
ZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwgQCIlc2FmZUJyb3dzaW5nUHJvdmlkZXIl
IiwgbG9jYWxpemVkUHJvdmlkZXIocmVzdWx0KSk7Ci0gICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKnN0YXR1c0xpbmsgPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpXRUJfVUlfTlNTVFJJTkcoQCJ0aGUgc3RhdHVzIG9mIOKAnCVzaXRl
JeKAnSIsICJQYXJ0IG9mIG1hbHdhcmUgZGVzY3JpcHRpb24iKV0gYXV0b3JlbGVhc2VdOwotICAg
ICAgICByZXBsYWNlKHN0YXR1c0xpbmssIEAiJXNpdGUlIiwgdXJsLmhvc3QoKS50b1N0cmluZygp
KTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2UobWFsd2FyZURlc2NyaXB0aW9uLmdldCgpLCBz
dGF0dXNTdHJpbmdUb1JlcGxhY2UsIHN0YXR1c0xpbmsuc3RyaW5nLCBtYWx3YXJlRGV0YWlsc1VS
TCh1cmwsIHJlc3VsdCkpOworICAgICAgICBhdXRvIHN0YXR1c0xpbmsgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6V0VCX1VJX05TU1RS
SU5HKEAidGhlIHN0YXR1cyBvZiDigJwlc2l0ZSXigJ0iLCAiUGFydCBvZiBtYWx3YXJlIGRlc2Ny
aXB0aW9uIildKTsKKyAgICAgICAgcmVwbGFjZShzdGF0dXNMaW5rLmdldCgpLCBAIiVzaXRlJSIs
IHVybC5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKG1hbHdh
cmVEZXNjcmlwdGlvbi5nZXQoKSwgc3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBbc3RhdHVzTGluayBz
dHJpbmddLCBtYWx3YXJlRGV0YWlsc1VSTCh1cmwsIHJlc3VsdCkpOwogCiAgICAgICAgIGF1dG8g
aWZZb3VVbmRlcnN0YW5kID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOldFQl9VSV9OU1NUUklORyhAIklmIHlvdSB1bmRlcnN0YW5kIHRo
ZSByaXNrcyBpbnZvbHZlZCwgeW91IGNhbiAldmlzaXQtdGhpcy11bnNhZmUtc2l0ZS1saW5rJS4i
LCAiQWN0aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIildKTsKICAgICAgICAgYWRkTGlu
a0FuZFJlcGxhY2UoaWZZb3VVbmRlcnN0YW5kLmdldCgpLCBAIiV2aXNpdC10aGlzLXVuc2FmZS1z
aXRlLWxpbmslIiwgV0VCX1VJX05TU1RSSU5HKEAidmlzaXQgdGhpcyB1bnNhZmUgd2Vic2l0ZSIs
ICJBY3Rpb24gZnJvbSBzYWZlIGJyb3dzaW5nIHdhcm5pbmciKSwgY29uZmlybU1hbHdhcmUgPyBT
YWZlQnJvd3NpbmdXYXJuaW5nOjpjb25maXJtTWFsd2FyZVNlbnRpbmVsKCkgOiBTYWZlQnJvd3Np
bmdXYXJuaW5nOjp2aXNpdFVuc2FmZVdlYnNpdGVTZW50aW5lbCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZp
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tOZmNTZXJ2aWNlLm1tCmluZGV4IDQyYjljM2NhMjdkYjMzMzk4YmE5YjgzMDY2ZDYyNmYwNWMx
YzUyZjguLmZiOGIxZDU2NDA2ZGEwNDYzMzY1YTdjNGNjM2U0MWJkNzgxMGE1OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05m
Y1NlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMTg4LDkgKzE4OCw5IEBAIE5TRGF0YSogTW9j
a05mY1NlcnZpY2U6OnRyYW5zY2VpdmUoKQogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5w
YXlsb2FkQmFzZTY0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8g
cmVzdWx0ID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzptX2Nv
bmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0WzBdIG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVj
b2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc107CisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9jb25maWd1cmF0
aW9uLm5mYy0+cGF5bG9hZEJhc2U2NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdu
b3JlVW5rbm93bkNoYXJhY3RlcnNdKTsKICAgICBtX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2Fk
QmFzZTY0LnJlbW92ZSgwKTsKLSAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIE1vY2tOZmNTZXJ2aWNlOjpy
ZWNlaXZlU3RvcFBvbGxpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggOGVmMWNlNDEyNzM2YThlZWQz
YzZhYTE2YzAzMmIzM2FkYjliZjRjNy4uMGQzZGE5MmNkNDE1NTA3YThiMTg4OTI0NzMzNjE2N2I4
Yzg1ZDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC0zOTcsMTYgKzM5NywxNiBAQCB2b2lkIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygp
CiAgICAgICAgICAgICBkcmFnSXRlbS5wcmV2aWV3UHJvdmlkZXIgPSBbdGl0bGUgPSByZXRhaW5Q
dHIoKE5TU3RyaW5nICopc291cmNlLmxpbmtUaXRsZSksIHVybCA9IHJldGFpblB0cigoTlNVUkwg
Kilzb3VyY2UubGlua1VSTCksIGNlbnRlciA9IHNvdXJjZS5hZGp1c3RlZE9yaWdpbl0gKCkgLT4g
VUlEcmFnUHJldmlldyAqIHsKICAgICAgICAgICAgICAgICBVSVVSTERyYWdQcmV2aWV3VmlldyAq
cHJldmlld1ZpZXcgPSBbVUlVUkxEcmFnUHJldmlld1ZpZXcgdmlld1dpdGhUaXRsZTp0aXRsZS5n
ZXQoKSBVUkw6dXJsLmdldCgpXTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Vmlldy5jZW50ZXIg
PSBjZW50ZXI7Ci0gICAgICAgICAgICAgICAgVUlEcmFnUHJldmlld1BhcmFtZXRlcnMgKnBhcmFt
ZXRlcnMgPSBbW1tVSURyYWdQcmV2aWV3UGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhUZXh0TGlu
ZVJlY3RzOkBbIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpwcmV2aWV3Vmlldy5ib3VuZHNdIF1d
IGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gW1tbVUlEcmFnUHJldmlldyBh
bGxvY10gaW5pdFdpdGhWaWV3OnByZXZpZXdWaWV3IHBhcmFtZXRlcnM6cGFyYW1ldGVyc10gYXV0
b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMoW1tV
SURyYWdQcmV2aWV3UGFyYW1ldGVycyBhbGxvY10gaW5pdFdpdGhUZXh0TGluZVJlY3RzOkBbIFtO
U1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpwcmV2aWV3Vmlldy5ib3VuZHNdIF1dKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW1VJRHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRoVmll
dzpwcmV2aWV3VmlldyBwYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCldKS5hdXRvcmVsZWFzZSgp
OwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgICAgICBlbHNlIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rp
b246OkNvbG9yKSkgewogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW2lt
YWdlID0gc291cmNlLmltYWdlXSAoKSAtPiBVSURyYWdQcmV2aWV3ICogewotICAgICAgICAgICAg
ICAgIFVJSW1hZ2VWaWV3ICppbWFnZVZpZXcgPSBbW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdp
dGhJbWFnZTppbWFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgICAgIFVJRHJh
Z1ByZXZpZXdQYXJhbWV0ZXJzICpwYXJhbWV0ZXJzID0gW1tbVUlEcmFnUHJldmlld1BhcmFtZXRl
cnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVSZWN0czpAWyBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1Jl
Y3Q6W2ltYWdlVmlldyBib3VuZHNdXSBdXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFtbW1VJRHJhZ1ByZXZpZXcgYWxsb2NdIGluaXRXaXRoVmlldzppbWFnZVZpZXcgcGFy
YW1ldGVyczpwYXJhbWV0ZXJzXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICAgICAgYXV0byBp
bWFnZVZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1h
Z2UuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtb
VUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVSZWN0czpAWyBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W2ltYWdlVmlldyBib3VuZHNdXSBdXSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSURyYWdQcmV2aWV3IGFsbG9jXSBpbml0V2l0aFZp
ZXc6aW1hZ2VWaWV3LmdldCgpIHBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKV0pLmF1dG9yZWxl
YXNlKCk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCmlu
ZGV4IDk3YzE1YzYwMTZjYjczN2YxZTE1ZmIzZmFiZTViOTRjODJmNGNhMTIuLmQxNGRkNGM3MmI4
MWU0NTdmMTZjMGQ5OThkYmY3Mjg0YjI4NWQzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpAQCAtMTIzLDEw
ICsxMjMsMTAgQEAgLSAoVUlQYW5HZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVy
Rm9ySW50ZXJhY3RpdmVUcmFuc2l0aW9uOihfVUlOYXZpZ2EKIHsKICNpZiBIQVZFKFVJX1BBUkFM
TEFYX1RSQU5TSVRJT05fR0VTVFVSRV9SRUNPR05JWkVSKQogQUxMT1dfTkVXX0FQSV9XSVRIT1VU
X0dVQVJEU19CRUdJTgotICAgIF9VSVBhcmFsbGF4VHJhbnNpdGlvblBhbkdlc3R1cmVSZWNvZ25p
emVyICpyZWNvZ25pemVyID0gW1tfVUlQYXJhbGxheFRyYW5zaXRpb25QYW5HZXN0dXJlUmVjb2du
aXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjphY3Rpb25dOworICAgIGF1
dG8gcmVjb2duaXplciA9IGFkb3B0TlMoW1tfVUlQYXJhbGxheFRyYW5zaXRpb25QYW5HZXN0dXJl
UmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjphY3Rpb25dKTsK
IEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAjZWxzZQotICAgIFVJU2NyZWVuRWRn
ZVBhbkdlc3R1cmVSZWNvZ25pemVyICpyZWNvZ25pemVyID0gW1tVSVNjcmVlbkVkZ2VQYW5HZXN0
dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjphY3Rpb25d
OworICAgIGF1dG8gcmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVNjcmVlbkVkZ2VQYW5HZXN0dXJl
UmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6dGFyZ2V0IGFjdGlvbjphY3Rpb25dKTsK
ICNlbmRpZgogICAgIGJvb2wgaXNMVFIgPSBbVUlWaWV3IHVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25Gb3JTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGU6W19nZXN0dXJlUmVjb2duaXplclZpZXcu
Z2V0KCkgc2VtYW50aWNDb250ZW50QXR0cmlidXRlXV0gPT0gVUlVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uTGVmdFRvUmlnaHQ7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAogICAgICAgICBbcmVjb2duaXplciBzZXRFZGdlczppc0xUUiA/
IFVJUmVjdEVkZ2VSaWdodCA6IFVJUmVjdEVkZ2VMZWZ0XTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIHJldHVybiBbcmVjb2duaXplciBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlY29n
bml6ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTClpc05hdmlnYXRpb25Td2lwZUdlc3R1
cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcmVjb2duaXplcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpp
bmRleCBhMjgxMTE4NGU2OGY0Yzk4MWI3ZjEwNTU0YzU3ZThhZDg0NTQ3N2ZmLi4xMzdhZThlZTI2
ZGMwY2E0ZTcxYjJlYmNhMDdiY2IzOTI4YWM5Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtODIsMTYgKzgy
LDE0IEBAIHN0YXRpYyBMU0FwcExpbmsgKmFwcExpbmtGb3JVUkwoTlNVUkwgKnVybCkKICAgICBy
ZXR1cm4gYXBwTGlua3MuZmlyc3RPYmplY3Q7CiAjZWxzZQogICAgIEJpbmFyeVNlbWFwaG9yZSBz
ZW1hcGhvcmU7Ci0gICAgX19ibG9jayBMU0FwcExpbmsgKnN5bmNBcHBMaW5rID0gbmlsOwotICAg
IF9fYmxvY2sgQmluYXJ5U2VtYXBob3JlKiBzZW1hcGhvcmVQdHIgPSAmc2VtYXBob3JlOwotCi0g
ICAgW0xTQXBwTGluayBnZXRBcHBMaW5rV2l0aFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6XihM
U0FwcExpbmsgKmFwcExpbmssIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIHN5bmNBcHBMaW5r
ID0gW2FwcExpbmsgcmV0YWluXTsKLSAgICAgICAgc2VtYXBob3JlUHRyLT5zaWduYWwoKTsKKyAg
ICBSZXRhaW5QdHI8TFNBcHBMaW5rPiBzeW5jQXBwTGluazsKKyAgICBbTFNBcHBMaW5rIGdldEFw
cExpbmtXaXRoVVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpbJnNlbWFwaG9yZSwgJnN5bmNBcHBM
aW5rXShMU0FwcExpbmsgKmFwcExpbmssIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIHN5bmNB
cHBMaW5rID0gcmV0YWluUHRyKGFwcExpbmspOworICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7
CiAgICAgfV07CiAgICAgc2VtYXBob3JlLndhaXQoKTsKIAotICAgIHJldHVybiBbc3luY0FwcExp
bmsgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzeW5jQXBwTGluay5hdXRvcmVsZWFzZSgpOwog
I2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDZkZTYwY2Y1ZjY5ZWU4MTJjZjk5
MmQwOWYyYTlmY2YwYTBkZTNkOGIuLmQ4MjdkMGIwNjk0N2U0OGUxMGEzZTM0Yjc3OTVhOTRkZDcy
NjZlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRpYyBXS0RyYWdT
ZXNzaW9uQ29udGV4dCAqZW5zdXJlTG9jYWxEcmFnU2Vzc2lvbkNvbnRleHQoaWQgPFVJRHJhZ1Nl
c3Npb24+IHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHNl
c3Npb24ubG9jYWxDb250ZXh0ID0gW1tbV0tEcmFnU2Vzc2lvbkNvbnRleHQgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICBzZXNzaW9uLmxvY2FsQ29udGV4dCA9IGFkb3B0TlMoW1tXS0Ry
YWdTZXNzaW9uQ29udGV4dCBhbGxvY10gaW5pdF0pLmdldCgpOwogICAgIHJldHVybiAoV0tEcmFn
U2Vzc2lvbkNvbnRleHQgKilzZXNzaW9uLmxvY2FsQ29udGV4dDsKIH0KIApAQCAtODI4Myw3ICs4
MjgzLDcgQEAgLSAodm9pZClpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZTooQ0dTaXplKXNp
emUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFUKICAgICAgICAgfQogICAgICAgICBXZWJD
b3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlclRvVXNlIHsgKnBsYWNlaG9sZGVyIH07CiAg
ICAgICAgIHBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0ID0gW3N0cm9uZ1NlbGYgY29udmVy
dFJlY3Q6cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgZnJvbVZpZXc6W3N0cm9uZ1NlbGYg
d2ViVmlld11dOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tXS1RleHRQbGFjZWhvbGRl
ciBhbGxvY10gaW5pdFdpdGhFbGVtZW50Q29udGV4dDpwbGFjZWhvbGRlclRvVXNlXSBhdXRvcmVs
ZWFzZV0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5TKFtbV0tUZXh0UGxhY2Vo
b2xkZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJUb1VzZV0pLmdl
dCgpKTsKICAgICB9KTsKIH0KIApAQCAtMTAwMDAsNyArMTAwMDAsNyBAQCAtICh2b2lkKWNvbnRp
bnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZCheKShVSUNvbnRleHRNZW51Q29uZmlndXJh
dGlvbiAqKSljbwogICAgICAgICAgICAgICAgIGlmICghc3Ryb25nU2VsZikKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgICAgIHJldHVybiBbW1tXS0ltYWdl
UHJldmlld1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZSBkZWZh
dWx0QWN0aW9uczpuaWwgZWxlbWVudEluZm86ZWxlbWVudEluZm8uZ2V0KCldIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLSW1hZ2VQcmV2aWV3Vmlld0Nv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOm5p
bCBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgICAg
ICAgICB9OwogCiAgICAgICAgICAgICBjb250aW51ZVdpdGhDb250ZXh0TWVudUNvbmZpZ3VyYXRp
b24oW1VJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25XaXRoSWRlbnRpZmll
cjpuaWwgcHJldmlld1Byb3ZpZGVyOmNvbnRlbnRQcmV2aWV3UHJvdmlkZXIgYWN0aW9uUHJvdmlk
ZXI6YWN0aW9uTWVudVByb3ZpZGVyXSk7CkBAIC0xMDMzMSwxMyArMTAzMzEsMTMgQEAgLSAoTlNE
aWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1D
b250cm9sbGVyICopY29udHIKICAgICAgICAgY2FuU2hvd0xpbmtQcmV2aWV3ID0gTk87CiAgICAg
fQogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGF0YUZvclByZXZpZXcgPSBbW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkYXRhRm9y
UHJldmlldyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAg
ICAgaWYgKGNhblNob3dMaW5rUHJldmlldykgewogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0
ZW1UeXBlTGluazsKICAgICAgICAgaWYgKHVzZUltYWdlVVJMRm9yTGluaykKLSAgICAgICAgICAg
IGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAqKV9wb3NpdGlvbklu
Zm9ybWF0aW9uLmltYWdlVVJMOworICAgICAgICAgICAgZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQ
cmV2aWV3RGF0YUxpbmtdID0gKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2VVUkw7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFM
aW5rXSA9IChOU1VSTCAqKWxpbmtVUkw7CisgICAgICAgICAgICBkYXRhRm9yUHJldmlldy5nZXQo
KVtVSVByZXZpZXdEYXRhTGlua10gPSAoTlNVUkwgKilsaW5rVVJMOwogI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKICAgICAgICAgaWYgKGlzRGF0YURldGVjdG9yTGluaykgewogICAgICAgICAg
ICAgTlNEaWN0aW9uYXJ5ICpjb250ZXh0ID0gbmlsOwpAQCAtMTAzNDcsOSArMTAzNDcsOSBAQCAt
IChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3
SXRlbUNvbnRyb2xsZXIgKiljb250cgogICAgICAgICAgICAgREREZXRlY3Rpb25Db250cm9sbGVy
ICpjb250cm9sbGVyID0gW2dldERERGV0ZWN0aW9uQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQ29u
dHJvbGxlcl07CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKm5ld0NvbnRleHQgPSBuaWw7CiAg
ICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZXh0ZW5kZWRDb250ZXh0
OwotICAgICAgICAgICAgRERSZXN1bHRSZWYgZGRSZXN1bHQgPSBbY29udHJvbGxlciByZXN1bHRG
b3JVUkw6ZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUxpbmtdIGlkZW50aWZpZXI6X3Bvc2l0
aW9uSW5mb3JtYXRpb24uZGF0YURldGVjdG9ySWRlbnRpZmllciBzZWxlY3RlZFRleHQ6W3NlbGYg
c2VsZWN0ZWRUZXh0XSByZXN1bHRzOl9wb3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJl
c3VsdHMuZ2V0KCkgY29udGV4dDpjb250ZXh0IGV4dGVuZGVkQ29udGV4dDombmV3Q29udGV4dF07
CisgICAgICAgICAgICBERFJlc3VsdFJlZiBkZFJlc3VsdCA9IFtjb250cm9sbGVyIHJlc3VsdEZv
clVSTDpkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhTGlua10gaWRlbnRpZmllcjpf
cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDpb
c2VsZiBzZWxlY3RlZFRleHRdIHJlc3VsdHM6X3Bvc2l0aW9uSW5mb3JtYXRpb24uZGF0YURldGVj
dG9yUmVzdWx0cy5nZXQoKSBjb250ZXh0OmNvbnRleHQgZXh0ZW5kZWRDb250ZXh0OiZuZXdDb250
ZXh0XTsKICAgICAgICAgICAgIGlmIChkZFJlc3VsdCkKLSAgICAgICAgICAgICAgICBkYXRhRm9y
UHJldmlld1tVSVByZXZpZXdEYXRhRERSZXN1bHRdID0gKF9fYnJpZGdlIGlkKWRkUmVzdWx0Owor
ICAgICAgICAgICAgICAgIGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFERFJlc3Vs
dF0gPSAoX19icmlkZ2UgaWQpZGRSZXN1bHQ7CiAgICAgICAgICAgICBpZiAoIV9wb3NpdGlvbklu
Zm9ybWF0aW9uLnRleHRCZWZvcmUuaXNFbXB0eSgpIHx8ICFfcG9zaXRpb25JbmZvcm1hdGlvbi50
ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgZXh0ZW5kZWRDb250ZXh0ID0g
YWRvcHROUyhbQHsKICAgICAgICAgICAgICAgICAgICAgZ2V0a0RhdGFEZXRlY3RvcnNMZWFkaW5n
VGV4dCgpIDogX3Bvc2l0aW9uSW5mb3JtYXRpb24udGV4dEJlZm9yZSwKQEAgLTEwMzYxLDEyICsx
MDM2MSwxMiBAQCAtIChOU0RpY3Rpb25hcnkgKilfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxl
cjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cgogICAgICAgICAgICAgICAgIG5ld0Nv
bnRleHQgPSBleHRlbmRlZENvbnRleHQuZ2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAobmV3Q29udGV4dCkKLSAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZp
ZXdEYXRhRERDb250ZXh0XSA9IG5ld0NvbnRleHQ7CisgICAgICAgICAgICAgICAgZGF0YUZvclBy
ZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUREQ29udGV4dF0gPSBuZXdDb250ZXh0OwogICAgICAg
ICB9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIH0gZWxzZSBpZiAoY2Fu
U2hvd0ltYWdlUHJldmlldykgewogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0ZW1UeXBlSW1h
Z2U7Ci0gICAgICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFMaW5rXSA9IChOU1VSTCAq
KV9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlVVJMOworICAgICAgICBkYXRhRm9yUHJldmlldy5n
ZXQoKVtVSVByZXZpZXdEYXRhTGlua10gPSAoTlNVUkwgKilfcG9zaXRpb25JbmZvcm1hdGlvbi5p
bWFnZVVSTDsKICAgICB9IGVsc2UgaWYgKGNhblNob3dBdHRhY2htZW50UHJldmlldykgewogICAg
ICAgICAqdHlwZSA9IFVJUHJldmlld0l0ZW1UeXBlQXR0YWNobWVudDsKICAgICAgICAgYXV0byBl
bGVtZW50ID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdp
dGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlQXR0YWNobWVudCBVUkw6KE5TVVJMICopbGlu
a1VSTCBpbWFnZVVSTDooTlNVUkwgKilfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZVVSTCBsb2Nh
dGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50IHRpdGxlOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6
X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOm5pbF0pOwpAQCAtMTAzNzQsMTUgKzEw
Mzc0LDE1IEBAIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRm9yUHJldmlld0l0ZW1Db250cm9sbGVy
OihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyCiAgICAgICAgIGlmIChpbmRleCAhPSBO
U05vdEZvdW5kKSB7CiAgICAgICAgICAgICBCT09MIHNvdXJjZUlzTWFuYWdlZCA9IE5POwogICAg
ICAgICAgICAgaWYgKHJlc3BvbmRzVG9BdHRhY2htZW50TGlzdEZvcldlYlZpZXdTb3VyY2VJc01h
bmFnZWQpCi0gICAgICAgICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFj
aG1lbnRMaXN0XSA9IFt1aURlbGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZpZXc6c2VsZi53
ZWJWaWV3IHNvdXJjZUlzTWFuYWdlZDomc291cmNlSXNNYW5hZ2VkXTsKKyAgICAgICAgICAgICAg
ICBkYXRhRm9yUHJldmlldy5nZXQoKVtVSVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RdID0gW3Vp
RGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0Rm9yV2ViVmlldzpzZWxmLndlYlZpZXcgc291cmNlSXNN
YW5hZ2VkOiZzb3VyY2VJc01hbmFnZWRdOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGRhdGFGb3JQcmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50TGlzdF0gPSBbdWlEZWxl
Z2F0ZSBfYXR0YWNobWVudExpc3RGb3JXZWJWaWV3OnNlbGYud2ViVmlld107Ci0gICAgICAgICAg
ICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVudEluZGV4XSA9IFtOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluZGV4XTsKLSAgICAgICAgICAgIGRhdGFGb3JQ
cmV2aWV3W1VJUHJldmlld0RhdGFBdHRhY2htZW50TGlzdElzQ29udGVudE1hbmFnZWRdID0gW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOnNvdXJjZUlzTWFuYWdlZF07CisgICAgICAgICAgICAgICAg
ZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0XSA9IFt1aURl
bGVnYXRlIF9hdHRhY2htZW50TGlzdEZvcldlYlZpZXc6c2VsZi53ZWJWaWV3XTsKKyAgICAgICAg
ICAgIGRhdGFGb3JQcmV2aWV3LmdldCgpW1VJUHJldmlld0RhdGFBdHRhY2htZW50SW5kZXhdID0g
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5kZXhdOworICAgICAgICAgICAg
ZGF0YUZvclByZXZpZXcuZ2V0KClbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0SXNDb250ZW50
TWFuYWdlZF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6c291cmNlSXNNYW5hZ2VkXTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBkYXRhRm9yUHJldmlldzsKKyAgICByZXR1cm4g
ZGF0YUZvclByZXZpZXcuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ0dSZWN0KV9wcmVzZW50YXRp
b25SZWN0Rm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAq
KWNvbnRyb2xsZXIKQEAgLTEwNDc4LDcgKzEwNDc4LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAq
KV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2
aWUKICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlld1ZpZXdDb250cm9sbGVyOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIFtbW1dLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlIGRlZmF1bHRBY3Rpb25zOmRlZmF1bHRBY3Rpb25z
IGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZvXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBh
ZG9wdE5TKFtbV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOmNnSW1hZ2UgZGVmYXVsdEFjdGlvbnM6ZGVmYXVsdEFjdGlvbnMgZWxlbWVudEluZm86ZWxl
bWVudEluZm9dKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVybiBuaWw7CkBAIC0x
MDU1Myw3ICsxMDU1Myw3IEBAIC0gKFVJSW1hZ2UgKilfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQ
cmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sCiAgICAgaWYgKCFuYXRp
dmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gW1tbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25SZWN0c0ZvclByZXZpZXdJ
dGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC0x
MDYwMSwxNSArMTA2MDEsMTUgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFJhbmdlCiAKICsoV0tU
ZXh0UmFuZ2UgKil0ZXh0UmFuZ2VXaXRoU3RhdGU6KEJPT0wpaXNOb25lIGlzUmFuZ2U6KEJPT0wp
aXNSYW5nZSBpc0VkaXRhYmxlOihCT09MKWlzRWRpdGFibGUgc3RhcnRSZWN0OihDR1JlY3Qpc3Rh
cnRSZWN0IGVuZFJlY3Q6KENHUmVjdCllbmRSZWN0IHNlbGVjdGlvblJlY3RzOihOU0FycmF5ICop
c2VsZWN0aW9uUmVjdHMgc2VsZWN0ZWRUZXh0TGVuZ3RoOihOU1VJbnRlZ2VyKXNlbGVjdGVkVGV4
dExlbmd0aAogewotICAgIFdLVGV4dFJhbmdlICpyYW5nZSA9IFtbV0tUZXh0UmFuZ2UgYWxsb2Nd
IGluaXRdOwotICAgIHJhbmdlLmlzTm9uZSA9IGlzTm9uZTsKLSAgICByYW5nZS5pc1JhbmdlID0g
aXNSYW5nZTsKLSAgICByYW5nZS5pc0VkaXRhYmxlID0gaXNFZGl0YWJsZTsKLSAgICByYW5nZS5z
dGFydFJlY3QgPSBzdGFydFJlY3Q7Ci0gICAgcmFuZ2UuZW5kUmVjdCA9IGVuZFJlY3Q7Ci0gICAg
cmFuZ2Uuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0TGVuZ3RoOwotICAgIHJhbmdl
LnNlbGVjdGlvblJlY3RzID0gc2VsZWN0aW9uUmVjdHM7Ci0gICAgcmV0dXJuIFtyYW5nZSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byByYW5nZSA9IGFkb3B0TlMoW1tXS1RleHRSYW5nZSBhbGxvY10g
aW5pdF0pOworICAgIFtyYW5nZSBzZXRJc05vbmU6aXNOb25lXTsKKyAgICBbcmFuZ2Ugc2V0SXNS
YW5nZTppc1JhbmdlXTsKKyAgICBbcmFuZ2Ugc2V0SXNFZGl0YWJsZTppc0VkaXRhYmxlXTsKKyAg
ICBbcmFuZ2Ugc2V0U3RhcnRSZWN0OnN0YXJ0UmVjdF07CisgICAgW3JhbmdlIHNldEVuZFJlY3Q6
ZW5kUmVjdF07CisgICAgW3JhbmdlIHNldFNlbGVjdGVkVGV4dExlbmd0aDpzZWxlY3RlZFRleHRM
ZW5ndGhdOworICAgIFtyYW5nZSBzZXRTZWxlY3Rpb25SZWN0czpzZWxlY3Rpb25SZWN0c107Cisg
ICAgcmV0dXJuIHJhbmdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAt
MTA2NzUsOSArMTA2NzUsOSBAQCBAc3ludGhlc2l6ZSBwb3NpdGlvblJlY3QgPSBfcG9zaXRpb25S
ZWN0OwogCiArIChXS1RleHRQb3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3Qp
cG9zaXRpb25SZWN0CiB7Ci0gICAgV0tUZXh0UG9zaXRpb24gKnBvcyA9W1tXS1RleHRQb3NpdGlv
biBhbGxvY10gaW5pdF07Ci0gICAgcG9zLnBvc2l0aW9uUmVjdCA9IHBvc2l0aW9uUmVjdDsKLSAg
ICByZXR1cm4gW3BvcyBhdXRvcmVsZWFzZV07CisgICAgYXV0byBwb3MgPSBhZG9wdE5TKFtbV0tU
ZXh0UG9zaXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbcG9zIHNldFBvc2l0aW9uUmVjdDpwb3Np
dGlvblJlY3RdOworICAgIHJldHVybiBwb3MuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gRklYTUU6
IE92ZXJyaWRpbmcgaXNFcXVhbDogd2l0aG91dCBvdmVycmlkaW5nIGhhc2ggd2lsbCBjYXVzZSB0
cm91YmxlIGlmIHRoaXMgZXZlciBnb2VzIGludG8gYSBOU1NldCBvciBpcyB0aGUga2V5IGluIGFu
IE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S1RleHRQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQ
bGFjZWhvbGRlci5tbQppbmRleCBhZDU4ZDdiZTU2MDM1NTc2ZThiMGZhOTRkOWU3ODQ5OTk1NTc4
MWI3Li5lYzliNWU1YTZiMmJiMTJmMDZlMTIzNWUzMmIwY2IxMTBlM2IyOGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCkBAIC01MCw3
ICs1MCw3IEBAIC0gKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JillbGVtZW50Q29udGV4
dAogCiAtIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJlY3QgKj4gKilyZWN0cwogewotICAgIHJl
dHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9jXSBpbml0V2l0aENHUmVjdDpfZWxl
bWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVsZWFzZV0gXTsKKyAgICByZXR1cm4gQFsg
YWRvcHROUyhbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRXaXRoQ0dSZWN0Ol9lbGVt
ZW50Q29udGV4dC5ib3VuZGluZ1JlY3RdKS5nZXQoKSBdOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tXZWJFdmVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50Lm1tCmluZGV4IGFiNTk2ODc5YTBhODNhYzQ5YWQ0
ZDVkODdhOWQ1MzczZTE0NGEwNTYuLmU3ZGEyODE2N2U4MGU1MWEzMDY5MDExNGMzYWNjZjhhN2U4
YWEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1dlYkV2ZW50Lm1tCkBAIC00
MSwyMyArNDEsMjUgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRXZlbnQ6KFVJRXZlbnQgKill
dmVudAogICAgIFVJS2V5Ym9hcmRJbnB1dEZsYWdzIGlucHV0RmxhZ3M7CiAgICAgTlNJbnRlZ2Vy
IG1vZGlmaWVyRmxhZ3M7CiAgICAgQk9PTCBpc0hhcmR3YXJlS2V5Ym9hcmRFdmVudCA9ICEhZXZl
bnQuX2hpZEV2ZW50OworICAgIFJldGFpblB0cjxVSUV2ZW50PiB1aUV2ZW50OwogICAgIGlmICgh
aXNIYXJkd2FyZUtleWJvYXJkRXZlbnQpIHsKICAgICAgICAga2V5Q29kZSA9IDA7CiAgICAgICAg
IGlucHV0RmxhZ3MgPSAoVUlLZXlib2FyZElucHV0RmxhZ3MpMDsKICAgICAgICAgbW9kaWZpZXJG
bGFncyA9IDA7CisgICAgICAgIHVpRXZlbnQgPSBldmVudDsKICAgICB9IGVsc2UgewogICAgICAg
ICBVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAqa2V5RXZlbnQgPSAoVUlQaHlzaWNhbEtleWJvYXJk
RXZlbnQgKilldmVudDsKICAgICAgICAga2V5Q29kZSA9IGtleUV2ZW50Ll9rZXlDb2RlOwogICAg
ICAgICBpbnB1dEZsYWdzID0ga2V5RXZlbnQuX2lucHV0RmxhZ3M7CiAgICAgICAgIG1vZGlmaWVy
RmxhZ3MgPSBrZXlFdmVudC5fZ3NNb2RpZmllckZsYWdzOwotICAgICAgICBldmVudCA9IFtba2V5
RXZlbnQgX2Nsb25lRXZlbnRdIGF1dG9yZWxlYXNlXTsgLy8gVUlLaXQgdXNlcyBhIHNpbmdsZXRv
biBmb3IgaGFyZHdhcmUga2V5Ym9hcmQgZXZlbnRzLgorICAgICAgICB1aUV2ZW50ID0gYWRvcHRO
Uyhba2V5RXZlbnQgX2Nsb25lRXZlbnRdKTsgLy8gVUlLaXQgdXNlcyBhIHNpbmdsZXRvbiBmb3Ig
aGFyZHdhcmUga2V5Ym9hcmQgZXZlbnRzLgogICAgIH0KIAotICAgIHNlbGYgPSBbc3VwZXIgaW5p
dFdpdGhLZXlFdmVudFR5cGU6KGV2ZW50Ll9pc0tleURvd24gPyBXZWJFdmVudEtleURvd24gOiBX
ZWJFdmVudEtleVVwKSB0aW1lU3RhbXA6ZXZlbnQudGltZXN0YW1wIGNoYXJhY3RlcnM6ZXZlbnQu
X21vZGlmaWVkSW5wdXQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmV2ZW50Ll91bm1vZGlm
aWVkSW5wdXQgbW9kaWZpZXJzOm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6KGlucHV0RmxhZ3Mg
JiBrVUlLZXlib2FyZElucHV0UmVwZWF0KSB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRN
YW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OltldmVudC5fbW9kaWZpZWRJ
bnB1dCBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdXTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRo
S2V5RXZlbnRUeXBlOihbdWlFdmVudCBfaXNLZXlEb3duXSA/IFdlYkV2ZW50S2V5RG93biA6IFdl
YkV2ZW50S2V5VXApIHRpbWVTdGFtcDpbdWlFdmVudCB0aW1lc3RhbXBdIGNoYXJhY3RlcnM6W3Vp
RXZlbnQgX21vZGlmaWVkSW5wdXRdIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpbdWlFdmVu
dCBfdW5tb2RpZmllZElucHV0XSBtb2RpZmllcnM6bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzoo
aW5wdXRGbGFncyAmIGtVSUtleWJvYXJkSW5wdXRSZXBlYXQpIHdpdGhGbGFnczppbnB1dEZsYWdz
IHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6W1t1aUV2
ZW50IF9tb2RpZmllZElucHV0XSBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdXTsKICAgICBpZiAoIXNl
bGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfdWlFdmVudCA9IGV2ZW50OworICAgIF91
aUV2ZW50ID0gV1RGTW92ZSh1aUV2ZW50KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KaW5kZXggYjkzODU3ZWY5MGQxM2ZmOTJjZjQ0OTNkZGFi
MjQ2MzM1M2VjYTQzNi4uYmZjNTM1YjYxNjc1NGJhM2MyZDgyOGEzYTZkZjA0NzNlNjEwNDE3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCkBAIC0zMjEsNyArMzIxLDcgQEAgLSAo
dm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MmKWRyb3AKICAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3VnZ2VzdGlv
bnMgPSBzZWxmLnRleHRTdWdnZXN0aW9uczsKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KLSAgICBbX3BvcG92ZXIgc2V0UG9wb3ZlckNvbnRyb2xsZXI6W1tbVUlQb3BvdmVy
Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6X3N1Z2dlc3Rp
b25zVmlld0NvbnRyb2xsZXIuZ2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgW19wb3BvdmVyIHNl
dFBvcG92ZXJDb250cm9sbGVyOmFkb3B0TlMoW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBp
bml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlci5n
ZXQoKV0pLmdldCgpXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAg
W19wb3BvdmVyIHByZXNlbnRQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwpAQCAtMzU2LDE1ICszNTYsMTUg
QEAgLSAoTlNJbnRlZ2VyKXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgbnVtYmVy
T2ZSb3dzSW5TZWN0aW9uOihOU0ludGVnZXIKIAogLSAoVUlUYWJsZVZpZXdDZWxsICopdGFibGVW
aWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBjZWxsRm9yUm93QXRJbmRleFBhdGg6KE5TSW5k
ZXhQYXRoICopaW5kZXhQYXRoCiB7Ci0gICAgVUlUYWJsZVZpZXdDZWxsICpjZWxsID0gW3RhYmxl
VmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVz
ZUlkZW50aWZpZXJdOworICAgIGF1dG8gY2VsbCA9IHJldGFpblB0cihbdGFibGVWaWV3IGRlcXVl
dWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmll
cl0pOwogICAgIGlmICghY2VsbCkKLSAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2VsbCBh
bGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVu
dGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSBhdXRvcmVsZWFzZV07CisgICAg
ICAgIGNlbGwgPSBhZG9wdE5TKFtbVUlUYWJsZVZpZXdDZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxl
OlVJVGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6c3VnZ2VzdGlvbkNl
bGxSZXVzZUlkZW50aWZpZXJdKTsKIAotICAgIGNlbGwudGV4dExhYmVsLnRleHQgPSBbc2VsZi5j
b250cm9sIHN1Z2dlc3Rpb25BdEluZGV4OmluZGV4UGF0aC5yb3ddOwotICAgIGNlbGwudGV4dExh
YmVsLmxpbmVCcmVha01vZGUgPSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgY2Vs
bC50ZXh0TGFiZWwudGV4dEFsaWdubWVudCA9IFtzZWxmLmNvbnRyb2wgdGV4dEFsaWdubWVudF07
CisgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0ID0gW3NlbGYuY29udHJvbCBzdWdnZXN0aW9uQXRJ
bmRleDppbmRleFBhdGgucm93XTsKKyAgICBbY2VsbCB0ZXh0TGFiZWxdLmxpbmVCcmVha01vZGUg
PSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7CisgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0
QWxpZ25tZW50ID0gW3NlbGYuY29udHJvbCB0ZXh0QWxpZ25tZW50XTsKIAotICAgIHJldHVybiBj
ZWxsOworICAgIHJldHVybiBjZWxsLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpdGFibGVW
aWV3OihVSVRhYmxlVmlldyAqKXRhYmxlVmlldyBkaWRTZWxlY3RSb3dBdEluZGV4UGF0aDooTlNJ
bmRleFBhdGggKilpbmRleFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQppbmRleCA4
OTEwZmI3ZjRlMTY1YjBkMWFiZTEzNTQ2NGQ0YTIzOTdhYTZiYjBjLi40NzQ4OGZkZTIyYTllOGQ5
MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1t
CkBAIC01MTIsMTMgKzUxMiwxMyBAQCAtIChOU0RhdGUgKilkYXRlCiAKIC0gKE5TRGF0ZUNvbXBv
bmVudHMgKilfZGF0ZUNvbXBvbmVudEZvckRheTooTlNJbnRlZ2VyKWRheSBtb250aDooTlNJbnRl
Z2VyKW1vbnRoIHllYXI6KE5TSW50ZWdlcil5ZWFyIGVyYTooTlNJbnRlZ2VyKWVyYQogewotICAg
IE5TRGF0ZUNvbXBvbmVudHMgKmRhdGVDb21wb25lbnRzID0gW1tbTlNEYXRlQ29tcG9uZW50cyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGRhdGVDb21wb25lbnRzLmRheSA9IGRheTsK
LSAgICBkYXRlQ29tcG9uZW50cy5tb250aCA9IG1vbnRoOwotICAgIGRhdGVDb21wb25lbnRzLnll
YXIgPSB5ZWFyOwotICAgIGRhdGVDb21wb25lbnRzLmVyYSA9IGVyYTsKLSAgICBkYXRlQ29tcG9u
ZW50cy5jYWxlbmRhciA9IF9jYWxlbmRhci5nZXQoKTsKLSAgICByZXR1cm4gZGF0ZUNvbXBvbmVu
dHM7CisgICAgYXV0byBkYXRlQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU0RhdGVDb21wb25lbnRz
IGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGVDb21wb25lbnRzIHNldERheTpkYXldOworICAgIFtk
YXRlQ29tcG9uZW50cyBzZXRNb250aDptb250aF07CisgICAgW2RhdGVDb21wb25lbnRzIHNldFll
YXI6eWVhcl07CisgICAgW2RhdGVDb21wb25lbnRzIHNldEVyYTplcmFdOworICAgIFtkYXRlQ29t
cG9uZW50cyBzZXRDYWxlbmRhcjpfY2FsZW5kYXIuZ2V0KCldOworICAgIHJldHVybiBkYXRlQ29t
cG9uZW50cy5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9hZGp1c3REYXRlVG9WYWxpZERh
dGVJZk5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0KaW5kZXggYjI1OTlhZjZlOWY3ZTU5ZWQ2ZDQ3MmQw
NWRjM2MxN2E0ZTUwN2E2OC4uMzBhNDBhN2VjMDg2ODUxNTY1YzliNWQ5ZTdiOWZiNjM0YTQ5ZWIz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNl
bGVjdFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtU2VsZWN0UGlja2VyLm1tCkBAIC03OSwxMCArNzksMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoT3B0aW9uSXRlbTooY29uc3QgT3B0aW9uSXRlbSYpaXRlbQogICAgIGlmICghKHNlbGYg
PSBbc2VsZiBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU011dGFibGVTdHJp
bmcgKnRyaW1tZWRUZXh0ID0gW1tpdGVtLnRleHQgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsK
LSAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpdHJpbW1lZFRl
eHQpOworICAgIGF1dG8gdHJpbW1lZFRleHQgPSBhZG9wdE5TKFtpdGVtLnRleHQgbXV0YWJsZUNv
cHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYpdHJp
bW1lZFRleHQuZ2V0KCkpOwogCi0gICAgW1tzZWxmIHRpdGxlTGFiZWxdIHNldFRleHQ6dHJpbW1l
ZFRleHRdOworICAgIFtbc2VsZiB0aXRsZUxhYmVsXSBzZXRUZXh0OnRyaW1tZWRUZXh0LmdldCgp
XTsKICAgICBbc2VsZiBzZXRDaGVja2VkOml0ZW0uaXNTZWxlY3RlZF07CiAgICAgW3NlbGYgc2V0
RGlzYWJsZWQ6aXRlbS5kaXNhYmxlZF07CiAgICAgaWYgKF9kaXNhYmxlZCkKQEAgLTEwNSwxMCAr
MTA1LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE9wdGlvbkl0ZW06KGNvbnN0IE9wdGlv
bkl0ZW0mKWl0ZW0KICAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgTlNNdXRhYmxlU3RyaW5nICp0cmltbWVkVGV4dCA9IFtbaXRlbS50ZXh0
IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgo
Q0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWRUZXh0KTsKKyAgICBhdXRvIHRyaW1tZWRUZXh0ID0g
YWRvcHROUyhbaXRlbS50ZXh0IG11dGFibGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVz
cGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWRUZXh0LmdldCgpKTsKIAotICAgIFtbc2Vs
ZiB0aXRsZUxhYmVsXSBzZXRUZXh0OnRyaW1tZWRUZXh0XTsKKyAgICBbW3NlbGYgdGl0bGVMYWJl
bF0gc2V0VGV4dDp0cmltbWVkVGV4dC5nZXQoKV07CiAgICAgW3NlbGYgc2V0Q2hlY2tlZDpOT107
CiAgICAgW1tzZWxmIHRpdGxlTGFiZWxdIHNldFRleHRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhX
aGl0ZTowLjAgYWxwaGE6R3JvdXBPcHRpb25UZXh0Q29sb3JBbHBoYV1dOwogICAgIFtzZWxmIHNl
dERpc2FibGVkOllFU107CkBAIC0yMjMsMTQgKzIyMywxOCBAQCAtICh2b2lkKWxheW91dFN1YnZp
ZXdzCiAtIChVSVZpZXcgKilwaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3IHZp
ZXdGb3JSb3c6KE5TSW50ZWdlcilyb3dJbmRleCBmb3JDb21wb25lbnQ6KE5TSW50ZWdlciljb2x1
bW5JbmRleCByZXVzaW5nVmlldzooVUlWaWV3ICopdmlldwogewogICAgIGF1dG8mIGl0ZW0gPSBb
X3ZpZXcgZm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zXVtyb3dJbmRleF07Ci0gICAgVUlQaWNr
ZXJDb250ZW50VmlldyAqcGlja2VySXRlbSA9IGl0ZW0uaXNHcm91cCA/IFtbW1dLT3B0aW9uR3Jv
dXBQaWNrZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0gYXV0b3JlbGVhc2Vd
IDogW1tbV0tPcHRpb25QaWNrZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0g
YXV0b3JlbGVhc2VdOworICAgIFJldGFpblB0cjxXS09wdGlvblBpY2tlckNlbGw+IHBpY2tlckl0
ZW07CisgICAgaWYgKGl0ZW0uaXNHcm91cCkKKyAgICAgICAgcGlja2VySXRlbSA9IGFkb3B0TlMo
W1tXS09wdGlvbkdyb3VwUGlja2VyQ2VsbCBhbGxvY10gaW5pdFdpdGhPcHRpb25JdGVtOml0ZW1d
KTsKKyAgICBlbHNlCisgICAgICAgIHBpY2tlckl0ZW0gPSBhZG9wdE5TKFtbV0tPcHRpb25QaWNr
ZXJDZWxsIGFsbG9jXSBpbml0V2l0aE9wdGlvbkl0ZW06aXRlbV0pOwogCiAgICAgLy8gVGhlIGNl
bGwgc3RhcnRzIG91dCB3aXRoIGEgbnVsbCBmcmFtZS4gV2UgbmVlZCB0byBzZXQgaXRzIGZyYW1l
IG5vdyBzbyB3ZSBjYW4gZmluZCB0aGUgcmlnaHQgZm9udCBzaXplLgogICAgIFVJVGFibGVWaWV3
ICp0YWJsZSA9IFtwaWNrZXJWaWV3IHRhYmxlVmlld0ZvckNvbHVtbjowXTsKICAgICBDR1JlY3Qg
ZnJhbWUgPSBbdGFibGUgcmVjdEZvclJvd0F0SW5kZXhQYXRoOltOU0luZGV4UGF0aCBpbmRleFBh
dGhGb3JSb3c6cm93SW5kZXggaW5TZWN0aW9uOjBdXTsKLSAgICBwaWNrZXJJdGVtLmZyYW1lID0g
ZnJhbWU7CisgICAgW3BpY2tlckl0ZW0gc2V0RnJhbWU6ZnJhbWVdOwogCi0gICAgVUlMYWJlbCAq
dGl0bGVUZXh0TGFiZWwgPSBwaWNrZXJJdGVtLnRpdGxlTGFiZWw7CisgICAgVUlMYWJlbCAqdGl0
bGVUZXh0TGFiZWwgPSBbcGlja2VySXRlbSB0aXRsZUxhYmVsXTsKICAgICBmbG9hdCB3aWR0aCA9
IFtwaWNrZXJJdGVtIGxhYmVsV2lkdGhGb3JCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBDR1JlY3RH
ZXRXaWR0aChmcmFtZSksIENHUmVjdEdldEhlaWdodChmcmFtZSkpXTsKICAgICBBU1NFUlQod2lk
dGggPiAwKTsKIApAQCAtMjQ2LDcgKzI1MCw3IEBAIC0gKFVJVmlldyAqKXBpY2tlclZpZXc6KFVJ
UGlja2VyVmlldyAqKXBpY2tlclZpZXcgdmlld0ZvclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4CiAg
ICAgW3RpdGxlVGV4dExhYmVsIHNldE51bWJlck9mTGluZXM6Ml07CiAgICAgW3RpdGxlVGV4dExh
YmVsIHNldFRleHRBbGlnbm1lbnQ6X3RleHRBbGlnbm1lbnRdOwogCi0gICAgcmV0dXJuIHBpY2tl
ckl0ZW07CisgICAgcmV0dXJuIHBpY2tlckl0ZW0uYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNJ
bnRlZ2VyKW51bWJlck9mQ29tcG9uZW50c0luUGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopYVBp
Y2tlclZpZXcKQEAgLTQwNywxNCArNDExLDE0IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXBp
Y2tlclZpZXc6KFVJUGlja2VyVmlldyAqKXBpY2tlclZpZXcgYXR0cmlidXRlZFRpdGxlRm9yCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKICAgICBjb25zdCBPcHRpb25JdGVtJiBvcHRpb24gPSBbX3Zp
ZXcgZm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zXVtyb3ddOwotICAgIE5TTXV0YWJsZVN0cmlu
ZyAqdHJpbW1lZFRleHQgPSBbW29wdGlvbi50ZXh0IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07
Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWRU
ZXh0KTsKKyAgICBhdXRvIHRyaW1tZWRUZXh0ID0gYWRvcHROUyhbb3B0aW9uLnRleHQgbXV0YWJs
ZUNvcHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChDRk11dGFibGVTdHJpbmdSZWYp
dHJpbW1lZFRleHQuZ2V0KCkpOwogCi0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6dHJpbW1lZFRleHRdOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0cmlt
bWVkVGV4dC5nZXQoKV0pOwogICAgIGlmIChvcHRpb24uZGlzYWJsZWQpCiAgICAgICAgIFthdHRy
aWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUg
dmFsdWU6W1VJQ29sb3IgY29sb3JXaXRoV2hpdGU6MC4wIGFscGhhOkRpc2FibGVkT3B0aW9uQWxw
aGFdIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0cmltbWVkVGV4dCBsZW5ndGhdKV07CiAKLSAgICBy
ZXR1cm4gW2F0dHJpYnV0ZWRTdHJpbmcgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhdHRyaWJ1
dGVkU3RyaW5nLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpcGlja2VyVmlldzooVUlQaWNr
ZXJWaWV3ICopcGlja2VyVmlldyBkaWRTZWxlY3RSb3c6KE5TSW50ZWdlcilyb3cgaW5Db21wb25l
bnQ6KE5TSW50ZWdlciljb21wb25lbnQKQEAgLTgzOSwzOSArODQzLDM5IEBAIC0gKFVJVmlldyAq
KXRhYmxlVmlldzooVUlUYWJsZVZpZXcgKil0YWJsZVZpZXcgdmlld0ZvckhlYWRlckluU2VjdGlv
bjooTlNJbnRlZ2VyCiAgICAgaWYgKCFzZWN0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgVUlWaWV3ICpzZWN0aW9uVmlldyA9IFtbW1VJVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gc2VjdGlvblZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0
XSk7CiAKLSAgICBVSUxhYmVsICpzZWN0aW9uTGFiZWwgPSBbW1tVSUxhYmVsIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07Ci0gICAgc2VjdGlvbkxhYmVsLnRleHQgPSBbc2VsZiB0YWJsZVZpZXc6
dGFibGVWaWV3IHRpdGxlRm9ySGVhZGVySW5TZWN0aW9uOnNlY3Rpb25dOwotICAgIHNlY3Rpb25M
YWJlbC50ZXh0Q29sb3IgPSBVSUNvbG9yLmJsYWNrQ29sb3I7Ci0gICAgc2VjdGlvbkxhYmVsLmZv
bnQgPSBbVUlGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOnNlY3Rpb25IZWFkZXJGb250U2l6ZV07
Ci0gICAgc2VjdGlvbkxhYmVsLmFkanVzdHNGb250U2l6ZVRvRml0V2lkdGggPSBOTzsKLSAgICBz
ZWN0aW9uTGFiZWwubGluZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbDsK
LSAgICBbc2VjdGlvblZpZXcgYWRkU3VidmlldzpzZWN0aW9uTGFiZWxdOworICAgIGF1dG8gc2Vj
dGlvbkxhYmVsID0gYWRvcHROUyhbW1VJTGFiZWwgYWxsb2NdIGluaXRdKTsKKyAgICBbc2VjdGlv
bkxhYmVsIHNldFRleHQ6W3NlbGYgdGFibGVWaWV3OnRhYmxlVmlldyB0aXRsZUZvckhlYWRlcklu
U2VjdGlvbjpzZWN0aW9uXV07CisgICAgW3NlY3Rpb25MYWJlbCBzZXRUZXh0Q29sb3I6VUlDb2xv
ci5ibGFja0NvbG9yXTsKKyAgICBbc2VjdGlvbkxhYmVsIHNldEZvbnQ6W1VJRm9udCBib2xkU3lz
dGVtRm9udE9mU2l6ZTpzZWN0aW9uSGVhZGVyRm9udFNpemVdXTsKKyAgICBbc2VjdGlvbkxhYmVs
IHNldEFkanVzdHNGb250U2l6ZVRvRml0V2lkdGg6Tk9dOworICAgIFtzZWN0aW9uTGFiZWwgc2V0
TGluZUJyZWFrTW9kZTpOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWxdOworICAgIFtzZWN0aW9u
VmlldyBhZGRTdWJ2aWV3OnNlY3Rpb25MYWJlbC5nZXQoKV07CiAKLSAgICBzZWN0aW9uTGFiZWwu
dHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsKKyAgICBbc2Vj
dGlvbkxhYmVsIHNldFRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzOk5P
XTsKICAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKLSAgICAg
ICAgW3NlY3Rpb25MYWJlbC5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNl
Y3Rpb25WaWV3LmxlYWRpbmdBbmNob3IgY29uc3RhbnQ6c2VjdGlvbkhlYWRlck1hcmdpbl0sCi0g
ICAgICAgIFtzZWN0aW9uTGFiZWwudG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNl
Y3Rpb25WaWV3LnRvcEFuY2hvciBjb25zdGFudDowXSwKKyAgICAgICAgW1tzZWN0aW9uTGFiZWwg
bGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W3NlY3Rpb25WaWV3IGxlYWRp
bmdBbmNob3JdIGNvbnN0YW50OnNlY3Rpb25IZWFkZXJNYXJnaW5dLAorICAgICAgICBbW3NlY3Rp
b25MYWJlbCB0b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0aW9uVmlldyB0
b3BBbmNob3JdIGNvbnN0YW50OjBdLAogICAgIF1dOwogCi0gICAgVUlCdXR0b24gKmNvbGxhcHNl
QnV0dG9uID0gW1tbVUlCdXR0b24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBjb2xs
YXBzZUJ1dHRvbi50YWcgPSBzZWN0aW9uOworICAgIGF1dG8gY29sbGFwc2VCdXR0b24gPSBhZG9w
dE5TKFtbVUlCdXR0b24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29sbGFwc2VCdXR0b24gc2V0VGFn
OnNlY3Rpb25dOwogICAgIFtjb2xsYXBzZUJ1dHRvbiBzZXRJbWFnZTpbVUlJbWFnZSBzeXN0ZW1J
bWFnZU5hbWVkOkAiY2hldnJvbi5kb3duIiB3aXRoQ29uZmlndXJhdGlvbjpbVUlJbWFnZVN5bWJv
bENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbldpdGhQb2ludFNpemU6c2VjdGlvbkhlYWRlckNv
bGxhcHNlQnV0dG9uU2l6ZSB3ZWlnaHQ6VUlJbWFnZVN5bWJvbFdlaWdodFNlbWlib2xkXV0gZm9y
U3RhdGU6VUlDb250cm9sU3RhdGVOb3JtYWxdOwogICAgIFtjb2xsYXBzZUJ1dHRvbiBhZGRUYXJn
ZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGNvbGxhcHNlU2VjdGlvbjopIGZvckNvbnRyb2xFdmVu
dHM6VUlDb250cm9sRXZlbnRUb3VjaFVwSW5zaWRlXTsKLSAgICBbc2VjdGlvblZpZXcgYWRkU3Vi
dmlldzpjb2xsYXBzZUJ1dHRvbl07CisgICAgW3NlY3Rpb25WaWV3IGFkZFN1YnZpZXc6Y29sbGFw
c2VCdXR0b24uZ2V0KCldOwogCiAgICAgaWYgKFtfY29sbGFwc2VkU2VjdGlvbnMgY29udGFpbnNP
YmplY3Q6QChzZWN0aW9uKV0pCi0gICAgICAgIGNvbGxhcHNlQnV0dG9uLnRyYW5zZm9ybSA9IENH
QWZmaW5lVHJhbnNmb3JtTWFrZVJvdGF0aW9uKC1NX1BJIC8gMik7CisgICAgICAgIFtjb2xsYXBz
ZUJ1dHRvbiBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oLU1fUEkg
LyAyKV07CiAKLSAgICBjb2xsYXBzZUJ1dHRvbi50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0lu
dG9Db25zdHJhaW50cyA9IE5POworICAgIFtjb2xsYXBzZUJ1dHRvbiBzZXRUcmFuc2xhdGVzQXV0
b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50czpOT107CiAgICAgW05TTGF5b3V0Q29uc3RyYWlu
dCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAgIFtjb2xsYXBzZUJ1dHRvbi50cmFpbGlu
Z0FuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpzZWN0aW9uVmlldy50cmFpbGluZ0FuY2hv
ciBjb25zdGFudDotc2VjdGlvbkhlYWRlck1hcmdpbl0sCi0gICAgICAgIFtjb2xsYXBzZUJ1dHRv
bi50b3BBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6c2VjdGlvbkxhYmVsLnRvcEFuY2hv
ciBjb25zdGFudDowXSwKLSAgICAgICAgW2NvbGxhcHNlQnV0dG9uLmJvdHRvbUFuY2hvciBjb25z
dHJhaW50RXF1YWxUb0FuY2hvcjpzZWN0aW9uTGFiZWwuYm90dG9tQW5jaG9yIGNvbnN0YW50OjBd
LAorICAgICAgICBbW2NvbGxhcHNlQnV0dG9uIHRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1
YWxUb0FuY2hvcjpbc2VjdGlvblZpZXcgdHJhaWxpbmdBbmNob3JdIGNvbnN0YW50Oi1zZWN0aW9u
SGVhZGVyTWFyZ2luXSwKKyAgICAgICAgW1tjb2xsYXBzZUJ1dHRvbiB0b3BBbmNob3JdIGNvbnN0
cmFpbnRFcXVhbFRvQW5jaG9yOltzZWN0aW9uTGFiZWwgdG9wQW5jaG9yXSBjb25zdGFudDowXSwK
KyAgICAgICAgW1tjb2xsYXBzZUJ1dHRvbiBib3R0b21BbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRv
QW5jaG9yOltzZWN0aW9uTGFiZWwgYm90dG9tQW5jaG9yXSBjb25zdGFudDowXSwKICAgICBdXTsK
IAotICAgIHJldHVybiBzZWN0aW9uVmlldzsKKyAgICByZXR1cm4gc2VjdGlvblZpZXcuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAodm9pZCljb2xsYXBzZVNlY3Rpb246KFVJQnV0dG9uICopYnV0dG9u
CkBAIC05MzksMzQgKzk0MywzNCBAQCAtIChPcHRpb25JdGVtICopb3B0aW9uSXRlbUF0SW5kZXhQ
YXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAogCiAtIChVSVRhYmxlVmlld0NlbGwgKil0YWJs
ZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4UGF0aDooTlNJ
bmRleFBhdGggKilpbmRleFBhdGgKIHsKLSAgICBVSVRhYmxlVmlld0NlbGwgKmNlbGwgPSBbdGFi
bGVWaWV3IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpvcHRpb25DZWxsUmV1c2VJ
ZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3RhYmxlVmlldyBkZXF1ZXVl
UmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6b3B0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0pOwog
ICAgIGlmICghY2VsbCkKLSAgICAgICAgY2VsbCA9IFtbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10g
aW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVy
Om9wdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY2VsbCA9
IGFkb3B0TlMoW1tVSVRhYmxlVmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZp
ZXdDZWxsU3R5bGVEZWZhdWx0IHJldXNlSWRlbnRpZmllcjpvcHRpb25DZWxsUmV1c2VJZGVudGlm
aWVyXSk7CiAKICAgICBpZiAoX2NvbnRlbnRWaWV3LmZvY3VzZWRTZWxlY3RFbGVtZW50T3B0aW9u
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2VsbC50ZXh0TGFiZWwuZW5hYmxlZCA9IE5POwotICAg
ICAgICBjZWxsLnRleHRMYWJlbC50ZXh0ID0gV0VCX1VJX1NUUklOR19LRVkoIk5vIE9wdGlvbnMi
LCAiTm8gT3B0aW9ucyBTZWxlY3QgUG9wb3ZlciIsICJFbXB0eSBzZWxlY3QgbGlzdCIpOwotICAg
ICAgICBjZWxsLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgY2VsbC5pbWFn
ZVZpZXcuaW1hZ2UgPSBuaWw7Ci0gICAgICAgIHJldHVybiBjZWxsOworICAgICAgICBbY2VsbCB0
ZXh0TGFiZWxdLmVuYWJsZWQgPSBOTzsKKyAgICAgICAgW2NlbGwgdGV4dExhYmVsXS50ZXh0ID0g
V0VCX1VJX1NUUklOR19LRVkoIk5vIE9wdGlvbnMiLCAiTm8gT3B0aW9ucyBTZWxlY3QgUG9wb3Zl
ciIsICJFbXB0eSBzZWxlY3QgbGlzdCIpOworICAgICAgICBbY2VsbCBzZXRVc2VySW50ZXJhY3Rp
b25FbmFibGVkOk5PXTsKKyAgICAgICAgW2NlbGwgaW1hZ2VWaWV3XS5pbWFnZSA9IG5pbDsKKyAg
ICAgICAgcmV0dXJuIGNlbGwuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBhdXRvIG9wdGlv
biA9IFtzZWxmIG9wdGlvbkl0ZW1BdEluZGV4UGF0aDppbmRleFBhdGhdOwogICAgIGlmICghb3B0
aW9uKQotICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAgICAgcmV0dXJuIGNlbGwuYXV0b3JlbGVh
c2UoKTsKIAotICAgIGNlbGwudGV4dExhYmVsLnRleHQgPSBvcHRpb24tPnRleHQ7Ci0gICAgY2Vs
bC50ZXh0TGFiZWwuZW5hYmxlZCA9ICFvcHRpb24tPmRpc2FibGVkOwotICAgIGNlbGwudXNlcklu
dGVyYWN0aW9uRW5hYmxlZCA9ICFvcHRpb24tPmRpc2FibGVkOworICAgIFtjZWxsIHRleHRMYWJl
bF0udGV4dCA9IG9wdGlvbi0+dGV4dDsKKyAgICBbY2VsbCB0ZXh0TGFiZWxdLmVuYWJsZWQgPSAh
b3B0aW9uLT5kaXNhYmxlZDsKKyAgICBbY2VsbCBzZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOiFv
cHRpb24tPmRpc2FibGVkXTsKIAogICAgIGlmIChvcHRpb24tPmlzU2VsZWN0ZWQpCi0gICAgICAg
IGNlbGwuaW1hZ2VWaWV3LmltYWdlID0gW1VJSW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNoZWNr
bWFyay5jaXJjbGUuZmlsbCJdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmltYWdlID0gW1VJ
SW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNoZWNrbWFyay5jaXJjbGUuZmlsbCJdOwogICAgIGVs
c2UgaWYgKG9wdGlvbi0+ZGlzYWJsZWQpCi0gICAgICAgIGNlbGwuaW1hZ2VWaWV3LmltYWdlID0g
W1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhUaW50Q29sb3I6
VUlDb2xvci5xdWF0ZXJuYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1hZ2VSZW5kZXJp
bmdNb2RlQWx3YXlzT3JpZ2luYWxdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmltYWdlID0g
W1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhUaW50Q29sb3I6
VUlDb2xvci5xdWF0ZXJuYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1hZ2VSZW5kZXJp
bmdNb2RlQWx3YXlzT3JpZ2luYWxdOwogICAgIGVsc2UKLSAgICAgICAgY2VsbC5pbWFnZVZpZXcu
aW1hZ2UgPSBbW1VJSW1hZ2Ugc3lzdGVtSW1hZ2VOYW1lZDpAImNpcmNsZSJdIGltYWdlV2l0aFRp
bnRDb2xvcjpVSUNvbG9yLnRlcnRpYXJ5TGFiZWxDb2xvciByZW5kZXJpbmdNb2RlOlVJSW1hZ2VS
ZW5kZXJpbmdNb2RlQWx3YXlzT3JpZ2luYWxdOworICAgICAgICBbY2VsbCBpbWFnZVZpZXddLmlt
YWdlID0gW1tVSUltYWdlIHN5c3RlbUltYWdlTmFtZWQ6QCJjaXJjbGUiXSBpbWFnZVdpdGhUaW50
Q29sb3I6VUlDb2xvci50ZXJ0aWFyeUxhYmVsQ29sb3IgcmVuZGVyaW5nTW9kZTpVSUltYWdlUmVu
ZGVyaW5nTW9kZUFsd2F5c09yaWdpbmFsXTsKIAotICAgIHJldHVybiBjZWxsOworICAgIHJldHVy
biBjZWxsLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpdGFibGVWaWV3OihVSVRhYmxlVmll
dyAqKXRhYmxlVmlldyBkaWRTZWxlY3RSb3dBdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRl
eFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1TZWxlY3RQb3BvdmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybVNlbGVjdFBvcG92ZXIubW0KaW5kZXggOWE1YzA3NzUxMWZhMDM2ZjgyNzY2OWFhM2ExNGNh
NDVjNDJhZmJkNi4uYTVmY2I2M2NlOWI0NjAwN2RhMzgwNWRkZmIzZmJhZGE4ZmJiZWQxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBv
cG92ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNl
bGVjdFBvcG92ZXIubW0KQEAgLTI1NSwyNiArMjU1LDI2IEBAIC0gKE9wdGlvbkl0ZW0gKilmaW5k
SXRlbUF0OihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAogCiAtIChVSVRhYmxlVmlld0NlbGwgKil0
YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNlbGxGb3JSb3dBdEluZGV4UGF0aDoo
TlNJbmRleFBhdGggKilpbmRleFBhdGgKIHsKLSAgICBVSVRhYmxlVmlld0NlbGwgKmNlbGwgPSBb
dGFibGVWaWV3IGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjpXS1BvcG92ZXJUYWJs
ZVZpZXdDZWxsUmV1c2VJZGVudGlmaWVyXTsKKyAgICBhdXRvIGNlbGwgPSByZXRhaW5QdHIoW3Rh
YmxlVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6V0tQb3BvdmVyVGFibGVW
aWV3Q2VsbFJldXNlSWRlbnRpZmllcl0pOwogICAgIGlmICghY2VsbCkKLSAgICAgICAgY2VsbCA9
IFtbW1VJVGFibGVWaWV3Q2VsbCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxT
dHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVyOldLUG9wb3ZlclRhYmxlVmlld0NlbGxSZXVzZUlk
ZW50aWZpZXJdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY2VsbCA9IGFkb3B0TlMoW1tVSVRhYmxl
Vmlld0NlbGwgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdDZWxsU3R5bGVEZWZhdWx0
IHJldXNlSWRlbnRpZmllcjpXS1BvcG92ZXJUYWJsZVZpZXdDZWxsUmV1c2VJZGVudGlmaWVyXSk7
CiAgICAgCi0gICAgY2VsbC5zZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgPSBzZWxmLnZpZXcuc2Vt
YW50aWNDb250ZW50QXR0cmlidXRlOwotICAgIGNlbGwudGV4dExhYmVsLnRleHRBbGlnbm1lbnQg
PSBfdGV4dEFsaWdubWVudDsKKyAgICBbY2VsbCBzZXRTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGU6
c2VsZi52aWV3LnNlbWFudGljQ29udGVudEF0dHJpYnV0ZV07CisgICAgW2NlbGwgdGV4dExhYmVs
XS50ZXh0QWxpZ25tZW50ID0gX3RleHRBbGlnbm1lbnQ7CiAgICAgCiAgICAgaWYgKF9jb250ZW50
Vmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnNlbGVjdE9wdGlvbnMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGNlbGwudGV4dExhYmVsLmVuYWJsZWQgPSBOTzsKLSAgICAgICAgY2VsbC50ZXh0
TGFiZWwudGV4dCA9IFdFQl9VSV9TVFJJTkdfS0VZKCJObyBPcHRpb25zIiwgIk5vIE9wdGlvbnMg
U2VsZWN0IFBvcG92ZXIiLCAiRW1wdHkgc2VsZWN0IGxpc3QiKTsKLSAgICAgICAgY2VsbC5hY2Nl
c3NvcnlUeXBlID0gVUlUYWJsZVZpZXdDZWxsQWNjZXNzb3J5Tm9uZTsKLSAgICAgICAgY2VsbC5z
ZWxlY3Rpb25TdHlsZSA9IFVJVGFibGVWaWV3Q2VsbFNlbGVjdGlvblN0eWxlTm9uZTsKLSAgICAg
ICAgcmV0dXJuIGNlbGw7CisgICAgICAgIFtjZWxsIHRleHRMYWJlbF0uZW5hYmxlZCA9IE5POwor
ICAgICAgICBbY2VsbCB0ZXh0TGFiZWxdLnRleHQgPSBXRUJfVUlfU1RSSU5HX0tFWSgiTm8gT3B0
aW9ucyIsICJObyBPcHRpb25zIFNlbGVjdCBQb3BvdmVyIiwgIkVtcHR5IHNlbGVjdCBsaXN0Iik7
CisgICAgICAgIFtjZWxsIHNldEFjY2Vzc29yeVR5cGU6VUlUYWJsZVZpZXdDZWxsQWNjZXNzb3J5
Tm9uZV07CisgICAgICAgIFtjZWxsIHNldFNlbGVjdGlvblN0eWxlOlVJVGFibGVWaWV3Q2VsbFNl
bGVjdGlvblN0eWxlTm9uZV07CisgICAgICAgIHJldHVybiBjZWxsLmF1dG9yZWxlYXNlKCk7CiAg
ICAgfQogICAgIAogICAgIENHUmVjdCB0ZXh0UmVjdCA9IFtjZWxsIHRleHRSZWN0Rm9yQ29udGVu
dFJlY3Q6W2NlbGwgY29udGVudFJlY3RGb3JCb3VuZHM6W2NlbGwgYm91bmRzXV1dOwogICAgIEFT
U0VSVF9JTVBMSUVTKENHUmVjdEdldFdpZHRoKHRhYmxlVmlldy5ib3VuZHMpID4gMCwgdGV4dFJl
Y3Quc2l6ZS53aWR0aCA+IDApOwogICAgIAogICAgIC8vIEFzc3VtZSBhbGwgY2VsbHMgaGF2ZSB0
aGUgc2FtZSBhdmFpbGFibGUgdGV4dCB3aWR0aC4KLSAgICBVSUZvbnQgKmZvbnQgPSBjZWxsLnRl
eHRMYWJlbC5mb250OworICAgIFVJRm9udCAqZm9udCA9IFtjZWxsIHRleHRMYWJlbF0uZm9udDsK
ICAgICBDR0Zsb2F0IGluaXRpYWxGb250U2l6ZSA9IGZvbnQucG9pbnRTaXplOwogICAgIEFTU0VS
VChpbml0aWFsRm9udFNpemUpOwogICAgIGlmICh0ZXh0UmVjdC5zaXplLndpZHRoICE9IF9tYXhp
bXVtVGV4dFdpZHRoIHx8IF9mb250U2l6ZSA9PSAwKSB7CkBAIC0yODUsMTEgKzI4NSwxMSBAQCAt
IChVSVRhYmxlVmlld0NlbGwgKil0YWJsZVZpZXc6KFVJVGFibGVWaWV3ICopdGFibGVWaWV3IGNl
bGxGb3JSb3dBdEluZGV4UGF0aDooTgogICAgIGNvbnN0IE9wdGlvbkl0ZW0qIGl0ZW0gPSBbc2Vs
ZiBmaW5kSXRlbUF0OmluZGV4UGF0aF07CiAgICAgQVNTRVJUKGl0ZW0pOwogICAgIAotICAgIFtz
ZWxmIHBvcHVsYXRlQ2VsbDpjZWxsIHdpdGhJdGVtOippdGVtXTsKLSAgICBbY2VsbC50ZXh0TGFi
ZWwgc2V0Rm9udDpbZm9udCBmb250V2l0aFNpemU6X2ZvbnRTaXplXV07Ci0gICAgW2NlbGwudGV4
dExhYmVsIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVdvcmRXcmFwcGluZ107Ci0gICAg
W2NlbGwudGV4dExhYmVsIHNldE51bWJlck9mTGluZXM6Ml07Ci0gICAgcmV0dXJuIGNlbGw7Cisg
ICAgW3NlbGYgcG9wdWxhdGVDZWxsOmNlbGwuZ2V0KCkgd2l0aEl0ZW06Kml0ZW1dOworICAgIFtb
Y2VsbCB0ZXh0TGFiZWxdIHNldEZvbnQ6W2ZvbnQgZm9udFdpdGhTaXplOl9mb250U2l6ZV1dOwor
ICAgIFtbY2VsbCB0ZXh0TGFiZWxdIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVdvcmRX
cmFwcGluZ107CisgICAgW1tjZWxsIHRleHRMYWJlbF0gc2V0TnVtYmVyT2ZMaW5lczoyXTsKKyAg
ICByZXR1cm4gY2VsbC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXRhYmxlVmlldzooVUlU
YWJsZVZpZXcgKil0YWJsZVZpZXcgZGlkU2VsZWN0Um93QXRJbmRleFBhdGg6KE5TSW5kZXhQYXRo
ICopaW5kZXhQYXRoCkBAIC00MTMsNyArNDEzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgaGFzR3JvdXBzOihCT09MKWhhc0dyb3VwcwogICAg
ICAgICBbcG9wb3ZlclZpZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRTaXplOiBwb3Bv
dmVyU2l6ZV07CiAgICAgCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICBzZWxmLnBvcG92ZXJDb250cm9sbGVyID0gW1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxv
Y10gaW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6cG9wb3ZlclZpZXdDb250cm9sbGVyLmdl
dCgpXSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wb3BvdmVyQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxl
cjpwb3BvdmVyVmlld0NvbnRyb2xsZXIuZ2V0KCldKS5nZXQoKTsKICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogI2lmICFVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVy
UGFkVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBh
ZFZpZXcubW0KaW5kZXggN2VjMjhhYzEwYjhjMGEzMDQwZmRiNDg1YzYzNzJmMTI5ZTg4ZDc2My4u
OTE3ZWFiNmU2MWQwMTUxMTY4ODE3MGJlMDYxMzI5NWNlZmQ5ODE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tCkBAIC00
MzAsMTMgKzQzMCwxMyBAQCBzdGF0aWMgV0tOdW1iZXJQYWRLZXkgYWx0ZXJuYXRlS2V5QXRQb3Np
dGlvbihXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uIHBvc2l0aW9uKQogCiAtIChXS051bWJlclBh
ZEJ1dHRvbiAqKV9idXR0b25Gb3JQb3NpdGlvbjooV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbilw
b3NpdGlvbgogewotICAgIFdLTnVtYmVyUGFkQnV0dG9uICpidXR0b24gPSBbW1tXS051bWJlclBh
ZEJ1dHRvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGJ1dHRvbi5kZWZhdWx0S2V5
ID0gZGVmYXVsdEtleUF0UG9zaXRpb24ocG9zaXRpb24sIFtfY29udHJvbGxlciBpbnB1dE1vZGVd
KTsKLSAgICBidXR0b24uYWx0ZXJuYXRlS2V5ID0gYWx0ZXJuYXRlS2V5QXRQb3NpdGlvbihwb3Np
dGlvbik7Ci0gICAgYnV0dG9uLmJ1dHRvblBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgYnV0dG9u
LnRpdGxlTGFiZWwuZm9udCA9IFtVSUZvbnQgc3lzdGVtRm9udE9mU2l6ZTpudW1iZXJQYWRMYWJl
bEZvbnRTaXplKCkgd2VpZ2h0OlVJRm9udFdlaWdodFNlbWlib2xkIGRlc2lnbjooTlNTdHJpbmcg
KilrQ1RGb250VUlGb250RGVzaWduUm91bmRlZF07Ci0gICAgYnV0dG9uLnVzZXJJbnRlcmFjdGlv
bkVuYWJsZWQgPSBOTzsKLSAgICByZXR1cm4gYnV0dG9uOworICAgIGF1dG8gYnV0dG9uID0gYWRv
cHROUyhbW1dLTnVtYmVyUGFkQnV0dG9uIGFsbG9jXSBpbml0XSk7CisgICAgW2J1dHRvbiBzZXRE
ZWZhdWx0S2V5OmRlZmF1bHRLZXlBdFBvc2l0aW9uKHBvc2l0aW9uLCBbX2NvbnRyb2xsZXIgaW5w
dXRNb2RlXSldOworICAgIFtidXR0b24gc2V0QWx0ZXJuYXRlS2V5OmFsdGVybmF0ZUtleUF0UG9z
aXRpb24ocG9zaXRpb24pXTsKKyAgICBbYnV0dG9uIHNldEJ1dHRvblBvc2l0aW9uOnBvc2l0aW9u
XTsKKyAgICBbYnV0dG9uIHRpdGxlTGFiZWxdLmZvbnQgPSBbVUlGb250IHN5c3RlbUZvbnRPZlNp
emU6bnVtYmVyUGFkTGFiZWxGb250U2l6ZSgpIHdlaWdodDpVSUZvbnRXZWlnaHRTZW1pYm9sZCBk
ZXNpZ246KE5TU3RyaW5nICopa0NURm9udFVJRm9udERlc2lnblJvdW5kZWRdOworICAgIFtidXR0
b24gc2V0VXNlckludGVyYWN0aW9uRW5hYmxlZDpOT107CisgICAgcmV0dXJuIGJ1dHRvbi5hdXRv
cmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9pbml0S2V5cGFkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9s
bGVyLm1tCmluZGV4IGQzOTY5MjVmZjA5YjM2MjM1MmY1ZjIyYmM5MTEyZTc1MmQ5ZDM0ZDUuLjE3
NmU4YTg3ZjRiNTE3OTNjYjMyYTg5MzJjN2I4NGIxYzE2OWViMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdD
b250cm9sbGVyLm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgLSAodm9pZClfaGFuZGxlS2V5UHJlc3M6
KFdLTnVtYmVyUGFkS2V5KWtleQogICAgICAgICBbX2lucHV0VGV4dCBhcHBlbmRTdHJpbmc6QCIr
Il07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0tOdW1iZXJQYWRLZXlBY2NlcHQ6Ci0gICAg
ICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmQ6c2VsZiB0ZXh0RW50ZXJlZDpbW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl9pbnB1dFRleHQuZ2V0KCldIGF1dG9y
ZWxlYXNlXV07CisgICAgICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmQ6c2VsZiB0ZXh0RW50
ZXJlZDphZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpf
aW5wdXRUZXh0LmdldCgpXSkuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBXS051
bWJlclBhZEtleTA6CiAgICAgICAgIFtfaW5wdXRUZXh0IGFwcGVuZFN0cmluZzpAIjAiXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IGZlNzE0OTRmZGUwNzc0MTdk
MGM4NGNhNDE2OGMzMTUxYjkyZjM3MTAuLmIzZTIwZmZkMTBhMjQ0OWYyMGQwNWMyY2M3YmYyY2Qy
NGY0NDQ1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQpAQCAtMTU5
LDcgKzE1OSw3IEBAIC0gKFBVSUNBY3Rpb25Db250cm9sbGVyICopYWN0aW9uQ29udHJvbGxlcgog
CiAgICAgUFVJQ0FjdGlvbkl0ZW0gKmxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSA9IFtzZWxm
Lmxhbmd1YWdlQ29udHJvbGxlciBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW1Gb3JWaWV3Q29u
dHJvbGxlcjpzZWxmXTsKICAgICBhdXRvIGFjdGlvbkdyb3VwID0gYWRvcHROUyhbW1BVSUNBY3Rp
b25Hcm91cCBhbGxvY10gaW5pdFdpdGhBY3Rpb25JdGVtczpAWyBsYW5ndWFnZVNlbGVjdGlvbkFj
dGlvbkl0ZW0gXSBhY3Rpb25TdHlsZTpQVUlDQWN0aW9uU3R5bGVBdXRvbWF0aWNdKTsKLSAgICBy
ZXR1cm4gW1tbUFVJQ0FjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aW9uR3JvdXA6
YWN0aW9uR3JvdXAuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1BV
SUNBY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGlvbkdyb3VwOmFjdGlvbkdyb3Vw
LmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggMjIzNzVm
OTRhZTJiODE4ZTMyYTc4MGY2ZTUyNzJlOWY2NjgzODgyYy4uMGExOTBkMjhlMmNjYTBiZWM4MWIw
MDE5MzA3MzU0OGY2OTZiZTdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5t
bQpAQCAtOTcsNyArOTcsNyBAQCAtICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9ucwogCiAtICh2
b2lkKWVudGVyVGV4dDooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgW3NlbGYuZGVsZWdhdGUgcXVp
Y2tib2FyZDpzZWxmIHRleHRFbnRlcmVkOltbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6dGV4dF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbc2VsZi5kZWxlZ2F0ZSBxdWlj
a2JvYXJkOnNlbGYgdGV4dEVudGVyZWQ6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6dGV4dF0pLmdldCgpXTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gUXVp
Y2tib2FyZCBzdWJjbGFzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJJT1MubW0KaW5kZXggNmY3MTliMGI3ZWI1YTMwYzJjOWZjZjJiMzNiMTA0YTZiMWMyZTRm
NS4uMDMzY2VlZmZiMzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVmYzQ2YzExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNj
cmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC01NDksNyArNTQ5LDcg
QEAgLSAodm9pZCllbnRlckZ1bGxTY3JlZW4KICAgICBbX3dpbmRvdyBzZXRIaWRkZW46Tk9dOwog
CiAgICAgX3Jvb3RWaWV3Q29udHJvbGxlciA9IFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF07Ci0gICAgX3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3ID0gW1tbVUlWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOl93aW5kb3cuZ2V0KCkuYm91bmRzXSBhdXRvcmVsZWFzZV07CisgICAg
X3Jvb3RWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpfd2luZG93LmdldCgpLmJvdW5kc10pLmdldCgpOwogICAgIF9yb290Vmll
d0NvbnRyb2xsZXIuZ2V0KCkudmlldy5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xvciBjbGVhckNv
bG9yXTsKICAgICBfcm9vdFZpZXdDb250cm9sbGVyLmdldCgpLnZpZXcuYXV0b3Jlc2l6aW5nTWFz
ayA9IChVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3QXV0b3Jlc2l6aW5n
RmxleGlibGVIZWlnaHQpOwogICAgIFtfcm9vdFZpZXdDb250cm9sbGVyIHNldE1vZGFsUHJlc2Vu
dGF0aW9uU3R5bGU6VUlNb2RhbFByZXNlbnRhdGlvbkN1c3RvbV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bQppbmRleCBiMjRkNDk3MmVjOWZkNGVhZDVhZjIxMTZmZjgyMDU3Yjc4ZGM3NzhkLi45YmFhOGJl
MjRjNzdjNzQ2ZTc5M2Y0MTM3OGRjZDAwYjNjZjRjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCAtIChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0
VGVzdFJlc3VsdAogLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4p
X2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyCiB7CiAgICAgaWYgKF9jb250ZW50UHJldmVudHNE
ZWZhdWx0KQotICAgICAgICByZXR1cm4gW1tbV0tBbmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tBbmltYXRpb25D
b250cm9sbGVyIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJlZlB0cjxBUEk6
OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBbc2VsZiBfd2ViSGl0VGVzdFJlc3VsdF07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdp
bmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0SW5w
dXRXaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDBmODZhNTZlYWFhNDA4NGVlN2JjZjlkYzhkOGM2
ZDAzMzM1ZDRmYjAuLjliODFlYmNiNTAwYjdiZGE4NGVhMjAxNzY0MzBjOTU2NzRmY2Q0ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRJbnB1dFdpbmRvd0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dElucHV0
V2luZG93Q29udHJvbGxlci5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKEJPT0wpX2ludGVycHJl
dEtleUV2ZW50OihOU0V2ZW50ICopZXZlbnQgdXNpbmdMZWdhY3lDb2NvYVRleHRJbnB1dDooQk9P
TCl1c2luCiAKICAgICAgICAgTlNTdHJpbmcgKnRleHQgPSBbW19pbnB1dFRleHRWaWV3IHRleHRT
dG9yYWdlXSBzdHJpbmddOwogICAgICAgICBpZiAoW3RleHQgbGVuZ3RoXSA+IDApCi0gICAgICAg
ICAgICAqc3RyaW5nID0gW1t0ZXh0IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICpz
dHJpbmcgPSBhZG9wdE5TKFt0ZXh0IGNvcHldKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICAg
ICAgICAgIAogICAgIFtfaW5wdXRUZXh0VmlldyBzZXRTdHJpbmc6QCIiXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ZpZXdMYXlvdXRTdHJhdGVneS5tbQppbmRleCBl
YjBiYWIzMDExMjlmYTA4M2U5YTE2ZGU2MmNlY2U2MDBkMDEzZDg0Li41MzEyNDIzYjMxZjRkODdl
ZTE2ZTFhNmQ1ZTEzM2QwMjFlZGEyMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLVmlld0xheW91dFN0cmF0ZWd5Lm1tCkBAIC00OSwyNyArNDksMjcgQEAgQGlt
cGxlbWVudGF0aW9uIFdLVmlld0xheW91dFN0cmF0ZWd5CiAKICsgKGluc3RhbmNldHlwZSlsYXlv
dXRTdHJhdGVneVdpdGhQYWdlOihOYWtlZFJlZjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pcGFnZSB2
aWV3OihOU1ZpZXcgKil2aWV3IHZpZXdJbXBsOihOYWtlZFJlZjxXZWJLaXQ6OldlYlZpZXdJbXBs
Pil3ZWJWaWV3SW1wbCBtb2RlOihXS0xheW91dE1vZGUpbW9kZQogewotICAgIFdLVmlld0xheW91
dFN0cmF0ZWd5ICpzdHJhdGVneTsKKyAgICBSZXRhaW5QdHI8V0tWaWV3TGF5b3V0U3RyYXRlZ3k+
IHN0cmF0ZWd5OwogCiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2Rl
Rml4ZWRTaXplOgotICAgICAgICBzdHJhdGVneSA9IFtbV0tWaWV3Rml4ZWRTaXplTGF5b3V0U3Ry
YXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0lt
cGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5ID0g
YWRvcHROUyhbW1dLVmlld0ZpeGVkU2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBh
Z2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYo
KSBtb2RlOm1vZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlRHlu
YW1pY1NpemVDb21wdXRlZEZyb21WaWV3U2NhbGU6Ci0gICAgICAgIHN0cmF0ZWd5ID0gW1tXS1Zp
ZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBp
bml0V2l0aFBhZ2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBs
LmNvcHlSZWYoKSBtb2RlOm1vZGVdOworICAgICAgICBzdHJhdGVneSA9IGFkb3B0TlMoW1tXS1Zp
ZXdEeW5hbWljU2l6ZUNvbXB1dGVkRnJvbVZpZXdTY2FsZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBp
bml0V2l0aFBhZ2U6cGFnZS5jb3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBs
LmNvcHlSZWYoKSBtb2RlOm1vZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlv
dXRNb2RlRHluYW1pY1NpemVDb21wdXRlZEZyb21NaW5pbXVtRG9jdW1lbnRTaXplOgotICAgICAg
ICBzdHJhdGVneSA9IFtbV0tWaWV3RHluYW1pY1NpemVDb21wdXRlZEZyb21NaW5pbXVtRG9jdW1l
bnRTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2
aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAg
ICAgIHN0cmF0ZWd5ID0gYWRvcHROUyhbW1dLVmlld0R5bmFtaWNTaXplQ29tcHV0ZWRGcm9tTWlu
aW11bURvY3VtZW50U2l6ZUxheW91dFN0cmF0ZWd5IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZS5j
b3B5UmVmKCkgdmlldzp2aWV3IHZpZXdJbXBsOndlYlZpZXdJbXBsLmNvcHlSZWYoKSBtb2RlOm1v
ZGVdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tMYXlvdXRNb2RlVmlld1NpemU6CiAg
ICAgZGVmYXVsdDoKLSAgICAgICAgc3RyYXRlZ3kgPSBbW1dLVmlld1ZpZXdTaXplTGF5b3V0U3Ry
YXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0lt
cGw6d2ViVmlld0ltcGwuY29weVJlZigpIG1vZGU6bW9kZV07CisgICAgICAgIHN0cmF0ZWd5ID0g
YWRvcHROUyhbW1dLVmlld1ZpZXdTaXplTGF5b3V0U3RyYXRlZ3kgYWxsb2NdIGluaXRXaXRoUGFn
ZTpwYWdlLmNvcHlSZWYoKSB2aWV3OnZpZXcgdmlld0ltcGw6d2ViVmlld0ltcGwuY29weVJlZigp
IG1vZGU6bW9kZV0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBbc3RyYXRlZ3kgdXBk
YXRlTGF5b3V0XTsKIAotICAgIHJldHVybiBbc3RyYXRlZ3kgYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBzdHJhdGVneS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhQYWdlOihOYWtlZFJlZjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pcGFnZSB2aWV3OihOU1ZpZXcg
Kil2aWV3IHZpZXdJbXBsOihOYWtlZFJlZjxXZWJLaXQ6OldlYlZpZXdJbXBsPil3ZWJWaWV3SW1w
bCBtb2RlOihXS0xheW91dE1vZGUpbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCmluZGV4IDg2YTZmNDY4YzQ2ZmQ4MWI4ZTAyNzc5NzNl
YTJmYmVjNzIyZjFjNTAuLjM5NzFiYWUxM2Y0NGZjMjRmM2I4MjgwYTg5OTZhZGI5NzMyZDY2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMu
bW0KQEAgLTIzMywxNCArMjMzLDE0IEBAIC0gKHZvaWQpc2V0QW5kU2hvd1BpY2tlcjooV2ViS2l0
OjpXZWJDb2xvclBpY2tlck1hYyopcGlja2VyIHdpdGhDb2xvcjooTlNDb2xvciAqCiAgICAgW19w
b3BvdmVyV2VsbCBzZXRBY3Rpb246QHNlbGVjdG9yKGRpZENob29zZUNvbG9yOildOwogICAgIFtf
cG9wb3ZlcldlbGwgc2V0Q29sb3I6Y29sb3JdOwogCi0gICAgTlNDb2xvckxpc3QgKnN1Z2dlc3Rl
ZENvbG9ycyA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNDb2xvckxpc3Q+IHN1Z2dlc3RlZENvbG9y
czsKICAgICBpZiAoc3VnZ2VzdGlvbnMuc2l6ZSgpKSB7Ci0gICAgICAgIHN1Z2dlc3RlZENvbG9y
cyA9IFtbW05TQ29sb3JMaXN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHN1
Z2dlc3RlZENvbG9ycyA9IGFkb3B0TlMoW1tOU0NvbG9yTGlzdCBhbGxvY10gaW5pdF0pOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKHN1Z2dlc3Rpb25zLnNpemUoKSwg
bWF4Q29sb3JTdWdnZXN0aW9ucyk7IGkrKykKICAgICAgICAgICAgIFtzdWdnZXN0ZWRDb2xvcnMg
aW5zZXJ0Q29sb3I6bnNDb2xvcihzdWdnZXN0aW9ucy5hdChpKSkga2V5OkAoaSkuc3RyaW5nVmFs
dWUgYXRJbmRleDppXTsKICAgICB9CiAKLSAgICBbX3BvcG92ZXJXZWxsIHNldFN1Z2dlc3RlZENv
bG9yczpzdWdnZXN0ZWRDb2xvcnNdOworICAgIFtfcG9wb3ZlcldlbGwgc2V0U3VnZ2VzdGVkQ29s
b3JzOnN1Z2dlc3RlZENvbG9ycy5nZXQoKV07CiAgICAgW19wb3BvdmVyV2VsbCBfc2hvd1BvcG92
ZXJdOwogCiAgICAgW1tOU0NvbG9yUGFuZWwgc2hhcmVkQ29sb3JQYW5lbF0gc2V0RGVsZWdhdGU6
c2VsZl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRleCBlOTA1YTExYjE0OWQ2
YThhOTMyZTY5ZWQ3MzAwMTU2OTY3MGFmZDhlLi40ZDA5M2JhY2Y3NWYyOWU5NGMwOWM4NzM0NTU0
ZWM1ZDM1NWFkY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KQEAgLTQ5NCwy
MyArNDk0LDIzIEBAIC0gKENHRmxvYXQpdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmll
dyBoZWlnaHRPZlJvdzooTlNJbnRlZ2VyKXJvdwogCiAtIChOU1RhYmxlUm93VmlldyAqKXRhYmxl
VmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgcm93Vmlld0ZvclJvdzooTlNJbnRlZ2VyKXJv
dwogewotICAgIHJldHVybiBbW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldyBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1
Z2dlc3Rpb25UYWJsZVJvd1ZpZXcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChOU1ZpZXcgKil0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHZpZXdGb3JUYWJs
ZUNvbHVtbjooTlNUYWJsZUNvbHVtbiAqKXRhYmxlQ29sdW1uIHJvdzooTlNJbnRlZ2VyKXJvdwog
ewotICAgIFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyAqcmVzdWx0ID0gW3RhYmxlVmlldyBtYWtl
Vmlld1dpdGhJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyIG93bmVyOnNl
bGZdOworICAgIGF1dG8gcmVzdWx0ID0gcmV0YWluUHRyKFt0YWJsZVZpZXcgbWFrZVZpZXdXaXRo
SWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciBvd25lcjpzZWxmXSk7CiAK
ICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmVzdWx0ID0gYWRv
cHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdF0pOwogICAgICAgICBb
cmVzdWx0IHNldElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdOwogICAg
IH0KIAogICAgIGF1dG8mIHN1Z2dlc3Rpb24gPSBfc3VnZ2VzdGlvbnMuYXQocm93KTsKLSAgICBy
ZXN1bHQuc2hvdWxkU2hvd0JvdHRvbURpdmlkZXIgPSBfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxz
ICYmIHJvdyA8IHN0YXRpY19jYXN0PE5TSW50ZWdlcj4oX3N1Z2dlc3Rpb25zLnNpemUoKSAtIDEp
OworICAgIFtyZXN1bHQgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6X3Nob3dEaXZpZGVyc0Jl
dHdlZW5DZWxscyAmJiByb3cgPCBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KF9zdWdnZXN0aW9ucy5z
aXplKCkgLSAxKV07CiAgICAgW3Jlc3VsdCBzZXRWYWx1ZTpzdWdnZXN0aW9uLnZhbHVlIGxhYmVs
OnN1Z2dlc3Rpb24ubGFiZWxdOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVz
dWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IDMwNDcxMjc2ZjQ0MWY5NWNhY2YzMmIw
N2RmYjk1OTc3NmRhYzhiNTkuLjFkM2IxZmE3MzI1YTVmMzIzNWQ1ZmU4NjJmMTQzYTkwMzA5ZTI4
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFt
ZS5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKEJPT0wpX2hhc0N1c3RvbUNvbnRlbnRQcm92aWRl
cgogCiAtIChOU0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KIHsKLSAgICByZXR1cm4gW1soTlNB
cnJheSAqKV9mcmFtZS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpIHJldGFp
bl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoKE5TQXJyYXkgKilfZnJhbWUt
PmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoU2VjVHJ1c3RSZWYpX3NlcnZlclRydXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggOWIwOTRiZWQwNTgx
YmZlYjUyZWY2YjIxMjkwNzA1ODAyOTU0YTNiYS4uY2YyM2E0NDk3Y2ZhOGMyMmI1MzQ5ZjA0ZTZk
MDk4MzkyYmUwMjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtNzEsOSArNzEsOSBAQCAtIChDb2NvYUltYWdl
ICopcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOihXS1NuYXBzaG90T3B0aW9ucylvcHRpb25zIHdp
ZHRoOihOU051bQogICAgICAgICByZXR1cm4gbmlsOwogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICBy
ZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5t
YWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRt
YXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7
CiAjZWxzZQotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1h
Z2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFw
KCkubWFrZUNHSW1hZ2UoKS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggOTVkMWMwN2FiMmNjYjY1NWQ2ZDdiMWZl
MzI1Y2M1OWUwODNiZWRjNy4uZjBiNTA5NzZkYTRkZWU0NTVlZjI5M2QxZmMxZWQwZmM4NTc2ZjI5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCkBAIC04NSw3ICs4NSw3IEBAIC0g
KFdLRE9NTm9kZSAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0
ZXh0CiAKIC0gKGlkKXBhcnNlcllpZWxkVG9rZW4KIHsKLSAgICByZXR1cm4gW1tbV0tET01Eb2N1
bWVudFBhcnNlcllpZWxkVG9rZW4gYWxsb2NdIGluaXRXaXRoRG9jdW1lbnQ6ZG93bmNhc3Q8V2Vi
Q29yZTo6RG9jdW1lbnQ+KCpfaW1wbCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuIGFsbG9jXSBpbml0V2l0aERvY3VtZW50
OmRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpXSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQppbmRleCA2M2NkZDJiYzJi
YzRiNzk4YjU4NzcwYjQzMWYzYTE2NGQ5YzBkYWNmLi4yNDg2N2RmMzYxYTJkZDlmOTMxYzcwYTE3
YWNlOTA1MDBiZDdlZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQpAQCAt
MTU0LDExICsxNTQsMTEgQEAgc3RhdGljIFdLRE9NVHlwZSB0b1dLRE9NVHlwZShXZWJDb3JlVHlw
ZSBpbXBsLCBET01DYWNoZTxXZWJDb3JlVHlwZSwgV0tET01UeXBlPiYKICAgICBpZiAoIWltcGwp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKFdLRE9NVHlwZSB3cmFwcGVyID0gY2FjaGUu
Z2V0KGltcGwpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIFdLRE9NVHlwZSB3cmFwcGVyID0gaW5pdFdpdGhJbXBsKGltcGwpOworICAgICAgICBy
ZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhpbml0V2l0aEltcGwoaW1wbCkpOwogICAgIGlmICghd3JhcHBlcikKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggM2NhZDJjNWU4MTBiZjRiYjY1M2E0ZDQ5NTZj
MDcxZDVlODJlYTg3Zi4uOTBiZDAxMTg0NDg4MWU1NWQ4MTZhN2YxZWUxMzc4MTAzZjUyYTMzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgLSAoV0tET01S
YW5nZSAqKXJhbmdlQnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczooTlNVSW50
ZWdlciljaGFyYWN0ZXIKIHsKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKCpfaW1w
bCk7CiAgICAgYXV0byBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVj
dGlvbkF0V29yZEJvdW5kYXJ5KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oZGlyZWN0aW9u
ID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8gcmFuZ2UuZW5kIDogcmFuZ2Uuc3RhcnQp
LCBjaGFyYWN0ZXJzLCBkaXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyBX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgOiBXZWJDb3JlOjpTZWxlY3Rpb25E
aXJlY3Rpb246OkJhY2t3YXJkKTsKLSAgICByZXR1cm4gW1tbV0tET01SYW5nZSBhbGxvY10gX2lu
aXRXaXRoSW1wbDpjcmVhdGVMaXZlUmFuZ2UobmV3UmFuZ2UpLmdldCgpXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXS0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdpdGhJbXBsOmNy
ZWF0ZUxpdmVSYW5nZShuZXdSYW5nZSkuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMmE0ZjgwZmFlOGExYWUzZmEw
NDgxNGU5MmZmZTk4MTRjNjEyNTBmZS4uYzEwNmE2Mjk1YWU5OWNjNmE4Y2M2NDhiMDhlZWExNzc4
NmRhZDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNDIzLDcgKzQy
Myw3IEBAIC0gKFdLQnVuZGxlUGFnZVJlZilfYnVuZGxlUGFnZVJlZgogCiAtIChXS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZSAqKWhhbmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZToqX3BhZ2VdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQ
YWdlOipfcGFnZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlsb29rVXBC
cm93c2luZ0NvbnRleHRGcm9tSGFuZGxlOihXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqKWhhbmRs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCAxYzI3Y2E4MDkyMjZhMzE3ZGQ4YjA5ZmNkNWE2OThlODFjNjNlYTI4Li4wYTQ0
NDBkZmE1ZjQ3MGE0ZDc2ZThlYzJhNWM5Njc5ZDI4OTM5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTA3LDE2ICsx
MDcsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKIHsKLSAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBtb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBbW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0p
OwogCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgogICAgIHBp
ZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogICAgIC8vIEZJ
WE1FOiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGRvZXNuJ3QgcmVzcG9uZCB0byAtYWNj
ZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOi4KICAgICAvLyBFaXRoZXIg
aXQgbmVlZHMgdG8gb3IgdGhpcyBjYWxsIHNob3VsZCBiZSByZW1vdmVkLgogICAgIGlmIChbbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNz
aWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAgICBbKGlkKW1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lk
ZW50aWZpZXI6cGlkXTsKKyAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0
KCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07CiAgICAg
W21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1fbW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50ID0gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50OworICAgIG1fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQp
OwogCiAgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJl
bW90ZVRva2VuRGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRleCA4ZmZiYzIy
MTQ4YjcwODY2ZWNmZTIwNDNjZjA4YTNhMDZjZDlmMTgyLi5kODdkMWY5YzFkNTJkMGQ2ZjlkNGY0
YjU1OTY3MGRkOTM2MTE2MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBAIC01NiwxMCAr
NTYsMTAgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpc2libGVQb3NpdGlvbiAoSW50ZXJuYWwpCiAK
ICsgKFdlYlZpc2libGVQb3NpdGlvbiAqKV93cmFwVmlzaWJsZVBvc2l0aW9uOihWaXNpYmxlUG9z
aXRpb24pdmlzaWJsZVBvc2l0aW9uCiB7Ci0gICAgV2ViVmlzaWJsZVBvc2l0aW9uICp2cCA9IFtb
V2ViVmlzaWJsZVBvc2l0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHZwID0gYWRvcHROUyhb
W1dlYlZpc2libGVQb3NpdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFZpc2libGVQb3NpdGlvbiAq
Y29weSA9IG5ldyBWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKICAgICB2cC0+X2lu
dGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxXZWJPYmplY3RJbnRlcm5hbCAqPihjb3B5KTsKLSAg
ICByZXR1cm4gW3ZwIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gdnAuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLy8gUmV0dXJucyBuaWwgaWYgdmlzaWJsZSBwb3NpdGlvbiBpcyBudWxsLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IDhh
ZTMyYWE0ZTFiN2I1ZDIyNDVmOGJlODQ0NGZmZTEwNTBmZDEyZTguLmFhODc3ZGEwMjliMDZkYTlh
MmY4YTZkNmFjYzAwOTAxOTBlNzM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTI4NywxNiArMjg3LDE2IEBAIC0gKHZvaWQp
X2NoZWNrUERGVGl0bGUKICAgICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTlNTdHJpbmcgKnRpdGxlID0gbmlsOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dGl0bGU7CiAKICAgICBDR1BERkRpY3Rpb25hcnlSZWYgaW5mbyA9IENHUERGRG9jdW1lbnRHZXRJ
bmZvKF9QREZEb2N1bWVudCk7CiAgICAgQ0dQREZTdHJpbmdSZWYgdmFsdWU7CiAgICAgaWYgKENH
UERGRGljdGlvbmFyeUdldFN0cmluZyhpbmZvLCAiVGl0bGUiLCAmdmFsdWUpKQotICAgICAgICB0
aXRsZSA9IFsoTlNTdHJpbmcgKilDR1BERlN0cmluZ0NvcHlUZXh0U3RyaW5nKHZhbHVlKSBhdXRv
cmVsZWFzZV07CisgICAgICAgIHRpdGxlID0gYWRvcHRDRihDR1BERlN0cmluZ0NvcHlUZXh0U3Ry
aW5nKHZhbHVlKSk7CiAKLSAgICBpZiAoW3RpdGxlIGxlbmd0aF0pIHsKLSAgICAgICAgX3RpdGxl
ID0gYWRvcHROUyhbdGl0bGUgY29weV0pOwotICAgICAgICBjb3JlKFtzZWxmIF9mcmFtZV0pLT5s
b2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0RGly
ZWN0aW9uOjpMVFIgfSk7CisgICAgaWYgKHRpdGxlICYmIENGU3RyaW5nR2V0TGVuZ3RoKHRpdGxl
LmdldCgpKSkgeworICAgICAgICBfdGl0bGUgPSAoTlNTdHJpbmcgKil0aXRsZS5nZXQoKTsKKyAg
ICAgICAgY29yZShbc2VsZiBfZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoeyBfdGl0bGUuZ2V0KCksIFRleHREaXJlY3Rpb246OkxUUiB9KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDg1YTJmZGI2NzFjMmQyNjZi
ODVjMWZhMmM5NDllYmUwNGYzYjRmMGUuLjE2ZTc3ZTgxMjA3MzQ3ZGE3ODNjYWNkYzA4ODlkZTY0
MmU4ODNlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzg0LDEzICs3ODQs
MTMgQEAgRE9NTm9kZUZpbHRlciAqa2l0KFdlYkNvcmU6Ok5vZGVGaWx0ZXIqIGltcGwpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgaWYgKERPTU5vZGVGaWx0ZXIgKndyYXBwZXIgPSBn
ZXRET01XcmFwcGVyKGltcGwpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNl
KCk7CiAgICAgCi0gICAgRE9NTm9kZUZpbHRlciAqd3JhcHBlciA9IFtbRE9NTm9kZUZpbHRlciBh
bGxvY10gX2luaXRdOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Ob2RlRmlsdGVy
IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihpbXBsKTsKICAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHdyYXBwZXIsIGltcGwpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFz
ZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCBpbXBsKTsKKyAgICByZXR1cm4g
d3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiBXZWJDb3JlOjpOb2RlRmlsdGVyKiBjb3JlKERP
TU5vZGVGaWx0ZXIgKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUFic3RyYWN0Vmlldy5tbQppbmRleCBiZWUxZmM2MDY1MTdjZWI2NmQ1OWJiNThiM2I3YzIzZGYx
MzRmYzBkLi44YmQ2N2Y3MjAyZGQ0MTRmYmU0Y2RlMWE4OWI3YzA1ODM2NDM3MWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KQEAgLTg3LDEx
ICs4NywxMSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpET01XaW5kb3cqIHZhbHVl
KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTUFic3Ry
YWN0VmlldyAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIoZnJhbWUpKQotICAgICAgICByZXR1cm4g
W1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUFic3RyYWN0VmlldyAqd3Jh
cHBlciA9IFtbRE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiBy
ZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbRE9NQWJzdHJhY3RWaWV3IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRl
cm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihmcmFtZSk7Ci0gICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLCBmcmFtZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9y
ZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIGZyYW1lKTsKKyAgICBy
ZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiBET01BYnN0cmFjdFZpZXcgKmtpdChX
ZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyogdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01CbG9iLm1tCmluZGV4IDlkODliOWM1OWM5MTZjMWE3ZGUyZWRhMTcwNmM1NmMxZmViNjU3
MGEuLjIzNmE1MDFhYjYwNDdiYjY2Yzc3ZGMxOTk4OTZkNjM3MjYwMGI1OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC03MCwxMiArNzAsMTIgQEAgRE9NQmxvYiAq
a2l0KFdlYkNvcmU6OkJsb2IqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgaWYgKERPTUJsb2IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01C
bG9iICp3cmFwcGVyID0gW1tET01CbG9iIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiBy
ZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbRE9NQmxvYiBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSBy
ZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5y
ZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dy
YXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFs
dWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IDI3OWM1ZThk
OWZmYTg0NDBjMTFjN2U2ZjJiMWYxNjYzYjY3ZGE4ZDkuLmE3ZTY4OTAwYTk4MDViMGQ4MDY0N2M5
MThmMjNlN2IxM2I5ZmMwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01DU1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NS
dWxlLm1tCkBAIC05MSwxNCArOTEsMTQgQEAgRE9NQ1NTUnVsZSAqa2l0KFdlYkNvcmU6OkNTU1J1
bGUqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYg
KERPTUNTU1J1bGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01DU1NSdWxlICp3cmFw
cGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxET01DU1NSdWxl
PiB3cmFwcGVyID0gYWRvcHROUyhbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAg
ICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVy
bmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2
YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0
dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0
KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5k
ZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1
bGVMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1bGVMaXN0Lm1t
CmluZGV4IDk2YmRjNWYwMzY1Nzc4OTI1MTlhYjYxNmYxYTJjMGI5YTUxMjViNGMuLjE0ZmNlMDQx
M2M5ODE0ZTUzZDA3ZmEyMzAyM2ZjODAxYjEwNTVkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTUnVsZUxpc3QubW0KQEAgLTcyLDEyICs3MiwxMiBAQCBET01DU1NS
dWxlTGlzdCAqa2l0KFdlYkNvcmU6OkNTU1J1bGVMaXN0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01DU1NSdWxlTGlzdCAqd3JhcHBlciA9
IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIERPTUNTU1J1bGVMaXN0ICp3cmFwcGVyID0gW1tET01DU1NSdWxl
TGlzdCBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1
dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUNTU1J1bGVMaXN0
IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVs
ZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0
dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5k
ZXggODdhMzEzMGM4OTA0OTQzOWI0NzFhYTkyNTlhZTdhOTNkNzRlYWJiZS4uMTg0MDk3OWUxNjcx
NmZkNTRkZDYzYjYzMWYxMGEzZTk2MGY0MWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTE0OSwxMiArMTQ5
LDEyIEBAIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKmtpdChXZWJDb3JlOjpDU1NTdHlsZURlY2xh
cmF0aW9uKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IGlmIChET01DU1NTdHlsZURlY2xhcmF0aW9uICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAg
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqd3JhcHBlciA9IFtbRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9y
ZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24gYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnBy
ZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0g
ICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1
dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAg
ICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCmluZGV4IGZlYjEyNDMwNDUzY2Jk
OWU4NTk2MGU2YWI2MTUxYzE0MGZlZTFjZjUuLmFlMjk2OWNiMjcwMjM3ZjMwOTBiZjkyZDIyZmIy
Mzk0NzRkYzEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUu
bW0KQEAgLTc2LDE0ICs3NiwxNCBAQCBET01DU1NWYWx1ZSAqa2l0KFdlYkNvcmU6OkRlcHJlY2F0
ZWRDU1NPTVZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIGlmIChET01DU1NWYWx1ZSAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQot
ICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUNT
U1ZhbHVlICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAg
ICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0
cjxET01DU1NWYWx1ZT4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxsb2Nd
IF9pbml0XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHdy
YXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2
YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFs
dWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBl
cih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Db3VudGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50
ZXIubW0KaW5kZXggYTZhY2U4MmJhZjY0Y2JmMzg0MjA5YzljYTM5MTlhNzI0NmVkN2U5NC4uZDBl
MWIyMmFjMjA1ZmRhYWFkMzYwYTMwNTNlZTU3ZmIwNmM5ZjRmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KQEAgLTc2LDEyICs3NiwxMiBAQCBET01Db3VudGVy
ICpraXQoV2ViQ29yZTo6RGVwcmVjYXRlZENTU09NQ291bnRlciogdmFsdWUpCiAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NQ291bnRlciAqd3JhcHBlciA9
IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIERPTUNvdW50ZXIgKndyYXBwZXIgPSBbW0RPTUNvdW50ZXIgYWxs
b2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFz
ZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Db3VudGVyIGFsbG9jXSBfaW5p
dF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIo
d3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIu
YXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01FdmVudC5tbQppbmRleCA1Y2VlMzllMGJlN2Q0Y2MxN2M5NzdmYzViMTc3NzI0YTJjMzI4
ODQxLi5kZmEzNWI0MWJlNjJjZGRjNzhkMWZkMDdhMDk2MTYxOWI1YmNkYjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tCkBAIC0xODgsMTQgKzE4OCwxNCBAQCBET01F
dmVudCAqa2l0KFdlYkNvcmU6OkV2ZW50KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIGlmIChET01FdmVudCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIo
dmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIERPTUV2ZW50ICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsK
KyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIFJl
dGFpblB0cjxET01FdmVudD4gd3JhcHBlciA9IGFkb3B0TlMoW1traXRDbGFzcyh2YWx1ZSkgYWxs
b2NdIF9pbml0XSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwq
Pih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwg
dmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3Jh
cHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVh
c2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01GaWxlTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01G
aWxlTGlzdC5tbQppbmRleCAzYmY3MGVhZDg4MWMzYThhNzgwMWY5NWI3YTc1ODkwYTg2NTliYzUy
Li5kOTM3Njc4NmZiZWNiZDY1MGU3MDE1OGE5M2M4YjAyNDlmYTc5ZjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZUxpc3QubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUZpbGVMaXN0Lm1tCkBAIC03NiwxMiArNzYsMTIgQEAgRE9N
RmlsZUxpc3QgKmtpdChXZWJDb3JlOjpGaWxlTGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NRmlsZUxpc3QgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICBET01GaWxlTGlzdCAqd3JhcHBlciA9IFtbRE9NRmlsZUxpc3QgYWxsb2Nd
IF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgp
OworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01GaWxlTGlzdCBhbGxvY10gX2luaXRd
KTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdElu
dGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdy
YXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1
dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KaW5kZXggNDI3ZTAzMmI1ZjZkNWU2MmQ4ZGE3
ZGMyYjNjOWI2NzVjMDMzNmQ5Ny4uOWJiZDA1MjMxYjBkZmU1ODEyMThjYjFlZmMxOTkyOTBhZDRi
YzA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xs
ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVj
dGlvbi5tbQpAQCAtODksMTQgKzg5LDE0IEBAIERPTUhUTUxDb2xsZWN0aW9uICpraXQoV2ViQ29y
ZTo6SFRNTENvbGxlY3Rpb24qIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgaWYgKERPTUhUTUxDb2xsZWN0aW9uICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBl
cih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgRE9NSFRNTENvbGxlY3Rpb24gKndyYXBwZXIgPSBbW2tpdENsYXNzKHZhbHVlKSBhbGxv
Y10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNl
KCk7CisgICAgUmV0YWluUHRyPERPTUhUTUxDb2xsZWN0aW9uPiB3cmFwcGVyID0gYWRvcHROUyhb
W2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2Fz
dDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRk
RE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxl
YXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1
cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0K
aW5kZXggMTRiZDZlN2RhNDBjMzRmYjY5ZjVhMjZkOTM4MGM4ODgwNGIyM2EzNS4uMDMyOTkxNjNj
NDA1ZDBlMmZhOGVhNWY0YmFlNDZiMTk2MWU0NzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0xMTMs
MTIgKzExMywxMiBAQCBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKmtpdChXZWJDb3JlOjpIVE1M
T3B0aW9uc0NvbGxlY3Rpb24qIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgaWYgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqd3JhcHBlciA9IGdldERP
TVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqd3JhcHBlciA9IFtbRE9NSFRN
TE9wdGlvbnNDb2xsZWN0aW9uIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5Q
dHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtb
RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9p
bnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAg
ICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAg
IHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAog
I3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01J
bXBsZW1lbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbXBsZW1l
bnRhdGlvbi5tbQppbmRleCA3MzJjZjQzOGJkNjIxMWVhYjMyZjQ2MjE5YWMxODlhY2JiYzk5Y2Fl
Li4zYzlmNDljYmRkOGQ2MGI2ODBhNmFlZmZkNGZjY2Q1YjE4ZTFjNThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW1wbGVtZW50YXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUltcGxlbWVudGF0aW9uLm1tCkBAIC0xMTgsMTAg
KzExOCwxMCBAQCBET01JbXBsZW1lbnRhdGlvbiAqa2l0KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0
aW9uKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlm
IChET01JbXBsZW1lbnRhdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAg
ICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTUltcGxl
bWVudGF0aW9uICp3cmFwcGVyID0gW1tET01JbXBsZW1lbnRhdGlvbiBhbGxvY10gX2luaXRdOwor
ICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTUltcGxlbWVudGF0aW9uIGFsbG9jXSBfaW5pdF0pOwog
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9N
V3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3Jl
bGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
ZWRpYUVycm9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhRXJyb3Iu
bW0KaW5kZXggZTdkOTYzN2MzZjQ3MDA2NjNhMTdhNjE0Njg3NDc3YTNiODgxNDg5Yi4uNDQxNTdj
NDJiNDBhNzllNmY2YjkxMTg0MzgxNGQ0OTI5YTViYTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhRXJyb3IubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTU1lZGlhRXJyb3IubW0KQEAgLTY5LDEyICs2OSwxMiBAQCBET01NZWRp
YUVycm9yICpraXQoV2ViQ29yZTo6TWVkaWFFcnJvciogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NTWVkaWFFcnJvciAqd3JhcHBlciA9IGdl
dERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIERPTU1lZGlhRXJyb3IgKndyYXBwZXIgPSBbW0RPTU1lZGlhRXJyb3Ig
YWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVs
ZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01NZWRpYUVycm9yIGFsbG9j
XSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9N
T2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdy
YXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07
CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdy
YXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4IDk1N2Q1NDU1YTY2
MzRhMGVmNzc3NTdmNzdiMTkwNWU0Y2FjMWViNGIuLjJkMTc5ZDQ4NTY4MDg3NWRhZTk0N2FiMDQz
YjIwYzdlODQzNTY2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01NZWRpYUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlh
TGlzdC5tbQpAQCAtOTYsMTIgKzk2LDEyIEBAIERPTU1lZGlhTGlzdCAqa2l0KFdlYkNvcmU6Ok1l
ZGlhTGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICBpZiAoRE9NTWVkaWFMaXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NTWVkaWFM
aXN0ICp3cmFwcGVyID0gW1tET01NZWRpYUxpc3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0
dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tET01NZWRpYUxpc3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2lu
dGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAg
ICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAg
cmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIu
Z2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAj
dW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5h
bWVkTm9kZU1hcC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVN
YXAubW0KaW5kZXggNmY2ODViNDUzM2YxNWZlMjc1MTBiNGVjOTgzODkyNzFiODhkYzE3Ny4uZDQ2
MDFlN2RkNTEyZGQxZWFiYmY2NWU4ZTZjODQwYjM1MzAzYTBkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCkBAIC0xMjUsMTIgKzEyNSwxMiBA
QCBET01OYW1lZE5vZGVNYXAgKmtpdChXZWJDb3JlOjpOYW1lZE5vZGVNYXAqIHZhbHVlKQogICAg
IGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTU5hbWVkTm9kZU1h
cCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFw
cGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTU5hbWVkTm9kZU1hcCAqd3JhcHBlciA9
IFtbRE9NTmFtZWROb2RlTWFwIGFsbG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5Q
dHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtb
RE9NTmFtZWROb2RlTWFwIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBb
d3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2
YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElN
UEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGUubW0KaW5kZXggNWQxNGJhMTQ5NmUy
OTRkMjU2MTYyZjgzODJhMzFlYzA4MmI2M2RmMy4uYjUyZTM2NjE0ZTJjYTVlMzI4NzA2NzRkOTE0
MmMzMDMzNDlkOTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGUubW0KQEAg
LTYyLDE0ICs2MiwxNCBAQCBET01Ob2RlICpraXQoTm9kZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NTm9kZSAqd3JhcHBlciA9IGdldERP
TVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIERPTU5vZGUgKndyYXBwZXIgPSBbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10g
X2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7
CisgICAgUmV0YWluUHRyPERPTU5vZGU+IHdyYXBwZXIgPSBhZG9wdE5TKFtba2l0Q2xhc3ModmFs
dWUpIGFsbG9jXSBfaW5pdF0pOwogICAgIGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdElu
dGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdy
YXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUl0ZXJhdG9yLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGVJdGVyYXRvci5tbQppbmRleCAxNTdkZDE4MGRlNGU1
NjQ5MWNkMGEwYTE5ODA2ZjNkMDU3MGNmZTRmLi41NWY4NTRkNWU0MmM2OTNkYzc4OWUzNzBmNjhk
ZjczNWJkYTcyMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Tm9kZUl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2Rl
SXRlcmF0b3IubW0KQEAgLTEyNywxMiArMTI3LDEyIEBAIERPTU5vZGVJdGVyYXRvciAqa2l0KFdl
YkNvcmU6Ok5vZGVJdGVyYXRvciogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICBpZiAoRE9NTm9kZUl0ZXJhdG9yICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBl
cih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgRE9NTm9kZUl0ZXJhdG9yICp3cmFwcGVyID0gW1tET01Ob2RlSXRlcmF0b3IgYWxsb2Nd
IF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgp
OworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01Ob2RlSXRlcmF0b3IgYWxsb2NdIF9p
bml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmpl
Y3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBl
cih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAg
ICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBl
ci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU5vZGVMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTU5vZGVMaXN0Lm1tCmluZGV4IGUwOTg2NTZmM2IzYWI5MTBjNTY1ODkwMTllNGI1
MzRkYTA0OTFjZDMuLmQwMDMzZDljZmJmNTk5ZDA0OGMxNzNmZjUyNGUzZGI0NzRhYmYxMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ob2RlTGlzdC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTm9kZUxpc3QubW0KQEAgLTcwLDEyICs3
MCwxMiBAQCBET01Ob2RlTGlzdCAqa2l0KFdlYkNvcmU6Ok5vZGVMaXN0KiB2YWx1ZSkKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01Ob2RlTGlzdCAqd3Jh
cHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTU5vZGVMaXN0ICp3cmFwcGVyID0gW1tET01Ob2Rl
TGlzdCBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1
dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTU5vZGVMaXN0IGFs
bG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERP
TVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFz
ZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJu
IHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVmIElNUEwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SR0JDb2xvci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01SR0JDb2xvci5tbQppbmRleCA5NWJjMDg4YzA2OGEyNmI5YjkyZjk4
YWI5YmMwZDk5M2Y5Y2IwMjNhLi45NzYyYTYwNDBmYWQ3ZjQ3ZTI1MWYwYTcwYzk3MjY2NGM4OTA0
MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3Iu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCkBAIC0x
MDMsMTIgKzEwMywxMiBAQCBET01SR0JDb2xvciAqa2l0KFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NP
TVJHQkNvbG9yKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIGlmIChET01SR0JDb2xvciAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAg
ICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVJHQkNv
bG9yICp3cmFwcGVyID0gW1tET01SR0JDb2xvciBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1
cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW0RPTVJHQkNvbG9yIGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRl
cm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAg
dmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJl
dHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdl
dCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3Vu
ZGVmIElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5n
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQppbmRleCAyODc2
NjBmZWNhZTk4NmRmOWIzOWQ4ZDU3ZTAzZWJiY2QwZjk0MTkyLi4xNGY0ODlkYWE1MTI2NTUzYWVm
MWU3YjM4MzJiMjdkOTExYjg3NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJh
bmdlLm1tCkBAIC0zMDQsMTIgKzMwNCwxMiBAQCBET01SYW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdl
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChE
T01SYW5nZSAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4g
W1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVJhbmdlICp3cmFwcGVyID0g
W1tET01SYW5nZSBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBw
ZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTVJhbmdl
IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVs
ZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0
dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogRE9NUmFuZ2UgKmtpdChjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NUmVjdC5tbQppbmRleCA5MjQzZWYyODdmYzNkMTc4ZDMzYzhhMWNkYWQ2YWE4MjczYmZl
MmY2Li5kNzJjMGQxZjliM2ZiZWQxMmEwODhmNTI1MTJmNjlkMzAzMGM3MDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmVjdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NUmVjdC5tbQpAQCAtODMsMTIgKzgzLDEyIEBAIERPTVJlY3Qg
KmtpdChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01SZWN0KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01SZWN0ICp3cmFwcGVyID0gZ2V0RE9N
V3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVs
ZWFzZV07Ci0gICAgRE9NUmVjdCAqd3JhcHBlciA9IFtbRE9NUmVjdCBhbGxvY10gX2luaXRdOwor
ICAgICAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTVJlY3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBl
ci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVl
KTsKICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7
Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdy
YXBwZXIuZ2V0KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwog
fQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVN0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVT
aGVldC5tbQppbmRleCA5YTIzY2U0NGM2MTdlMDU5NGE2OTRkMGFiN2I2MDkwNWE4NThkMjA5Li5j
MTFiMmQyY2FkZThmZDY1NWNlOWYxMDBkYzZjMmE0YTg3ZTRkN2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQpAQCAtMTExLDE0ICsxMTEsMTQgQEAg
RE9NU3R5bGVTaGVldCAqa2l0KFdlYkNvcmU6OlN0eWxlU2hlZXQqIHZhbHVlKQogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTVN0eWxlU2hlZXQgKndyYXBw
ZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01TdHlsZVNoZWV0ICp3cmFwcGVyID0gW1traXRDbGFz
cyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVy
KS5hdXRvcmVsZWFzZSgpOworICAgIFJldGFpblB0cjxET01TdHlsZVNoZWV0PiB3cmFwcGVyID0g
YWRvcHROUyhbW2tpdENsYXNzKHZhbHVlKSBhbGxvY10gX2luaXRdKTsKICAgICBpZiAoIXdyYXBw
ZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRl
cnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2YWx1ZS0+cmVmKCk7
Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVy
IGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIHZhbHVlKTsK
KyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5kZWYgSU1QTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXRMaXN0Lm1tCmluZGV4
IGJmMDkyYjFmZmViNzYyNjY0Y2NhZTM0M2UwNmEzMWQ5ZDM3NWRhNjUuLjg5NGE2MzQxYTc3ZjI3
Y2FmZjVmMjUzZGI1Nzc5NDU4ZmUwMjgxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NU3R5bGVTaGVldExpc3QubW0KQEAgLTczLDEyICs3MywxMiBAQCBET01TdHls
ZVNoZWV0TGlzdCAqa2l0KFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0KiB2YWx1ZSkKICAgICBpZiAo
IXZhbHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01TdHlsZVNoZWV0TGlzdCAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVN0eWxlU2hlZXRMaXN0ICp3cmFwcGVyID0g
W1tET01TdHlsZVNoZWV0TGlzdCBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W0RPTVN0eWxlU2hlZXRMaXN0IGFsbG9jXSBfaW5pdF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5h
bCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFs
dWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVy
biBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgp
LCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3VuZGVm
IElNUEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UaW1lUmFu
Z2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRpbWVSYW5nZXMubW0KaW5k
ZXggMTQxZjJiYjJjMmY0NWI4NDU1YmY4NjQ1YjhjMDk4ZDllM2M4Y2Y0Ny4uMDQyMTU4NjFmMTAz
ZGI0YjVjMTdkMzQ0NDI4NjMxNjE5NTUwMjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVRpbWVSYW5nZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVRpbWVSYW5nZXMubW0KQEAgLTgwLDEyICs4MCwxMiBAQCBET01UaW1lUmFuZ2Vz
ICpraXQoV2ViQ29yZTo6VGltZVJhbmdlcyogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NVGltZVJhbmdlcyAqd3JhcHBlciA9IGdldERPTVdy
YXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotICAgIERPTVRpbWVSYW5nZXMgKndyYXBwZXIgPSBbW0RPTVRpbWVSYW5nZXMgYWxsb2Nd
IF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgp
OworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01UaW1lUmFuZ2VzIGFsbG9jXSBfaW5p
dF0pOwogICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwqPih2YWx1ZSk7CiAgICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIo
d3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLmdldCgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIHdyYXBwZXIu
YXV0b3JlbGVhc2UoKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCmluZGV4IDI0YTVkMTJlY2IzYWMyNWY0
NWIxYjIwMDNkNGU2NDkxODEzOWJhODEuLjFkMTFlZTRjZjkxZjE0Nzk0NDc3YzI1MjZhMTIzZWJj
NWM2YzUyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tl
bkxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5t
bQpAQCAtOTYsMTIgKzk2LDEyIEBAIERPTVRva2VuTGlzdCAqa2l0KFdlYkNvcmU6OkRPTVRva2Vu
TGlzdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBp
ZiAoRE9NVG9rZW5MaXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAg
IHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVG9rZW5MaXN0
ICp3cmFwcGVyID0gW1tET01Ub2tlbkxpc3QgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJu
IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tET01Ub2tlbkxpc3QgYWxsb2NdIF9pbml0XSk7CiAgICAgd3JhcHBlci0+X2ludGVy
bmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKICAgICB2
YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0
dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0
KCksIHZhbHVlKTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAjdW5k
ZWYgSU1QTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRyZWVX
YWxrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVHJlZVdhbGtlci5tbQpp
bmRleCAzZGRiODAzN2FkMTlhOGI4MWRhNGVkNzNlZDJhMGEwYzhhMDg0Y2M5Li4yYTYxZGFkNGJl
N2E0NTExM2M5Yzc2OWQzNDE4NmI5YTU2OGI4YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVHJlZVdhbGtlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVHJlZVdhbGtlci5tbQpAQCAtMTc2LDEyICsxNzYsMTIgQEAgRE9NVHJlZVdh
bGtlciAqa2l0KFdlYkNvcmU6OlRyZWVXYWxrZXIqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKERPTVRyZWVXYWxrZXIgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICBET01UcmVlV2Fsa2VyICp3cmFwcGVyID0gW1tET01UcmVlV2Fsa2VyIGFs
bG9jXSBfaW5pdF07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVh
c2UoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbRE9NVHJlZVdhbGtlciBhbGxvY10g
X2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9i
amVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwor
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJldHVybiB3cmFw
cGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGgubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NWFBhdGgubW0KaW5kZXggYzdlMzQ4YjVjMjk0YTY1ZGZkZTU0MjJhMGM4MDNiMmI0
MGJhNDFkZi4uN2YzMmRjNmExNTk0M2RhYzZhOTZjMWRjNDU3NmRkODUzOGYyZjU3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aC5tbQpAQCAtNjMsMTMgKzYzLDEzIEBAIERP
TU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqa2l0KFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciogaW1w
bCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBpZiAoRE9NTmF0aXZlWFBhdGhOU1Jl
c29sdmVyICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcihpbXBsKSkKLSAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKS5hdXRvcmVsZWFzZSgpOwogICAgIAotICAgIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciAqd3JhcHBlciA9IFtbRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIGFsbG9jXSBfaW5pdF07Cisg
ICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBhbGxv
Y10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERP
TU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3Jh
cHBlcih3cmFwcGVyLCBpbXBsKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOyAg
ICAKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIuZ2V0KCksIGltcGwpOworICAgIHJldHVybiB3
cmFwcGVyLmF1dG9yZWxlYXNlKCk7ICAgIAogfQogCiAjdW5kZWYgSU1QTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aEV4cHJlc3Npb24ubW0KaW5kZXggYWVkZjM1
YTIwMzJhNWRmYTU2MWQyOTM2ZjIxNDdjNjJiZjk0ZjBkYi4uYzE0NzAwM2I0NjQxOTJlZmMzYTEz
MjY1MTIyMWQ4MGVmNjAzOWEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVhQYXRoRXhwcmVzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NWFBhdGhFeHByZXNzaW9uLm1tCkBAIC03OCwxMiArNzgsMTIgQEAgRE9NWFBhdGhFeHBy
ZXNzaW9uICpraXQoV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uKiB2YWx1ZSkKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChET01YUGF0aEV4cHJlc3Npb24gKndy
YXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01YUGF0aEV4cHJlc3Npb24gKndyYXBwZXIgPSBb
W0RPTVhQYXRoRXhwcmVzc2lvbiBhbGxvY10gX2luaXRdOworICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKHdyYXBwZXIpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W0RPTVhQYXRoRXhwcmVzc2lvbiBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJu
YWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZh
bHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1
cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQo
KSwgdmFsdWUpOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRl
ZiBJTVBMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhS
ZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0K
aW5kZXggNTQ5YzhlMTVkMDFkNDQ4NzdhYWVlMmYzNWZiYjVlZGI2NzkxN2UwZC4uMzk2ODY3Mzlk
MGE2YWIzZGU5NGNlNDZiMGNhNmZmZjNkMDA0YmExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAtMTE4LDEyICsxMTgsMTIgQEAgRE9NWFBh
dGhSZXN1bHQgKmtpdChXZWJDb3JlOjpYUGF0aFJlc3VsdCogdmFsdWUpCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoRE9NWFBhdGhSZXN1bHQgKndyYXBwZXIg
PSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKLSAgICBET01YUGF0aFJlc3VsdCAqd3JhcHBlciA9IFtbRE9NWFBhdGhS
ZXN1bHQgYWxsb2NdIF9pbml0XTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKS5h
dXRvcmVsZWFzZSgpOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tET01YUGF0aFJlc3Vs
dCBhbGxvY10gX2luaXRdKTsKICAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9j
YXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwogICAgIHZhbHVlLT5yZWYoKTsKLSAgICBh
ZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3Jl
bGVhc2VdOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlci5nZXQoKSwgdmFsdWUpOworICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKICN1bmRlZiBJTVBMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCmluZGV4IDdkNzJmZjVi
ZDZkYjk0NjZmNGU5NjI2OTA3NDJhMjg4OWVhNjNhZjkuLjUyMDA3YzQ0ZDhlMmRmMzdhZWQ3OTY4
ZGY3YmZhZWMxOWI3NmQxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9XZWJET01PcGVyYXRpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9X
ZWJET01PcGVyYXRpb25zLm1tCkBAIC04NywxNiArODcsMTYgQEAgQGltcGxlbWVudGF0aW9uIERP
TU5vZGUgKFdlYkRPTU5vZGVPcGVyYXRpb25zKQogCiAtIChXZWJBcmNoaXZlICopd2ViQXJjaGl2
ZQogewotICAgIHJldHVybiBbW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3JlTGVnYWN5
V2ViQXJjaGl2ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoc2VsZikpXSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhD
b3JlTGVnYWN5V2ViQXJjaGl2ZTpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUoc2VsZikp
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV2ViQXJjaGl2ZSAqKXdlYkFyY2hpdmVCeUZpbHRl
cmluZ1N1YmZyYW1lczooV2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyKXdlYkFyY2hpdmVTdWJmcmFt
ZUZpbHRlcgogewotICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW1dlYkFyY2hpdmUgYWxs
b2NdIF9pbml0V2l0aENvcmVMZWdhY3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZSgqY29yZShzZWxmKSwgW3dlYkFyY2hpdmVTdWJmcmFtZUZpbHRlcl0oRnJhbWUmIHN1YmZyYW1l
KSAtPiBib29sIHsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBh
bGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKCpjb3JlKHNlbGYpLCBbd2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyXShGcmFtZSYgc3ViZnJh
bWUpIC0+IGJvb2wgewogICAgICAgICByZXR1cm4gd2ViQXJjaGl2ZVN1YmZyYW1lRmlsdGVyKGtp
dCgmc3ViZnJhbWUpKTsKLSAgICB9KV07CisgICAgfSldKTsKIAotICAgIHJldHVybiBbd2ViQXJj
aGl2ZSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdlYkFyY2hpdmUuYXV0b3JlbGVhc2UoKTsK
IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xODYsNyArMTg2LDcgQEAgQGltcGxl
bWVudGF0aW9uIERPTVJhbmdlIChXZWJET01SYW5nZU9wZXJhdGlvbnMpCiAKIC0gKFdlYkFyY2hp
dmUgKil3ZWJBcmNoaXZlCiB7Ci0gICAgcmV0dXJuIFtbW1dlYkFyY2hpdmUgYWxsb2NdIF9pbml0
V2l0aENvcmVMZWdhY3lXZWJBcmNoaXZlOkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShtYWtlU2lt
cGxlUmFuZ2UoKmNvcmUoc2VsZikpKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViQXJjaGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKG1ha2VTaW1wbGVSYW5nZSgqY29yZShzZWxmKSkpXSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdENvbnRleHRN
ZW51RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9EZWZhdWx0RGVsZWdhdGVz
L1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tCmluZGV4IGRjZWM2Y2Q1YjIyYTdkYWY5
ZjQyODgzOTczYTU3YTJlNzUwMTA2MjAuLmYyZTdlMzI2MjFlMWFkYThhODEzMDU3ZTAzODZjZTUx
MWZkM2ExODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0
ZS5tbQpAQCAtNTcsNyArNTcsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViRGVmYXVsdFVJRGVsZWdh
dGUgKFdlYkNvbnRleHRNZW51KQogCiAtIChOU01lbnVJdGVtICopbWVudUl0ZW1XaXRoVGFnOihp
bnQpdGFnIHRhcmdldDooaWQpdGFyZ2V0IHJlcHJlc2VudGVkT2JqZWN0OihpZClyZXByZXNlbnRl
ZE9iamVjdAogewotICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gW1tbTlNNZW51SXRlbSBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gbWVudUl0ZW0gPSBhZG9wdE5TKFtbTlNN
ZW51SXRlbSBhbGxvY10gaW5pdF0pOwogICAgIFttZW51SXRlbSBzZXRUYWc6dGFnXTsKICAgICBb
bWVudUl0ZW0gc2V0VGFyZ2V0OnRhcmdldF07IC8vIGNhbiBiZSBuaWwKICAgICBbbWVudUl0ZW0g
c2V0UmVwcmVzZW50ZWRPYmplY3Q6cmVwcmVzZW50ZWRPYmplY3RdOwpAQCAtMTE0LDcgKzExNCw3
IEBAIC0gKE5TTWVudUl0ZW0gKiltZW51SXRlbVdpdGhUYWc6KGludCl0YWcgdGFyZ2V0OihpZCl0
YXJnZXQgcmVwcmVzZW50ZWRPYmplY3Q6KGlkCiAKICAgICBbbWVudUl0ZW0gc2V0QWN0aW9uOmFj
dGlvbl07CiAgICAgCi0gICAgcmV0dXJuIG1lbnVJdGVtOworICAgIHJldHVybiBtZW51SXRlbS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKWFwcGVuZERlZmF1bHRJdGVtczooTlNBcnJheSAq
KWRlZmF1bHRJdGVtcyB0b0FycmF5OihOU011dGFibGVBcnJheSAqKW1lbnVJdGVtcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3Qu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5t
bQppbmRleCBkNmFmNzU1ZmZhNzM4Yjk5M2Y3Zjc4N2VjM2U4YzNmNGVjZGE3MGYzLi5jN2VkMGZk
MzIzNjVjMzIwOGFmODkzNjQzNzQyNWFlNDFhZWQyYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQpAQCAtODEsNyAr
ODEsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3QgKmtpdChCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3
YXJkTGlzdCkKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0ICp3ZWJCYWNrRm9yd2FyZExpc3Qg
PSBiYWNrRm9yd2FyZExpc3RzKCkuZ2V0KGJhY2tGb3J3YXJkTGlzdCkpCiAgICAgICAgIHJldHVy
biB3ZWJCYWNrRm9yd2FyZExpc3Q7CiAKLSAgICByZXR1cm4gW1tbV2ViQmFja0ZvcndhcmRMaXN0
IGFsbG9jXSBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDoqYmFja0ZvcndhcmRMaXN0XSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJCYWNrRm9yd2FyZExpc3QgYWxsb2NdIGlu
aXRXaXRoQmFja0ZvcndhcmRMaXN0OipiYWNrRm9yd2FyZExpc3RdKS5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChpZClpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDooUmVmPEJhY2tGb3J3YXJkTGlzdD4m
JiliYWNrRm9yd2FyZExpc3QKQEAgLTEzOSw3ICsxMzksNyBAQCAtICh2b2lkKWFkZEl0ZW06KFdl
Ykhpc3RvcnlJdGVtICopZW50cnkKICAgICAvLyBTaW5jZSB0aGUgYXNzdW1lZCBjb250cmFjdCB3
aXRoIFdlYkJhY2tGb3J3YXJkTGlzdCBpcyB0aGF0IGl0IHJldGFpbnMgaXRzIFdlYkhpc3RvcnlJ
dGVtcywKICAgICAvLyB0aGUgZm9sbG93aW5nIGxpbmUgcHJldmVudHMgYSB3aG9sZSBjbGFzcyBv
ZiBwcm9ibGVtcyB3aGVyZSBhIGhpc3RvcnkgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgaW4KICAgICAv
LyBhIGZ1bmN0aW9uLCBhZGRlZCB0byB0aGUgQkZsaXN0LCB0aGVuIHVzZWQgaW4gdGhlIHJlc3Qg
b2YgdGhhdCBmdW5jdGlvbi4KLSAgICBbW2VudHJ5IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAg
IHJldGFpblB0cihlbnRyeSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClyZW1vdmVJdGVt
OihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KQEAgLTIxNCwxNyArMjE0LDE3IEBAIC0gKHZvaWQpZ29U
b0l0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbQogCiAtIChXZWJIaXN0b3J5SXRlbSAqKWJhY2tJ
dGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmJhY2tJdGVtKCkuZ2V0KCkpIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoa2l0KGNvcmUoc2VsZikt
PmJhY2tJdGVtKCkuZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJIaXN0b3J5SXRl
bSAqKWN1cnJlbnRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmN1cnJlbnRJ
dGVtKCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIo
a2l0KGNvcmUoc2VsZiktPmN1cnJlbnRJdGVtKCkuZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChXZWJIaXN0b3J5SXRlbSAqKWZvcndhcmRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNv
cmUoc2VsZiktPmZvcndhcmRJdGVtKCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiByZXRhaW5QdHIoa2l0KGNvcmUoc2VsZiktPmZvcndhcmRJdGVtKCkuZ2V0KCkpKS5h
dXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgYm9vbCBidW1wZXJDYXJCYWNrRm9yd2FyZEhhY2tO
ZWVkZWQoKQpAQCAtMzMzLDcgKzMzMyw3IEBAIC0gKGludClmb3J3YXJkTGlzdENvdW50CiAKIC0g
KFdlYkhpc3RvcnlJdGVtICopaXRlbUF0SW5kZXg6KGludClpbmRleAogewotICAgIHJldHVybiBb
W2tpdChjb3JlKHNlbGYpLT5pdGVtQXRJbmRleChpbmRleCkuZ2V0KCkpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoa2l0KGNvcmUoc2VsZiktPml0ZW1BdEluZGV4
KGluZGV4KS5nZXQoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBjN2Y0NWFjNWUwM2UwNTI0
YWU5ZTkwNGZmNjExMjExMmI5NTJjODczLi4xNzFlOGIzNDdjYjFkOTJkYjIxZjc3OTAxNTRkOGRl
NmUzMWNkZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5Lm1tCkBAIC02MjQsNyArNjI0LDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIC8vIHRoYXQg
Y2xpZW50cyBjYW4gbGVhcm4gb2YgZGlzY2FyZGVkIGl0ZW1zIGJ5IGxpc3RlbmluZyB0byBXZWJI
aXN0b3J5SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24uCiAgICAgV2ViSGlz
dG9yeVdyaXRlciB3cml0ZXIoX2VudHJpZXNCeURhdGUuZ2V0KCkpOwogICAgIHdyaXRlci53cml0
ZVByb3BlcnR5TGlzdCgpOwotICAgIHJldHVybiBbWyhOU0RhdGEgKil3cml0ZXIucmVsZWFzZURh
dGEoKS5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKChO
U0RhdGEgKil3cml0ZXIucmVsZWFzZURhdGEoKS5nZXQoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoQk9PTClzYXZlVG9VUkw6KE5TVVJMICopVVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVt
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpp
bmRleCA4YTYxOGM2ZDE4MDhjZjdlMzhkNWUwMDI1ZGYzOGM3Zjc4YmE1ZmU5Li44MTBmNjdiN2E4
NThjZjdiYWQ4MDg1MjIwY2Y4OWJkYzNkMjEwYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTI3MCwxMyArMjcwLDEzIEBA
IFdlYkhpc3RvcnlJdGVtICpraXQoSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFpdGVtKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmIChhdXRvIHdyYXBwZXIgPSBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkuZ2V0KGl0ZW0pKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIHJldHVybiBbW1tXZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdFdpdGhX
ZWJDb3JlSGlzdG9yeUl0ZW06Kml0ZW1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbV2Vi
SGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVtOippdGVtXSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogKyAoV2ViSGlzdG9yeUl0ZW0gKillbnRyeVdpdGhVUkw6KE5TVVJM
ICopVVJMCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCB0aXRs
ZTpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGlu
aXRXaXRoVVJMOlVSTCB0aXRsZTpuaWxdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZClpbml0
V2l0aFVSTFN0cmluZzooTlNTdHJpbmcgKilVUkxTdHJpbmcgdGl0bGU6KE5TU3RyaW5nICopdGl0
bGUgZGlzcGxheVRpdGxlOihOU1N0cmluZyAqKWRpc3BsYXlUaXRsZSBsYXN0VmlzaXRlZFRpbWVJ
bnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpdGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggOTI2ZjVkNTYyZjgzOGJi
NzM2M2U3OTQ5Njk4Mjg2ZmJlMWM1OTM3Yi4uMmJhMDA2ZGQzZTdiMmFmYzUwZWZmMjg0NTMyMGQ5
NjUwNWJhNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xNTgsOSArMTU4LDkgQEAgLShOU1N0cmluZyAqKV93
ZWJraXRfZmlsZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzCiAKIC0oTlNTdHJpbmcgKilf
d2Via2l0X3N0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlCiB7Ci0gICAgTlNNdXRhYmxlU3RyaW5n
ICp0cmltbWVkID0gW1tzZWxmIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgQ0ZTdHJp
bmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQpOwot
ICAgIHJldHVybiB0cmltbWVkOworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3NlbGYgbXV0
YWJsZUNvcHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChfX2JyaWRnZSBDRk11dGFi
bGVTdHJpbmdSZWYpdHJpbW1lZC5nZXQoKSk7CisgICAgcmV0dXJuIHRyaW1tZWQuYXV0b3JlbGVh
c2UoKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KaW5kZXggODJhZTFkYjVlNWY3NGUyNGVlNjk3YjFh
OGZjMDVjNWM0NjUxYmM5Yy4uNmVjN2NjMGRiMjI3MmNlNGJkM2RhMTc0ZWEzMjk0NTg2ZGRmZDE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRy
YXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMu
bW0KQEAgLTI4Niw3ICsyODYsNyBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9w
YXJzZVJGQzgyMkhlYWRlckZpZWxkcwogCiAgICAgY29uc3QgVUludDgqIGJ5dGVzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVUludDgqPihbc2VsZiBieXRlc10pOwogICAgIE5TVUludGVnZXIgbGVuZ3Ro
ID0gW3NlbGYgbGVuZ3RoXTsKLSAgICBOU1N0cmluZyAqbGFzdEtleSA9IG5pbDsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IGxhc3RLZXk7CiAgICAgY29uc3QgVUludDggKmVvbDsKIAogICAgIC8v
IExvb3Agb3ZlciBsaW5lcyB1bnRpbCB3ZSdyZSBwYXN0IHRoZSBoZWFkZXIsIG9yIHdlIGNhbid0
IGZpbmQgYW55IG1vcmUgZW5kLW9mLWxpbmVzCkBAIC0zMTEsMTEgKzMxMSwxMSBAQCAtIChOU011
dGFibGVEaWN0aW9uYXJ5ICopX3dlYmtpdF9wYXJzZVJGQzgyMkhlYWRlckZpZWxkcwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTWVyZ2Ug
dGhlIGNvbnRpbnVhdGlvbiBvZiB0aGUgcHJldmlvdXMgaGVhZGVyCi0gICAgICAgICAgICBOU1N0
cmluZyAqY3VycmVudFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6bGFzdEtleV07
CisgICAgICAgICAgICBOU1N0cmluZyAqY3VycmVudFZhbHVlID0gW2hlYWRlckZpZWxkcyBvYmpl
Y3RGb3JLZXk6bGFzdEtleS5nZXQoKV07CiAgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmxpbmVMZW5n
dGggZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgQVNT
RVJUKGN1cnJlbnRWYWx1ZSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3VmFsdWUpOwotICAgICAg
ICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzpuZXdWYWx1ZS5nZXQoKV0gZm9yS2V5Omxhc3RLZXldOworICAgICAgICAgICAg
W2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6W2N1cnJlbnRWYWx1ZSBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpuZXdWYWx1ZS5nZXQoKV0gZm9yS2V5Omxhc3RLZXkuZ2V0KCldOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgLy8gQnJhbmQgbmV3IGhlYWRlcgogICAgICAgICAgICAgY29uc3Qg
VUludDgqIGNvbG9uOwpAQCAtMzI0LDE3ICszMjQsMTYgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFy
eSAqKV93ZWJraXRfcGFyc2VSRkM4MjJIZWFkZXJGaWVsZHMKICAgICAgICAgICAgICAgICAvLyBt
YWxmb3JtZWQgaGVhZGVyOyBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsYXN0S2V5ID0gW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhCeXRlczpsaW5lIGxlbmd0aDpjb2xvbiAtIGxpbmUgZW5jb2Rpbmc6
TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbbGFzdEtleSBhdXRvcmVs
ZWFzZV07CisgICAgICAgICAgICBsYXN0S2V5ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmxpbmUgbGVuZ3RoOmNvbG9uIC0gbGluZSBlbmNvZGluZzpOU0lTT0xhdGlu
MVN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICBsYXN0S2V5ID0gW2xhc3RLZXkgX3dlYl9j
YXBpdGFsaXplUkZDODIySGVhZGVyRmllbGROYW1lXTsKICAgICAgICAgICAgIGZvciAoY29sb24r
KzsgY29sb24gIT0gZW9sOyBjb2xvbisrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCpjb2xvbiAh
PSAnICcgJiYgKmNvbG9uICE9ICdcdCcpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhCeXRlczpjb2xvbiBsZW5ndGg6ZW9sIC0gY29sb24gZW5jb2Rpbmc6TlNJ
U09MYXRpbjFTdHJpbmdFbmNvZGluZ10pOwotICAgICAgICAgICAgaWYgKE5TU3RyaW5nICpvbGRW
YWx1ZSA9IFtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RLZXldKQorICAgICAgICAgICAg
aWYgKE5TU3RyaW5nICpvbGRWYWx1ZSA9IFtoZWFkZXJGaWVsZHMgb2JqZWN0Rm9yS2V5Omxhc3RL
ZXkuZ2V0KCldKQogICAgICAgICAgICAgICAgIHZhbHVlID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aEZvcm1hdDpAIiVALCAlQCIsIG9sZFZhbHVlLCB2YWx1ZS5nZXQoKV0pOwot
ICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkgZm9yS2V5Omxh
c3RLZXldOworICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkg
Zm9yS2V5Omxhc3RLZXkuZ2V0KCldOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5tbQppbmRleCA3NDk4ZTVh
NTNhYjA3MDU5NmJhOTNjNDY4ODQ1OWUyNzQzYjY2YTE2Li4yZjVhOTQ2MGQwMWM3MTBiMmMwYjNi
N2M0YzdlN2NkZmZmMmNiODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TT2JqZWN0RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNPYmplY3RFeHRyYXMubW0KQEAgLTI5LDExICsyOSwxMiBAQAogI2ltcG9ydCAiV2Vi
TlNPYmplY3RFeHRyYXMuaCIKIAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBXZWJNYWluVGhyZWFkSW52b2tlciA6IE5T
UHJveHkKIHsKICAgICBpZCB0YXJnZXQ7Ci0gICAgaWQgZXhjZXB0aW9uOworICAgIFJldGFpblB0
cjxpZD4gZXhjZXB0aW9uOwogfQogQGVuZAogCkBAIC02MSwxNSArNjIsMTQgQEAgLSAodm9pZClm
b3J3YXJkSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgogICAgIFtpbnZvY2F0
aW9uIHNldFRhcmdldDp0YXJnZXRdOwogICAgIFtpbnZvY2F0aW9uIHBlcmZvcm1TZWxlY3Rvck9u
TWFpblRocmVhZDpAc2VsZWN0b3IoX3dlYmtpdF9pbnZva2VBbmRIYW5kbGVFeGNlcHRpb246KSB3
aXRoT2JqZWN0OnNlbGYgd2FpdFVudGlsRG9uZTpZRVNdOwogICAgIGlmIChleGNlcHRpb24pIHsK
LSAgICAgICAgaWQgZXhjZXB0aW9uVG9UaHJvdyA9IFtleGNlcHRpb24gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBleGNlcHRpb24gPSBuaWw7CisgICAgICAgIGlkIGV4Y2VwdGlvblRvVGhyb3cgPSBz
dGQ6OmV4Y2hhbmdlKGV4Y2VwdGlvbiwgbmlsKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICBAdGhy
b3cgZXhjZXB0aW9uVG9UaHJvdzsKICAgICB9IGVsc2UgaWYgKHJldHVyblR5cGVJc09iamVjdChp
bnZvY2F0aW9uKSkgewogICAgICAgICAvLyBfd2Via2l0X2ludm9rZUFuZEhhbmRsZUV4Y2VwdGlv
biByZXRhaW5lZCB0aGUgcmV0dXJuIHZhbHVlIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAg
Ly8gTm93IGF1dG9yZWxlYXNlIGl0IG9uIHRoZSBjYWxsaW5nIHRocmVhZC4KICAgICAgICAgaWQg
cmV0dXJuVmFsdWU7CiAgICAgICAgIFtpbnZvY2F0aW9uIGdldFJldHVyblZhbHVlOiZyZXR1cm5W
YWx1ZV07Ci0gICAgICAgIFtyZXR1cm5WYWx1ZSBhdXRvcmVsZWFzZV07CisgICAgICAgIGFkb3B0
TlMocmV0dXJuVmFsdWUpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogfQogCkBAIC04MSw3ICs4MSw3
IEBAIC0gKE5TTWV0aG9kU2lnbmF0dXJlICopbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6KFNF
TClzZWxlY3RvcgogLSAodm9pZCloYW5kbGVFeGNlcHRpb246KGlkKXBhc3NlZEV4Y2VwdGlvbgog
ewogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKLSAgICBleGNlcHRpb24gPSBbcGFzc2VkRXhjZXB0
aW9uIHJldGFpbl07CisgICAgZXhjZXB0aW9uID0gcGFzc2VkRXhjZXB0aW9uOwogfQogCiBAZW5k
CkBAIC0xMTEsMTIgKzExMSwxMiBAQCBAaW1wbGVtZW50YXRpb24gTlNPYmplY3QgKFdlYk5TT2Jq
ZWN0RXh0cmFzKQogCiArIChpZClfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZAogewotICAgIHJl
dHVybiBbW1tXZWJNYWluVGhyZWFkSW52b2tlciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZl0g
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViTWFpblRocmVhZEludm9rZXIg
YWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGZdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZClf
d2Via2l0X2ludm9rZU9uTWFpblRocmVhZAogewotICAgIHJldHVybiBbW1tXZWJNYWluVGhyZWFk
SW52b2tlciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZl0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBhZG9wdE5TKFtbV2ViTWFpblRocmVhZEludm9rZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0
OnNlbGZdKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCA3ZTk4OTJmYzNkMjJkYjUyOTFiZTRh
NjYxMjk0NDVkZmFhZjgzYzlhLi44NzUzNjI0MmI3OTAzNGViOTM0Y2I1ZjcyYTg5NzM2ZjcxMWE5
NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0
cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMu
bW0KQEAgLTEwNCw3ICsxMDQsNyBAQCAtIChOU0RhdGEgKilfd2ViX29yaWdpbmFsRGF0YQogCiAt
IChOU1N0cmluZyAqKV93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmcKIHsKLSAgICByZXR1cm4gW1tb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpvcmlnaW5hbFVSTERhdGEoc2VsZikgZW5jb2Rp
bmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpvcmlnaW5hbFVSTERhdGEoc2Vs
ZikgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwpAQCAtMjAyLDcgKzIwMiw3
IEBAIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQogCiAtIChOU1N0cmluZyAqKV93ZWJfaG9zdFN0
cmluZwogewotICAgIHJldHVybiBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltzZWxm
IF93ZWJfaG9zdERhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOltz
ZWxmIF93ZWJfaG9zdERhdGFdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfd2Via2l0X3N1Z2dlc3RlZEZpbGVuYW1lV2l0
aE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1
Z2luU3RyZWFtLm1tCmluZGV4IDVlMjIzMjhmZDg0NTQ4YWQyM2YxYjU5ZTYxZGVmZWM0MWI2Y2Vj
ZGMuLjU3YWE0YTgyZDZhNjcxODE1ZTQzYmE4MDU5NDg2Yjc1NjVlNTBlNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1
Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC0yNjEsMTEgKzI2MSwxMSBAQCB2b2lk
IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjYW5jZWxMb2FkKE5TRXJyb3IgKmVycm9yKQog
CiBOU0Vycm9yICpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2VsbGVkQ29u
bmVjdGlvbkVycm9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW1tbTlNFcnJvciBhbGxvY10gX2lu
aXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlv
bgorICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJy
b3JDb2RlOldlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6bV9yZXNwb25zZVVSTCA/
IG1fcmVzcG9uc2VVUkwuZ2V0KCkgOiBtX3JlcXVlc3RVUkwuZ2V0KCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbk5hbWU6W1ttX2luc3RhbmNlLT5w
bHVnaW5WaWV3KCkgcGx1Z2luUGFja2FnZV0gcGx1Z2luSW5mb10ubmFtZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6bV9taW1lVHlwZS5nZXQo
KV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTUlNRVR5cGU6bV9taW1lVHlwZS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIE5T
RXJyb3IgKkhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjplcnJvckZvclJlYXNvbihOUFJlYXNv
biByZWFzb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQppbmRleCBmY2UzY2Y4ZDJkOGQwNjdlNmYxMzU5
MTE0ODI3YjRlNmVmMjM4N2ZmLi5iYjhiYzJhNTJmNGFlYTlmY2I5NTg5MDc4ZDFiYWExZTk4NTBi
NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQ
bHVnaW5QYWNrYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
QmFzZVBsdWdpblBhY2thZ2UubW0KQEAgLTY5LDE3ICs2OSwxNyBAQCArICh2b2lkKWluaXRpYWxp
emUKICsgKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopcGx1Z2luV2l0aFBhdGg6KE5TU3RyaW5nICop
cGx1Z2luUGF0aAogewogICAgIAotICAgIFdlYkJhc2VQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNr
YWdlID0gW1tXZWJQbHVnaW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2luUGF0aF07
CisgICAgYXV0byBwbHVnaW5QYWNrYWdlID0gYWRvcHROUyhbW1dlYlBsdWdpblBhY2thZ2UgYWxs
b2NdIGluaXRXaXRoUGF0aDpwbHVnaW5QYXRoXSk7CiAKICAgICBpZiAoIXBsdWdpblBhY2thZ2Up
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAgcGx1Z2luUGFja2Fn
ZSA9IFtbV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2lu
UGF0aF07CisgICAgICAgIHBsdWdpblBhY2thZ2UgPSBhZG9wdE5TKFtbV2ViTmV0c2NhcGVQbHVn
aW5QYWNrYWdlIGFsbG9jXSBpbml0V2l0aFBhdGg6cGx1Z2luUGF0aF0pOwogI2Vsc2UKICAgICAg
ICAgcmV0dXJuIG5pbDsKICNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiBbcGx1Z2luUGFja2Fn
ZSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHBsdWdpblBhY2thZ2UuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoaWQpaW5pdFdpdGhQYXRoOihOU1N0cmluZyAqKXBsdWdpblBhdGgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCmluZGV4IDBiMzI2NzI3MjJmOGM5MDI0NTdmYjQ1M2QyMjE2MjFhNmJhMWYyM2Yu
LjU1NjNkMDliZDU2YzBiMjZlNmQ5MWQwN2ZjZDc1OGRmMTgwZjBjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQpAQCAtMTA2LDExICsxMDYsMTEgQEAgTlBSZWFzb24gV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW06OnJlYXNvbkZvckVycm9yKE5TRXJyb3IgKmVycm9yKQogCiBOU0Vycm9yICpXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6cGx1Z2luQ2FuY2VsbGVkQ29ubmVjdGlvbkVycm9yKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gW1tbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2Rl
OldlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbgorICAgIHJldHVybiBhZG9wdE5T
KFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOldlYktpdEVycm9yUGx1
Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRlbnRVUkw6bV9yZXNwb25zZVVSTCA/IG1fcmVzcG9uc2VVUkwuZ2V0KCkg
OiAoTlNVUkwgKiltX3JlcXVlc3RVUkwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsdWdpbk5hbWU6W1ttX3BsdWdpblZpZXcuZ2V0KCkgcGx1Z2luUGFja2Fn
ZV0gcGx1Z2luSW5mb10ubmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTUlNRVR5cGU6KE5TU3RyaW5nICopU3RyaW5nOjpmcm9tVVRGOChtX21pbWVUeXBl
LmRhdGEoKSwgbV9taW1lVHlwZS5sZW5ndGgoKSldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKVN0
cmluZzo6ZnJvbVVURjgobV9taW1lVHlwZS5kYXRhKCksIG1fbWltZVR5cGUubGVuZ3RoKCkpXSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogTlNFcnJvciAqV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmVy
cm9yRm9yUmVhc29uKE5QUmVhc29uIHJlYXNvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXgg
MDY4N2JiYmJlODBmNWI3ZDg3YjI3OGY5MTgzOTA1MGMwNWUwZDdkNS4uZjBkOTk4YzA5NjA0OGQ5
YWZkMTM2ZWQyMjFhZDUxZTYxN2UyYjFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTM1NSw3ICsz
NTUsNyBAQCAtIChCT09MKXNlbmRFdmVudDoodm9pZCopZXZlbnQgaXNEcmF3UmVjdDooQk9PTCll
dmVudElzRHJhd1JlY3QKICAgICB9CiAKICAgICAvLyBUZW1wb3JhcmlseSByZXRhaW4gc2VsZiBp
biBjYXNlIHRoZSBwbHVnLWluIHZpZXcgaXMgcmVsZWFzZWQgd2hpbGUgc2VuZGluZyBhbiBldmVu
dC4gCi0gICAgW1tzZWxmIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihzZWxm
KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgQk9PTCBhY2NlcHRlZEV2ZW50OwogICAgIFtzZWxmIHdp
bGxDYWxsUGx1Z0luRnVuY3Rpb25dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KaW5kZXggNzQwODg4ZmQ5
NjgyMWEzNDI5YzQ3OTQxMTc1YTM3MDBkNTA3Nzg2My4uMWQ5OGJhMGRkMDYyMmQ5YzEwZTZiMjc2
Zjg1MWM0ZDRmN2M2MTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCkBAIC03Miw3ICs3Miw3IEBA
IC0gKGlkKWluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB0YXJnZXQ6KE5T
U3RyaW5nICopdGFyZ2V0IHJlc3VsdE9iCiAKICsgKGlkKWNoZWNrV2l0aFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QgdGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldCByZXN1bHRPYmplY3Q6
KGlkKW9iaiBzZWxlY3RvcjooU0VMKXNlbGVjdG9yIGNvbnRyb2xsZXI6KGlkIDxXZWJQbHVnaW5D
b250YWluZXJDaGVja0NvbnRyb2xsZXI+KWNvbnRyb2xsZXIgY29udGV4dEluZm86KGlkKWNvbnRl
eHRJbmZvIC8qb3B0aW9uYWwqLwogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0
aFJlcXVlc3Q6cmVxdWVzdCB0YXJnZXQ6dGFyZ2V0IHJlc3VsdE9iamVjdDpvYmogc2VsZWN0b3I6
c2VsZWN0b3IgY29udHJvbGxlcjpjb250cm9sbGVyIGNvbnRleHRJbmZvOmNvbnRleHRJbmZvXSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFJl
cXVlc3Q6cmVxdWVzdCB0YXJnZXQ6dGFyZ2V0IHJlc3VsdE9iamVjdDpvYmogc2VsZWN0b3I6c2Vs
ZWN0b3IgY29udHJvbGxlcjpjb250cm9sbGVyIGNvbnRleHRJbmZvOmNvbnRleHRJbmZvXSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbQppbmRleCA2ZTI4NzJkMmMz
YzM3MDViMzQxNTdlODMyODMyNWYwODQxZWM3M2M1Li5iNTljZTRiY2RmOGE1MzcxYzIxZjZmMGYz
MzgxZWVmM2UwZDdmZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYlBsdWdpbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KQEAgLTQxOSw5ICs0MTksOSBAQCAtIChOU0FycmF5
ICopX3BsdWdJblBhdGhzCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBl
YXJsaWVyIHZlcnNpb25zIG9mIHRoZSArc2V0QWRkaXRpb25hbFdlYlBsdWdJblBhdGhzOiBTUEks
CiAgICAgICAgIC8vIHdoaWNoIHNpbXBseSBzYXZlZCBhIGNvcHkgb2YgdGhlIGFkZGl0aW9uYWwg
cGF0aHMgYW5kIGRpZCBub3QgY2F1c2UgdGhlIHBsdWdpbiBEQiB0byAKICAgICAgICAgLy8gcmVm
cmVzaC4gIFNlZSBSYWRhcnMgNDYwODQ4NyBhbmQgNDYwOTA0Ny4KLSAgICAgICAgTlNNdXRhYmxl
QXJyYXkgKm1vZGlmaWVkUGx1Z0luUGF0aHMgPSBbW3BsdWdJblBhdGhzIG11dGFibGVDb3B5XSBh
dXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gbW9kaWZpZWRQbHVnSW5QYXRocyA9IGFkb3B0TlMo
W3BsdWdJblBhdGhzIG11dGFibGVDb3B5XSk7CiAgICAgICAgIFttb2RpZmllZFBsdWdJblBhdGhz
IGFkZE9iamVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbFdlYlBsdWdJblBhdGhzKCkuZ2V0KCldOwot
ICAgICAgICByZXR1cm4gbW9kaWZpZWRQbHVnSW5QYXRoczsKKyAgICAgICAgcmV0dXJuIG1vZGlm
aWVkUGx1Z0luUGF0aHMuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgcmV0dXJuIHBsdWdJblBh
dGhzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGFjN2QxNjQ4Y2I4Mjk0Yjc4NDZjYWYwNTJk
NTc0OTJiNGUyMmE0YWYuLjkxYWZjNWQ3NDQ5MTQzNGY0ZTEyM2YxOGE1MDQxNzM4OWIzNGIzYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCAtICh2b2lkKWRlYWxsb2MK
IAogKyAoV2ViVW5kb1N0ZXAgKilzdGVwV2l0aFVuZG9TdGVwOihSZWY8VW5kb1N0ZXA+JiYpc3Rl
cAogewotICAgIHJldHVybiBbW1tXZWJVbmRvU3RlcCBhbGxvY10gaW5pdFdpdGhVbmRvU3RlcDpX
VEZNb3ZlKHN0ZXApXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJVbmRv
U3RlcCBhbGxvY10gaW5pdFdpdGhVbmRvU3RlcDpXVEZNb3ZlKHN0ZXApXSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoVW5kb1N0ZXAmKXN0ZXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggMmFhOGMzOWE0MDM5NmJmYzE4MTA0NDM2OWEzYzYyMGMzNGUwODA0MC4uYzNhYjYyODU0MWVi
MjNiNmYxNmQxNGQ2MGQ5MGY0YTk2MTFmYTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTMwNSw5ICszMDUsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMbwogICAgIGlmICgh
bWFpblJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBoYXMgYWxyZWFk
eSBiZWVuIGNhY2hlZCwgb3IgdGhlIGNvbnZlcnNpb24gaXMgYmVpbmcgYXR0bXB0ZWQgd2hlbiBu
b3QgY2FsbGluZyBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkuCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIFdlYkRvd25s
b2FkICp3ZWJEb3dubG9hZCA9IFtbV2ViRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRl
SFRUUEJvZHkpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdXTsKKyAgICAgICAg
YXV0byB3ZWJEb3dubG9hZCA9IGFkb3B0TlMoW1tXZWJEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhS
ZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpVcGRhdGVIVFRQQm9keSkgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWREZWxlZ2F0ZV1dKTsK
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgIFt3ZWJE
b3dubG9hZCBhdXRvcmVsZWFzZV07CisgICAgICAgIHdlYkRvd25sb2FkLmF1dG9yZWxlYXNlKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyOCwxMCArOTI4LDEwIEBAIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKm1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5KFdlYkNvcmU6OkZvcm1T
dGF0ZSYgZm9ybVN0YXRlCiB7CiAgICAgYXV0byYgdGV4dEZpZWxkVmFsdWVzID0gZm9ybVN0YXRl
LnRleHRGaWVsZFZhbHVlcygpOwogICAgIHNpemVfdCBzaXplID0gdGV4dEZpZWxkVmFsdWVzLnNp
emUoKTsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdOworICAgIGF1dG8gZGljdGlv
bmFyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OnNpemVdKTsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogdGV4dEZpZWxkVmFsdWVzKQogICAg
ICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dmFsdWUuc2Vjb25kIGZvcktleTp2YWx1ZS5maXJz
dF07Ci0gICAgcmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gZGlj
dGlvbmFyeS5hdXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUmVmPFdlYkNvcmU6OkZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUpCkBAIC0xMTY5LDEyICsxMTY5LDExIEBAIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlCiAK
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
IGNvbnN0CiB7Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0
aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkCisgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6V2Vi
S2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRVUkw6cmVzcG9uc2UudXJsKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJM
Om5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBsdWdpbk5hbWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpXTsKLSAgICByZXR1cm4g
W2Vycm9yIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOnJlc3BvbnNlLm1pbWVUeXBlKCldKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFjayhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKQEAgLTE5NDAsNyArMTkz
OSw3IEBAIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgICAgICAgICAgICAgdmlldyA9IHBs
dWdpblZpZXcobV93ZWJGcmFtZS5nZXQoKSwgKFdlYlBsdWdpblBhY2thZ2UgKilwbHVnaW5QYWNr
YWdlLCBhdHRyaWJ1dGVLZXlzLmdldCgpLCBjcmVhdGVOU0FycmF5KHBhcmFtVmFsdWVzKS5nZXQo
KSwgYmFzZVVSTCwga2l0KCZlbGVtZW50KSwgbG9hZE1hbnVhbGx5KTsKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgICAgIGVsc2UgaWYgKFtwbHVnaW5QYWNrYWdlIGlz
S2luZE9mQ2xhc3M6W1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBjbGFzc11dKSB7Ci0gICAgICAg
ICAgICAgICAgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldyA9IFtbW05FVFND
QVBFX1BMVUdJTl9WSUVXIGFsbG9jXQorICAgICAgICAgICAgICAgIGF1dG8gcGx1Z2luVmlldyA9
IGFkb3B0TlMoW1tORVRTQ0FQRV9QTFVHSU5fVklFVyBhbGxvY10KICAgICAgICAgICAgICAgICAg
ICAgaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkKICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUGFja2FnZTooV2ViTmV0c2NhcGVQbHVn
aW5QYWNrYWdlICopcGx1Z2luUGFja2FnZQogICAgICAgICAgICAgICAgICAgICBVUkw6cGx1Z2lu
VVJMCkBAIC0xOTQ5LDkgKzE5NDgsOSBAQCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVLZXlzOmF0dHJpYnV0ZUtleXMuZ2V0KCkKICAgICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOmNyZWF0ZU5TQXJyYXkocGFyYW1WYWx1ZXMpLmdl
dCgpCiAgICAgICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTpsb2FkTWFudWFsbHkKLSAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudDomZWxlbWVudF0gYXV0b3JlbGVhc2VdOworICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50OiZlbGVtZW50XSk7CiAKLSAgICAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE5ldHNjYXBlUGx1Z2luV2lkZ2V0KHBsdWdpblZpZXcpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHNjYXBlUGx1Z2luV2lkZ2V0KHBsdWdpblZp
ZXcuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KaW5kZXggYjg5ODcxODM1OTMxNjM1ZTU1YTNjZGM3NDQ4NWRjOTk2M2ZiMWFk
Mi4uMzU5MTVjNjY5MzYwZTg2NWQxMzVkYmQ3MTkxY2U3N2IyYTExZGQwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQpAQCAtNzk4LDcgKzc5OCw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFG
CiAKIC0gKE5TQXJyYXkgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGNvbnRleHRNZW51SXRl
bXNGb3JFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50IGRlZmF1bHRNZW51SXRlbXM6KE5T
QXJyYXkgKilkZWZhdWx0TWVudUl0ZW1zCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKm1lbnVJdGVt
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gbWVudUl0ZW1zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBmb3IgKE5TTWVu
dUl0ZW0gKml0ZW0gaW4gZGVmYXVsdE1lbnVJdGVtcykgewogICAgICAgICBzd2l0Y2ggKGl0ZW0u
dGFnKSB7CkBAIC04MTUsNyArODE1LDcgQEAgLSAoTlNBcnJheSAqKXdlYlZpZXc6KFdlYlZpZXcg
KilzZW5kZXIgY29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFttZW51SXRlbXMgYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBtZW51SXRlbXMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQppbmRleCA4NWFmMzMzMWU2YjJhOTBhZGVkOGRhOWE5NTNjMWYwYjY2YzE5OTJi
Li4yZDQxNDFlZGIyMTk2MTk2MTc4Mjk3NjgwMWUwYWYxMzMzNjgwMjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQpAQCAtNDgsNyArNDgsNyBAQCArIChpZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21E
YXRhYmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiAgICAgaWYg
KCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW1tbV2ViU2VjdXJp
dHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luKCkucHRyKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46
b3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnB0cigpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
aWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkFyY2hpdmUubW0KaW5kZXggMWZmMmY1NDYyZDY1MjMzNjA4ZDZhYWE1MTUyZjQ2
ZGIxZmEwYjY3NS4uMjJkNjc4YTFmMWI2ZTE5MjI5OWMyMDRmMmQ2ZTZjYzY1OWM3OGQ0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQpAQCAtMzM1
LDcgKzMzNSw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICNlbmRpZgogICAgIExPRyhUaW1pbmcsICJT
ZXJpYWxpemluZyB3ZWIgYXJjaGl2ZSB0byByYXcgQ0ZQcm9wZXJ0eUxpc3QgZGF0YSB0b29rICVm
IHNlY29uZHMiLCBkdXJhdGlvbik7CiAgICAgICAgIAotICAgIHJldHVybiBbWyhOU0RhdGEgKilk
YXRhLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoKE5T
RGF0YSAqKWRhdGEuZ2V0KCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCBjMTQ2ZjE2
MDVmMzgzOGUyODk1YWM5MDMwYzNiZmQ4ZTkxNDhkZmVkLi4wYWM2MGU5OTQzNmFlNzdlZjc1MzBi
NjBiZjJlNWNiODBlNThhMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0xNzgsMTUgKzE3OCwxNSBAQCAtICh2b2lkKV9hZGRT
dWJmcmFtZUFyY2hpdmVzOihOU0FycmF5ICopc3ViZnJhbWVBcmNoaXZlcwogLSAoTlNGaWxlV3Jh
cHBlciAqKV9maWxlV3JhcHBlckZvclVSTDooTlNVUkwgKilVUkwKIHsKICAgICBpZiAoW1VSTCBp
c0ZpbGVVUkxdKQotICAgICAgICByZXR1cm4gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhVUkw6W1VSTCBVUkxCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoXSBvcHRpb25zOjAgZXJyb3I6
bnVsbHB0cl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltVUkwgVVJMQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0
aF0gb3B0aW9uczowIGVycm9yOm51bGxwdHJdKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKGF1
dG8gcmVzb3VyY2UgPSBbc2VsZiBzdWJyZXNvdXJjZUZvclVSTDpVUkxdKQogICAgICAgICByZXR1
cm4gW3Jlc291cmNlIF9maWxlV3JhcHBlclJlcHJlc2VudGF0aW9uXTsKIAogICAgIGlmIChhdXRv
IGNhY2hlZFJlc3BvbnNlID0gW1tzZWxmIF93ZWJWaWV3XSBfY2FjaGVkUmVzcG9uc2VGb3JVUkw6
VVJMXSkgewotICAgICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25zZSBkYXRh
XV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRSZXNwb25z
ZSBkYXRhXV0pOwogICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpbW2NhY2hl
ZFJlc3BvbnNlIHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxlbmFtZV1dOwotICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIG5pbDsKQEAgLTUzMiw3ICs1MzIsNyBAQCAtIChXZWJBcmNoaXZlICop
d2ViQXJjaGl2ZQogICAgIGlmICghdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5pc0NvbW1p
dHRlZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAKLSAgICByZXR1cm4gW1tbV2Vi
QXJjaGl2ZSBhbGxvY10gX2luaXRXaXRoQ29yZUxlZ2FjeVdlYkFyY2hpdmU6V2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlKFtzZWxmIHdlYkZyYW1lXSkpXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBfaW5pdFdpdGhDb3Jl
TGVnYWN5V2ViQXJjaGl2ZTpXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmUo
W3NlbGYgd2ViRnJhbWVdKSldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJSZXNvdXJjZSAq
KW1haW5SZXNvdXJjZQpAQCAtNTQwLDcgKzU0MCw3IEBAIC0gKFdlYlJlc291cmNlICopbWFpblJl
c291cmNlCiAgICAgYXV0byBjb3JlUmVzb3VyY2UgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2Fk
ZXItPm1haW5SZXNvdXJjZSgpOwogICAgIGlmICghY29yZVJlc291cmNlKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBbW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJl
c291cmNlOmNvcmVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNl
OmNvcmVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
TlNBcnJheSAqKXN1YnJlc291cmNlcwpAQCAtNTUzLDcgKzU1Myw3IEBAIC0gKE5TQXJyYXkgKilz
dWJyZXNvdXJjZXMKIC0gKFdlYlJlc291cmNlICopc3VicmVzb3VyY2VGb3JVUkw6KE5TVVJMICop
VVJMCiB7CiAgICAgYXV0byBzdWJyZXNvdXJjZSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRl
ci0+c3VicmVzb3VyY2UoVVJMKTsKLSAgICByZXR1cm4gc3VicmVzb3VyY2UgPyBbW1tXZWJSZXNv
dXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOnN1YnJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCldIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAgICByZXR1cm4gc3VicmVzb3VyY2UgPyBhZG9w
dE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpzdWJyZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpXSkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAodm9pZClh
ZGRTdWJyZXNvdXJjZTooV2ViUmVzb3VyY2UgKilzdWJyZXNvdXJjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggMjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1
OWE3ODU4MzUwYS4uMDMwNDI1MDc3NTU2NWU0ZDNlNzg3OGJmOTE0MzA1MDZjMjY3ZmRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgiCiAKICNp
bXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYyLDcgKzYzLDcgQEAg
LSAodm9pZClzdG9wVXBkYXRpbmcKIAogLSAoV2ViRGV2aWNlT3JpZW50YXRpb24qKWxhc3RPcmll
bnRhdGlvbgogewotICAgIHJldHVybiBbW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBhbGxvY10gaW5p
dFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9jb3JlLT5sYXN0T3JpZW50YXRpb24oKV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViRGV2aWNlT3JpZW50YXRpb24gYWxs
b2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOm1fY29yZS0+bGFzdE9yaWVudGF0aW9u
KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAzYzRlNGJiMzk2MDY1ODE3NDg0MzcxYzMwZTQzYzc1
YzY2NTI2NTM5Li5iOWJlN2Q5OTA1ZGFmNTBlZTlmZDUzMDhlOTdmZjNjOWRlY2E5ZTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTIzMzMsNyAr
MjMzMyw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKWVsZW1lbnRBdFBvaW50OihOU1BvaW50KXBvaW50
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgY29uc3RleHBy
IE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0
OjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKLSAgICBy
ZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3Vs
dDpjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KFdlYkNvcmU6
OkludFBvaW50KHBvaW50KSwgaGl0VHlwZSldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRv
cHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChXZWJDb3JlOjpJ
bnRQb2ludChwb2ludCksIGhpdFR5cGUpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwg
KilfdW5yZWFjaGFibGVVUkwKQEAgLTI1NjcsNyArMjU2Nyw3IEBAIC0gKFdlYkZyYW1lICopcGFy
ZW50RnJhbWUKICAgICBhdXRvIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAg
aWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtba2l0KGNv
cmVGcmFtZS0+dHJlZSgpLnBhcmVudCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gcmV0YWluUHRyKGtpdChjb3JlRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKE5TQXJyYXkgKiljaGlsZEZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCA2NGRkNzJlYmFiOThlZWIxYTJm
MDZiMjRhNmNmOWVlNWMxNDFiYjJjLi5hNzg1ZThjM2Q1NjU5MmFiMDlhNmNiOTgyY2Q5OGE3NWYw
NGQzM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Vmlldy5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW3Njcm9sbFZpZXcgc2V0RGVsZWdh
dGU6c2VsZl07CiAjZWxzZQotICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRWaWV3OltbW1dlYkNs
aXBWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dIGF1dG9yZWxl
YXNlXV07CisgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6YWRvcHROUyhbW1dlYkNsaXBW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltzY3JvbGxWaWV3IGJvdW5kc11dKS5nZXQoKV07CiAj
ZW5kaWYKICAgICBbc2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwogICAgIFtzY3Jv
bGxWaWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6Tk9dOwpAQCAtMTIyOSw3ICsxMjI5LDcgQEAg
LSAodm9pZClfc2V0Q3VzdG9tU2Nyb2xsVmlld0NsYXNzOihDbGFzcyljdXN0b21DbGFzcwogICAg
IGF1dG8gZG9jdW1lbnRWaWV3ID0gcmV0YWluUHRyKFtzZWxmIGRvY3VtZW50Vmlld10pOwogCiAg
ICAgUmV0YWluUHRyPFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldz4gc2Nyb2xsVmlldyAgPSBhZG9w
dE5TKFtbY3VzdG9tQ2xhc3MgYWxsb2NdIGluaXRXaXRoRnJhbWU6W29sZFNjcm9sbFZpZXcgZnJh
bWVdXSk7Ci0gICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudFZpZXc6W1tbV2ViQ2xpcFZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91bmRzXV0gYXV0b3JlbGVhc2VdXTsKKyAg
ICBbc2Nyb2xsVmlldyBzZXRDb250ZW50VmlldzphZG9wdE5TKFtbV2ViQ2xpcFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6W3Njcm9sbFZpZXcgYm91bmRzXV0pLmdldCgpXTsKICAgICBbc2Nyb2xs
VmlldyBzZXREcmF3c0JhY2tncm91bmQ6W29sZFNjcm9sbFZpZXcgZHJhd3NCYWNrZ3JvdW5kXV07
CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpbb2xkU2Nyb2xsVmlldyBo
YXNWZXJ0aWNhbFNjcm9sbGVyXV07CiAgICAgW3Njcm9sbFZpZXcgc2V0SGFzSG9yaXpvbnRhbFNj
cm9sbGVyOltvbGRTY3JvbGxWaWV3IGhhc0hvcml6b250YWxTY3JvbGxlcl1dOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQppbmRleCA0MWQ3NzE4ODkwZWNlZDU2N2VmZTdjYWNkODE2ODkzZDQzZjI5YmY3Li40ZTY3
Y2RhZGMwZTI0YzhlY2M4MDUyMDFkOWVhNDZlNzI0YTdiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMjMxLDggKzIzMSw3IEBAIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBp
ZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCiAgICAgICAg
IFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2Ug
X2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKLSAgICAgICAgTlNTdHJpbmcg
KnJlc3VsdCA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0
YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhE
YXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2Uo
KTsKICAgICB9CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbX3ByaXZhdGUtPmRhdGFT
b3VyY2Ugd2ViRnJhbWVdKTsKQEAgLTI3MCw3ICsyNjksNyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKilhdHRyaWJ1dGVkVGV4dAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0
cmluZ0Zyb206KERPTU5vZGUgKilzdGFydE5vZGUgc3RhcnRPZmZzZXQ6KGludClzdGFydE9mZnNl
dCB0bzooRE9NTm9kZSAqKWVuZE5vZGUgZW5kT2Zmc2V0OihpbnQpZW5kT2Zmc2V0CiB7CiAgICAg
aWYgKCFzdGFydE5vZGUgfHwgIWVuZE5vZGUpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAg
IGF1dG8gcmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHsgKmNvcmUoc3RhcnROb2RlKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSB9LCB7ICpjb3JlKGVuZE5vZGUpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9IH07CiAgICAgcmV0dXJuIGVkaXRpbmdBdHRyaWJ1dGVk
U3RyaW5nKHJhbmdlKS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ1YWUzZDBjYTQ2YmFlYWUz
ZjUxMjE3NDY3NjViMmZlNWU4YTA2YWMuLjIwNTRiNjZkMjAxYWM3ZmI0OGU0Yzg4ODU2MDZiMjI3
M2U0OWFmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9k
b2N1bWVudEZyYWdtZW50V2l0aFBhdGhzOihOU0FycmF5ICopcGF0aHMKIAogKyAoTlNBcnJheSAq
KV9leGNsdWRlZEVsZW1lbnRzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24KIHsKLSAgICBO
U011dGFibGVBcnJheSAqZWxlbWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6CisgICAgYXV0byBlbGVtZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICAvLyBPbWl0IHN0eWxlIHNpbmNlIHdlIHdh
bnQgc3R5bGUgdG8gYmUgaW5saW5lIHNvIHRoZSBmcmFnbWVudCBjYW4gYmUgZWFzaWx5IGluc2Vy
dGVkLgogICAgICAgICBAInN0eWxlIiwKICAgICAgICAgLy8gT21pdCB4bWwgc28gdGhlIHJlc3Vs
dCBpcyBub3QgWEhUTUwuCkBAIC0xMTU3LDE0ICsxMTU3LDE0IEBAICsgKE5TQXJyYXkgKilfZXhj
bHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uCiAgICAgICAgIC8vIE9t
aXQgb2JqZWN0IHNvIG5vIGZpbGUgYXR0YWNobWVudHMgYXJlIHBhcnQgb2YgdGhlIGZyYWdtZW50
LgogICAgICAgICBAIm9iamVjdCIsCiAjZW5kaWYKLSAgICAgICAgbmlsXTsKKyAgICAgICAgbmls
XSk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGlmICghV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVu
dEVuYWJsZWQoKSkKICAgICAgICAgW2VsZW1lbnRzIGFkZE9iamVjdDpAIm9iamVjdCJdOwogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gW2VsZW1lbnRzIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gZWxl
bWVudHMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1
bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgaW5D
b250ZXh0OihET01SYW5nZSAqKWNvbnRleHQgYWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFp
blRleHQKQEAgLTEyMjEsNyArMTIyMSw3IEBAIC0gKE5TU3RyaW5nICopX3BsYWluVGV4dEZyb21Q
YXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCiAgICAgaWYgKGF0dHJpYnV0ZWRT
dHJpbmcgPT0gbmlsICYmIFt0eXBlcyBjb250YWluc09iamVjdDpXZWJDb3JlOjpsZWdhY3lSVEZQ
YXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOltwYXN0ZWJvYXJkIGRhdGFGb3JU
eXBlOldlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCldIGRvY3VtZW50QXR0cmlidXRl
czpOVUxMXSk7CiAgICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBbW1th
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10gY29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1
cm4gYWRvcHROUyhbW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSBjb3B5XSkuYXV0b3JlbGVhc2Uo
KTsKIAogICAgIGlmIChbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKV0pIHsKICAgICAgICAgaWYgKE5TU3RyaW5nICpzdHJpbmcgPSBb
W3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQ
YXN0ZWJvYXJkVHlwZSgpXSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCJcbiJdKQpAQCAtMTg4
MCw3ICsxODgwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0g
KE5TU3RyaW5nICopdmlldzooTlNWaWV3ICopdmlldyBzdHJpbmdGb3JUb29sVGlwOihOU1Rvb2xU
aXBUYWcpdGFnIHBvaW50OihOU1BvaW50KXBvaW50IHVzZXJEYXRhOih2b2lkICopZGF0YQogQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiB7Ci0gICAgcmV0dXJuIFtbX3ByaXZh
dGUtPnRvb2xUaXAgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtfcHJp
dmF0ZS0+dG9vbFRpcCBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogc3RhdGljIGJvb2wgbW91
c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCkBAIC0zMzgzLDcgKzMz
ODMsNyBAQCAtICh2b2lkKXJpZ2h0TW91c2VVcDooTlNFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhl
cmUncyBhIGNoYW5jZSB0aGF0IGlmIHdlIHJ1biBhIG5lc3RlZCBldmVudCBsb29wIHRoZSBldmVu
dCB3aWxsIGJlIHJlbGVhc2VkLgogICAgIC8vIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFz
aW5nIHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBsYXRlciBoZXJlIG9yCiAg
ICAgLy8gaW5zaWRlIEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgW3N1cGVyIHJp
Z2h0TW91c2VVcDpldmVudF07CiAKQEAgLTM3MjAsNyArMzcyMCw3IEBAIC0gKE5TTWVudSAqKW1l
bnVGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0
IGlmIHdlIHJ1biBhIG5lc3RlZCBldmVudCBsb29wIHRoZSBldmVudCB3aWxsIGJlIHJlbGVhc2Vk
LgogICAgIC8vIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nIHByZXZlbnRzIHRoYXQg
ZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBsYXRlciBoZXJlIG9yCiAgICAgLy8gaW5zaWRlIEFwcEtp
dCBjb2RlLgotICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRy
KGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgW19wcml2YXRlLT5jb21wbGV0aW9uQ29udHJv
bGxlciBlbmRSZXZlcnRpbmdDaGFuZ2U6Tk8gbW92ZUxlZnQ6Tk9dOwogCkBAIC00MDgxLDcgKzQw
ODEsNyBAQCAtICh2b2lkKXNjcm9sbFdoZWVsOihXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gZmV0
Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFu
ZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0
aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4K
ICAgICAvLyBGSVhNRTogV2h5IG5vdCBkbyB0aGlzIG9uIGlPUyB0b28/Ci0gICAgW1tldmVudCBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7
CiAjZW5kaWYKIAogICAgIGF1dG8qIGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKQEAgLTQx
MjEsNyArNDEyMSw3IEBAIC0gKEJPT0wpYWNjZXB0c0ZpcnN0TW91c2U6KE5TRXZlbnQgKilldmVu
dAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQg
d2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcg
ZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9y
ZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1
c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50
IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2Uo
KTsKIAogICAgIE5TVmlldyAqaGl0VmlldyA9IFtzZWxmIF9oaXRWaWV3Rm9yRXZlbnQ6ZXZlbnRd
OwogICAgIFdlYkhUTUxWaWV3ICpoaXRIVE1MVmlldyA9IFtoaXRWaWV3IGlzS2luZE9mQ2xhc3M6
W3NlbGYgY2xhc3NdXSA/IChXZWJIVE1MVmlldyAqKWhpdFZpZXcgOiBuaWw7CkBAIC00MTUwLDcg
KzQxNTAsNyBAQCAtIChCT09MKXNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudDooTlNF
dmVudCAqKWV2ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8g
dGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRj
aGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5k
IHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRo
YXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgot
ICAgIFtbZXZlbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5h
dXRvcmVsZWFzZSgpOwogCiAgICAgTlNWaWV3ICpoaXRWaWV3ID0gW3NlbGYgX2hpdFZpZXdGb3JF
dmVudDpldmVudF07CiAgICAgV2ViSFRNTFZpZXcgKmhpdEhUTUxWaWV3ID0gW2hpdFZpZXcgaXNL
aW5kT2ZDbGFzczpbc2VsZiBjbGFzc11dID8gKFdlYkhUTUxWaWV3ICopaGl0VmlldyA6IG5pbDsK
QEAgLTQxODEsNyArNDE4MSw3IEBAIC0gKHZvaWQpbW91c2VEb3duOihXZWJFdmVudCAqKWV2ZW50
CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3
aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBl
dmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3Jl
bGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVz
aW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIFtbZXZlbnQg
cmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgp
OwogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHByb3RlY3RvciA9IHNlbGY7
CkBAIC00Mjg3LDcgKzQyODcsNyBAQCAtICh2b2lkKW1vdXNlRHJhZ2dlZDooTlNFdmVudCAqKWV2
ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVu
dCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5l
dyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0
b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBj
YXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIFtbZXZl
bnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFz
ZSgpOwogCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBOU0lu
cHV0TWFuYWdlciAqY3VycmVudElucHV0TWFuYWdlciA9IFtOU0lucHV0TWFuYWdlciBjdXJyZW50
SW5wdXRNYW5hZ2VyXTsKQEAgLTQzNjMsMTQgKzQzNjMsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKE5TQXJyYXkgKiluYW1lc09mUHJvbWlzZWRGaWxlc0Ry
b3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbgogQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiB7Ci0gICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9
IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gd3JhcHBlcjsKICAgICBOU1VSTCAq
ZHJhZ2dpbmdFbGVtZW50VVJMID0gbmlsOwogICAgIAogICAgIGlmIChhdXRvIHRpZmZSZXNvdXJj
ZSA9IF9wcml2YXRlLT5wcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZSkgewogICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gdGlmZlJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IHRpZmZSZXNvdXJjZS0+cmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCk7CiAgICAgICAgICAgICBkcmFnZ2luZ0VsZW1lbnRVUkwgPSBbcmVzcG9u
c2UgVVJMXTsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0g
YXV0b3JlbGVhc2VdOworICAgICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcqIGZpbGVuYW1lID0gW3Jlc3BvbnNl
IHN1Z2dlc3RlZEZpbGVuYW1lXTsKICAgICAgICAgICAgIE5TU3RyaW5nKiB0cnVlRXh0ZW5zaW9u
KHRpZmZSZXNvdXJjZS0+aW1hZ2UoKS0+ZmlsZW5hbWVFeHRlbnNpb24oKSk7CiAgICAgICAgICAg
ICBpZiAoIW1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoZmlsZW5hbWUsIHRydWVFeHRlbnNp
b24pKQpAQCAtNDQ1OCw3ICs0NDU4LDcgQEAgLSAodm9pZCltb3VzZVVwOihXZWJFdmVudCAqKWV2
ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVu
dCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5l
dyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0
b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBj
YXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIFtbZXZl
bnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFz
ZSgpOwogI2VuZGlmCiAKICAgICBbc2VsZiBfc2V0TW91c2VEb3duRXZlbnQ6bmlsXTsKQEAgLTQ5
MzksNyArNDkzOSw3IEBAIC0gKHZvaWQpa2V5RG93bjooV2ViRXZlbnQgKilldmVudAogICAgIC8v
IFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4g
YSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWln
aHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcK
ICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHBy
b2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0g
YXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKICNlbmRp
ZgogCiAgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiBzZWxmUHJvdGVjdG9yID0gc2VsZjsKQEAg
LTQ5ODIsNyArNDk4Miw3IEBAIC0gKHZvaWQpa2V5VXA6KFdlYkV2ZW50ICopZXZlbnQKICAgICAv
LyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVu
IGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1p
Z2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5n
CiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBw
cm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAjZW5k
aWYKIAogICAgIEJPT0wgZXZlbnRXYXNTZW50VG9XZWJDb3JlID0gKF9wcml2YXRlLT5rZXlEb3du
RXZlbnQgPT0gZXZlbnQpOwpAQCAtNTAwMiw3ICs1MDAyLDcgQEAgLSAodm9pZClmbGFnc0NoYW5n
ZWQ6KE5TRXZlbnQgKilldmVudAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25k
aW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAg
Ly8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWlu
aW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2
ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQg
Y29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihl
dmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gc2VsZlBy
b3RlY3RvciA9IHNlbGY7CiAKQEAgLTUwOTcsNyArNTA5Nyw3IEBAIC0gKE5TRGljdGlvbmFyeSAq
KV9mb250QXR0cmlidXRlc0Zyb21Gb250UGFzdGVib2FyZAogICAgIGlmIChkYXRhID09IG5pbCB8
fCBbZGF0YSBsZW5ndGhdID09IDApCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgLy8gTlNUZXh0
VmlldyBkb2VzIHNvbWV0aGluZyBtb3JlIGVmZmljaWVudCBieSBwYXJzaW5nIHRoZSBhdHRyaWJ1
dGVzIG9ubHksIGJ1dCB0aGF0J3Mgbm90IGF2YWlsYWJsZSBpbiBBUEkuCi0gICAgTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcgPSBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
OmRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdKTsKICAgICBpZiAoc3RyaW5nID09IG5pbCB8
fCBbc3RyaW5nIGxlbmd0aF0gPT0gMCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4g
W3N0cmluZyBmb250QXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMSldOwpAQCAtNTI2
MCw3ICs1MjYwLDcgQEAgLSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVudDooTlNFdmVudCAqKWV2
ZW50CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVu
dCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5l
dyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0
b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBj
YXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIFtbZXZl
bnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFz
ZSgpOwogCiAgICAgQk9PTCBldmVudFdhc1NlbnRUb1dlYkNvcmUgPSAoX3ByaXZhdGUtPmtleURv
d25FdmVudCA9PSBldmVudCk7CiAgICAgQk9PTCByZXQgPSBOTzsKQEAgLTYzMTYsNyArNjMxNiw3
IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXRleHRTdG9yYWdlCiAgICAgTE9HKFRleHRJbnB1
dCwgInRleHRTdG9yYWdlIC0+IFwiJUBcIiIsIHJlc3VsdCA/IFtyZXN1bHQgc3RyaW5nXSA6IEAi
Iik7CiAgICAgCiAgICAgLy8gV2UgaGF2ZSB0byByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIHJhdGhl
ciB0aGFuIG51bGwgdG8gcHJldmVudCBUU00gZnJvbSBjYWxsaW5nIC1zdHJpbmcKLSAgICByZXR1
cm4gcmVzdWx0ID8gcmVzdWx0IDogW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQpAQCAtNjk2Myw5ICs2OTYzLDkgQEAgLSAoTlNSZWN0KXNlbGVjdGlv
bkltYWdlUmVjdAogLSAoTlNBcnJheSAqKXBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbgogewog
ICAgIGlmIChbc2VsZiBfY2FuU21hcnRDb3B5T3JEZWxldGVdKSB7Ci0gICAgICAgIE5TTXV0YWJs
ZUFycmF5ICp0eXBlcyA9IFtbW1tzZWxmIGNsYXNzXSBfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVz
XSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIHR5cGVzID0gYWRvcHRO
UyhbW1tzZWxmIGNsYXNzXSBfc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzXSBtdXRhYmxlQ29weV0p
OwogICAgICAgICBbdHlwZXMgYWRkT2JqZWN0OldlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlXTsKLSAg
ICAgICAgcmV0dXJuIHR5cGVzOworICAgICAgICByZXR1cm4gdHlwZXMuYXV0b3JlbGVhc2UoKTsK
ICAgICB9CiAgICAgcmV0dXJuIFtbc2VsZiBjbGFzc10gX3NlbGVjdGlvblBhc3RlYm9hcmRUeXBl
c107CiB9CkBAIC03MDAyLDcgKzcwMDIsNyBAQCAtIChOU1N0cmluZyAqKXN0cmluZwogLSAoTlNB
dHRyaWJ1dGVkU3RyaW5nICopX2xlZ2FjeUF0dHJpYnV0ZWRTdHJpbmdGcm9tOihET01Ob2RlICop
c3RhcnRDb250YWluZXIgb2Zmc2V0OihpbnQpc3RhcnRPZmZzZXQgdG86KERPTU5vZGUgKillbmRD
b250YWluZXIgb2Zmc2V0OihpbnQpZW5kT2Zmc2V0CiB7CiAgICAgaWYgKCFzdGFydENvbnRhaW5l
ciB8fCAhZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4g
YXR0cmlidXRlZFN0cmluZyhXZWJDb3JlOjpTaW1wbGVSYW5nZSB7IHsgKmNvcmUoc3RhcnRDb250
YWluZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpIH0sCiAgICAgICAgIHsg
KmNvcmUoZW5kQ29udGFpbmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCkgfSB9
KS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTcwMTEsNyArNzAxMSw3IEBAIC0gKE5TQXR0
cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmcKIHsKICAgICBhdXRvIGRvY3VtZW50ID0g
Y29yZShbW3NlbGYgX2ZyYW1lXSBET01Eb2N1bWVudF0pOwogICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKmRvY3VtZW50KTsKICAgICBpZiAoYXV0byByZXN1bHQgPSBhdHRyaWJ1
dGVkU3RyaW5nKHJhbmdlKS5zdHJpbmcpCiAgICAgICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVh
c2UoKTsKQEAgLTcwMjIsMTAgKzcwMjIsMTAgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopc2Vs
ZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nCiB7CiAgICAgYXV0byBmcmFtZSA9IGNvcmUoW3NlbGYgX2Zy
YW1lXSk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFtbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgYXV0
byByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CiAg
ICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgaWYgKGF1dG8gcmVz
dWx0ID0gYXR0cmlidXRlZFN0cmluZygqcmFuZ2UpLnN0cmluZykKICAgICAgICAgcmV0dXJuIHJl
c3VsdC5hdXRvcmVsZWFzZSgpOwogICAgIHJldHVybiBlZGl0aW5nQXR0cmlidXRlZFN0cmluZygq
cmFuZ2UpLnN0cmluZy5hdXRvcmVsZWFzZSgpOwpAQCAtNzA2Nyw3ICs3MDY3LDcgQEAgLSAoTlNE
aWN0aW9uYXJ5ICopZWxlbWVudEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgYWxsb3dTaGFkb3dDb250
ZW50OihCT09MKWFsbG93U2gKICAgICBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RU
eXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIGlm
ICghYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICBoaXRUeXBlLmFkZChIaXRUZXN0UmVxdWVz
dDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKLSAgICByZXR1cm4gW1tbV2ViRWxl
bWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlRnJhbWUtPmV2
ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50IHsgcG9pbnQgfSwgaGl0
VHlwZSldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkVsZW1lbnREaWN0
aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCB7IHBvaW50IH0sIGhpdFR5cGUpXSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihO
U1N0cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlIG9wdGlvbnM6KFdl
YkZpbmRPcHRpb25zKW9wdGlvbnMgbGltaXQ6KE5TVUludGVnZXIpbGltaXQgbWFya01hdGNoZXM6
KEJPT0wpbWFya01hdGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCA1M2Rm
NGNiYmExMWRmNWM5MmIyYTE3NDBiYTg5MjgwYjhiMGFmMzM1Li5mOWE5ZTQ2YzkzNTg2YTg0YTZl
MTc0MjlmNGI1NDcwY2I5ZWRlNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBA
IC0yNzAsNyArMjcwLDcgQEAgLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyRGlkQ29t
cGxldGVBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVIKIC0gKGlkIDxOU0ltbWVk
aWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxl
cgogewogICAgIGlmIChfY29udGVudFByZXZlbnRzRGVmYXVsdCkKLSAgICAgICAgcmV0dXJuIFtb
W1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBbmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XSku
YXV0b3JlbGVhc2UoKTsKIAogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0
ZUxpbmtVUkwoKTsKICAgICBTdHJpbmcgYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRl
U3RyaW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Tm90aWZpY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOb3Rp
ZmljYXRpb24ubW0KaW5kZXggZDFmZjgzNWI5OTUxMTNlMjQ3YTlmNzBkNDMzNTlmODc3MmMxNmY0
OS4uMjZiMTEyZWJmYTAxODI2MTU1YTQwZjExMDQ4YjQ2MWFiNGEyNjQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW0KQEAgLTE1
MCw3ICsxNTAsNyBAQCAtIChOU1N0cmluZyAqKWRpcgogLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4KIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICByZXR1cm4gW1tbV2ViU2Vj
dXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpjb3JlKHNl
bGYpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCldIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29yZShzZWxmKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpXSkuYXV0b3JlbGVhc2UoKTsKICNlbHNlCiAgICAgcmV0
dXJuIG5pbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
REZWaWV3Lm1tCmluZGV4IGIwODRiZDMwMTVhNjA1MzIzN2U2ZDE3ZjIwN2E2MDg3YzUwMDc5NzUu
LmY3M2FlOWEwZDAwNmQyMDZjYzE2ZDI4OWM1MGU3ZTE5ZmEwNGJiYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTg4MywxMyArODgzLDEz
IEBAIC0gKE5TSW1hZ2UgKilzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9y
Y2VCbGFja1RleHQKICAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOk5TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSB2YWx1ZTpbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VX
aGl0ZTowLjBmIGFscGhhOjEuMGZdIHJhbmdlOndob2xlU3RyaW5nUmFuZ2VdOwogICAgIFthdHRy
aWJ1dGVkU3RyaW5nIGVuZEVkaXRpbmddOwogICAgIAotICAgIE5TSW1hZ2UqIHNlbGVjdGlvbklt
YWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOltzZWxmIHNlbGVjdGlvblJlY3Rd
LnNpemVdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlbGVjdGlvbkltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpbc2VsZiBzZWxlY3Rpb25SZWN0XS5zaXplXSk7
CiAgICAgCiAgICAgW3NlbGVjdGlvbkltYWdlIGxvY2tGb2N1c107CiAgICAgW2F0dHJpYnV0ZWRT
dHJpbmcgZHJhd0F0UG9pbnQ6TlNaZXJvUG9pbnRdOwogICAgIFtzZWxlY3Rpb25JbWFnZSB1bmxv
Y2tGb2N1c107CiAKLSAgICByZXR1cm4gc2VsZWN0aW9uSW1hZ2U7CisgICAgcmV0dXJuIHNlbGVj
dGlvbkltYWdlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TUmVjdClzZWxlY3Rpb25JbWFnZVJl
Y3QKQEAgLTEzMzMsNyArMTMzMyw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9zY2FsZWRB
dHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKil1bnNjYWxlZEF0CiAgICAgaWYg
KHNjYWxlRmFjdG9yID09IDEuMCkKICAgICAgICAgcmV0dXJuIHVuc2NhbGVkQXR0cmlidXRlZFN0
cmluZzsKICAgICAKLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpyZXN1bHQgPSBbW3Vu
c2NhbGVkQXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHROUyhbdW5zY2FsZWRBdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5
XSk7CiAgICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFtyZXN1bHQgbGVuZ3RoXTsKICAgICBOU1Jh
bmdlIGVmZmVjdGl2ZVJhbmdlID0gTlNNYWtlUmFuZ2UoMCwwKTsKICAgICAKQEAgLTEzNDUsNyAr
MTM0NSw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9zY2FsZWRBdHRyaWJ1dGVkU3RyaW5n
OihOU0F0dHJpYnV0ZWRTdHJpbmcgKil1bnNjYWxlZEF0CiAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY2FuJ3Qgc2NhbGUgdGhlIGZvbnQgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IGl0IGlzLiBXZSBz
aG91bGQgYWx3YXlzIGtub3cgd2hhdCBpdCBpcywKICAgICAgICAgICAgIC8vIGJ1dCBzb21ldGlt
ZXMgZG9uJ3QgZHVlIHRvIFBERktpdCBpc3N1ZSA1MDg5NDExLiBXaGVuIHRoYXQncyBhZGRyZXNz
ZWQsIHdlIGNhbiByZW1vdmUgdGhpcwogICAgICAgICAgICAgLy8gZWFybHkgY29udGludWUuCi0g
ICAgICAgICAgICBMT0dfRVJST1IoIm5vIGZvbnQgYXR0cmlidXRlIGZvdW5kIGluIHJhbmdlICVA
IGZvciBhdHRyaWJ1dGVkIHN0cmluZyBcIiVAXCIgb24gcGFnZSAlQCAoc2VlIHJhZGFyIDUwODk0
MTEpIiwgTlNTdHJpbmdGcm9tUmFuZ2UoZWZmZWN0aXZlUmFuZ2UpLCByZXN1bHQsIFtbZGF0YVNv
dXJjZSByZXF1ZXN0XSBVUkxdKTsKKyAgICAgICAgICAgIExPR19FUlJPUigibm8gZm9udCBhdHRy
aWJ1dGUgZm91bmQgaW4gcmFuZ2UgJUAgZm9yIGF0dHJpYnV0ZWQgc3RyaW5nIFwiJUBcIiBvbiBw
YWdlICVAIChzZWUgcmFkYXIgNTA4OTQxMSkiLCBOU1N0cmluZ0Zyb21SYW5nZShlZmZlY3RpdmVS
YW5nZSksIHJlc3VsdC5nZXQoKSwgW1tkYXRhU291cmNlIHJlcXVlc3RdIFVSTF0pOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMzU0LDcgKzEzNTQsNyBA
QCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfc2NhbGVkQXR0cmlidXRlZFN0cmluZzooTlNBdHRy
aWJ1dGVkU3RyaW5nICopdW5zY2FsZWRBdAogICAgIH0KICAgICBbcmVzdWx0IGVuZEVkaXRpbmdd
OwogICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtICh2b2lkKV9zZXRUZXh0TWF0Y2hlczooTlNBcnJheSAqKWFycmF5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBlZjEw
OTg2ZGE4NzUzYWIzMTA5ZTBhZjE2MjFiMzAxMmY0ZTllNmE2Li4xMjE5OGY0MDFlYThhZDU3OGRk
N2JkZWFjYzA0ZGZiN2UzNGFjNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTMwMiw3ICszMDIsNyBAQCAtIChpZClfaW5pdFdpdGhE
YXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCi0gICAgYXV0
byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb3B5RGF0YSA/IFtbZGF0YSBjb3B5XSBhdXRvcmVsZWFzZV0gOiBkYXRhKSwgVVJMLCBN
SU1FVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVOYW1lLCByZXNwb25zZSk7CisgICAgYXV0
byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb3B5RGF0YSA/IGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpIDogZGF0YSksIFVSTCwg
TUlNRVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwogICAgIGlm
ICghY29yZVJlc291cmNlKSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtMzM4LDEyICszMzgsMTIgQEAgLSAoTlNTdHJpbmcgKilfc3VnZ2VzdGVkRmls
ZW5hbWUKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKE5TRmlsZVdyYXBwZXIgKilfZmls
ZVdyYXBwZXJSZXByZXNlbnRhdGlvbgogewotICAgIE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBb
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6W3NlbGYg
ZGF0YV1dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltzZWxmIGRhdGFdXSk7
CiAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW3NlbGYgX3N1Z2dlc3RlZEZpbGVuYW1lXTsKICAg
ICBpZiAoIWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgZmlsZW5hbWUg
PSBbW3NlbGYgVVJMXSBfd2Via2l0X3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlOltzZWxm
IE1JTUVUeXBlXV07CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6ZmlsZW5hbWVd
OwotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7
CiB9CiAjZW5kaWYKIApAQCAtMzU0LDcgKzM1NCw3IEBAIC0gKE5TVVJMUmVzcG9uc2UgKilfcmVz
cG9uc2UKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKICAgICBpZiAoX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmVzcG9uc2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKLSAgICByZXR1cm4gcmVzcG9uc2UgPyBy
ZXNwb25zZSA6IFtbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsgICAg
ICAgIAorICAgIHJldHVybiByZXNwb25zZSA/IHJlc3BvbnNlIDogYWRvcHROUyhbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKV9z
dHJpbmdWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJTY3JpcHRXb3JsZC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2Ny
aXB0V29ybGQubW0KaW5kZXggMTE4MDgwMjlmNjY3NWEwMGM0YmYwY2ZhZjYyZTE5MDY3ZDUyZTkz
YS4uMGFiNDkwNDFhNmVmZjE3ZTBkY2RjZDc2YzIzMjhkMzhhMTZiNjNiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdFdvcmxkLm1tCkBAIC05Miw3
ICs5Miw3IEBAICsgKFdlYlNjcmlwdFdvcmxkICopc3RhbmRhcmRXb3JsZAogCiArIChXZWJTY3Jp
cHRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRdKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiArIChXZWJTY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkRm9yR2xvYmFsQ29u
dGV4dDooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKQEAgLTEyNCw3ICsxMjQsNyBAQCArIChX
ZWJTY3JpcHRXb3JsZCAqKWZpbmRPckNyZWF0ZVdvcmxkOihXZWJDb3JlOjpET01XcmFwcGVyV29y
bGQmKXdvcmxkCiAgICAgaWYgKFdlYlNjcmlwdFdvcmxkICpleGlzdGluZ1dvcmxkID0gYWxsV29y
bGRzKCkuZ2V0KCZ3b3JsZCkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ1dvcmxkOwogCi0gICAg
cmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoV29ybGQ6d29ybGRdIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoV29ybGQ6d29ybGRdKS5h
dXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KaW5k
ZXggYTBkYzJiOGRhOWVmYmI2OGEyOGZmZjM1YTMxZDk1MjVhMjcyYjQzMy4uMmIxOGY2OWNjMDEz
ZDc4ODYxN2I5MmUwNjFlZDg3MWNjYmI4MmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIC0gKGlkKWluaXQKICAgICBfcGxheWJhY2tJbnRlcmZh
Y2UgPSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCpfcGxh
eWJhY2tNb2RlbCk7CiAgICAgX2NvbnRlbnRPdmVybGF5ID0gYWRvcHROUyhbW05TVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CiAgICAgX2NvbnRlbnRPdmVybGF5LmdldCgp
LmxheWVyQ29udGVudHNSZWRyYXdQb2xpY3kgPSBOU1ZpZXdMYXllckNvbnRlbnRzUmVkcmF3TmV2
ZXI7Ci0gICAgX2NvbnRlbnRPdmVybGF5LmdldCgpLmxheWVyID0gW1tbV2ViVmlkZW9GdWxsc2Ny
ZWVuT3ZlcmxheUxheWVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgX2NvbnRlbnRP
dmVybGF5LmdldCgpLmxheWVyID0gYWRvcHROUyhbW1dlYlZpZGVvRnVsbHNjcmVlbk92ZXJsYXlM
YXllciBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgW19jb250ZW50T3ZlcmxheSBz
ZXRXYW50c0xheWVyOllFU107CiAgICAgW19jb250ZW50T3ZlcmxheSBzZXRBdXRvcmVzaXppbmdN
YXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CiAgICAgW3Nl
bGYgd2luZG93RGlkTG9hZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggMTNlMWY4YmU5YjU5YWE2YTNlYzgwYmQ0MTIyYmE0Njc2NGI4NzRmYS4uNWFj
YjVkOWRkOGM0N2ExMDAwMzRiZmE2ZWZhYjY3N2YxYjE1Yzg5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjczMCwxMSArMjczMCwxMSBAQCAtIChO
U01lbnUgKilfbWVudUZvckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQgZGVmYXVsdEl0
ZW1zOihOU0FycmF5ICopaXRlbQogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBOU01lbnUgKm1lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdF07CisgICAgYXV0byBt
ZW51ID0gYWRvcHROUyhbW05TTWVudSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBbbWVudSBhZGRJdGVtOlttZW51SXRlbXMg
b2JqZWN0QXRJbmRleDppXV07CiAKLSAgICByZXR1cm4gW21lbnUgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBtZW51LmF1dG9yZWxlYXNlKCk7CiB9CiAjZW5kaWYKIApAQCAtMzIxOCw3ICszMjE4
LDcgQEAgKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFzcyByZXByZXNl
bnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnQKICAgICBpZiAoc2NoZW1lc1dpdGhSZXByZXNl
bnRhdGlvbnNTZXQgPT0gbmlsKSB7CiAgICAgICAgIHNjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25z
U2V0ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOwogICAgIH0KLSAgICBbc2NoZW1lc1dp
dGhSZXByZXNlbnRhdGlvbnNTZXQgYWRkT2JqZWN0OltbW1VSTFNjaGVtZSBsb3dlcmNhc2VTdHJp
bmddIGNvcHldIGF1dG9yZWxlYXNlXV07CisgICAgW3NjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25z
U2V0IGFkZE9iamVjdDphZG9wdE5TKFtbVVJMU2NoZW1lIGxvd2VyY2FzZVN0cmluZ10gY29weV0p
LmdldCgpXTsKIH0KIAogKyAoTlNTdHJpbmcgKilfZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hl
bWU6KE5TU3RyaW5nICopVVJMU2NoZW1lCkBAIC0zNjI2LDEwICszNjI2LDkgQEAgLSAoTlNVUkwg
KilfZGlzcGxheVVSTAogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UgPSBbZnJhbWUgcHJv
dmlzaW9uYWxEYXRhU291cmNlXTsKICAgICBpZiAoIWRhdGFTb3VyY2UpCiAgICAgICAgIGRhdGFT
b3VyY2UgPSBbZnJhbWUgZGF0YVNvdXJjZV07Ci0gICAgTlNVUkwgKnVucmVhY2hhYmxlVVJMID0g
W2RhdGFTb3VyY2UgdW5yZWFjaGFibGVVUkxdOwotICAgIE5TVVJMICpVUkwgPSB1bnJlYWNoYWJs
ZVVSTCAhPSBuaWwgPyB1bnJlYWNoYWJsZVVSTCA6IFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBVUkxd
OwotICAgIFtbVVJMIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIHJldHVybiBVUkw7CisgICAg
YXV0byB1bnJlYWNoYWJsZVVSTCA9IHJldGFpblB0cihbZGF0YVNvdXJjZSB1bnJlYWNoYWJsZVVS
TF0pOworICAgIGF1dG8gdXJsID0gdW5yZWFjaGFibGVVUkwgIT0gbmlsID8gdW5yZWFjaGFibGVV
UkwgOiByZXRhaW5QdHIoW1tkYXRhU291cmNlIHJlcXVlc3RdIFVSTF0pOworICAgIHJldHVybiB1
cmwuYXV0b3JlbGVhc2UoKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCkBA
IC00MDkwLDcgKzQwODksNyBAQCAtIChXZWJUZXh0SXRlcmF0b3IgKil0ZXh0SXRlcmF0b3JGb3JS
ZWN0OihOU1JlY3QpcmVjdAogICAgIGF1dG8gaW50UmVjdCA9IFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QocmVjdCk7CiAgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24o
Y29yZUZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChpbnRSZWN0Lm1pblhNaW5ZQ29ybmVy
KCkpLAogICAgICAgICBjb3JlRnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGludFJlY3Qu
bWF4WE1heFlDb3JuZXIoKSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgcmV0dXJuIFtbW1dl
YlRleHRJdGVyYXRvciBhbGxvY10gaW5pdFdpdGhSYW5nZTpraXQocmFuZ2UpXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJUZXh0SXRlcmF0b3IgYWxsb2NdIGluaXRXaXRo
UmFuZ2U6a2l0KHJhbmdlKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTUyNjIsMTQgKzUyNjEsMTQgQEAgKyAoTlNBcnJheSAqKU1JTUVUeXBlc1No
b3duQXNIVE1MCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdmlld1R5cGVzID0gW1dlYkZyYW1l
VmlldyBfdmlld1R5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpZRVNdOwogICAgIE5TRW51bWVy
YXRvciAqZW51bWVyYXRvciA9IFt2aWV3VHlwZXMga2V5RW51bWVyYXRvcl07CiAgICAgaWQga2V5
OwotICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgd2hpbGUgKChrZXkgPSBbZW51bWVyYXRvciBuZXh0
T2JqZWN0XSkpIHsKICAgICAgICAgaWYgKFt2aWV3VHlwZXMgb2JqZWN0Rm9yS2V5OmtleV0gPT0g
W1dlYkhUTUxWaWV3IGNsYXNzXSkKICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6a2V5XTsK
ICAgICB9CiAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgcmV0dXJuIGFycmF5LmF1dG9yZWxlYXNl
KCk7CiB9CiAKICsgKHZvaWQpc2V0TUlNRVR5cGVzU2hvd25Bc0hUTUw6KE5TQXJyYXkgKilNSU1F
VHlwZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAzNDc0ODk1YWUxODU4YzAzZWJhNzBjZWViYWQxZDExNTMwMWI1Y2NmLi5kOWRjYTFhNzJmZGEw
ZTY0ZTUzMmU5MzA0ZWVkMTIwNTExZGJjN2Q2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEzIEBACisyMDIxLTAyLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVz
YWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBmdXJ0aGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIwNjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWR1Y2UgZXhwbGljaXQgdXNh
Z2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBmdXJ0aGVyIGJ5IHVzaW5nIFJldGFp
blB0ci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUJyb3dz
ZXJWaWV3Lm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXcgaW5pdFdp
dGhGcmFtZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUpTU3RyaW5nUmVmKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChjcmVhdGVXZWJW
aWV3QW5kT2Zmc2NyZWVuV2luZG93KToKKyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgorICAg
ICAgICAoZHVtcCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
V2luZG93Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tOgorICAgICAgICAoK1tTeW50aGV0aWNUb3VjaCB0b3VjaFdpdGhMb2NhdGlvbjpw
aGFzZTppZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGJl
Z2luRHJhZ1dpdGhGaWxlczpdKToKKyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBy
ZXBsYXlTYXZlZEV2ZW50c10pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKGRpc3Bvc2l0aW9uVHlwZUZyb21Db250ZW50RGlzcG9zaXRp
b25IZWFkZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNvdXJj
ZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlE
ZWxlZ2F0ZSB3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKiBU
ZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFj
Lm1tOgorICAgICAgICAoK1tFdmVudFNlcmlhbGl6ZXIgZGljdGlvbmFyeUZvckV2ZW50OnJlbGF0
aXZlVG9UaW1lOl0pOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5tbToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBzZXRS
ZXN1bHRzRnJvbUpTVmFsdWU6aW5Db250ZXh0Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0cmlnZ2VyR0MpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
V2ViQ29yZU5TVVJMU2Vzc2lvblRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0NvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0
aW5nRGVsZWdhdGUubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbToKKyAgICAgICAg
KC1bQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOndpbGxCZWdpbklucHV0U2Vzc2lvbkZvckVsZW1lbnQ6aW5GcmFtZTp1c2Vy
SXNJbnRlcmFjdGluZzpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlw
Ym9hcmRUZXN0cy5tbToKKyAgICAgICAgKHJlYWRNYXJrdXBGcm9tUGFzdGVib2FyZCk6CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbToKKyAgICAgICAgKC1bQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uRGVsZWdhdGUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZXh0TWVudXMubW06Cisg
ICAgICAgICgtW1Rlc3RDb250ZXh0TWVudVVJRGVsZWdhdGUgd2ViVmlldzpjb250ZXh0TWVudUNv
bmZpZ3VyYXRpb25Gb3JFbGVtZW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtU
ZXN0Q29udGV4dE1lbnVBUElCZWZvcmVTUElVSURlbGVnYXRlIHdlYlZpZXc6Y29udGV4dE1lbnVD
b25maWd1cmF0aW9uRm9yRWxlbWVudDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
VGVzdENvbnRleHRNZW51U3VnZ2VzdGVkQWN0aW9uc1VJRGVsZWdhdGUgd2ViVmlldzpjb250ZXh0
TWVudUNvbmZpZ3VyYXRpb25Gb3JFbGVtZW50OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW06CisgICAgICAg
IChyZWFkSFRNTFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0RldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnMubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rp
c3BsYXlOYW1lLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoRG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZpbGUpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bSW5BcHBCcm93c2VyU2No
ZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy5tbToKKyAg
ICAgICAgKGdldE5leHRNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5t
bToKKyAgICAgICAgKGdldE5leHRNZXNzYWdlKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVtcEZpbGVTaXplLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9KSVRFbmFibGVkLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW06Cisg
ICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05hdmlnYXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNz
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9OZXR3b3JrUHJvY2Vzc0NyYXNoTm9uUGVyc2lzdGVudERhdGFTdG9yZS5tbToKKyAg
ICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJlZmVyZW5jZXMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NjaGVtZUhhbmRsZXIgd2ViVmll
dzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW06CisgICAgICAgICgrW1Rlc3RTZXJ2aWNlTG9va3Vw
UmVzdWx0IHJlc3VsdFdpdGhQcm92aWRlcjpwaGlzaGluZzptYWx3YXJlOnVud2FudGVkU29mdHdh
cmU6XSk6CisgICAgICAgICgrW1Rlc3RMb29rdXBSZXN1bHQgcmVzdWx0V2l0aFJlc3VsdHM6XSk6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbToKKyAgICAgICAgKC1bU1dDdXN0b21Vc2VyQWdlbnRE
ZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVu
Y2VzOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6bWFrZVdlYlZpZXdXaXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxh
dGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAoLVtVSVRlc3REZWxlZ2F0ZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpd
KToKKyAgICAgICAgKC1bTW9kYWxEZWxlZ2F0ZSB3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29u
ZmlndXJhdGlvbjpmb3JOYXZpZ2F0aW9uQWN0aW9uOndpbmRvd0ZlYXR1cmVzOl0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tOgorICAgICAgICAod2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5k
bGVyUmVtb3ZhbFRlc3QpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0FzeW5jU2NyaXB0
TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNz
YWdlOnJlcGx5SGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAg
ICAgICAocGxhdGZvcm1Db3B5UmljaFRleHRXaXRoSW1hZ2UpOgorICAgICAgICAocGxhdGZvcm1J
bWFnZVdpdGhEYXRhKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtVSURlbGVnYXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rvcjpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5t
bToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICgtW1Rhc2tTY2hlbWVIYW5k
bGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTeW5jRXJyb3JT
Y2hlbWUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW0ZyYW1lU2No
ZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06Cisg
ICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJHTFBvbGljeS5tbToKKyAgICAgICAgKC1bV2ViR0xUZXN0
RGVsZWdhdGUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW06Cisg
ICAgICAgIChnZXROZXh0TWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChnZXRO
ZXh0TWVzc2FnZSk6CisgICAgICAgIChydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMpOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW0NvbnRlbnRCbG9ja2luZ1dlYnNpdGVQ
b2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpw
cmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0F1dG9wbGF5UG9saWNp
ZXNEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJlZmVy
ZW5jZXM6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtBc3luY0F1dG9wbGF5UG9saWNp
ZXNEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246cHJlZmVy
ZW5jZXM6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1Rl
c3RTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAo
cmVzcG9uZCk6CisgICAgICAgICgtW0N1c3RvbUhlYWRlckZpZWxkc0RlbGVnYXRlIHdlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIF93ZWJWaWV3OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246dXNlckluZm86ZGVjaXNpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW0N1c3RvbU5hdmlnYXRvclBsYXRmb3JtRGVsZWdhdGUgX3dlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uRGVsZWdhdGUgX3dl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczp1c2VySW5m
bzpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1BvcFVwUG9saWNpZXNEZWxlZ2F0ZSBf
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlIHdl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczpkZWNpc2lv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9p
T1NNb3VzZVN1cHBvcnQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJbnB1dHNBY2Nlc3NvcnlWaWV3VGVz
dHMubW06CisgICAgICAgIChjZWxsRm9yUm93QXRJbmRleFBhdGgpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpzd2l6emxlZFJlc2l6YWJsZVNuYXBzaG90Vmlld0Zyb21SZWN0KToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvSW5zcGVjdG9yQmFyLm1tOgorICAgICAgICAoLVtJbnNwZWN0b3JCYXJDb250cm9sbGVyIGNv
bnZlcnRBdHRyaWJ1dGVzOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ph
dmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtKYXZhc2NyaXB0VVJMTmF2aWdh
dGlvbkRlbGVnYXRlIHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5h
dmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVyZXM6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbToKKyAgICAgICAgKCtbRnJhbWVM
b2FkQ29tcGxldGlvbkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFRlc3RJbWFnZSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV0tXZWJW
aWV3TWFjRWRpdGluZ1Rlc3RzLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0ljb25Mb2FkaW5nLm1tOgorICAgICAgICAoaW1hZ2VG
cm9tRGF0YSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UHJvdG9jb2wubW06
CisgICAgICAgIChhZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKCtbVGVzdFBy
b3RvY29sIGFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnNdKToKKyAgICAgICAgKCtbVGVzdFByb3Rv
Y29sIHNldEFkZGl0aW9uYWxSZXNwb25zZUhlYWRlcnM6XSk6CisgICAgICAgICgtW1Rlc3RQcm90
b2NvbCBzdGFydExvYWRpbmddKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBvYmplY3RCeUNhbGxpbmdBc3luY0Z1
bmN0aW9uOndpdGhBcmd1bWVudHM6ZXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcg
aW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1l
OmNvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtN
b2NrRHJvcFNlc3Npb24gaW5pdFdpdGhQcm92aWRlcnM6bG9jYXRpb246d2luZG93OmFsbG93TW92
ZTpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3RnJh
bWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgX3dl
YlZpZXc6d2lsbFVwZGF0ZURyb3BQcm9wb3NhbFRvUHJvcG9zYWw6Zm9yU2Vzc2lvbjpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9EcmFnQW5kRHJvcFNpbXVsYXRvck1hYy5tbToKKyAg
ICAgICAgKGRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSk6CisgICAgICAgICgtW0RyYWdBbmREcm9w
U2ltdWxhdG9yIGluaXRXaXRoV2ViVmlld0ZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAg
ICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIHJ1bkZyb206dG86XSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bToKKyAgICAgICAgKFdUUjo6Y3JlYXRlSlNTdHJpbmdSZWYpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFTdG9yZSk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6XSk6CisKIDIwMjEt
MDItMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEdW1wUmVu
ZGVyVHJlZSdzIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coKSBzaG91bGQgcmV0dXJu
IGEgUmV0YWluUHRyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvRHVtcFJl
bmRlclRyZWVCcm93c2VyVmlldy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVu
ZGVyVHJlZUJyb3dzZXJWaWV3Lm1tCmluZGV4IGUxMDYyZmFmYjc0N2ZiNDdjOGMxMzM5ZDIwYjcy
ZjQwNzlkNzI0YjIuLmNjYTdmODU5MzllODNmZmNjMWNhYWNmYjQ2ZmQ3YzZmY2VhMTY3YTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUJyb3dzZXJW
aWV3Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9EdW1wUmVuZGVyVHJlZUJyb3dz
ZXJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlEZWxlZ2F0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgVUlX
ZWJCcm93c2VyVmlldyAoV2ViVUlLaXREZWxlZ2F0ZSkKIC0gKEJPT0wpd2ViVmlldzooV2ViVmll
dyAqKXdlYlZpZXcgc2hvdWxkU2Nyb2xsVG9Qb2ludDooQ0dQb2ludClwb2ludCBmb3JGcmFtZToo
V2ViRnJhbWUgKilmcmFtZTsKQEAgLTExMyw3ICsxMTQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIAotICAgIHNlbGYuc2Nyb2xsVmlld0RlbGVnYXRlID0gW1tbRHVtcFJlbmRlclRy
ZWVXZWJTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsVmlldzpzZWxmXSBh
dXRvcmVsZWFzZV07CisgICAgc2VsZi5zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbRHVt
cFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsVmll
dzpzZWxmXSkuZ2V0KCk7CiAgICAgc2VsZi5kZWxlZ2F0ZSA9IHNlbGYuc2Nyb2xsVmlld0RlbGVn
YXRlOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDk2NmY0NjViZmFiMDc3YWU4
MmNlY2I3YTE3MjE0YjQ4MmQ0NDA0ZTkuLjRiNGEwMDVkYzk1NWU1NzExMGFiYjljYWZlZWM0Zjky
NGVhMzdkMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xODA2LDcgKzE4MDYsNyBAQCBzdGF0aWMgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGNyZWF0ZUpTU3RyaW5nUmVmKGlkIHN0cmluZykKIHsKICAgICBp
ZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWQgbXV0YWJsZVN0cmlu
ZyA9IFtbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gbXV0YWJsZVN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRd
KTsKICAgICBpZCBhdHRyaWJ1dGVzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVj
dGl2ZVJhbmdlOm5pbF07CiAgICAgaWQgYXR0cmlidXRlRW51bWVyYXRpb25CbG9jayA9IF4oTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqYXR0cnMsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKnN0
b3ApIHsKICAgICAgICAgQk9PTCBtaXNzcGVsbGVkID0gW1thdHRycyBvYmplY3RGb3JLZXk6TlNB
Y2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGVdIGJvb2xWYWx1ZV07CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggOTFlM2IxZjMxNDJjMzg2
YjhiNWU0MGFhODE4NGQzNWNjMWM4MGZhMS4uMzc5ZDUyMGQ3Mzk3OTI3YmZlOGE4Zjk4NjA4NTlm
NmVjODEzNTJhNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtNjgxLDcgKzY4MSw3IEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5k
T2Zmc2NyZWVuV2luZG93KCkKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgVGVz
dFJ1bm5lcjo6dmlld1dpZHRoLCBUZXN0UnVubmVyOjp2aWV3SGVpZ2h0KTsKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGZyYW1l
TmFtZTpuaWwgZ3JvdXBOYW1lOkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSJdKTsKICNlbHNl
Ci0gICAgRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqd2ViQnJvd3NlclZpZXcgPSBbW1tEdW1w
UmVuZGVyVHJlZUJyb3dzZXJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRlc3RWaWV3
cG9ydFJlY3RdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYkJyb3dzZXJWaWV3ID0gYWRvcHRO
UyhbW0R1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0
VGVzdFZpZXdwb3J0UmVjdF0pOwogICAgIFt3ZWJCcm93c2VyVmlldyBzZXRJbnB1dFZpZXdPYmV5
c0RPTUZvY3VzOllFU107CiAgICAgYXV0byB3ZWJWaWV3ID0gcmV0YWluUHRyKFt3ZWJCcm93c2Vy
VmlldyB3ZWJWaWV3XSk7CiAgICAgW3dlYlZpZXcgc2V0R3JvdXBOYW1lOkAib3JnLndlYmtpdC5E
dW1wUmVuZGVyVHJlZSJdOwpAQCAtNzQ0LDIxICs3NDQsMjEgQEAgUmV0YWluUHRyPFdlYlZpZXc+
IGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3coKQogCiAgICAgQ0dSZWN0IHVpV2luZG93
UmVjdCA9IGxheW91dFRlc3RWaWV3cG9ydFJlY3Q7CiAgICAgdWlXaW5kb3dSZWN0Lm9yaWdpbi55
ICs9IFtVSUFwcCBzdGF0dXNCYXJIZWlnaHRdOwotICAgIFVJV2luZG93ICp1aVdpbmRvdyA9IFtb
W1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOnVpV2luZG93UmVjdF0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gdWlXaW5kb3cgPSBhZG9wdE5TKFtbVUlXaW5kb3cgYWxsb2NdIGluaXRXaXRo
RnJhbWU6dWlXaW5kb3dSZWN0XSk7CiAKICAgICBhdXRvIHZpZXdDb250cm9sbGVyID0gYWRvcHRO
UyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbdWlXaW5kb3cgc2V0Um9v
dFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyLmdldCgpXTsKIAogICAgIC8vIFRoZSBVSVdp
bmRvdyBhbmQgVUlXZWJCcm93c2VyVmlldyBhcmUgcmVsZWFzZWQgd2hlbiB0aGUgRHVtcFJlbmRl
clRyZWVXaW5kb3cgaXMgY2xvc2VkLgotICAgIGRydFdpbmRvdy51aVdpbmRvdyA9IHVpV2luZG93
OwotICAgIGRydFdpbmRvdy5icm93c2VyVmlldyA9IHdlYkJyb3dzZXJWaWV3OworICAgIGRydFdp
bmRvdy51aVdpbmRvdyA9IHVpV2luZG93LmdldCgpOworICAgIGRydFdpbmRvdy5icm93c2VyVmll
dyA9IHdlYkJyb3dzZXJWaWV3LmdldCgpOwogCiAgICAgYXV0byBzY3JvbGxWaWV3ID0gYWRvcHRO
UyhbW0R1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpsYXlv
dXRUZXN0Vmlld3BvcnRSZWN0XSk7Ci0gICAgW3Njcm9sbFZpZXcgYWRkU3Vidmlldzp3ZWJCcm93
c2VyVmlld107CisgICAgW3Njcm9sbFZpZXcgYWRkU3Vidmlldzp3ZWJCcm93c2VyVmlldy5nZXQo
KV07CiAKICAgICBbW3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6c2Nyb2xsVmlldy5n
ZXQoKV07CiAKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQod2ViQnJv
d3NlclZpZXcsIHNjcm9sbFZpZXcuZ2V0KCkpOworICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3Rh
bmRhcmRWaWV3cG9ydCh3ZWJCcm93c2VyVmlldy5nZXQoKSwgc2Nyb2xsVmlldy5nZXQoKSk7CiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTQxMyw3ICsxNDEzLDcgQEAg
c3RhdGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV2ViRnJhbWUgKmYpCiAgICAgfQog
fQogCi1zdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQor
c3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJh
bWUpCiB7CiAgICAgRE9NRG9jdW1lbnQgKmRvY3VtZW50ID0gW2ZyYW1lIERPTURvY3VtZW50XTsK
ICAgICBET01FbGVtZW50ICpkb2N1bWVudEVsZW1lbnQgPSBbZG9jdW1lbnQgZG9jdW1lbnRFbGVt
ZW50XTsKQEAgLTE0MjEsMTEgKzE0MjEsMTMgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVz
QXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIEAiIjsKIAotICAgIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0ID0gW1tbTlNNdXRh
YmxlU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZVN0cmluZz4gcmVzdWx0OwogCiAgICAgLy8gQWRkIGhlYWRlciBmb3IgYWxsIGJ1dCB0aGUg
bWFpbiBmcmFtZS4KICAgICBpZiAoW2ZyYW1lIHBhcmVudEZyYW1lXSkKLSAgICAgICAgcmVzdWx0
ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiXG4tLS0tLS0tLVxuRnJhbWU6
ICclQCdcbi0tLS0tLS0tXG4iLCBbZnJhbWUgbmFtZV1dOworICAgICAgICByZXN1bHQgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIlxuLS0tLS0tLS1c
bkZyYW1lOiAnJUAnXG4tLS0tLS0tLVxuIiwgW2ZyYW1lIG5hbWVdXSk7CisgICAgZWxzZQorICAg
ICAgICByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU3RyaW5nIGFsbG9jXSBpbml0XSk7CiAK
ICAgICBOU1N0cmluZyAqaW5uZXJUZXh0ID0gW2RvY3VtZW50RWxlbWVudCBpbm5lclRleHRdOwog
ICAgIC8vIFdlIHVzZSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KCkgdG8gY29udmVy
dCBpbm5lclRleHQgdG8gYSBXSyBTdHJpbmcgc2luY2UKQEAgLTE0NDMsMTMgKzE0NDUsMTMgQEAg
c3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICAg
ICAgTlNBcnJheSAqa2lkcyA9IFtmcmFtZSBjaGlsZEZyYW1lc107CiAgICAgICAgIGlmIChraWRz
KSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgW2tpZHMgY291bnRdOyBp
KyspCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6ZHVtcEZyYW1lc0FzVGV4
dChba2lkcyBvYmplY3RBdEluZGV4OmldKV07CisgICAgICAgICAgICAgICAgW3Jlc3VsdCBhcHBl
bmRTdHJpbmc6ZHVtcEZyYW1lc0FzVGV4dChba2lkcyBvYmplY3RBdEluZGV4OmldKS5nZXQoKV07
CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBh
bGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVt
cEFzVGV4dCB0ZXN0IG91dHB1dC4KLSAgICBbcmVzdWx0IHJlcGxhY2VPY2N1cnJlbmNlc09mU3Ry
aW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJlc3Npb25T
ZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwotICAgIFtyZXN1bHQg
cmVwbGFjZU9jY3VycmVuY2VzT2ZTdHJpbmc6QCIgKyQiIHdpdGhTdHJpbmc6QCIiIG9wdGlvbnM6
TlNSZWd1bGFyRXhwcmVzc2lvblNlYXJjaCByYW5nZTpOU01ha2VSYW5nZSgwLCByZXN1bHQubGVu
Z3RoKV07CisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArXG4iIHdp
dGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIFtyZXN1bHQgbGVuZ3RoXSldOworICAgIFtyZXN1bHQgcmVwbGFjZU9jY3Vy
cmVuY2VzT2ZTdHJpbmc6QCIgKyQiIHdpdGhTdHJpbmc6QCIiIG9wdGlvbnM6TlNSZWd1bGFyRXhw
cmVzc2lvblNlYXJjaCByYW5nZTpOU01ha2VSYW5nZSgwLCBbcmVzdWx0IGxlbmd0aF0pXTsKIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNjM1LDcgKzE2MzcsNyBAQCB2b2lkIGR1bXAoKQog
ICAgIEFTU0VSVCghZ1Rlc3RSdW5uZXItPmhhc1BlbmRpbmdXZWJOb3RpZmljYXRpb25DbGljaygp
KTsKIAogICAgIGlmIChkdW1wVHJlZSkgewotICAgICAgICBOU1N0cmluZyAqcmVzdWx0U3RyaW5n
ID0gbmlsOworICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3VsdFN0cmluZzsKICAgICAg
ICAgTlNEYXRhICpyZXN1bHREYXRhID0gbmlsOwogICAgICAgICBOU1N0cmluZyAqcmVzdWx0TWlt
ZVR5cGUgPSBAInRleHQvcGxhaW4iOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWVXaW5kb3cubW0KaW5kZXggMTA4MmVmY2NkYjYyNTBjNzA0MDQ3MGNlNWY4
MWFkYTllZjJmMDQ5Ny4uODFiODhlNDg2YjQzOWVhYzI5M2RjMjA5MTNiZTE1YjA0ZDg3YWIwMyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5t
bQpAQCAtNjAsNyArNjAsNyBAQCBAc3ludGhlc2l6ZSBicm93c2VyVmlldyA9IF9icm93c2VyVmll
dzsKIAogKyAoTlNBcnJheSAqKW9wZW5XaW5kb3dzCiB7Ci0gICAgcmV0dXJuIFtbKE5TQXJyYXkg
KilvcGVuV2luZG93c1JlZiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMo
WyhOU0FycmF5ICopb3BlbldpbmRvd3NSZWYgY29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KHZvaWQpX2FkZFRvT3BlbldpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggYzZiMThlNzMwM2JlYTJjZjEzNjVlNzUz
ZGUzY2E3YTMyYmY3YTJjZS4uNTI2NjcwNTlkYzhhOWY3YzBhMDc5NjIwOGYwMGZiMGI5NDJmNGUw
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9ET01Qcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPGZ1bmN0aW9uYWw+
CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtOTEsMTAgKzkyLDE1IEBAIE5TUG9p
bnQgbGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9uOwogaW50IGxh
c3RDbGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CiBOU0FycmF5ICp3ZWJraXREb21FdmVudE5h
bWVzOwotTlNNdXRhYmxlQXJyYXkgKnNhdmVkTW91c2VFdmVudHM7IC8vIG1vdXNlIGV2ZW50cyBz
ZW50IGJldHdlZW4gbW91c2VEb3duIGFuZCBtb3VzZVVwIGFyZSBzdG9yZWQgaGVyZSwgYW5kIHRo
ZW4gZXhlY3V0ZWQgYXQgb25jZS4KIEJPT0wgcmVwbGF5aW5nU2F2ZWRFdmVudHM7CiB1bnNpZ25l
ZCBtb3VzZUJ1dHRvbnNDdXJyZW50bHlEb3duID0gMDsKIAorc3RhdGljIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4mIHNhdmVkTW91c2VFdmVudHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+PiBfc2F2ZWRNb3VzZUV2ZW50czsgLy8gbW91
c2UgZXZlbnRzIHNlbnQgYmV0d2VlbiBtb3VzZURvd24gYW5kIG1vdXNlVXAgYXJlIHN0b3JlZCBo
ZXJlLCBhbmQgdGhlbiBleGVjdXRlZCBhdCBvbmNlLgorICAgIHJldHVybiBfc2F2ZWRNb3VzZUV2
ZW50czsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIFN5bnRoZXRp
Y1RvdWNoIDogTlNPYmplY3QgewogQHB1YmxpYwpAQCAtMTE5LDcgKzEyNSw3IEBAIEBzeW50aGVz
aXplIGlkZW50aWZpZXIgPSBfaWRlbnRpZmllcjsKIAogKyAoaWQpdG91Y2hXaXRoTG9jYXRpb246
KENHUG9pbnQpbG9jYXRpb24gcGhhc2U6KFVJVG91Y2hQaGFzZSlwaGFzZSBpZGVudGlmaWVyOih1
bnNpZ25lZClpZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIFtbW1N5bnRoZXRpY1RvdWNoIGFsbG9j
XSBpbml0V2l0aExvY2F0aW9uOmxvY2F0aW9uIHBoYXNlOnBoYXNlIGlkZW50aWZpZXI6aWRlbnRp
Zmllcl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbU3ludGhldGljVG91Y2gg
YWxsb2NdIGluaXRXaXRoTG9jYXRpb246bG9jYXRpb24gcGhhc2U6cGhhc2UgaWRlbnRpZmllcjpp
ZGVudGlmaWVyXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhMb2NhdGlvbjoo
Q0dQb2ludClsb2NhdGlvbiBwaGFzZTooVUlUb3VjaFBoYXNlKXBoYXNlIGlkZW50aWZpZXI6KHVu
c2lnbmVkKWlkZW50aWZpZXIKQEAgLTQ1Niw4ICs0NjIsOCBAQCAtICh2b2lkKWJlZ2luRHJhZ1dp
dGhGaWxlczooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogICAgIGFzc2VydChbcGJvYXJk
IHByb3BlcnR5TGlzdEZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXSk7IC8vIHNldFByb3Bl
cnR5TGlzdCB3aWxsIHNpbGVudGx5IGZhaWwgb24gZXJyb3IsIGFzc2VydCB0aGF0IGl0IGRpZG4n
dCBmYWlsCiAKICAgICAvLyBQcm92aWRlIGEgc291cmNlLCBvdGhlcndpc2UgW0R1bXBSZW5kZXJU
cmVlRHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10gZGVmYXVsdHMgdG8g
TlNEcmFnT3BlcmF0aW9uTm9uZQotICAgIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNl
ICpzb3VyY2UgPSBbW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwotICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVEcmFn
Z2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3Rl
Ym9hcmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2VdOworICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhb
W0R1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlIGFsbG9jXSBpbml0XSk7CisgICAgZHJh
Z2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJ
bWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJj
ZS5nZXQoKV07CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gZHJhZ2dpbmdFbnRlcmVkOmRyYWdn
aW5nSW5mb107CiAKICAgICBkcmFnTW9kZSA9IE5POyAvLyBkcmFnTW9kZSBzYXZlcyBldmVudHMg
YW5kIHRoZW4gcmVwbGF5cyB0aGVtIGxhdGVyLiAgV2UgZG9uJ3QgbmVlZC93YW50IHRoYXQuCkBA
IC05NDQsMTggKzk1MCwyMCBAQCAtICh2b2lkKXNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2sKIAog
KyAodm9pZClzYXZlRXZlbnQ6KE5TSW52b2NhdGlvbiAqKWV2ZW50CiB7Ci0gICAgaWYgKCFzYXZl
ZE1vdXNlRXZlbnRzKQotICAgICAgICBzYXZlZE1vdXNlRXZlbnRzID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF07Ci0gICAgW3NhdmVkTW91c2VFdmVudHMgYWRkT2JqZWN0OmV2ZW50XTsK
KyAgICBhdXRvJiBzYXZlZEV2ZW50cyA9IHNhdmVkTW91c2VFdmVudHMoKTsKKyAgICBpZiAoIXNh
dmVkRXZlbnRzKQorICAgICAgICBzYXZlZEV2ZW50cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOworICAgIFtzYXZlZEV2ZW50cyBhZGRPYmplY3Q6ZXZlbnRdOwogfQog
CiArICh2b2lkKXJlcGxheVNhdmVkRXZlbnRzCiB7CiAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMg
PSBZRVM7Ci0gICAgd2hpbGUgKFtzYXZlZE1vdXNlRXZlbnRzIGNvdW50XSkgeworICAgIGF1dG8m
IHNhdmVkRXZlbnRzID0gc2F2ZWRNb3VzZUV2ZW50cygpOworICAgIHdoaWxlIChbc2F2ZWRFdmVu
dHMgY291bnRdKSB7CiAgICAgICAgIC8vIGlmIGEgZHJhZyBpcyBpbml0aWF0ZWQsIHRoZSByZW1h
aW5pbmcgc2F2ZWQgZXZlbnRzIHdpbGwgYmUgZGlzcGF0Y2hlZCBmcm9tIG91ciBkcmFnZ2luZyBk
ZWxlZ2F0ZQotICAgICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbW1tzYXZlZE1vdXNl
RXZlbnRzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFtz
YXZlZE1vdXNlRXZlbnRzIHJlbW92ZU9iamVjdEF0SW5kZXg6MF07CisgICAgICAgIGF1dG8gaW52
b2NhdGlvbiA9IHJldGFpblB0cihzYXZlZEV2ZW50cy5nZXQoKVswXSk7CisgICAgICAgIFtzYXZl
ZEV2ZW50cyByZW1vdmVPYmplY3RBdEluZGV4OjBdOwogICAgICAgICBbaW52b2NhdGlvbiBpbnZv
a2VdOwogICAgIH0KICAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IE5POwpAQCAtOTYzLDcgKzk3
MSw3IEBAICsgKHZvaWQpcmVwbGF5U2F2ZWRFdmVudHMKIAogKyAodm9pZCljbGVhclNhdmVkRXZl
bnRzCiB7Ci0gICAgYXV0byBvbGRFdmVudHMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2Uoc2F2ZWRN
b3VzZUV2ZW50cywgbmlsKSk7CisgICAgc2F2ZWRNb3VzZUV2ZW50cygpID0gbmlsOwogfQogCiAt
ICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNj
cmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRp
b24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbQppbmRleCA1Nzgy
NWY0YTE1ODJiZjM1OWM1NjgwODIwNWZkNGYzZTRmMGY1NmM4Li45N2ExNzg3N2Q0ZDc5NjU5NGM4
ZTkzNzQ5NzQ0YzMyMjg3MGYyMDBlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvUG9saWN5RGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGlj
eURlbGVnYXRlLm1tCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKil3ZWJWaWV3IHVuYWJsZVRvSW1wbGVtZW50UG9saWN5V2l0aEVycm9yOihOU0Vycm9yICop
ZQogCiBzdGF0aWMgTlNTdHJpbmcgKmRpc3Bvc2l0aW9uVHlwZUZyb21Db250ZW50RGlzcG9zaXRp
b25IZWFkZXIoTlNTdHJpbmcgKmhlYWRlcikKIHsKLSAgICBOU011dGFibGVTdHJpbmcgKnJlc3Vs
dCA9IFtbW1toZWFkZXIgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiOyJdIG9iamVjdEF0
SW5kZXg6MF0gbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0TlMoW1tbaGVhZGVyIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIjsiXSBvYmplY3RB
dEluZGV4OjBdIG11dGFibGVDb3B5XSk7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgQ0ZTdHJp
bmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5nUmVmKXJlc3VsdCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoQ0ZNdXRhYmxlU3RyaW5n
UmVmKXJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQog
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKiljIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlOihO
U1N0cmluZyAqKXR5cGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbQppbmRleCBlMjQ5YWJmMGRmNTM4NGFmOTNkNmI3YTBhN2FhOWJiZDAzMmE4
NmRiLi41MzlkMTZhOGEwY2ZiYmFmYTBlMzQwMWY2NDgzOWUwMjliYWYzMjkwIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0xNzUs
NyArMTc1LDcgQEAgLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291
cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlMKICAgICBpZiAoZGlzYWxsb3dlZFVS
THMgJiYgQ0ZTZXRDb250YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLCAoX19icmlkZ2UgQ0ZVUkxS
ZWYpdXJsKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5ld1JlcXVlc3QgPSBbcmVxdWVzdCBtdXRhYmxlQ29weV07CisgICAgYXV0byBuZXdSZXF1ZXN0
ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOwogICAgIGNvbnN0IHNldDxzdHJpbmc+
JiBjbGVhckhlYWRlcnMgPSBnVGVzdFJ1bm5lci0+d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJz
KCk7CiAgICAgZm9yIChzZXQ8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJI
ZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVhckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKSB7
CiAgICAgICAgIGF1dG8gbnNIZWFkZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoVVRGOFN0cmluZzpoZWFkZXItPmNfc3RyKCldKTsKQEAgLTE4NCw3ICsxODQsNyBAQCAtKE5T
VVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciB3
aWxsU2VuZFJlcXVlc3Q6IChOUwogICAgIGlmIChhdXRvKiBkZXN0aW5hdGlvbiA9IGdUZXN0UnVu
bmVyLT5yZWRpcmVjdGlvbkRlc3RpbmF0aW9uRm9yVVJMKFtbdXJsIGFic29sdXRlU3RyaW5nXSBV
VEY4U3RyaW5nXSkpCiAgICAgICAgIFtuZXdSZXF1ZXN0IHNldFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZGVzdGluYXRpb25dXV07CiAKLSAg
ICByZXR1cm4gW25ld1JlcXVlc3QgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBuZXdSZXF1ZXN0
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2IHJlc291
cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2Vi
RGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMubW0gYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFj
Lm1tCmluZGV4IGJkZDIwN2JkNDA5ZjA0ZWU1ZjM4MjMxOTRmYTI0ZTYzMjg4NTg5MTcuLjIxZjcz
NzI2OGM3ODFjNmY4M2U0OTBhOTlmNzM4YTBjY2EzMTRjNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6ZXJNYWMu
bW0KKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2
ZW50U2VyaWFsaXplck1hYy5tbQpAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgZXZlbnRJc09mR2Vz
dHVyZVR5cGVzKENHRXZlbnRSZWYgZXZlbnQsIElPSElERXZlbnRUeXBlIGZpcnN0LCBUeXBlcyAu
Li4gcmVzCiAgICAgaW50NjRfdCB2YWx1ZSA9IENHRXZlbnRHZXRJbnRlZ2VyVmFsdWVGaWVsZChy
YXdFdmVudCwgZmllbGQpOyBcCiAgICAgaW50NjRfdCBwbGFpblZhbHVlID0gQ0dFdmVudEdldElu
dGVnZXJWYWx1ZUZpZWxkKHJhd1BsYWluRXZlbnQsIGZpZWxkKTsgXAogICAgIGlmICh2YWx1ZSAh
PSBwbGFpblZhbHVlKSBcCi0gICAgICAgIGRpY3RbQCNmaWVsZF0gPSBAKHZhbHVlKTsgXAorICAg
ICAgICBkaWN0LmdldCgpW0AjZmllbGRdID0gQCh2YWx1ZSk7IFwKIH0oKTsKIAogI2RlZmluZSBM
T0FEX0RPVUJMRV9GSUVMRF9GUk9NX0VWRU5UKGV2ZW50VHlwZUZpbHRlciwgZmllbGQpIFwKQEAg
LTE2OSw3ICsxNjksNyBAQCBib29sIGV2ZW50SXNPZkdlc3R1cmVUeXBlcyhDR0V2ZW50UmVmIGV2
ZW50LCBJT0hJREV2ZW50VHlwZSBmaXJzdCwgVHlwZXMgLi4uIHJlcwogICAgIGlmICghaXNuYW4o
dmFsdWUpKSB7IFwKICAgICAgICAgZG91YmxlIHBsYWluVmFsdWUgPSBDR0V2ZW50R2V0RG91Ymxl
VmFsdWVGaWVsZChyYXdQbGFpbkV2ZW50LCBmaWVsZCk7IFwKICAgICAgICAgaWYgKGZhYnModmFs
dWUgLSBwbGFpblZhbHVlKSA+PSBGTFRfRVBTSUxPTikgXAotICAgICAgICAgICAgZGljdFtAI2Zp
ZWxkXSA9IEAodmFsdWUpOyBcCisgICAgICAgICAgICBkaWN0LmdldCgpW0AjZmllbGRdID0gQCh2
YWx1ZSk7IFwKICAgICB9IFwKIH0oKTsKIApAQCAtMTk4LDMwICsxOTgsMzAgQEAgKyAoTlNEaWN0
aW9uYXJ5ICopZGljdGlvbmFyeUZvckV2ZW50OihDR0V2ZW50UmVmKXJhd0V2ZW50IHJlbGF0aXZl
VG9UaW1lOihDR0V2ZW4KICAgICBhdXRvIHBsYWluRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVh
dGUoTlVMTCkpOwogICAgIENHRXZlbnRSZWYgcmF3UGxhaW5FdmVudCA9IHBsYWluRXZlbnQuZ2V0
KCk7CiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0ID0gW1tbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGljdCA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICBGT1JfRUFDSF9DR0VW
RU5UX0lOVEVHRVJfRklFTEQoTE9BRF9JTlRFR0VSX0ZJRUxEX0ZST01fRVZFTlQpOwogICAgIEZP
Ul9FQUNIX0NHRVZFTlRfRE9VQkxFX0ZJRUxEKExPQURfRE9VQkxFX0ZJRUxEX0ZST01fRVZFTlQp
OwogCiAgICAgQ0dFdmVudFRpbWVzdGFtcCB0aW1lc3RhbXAgPSBDR0V2ZW50R2V0VGltZXN0YW1w
KHJhd0V2ZW50KTsKLSAgICBkaWN0W0AicmVsYXRpdmVUaW1lTVMiXSA9IEAoc3RkOjptYXgoc3Rh
dGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXAgLSByZWZlcmVuY2VUaW1lc3RhbXApIC8gTlNFQ19Q
RVJfTVNFQywgMC4wKSk7CisgICAgZGljdC5nZXQoKVtAInJlbGF0aXZlVGltZU1TIl0gPSBAKHN0
ZDo6bWF4KHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wIC0gcmVmZXJlbmNlVGltZXN0YW1w
KSAvIE5TRUNfUEVSX01TRUMsIDAuMCkpOwogCiAgICAgQ0dTRXZlbnRUeXBlIGV2ZW50VHlwZSA9
IChDR1NFdmVudFR5cGUpQ0dFdmVudEdldEludGVnZXJWYWx1ZUZpZWxkKHJhd0V2ZW50LCBrQ0dT
RXZlbnRUeXBlRmllbGQpOwogICAgIGlmIChldmVudFR5cGUgPT0ga0NHU0V2ZW50R2VzdHVyZSB8
fCBldmVudFR5cGUgPT0ga0NHU0V2ZW50Rmx1aWRUb3VjaEdlc3R1cmUgfHwgZXZlbnRUeXBlID09
IGtDR1NFdmVudERvY2tDb250cm9sKSB7CiAgICAgICAgIGlmIChDR0V2ZW50R2V0SW50ZWdlclZh
bHVlRmllbGQocmF3RXZlbnQsIGtDR0V2ZW50R2VzdHVyZUlzUHJlZmxpZ2h0KSkgewotICAgICAg
ICAgICAgZGljdFtAImtDR0V2ZW50R2VzdHVyZUlzUHJlZmxpZ2h0Il0gPSBAWUVTOwotICAgICAg
ICAgICAgZGljdFtAImtDR0V2ZW50R2VzdHVyZVByZWZsaWdodFByb2dyZXNzIl0gPSBAKENHRXZl
bnRHZXREb3VibGVWYWx1ZUZpZWxkKHJhd0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVQcmVmbGlnaHRQ
cm9ncmVzcykpOworICAgICAgICAgICAgZGljdC5nZXQoKVtAImtDR0V2ZW50R2VzdHVyZUlzUHJl
ZmxpZ2h0Il0gPSBAWUVTOworICAgICAgICAgICAgZGljdC5nZXQoKVtAImtDR0V2ZW50R2VzdHVy
ZVByZWZsaWdodFByb2dyZXNzIl0gPSBAKENHRXZlbnRHZXREb3VibGVWYWx1ZUZpZWxkKHJhd0V2
ZW50LCBrQ0dFdmVudEdlc3R1cmVQcmVmbGlnaHRQcm9ncmVzcykpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgZGljdFtAIndpbmRvd0xvY2F0aW9uIl0gPSBOU1N0cmluZ0Zyb21Qb2ludChOU1Bv
aW50RnJvbUNHUG9pbnQoQ0dFdmVudEdldFdpbmRvd0xvY2F0aW9uKHJhd0V2ZW50KSkpOworICAg
IGRpY3QuZ2V0KClbQCJ3aW5kb3dMb2NhdGlvbiJdID0gTlNTdHJpbmdGcm9tUG9pbnQoTlNQb2lu
dEZyb21DR1BvaW50KENHRXZlbnRHZXRXaW5kb3dMb2NhdGlvbihyYXdFdmVudCkpKTsKIAogICAg
IGF1dG8gZmxhZ3MgPSBzdGF0aWNfY2FzdDxDR0V2ZW50RmxhZ3M+KENHRXZlbnRHZXRGbGFncyhy
YXdFdmVudCkgJiB+TlhfTk9OQ09BTFNFU0NFRE1BU0spOwogICAgIGF1dG8gcGxhaW5GbGFncyA9
IHN0YXRpY19jYXN0PENHRXZlbnRGbGFncz4oQ0dFdmVudEdldEZsYWdzKHJhd1BsYWluRXZlbnQp
ICYgfk5YX05PTkNPQUxTRVNDRURNQVNLKTsKICAgICBpZiAoZmxhZ3MgIT0gcGxhaW5GbGFncykK
LSAgICAgICAgZGljdFtAImZsYWdzIl0gPSBAKGZsYWdzKTsKKyAgICAgICAgZGljdC5nZXQoKVtA
ImZsYWdzIl0gPSBAKGZsYWdzKTsKIAotICAgIHJldHVybiBkaWN0OworICAgIHJldHVybiBkaWN0
LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFJldGFpblB0cjxDR0V2ZW50UmVmPiljcmVhdGVFdmVu
dEZvckRpY3Rpb25hcnk6KE5TRGljdGlvbmFyeSAqKWRpY3QgaW5XaW5kb3c6KE5TV2luZG93ICop
d2luZG93IHJlbGF0aXZlVG9UaW1lOihDR0V2ZW50VGltZXN0YW1wKXJlZmVyZW5jZVRpbWVzdGFt
cApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tCmluZGV4IGU5OWMwMTMwMzk4ODM5MjQwYzhiZWM5YmE5NzUwMGJiOWQ2OTcw
NmUuLjk0NzU1MzdmNmY2OTFhZmY3NmNhNTM4OTIwNzE1MzRmMzMyZDdjZDAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQor
KysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIu
bW0KQEAgLTI0OCw3ICsyNDgsNyBAQCAtICh2b2lkKXNldFJlc3VsdHNGcm9tSlNWYWx1ZTooSlNW
YWx1ZVJlZilyZXN1bHRzVmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHRSZWYpYwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShkZXRh
aWxzT2JqZWN0UHJvcGVydGllcyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBbcmVzdWx0
c0ZvcldvcmQgYWRkT2JqZWN0OltbW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgYWxsb2Nd
IGluaXRXaXRoVHlwZTpuc1RleHRDaGVja2luZ1R5cGUodHlwZVZhbHVlLmdldCgpKSByYW5nZTpO
U01ha2VSYW5nZShmcm9tVmFsdWUsIHRvVmFsdWUgLSBmcm9tVmFsdWUpIHJlcGxhY2VtZW50Oihf
X2JyaWRnZSBOU1N0cmluZyAqKXJlcGxhY2VtZW50VGV4dC5nZXQoKSBkZXRhaWxzOmRldGFpbHMu
Z2V0KCldIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbcmVzdWx0c0ZvcldvcmQgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IGFsbG9jXSBpbml0V2l0
aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKHR5cGVWYWx1ZS5nZXQoKSkgcmFuZ2U6TlNNYWtlUmFu
Z2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBsYWNlbWVudDooX19icmlkZ2Ug
TlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCkgZGV0YWlsczpkZXRhaWxzLmdldCgpXSku
Z2V0KCldOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gY2ZUZXh0VG9DaGVjayA9IGFkb3B0Q0Yo
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGV4dFRvQ2hlY2spKTsK
ICAgICAgICAgW3Jlc3VsdHMgc2V0T2JqZWN0OnJlc3VsdHNGb3JXb3JkLmdldCgpIGZvcktleToo
X19icmlkZ2UgTlNTdHJpbmcgKiljZlRleHRUb0NoZWNrLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVy
Lm1tCmluZGV4IDg2YmJhYjg2MDc3NjUwYTgzMGUzMTk1OThlNTI4YmFjODczMzBhNWIuLmQ0OTA5
Zjg0Njg4YTQxMzMwNzVjZTRiZjg1Y2M2Njg4YjIzNDcyYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5t
bQpAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2VyR0MoSlNDb250ZXh0ICpjb250
ZXh0KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDEwMDA7ICsraSkKLSAgICAgICAgICAgIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpb
W1Rlc3RPYmplY3QgbmV3XSBhdXRvcmVsZWFzZV0gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAg
ICAgICAgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmFkb3B0TlMoW1Rlc3RPYmplY3QgbmV3XSku
YXV0b3JlbGVhc2UoKSBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAgICAgIEpTR2FyYmFnZUNvbGxl
Y3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQppbmRleCA3MWE3ZmY0ZjM2ZWNhZDkzZGM5NjdmYmMyMzEzY2EyY2IzYjky
ZmYxLi5kOTYyMzA3NGIyMTU4MGU3MTJhZjQ0YzZmMzQwZDlmZTYxNjFlOWZiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
SlNDOjppbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICAgICAgdmlldyA9IGFkb3B0TlMoW1tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKLSAgICAgICAgW3ZpZXcgc2V0
RnJhbWVMb2FkRGVsZWdhdGU6W1tbVGVzdE5TVVJMU2Vzc2lvbkxvYWRlckRlbGVnYXRlIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0
ZTphZG9wdE5TKFtbVGVzdE5TVVJMU2Vzc2lvbkxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0XSku
YXV0b3JlbGVhc2UoKV07CiAKICAgICAgICAgZGlkTG9hZE1haW5SZXNvdXJjZSA9IGZhbHNlOwog
ICAgICAgICBbdmlldyBzZXRNYWluRnJhbWVVUkw6ZG9jdW1lbnRVUkwuYWJzb2x1dGVTdHJpbmdd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVz
ZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggZjI3ZTM0ZDQ4MGE2OTRmYmJhZTdiNWU4MDU5NTM4
MGE0ODQ5YzIwMi4uMzhlZWNkYTVlYmMxNWY1YmM0MmRkMzU5ZjAzNDUxYzBmYzFmZDNlMCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2
aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2Vy
TWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC0xMTUsNyArMTE1LDcgQEAgVEVTVChXZWJLaXQsIERlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c0RpcmVjdG9yeSkKICAgICB9CiAKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNp
dGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9y
ZWxlYXNlKCldOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWcgPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBwcmVmZXJlbmNl
cyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFD
YXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CkBAIC0xNDUsNyArMTQ1LDcgQEAg
VEVTVChXZWJLaXQsIERldmljZUlkSGFzaFNhbHRzRGlyZWN0b3J5KQogICAgIFt3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBzZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk6
dGVtcERpcl07CiAgICAgCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOltbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVh
c2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlnID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc107CiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29u
bmVjdGlvbiA9IE5POwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvbWFjL0NvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1tCmluZGV4IDJjYjI3NzU3
MTRkNDljMDg1OTVjNTFmNzUxMjYzZmY2YmQzMGUwZTMuLjJmNGQ3ZGZjYjgwMDJjYzJmZmIwNDc0
OGQwZTg2MDQ1OGYyMjEzOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L21hYy9Db250ZXh0TWVudUltZ1dpdGhWaWRlby5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8ubW0KQEAgLTU1
LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXQsIENvbnRl
eHRNZW51SW1nV2l0aFZpZGVvKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
XSk7Ci0gICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gW1tbQ29udGV4dE1lbnVJbWdXaXRo
VmlkZW9EZWxlZ2F0ZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcuZ2V0
KCkuVUlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb250ZXh0TWVudUltZ1dpdGhWaWRlb0RlbGVnYXRl
IGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZFRlc3RQYWdlTmFtZWQ6QCJDb250ZXh0TWVudUltZ1dpdGhWaWRlbyJdOwogCiAgICAgTlNX
aW5kb3cqIHdpbmRvdyA9IFt3ZWJWaWV3IHdpbmRvd107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRl
Lm1tCmluZGV4IDA0NjJhODhmNDgwZDk1YTQ5NTQ3YTA2ZDAyZDIxYjBiMjQzYzNiN2UuLjdjY2Zj
MDIyZDJjMjUzMzJiYjJlYmNlOTVkMzAyNWFlN2E5YmEyYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0Rl
bGVnYXRlLm1tCkBAIC04NywxOCArODcsMTggQEAgVEVTVChXZWJLaXQsIFdLV2ViUHJvY2Vzc1Bs
dWdJbkVkaXRpbmdEZWxlZ2F0ZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
V3JpdGVUb1Bhc3RlYm9hcmQpOwogCi0gICAgTlNTdHJpbmcgKmNvcGllZFN0cmluZyA9IG5pbDsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNvcGllZFN0cmluZzsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgY29waWVkU3RyaW5nID0gW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHN0
cmluZ0ZvclR5cGU6QCJvcmcud2Via2l0LmRhdGEiXTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgY29waWVkU3RyaW5nID0gW1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpb
W1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAi
b3JnLndlYmtpdC5kYXRhIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxl
YXNlXTsKKyAgICBjb3BpZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoRGF0YTpbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGF0YUZvclBhc3RlYm9h
cmRUeXBlOkAib3JnLndlYmtpdC5kYXRhIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKICNlbmRpZgotICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBjb3BpZWRTdHJpbmcpOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBjb3BpZWRTdHJpbmcuZ2V0KCkpOwogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRT
dHJpbmc6Y29waWVkU3RyaW5nIGZvclR5cGU6QCJwdWJsaWMudXRmOC1wbGFpbi10ZXh0Il07Cisg
ICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldFN0cmluZzpjb3BpZWRTdHJp
bmcuZ2V0KCkgZm9yVHlwZTpAInB1YmxpYy51dGY4LXBsYWluLXRleHQiXTsKICNlbGlmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNl
dFZhbHVlOmNvcGllZFN0cmluZyBmb3JQYXN0ZWJvYXJkVHlwZTpAInB1YmxpYy51dGY4LXBsYWlu
LXRleHQiXTsKKyAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0VmFsdWU6
Y29waWVkU3RyaW5nLmdldCgpIGZvclBhc3RlYm9hcmRUeXBlOkAicHVibGljLnV0ZjgtcGxhaW4t
dGV4dCJdOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihw
YXN0ZTopIHdpdGhPYmplY3Q6bmlsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVGb3JtRGVsZWdhdGVQbHVnSW4ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5t
bQppbmRleCBkMGNhOWZkYzcyMTJjNDllYWQxMWJiZTdlMGVkZjY0OTRiMDUxNTk5Li5lOGQ5ZDUy
NWZhN2JmZWJhNTg2MDUzMjljMWM5YTNiZmRmMDdlNDIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUZvcm1EZWxl
Z2F0ZVBsdWdJbi5tbQpAQCAtNzAsOSArNzAsNyBAQCAtIChOU09iamVjdCA8TlNTZWN1cmVDb2Rp
bmc+ICopX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUAog
ICAgIGlmICghX3Nob3VsZFVzZUN1c3RvbUNsYXNzKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgTlNVbml0Q29udmVydGVyTGluZWFyICpraWxvbWV0ZXJzVG9NZXRlcnMgPSBbW05TVW5pdENv
bnZlcnRlckxpbmVhciBhbGxvY10gaW5pdFdpdGhDb2VmZmljaWVudDoxMDAwLjAgY29uc3RhbnQ6
MC4wXTsKLQotICAgIHJldHVybiBba2lsb21ldGVyc1RvTWV0ZXJzIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW05TVW5pdENvbnZlcnRlckxpbmVhciBhbGxvY10gaW5pdFdpdGhD
b2VmZmljaWVudDoxMDAwLjAgY29uc3RhbnQ6MC4wXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
dm9pZClfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRGb2N1c1Rl
eHRGaWVsZDooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKXRleHRGaWVsZCBpbkZyYW1l
OihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCmluZGV4IDBiNzViYTQzYzAzYWUz
ODg4MTZhMWYzY2MyY2VlNmYxNzcxYjEwNjEuLmQ2ZTM4M2UxYTBiZTJlNTVmNzkxYjRmNGFkODZm
MTk0M2FmMzBjOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCkBAIC0yMzIsOCArMjMyLDggQEAgVEVTVChDaGFsbGVuZ2UsIFNl
Y0lkZW50aXR5KQogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKICAgICAvLyBNYWtlIHN1cmUgbm8gY3JlZGVudGlhbCBsZWZ0IGJ5IHByZXZpb3Vz
IHRlc3RzLgotICAgIE5TVVJMUHJvdGVjdGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tO
U1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdpdGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0
OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAi
dGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
SFRUUEJhc2ljXSBhdXRvcmVsZWFzZV07Ci0gICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnBy
b2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOnBy
b3RlY3Rpb25TcGFjZV07CisgICAgYXV0byBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdE5TKFtbTlNV
UkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpz
ZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFsbTpAInRl
c3RyZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhU
VFBCYXNpY10pOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xl
YXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2Uu
Z2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CiAKQEAgLTI0NSw4ICsy
NDUsOCBAQCBURVNUKENoYWxsZW5nZSwgRGVhbGxvY2F0ZUR1cmluZ0NoYWxsZW5nZSkKICAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICAgICBIVFRQU2VydmVyIHNlcnZlcih7eyAi
LyIsIHsgImhpIiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKLSAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwot
ICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJW
aWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlh
bCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH07CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNU
KENoYWxsZW5nZSwgRGVhbGxvY2F0ZUR1cmluZ0NoYWxsZW5nZSkKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCAxMDA7IGkrKykKICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChhZG9wdE5T
KFtXS1dlYlZpZXcgbmV3XSkpOwogICAgICAgICBmb3IgKGF1dG8mIHZpZXcgOiB2aWV3cykgewot
ICAgICAgICAgICAgW3ZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICAg
ICAgICAgIFt2aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAg
ICAgICAgICBbdmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKICAgICAgICAgfQog
ICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CkBAIC0zNTEsOCArMzUxLDggQEAgVEVTVChD
aGFsbGVuZ2UsIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsKQogICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBNYWtlIHN1cmUgbm8gY3Jl
ZGVudGlhbCBsZWZ0IGJ5IHByZXZpb3VzIHRlc3RzLgotICAgIE5TVVJMUHJvdGVjdGlvblNwYWNl
ICpwcm90ZWN0aW9uU3BhY2UgPSBbW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gaW5pdFdp
dGhIb3N0OkAiMTI3LjAuMC4xIiBwb3J0OnNlcnZlci5wb3J0KCkgcHJvdG9jb2w6TlNVUkxQcm90
ZWN0aW9uU3BhY2VIVFRQIHJlYWxtOkAidGVzdHJlYWxtIiBhdXRoZW50aWNhdGlvbk1ldGhvZDpO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSBhdXRvcmVsZWFzZV07Ci0gICAgW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9jbGVhclBlcm1hbmVudENyZWRlbnRp
YWxzRm9yUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFjZV07CisgICAgYXV0byBwcm90ZWN0
aW9uU3BhY2UgPSBhZG9wdE5TKFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRo
SG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgpIHByb3RvY29sOk5TVVJMUHJvdGVj
dGlvblNwYWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0aGVudGljYXRpb25NZXRob2Q6TlNV
UkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10pOworICAgIFtbd2ViVmlldyBjb25maWd1
cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rp
b25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogCiAgICAgUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gcmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdC5nZXQoKV07CkBAIC0zNjMsMjUgKzM2MywyNSBAQCBURVNUKENoYWxsZW5nZSwg
QmFzaWNQcm9wb3NlZENyZWRlbnRpYWwpCiAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTZWNvbmRD
aGFsbGVuZ2UpOwogCiAgICAgLy8gQ2xlYXIgcGVyc2lzdGVudCBjcmVkZW50aWFscyBjcmVhdGVk
IGJ5IHRoaXMgdGVzdC4KLSAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wg
X2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNw
YWNlXTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVy
bWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgp
XTsKIH0KIAogVEVTVChDaGFsbGVuZ2UsIEJhc2ljUGVyc2lzdGVudENyZWRlbnRpYWwpCiB7CiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
SFRUUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwotICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNVUkxQcm90ZWN0aW9uU3BhY2U+IHByb3RlY3Rpb25TcGFjZTsK
ICAgICBhdXRvIGNyZWRlbnRpYWxTdG9yYWdlID0gW05TVVJMQ3JlZGVudGlhbFN0b3JhZ2Ugc2hh
cmVkQ3JlZGVudGlhbFN0b3JhZ2VdOwotICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGRlbGVnYXRl
LmdldCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICos
IE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqKSkgewogICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlOwogICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmV4aXN0aW5nQ3JlZGVudGlhbCA9
IFtjcmVkZW50aWFsU3RvcmFnZSBkZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZTpw
cm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogICAgICAgICBFWFBFQ1RfTlVMTChleGlzdGluZ0NyZWRl
bnRpYWwpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocHJvdGVjdGlvblNwYWNlLmdldCgpLmF1
dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNy
ZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhVc2VyOkAidGVzdHVzZXIi
IHBhc3N3b3JkOkAidGVzdHBhc3N3b3JkIiBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJz
aXN0ZW5jZVBlcm1hbmVudF0pOwogICAgIH07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Cisg
ICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCkBAIC01NTMsMTEgKzU1MywxMSBAQCBURVNU
KFdlYktpdCwgRmFzdFNlcnZlclRydXN0KQogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3NsKTsKICAg
ICB9LCBXVEY6Om51bGxvcHQsIDIpOwogI2VuZGlmCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0
YVN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5m
YXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCA9IFlFUzsKLSAgICBjb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwotICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtkYXRhU3RvcmVDb25m
aWd1cmF0aW9uIHNldEZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOllFU107CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1NlcnZl
clRydXN0RGVsZWdhdGUgbmV3XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly9sb2NhbGhvc3Q6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2FyZFRl
c3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRU
ZXN0cy5tbQppbmRleCA0ZTU1Y2YwMWE5N2YyNzliNDJkYzBkYWQ1MjhjYWU2NWJhYTZhYTdlLi42
NWMwNzc4ZGExMWZjMGJmMWE4YmQyNTczOWQyMjY4ZTA5NDhlMTYzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2FyZFRlc3RzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0K
QEAgLTEyOSwxNCArMTI5LDE0IEBAIHN0YXRpYyB2b2lkIHdyaXRlTXVsdGlwbGVPYmplY3RzVG9Q
bGF0Zm9ybVBhc3RlYm9hcmQoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqcmVhZE1h
cmt1cEZyb21QYXN0ZWJvYXJkKCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlYWRNYXJr
dXBGcm9tUGFzdGVib2FyZCgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TRGF0YSAqcmF3
RGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6V2ViQ29y
ZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCldOwogI2Vsc2UKICAgICBOU0RhdGEgKnJhd0Rh
dGEgPSBbVUlQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlw
ZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTF07CiAjZW5kaWYKLSAgICByZXR1cm4g
W1tbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpyYXdEYXRhIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhEYXRhOnJhd0RhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddKTsKIH0KIAogVEVTVChDbGlwYm9hcmRUZXN0cywgUmVhZE11bHRpcGxlSXRlbXMpCkBAIC0x
NjAsNyArMTYwLDcgQEAgVEVTVChDbGlwYm9hcmRUZXN0cywgV3JpdGVTYW5pdGl6ZWRNYXJrdXAp
CiAgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld0ZvckNsaXBib2FyZFRlc3RzKCk7CiAg
ICAgW3dlYlZpZXcgd3JpdGVTdHJpbmc6QCI8c2NyaXB0Pi8qIHN1cGVyIHNlY3JldCAqLzwvc2Ny
aXB0PlRoaXMgaXMgYSB0ZXN0LiIgdG9DbGlwYm9hcmRXaXRoVHlwZTpAInRleHQvaHRtbCJdOwog
Ci0gICAgTlNTdHJpbmcgKndyaXR0ZW5NYXJrdXAgPSByZWFkTWFya3VwRnJvbVBhc3RlYm9hcmQo
KTsKKyAgICBhdXRvIHdyaXR0ZW5NYXJrdXAgPSByZWFkTWFya3VwRnJvbVBhc3RlYm9hcmQoKTsK
ICAgICBFWFBFQ1RfVFJVRShbd3JpdHRlbk1hcmt1cCBjb250YWluc1N0cmluZzpAIlRoaXMgaXMg
YSB0ZXN0LiJdKTsKICAgICBFWFBFQ1RfRkFMU0UoW3dyaXR0ZW5NYXJrdXAgY29udGFpbnNTdHJp
bmc6QCJzdXBlciBzZWNyZXQiXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFt3cml0dGVuTWFya3VwIGNv
bnRhaW5zU3RyaW5nOkAiPHNjcmlwdD4iXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uLm1tCmluZGV4IGFlNmViYTlkZTdhNzE2N2FkYjhhODI0ZjA0ODk1ZTFkNjUyZTNlOTgu
LmRkODViYTBjZGIxMWNkYmZjNzhjNTIwM2E4ZDliYWMyNjdmMThiZTEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGVudFJ1bGVMaXN0V2l0aElkZW50aWZpZXI6
KE5TU3RyaW5nICopCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFy
dFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKIHsKLSAg
ICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQv
aHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9y
ZWxlYXNlXV07CisgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZp
bmlzaF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGV4dE1lbnVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZXh0TWVudXMubW0KaW5kZXggZDNkMDdkNjllNjI4NWFjNDQ5MjEzYWE3NDU1NzQx
NmFlYTc1ZWUwOC4uNjM0ZmI2NzE0OTFjNGMxMzNlYjRmYTc1N2M3OTNjNjU1MzVkOTBlMiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZXh0TWVu
dXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZXh0
TWVudXMubW0KQEAgLTc0LDcgKzc0LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNvbnRleHRNZW51Q29uZmlndXJhdGlvbkZvckVsZW1lbnQ6KFdLQ29udGUKICAgICBj
b250ZXh0TWVudVJlcXVlc3RlZCA9IHRydWU7CiAgICAgVUlDb250ZXh0TWVudUNvbnRlbnRQcmV2
aWV3UHJvdmlkZXIgcHJldmlld1Byb3ZpZGVyID0gXlVJVmlld0NvbnRyb2xsZXIgKiAoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFtbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICB9OwogICAgIFVJQ29udGV4dE1lbnVBY3Rpb25Q
cm92aWRlciBhY3Rpb25Qcm92aWRlciA9IF5VSU1lbnUgKihOU0FycmF5PFVJTWVudUVsZW1lbnQg
Kj4gKnN1Z2dlc3RlZEFjdGlvbnMpCiAgICAgewpAQCAtMTQxLDcgKzE0MSw3IEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0TWVudUNvbmZpZ3VyYXRpb25Gb3JF
bGVtZW50OihXS0NvbnRlCiAgICAgY29udGV4dE1lbnVSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIFVJ
Q29udGV4dE1lbnVDb250ZW50UHJldmlld1Byb3ZpZGVyIHByZXZpZXdQcm92aWRlciA9IF5VSVZp
ZXdDb250cm9sbGVyICogKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBbW1tVSVZpZXdDb250cm9s
bGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
VUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfTsKICAg
ICBVSUNvbnRleHRNZW51QWN0aW9uUHJvdmlkZXIgYWN0aW9uUHJvdmlkZXIgPSBeVUlNZW51ICoo
TlNBcnJheTxVSU1lbnVFbGVtZW50ICo+ICpzdWdnZXN0ZWRBY3Rpb25zKQogICAgIHsKQEAgLTMw
OSw3ICszMDksNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4
dE1lbnVDb25maWd1cmF0aW9uRm9yRWxlbWVudDooV0tDb250ZQogICAgIGNvbnRleHRNZW51UmVx
dWVzdGVkID0gdHJ1ZTsKICAgICBVSUNvbnRleHRNZW51Q29udGVudFByZXZpZXdQcm92aWRlciBw
cmV2aWV3UHJvdmlkZXIgPSBeVUlWaWV3Q29udHJvbGxlciAqICgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gW1tbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
ICAgICByZXR1cm4gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5hdXRv
cmVsZWFzZSgpOwogICAgIH07CiAgICAgVUlDb250ZXh0TWVudUFjdGlvblByb3ZpZGVyIGFjdGlv
blByb3ZpZGVyID0gXlVJTWVudSAqKE5TQXJyYXk8VUlNZW51RWxlbWVudCAqPiAqc3VnZ2VzdGVk
QWN0aW9ucykKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvcHlIVE1MLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db3B5SFRNTC5tbQppbmRleCA2Y2FiNGJiODlmZGNjMGQ5MzU0M2Y2MDJmMGIxY2IxMGM1
YjJkMDA1Li5hMGM0ZGI4ZWFiNjEzZGJkYmIwM2E0ODRiOTZhMGE4NjcxM2UzYjdlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KQEAg
LTY4LDExICs2OCwxMSBAQCBOU0RhdGEgKnJlYWRIVE1MRGF0YUZyb21QYXN0ZWJvYXJkKCkKIAog
TlNTdHJpbmcgKnJlYWRIVE1MU3RyaW5nRnJvbVBhc3RlYm9hcmQoKQogewotICAgIGlkIHZhbHVl
ID0gW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHZhbHVlRm9yUGFzdGVib2FyZFR5
cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUxdOworICAgIFJldGFpblB0cjxpZD4g
dmFsdWUgPSBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gdmFsdWVGb3JQYXN0ZWJv
YXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTF07CiAgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKLSAgICAgICAgdmFsdWUgPSBbW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKil2YWx1ZSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10gYXV0b3JlbGVhc2VdOworICAgICAgICB2YWx1ZSA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKil2YWx1ZSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOwogICAgIEFTU0VSVChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7Ci0gICAgcmV0dXJuIChOU1N0cmluZyAqKXZhbHVlOworICAgIHJldHVy
biAoTlNTdHJpbmcgKil2YWx1ZS5hdXRvcmVsZWFzZSgpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlTWFuYWdlbWVu
dFJlc3RyaWN0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9ucy5tbQppbmRleCBiODQyMzExNzRmM2EwNTJkY2Mz
MmNiY2UwMzNhMzQxMTYyYTk4YmQxLi5kN2IzNjk1N2YyOTE0NTU0YWE1N2IxZGQ0ZjNmN2JmZjli
OTE4NzM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zLm1tCkBAIC00
Miw3ICs0Miw3IEBAIFRFU1QoV2ViS2l0LCBEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zKQog
ICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFu
YWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc6WUVTXTsKIAogICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXdDb25maWd1cmF0
aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxl
YXNlXV07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpk
YXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAKICAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNwbGF5TmFtZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGlzcGxheU5hbWUubW0KaW5kZXggNzFkMmE1ZGM3
ZjdmYmQ1NTY1YTAxZGFlZTUwNWU1MWE1ZjUzMDU3ZS4uOGFkOGJkOGZmOGRkMWQzYjNjNDkwMGNh
MGNmZTNhNDkxMjcyOTEzZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EaXNwbGF5TmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rpc3BsYXlOYW1lLm1tCkBAIC01NiwxMCArNTYsMTAgQEAgc3RhdGljIHZv
aWQgY2hlY2tVbnRpbERpc3BsYXlOYW1lSXMoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAq
ZXhwZWN0ZWROYW1lLAogCiBURVNUKFdlYktpdCwgQ3VzdG9tRGlzcGxheU5hbWUpCiB7Ci0gICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIE5TU3RyaW5nICpkaXNwbGF5
TmFtZVRvU2V0ID0gQCJ0ZXN0IGRpc3BsYXkgbmFtZSI7Ci0gICAgY29uZmlndXJhdGlvbi5fcHJv
Y2Vzc0Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWVUb1NldDsKLSAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9wcm9jZXNzRGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZVRvU2V0OworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0
YXJ0IHdlYiBwcm9jZXNzIl07CiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IGEyMTdh
ZWY0YWY4YjA1NzNkMGUyMGNhZTJhNjY1NGY1MmJlYjAxZTcuLmI0MDM1NmZmMjQ3ODZjOGIzZmRi
MjQwZTRmMTM1ZGIyMjNkYWJiMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtODk0LDEwICs4OTQsMTAgQEAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlld1dpdGhEb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIoc2l6
ZV90IG11bHRpcGxpZXIKICAgICBzdGF0aWMgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9w
dE5TKFtEb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBu
ZXddKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7Ci0gICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKmRhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gPSBbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10gYXV0b3Jl
bGVhc2VdOwotICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24udGVzdFNwZWVkTXVsdGlwbGllciA9
IG11bHRpcGxpZXI7CisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2RhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gc2V0VGVzdFNwZWVkTXVsdGlwbGllcjptdWx0aXBsaWVyXTsKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKTsKLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24g
c2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRv
cmVsZWFzZSgpXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBjb25maWd1
cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IG1vbml0b3JEZWxlZ2F0ZSgp
LmdldCgpOwpAQCAtMTQ1NSwxMyArMTQ1NSwxMyBAQCBURVNUKFdLRG93bmxvYWQsIEZpbmlzaFN1
Y2Nlc3NmdWxseSkKIHsKICAgICBhdXRvIHNlcnZlciA9IHNpbXBsZURvd25sb2FkVGVzdFNlcnZl
cigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgZGVsZWdhdGUu
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAg
IGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgRVhQRUNUX05VTEwoZG93bmxv
YWQucHJvZ3Jlc3MuZmlsZVVSTCk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBl
Y3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZG93bmxvYWQu
cHJvZ3Jlc3MuZmlsZVVSTCk7CkBAIC0xNDczLDcgKzE0NzMsNyBAQCBURVNUKFdLRG93bmxvYWQs
IEZpbmlzaFN1Y2Nlc3NmdWxseSkKIAogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93
bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwogCi0gICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCks
IHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTE0ODgsNyArMTQ4
OCw3IEBAIHN0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1l
RGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAg
ICBjaGVja0ZpbGVDb250ZW50cyhkZXN0aW5hdGlvbiwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsK
IAotICAgICAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwogCiAgICAgICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURh
dGE6cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CkBAIC0xNTAwLDggKzE1MDAsOCBAQCBzdGF0aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9h
ZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJMICpkZXN0aW5hdGlvbikKICAgICAgICAgCiAgICAg
ICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkU2Vjb25kNWsgPSBmYWxzZTsKICAgICAgICAgRVhQ
RUNUX05VTEwocmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSk7Ci0gICAgICAgIHJldGFp
bmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9OwogCkBAIC0xNTE1LDcgKzE1MTUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJMICpkZXN0aW5h
dGlvbikKICAgICAgICAgW3JldGFpbmVkRG93bmxvYWQuZ2V0KCkucHJvZ3Jlc3MgYWRkT2JzZXJ2
ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3VudCIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlv
bkluaXRpYWwgY29udGV4dDpuaWxdOwogCiAgICAgICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2gg
PSBmYWxzZTsKLSAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkRmluaXNo
ID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICAgICAgRVhQRUNUX0VRKHJldGFp
bmVkRG93bmxvYWQuZ2V0KCksIGRvd25sb2FkKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGRv
d25sb2FkZWRTZWNvbmQ1ayk7CiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwpAQCAtMTUy
Niw3ICsxNTI2LDcgQEAgc3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRh
ICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCiAgICAgICAgIFtyZXRhaW5lZERvd25s
b2FkLmdldCgpLnByb2dyZXNzIHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBh
dGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIGNvbnRleHQ6bmlsXTsKIAogICAgICAgICBjaGVja1Jl
c3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKLSAgICAgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LmdldCgpLCB7CiAgICAgICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKICAgICAg
ICAgfSk7CiAgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLndlYlZpZXcs
IHdlYlZpZXcuZ2V0KCkpOwpAQCAtMTU1OCwxNSArMTU1OCwxNSBAQCBURVNUKFdLRG93bmxvYWQs
IENhbmNlbEFuZFJlc3VtZSkKIHsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBS
ZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0
KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBy
ZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRp
b25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwogICAg
IH07CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCBURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3Vt
ZSkKICAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKICAgICAgICAgVXRpbDo6c3BpblJ1
bkxvb3AoKTsKICAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEu
Z2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMTU5MiwyNCArMTU5MiwyNCBA
QCBURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKIAogVEVTVChXS0Rvd25sb2FkLCBG
YWlsQW5kUmVzdW1lKQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWlu
ZWREb3dubG9hZDsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRl
RVRhZzo6WWVzLCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgewog
ICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhyZXRhaW5lZERvd25sb2FkKTsKICAgICAgICAgY29ubmVj
dGlvbi50ZXJtaW5hdGUoKTsKICAgICB9KTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwog
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOwotICAgIGRlbGVnYXRl
Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gbWFrZUJsb2NrUHRyKFsmXShX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IG1ha2VCbG9ja1B0cihbJl0oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3du
bG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAg
ICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBl
Y3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxX
aXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICpyZXN1bWVEYXRhKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3Ig
PSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVE
YXRhKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxvYWQu
Z2V0KCkpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxF
cnJvckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CkBAIC0xNjIyLDcgKzE2MjIsNyBAQCBURVNUKFdLRG93
bmxvYWQsIEZhaWxBbmRSZXN1bWUpCiAgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCiAg
ICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CiAgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQo
cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlv
biwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAg
LTE2MzUsMTUgKzE2MzUsMTUgQEAgVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURhdGEp
CiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5v
KTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sgUmV0
YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0gICAgZGVsZWdhdGUubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgp
Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgcmV0
YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9u
VXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAgICB9
OwpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURh
dGEpCiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKICAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKLSAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAt
MTY2NywyNCArMTY2NywyNCBAQCBURVNUKFdLRG93bmxvYWQsIENhbmNlbE5vUmVzdW1lRGF0YSkK
IAogVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQogewotICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBSZXRh
aW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKICAgICBhdXRvIHNlcnZlciA9IGRv
d25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbiBjb25uZWN0aW9uKSB7CiAgICAgICAgIHdhaXRGb3JGaXJzdDVrKHJldGFpbmVkRG93
bmxvYWQpOwogICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOwogICAgIH0pOwogICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwot
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG1ha2VCbG9ja1B0cihb
Jl0oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBtYWtlQmxvY2tQdHIoWyZdKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICByZXRhaW5lZERvd25sb2FkID0g
ZG93bmxvYWQ7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gbWFrZUJsb2NrUHRyKFsmXShXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmFp
bFdpdGhFcnJvciA9IG1ha2VCbG9ja1B0cihbJl0oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJv
ci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKICAgICAgICAgICAgIEVY
UEVDVF9OVUxMKHJlc3VtZURhdGEpOwpAQCAtMTY5NCw3ICsxNjk0LDcgQEAgVEVTVChXS0Rvd25s
b2FkLCBGYWlsTm9SZXN1bWVEYXRhKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAgY2hlY2tGaWxlQ29udGVudHMo
ZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7Ci0gICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTE3
MzksMjUgKzE3MzksMjUgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1Jl
Y2VpdmVkKQogICAgIH0pOwogCiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKLSAg
ICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0g
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZ2V0KCku
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH07Ci0gICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gWyZdKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gWyZd
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+dGVybWluYXRlKCk7
CiAgICAgfTsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0
YTsKLSAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJl
c3VtZURhdGEpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxF
cnJvckRvbWFpbik7CiAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0
d29ya0Nvbm5lY3Rpb25Mb3N0KTsKICAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1l
RGF0YTsKICAgICB9OwogICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZEZpbmlzaGVkID0gZmFsc2U7
Ci0gICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAg
IGRlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKICAg
ICAgICAgZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7CiAgICAgfTsKIApAQCAtMTc2OCwxMiArMTc2
OCwxMiBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQpCiAg
ICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoXSk7CiAgICAgRVhQRUNUX0ZBTFNFKGRv
d25sb2FkRmluaXNoZWQpOwogICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURh
dGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9XTsKICAgICBV
dGlsOjpydW4oJmRvd25sb2FkRmluaXNoZWQpOwogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVj
dGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMD4oJ3gnKSk7CiAKLSAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5n
ZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMTc4Nywx
NSArMTc4NywxNSBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2
ZWQpCiAKIHZvaWQgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAqc2Vy
dmVyUmVxdWVzdCwgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlLCB2b2lkKF5tdXRhdGVGaWxl
KSh2b2lkKSkKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sg
UmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0gICAgZGVsZWdhdGUubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdl
dCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAg
cmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICos
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRl
RGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CiAgICAgICAgIH07CiAgICAgfTsKQEAgLTE4MTcsMTMgKzE4MTcsMTMgQEAgdm9pZCB0ZXN0UmVz
dW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAq
ZXhwZWN0ZWREb3cKIAogICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKICAgICBb
d2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRvd25sb2Fk
RGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5p
c2ggPSBeKFdLRG93bmxvYWQgKikgewogICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKICAg
ICAgICAgfTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7Ci0gICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKQEAgLTE5
MjcsNyArMTkyNyw3IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVE
YXRhKQogewogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOwogICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0
ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CiAgICAgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBA
dHJ5IHsKICAgICAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpbQCJp
bnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10gY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewpAQCAtMTk0NCwx
NSArMTk0NCwxNSBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUNhbnRSZWNvbm5lY3QpCiB7CiAg
ICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0
ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJl
dGFpbmVkRG93bmxvYWQ7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25s
b2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25s
b2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAg
ICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAgICB9OwpAQCAtMTk3OCwxNiArMTk3OCwx
NiBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUNhbnRSZWNvbm5lY3QpCiAgICAgd2hpbGUgKCFy
ZXRhaW5lZERvd25sb2FkKQogICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwogCi0gICAgcmV0
YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIHJldGFpbmVkRG93
bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxv
YWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgIGRlbGVnYXRl
LmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3Is
IE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9t
YWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKICAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJl
c3VtZURhdGEpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9OwogICAgIFV0aWw6OnJ1bigm
ZG9uZSk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKQEAgLTIwMDQsOSArMjAwNCw5IEBAIFRFU1QoV0tEb3dubG9hZCwgVW5rbm93
bkNvbnRlbnRMZW5ndGgpCiAgICAgICAgIH0pOwogICAgIH0pOwogICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBh
dXRvIG9ic2VydmVyID0gYWRvcHROUyhbRG93bmxvYWRPYnNlcnZlciBuZXddKTsKQEAgLTIwMTcs
MTAgKzIwMTcsMTAgQEAgVEVTVChXS0Rvd25sb2FkLCBVbmtub3duQ29udGVudExlbmd0aCkKICAg
ICB9OwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9h
ZDsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUu
Z2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgICAgICByZXRhaW5lZERv
d25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNp
bmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICos
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgZGVsZWdhdGUu
Z2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOwogICAgICAgICB9OwogICAgICAgICBbZG93bmxvYWQucHJvZ3Jlc3MgYWRkT2JzZXJ2ZXI6
b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3VudCIgb3B0aW9uczpO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbklu
aXRpYWwgY29udGV4dDpuaWxdOwpAQCAtMjAzMCw3ICsyMDMwLDcgQEAgVEVTVChXS0Rvd25sb2Fk
LCBVbmtub3duQ29udGVudExlbmd0aCkKICAgICBbcmV0YWluZWREb3dubG9hZC5nZXQoKS5wcm9n
cmVzcyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiY29tcGxldGVk
VW5pdENvdW50IiBjb250ZXh0Om5pbF07CiAgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CiAKLSAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQo
KSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLApAQCAtMjA0MCwxMyAr
MjA0MCwxMyBAQCBURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3RoKQogCiBURVNU
KFdLRG93bmxvYWQsIEludmFsaWRBcmd1bWVudHMpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOwogICAgIF9fYmxvY2sgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBmYWxz
ZTsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOwotICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBb
d2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVz
aW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lk
ZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAg
ICAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdKTsKICAgICAgICAgICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgewpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgVEVTVChXS0Rv
d25sb2FkLCBJbnZhbGlkQXJndW1lbnRzKQogICAgICAgICB9OwogICAgIH1dOwogICAgIFV0aWw6
OnJ1bigmY2F1Z2h0RXhjZXB0aW9uKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LCB7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKICAgICB9KTsKIH0KQEAgLTIwNzMs
MzIgKzIwNzMsMzIgQEAgVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93KQogewogICAgIGF1
dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKIAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBbW3Nl
cnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBzZXJ2ZXJSZXF1
ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOworICAgIGF1dG8gc2VydmVyUmVxdWVzdCA9IGFkb3B0TlMoW3NlcnZlci5yZXF1ZXN0
KCkgbXV0YWJsZUNvcHldKTsKKyAgICBbc2VydmVyUmVxdWVzdCBzZXRIVFRQQm9keTpbQCJib2R5
IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIAogICAgIF9f
YmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgc3RhcnRE
b3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93
bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkg
eworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyUmVxdWVzdC5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdl
dCgpLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVS
TFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKICAgICAgICAgICAgIEVY
UEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0
byBtYWtlIHRoaXMgbm9uLW51bGwuCi0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9u
c2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5n
LCBbc2VydmVyUmVxdWVzdCBVUkxdLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAgICAgIEVYUEVD
VF9FUShyZXNwb25zZS5zdGF0dXNDb2RlLCAzMDEpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLmFsbEhlYWRlckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFs
dWUiKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZywgW3NlcnZlclJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJl
ZGlyZWN0VGFyZ2V0Il0uYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbW3NlcnZlclJlcXVlc3QgVVJMXSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5n
KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGlj
eUFsbG93KTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlv
blVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVk
RmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKICAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOwogICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsK
LSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07
Ci0gICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsK
KyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQg
KikgewogICAgICAgICAgICAgZmluaXNoZWREb3dubG9hZCA9IHRydWU7CiAgICAgICAgIH07CiAg
ICAgfV07CkBAIC0yMTA4LDcgKzIxMDgsNyBAQCBURVNUKFdLRG93bmxvYWQsIFJlZGlyZWN0QWxs
b3cpCiAgICAgCiAgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKIAot
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRp
cmVjdCwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCiAgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaApAQCAtMjExOSwyMSArMjExOSwyMSBAQCBU
RVNUKFdLRG93bmxvYWQsIFJlZGlyZWN0Q2FuY2VsKQogewogICAgIGF1dG8gc2VydmVyID0gcmVk
aXJlY3RTZXJ2ZXIoKTsKICAgICBOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIu
cmVxdWVzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgX19ibG9jayBi
b29sIGNhbmNlbGxlZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1Jl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAg
IGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5T
SFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0
KCkud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJM
UmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkgewogICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5V
UkwuYWJzb2x1dGVTdHJpbmcpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1
c0NvZGUsIDMwMSk7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVh
ZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOwogICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVz
dC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNv
bHV0ZVN0cmluZyk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVk
aXJlY3RQb2xpY3lDYW5jZWwpOwogICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kaWRGYWls
V2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3Vt
ZURhdGEpIHsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tE
b3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICAgICAgRVhQRUNUX0VR
KGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOwpAQCAtMjE0MSw3ICsyMTQxLDcgQEAg
VEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKICAgICAgICAgfTsKICAgICB9XTsKICAg
ICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAogICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEaWRGYWlsV2l0aEVycm9yCiAgICAgfSk7CkBAIC0yMTUzLDE0ICsyMTUzLDE0IEBAIFRFU1Qo
V0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKICAgICBIVFRQU2VydmVyIHNlcnZl
cih7IH0pOwogICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0
KCk7CiAgICAgc2VydmVyLmNhbmNlbCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwog
CiAgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IHN0YXJ0RG93
bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7
Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25s
b2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRp
ZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwg
TlNEYXRhICpyZXN1bWVEYXRhKSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3Iu
ZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CiAgICAgICAgICAgICBmYWlsZWQg
PSB0cnVlOwpAQCAtMjE2OCw3ICsyMTY4LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBEb3dubG9hZFJl
cXVlc3RGYWlsdXJlKQogICAgIH1dOwogICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKIAotICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJy
b3IsCiAgICAgfSk7CiB9CkBAIC0yMTc5LDE3ICsyMTc5LDE3IEBAIFRFU1QoV0tEb3dubG9hZCwg
RG93bmxvYWRSZXF1ZXN0NDA0KQogICAgICAgICB7ICIvIiwgeyA0MDQsIHsgfSwgImh0dHAgYm9k
eSIgfSB9CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAg
ICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgc3RhcnREb3du
bG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5n
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07Ci0gICAgICAgIGRl
bGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKICAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CiAgICAgICAgIH07CiAgICAg
fV07CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVz
dDQwNCkKIAogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0
cCBib2R5Iik7CiAKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZS5nZXQoKSwgewogICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmlu
aXNoLAogICAgIH0pOwpAQCAtMjIwNywxNSArMjIwNywxNSBAQCBURVNUKFdLRG93bmxvYWQsIE5l
dHdvcmtQcm9jZXNzQ3Jhc2gpCiB7CiAgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIF9fYmxvY2sg
UmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0gICAgZGVsZWdhdGUubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdl
dCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAg
cmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0
aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAg
ICB9OwpAQCAtMjIyMywxNCArMjIyMywxNCBAQCBURVNUKFdLRG93bmxvYWQsIE5ldHdvcmtQcm9j
ZXNzQ3Jhc2gpCiAgICAgd2FpdEZvckZpcnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAgICAgCiAg
ICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kaWRGYWls
V2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgewor
ICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNF
cnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5k
b21haW4sIE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CiAgICAgICAgIHRlcm1pbmF0ZWQgPSB0
cnVlOwogICAgIH07Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
LndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKICAgICBVdGlsOjpy
dW4oJnRlcm1pbmF0ZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMjQ1LDEzICsyMjQ1LDEzIEBAIFRFU1QoV0tEb3du
bG9hZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkKICAgICAgICAgeyAiLyIsIHsgImRvd25s
b2FkIGNvbnRlbnQiIH0gfQogICAgIH0pOwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOwogCi0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQg
PSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3du
bG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwg
TlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgIGRlbGVnYXRlLmdldCgpLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGVj
aWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdn
ZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKICAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKQEAgLTIyNjEs
NyArMjI2MSw3IEBAIFRFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkK
ICAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKIAogICAgIGNoZWNrRmls
ZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOwotICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25B
Y3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQs
CkBAIC0yMjczLDExICsyMjczLDExIEBAIFRFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5h
bWVGcm9tSG9zdCkKIFRFU1QoV0tEb3dubG9hZCwgUmVxdWVzdEhUVFBCb2R5KQogewogICAgIGF1
dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29w
eV0gYXV0b3JlbGVhc2VdOwotICAgIHJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgW3dlYlZpZXcgc3RhcnREb3du
bG9hZFVzaW5nUmVxdWVzdDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtzZXJ2ZXIucmVxdWVzdCgp
IG11dGFibGVDb3B5XSk7CisgICAgW3JlcXVlc3Qgc2V0SFRUUEJvZHk6W0AiYm9keSIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBbd2ViVmlldyBzdGFydERv
d25sb2FkVXNpbmdSZXF1ZXN0OnJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5vcmlnaW5h
bFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRo
aXMgbm9uLW51bGwuCiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwpAQCAtMjI5MSwxNyAr
MjI5MSwxNyBAQCBURVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhpc3QpCiAgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiZXhhbXBsZS50eHQiXTsKIAogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVy
KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmFp
bGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAg
ICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5n
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07Ci0gICAgICAgIGRl
bGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3Is
IE5TRGF0YSAqKSB7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBe
KFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CiAgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7CiAg
ICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwpAQCAtMjMwOSw3ICsyMzA5LDcgQEAgVEVTVChXS0Rv
d25sb2FkLCBQYXRoTXVzdEV4aXN0KQogICAgIH07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
c2VydmVyLnJlcXVlc3QoKV07CiAgICAgVXRpbDo6cnVuKCZmYWlsZWQpOwotICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCkBAIC0yMzIz
LDggKzIzMjMsOCBAQCBURVNUKFdLRG93bmxvYWQsIEZpbGVNdXN0Tm90RXhpc3QpCiAgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKICAgICBfX2Jsb2NrIGF1dG8g
cmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwot
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOnJldGFpbmVkRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgRVhQRUNU
X1RSVUUoW1tAImluaXRpYWwgZGF0YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5
OllFU10pOwogCkBAIC0yMzU2LDE3ICsyMzU2LDE3IEBAIFRFU1QoV0tEb3dubG9hZCwgRmlsZU11
c3ROb3RFeGlzdCkKIFRFU1QoV0tEb3dubG9hZCwgRGVzdGluYXRpb25OdWxsU3RyaW5nKQogewog
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7Ci0gICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0gICAgZGVs
ZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ZGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBk
ZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAg
ICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5k
aWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEg
KikgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJv
ckRvbWFpbik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNh
bmNlbGxlZCk7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwpAQCAtMjM3NCw3ICsyMzc0LDcg
QEAgVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCiAgICAgfTsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBVdGlsOjpydW4oJmZh
aWxlZCk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKQEAgLTIzODgsMjkgKzIzODgsMjkgQEAgVEVTVChXS0Rvd25sb2FkLCBEZXN0
aW5hdGlvbk51bGxTdHJpbmcpCiBURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3MpCiB7
CiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9fX0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0
ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBm
YWxzZTsKLSAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgZmluaXNoZWQgPSB0cnVlOwogICAgIH07CiAgICAg
X19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
KSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0
aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CiAgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKICAgICB9OwotICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICB9OwogICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRV
c2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAgICAgfV07CiAgICAg
VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2Up
OwogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQg
Y29udGVudCIpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdldCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
ZWNpZGVEZXN0aW5hdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCkBA
IC0yNDIxLDEwICsyNDIxLDEwIEBAIFRFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlU3VjY2VzcykK
IFRFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKIHsKICAgICBIVFRQU2VydmVyIHNl
cnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Ci0gICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0g
ZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93
bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICBkZWxlZ2F0
ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJv
ciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKICNpZiBVU0UoTEVHQUNZX0NGTkVUV09S
S19ET1dOTE9BRFMpCiAgICAgICAgIC8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxs
IGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgpAQCAtMjQz
NSwxOSArMjQzNSwxOSBAQCBURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZUZhaWx1cmUpCiAgICAg
ICAgIGZhaWxlZCA9IHRydWU7CiAgICAgfTsKICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFs
bGVuZ2UgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hh
bGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCku
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlh
bCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRy
dXN0KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOwogICAgICAgICByZWNlaXZlZENo
YWxsZW5nZSA9IHRydWU7CiAgICAgfTsKICAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpk
b3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH1dOwogICAgIFV0aWw6
OnJ1bigmZmFpbGVkKTsKICNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQogICAg
IEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKICNlbmRpZgotICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdl
dCgpLCB7CiAjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKICAgICAgICAgLy8g
TW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Ig
c2VydmVyIHRydXN0IGV2YWx1YXRpb24uCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLApAQCAtMjQ2OCwxMSArMjQ2OCwxMSBAQCB2b2lkIGJsb2JUZXN0
KGJvb2wgZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbiwgc3RkOjppbml0aWFsaXplcl9saXN0
PERvd25sb2FkQwogICAgICJ9IgogICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2Fk
QmxvYigpJz48L2JvZHk+IjsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1w
RmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOm5pbF07Ci0g
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBkZWxl
Z2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rp
b24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKSB7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgewogICAgICAgICBpZiAoW2FjdGlvbi5yZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJhYm91dDpibGFuayJdKQog
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGFjdGlvbi5zaG91bGRQZXJmb3JtRG93bmxvYWQpOwog
ICAgICAgICBlbHNlIHsKQEAgLTI0ODUsMjkgKzI0ODUsMjkgQEAgdm9pZCBibG9iVGVzdChib29s
IGRvd25sb2FkRnJvbU5hdmlnYXRpb25BY3Rpb24sIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxEb3du
bG9hZEMKICAgICAgICAgfQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdyk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKmFj
dGlvbiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0
aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25B
Y3Rpb24gKmFjdGlvbiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CiAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsK
LSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9OwotICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRl
LmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
ewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwg
ImJsb2IiKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5VUkwuc2NoZW1lLCAiYmxvYiIpOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogICAgIH07
Ci0gICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5n
ZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1
Z2dlc3RlZEZpbGVuYW1lLCAiZG93bmxvYWRGaWxlbmFtZSIpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgfTsKICAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25s
b2FkICopIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3du
bG9hZCAqKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH07CiAgICAgVXRpbDo6cnVuKCZk
b25lKTsKIAogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiMTIz
Iik7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgZXhwZWN0ZWRDYWxsYmFja3Mp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIGV4cGVjdGVkQ2FsbGJh
Y2tzKTsKIH0KIAogVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2UpCkBAIC0yNTQwLDI4ICsy
NTQwLDI4IEBAIFRFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNlTm9GaWxlbmFtZSkKICAgICAi
ICAgIGEuY2xpY2soKTsiCiAgICAgIn0iCiAgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93
bmxvYWRCbG9iKCknPjwvYm9keT4iOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOwotICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIGRlbGVn
YXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlv
bkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSkpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGFjdGlvbi5zaG91bGRQZXJmb3Jt
RG93bmxvYWQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdyk7CiAgICAgfTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNw
b25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CiAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwg
IndlYmtpdC5vcmciKTsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKICAgICB9OwogICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBO
U1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpz
dWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewog
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9
OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUuZ2V0KCksIHsKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLApAQCAtMjU5MiwxMiArMjU5MiwxMiBAQCBURVNUKFdLRG93bmxvYWQsIFN1
YmZyYW1lT3JpZ2luYXRvcikKIAogICAgIE5TU3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lm
cmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkhUTUwg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdXTsKIAot
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgZGVs
ZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25S
ZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3kpKSB7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7CiAgICAgICAg
IGlmIChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmlu
ZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdCiAgICAgICAgICAgICB8fCBbcmVzcG9uc2UucmVzcG9u
c2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpjaGlsZEZyYW1lU2VydmVyUmVx
dWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddCiAgICAgICAgICAgICB8fCBbcmVzcG9uc2UucmVzcG9u
c2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpncmFuZGNoaWxkRnJhbWVTZXJ2
ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCkBAIC0yNjA1LDIxICsyNjA1LDIxIEBAIFRF
U1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2Fk
KTsKICAgICB9OwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgIGRlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3LjAuMC4x
Iik7CiAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4ucG9y
dCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CiAgICAgfTsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGlu
YXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hl
bWUsICJibG9iIik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwg
IlVua25vd24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKICAgICAgICAgZG9u
ZSA9IHRydWU7CiAgICAgfTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwotICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLmdl
dCgpLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQppbmRleCBjZTRl
MmRmMTY4NTMxMzIzYWI5NzJkNzdkNDkzNWE5M2E5YmYyMzZmLi42NjdkYTM0NTkzMWMwMzRhMzcw
MWZmMjg0MDU0MGY0OWIzOWIyYjU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCkBAIC0xMDEsMTEgKzEw
MSwxMSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljKQogICAgIE5TVVJMICpzZXJ2ZXJV
UkwgPSBzZXJ2ZXIucmVxdWVzdCgpLlVSTDsKIAogICAgIGF1dG8gZXhhbXBsZVVSTCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXTsKLSAgICBhdXRvIGF0dHJp
YnV0aW9uID0gW1tbTW9ja0V2ZW50QXR0cmlidXRpb24gYWxsb2NdIGluaXRXaXRoUmVwb3J0RW5k
cG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTF0gYXV0
b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIHdlYlZpZXcuX3VpRXZlbnRBdHRyaWJ1dGlvbiA9IChVSUV2ZW50QXR0cmlidXRp
b24gKilhdHRyaWJ1dGlvbjsKLSAgICBbd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107Ci0gICAgW3dlYlZp
ZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1RMU0NlcnRpZmljYXRlQ2hh
aW46QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIGZvckhvc3Q6c2VydmVyVVJMLmhvc3Rd
OworICAgIGF1dG8gYXR0cmlidXRpb24gPSBhZG9wdE5TKFtbTW9ja0V2ZW50QXR0cmlidXRpb24g
YWxsb2NdIGluaXRXaXRoUmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgZGVzdGlu
YXRpb25VUkw6ZXhhbXBsZVVSTF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKyAgICB3ZWJWaWV3LmdldCgpLl91aUV2ZW50QXR0cmlidXRpb24gPSAoVUlF
dmVudEF0dHJpYnV0aW9uICopYXR0cmlidXRpb24uZ2V0KCk7CisgICAgW1t3ZWJWaWV3IGNvbmZp
Z3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOllFU107CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndlYnNpdGVEYXRhU3RvcmUg
X2FsbG93VExTQ2VydGlmaWNhdGVDaGFpbjpAWyhpZCl0ZXN0Q2VydGlmaWNhdGUoKS5nZXQoKV0g
Zm9ySG9zdDpzZXJ2ZXJVUkwuaG9zdF07CiAgICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01l
YXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3Rpbmc6c2VydmVyVVJMIGNvbXBsZXRpb25IYW5k
bGVyOl57CiAgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nOllFUyBjb21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICAgICAg
TlNTdHJpbmcgKmh0bWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+ZmV0
Y2goJyVAY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCcse21vZGU6J25vLWNvcnMnfSk8
L3NjcmlwdD4iLCBzZXJ2ZXJVUkxdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDdjODc4
MjZmZWU2ZjRlNDQxOTcwN2JlNzVkMjA2ZGNlODVhNjRlNzQuLmIyMzAyYjU1OTRlNzRiYWZjNWJm
MGQxOTY3ZmM4NTJmNWUwMDJmZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTExNiw3
ICsxMTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxT
Y2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgIGVsc2UgaWYgKFt0YXNrLnJl
cXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93c2VyLXByaXZhY3kt
dGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSJdKQogICAgICAgICByZXNwb25zZSA9IEAiPGJvZHkg
aWQgPSAnYm9keSc+PC9ib2R5PjxpZnJhbWUgaWQ9J2lmcmFtZSc+PC9pZnJhbWU+PC9ib2R5PiI7
CiAKLSAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0
b3JlbGVhc2VdXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0
ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpb
cmVzcG9uc2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBb
dGFzayBkaWRGaW5pc2hdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy5tbQppbmRleCA2ZjY3
ZGMyN2VkYzNkMjc0NWIxNzBlNDgyYmNkOTBlODQ5NGNiOTVhLi44N2FiOTFkNmU2ZWI3NzQzMzU0
Y2RlNGFmODNhNGNjZjUxNjZjZGY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy5tbQpAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpnZXROZXh0TWVzc2FnZSgpCiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gW1tzY3JpcHRNZXNzYWdlcy50YWtlRmlyc3QoKSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogVEVTVChJbmRleGVkREIsIEluZGV4ZWREQk11bHRpUHJvY2VzcykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2Fy
ZENvbXBhdGliaWxpdHkubW0KaW5kZXggYzcyMDFkYTA5MWYxNmI1MmI0YTg1OGZmYTRkNGVkZTA1
NmVjM2VmNS4uZjNjM2Q4N2Q4NTAyZTUxN2Q4NWY2MGFmZDEzYTJhMmE5MGIzNWYwOCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENv
bXBhdGliaWxpdHkubW0KQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFdLU2NyaXB0TWVzc2FnZSAq
Z2V0TmV4dE1lc3NhZ2UoKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFtbc2NyaXB0TWVzc2FnZXMu
dGFrZUZpcnN0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHNjcmlwdE1lc3Nh
Z2VzLnRha2VGaXJzdCgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFRFU1QoSW5kZXhlZERCLCBTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkpCkBAIC05Niw3ICs5Niw3IEBAIFRFU1Qo
SW5kZXhlZERCLCBTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkpCiAKICAgICBS
ZXRhaW5QdHI8X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaWRiUGF0aDsKLSAgICBjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldIGF1dG9yZWxlYXNlXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2Uo
KTsKIAogICAgIGlkYlBhdGggPSBbaWRiUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJmaWxlX18wIl07CiAgICAgaWRiUGF0aCA9IFtpZGJQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAImJhY2t3YXJkX2NvbXBhdGliaWxpdHkiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCVGVtcEZpbGVTaXplLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1wRmlsZVNp
emUubW0KaW5kZXggZTdiOTkyMjhjZTg3NmU0NDdlNjQ3ODJlZjlkODdmMjVhZGM5YjlmYS4uOTA2
MGZiOTI4OWY3ZGQ3YzY2YzY0NmY4OWIyNTFlNDZlYjU5MTZjMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1wRmlsZVNpemUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJUZW1w
RmlsZVNpemUubW0KQEAgLTcxLDcgKzcxLDcgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRl
bXBGaWxlU2l6ZSkKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5ID0gaWRiUGF0aC5nZXQoKTsKIAotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVh
c2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMo
W1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogICAgIGF1dG8g
dHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVE
YXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7CiAKICAgICBbY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxl
ZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5t
bQppbmRleCAxYjA2MjZlMmEwNTMwOWNiNjVmOWUzODA0MGFjZTRhNDI0NWQ0OGY4Li5hODY3MjMw
MGNhYjA2NWU2MTdlMTJlNmU3N2JmMDA3NDIxOGU5OTJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0pJVEVuYWJsZWQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tCkBAIC00OSw3ICs0OSw3
IEBAIFRFU1QoV2ViS2l0LCBKSVRFbmFibGVkKQogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG5ld10pOwogICAg
IFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0SklURW5hYmxlZDpOT107CiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAg
ICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0
b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKICAgICBhdXRvIHdlYlZpZXdOb0pJ
VCA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
Y2hlY2tKSVRFbmFibGVkKFdURk1vdmUod2ViVmlld05vSklUKSwgTk8pOwogICAgIGNoZWNrSklU
RW5hYmxlZChhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSksIFlFUyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLm1tCmluZGV4IDM0YTIxMTA5MzU5ODMxMjZhYTZhMzA4MjI5YWVl
OGZkNzJhM2VkMmMuLjBmY2NjNmYzZTAwN2E2MzljYmE3NzAyYWNkOWVlYjM0MDY5Yjc3OTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tCkBAIC01Niw3ICs1Niw3IEBA
IFRFU1QoV0tXZWJWaWV3LCBMb2NhbFN0b3JhZ2VGZXRjaERhdGFSZWNvcmRzKQogICAgIHJlYWR5
VG9Db250aW51ZSA9IGZhbHNlOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICB3ZWJW
aWV3LmdldCgpLlVJRGVsZWdhdGUgPSBbW1tMb2NhbFN0b3JhZ2VVSURlbGVnYXRlIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5nZXQoKS5VSURlbGVnYXRlID0gYWRvcHRO
UyhbW0xvY2FsU3RvcmFnZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwog
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD5sb2NhbFN0b3JhZ2Uuc2V0SXRl
bSgndGVzdEtleScsICd0ZXN0VmFsdWUnKTthbGVydChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVz
dEtleScpKTs8L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
bG9jYWxob3N0Il1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRp
bnVlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9O
YXZpZ2F0aW9uLm1tCmluZGV4IDVlNzQ4MjFmYTVhNGNkMjE1NjIzOTAzNjY5ZGZjYjViZDllNjZk
MjUuLjA1MWY5YTc3OThiMzM3ZjFlMmMzZWY0ZGNjNzQwNmY1NjJkZTMyNmIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb24ubW0KQEAg
LTIyNSw4ICsyMjUsOCBAQCBAZW5kCiAKIFRFU1QoV0tOYXZpZ2F0aW9uLCBGcmFtZXMpCiB7Ci0g
ICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBUZXN0VVJMU2NoZW1l
SGFuZGxlciAqaGFuZGxlciA9IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJM
U2NoZW1lSGFuZGxlciBuZXddKTsKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tI
YW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAg
ICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcgPSBuaWw7CiAgICAgICAgIGlmIChbdGFzay5yZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZTovL2hvc3QxLyJd
KQpAQCAtMjQ0LDkgKzI0NCw5IEBAIFRFU1QoV0tOYXZpZ2F0aW9uLCBGcmFtZXMpCiAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZVN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH1d
OwotICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxT
Y2hlbWU6QCJmcmFtZSJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJmcmFtZSJdOwogCi0gICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKICAgICAgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJhbWU6Ly9ob3N0MS8iXV1dOwpAQCAtNzQzLDMz
ICs3NDMsMzMgQEAgVEVTVChXS05hdmlnYXRpb24sIEZyYW1lQmFja0xvYWRpbmcpCiAgICAgICAg
IHsgIi9mcmFtZTEuaHRtbCIsIHsgIjxhIGhyZWY9J2ZyYW1lMi5odG1sJz5saW5rPC9hPiIgfSB9
LAogICAgICAgICB7ICIvZnJhbWUyLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmcmFtZTIgbG9h
ZGVkJyk8L3NjcmlwdD4iIH0gfSwKICAgICB9KTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0VUlEZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIG9ic2VydmVyID0gW1tMb2FkaW5nT2Jz
ZXJ2ZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdh
dGU7Ci0gICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIgZm9yS2V5UGF0aDpAImxvYWRp
bmciIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Ci0g
ICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcubG9hZGluZyk7Ci0gICAgRVhQRUNUX0VRKG9ic2VydmVy
LmNoYW5nZXNPYnNlcnZlZCwgMHUpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUg
bmV3XSk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW0xvYWRpbmdPYnNlcnZlciBuZXdd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2Vi
VmlldyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAibG9hZGluZyIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgaXNMb2FkaW5nXSk7CisgICAgRVhQRUNUX0VRKFtvYnNlcnZlciBj
aGFuZ2VzT2JzZXJ2ZWRdLCAwdSk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07Ci0gICAgRVhQRUNUX1RSVUUod2ViVmlldy5sb2FkaW5nKTsKLSAgICBFWFBFQ1Rf
RVEob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkLCAxdSk7Ci0gICAgd2hpbGUgKG9ic2VydmVyLmNo
YW5nZXNPYnNlcnZlZCA8IDJ1KQorICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGlzTG9hZGluZ10p
OworICAgIEVYUEVDVF9FUShbb2JzZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSwgMXUpOworICAgIHdo
aWxlIChbb2JzZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSA8IDJ1KQogICAgICAgICBVdGlsOjpzcGlu
UnVuTG9vcCgpOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmxvYWRpbmcpOwotICAgIEVYUEVD
VF9FUShvYnNlcnZlci5jaGFuZ2VzT2JzZXJ2ZWQsIDJ1KTsKLSAgICBFWFBFQ1RfRkFMU0Uod2Vi
Vmlldy5jYW5Hb0JhY2spOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBpc0xvYWRpbmddKTsK
KyAgICBFWFBFQ1RfRVEoW29ic2VydmVyIGNoYW5nZXNPYnNlcnZlZF0sIDJ1KTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgY2FuR29CYWNrXSk7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJykuY29udGVudFdpbmRvdy5k
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhJykuY2xpY2soKSIgY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJmcmFtZTIg
bG9hZGVkIik7Ci0gICAgRVhQRUNUX0VRKG9ic2VydmVyLmNoYW5nZXNPYnNlcnZlZCwgMnUpOwot
ICAgIEVYUEVDVF9UUlVFKHdlYlZpZXcuY2FuR29CYWNrKTsKKyAgICBFWFBFQ1RfRVEoW29ic2Vy
dmVyIGNoYW5nZXNPYnNlcnZlZF0sIDJ1KTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBjYW5H
b0JhY2tdKTsKICAgICBbd2ViVmlldyBnb0JhY2tdOwotICAgIHdoaWxlIChvYnNlcnZlci5jaGFu
Z2VzT2JzZXJ2ZWQgPCAzKQorICAgIHdoaWxlIChbb2JzZXJ2ZXIgY2hhbmdlc09ic2VydmVkXSA8
IDMpCiAgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgRVhQRUNUX1RSVUUod2ViVmll
dy5sb2FkaW5nKTsKLSAgICB3aGlsZSAob2JzZXJ2ZXIuY2hhbmdlc09ic2VydmVkIDwgNCkKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBpc0xvYWRpbmddKTsKKyAgICB3aGlsZSAoW29ic2VydmVy
IGNoYW5nZXNPYnNlcnZlZF0gPCA0KQogICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwotICAg
IEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmxvYWRpbmcpOwotICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2Vy
dmVyOm9ic2VydmVyIGZvcktleVBhdGg6QCJsb2FkaW5nIl07CisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IGlzTG9hZGluZ10pOworICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVy
LmdldCgpIGZvcktleVBhdGg6QCJsb2FkaW5nIl07CiAKIH0KIApAQCAtODA0LDExICs4MDQsMTEg
QEAgVEVTVChXS05hdmlnYXRpb24sIFNpbXVsdGFuZW91c05hdmlnYXRpb25XaXRoRm9udHNGaW5p
c2hlcykKICAgICAgICAgeyAiL2lmcmFtZXNyYy5odG1sIiwgeyAiZnJhbWUgY29udGVudCIgfSB9
LAogICAgIH0pOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVs
ZWFzZV07Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgZGVs
ZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0
aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5KSkgeworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKICAgICAgICAgaWYgKFthY3Rpb24u
cmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAInJlZnJlc2gtbmF2Il0pCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwp
OwogICAgICAgICBlbHNlCkBAIC04MTYsNyArODE2LDcgQEAgVEVTVChXS05hdmlnYXRpb24sIFNp
bXVsdGFuZW91c05hdmlnYXRpb25XaXRoRm9udHNGaW5pc2hlcykKICAgICB9OwogCiAgICAgX19i
bG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRpZEZp
bmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgeworICAgIGRl
bGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb24gKikgewogICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdh
dGlvbkFjdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2
aWdhdGlvbkFjdGlvbi5tbQppbmRleCBmY2M3MjY1ZmQyZjA5MWViYmZjYzAzNzlkZGI5YTg2YWU1
NzQxZmI0Li5kZjdhYTdjNTMyMDFkMGZlOTFlMjY0Mzk2YWNjYjZhNjE1MWRjMmFiIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05hdmlnYXRpb25BY3Rp
b24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0
aW9uQWN0aW9uLm1tCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCBURVNUKFdLTmF2aWdhdGlvbkFjdGlv
biwgQmxvYlJlcXVlc3RCb2R5KQogICAgICAgICAgICAgIn0iCiAgICAgICAgICI8L3NjcmlwdD4i
CiAgICAgICAgICI8Ym9keSBvbmxvYWQ9J2JvZHlMb2FkZWQoKSc+IjsKLSAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBk
ZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25B
Y3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3kpKSB7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgewogICAgICAgICBFWFBFQ1RfTlVM
TChhY3Rpb24ucmVxdWVzdC5IVFRQQm9keSk7CiAgICAgICAgIGlmIChbYWN0aW9uLnJlcXVlc3Qu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdv
cmtQcm9jZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3
b3JrUHJvY2Vzcy5tbQppbmRleCA1ZGRjNTEzYmM4OTNmYzNjNjI2MjMwZmY2ZjNjMGU3ODBlNjlh
MDhhLi40M2ZjMWVkZmFkNWJjM2NhMjQwNGE2ZGY0NzhhYWYzODg2M2UxMzRmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nl
c3MubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogVEVTVChXZWJLaXQsIE5ldHdvcmtQcm9jZXNzRW50
aXRsZW1lbnRzKQogewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjphZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCld
KTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
XTsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKnN0b3JlID0gW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0ud2Vic2l0ZURhdGFTdG9yZTsKICAgICBib29sIGhhc0VudGl0bGVtZW50ID0gW3N0b3JlIF9u
ZXR3b3JrUHJvY2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZzpAImNvbS5hcHBsZS5yb290bGVz
cy5zdG9yYWdlLldlYktpdE5ldHdvcmtpbmdTYW5kYm94Il07CkBAIC04Miw5ICs4Miw5IEBAIFRF
U1QoV2ViS2l0LCBIVFRQUmVmZXJlcikKIAogVEVTVChXZWJLaXQsIE5ldHdvcmtQcm9jZXNzTGF1
bmNoT25seVdoZW5OZWNlc3NhcnkpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gWUVTOwotICAgIFt3ZWJWaWV3
LmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmU6QCJ0
ZXN0Il07Ci0gICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJV
UkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTpAInRlc3QiXTsKLSAgICBF
WFBFQ1RfRkFMU0UoW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9uZXR3
b3JrUHJvY2Vzc0V4aXN0c10pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKKyAgICBbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLl9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IFlFUzsKKyAgICBbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmU6QCJ0ZXN0Il07
CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNj
aGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5OkAidGVzdCJdOworICAgIEVYUEVD
VF9GQUxTRShbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZSBfbmV0d29y
a1Byb2Nlc3NFeGlzdHNdKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRhU3RvcmUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNz
Q3Jhc2hOb25QZXJzaXN0ZW50RGF0YVN0b3JlLm1tCmluZGV4IDJmOGEyZTMzZmU4NzAzYmFiMmQ4
ZTA1MTA4MzJiZWNkOWQ0ODkzNGIuLjA0NzZkMTM5OTY2ZjFmYzBlY2FhNDMyYzU1MTRhYjY2MTYy
OTAxZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TmV0d29ya1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRhU3RvcmUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzc0NyYXNoTm9uUGVy
c2lzdGVudERhdGFTdG9yZS5tbQpAQCAtODQsNSArODQsNSBAQCBURVNUKFdlYktpdCwgTmV0d29y
a1Byb2Nlc3NDcmFzaE5vblBlcnNpc3RlbnREYXRhU3RvcmUpCiAKIFRFU1QoV2ViS2l0LCBOZXR3
b3JrUHJvY2Vzc0NyYXNoTm9uRGVmYXVsdFBlcnNpc3RlbnREYXRhU3RvcmUpCiB7Ci0gICAgY2hl
Y2tSZWNvdmVyeUFmdGVyQ3Jhc2goW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOltbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNlXSk7CisgICAgY2hlY2tSZWNvdmVyeUFm
dGVyQ3Jhc2goYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKS5nZXQoKV0pLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlZmVyZW5jZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWZlcmVuY2VzLm1tCmluZGV4IDA5ZWYwNjFlZGExZmQ1
NDIwNDYyZDA3ZTQwYmYzMDU1ZTQ2OTkyNDQuLmUyODNmNDU5MDQ2MzgwOTZmMGJmOTg0NzM4ODQx
YTI2ZDA2NGUzNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJlZmVyZW5jZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QcmVmZXJlbmNlcy5tbQpAQCAtNzAsOSArNzAsOSBAQCBURVNUKFdlYktpdCwgRXhw
ZXJpbWVudGFsRmVhdHVyZXMpCiBURVNUKFdlYktpdCwgV2ViQXVkaW9QcmVmZXJlbmNlKQogewog
ICAgIGF1dG8gY2hlY2sgPSBbXShib29sIHZhbHVlKSB7Ci0gICAgICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMu
X3dlYkF1ZGlvRW5hYmxlZCA9IHZhbHVlOwotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAx
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgICAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX3dlYkF1ZGlvRW5hYmxlZCA9IHZh
bHVlOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwog
ICAgICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1N0cmluZz4gcmVzdWx0OwogICAgICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJuZXcgQm9vbGVhbih3aW5kb3cuQXVkaW9Db250ZXh0
KS50b1N0cmluZygpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdEZyb21KUywgTlNFcnJv
ciAqZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGI5MTJkMTY1
YjdhZGM5MTFhODQ0MWY4MmUyY2I0NDUwZDYwODJmYjkuLjNkZmI4ODBhYjBjYzJiMzkwMjU0YjJj
NTNlYjRlMmY0NjZiOWI4MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAt
NTQ1NCw3ICs1NDU0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVXNlUHJld2FybWVkUHJvY2Vzc0Fm
dGVyVGVybWluYXRpbmdOZXR3b3JrUHJvY2VzcykKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQo
KV07Ci0gICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm94eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
eHkubW0KaW5kZXggMWY2MDY1ZmQwYjQwNGZmYzQyYzdiNzYwM2NlZWVlYzA4YzAxZGM1ZC4uYTYw
ZWM2YTc5OTIyNGE4YmNmM2UyMDZmNjkwODliN2FjNDBjNjExNCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCkBAIC04NCw3ICs4NCw3IEBAIFRF
U1QoV2ViS2l0LCBIVFRQU1Byb3h5KQogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFNQ
cm94eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0
dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CiAgICAgW3N0b3JlQ29uZmln
dXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5PXTsKICAgICBhdXRvIHZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBb
dmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSBhdXRvcmVsZWFzZV1dOworICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Byb3h5RGVsZWdhdGUgbmV3XSk7
CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAg
LTEzMSw3ICsxMzEsNyBAQCBURVNUKFdlYktpdCwgSFRUUFByb3h5QXV0aGVudGljYXRpb24pCiAg
ICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRp
Y2F0aW9uOllFU107CiAKICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vi
c2l0ZURhdGFTdG9yZTpbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt2
aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9u
LmdldCgpXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1Byb3h5RGVsZWdhdGUgbmV3XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUKFdl
YktpdCwgU2VjdXJlUHJveHlDb25uZWN0aW9uKQogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0
UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjpZRVNdOwogCiAgICAgYXV0byB2aWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Ci0g
ICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1dG9yZWxlYXNlKCldOwogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdXV07
CiAgICAgd2hpbGUgKCFyZWNlaXZlZFZhbGlkQ2xpZW50SGVsbG8pCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQppbmRleCBhZmUyNDg2OWU0ZDQ0YzJjZDg1NjBhZmQ1ZTZjYzNkYzJhMzEzODA3Li5l
NTRjNzhjNWI0ZWRhMjk3Y2E2MTFjYWQ3MjQ1MGYyM2E0NmY2MDYwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KQEAgLTEyNywxMyArMTI3LDEzIEBAIFRFU1QoV2ViS2l0LCBSZW1vdGVPYmpl
Y3RSZWdpc3RyeSkKICAgICAgICAgaXNEb25lID0gZmFsc2U7CiAKICAgICAgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07Ci0gICAgICAgIE5TSFRUUFVSTFJlc3Bv
bnNlICpyZXNwb25zZSA9IFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSBzdGF0dXNDb2RlOjIw
MCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJ0ZXN0RmllbGROYW1l
IiA6IEAidGVzdEZpZWxkVmFsdWUiIH1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byByZXNw
b25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29kZToyMDAg
SFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAidGVzdEZpZWxkTmFtZSIg
OiBAInRlc3RGaWVsZFZhbHVlIiB9XSk7CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOkAidGVzdERvbWFpbiIgY29kZToxMjMgdXNlckluZm86QHtAImEi
OkAiYiJ9XTsKLSAgICAgICAgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSA9
IFtbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCJ0ZXN0SG9zdCIg
cG9ydDo4MCBwcm90b2NvbDpAInRlc3RQcm90b2NvbCIgcmVhbG06QCJ0ZXN0UmVhbG0iIGF1dGhl
bnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQRGlnZXN0XSBhdXRv
cmVsZWFzZV07CisgICAgICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gYWRvcHROUyhbW05TVVJM
UHJvdGVjdGlvblNwYWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCJ0ZXN0SG9zdCIgcG9ydDo4MCBw
cm90b2NvbDpAInRlc3RQcm90b2NvbCIgcmVhbG06QCJ0ZXN0UmVhbG0iIGF1dGhlbnRpY2F0aW9u
TWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQRGlnZXN0XSk7CiAgICAgICAgIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdp
dGhVc2VyOkAidGVzdFVzZXIiIHBhc3N3b3JkOkAidGVzdFBhc3N3b3JkIiBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dOwogICAgICAgICBpZDxOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPiBzZW5kZXIgPSBuaWw7Ci0gICAgICAgIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSA9IFtbW05TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVjdGlvblNwYWNlOnByb3RlY3Rpb25TcGFj
ZSBwcm9wb3NlZENyZWRlbnRpYWw6Y3JlZGVudGlhbCBwcmV2aW91c0ZhaWx1cmVDb3VudDo0MiBm
YWlsdXJlUmVzcG9uc2U6cmVzcG9uc2UgZXJyb3I6ZXJyb3Igc2VuZGVyOnNlbmRlcl0gYXV0b3Jl
bGVhc2VdOwotICAgICAgICBbb2JqZWN0IHNlbmRSZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVz
cG9uc2UgY2hhbGxlbmdlOmNoYWxsZW5nZSBlcnJvcjplcnJvciBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TVVJMUmVxdWVzdCAqZGVzZXJpYWxpemVkUmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqZGVzZXJp
YWxpemVkUmVzcG9uc2UsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmRlc2VyaWFsaXpl
ZENoYWxsZW5nZSwgTlNFcnJvciAqZGVzZXJpYWxpemVkRXJyb3IpIHsKKyAgICAgICAgYXV0byBj
aGFsbGVuZ2UgPSBhZG9wdE5TKFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10g
aW5pdFdpdGhQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgpIHByb3Bvc2VkQ3Jl
ZGVudGlhbDpjcmVkZW50aWFsIHByZXZpb3VzRmFpbHVyZUNvdW50OjQyIGZhaWx1cmVSZXNwb25z
ZTpyZXNwb25zZS5nZXQoKSBlcnJvcjplcnJvciBzZW5kZXI6c2VuZGVyXSk7CisgICAgICAgIFtv
YmplY3Qgc2VuZFJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZS5nZXQoKSBjaGFsbGVu
Z2U6Y2hhbGxlbmdlLmdldCgpIGVycm9yOmVycm9yIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNVUkxS
ZXF1ZXN0ICpkZXNlcmlhbGl6ZWRSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpkZXNlcmlhbGl6ZWRS
ZXNwb25zZSwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqZGVzZXJpYWxpemVkQ2hhbGxl
bmdlLCBOU0Vycm9yICpkZXNlcmlhbGl6ZWRFcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGRlc2VyaWFsaXplZFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCAiaHR0cHM6Ly93
ZWJraXQub3JnLyIpOwogICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFsoTlNIVFRQVVJMUmVz
cG9uc2UgKilkZXNlcmlhbGl6ZWRSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdW0AidGVzdEZpZWxk
TmFtZSJdLCAidGVzdEZpZWxkVmFsdWUiKTsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShk
ZXNlcmlhbGl6ZWRDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnJlYWxtLCAidGVzdFJlYWxtIik7
CkBAIC0yMDksNyArMjA5LDcgQEAgQGVuZAogCiBURVNUKFdlYktpdCwgUmVtb3RlT2JqZWN0UmVn
aXN0cnlfQ2FsbFJlcGx5QmxvY2tBZnRlck9yaWdpbmF0aW5nV2ViVmlld0RlYWxsb2NhdGVzKQog
ewotICAgIExvY2FsT2JqZWN0ICpsb2NhbE9iamVjdCA9IFtbW0xvY2FsT2JqZWN0IGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBsb2NhbE9iamVjdCA9IGFkb3B0TlMoW1tMb2Nh
bE9iamVjdCBhbGxvY10gaW5pdF0pOwogICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gd2Vha1dl
YlZpZXdQdHI7CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTIyMSw3ICsyMjEsNyBAQCBU
RVNUKFdlYktpdCwgUmVtb3RlT2JqZWN0UmVnaXN0cnlfQ2FsbFJlcGx5QmxvY2tBZnRlck9yaWdp
bmF0aW5nV2ViVmlld0RlYWxsb2NhdAogICAgICAgICBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ug
KmludGVyZmFjZSA9IHJlbW90ZU9iamVjdEludGVyZmFjZSgpOwogICAgICAgICBpZCA8UmVtb3Rl
T2JqZWN0UHJvdG9jb2w+IG9iamVjdCA9IFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnld
IHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTppbnRlcmZhY2VdOwogCi0gICAgICAgIFtb
d2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6bG9j
YWxPYmplY3QgaW50ZXJmYWNlOmxvY2FsT2JqZWN0SW50ZXJmYWNlKCldOworICAgICAgICBbW3dl
YlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OmxvY2Fs
T2JqZWN0LmdldCgpIGludGVyZmFjZTpsb2NhbE9iamVjdEludGVyZmFjZSgpXTsKIAogICAgICAg
ICBbb2JqZWN0IGNhbGxVSVByb2Nlc3NNZXRob2RXaXRoUmVwbHlCbG9ja107CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3
VGltZW91dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJl
bnRXZWJWaWV3VGltZW91dC5tbQppbmRleCA3N2E1Mzc3ZDM2ZTE2ZTEzMDc3MjY3YWYyYzI2NWQ1
NzA0Yzg1M2JhLi5kY2JmZDUwNzk1NDZhNDZjMzY5OWYxODhkOGI2ZjMwYjdhMmVlZDRjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2Vi
Vmlld1RpbWVvdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCkBAIC0zOCw3ICszOCw3IEBAIFRFU1QoV2ViS2l0
LCBSZXBhcmVudFdlYlZpZXdUaW1lb3V0KQogICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
c2V0SWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3Rpbmc6WUVTXTsKIAog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2Vd
XTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKIAogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAImhlbGxvIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCAwYzU1OWFj
MzdkYzFjM2EwNDczZmExMzMwYWExMDRiYmY4NWJiNzU0Li44MWIxNGY0NTYzZDM4MmNkMDUwMGYz
YjU1Mzg2NTdlNTllNjE2YWM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTM2NCw3
ICszNjQsNyBAQCBURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBMb2FkSW5mbykKIAogICAgIEVY
UEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzhdIGNsYXNz
XSksICJOU011dGFibGVVUkxSZXF1ZXN0Iik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBh
cmFtZXRlcnNbOF0gVVJMXS5wYXRoLCAiL2ZldGNoVGFyZ2V0Iik7Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKFtbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6W290aGVyUGFyYW1ldGVyc1s4XSBI
VFRQQm9keV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXSwgImE9
YiZjPWQiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6W290aGVyUGFyYW1ldGVyc1s4XSBIVFRQQm9keV0gZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddKS5nZXQoKSwgImE9YiZjPWQiKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
TlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1s5XSBjbGFzc10pLCAiTlNIVFRQVVJM
UmVzcG9uc2UiKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW290aGVyUGFyYW1ldGVyc1s5XSBVUkxd
LnBhdGgsICIvZmV0Y2hUYXJnZXQiKTsKICAgICBFWFBFQ1RfRVEob3RoZXJQYXJhbWV0ZXJzWzEw
XSwgbmlsKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQppbmRleCBjZjlmYzM0MGUzOTBl
MjhlNDE0ZDBkMDQxYWJkNjI4OTEzNjdjY2EwLi45MTQyODQ2NWFmMDcxNDAwOGNhZjNmNjk2YmRk
MDNlNGNhNmY1NzhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0zMjYsNyAr
MzI2LDcgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBSZW1vdmVTZXNzaW9uSUQpCiB7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC01MzUsMTIgKzUzNSwxMiBA
QCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIERhdGFUYXNrSWRlbnRpZmllckNvbGxpc2lv
bikKICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIGJvZHksIHN0cmxlbihib2R5KSk7
CiAgICAgfSk7CiAKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVD
b25maWd1cmF0aW9uID0gW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24uaHR0cHNQcm94eSA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4w
LjE6JWQvIiwgaHR0cHNTZXJ2ZXIucG9ydCgpXV07Ci0gICAgc3RvcmVDb25maWd1cmF0aW9uLmFs
bG93c1NlcnZlclByZWNvbm5lY3QgPSBOTzsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFT
dG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10p
OworICAgIHN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5odHRwc1Byb3h5ID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTol
ZC8iLCBodHRwc1NlcnZlci5wb3J0KCldXTsKKyAgICBzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCku
YWxsb3dzU2VydmVyUHJlY29ubmVjdCA9IE5POworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHRO
UyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBbdmlld0NvbmZpZ3VyYXRp
b24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFt2aWV3Q29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CiAKICAgICBhdXRvIHdlYlZp
ZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIFt3ZWJWaWV3MSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBu
ZXR3b3JrIHByb2Nlc3MgYW5kIGluaXRpYWxpemUgZGF0YSBzdG9yZSJdOwpAQCAtNTgzLDggKzU4
Myw4IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRGF0YVRhc2tJZGVudGlmaWVyQ29s
bGlzaW9uKQogVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBOb01lc3NhZ2VzV2hlbk5vdFRl
c3RpbmcpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFT
dG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3Jl
bGVhc2VdXSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFT
dG9yZTpkYXRhU3RvcmVdOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXSk7
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCld
OwogICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlIl07CkBAIC0xMjUwLDkgKzEyNTAsOSBAQCBURVNUKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MsIENhbkFjY2Vzc0RhdGFTdW1tYXJ5V2l0aE5vUHJvY2Vzc1Bvb2wpCiAgICAgW2Rl
ZmF1bHRGaWxlTWFuYWdlciBjb3B5SXRlbUF0UGF0aDpuZXdGaWxlVVJMLnBhdGggdG9QYXRoOmZp
bGVVUkwucGF0aCBlcnJvcjpuaWxdOwogICAgIEVYUEVDVF9UUlVFKFtkZWZhdWx0RmlsZU1hbmFn
ZXIgZmlsZUV4aXN0c0F0UGF0aDpmaWxlVVJMLnBhdGhdKTsKIAotICAgIF9XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uICpkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRhU3RvcmVD
b25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gaXRwUm9vdFVS
TDsKLSAgICBhdXRvICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOworICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCkuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBpdHBSb290VVJMOworICAg
IGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
W2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKIAogICAg
IHN0YXRpYyBib29sIGRvbmVGbGFnID0gZmFsc2U7CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBURVNU
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIFN0b3JlU3VzcGVuc2lvbikKIHsKICAgICBhdXRvICpz
aGFyZWRQcm9jZXNzUG9vbCA9IFtXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF07CiAg
ICAgYXV0byAqZGF0YVN0b3JlMSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV07Ci0gICAgYXV0byAqZGF0YVN0b3JlMiA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBkYXRh
U3RvcmUyID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXSk7CiAKICAgICBbZGF0YVN0b3JlMSBfc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICBbZGF0YVN0b3JlMiBfc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKQEAgLTEyOTAsNyArMTI5MCw3IEBAIFRFU1Qo
UmVzb3VyY2VMb2FkU3RhdGlzdGljcywgU3RvcmVTdXNwZW5zaW9uKQogCiAgICAgYXV0byBjb25m
aWd1cmF0aW9uMiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24yIHNldFByb2Nlc3NQb29sOiBzaGFyZWRQcm9jZXNzUG9v
bF07Ci0gICAgY29uZmlndXJhdGlvbjIuZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9y
ZTI7CisgICAgY29uZmlndXJhdGlvbjIuZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9y
ZTIuZ2V0KCk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24xLmdldCgpXSk7CiAgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uMi5nZXQoKV0pOwpAQCAtMTMyNSw3ICsxMzI1LDcg
QEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFz
azooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVS
TC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi90cC1sb2FkIl0pCiAgICAgICAgIHJlc3BvbnNlID0g
QCI8Ym9keT48L2JvZHk+IjsKIAotICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNl
Lmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmF1dG9yZWxlYXNlKCldOwogICAgIFt0YXNr
IGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ11dOwogICAgIFt0YXNrIGRpZEZpbmlzaF07CiB9CkBAIC0xMzQyLDEwICsxMzQyLDEw
IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgQmFja0ZvcndhcmRQZXJQYWdlRGF0YSkK
ICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicmVz
b3VyY2UtbG9hZC1zdGF0aXN0aWNzIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc3Rh
dGljIGJvb2wgZG9uZUZsYWcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FmZUJyb3dzaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TYWZlQnJvd3NpbmcubW0KaW5kZXggYzBmNTI1MWY0NWYzZGQy
OGE2ZTQ2ZTEzMGFlNmUwZjliZTNkNmI4OS4uY2VhODU5YjU5ZDliYjYyOWE2NmEwYWY0ZTQ5OTQw
NmU5NzE4ODllOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TYWZlQnJvd3NpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TYWZlQnJvd3NpbmcubW0KQEAgLTc3LDcgKzc3LDcgQEAgQGltcGxlbWVudGF0aW9u
IFRlc3RTZXJ2aWNlTG9va3VwUmVzdWx0CiAKICsgKGluc3RhbmNldHlwZSlyZXN1bHRXaXRoUHJv
dmlkZXI6KFJldGFpblB0cjxOU1N0cmluZz4mJilwcm92aWRlciBwaGlzaGluZzooQk9PTClwaGlz
aGluZyBtYWx3YXJlOihCT09MKW1hbHdhcmUgdW53YW50ZWRTb2Z0d2FyZTooQk9PTCl1bndhbnRl
ZFNvZnR3YXJlCiB7Ci0gICAgVGVzdFNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCA9IFtbVGVz
dFNlcnZpY2VMb29rdXBSZXN1bHQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHROUyhbW1Rlc3RTZXJ2aWNlTG9va3VwUmVzdWx0IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTg2LDcgKzg2LDcgQEAgKyAoaW5zdGFu
Y2V0eXBlKXJlc3VsdFdpdGhQcm92aWRlcjooUmV0YWluUHRyPE5TU3RyaW5nPiYmKXByb3ZpZGVy
IHBoaXNoaW5nOihCT08KICAgICByZXN1bHQtPl9pc01hbHdhcmUgPSBtYWx3YXJlOwogICAgIHJl
c3VsdC0+X2lzVW53YW50ZWRTb2Z0d2FyZSA9IHVud2FudGVkU29mdHdhcmU7CiAKLSAgICByZXR1
cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1N0cmluZyAqKXByb3ZpZGVyCkBAIC0xMjAsMTMgKzEyMCwxMyBAQCBAaW1w
bGVtZW50YXRpb24gVGVzdExvb2t1cFJlc3VsdAogCiArIChpbnN0YW5jZXR5cGUpcmVzdWx0V2l0
aFJlc3VsdHM6KFJldGFpblB0cjxOU0FycmF5PFRlc3RTZXJ2aWNlTG9va3VwUmVzdWx0ICo+PiYm
KXJlc3VsdHMKIHsKLSAgICBUZXN0TG9va3VwUmVzdWx0ICpyZXN1bHQgPSBbW1Rlc3RMb29rdXBS
ZXN1bHQgYWxsb2NdIGluaXRdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW1Rlc3RMb29r
dXBSZXN1bHQgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKICAgICByZXN1bHQtPl9yZXN1bHRzID0gV1RGTW92ZShyZXN1bHRzKTsKICAg
ICAKLSAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdC5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5PFRlc3RTZXJ2aWNlTG9va3VwUmVzdWx0ICo+
ICopc2VydmljZUxvb2t1cFJlc3VsdHMKQEAgLTMwOCw3ICszMDgsNyBAQCBURVNUKFNhZmVCcm93
c2luZywgU2hvd1dhcm5pbmdTUEkpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwogICAgIGF1dG8gc2hvd1dhcm5pbmcgPSBeewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlckNhbGxlZCA9IGZhbHNlOwotICAgICAgICBbd2ViVmlldyBfc2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmdXaXRoVVJMOm5pbCB0aXRsZTpAInRlc3QgdGl0bGUiIHdhcm5pbmc6QCJ0ZXN0IHdh
cm5pbmciIGRldGFpbHM6W1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmlu
ZzpAInRlc3QgZGV0YWlscyJdIGF1dG9yZWxlYXNlXSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wg
c2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgW3dlYlZpZXcgX3Nob3dTYWZlQnJvd3NpbmdXYXJu
aW5nV2l0aFVSTDpuaWwgdGl0bGU6QCJ0ZXN0IHRpdGxlIiB3YXJuaW5nOkAidGVzdCB3YXJuaW5n
IiBkZXRhaWxzOmFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOkAidGVzdCBkZXRhaWxzIl0pLmF1dG9yZWxlYXNlKCkgY29tcGxldGlvbkhhbmRsZXI6XihC
T09MIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBzaG91bGRDb250aW51ZVZhbHVlID0g
c2hvdWxkQ29udGludWU7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IHRy
dWU7CiAgICAgICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCBlOTM2MDVmMDUyYTJi
ZWJiNmJkYmIxY2Q5YTdiYmQyNjZhNDIxNWU2Li5kZDcwNzYyNTZiNWY0MmVjMTYwNzE5ZmMwMmY4
NDc1ZDFhMzRmYTY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtNDc3LDExICs0NzcsMTEg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVXNlckFnZW50OihOU1N0cmluZyAqKXVzZXJBZ2Vu
dAogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24g
cHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgdXNlckluZm86
KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9u
SGFuZGxlcgogewotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBb
W1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9j
XSBpbml0XSk7CiAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1l
KQogICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0b21Vc2VyQWdlbnQ6X3VzZXJBZ2Vu
dF07CiAKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IHdlYnNpdGVQb2xpY2llcyk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogfQogCiBAZW5kCkBAIC0xNDA3
LDcgKzE0MDcsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBOb25EZWZhdWx0U2Vzc2lvbklEKQog
ICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gc2VydmljZVdvcmtlcnNQYXRoOwogICAgIHdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlk
YlBhdGg7CiAKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIFJldGFpblB0cjxTV01lc3NhZ2VIYW5k
bGVyV2l0aEV4cGVjdGVkTWVzc2FnZT4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNz
YWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKQEAgLTE0NTYsMTAgKzE0NTYsMTAgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1BlclNpdGUpCiAKICAgICAvLyBOb3JtYWxseSwg
c2VydmljZSB3b3JrZXJzIGdldCB0ZXJtaW5hdGVkIHNldmVyYWwgc2Vjb25kcyBhZnRlciB0aGVp
ciBjbGllbnRzIGFyZSBnb25lLgogICAgIC8vIERpc2FibGUgdGhpcyBkZWxheSBmb3IgdGhlIHB1
cnBvc2Ugb2YgdGVzdGluZy4KLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAq
ZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gTk87CisgICAg
YXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gc2V0U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDpOT107CiAK
LSAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0pOworICAgIGF1
dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgCiAg
ICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKICAgICBbZGF0YVN0b3Jl
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
dG9yYWdlUXVvdGEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0
b3JhZ2VRdW90YS5tbQppbmRleCAwZDc2NDhhZjkxMWVmMjkzMmM0ODkwNDcwMjEzMzc0ZmIwN2Zm
YTQxLi5mMWFiNjgzOWRlYzNkMmE0MWU3NGEyODc1MzQzM2RiYjQxNjZkZDgzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3JhZ2VRdW90YS5t
bQpAQCAtMjUwLDE2ICsyNTAsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFZpc2libGUoVGVz
dFdLV2ViVmlldyAqd2ViVmlldykKIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlSGlkZGVuKQog
ewogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biAqc3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVy
T3JpZ2luU3RvcmFnZVF1b3RhID0gMTAyNCAqIDQwMDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUg
KmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3Jl
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhOjEwMjQgKiA0MDBdOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRl
IGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1
ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFT
dG9yZV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUu
Z2V0KCldOwogCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkg
bmFtZTpAInF0Il07CkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxl
Z2F0ZUhpZGRlbikKIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlKQogewogICAgIGRvbmUgPSBm
YWxzZTsKLSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1
cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1
b3RhID0gMTAyNCAqIDQwMDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNv
bmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjEwMjQg
KiA0MDBdOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBj
b21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOwogCiAgICAg
YXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CkBA
IC0zNzEsMTYgKzM3MSwxNiBAQCBURVNUKFdlYktpdCwgUXVvdGFEZWxlZ2F0ZSkKIFRFU1QoV2Vi
S2l0LCBRdW90YURlbGVnYXRlUmVsb2FkKQogewogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1cmF0aW9uID0gW1tbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
LSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gMTAyNCAqIDQw
MDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtzdG9yZUNv
bmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjEwMjQgKiA0MDBdOworICAgIGF1
dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbZGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwogICAgIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0aW9u
IHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKICAgICAKICAgICBhdXRvIG1l
c3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAicXQiXTsKQEAgLTQxOSwx
NiArNDE5LDE2IEBAIFRFU1QoV2ViS2l0LCBRdW90YURlbGVnYXRlUmVsb2FkKQogVEVTVChXZWJL
aXQsIFF1b3RhRGVsZWdhdGVOYXZpZ2F0ZUZyYWdtZW50KQogewogICAgIGRvbmUgPSBmYWxzZTsK
LSAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1cmF0aW9u
ID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKLSAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0g
MTAyNCAqIDQwMDsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3Vy
YXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOjEwMjQgKiA0MDBd
OworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vi
c2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0
aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29u
ZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOwogCiAgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tRdW90YU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInF0Il07CkBAIC00NzAs
OCArNDcwLDggQEAgVEVTVChXZWJLaXQsIFF1b3RhRGVsZWdhdGVOYXZpZ2F0ZUZyYWdtZW50KQog
VEVTVChXZWJLaXQsIERlZmF1bHRRdW90YSkKIHsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGRhdGFT
dG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBbZGF0YVN0b3JlIHJl
bW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10g
bW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkg
ewogICAgICAgICBkb25lID0gdHJ1ZTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBURVNUKFdlYktpdCwg
RGVmYXVsdFF1b3RhKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0
YVN0b3JlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9y
ZS5nZXQoKV07CiAKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1F1b3RhTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQo
KSBuYW1lOkAicXQiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCmluZGV4IDIzZGJjZmU0YzRmMTUyM2NkNzkzYWEx
MTExYzRkYTRmMjEzMzIwOTYuLjU1ODcyNWQ0NTViNDViNWFkY2RlYmZkNWE5NTFjNjU1OGFlZTky
OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExT
RGVwcmVjYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UTFNEZXByZWNhdGlvbi5tbQpAQCAtMTYzLDkgKzE2Myw5IEBAIFRFU1QoVExTVmVyc2lvbiwg
RGVmYXVsdEJlaGF2aW9yKQogCiBSZXRhaW5QdHI8V0tXZWJWaWV3PiBtYWtlV2ViVmlld1dpdGgo
V0tXZWJzaXRlRGF0YVN0b3JlICpzdG9yZSwgUmV0YWluUHRyPFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGU+IGRlbGVnYXRlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
Ci0gICAgY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gc3RvcmU7Ci0gICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6c3RvcmVd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKICAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5n
ZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqKSkgewogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZFNlcnZlclRydXN0KTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBURVNUKFRMU1ZlcnNpb24s
IERpZE5lZ290aWF0ZU1vZGVyblRMUykKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIGF1dG8gZGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10p
OwogICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRp
b25FbmFibGVkOllFU107Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpb
W1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmF1
dG9yZWxlYXNlKCldOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKQEAgLTQ3MCwxOCArNDcwLDE4IEBAIFRFU1QoVExTVmVyc2lvbiwgTGVnYWN5U3Vi
cmVzb3VyY2VzKQogICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8aWZyYW1lIHNyYz0naHR0
cHM6Ly8xMjcuMC4wLjE6IiwgbGVnYWN5U2VydmVyLnBvcnQoKSwgIi9mcmFtZScvPiIpIH19CiAg
ICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAotICAgIGF1dG8gZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBkYXRh
U3RvcmVDb25maWd1cmF0aW9uLmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkID0gWUVT
OwotICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJW
aWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJh
dGlvbl0pOworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEZhc3RTZXJ2ZXJUcnVzdEV2
YWx1YXRpb25FbmFibGVkOllFU107CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW3dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSkuYXV0b3JlbGVhc2UoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIFtk
ZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcg
KiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJh
Y2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFs
ICopKSB7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1
c3QpOwogICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH1dOwotICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblNl
cnZlci5yZXF1ZXN0KCldOwogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CkBAIC00ODksOCArNDg5LDggQEAgVEVTVChUTFNWZXJzaW9uLCBMZWdhY3lTdWJyZXNvdXJj
ZXMpCiAgICAgRVhQRUNUX0VRKGxlZ2FjeVNlcnZlci50b3RhbFJlcXVlc3RzKCksIDB1KTsKICAg
ICBFWFBFQ1RfRVEobW9kZXJuU2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMXUpOwogCi0gICAgYXV0
byBkZWZhdWx0V2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIFtk
ZWZhdWx0V2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOworICAgIGF1dG8g
ZGVmYXVsdFdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW2RlZmF1bHRX
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW2RlZmF1
bHRXZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblNlcnZlci5yZXF1ZXN0KCldOwogICAgIFtkZWxl
Z2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgRVhQRUNUX0VRKGxlZ2FjeVNl
cnZlci50b3RhbFJlcXVlc3RzKCksIDF1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCAwMTkyYjk0
ODMzZTZjZTk2MTUyN2FmZjZkYjAwM2Q5MzZkNGU3Yjg3Li5mNzgwMjNjMTVlNjgzNTIzMjBmZjI3
MTIwMWQyMDA1YzQxYWMxOTlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCkBAIC00MDQsNyArNDA0LDcg
QEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseVNpbmds
ZUV4Y2x1aW9uUnVsZUZvckVsZW1lbnQpCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlwdWxh
dGlvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRFeGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVz
aW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImNvZGUi
XSBhdXRvcmVsZWFzZV0sCisgICAgICAgIGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImNv
ZGUiXSkuYXV0b3JlbGVhc2UoKSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTQ0
MCw4ICs0NDAsOCBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlv
bkFwcGx5SW5jbHVzaW9uRXhjbHVzaW9uUnVsZXNGb3JBdHRyaQogCiAgICAgUmV0YWluUHRyPF9X
S1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlw
dWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckF0
dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJ5ZXMiXSBhdXRvcmVsZWFzZV0sCi0gICAg
ICAgIFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVz
aW9uOihCT09MKU5PIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJubyJdIGF1
dG9yZWxlYXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNp
b25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOihCT09MKVlFUyBmb3JBdHRyaWJ1dGU6QCJkYXRh
LWV4Y2x1ZGUiIHZhbHVlOkAieWVzIl0pLmF1dG9yZWxlYXNlKCksCisgICAgICAgIGFkb3B0TlMo
W1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjoo
Qk9PTClOTyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAibm8iXSkuYXV0b3Jl
bGVhc2UoKSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTQ2OCw3ICs0NjgsNyBA
QCBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvbkFwcGx5SW5jbHVz
aW9uRXhjbHVzaW9uUnVsZXNGb3JDbGFzcwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKLSAgICAgICAgW1tbX1dLVGV4
dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246WUVTIGZvckNs
YXNzOkAiZXhjbHVkZSJdIGF1dG9yZWxlYXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JDbGFz
czpAImV4Y2x1ZGUiXSkuYXV0b3JlbGVhc2UoKSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxz
ZTsKQEAgLTQ5NSw5ICs0OTUsOSBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1h
bmlwdWxhdGlvbkFwcGx5SW5jbHVzaW9uRXhjbHVzaW9uUnVsZXNGb3JDbGFzcwogCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6
QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGlu
aXRFeGNsdXNpb246WUVTIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIgdmFsdWU6QCJ5ZXMi
XSBhdXRvcmVsZWFzZV0sCi0gICAgICAgIFtbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25S
dWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOk5PIGZvckF0dHJpYnV0ZTpAImRhdGEtZXhjbHVkZSIg
dmFsdWU6QCJubyJdIGF1dG9yZWxlYXNlXSwKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246WUVTIGZvckNsYXNzOkAiZXhjbHVk
ZSJdIGF1dG9yZWxlYXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25F
eGNsdXNpb25SdWxlIGFsbG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JBdHRyaWJ1dGU6QCJkYXRh
LWV4Y2x1ZGUiIHZhbHVlOkAieWVzIl0pLmF1dG9yZWxlYXNlKCksCisgICAgICAgIGFkb3B0TlMo
W1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjpO
TyBmb3JBdHRyaWJ1dGU6QCJkYXRhLWV4Y2x1ZGUiIHZhbHVlOkAibm8iXSkuYXV0b3JlbGVhc2Uo
KSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlIGFs
bG9jXSBpbml0RXhjbHVzaW9uOllFUyBmb3JDbGFzczpAImV4Y2x1ZGUiXSkuYXV0b3JlbGVhc2Uo
KSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTI0MDYsNyArMjQwNiw3IEBAIFRF
U1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdoZW5FeGNs
dXNpb25Jc1Zpb2xhdGVkKQogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25D
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVz
aW9uUnVsZXM6QFsKLSAgICAgICAgW1tbX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUg
YWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJlbSJdIGF1dG9yZWxl
YXNlXSwKKyAgICAgICAgYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxl
IGFsbG9jXSBpbml0RXhjbHVzaW9uOihCT09MKVlFUyBmb3JFbGVtZW50OkAiZW0iXSkuYXV0b3Jl
bGVhc2UoKSwKICAgICBdXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKQEAgLTI0NTEsNyArMjQ1MSw3
IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdo
ZW5FeGNsdWRlZENvbnRlbnRBcHBlYXJzTW9yCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlw
dWxhdGlvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1h
bmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlv
biBzZXRFeGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpAImVt
Il0gYXV0b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkV4
Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6QCJl
bSJdKS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZhbHNlOwpAQCAtMjQ5
Niw3ICsyNDk2LDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25QcmVzZXJ2ZXNFeGNsdWRlZENvbnRlbnQpCiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1h
bmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJh
dGlvbiBzZXRFeGNsdXNpb25SdWxlczpAWwotICAgICAgICBbW1tfV0tUZXh0TWFuaXB1bGF0aW9u
RXhjbHVzaW9uUnVsZSBhbGxvY10gaW5pdEV4Y2x1c2lvbjooQk9PTClZRVMgZm9yRWxlbWVudDpA
ImVtIl0gYXV0b3JlbGVhc2VdLAorICAgICAgICBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUgYWxsb2NdIGluaXRFeGNsdXNpb246KEJPT0wpWUVTIGZvckVsZW1lbnQ6
QCJlbSJdKS5hdXRvcmVsZWFzZSgpLAogICAgIF1dOwogCiAgICAgZG9uZSA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1t
CmluZGV4IDBlYjQ1OWYzMWU0M2RlOTc4YmM2YmQ2YzkxYWNmMWE3MDYxNmU4Y2QuLjU2ZWQ2Njlm
M2RiZGRhNGVkMWI5YmZjZDZmYTMwMjNjYzIxNGMyOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0KQEAgLTY2LDcgKzY2LDcg
QEAgQGVuZAogCiBURVNUKFdlYktpdCwgV0tXZWJWaWV3SXNQbGF5aW5nQXVkaW8pCiB7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpbW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV0pOwogICAgIGF1dG8gb2JzZXJ2
ZXIgPSBhZG9wdE5TKFtbQXVkaW9PYnNlcnZlciBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3
IGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfaXNQbGF5aW5nQXVkaW8i
IG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25PbGQgY29udGV4dDpuaWxdOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAImZpbGUtd2l0aC12aWRlbyJdOwpAQCAtMjI0LDcgKzIyNCw3IEBAIC0g
KHZvaWQpX3Nob3dXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVU
YXNrPil1cmxTY2hlbWVUYXNrCiB7CiAgICAgTlNTdHJpbmcgKmRhdGEgPSBAIjxzY3JpcHQ+d2lu
ZG93Lm9wZW4oJ290aGVyLmh0bWwnKTs8L3NjcmlwdD4iOwotICAgIFt1cmxTY2hlbWVUYXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxT
Y2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07
CisgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbdXJsU2NoZW1lVGFzayBkaWRS
ZWNlaXZlRGF0YTpbZGF0YSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11d
OwogICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZpbmlzaF07CiB9CkBAIC0yOTgsNyArMjk4LDcgQEAg
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzZXRSZXNpemFibGU6KEJPT0wp
aXNSZXNpemFibGUKIAogLSAobnVsbGFibGUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVy
ZXMgKil3aW5kb3dGZWF0dXJlcwogewotICAgIGNyZWF0ZWRXZWJWaWV3ID0gW1tbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBjcmVhdGVkV2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFtj
cmVhdGVkV2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogICAgIHJldHVybiBjcmVhdGVkV2Vi
Vmlldy5nZXQoKTsKIH0KQEAgLTUxMywxMSArNTEzLDExIEBAIFRFU1QoV2ViS2l0LCBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKQogewogICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0Pk5vdGlm
aWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbihmdW5jdGlvbihwKXthbGVydCgncGVybWlzc2lvbiAn
K3ApfSk8L3NjcmlwdD4iOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOltbW05vdGlmaWNhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEFsbG93Tm90aWZpY2F0aW9uczpZRVNdIGF1dG9yZWxl
YXNlXV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTphZG9wdE5TKFtbTm90aWZpY2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQWxsb3dOb3RpZmljYXRpb25zOllFU10pLmF1dG9yZWxl
YXNlKCldOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpbW1tOb3RpZmljYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhBbGxvd05v
dGlmaWNhdGlvbnM6Tk9dIGF1dG9yZWxlYXNlXV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTphZG9wdE5TKFtbTm90aWZpY2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQWxsb3dOb3Rp
ZmljYXRpb25zOk5PXSkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6aHRtbCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNv
bSJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQpAQCAtNTc2LDcg
KzU3Niw3IEBAIEBlbmQKIAogVEVTVChXZWJLaXQsIFRvb2xiYXJWaXNpYmxlKQogewotICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246W1tbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjphZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCldKTsKICAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1Rvb2xiYXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxzY3JpcHQ+YWxlcnQoJ3Zpc2libGU6JyArIHdpbmRvdy50b29s
YmFyLnZpc2libGUpO2FsZXJ0KCd2aXNpYmxlOicgKyB3aW5kb3cudG9vbGJhci52aXNpYmxlKTwv
c2NyaXB0PiJdOwpAQCAtNjA0LDcgKzYwNCw3IEBAIFRFU1QoV2ViS2l0LCBNb3VzZU1vdmVPdmVy
RWxlbWVudCkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uIl07CiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgW3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTpbW1tNb3VzZU1vdmVPdmVyRWxlbWVudERlbGVnYXRlIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6YWRvcHRO
UyhbW01vdXNlTW92ZU92ZXJFbGVtZW50RGVsZWdhdGUgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFz
ZSgpXTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBocmVm
PSdodHRwOi8vZXhhbXBsZS5jb20vcGF0aCcgdGl0bGU9J2xpbmsgdGl0bGUnPmxpbmsgbGFiZWw8
L2E+Il07CiAgICAgW3dlYlZpZXcgbW91c2VNb3ZlVG9Qb2ludDpOU01ha2VQb2ludCgyMCwgNjAw
IC0gMjApIHdpdGhGbGFnczpOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnRdOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4
IDg0M2MxMTAzMDM5NTkzNmU0OGI4MTJlOTA3ZGM1M2Y0OTEyMDJiYmEuLmJiMDI0MzFiOTJlYTkx
ZGZiMjc5MDM3NDJiZWJlNDA1NDZiYzNhMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
CkBAIC0yMzgsNyArMjM4LDcgQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdG
b3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWwKIAogICAgIFJldGFp
blB0cjxTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY3JpcHRNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uQ29weSA9IGFkb3B0TlMoW2NvbmZpZ3VyYXRpb24gY29weV0p
OwotICAgIFtjb25maWd1cmF0aW9uQ29weSBzZXRVc2VyQ29udGVudENvbnRyb2xsZXI6W1tbV0tV
c2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgW2Nv
bmZpZ3VyYXRpb25Db3B5IHNldFVzZXJDb250ZW50Q29udHJvbGxlcjphZG9wdE5TKFtbV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKICAgICBbW2Nv
bmZpZ3VyYXRpb25Db3B5IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CiAgICAgW1tjb25m
aWd1cmF0aW9uQ29weSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAImhhbmRsZXJUb1Bvc3QiXTsKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25Db3B5LmdldCgpXSk7CkBAIC0yNTYsNyArMjU2LDcgQEAgVEVTVChXS1VzZXJDb250ZW50Q29u
dHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsKQogCiAg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0
cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0
b3JlbGVhc2VdXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDphZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKS5hdXRvcmVsZWFzZSgpXTsKIAogICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhh
bmRsZXJSZW1vdmFsVGVzdChjb25maWd1cmF0aW9uLmdldCgpKTsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3MiA9IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxl
SGFuZGxlclJlbW92YWxUZXN0KGNvbmZpZ3VyYXRpb24uZ2V0KCkpOwpAQCAtMzkwLDcgKzM5MCw3
IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFkZFVzZXJTdHlsZVNoZWV0QmVmb3Jl
Q3JlYXRpbmdWaWV3KQogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgTm9uQ2Fub25pY2Fs
aXplZFVSTCkKIHsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50V29ybGQ+IHdvcmxkID0gW1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKLSAgICBSZXRhaW5QdHI8X1dL
VXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQg
YWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3Om5pbCBm
b3JNYWluRnJhbWVPbmx5Ok5PIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBleGNsdWRl
TWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gYmFzZVVSTDpbW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6QCJodHRwOi8vQ2FtZWxDYXNlLyJdIGF1dG9yZWxlYXNlXSBsZXZlbDpfV0tVc2VyU3R5
bGVVc2VyTGV2ZWwgY29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7CisgICAgUmV0YWluUHRyPF9X
S1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0
IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzpuaWwg
Zm9yTWFpbkZyYW1lT25seTpOTyBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gZXhjbHVk
ZU1hdGNoUGF0dGVyblN0cmluZ3M6QFtdIGJhc2VVUkw6YWRvcHROUyhbW05TVVJMIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAImh0dHA6Ly9DYW1lbENhc2UvIl0pLmdldCgpIGxldmVsOl9XS1VzZXJT
dHlsZVVzZXJMZXZlbCBjb250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsKIH0KIAogVEVTVChXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNyZWF0aW5nVmlldykK
QEAgLTg5Miw2NSArODkyLDY1IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseSkKIAogVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwg
VXNlclNjcmlwdE5vdGlmaWNhdGlvbikKIHsKLSAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90
aWZpY2F0aW9uID0gW1tbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVy
dCgnd2FpdGVkIGZvciBub3RpZmljYXRpb24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGluY2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpAW10gYXNz
b2NpYXRlZFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vc2NyaXB0Il0gY29udGVu
dFdvcmxkOltXS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRdIGRlZmVyUnVubmluZ1Vu
dGlsTm90aWZpY2F0aW9uOllFU10gYXV0b3JlbGVhc2VdOwotICAgIFdLVXNlclNjcmlwdCAqZG9j
dW1lbnRFbmQgPSBbW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOkAiYWxlcnQo
J2RvY3VtZW50IHBhcnNpbmcgZW5kZWQnKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10gYXV0b3JlbGVhc2Vd
OwotCi0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzEgPSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07Ci0gICAgRVhQRUNUX1RSVUUod2ViVmlldzEuX2RlZmVycmFibGVVc2VyU2Ny
aXB0c05lZWROb3RpZmljYXRpb24pOwotICAgIFt3ZWJWaWV3MS5jb25maWd1cmF0aW9uLnVzZXJD
b250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OndhaXRzRm9yTm90aWZpY2F0aW9uXTsKLSAg
ICBbd2ViVmlldzEuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDpkb2N1bWVudEVuZF07Ci0gICAgVGVzdFVJRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tUZXN0
VUlEZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3MS5VSURlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgYXV0byB3YWl0c0Zvck5vdGlmaWNhdGlvbiA9IGFkb3B0TlMoW1tXS1Vz
ZXJTY3JpcHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlm
aWNhdGlvbicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3Vt
ZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6
QFtdIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOkBbXSBhc3NvY2lhdGVkVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAidGVzdDovLy9zY3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdv
cmxkIGRlZmF1bHRDbGllbnRXb3JsZF0gZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246WUVT
XSk7CisgICAgYXV0byBkb2N1bWVudEVuZCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2Nd
IGluaXRXaXRoU291cmNlOkAiYWxlcnQoJ2RvY3VtZW50IHBhcnNpbmcgZW5kZWQnKSIgaW5qZWN0
aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJh
bWVPbmx5OllFU10pOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZp
ZXcgbmV3XSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcxIF9kZWZlcnJhYmxlVXNlclNjcmlw
dHNOZWVkTm90aWZpY2F0aW9uXSk7CisgICAgW1t3ZWJWaWV3MSBjb25maWd1cmF0aW9uXS51c2Vy
Q29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbi5nZXQo
KV07CisgICAgW1t3ZWJWaWV3MSBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIg
YWRkVXNlclNjcmlwdDpkb2N1bWVudEVuZC5nZXQoKV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3MSBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldzEgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1
bWVudCBwYXJzaW5nIGVuZGVkIik7Ci0gICAgRVhQRUNUX1RSVUUod2ViVmlldzEuX2RlZmVycmFi
bGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
MSBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOwogICAgIFt3ZWJWaWV3
MSBfbm90aWZ5VXNlclNjcmlwdHNdOwotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3MS5fZGVmZXJy
YWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3MSBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbl0pOwogICAgIEVYUEVD
VF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0
aW9uIik7CiAKICAgICBbd2ViVmlldzEgX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3Rh
dGVdOwogICAgIFt3ZWJWaWV3MSByZWxvYWRdOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxl
Z2F0ZSB3YWl0Rm9yQWxlcnRdLCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOwotICAgIEVYUEVD
VF9UUlVFKHdlYlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3Rp
ZmljYXRpb25dKTsKICAgICBbd2ViVmlldzEgX25vdGlmeVVzZXJTY3JpcHRzXTsKLSAgICBFWFBF
Q1RfRkFMU0Uod2ViVmlldzEuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24p
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWRO
b3RpZmljYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVy
dF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogCiAgICAgW3dlYlZpZXcxIHJlbG9hZF07
CiAKLSAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldzEuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWRO
b3RpZmljYXRpb24pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldzEgX2RlZmVycmFibGVVc2Vy
U2NyaXB0c05lZWROb3RpZmljYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRl
IHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVDVF9X
S19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQi
KTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgRVhQRUNUX1RSVUUoY29u
ZmlndXJhdGlvbi5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uKTsKLSAgICBjb25maWd1cmF0aW9uLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNTaG91bGRXYWl0
VW50aWxOb3RpZmljYXRpb24gPSBOTzsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MiA9IFtb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgRVhQ
RUNUX0ZBTFNFKHdlYlZpZXcyLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9u
KTsKLSAgICBbd2ViVmlldzIuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRk
VXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07Ci0gICAgW3dlYlZpZXcyLmNvbmZpZ3Vy
YXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOwot
ICAgIHdlYlZpZXcyLlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIEVYUEVDVF9U
UlVFKFtjb25maWd1cmF0aW9uIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxO
b3RpZmljYXRpb25dKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9kZWZlcnJhYmxlVXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBOTzsKKyAgICBhdXRvIHdlYlZpZXcy
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3MiBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlm
aWNhdGlvbl0pOworICAgIFtbd2ViVmlldzIgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb24uZ2V0KCldOworICAgIFtb
d2ViVmlldzIgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3Jp
cHQ6ZG9jdW1lbnRFbmQuZ2V0KCldOworICAgIFt3ZWJWaWV3MiBzZXRVSURlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKICAgICBbd2ViVmlldzIgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9y
IG5vdGlmaWNhdGlvbiIpOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFs
ZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKIAotICAgIFRlc3RXS1dlYlZpZXcgKndl
YlZpZXczID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIEVYUEVDVF9U
UlVFKHdlYlZpZXczLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9uKTsKLSAg
ICBbd2ViVmlldzMuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07Ci0gICAgW3dlYlZpZXczLmNvbmZpZ3VyYXRpb24u
dXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOwotICAgIHdl
YlZpZXczLlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBhdXRvIHdlYlZpZXczID0gYWRvcHRO
UyhbVGVzdFdLV2ViVmlldyBuZXddKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldzMgX2RlZmVy
cmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb25dKTsKKyAgICBbW3dlYlZpZXczIGNvbmZp
Z3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OndhaXRzRm9yTm90
aWZpY2F0aW9uLmdldCgpXTsKKyAgICBbW3dlYlZpZXczIGNvbmZpZ3VyYXRpb25dLnVzZXJDb250
ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kLmdldCgpXTsKKyAgICBbd2Vi
VmlldzMgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXczIGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgW3dlYlZpZXczIF9ub3RpZnlVc2VyU2NyaXB0
c107Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXczLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVk
Tm90aWZpY2F0aW9uKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXczIF9kZWZlcnJhYmxlVXNl
clNjcmlwdHNOZWVkTm90aWZpY2F0aW9uXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0
ZSB3YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVk
Iik7CiAKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3NCA9IFtbVGVzdFdLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3NC5fZGVmZXJyYWJsZVVzZXJT
Y3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7Ci0gICAgW3dlYlZpZXc0LmNvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb25dOwot
ICAgIFt3ZWJWaWV3NC5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2Vy
U2NyaXB0OmRvY3VtZW50RW5kXTsKLSAgICB3ZWJWaWV3NC5VSURlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgYXV0byB3ZWJWaWV3NCA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXc0IF9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0
aW9uXSk7CisgICAgW1t3ZWJWaWV3NCBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xs
ZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbi5nZXQoKV07CisgICAgW1t3ZWJW
aWV3NCBjb25maWd1cmF0aW9uXS51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDpk
b2N1bWVudEVuZC5nZXQoKV07CisgICAgW3dlYlZpZXc0IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogICAgIFt3ZWJWaWV3NCBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZS1pZnJhbWUi
XTsKICAgICBbd2ViVmlldzQgX25vdGlmeVVzZXJTY3JpcHRzXTsKIApAQCAtOTg2LDcgKzk4Niw3
IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAiSW52YWxpZCBy
ZXBseSJdKSB7Ci0gICAgICAgICAgICByZXBseUhhbmRsZXIoW1tbTlNEYXRhIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICByZXBseUhhbmRsZXIoYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdF0pLmdldCgpLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tCmluZGV4IDM4NGUzMTI0MjZkZWE3MzEz
ZGMxYzQwMWQ5MjllZWJiM2M4NjkwN2EuLjc5NTgyNjU2MTMxYzcxYjBhYjE4NjVmYTNjYTJjNWE5
NGNkNTZhNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVXNlckNvbnRlbnRXb3JsZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW0KQEAgLTE3Miw3ICsxNzIsNyBAQCBURVNUKFVz
ZXJDb250ZW50V29ybGQsIElzb2xhdGVkV29ybGRQbHVnSW4pCiAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEodGFzay5yZXF1ZXN0LlVSTC5wYXRoLCAiL2lmcmFtZXNyYyIpOwogICAgICAgICAg
ICAgYm9keSA9IEAiaWZyYW1lIGNvbnRlbnQiOwogICAgICAgICB9Ci0gICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
Ym9keS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOmJvZHkubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCld
OwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbYm9keSBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgIH07
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCAzYjNmNmRlZDFhODQ4OWFhYWY5ZGIwNWMxNDczNjM2
MTM4YmQzYTAxLi42NjZjN2VkYTUzNzEwMTBmMjJiNTJhNzcyZTAxZTM5ZTA5ZTBmMDg0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KQEAgLTU2Miw5ICs1NjIsOSBAQCB2b2lkIHBsYXRmb3JtQ29weVJp
Y2hUZXh0V2l0aEltYWdlKCkKICAgICBhdXRvIHJpY2hUZXh0ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRGF0YTp0ZXN0SW1hZ2VEYXRhKCkg
b2ZUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsKIAotICAgIFtyaWNoVGV4
dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6QCJMb3JlbSBpcHN1bSAiXSBhdXRvcmVsZWFzZV1dOworICAgIFtyaWNoVGV4
dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiTG9yZW0gaXBzdW0gIl0pLmdldCgpXTsKICAgICBbcmljaFRl
eHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbTlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRT
dHJpbmdXaXRoQXR0YWNobWVudDppbWFnZS5nZXQoKV1dOwotICAgIFtyaWNoVGV4dCBhcHBlbmRB
dHRyaWJ1dGVkU3RyaW5nOltbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJp
bmc6QCIgZG9sb3Igc2l0IGFtZXQuIl0gYXV0b3JlbGVhc2VdXTsKKyAgICBbcmljaFRleHQgYXBw
ZW5kQXR0cmlidXRlZFN0cmluZzphZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAIiBkb2xvciBzaXQgYW1ldC4iXSkuZ2V0KCldOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHR5cGVkZWYgVUlJbWFnZSBQbGF0
Zm9ybUltYWdlOwogUGxhdGZvcm1JbWFnZSAqcGxhdGZvcm1JbWFnZVdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpkYXRhXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQog
ICAgIHJldHVybiBbVUlJbWFnZSBpbWFnZVdpdGhEYXRhOmRhdGFdOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29r
aWVTdG9yZS5tbQppbmRleCAwZjgwN2I4ZmEwMjVkMjE2YzNkNTJlOWIxYmQyNzk5OTBiNDQxMzI4
Li44N2E4NTA0MzJkNGJmZDVmMGU1ODU2ZjQ0MDdmZDAxZWEyN2JlZDQzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0KQEAgLTYxMSw3ICs2MTEsNyBAQCBAZW5kCiAKIFRFU1QoV2ViS2l0LCBXS0hUVFBD
b29raWVTdG9yZU11bHRpcGxlVmlld3MpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzEg
PSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3MSA9
IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CiAgICAgW3dlYlZpZXcxIHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IG5ldHdvcmsgcHJvY2VzcyJdOwogCiAgICAgTlNIVFRQ
Q29va2llICpzZXNzaW9uQ29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGll
czpAewpAQCAtNjIyLDcgKzYyMiw3IEBAIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZU11
bHRpcGxlVmlld3MpCiAgICAgfV07CiAKICAgICBfX2Jsb2NrIGJvb2wgc2V0Q29va2llRG9uZSA9
IGZhbHNlOwotICAgIFt3ZWJWaWV3MS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuaHR0
cENvb2tpZVN0b3JlIHNldENvb2tpZTpzZXNzaW9uQ29va2llIGNvbXBsZXRpb25IYW5kbGVyOl57
CisgICAgW1t3ZWJWaWV3MSBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlLmh0dHBDb29r
aWVTdG9yZSBzZXRDb29raWU6c2Vzc2lvbkNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjpeewogICAg
ICAgICBzZXRDb29raWVEb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnNldENvb2tpZURvbmUpOwpAQCAtNjMzLDcgKzYzMyw3IEBAIFRFU1QoV2ViS2l0
LCBXS0hUVFBDb29raWVTdG9yZU11bHRpcGxlVmlld3MpCiAgICAgW3dlYlZpZXcxIGxvYWRIVE1M
U3RyaW5nOltkZWxlZ2F0ZSBhbGVydENvb2tpZUhUTUxdIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vMTI3LjAuMC4xIl1dOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdh
dGUgd2FpdEZvck1lc3NhZ2VdLCAiU2Vzc2lvbkNvb2tpZU5hbWU9Q29va2llVmFsdWUiKTsKIAot
ICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10p
OwogICAgIFt3ZWJWaWV3MiBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2Vi
VmlldzIgbG9hZEhUTUxTdHJpbmc6W2RlbGVnYXRlIGFsZXJ0Q29va2llSFRNTF0gYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly8xMjcuMC4wLjEiXV07CiAgICAgRVhQRUNUX1dL
X1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yTWVzc2FnZV0sICJTZXNzaW9uQ29va2llTmFtZT1Db29r
aWVWYWx1ZSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCmluZGV4IGEzNmRiMjE4OTNhMTFlY2U1
YjQxNjBkYjM0ZmMzNzA0YWUxYjU2NDcuLjVhMDQ2NDJlZmE0MjI0YzNiMjE3ZjBhMjEyNDgxZTBm
NGUwMDdjZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTEyNSw5ICsxMjUsOSBAQCAt
IChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29uZmlndXJhdGlvbkZvckxvYwogICAgIFtpbnNwZWN0b3Igc2V0RGVsZWdhdGU6c2hhcmVk
SW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc2hhcmVkVVJMU2NoZW1lSGFuZGxlciA9
IFtbU2ltcGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF07Ci0gICAgUmV0YWluUHRyPF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24+IGluc3BlY3RvckNvbmZpZ3VyYXRpb24gPSBbW19XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOworICAgIGF1dG8gaW5zcGVjdG9yQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
aGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKLSAg
ICByZXR1cm4gW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBpbnNwZWN0b3JDb25maWd1cmF0aW9uLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0lu
c3BlY3RvciAqKWluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLUERGVmlldy5tbQppbmRleCA3MGZjZDdhZWIwODEyNTdlNDZhYWI5MmFkMThm
ZTIxOTYzZmFhMGFmLi5lMWJlNDIwZjkzNmNiNGM5MDhiNGE5ZTNiNzYwMGFhYThhNDI2ZjU4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmll
dy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmll
dy5tbQpAQCAtMTYxLDE4ICsxNjEsMTggQEAgc3RhdGljIHZvaWQgY2hlY2tGcmFtZShOU1JlY3Qg
ZnJhbWUsIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBDR0Zsb2F0IHdpZHRoLCBDR0Zsb2EKIAogVEVT
VChQREZIVUQsIE1haW5SZXNvdXJjZVBERikKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3
ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOltbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1
dG9yZWxlYXNlXV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246YWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKS5h
dXRvcmVsZWFzZSgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZERhdGE6cGRmRGF0YSgpIE1JTUVUeXBl
OkAiYXBwbGljYXRpb24vcGRmIiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6QCIiIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vdGVzdFBhdGgiXV07Ci0g
ICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDB1KTsKKyAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAwdSk7CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb25dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZIVURzLmNv
dW50LCAxdSk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJWaWV3Ll9wZGZIVURzLmFueU9iamVjdC5mcmFt
ZSwgMCwgMCwgODAwLCA2MDApOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291
bnQsIDF1KTsKKyAgICBjaGVja0ZyYW1lKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJh
bWUsIDAsIDAsIDgwMCwgNjAwKTsKICAgICAKLSAgICBUZXN0VUlEZWxlZ2F0ZSAqZGVsZWdhdGUg
PSBbW1Rlc3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcuVUlEZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxl
Z2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
ICAgICBfX2Jsb2NrIGJvb2wgc2F2ZVJlcXVlc3RSZWNlaXZlZCA9IGZhbHNlOwotICAgIGRlbGVn
YXRlLnNhdmVEYXRhVG9GaWxlID0gXihXS1dlYlZpZXcgKndlYlZpZXdGcm9tRGVsZWdhdGUsIE5T
RGF0YSAqZGF0YSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCBOU1N0cmluZyAqbWltZVR5
cGUsIE5TVVJMICpvcmlnaW5hdGluZ1VSTCkgewotICAgICAgICBFWFBFQ1RfRVEod2ViVmlldywg
d2ViVmlld0Zyb21EZWxlZ2F0ZSk7CisgICAgZGVsZWdhdGUuZ2V0KCkuc2F2ZURhdGFUb0ZpbGUg
PSBeKFdLV2ViVmlldyAqd2ViVmlld0Zyb21EZWxlZ2F0ZSwgTlNEYXRhICpkYXRhLCBOU1N0cmlu
ZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIE5TU3RyaW5nICptaW1lVHlwZSwgTlNVUkwgKm9yaWdpbmF0
aW5nVVJMKSB7CisgICAgICAgIEVYUEVDVF9FUSh3ZWJWaWV3LmdldCgpLCB3ZWJWaWV3RnJvbURl
bGVnYXRlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2RhdGEgaXNFcXVhbFRvRGF0YTpwZGZEYXRh
KCldKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAidGVzdFBh
dGgucGRmIik7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShtaW1lVHlwZSwgImFwcGxpY2F0aW9u
L3BkZiIpOwpAQCAtMTgxLDkgKzE4MSw5IEBAIFRFU1QoUERGSFVELCBNYWluUmVzb3VyY2VQREYp
CiAgICAgW1t3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QgcGVyZm9ybVNlbGVjdG9yOk5TU2Vs
ZWN0b3JGcm9tU3RyaW5nKEAiX3BlcmZvcm1BY3Rpb25Gb3JDb250cm9sOiIpIHdpdGhPYmplY3Q6
QCJhcnJvdy5kb3duLmNpcmNsZSJdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2F2
ZVJlcXVlc3RSZWNlaXZlZCk7CiAKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3Vu
dCwgMXUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291bnQsIDF1KTsKICAg
ICBbd2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzXTsKLSAgICB3aGlsZSAod2ViVmlldy5f
cGRmSFVEcy5jb3VudCkKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50KQogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogfQogCkBAIC0xOTEsMTYz
ICsxOTEsMTYzIEBAIFRFU1QoUERGSFVELCBNYWluUmVzb3VyY2VQREYpCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwCiBURVNUKFBE
RkhVRCwgTW92ZUlGcmFtZSkKIHsKLSAgICBUZXN0VVJMU2NoZW1lSGFuZGxlciAqaGFuZGxlciA9
IFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgaGFuZGxlci5z
dGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVU
YXNrPiB0YXNrKSB7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhh
bmRsZXIgbmV3XSk7CisgICAgaGFuZGxlci5nZXQoKS5zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVy
ID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlm
IChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkg
ewotICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVh
c2VdOworICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAg
ICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8YnIvPjxpZnJhbWUgc3JjPSd0ZXN0LnBkZicgaWQ9
J3BkZmZyYW1lJz48L2lmcmFtZT4iOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOnJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6aHRtbCBsZW5ndGg6c3RybGVuKGh0bWwpXV07CiAgICAgICAgICAgICBbdGFz
ayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHRhc2sucmVxdWVzdC5VUkwucGF0aCwgIi90ZXN0LnBkZiIpOwogICAgICAgICAgICAgTlNE
YXRhICpkYXRhID0gcGRmRGF0YSgpOwotICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5s
ZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07CisgICAgICAgICAgICBhdXRvIHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVx
dWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlciBmb3JVUkxTY2hlbWU6QCJ0ZXN0
Il07Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL21haW4uaHRtbCJdXV07
Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDB1KTsKKyAgICBFWFBFQ1Rf
RVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAwdSk7CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgLy8gSWYgdGhlIFRlc3RXS1dlYlZpZXcg
aXMgbm90IHZpc2libGUsIHZpc2liaWxpdHlEaWRDaGFuZ2Ugd2lsbCBiZSBjYWxsZWQgd2l0aCBm
YWxzZSwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gSFVELgotICAgIGlmICghd2ViVmlldy5fcGRmSFVE
cy5jb3VudCkKKyAgICBpZiAoIVt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBj
aGVja0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDMwMCwg
MTUwKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAg
Y2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDMw
MCwgMTUwKTsKIAogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInBkZmZyYW1lLndp
ZHRoPTQwMCIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICB3aGlsZSAod2ViVmlldy5fcGRm
SFVEcy5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0MDApCisgICAgd2hpbGUgKFt3ZWJW
aWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA0MDApCiAgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Ci0gICAgY2hlY2tGcmFtZSh3ZWJW
aWV3Ll9wZGZIVURzLmFueU9iamVjdC5mcmFtZSwgMTAsIDI4LCA0MDAsIDE1MCk7CisgICAgY2hl
Y2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAxMCwgMjgsIDQwMCwg
MTUwKTsKIAogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInZhciBmcmFtZVJlZmVy
ZW5jZSA9IHBkZmZyYW1lOyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBkZmZyYW1lKSIgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICB3aGlsZSAod2ViVmlldy5fcGRmSFVEcy5jb3VudCkK
KyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50KQogICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpAImRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWVSZWZlcmVuY2UpIiBjb21wbGV0aW9u
SGFuZGxlcjpuaWxdOwotICAgIHdoaWxlICghd2ViVmlldy5fcGRmSFVEcy5jb3VudCkKKyAgICB3
aGlsZSAoIVt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3Vu
dCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUs
IDAsIDAsIDAsIDApOwotICAgIHdoaWxlICh3ZWJWaWV3Ll9wZGZIVURzLmFueU9iamVjdC5mcmFt
ZS5zaXplLndpZHRoICE9IDQwMCkKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNv
dW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZy
YW1lLCAwLCAwLCAwLCAwKTsKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhVRHNdLmFueU9iamVj
dC5mcmFtZS5zaXplLndpZHRoICE9IDQwMCkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMXUp
OwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUsIDEwLCAy
OCwgNDAwLCAxNTApOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291bnQsIDF1
KTsKKyAgICBjaGVja0ZyYW1lKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmplY3QuZnJhbWUsIDEw
LCAyOCwgNDAwLCAxNTApOwogCi0gICAgd2ViVmlldy5wYWdlWm9vbSA9IDEuNDsKLSAgICB3aGls
ZSAod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUuc2l6ZS53aWR0aCAhPSA1NjApCisg
ICAgW3dlYlZpZXcgc2V0UGFnZVpvb206MS40XTsKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3BkZkhV
RHNdLmFueU9iamVjdC5mcmFtZS5zaXplLndpZHRoICE9IDU2MCkKICAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVE
cy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3Qu
ZnJhbWUsIDE0LCA0MCwgNTYwLCAyMTApOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVE
c10uY291bnQsIDF1KTsKKyAgICBjaGVja0ZyYW1lKFt3ZWJWaWV3IF9wZGZIVURzXS5hbnlPYmpl
Y3QuZnJhbWUsIDE0LCA0MCwgNTYwLCAyMTApOwogfQogI2VuZGlmCiAKIFRFU1QoUERGSFVELCBO
ZXN0ZWRJRnJhbWVzKQogewotICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0gW1tU
ZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBoYW5kbGVyLnN0YXJ0
VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+
IHRhc2spIHsKLSAgICAgICAgTlNVUkxSZXNwb25zZSAqaHRtbFJlc3BvbnNlID0gW1tbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFu
ZGxlciBuZXddKTsKKyAgICBoYW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIg
PSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0
byBodG1sUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVl
c3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CiAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBodG1sID0gIjxpZnJhbWUgc3JjPSdmcmFtZS5odG1sJyBpZD0ncGFyZW50
ZnJhbWUnPjwvaWZyYW1lPiI7Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
aHRtbFJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpodG1s
UmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwogICAgICAgICAgICAg
W3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5w
YXRoIGlzRXF1YWxUb1N0cmluZzpAIi9mcmFtZS5odG1sIl0pIHsKICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGh0bWwgPSAiPGlmcmFtZSBzcmM9J3Rlc3QucGRmJz48L2lmcmFtZT4iOwotICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmh0bWxSZXNwb25zZV07CisgICAgICAgICAg
ICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6aHRtbFJlc3BvbnNlLmdldCgpXTsKICAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpodG1sIGxlbmd0
aDpzdHJsZW4oaHRtbCldXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEodGFzay5yZXF1ZXN0LlVSTC5w
YXRoLCAiL3Rlc3QucGRmIik7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBwZGZEYXRhKCk7
Ci0gICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJhcHBsaWNhdGlv
bi9wZGYiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OnJlc3BvbnNlXTsKKyAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFw
cGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSk7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAg
ICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfTsKIAotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAgICBUZXN0V0tXZWJWaWV3
ICp3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly8vbWFpbi5odG1sIl1dXTsKLSAgICBFWFBFQ1RfRVEod2ViVmll
dy5fcGRmSFVEcy5jb3VudCwgMHUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10u
Y291bnQsIDB1KTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX3BkZkhVRHMuY291bnQsIDF1KTsKLSAgICBjaGVj
a0ZyYW1lKHdlYlZpZXcuX3BkZkhVRHMuYW55T2JqZWN0LmZyYW1lLCAyMCwgMjAsIDMwMCwgMTUw
KTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hl
Y2tGcmFtZShbd2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAyMCwgMjAsIDMwMCwg
MTUwKTsKICAgICAKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKHBhcmVudGZyYW1lKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAg
ICB3aGlsZSAod2ViVmlldy5fcGRmSFVEcy5jb3VudCkKKyAgICB3aGlsZSAoW3dlYlZpZXcgX3Bk
ZkhVRHNdLmNvdW50KQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgp
OwogfQogCiBURVNUKFBERkhVRCwgSUZyYW1lM0RUcmFuc2Zvcm0pCiB7Ci0gICAgVGVzdFVSTFNj
aGVtZUhhbmRsZXIgKmhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3Jl
bGVhc2VdOwotICAgIGhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJW
aWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewotICAgICAgICBOU1VSTFJlc3BvbnNl
ICpodG1sUmVzcG9uc2UgPSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIGhhbmRsZXIuZ2V0KCku
c3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgeworICAgICAgICBhdXRvIGh0bWxSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0p
OwogICAgICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIv
bWFpbi5odG1sIl0pIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGh0bWwgPSAiPGlmcmFtZSBz
cmM9J3Rlc3QucGRmJyBoZWlnaHQ9NTAwIHdpZHRoPTUwMCBzdHlsZT0ndHJhbnNmb3JtOnJvdGF0
ZVkoMjM1ZGVnKTsnPjwvaWZyYW1lPiI7Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6aHRtbFJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpodG1sUmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwogICAgICAg
ICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLnBhdGgsICIvdGVzdC5wZGYiKTsKICAgICAg
ICAgICAgIE5TRGF0YSAqZGF0YSA9IHBkZkRhdGEoKTsKLSAgICAgICAgICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5y
ZXF1ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOworICAgICAgICAgICAg
YXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CiAgICAgICAgICAg
ICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlz
aF07CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIgZm9yVVJMU2No
ZW1lOkAidGVzdCJdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
InRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9tYWlu
Lmh0bWwiXV1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZIVURzLmNvdW50LCAwdSk7Cisg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMHUpOwogICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLSAgICBFWFBFQ1RfRVEod2ViVmll
dy5fcGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJhbWUod2ViVmlldy5fcGRmSFVEcy5h
bnlPYmplY3QuZnJhbWUsIDQwMywgMTAsIDUwMCwgNTAwKTsKKyAgICBFWFBFQ1RfRVEoW3dlYlZp
ZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShbd2ViVmlldyBfcGRmSFVE
c10uYW55T2JqZWN0LmZyYW1lLCA0MDMsIDEwLCA1MDAsIDUwMCk7CiB9CiAKIFRFU1QoUERGSFVE
LCBNdWx0aXBsZUlGcmFtZXMpCiB7Ci0gICAgVGVzdFVSTFNjaGVtZUhhbmRsZXIgKmhhbmRsZXIg
PSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGhhbmRsZXIu
c3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgewotICAgICAgICBOU1VSTFJlc3BvbnNlICpodG1sUmVzcG9uc2UgPSBbW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBl
OkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hl
bWVIYW5kbGVyIG5ld10pOworICAgIGhhbmRsZXIuZ2V0KCkuc3RhcnRVUkxTY2hlbWVUYXNrSGFu
ZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAg
ICBhdXRvIGh0bWxSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICBpZiAoW3Rhc2su
cmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0pIHsKICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGh0bWwgPSAiPGlmcmFtZSBzcmM9J3Rlc3QucGRmJyBoZWlnaHQ9
MTAwIHdpZHRoPTE1MD48L2lmcmFtZT48aWZyYW1lIHNyYz0ndGVzdC5wZGYnIGhlaWdodD0xMjMg
d2lkdGg9MTM0PjwvaWZyYW1lPiI7Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6aHRtbFJlc3BvbnNlXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpo
dG1sUmVzcG9uc2UuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmh0bWwgbGVuZ3RoOnN0cmxlbihodG1sKV1dOwogICAgICAgICAg
ICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLnBhdGgsICIvdGVzdC5wZGYiKTsKICAgICAgICAg
ICAgIE5TRGF0YSAqZGF0YSA9IHBkZkRhdGEoKTsKLSAgICAgICAgICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1
ZXN0LlVSTCBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV07Ci0gICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2VdOworICAgICAgICAgICAgYXV0
byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CiAgICAgICAgICAgICBb
dGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIgZm9yVVJMU2NoZW1l
OkAidGVzdCJdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRl
c3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9tYWluLmh0
bWwiXV1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZIVURzLmNvdW50LCAwdSk7CisgICAg
RVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwgMHUpOwogICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5f
cGRmSFVEcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbd2ViVmlldyBfcGRmSFVEc10uY291
bnQsIDJ1KTsKICAgICBib29sIGhhZExlZnRGcmFtZSA9IGZhbHNlOwogICAgIGJvb2wgaGFkUmln
aHRGcmFtZSA9IGZhbHNlOwotICAgIGZvciAoTlNWaWV3ICpodWQgaW4gd2ViVmlldy5fcGRmSFVE
cykgeworICAgIGZvciAoTlNWaWV3ICpodWQgaW4gW3dlYlZpZXcgX3BkZkhVRHNdKSB7CiAgICAg
ICAgIGlmIChodWQuZnJhbWUub3JpZ2luLnggPT0gMTApIHsKICAgICAgICAgICAgIGNoZWNrRnJh
bWUoaHVkLmZyYW1lLCAxMCwgMzMsIDE1MCwgMTAwKTsKICAgICAgICAgICAgIGhhZExlZnRGcmFt
ZSA9IHRydWU7CkBAIC0zNjQsMTIgKzM2NCwxMiBAQCBURVNUKFBERkhVRCwgTG9hZFBERlR5cGVX
aXRoUGx1Z2luc0Jsb2NrZWQpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlv
biBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJvYmplY3Qtc3JjICdub25lJyJd
OwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJW
aWV3IGxvYWREYXRhOnBkZkRhdGEoKSBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgY2hhcmFj
dGVyRW5jb2RpbmdOYW1lOkAiIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6
Ly93d3cuYXBwbGUuY29tL3Rlc3RQYXRoIl1dOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9wZGZI
VURzLmNvdW50LCAwdSk7CisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9wZGZIVURzXS5jb3VudCwg
MHUpOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLSAg
ICBFWFBFQ1RfRVEod2ViVmlldy5fcGRmSFVEcy5jb3VudCwgMXUpOwotICAgIGNoZWNrRnJhbWUo
d2ViVmlldy5fcGRmSFVEcy5hbnlPYmplY3QuZnJhbWUsIDAsIDAsIDgwMCwgNjAwKTsKKyAgICBF
WFBFQ1RfRVEoW3dlYlZpZXcgX3BkZkhVRHNdLmNvdW50LCAxdSk7CisgICAgY2hlY2tGcmFtZShb
d2ViVmlldyBfcGRmSFVEc10uYW55T2JqZWN0LmZyYW1lLCAwLCAwLCA4MDAsIDYwMCk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggZDc1ZTViMjQwNjAyZmU4ZGQx
YTAyYjVjY2Q4YTk0MjAzODdlZDBkOS4uNmIwZmE1MTNlZWZlZWE1MTdiNzM1YzIwY2QzZTVmMzU1
MzE3YjYzMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0zODAsMTMgKzM4MCwxMyBA
QCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNr
OihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgICAgICBmb3IgKGF1dG8gY29tbWFuZCA6IGNv
bW1hbmRzKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICAgICAgICAgIGNh
c2UgQ29tbWFuZDo6UmVkaXJlY3Q6Ci0gICAgICAgICAgICAgICAgWyhpZDxXS1VSTFNjaGVtZVRh
c2tQcml2YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246W1tbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdIG5ld1JlcXVlc3Q6W1tbTlNVUkxSZXF1ZXN0IGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVU
YXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOmFkb3B0TlMoW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0XSkuZ2V0KCkgbmV3UmVxdWVzdDphZG9wdE5TKFtbTlNVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0XSkuZ2V0KCldOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDb21tYW5kOjpSZXNwb25zZToKLSAgICAgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
XTsKKyAgICAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdKS5nZXQoKV07CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENvbW1hbmQ6OkRhdGE6Ci0gICAgICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZURhdGE6W1tbTlNEYXRhIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAg
ICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRdKS5nZXQoKV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENvbW1hbmQ6OkZpbmlzaDoKICAgICAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwpAQCAt
NTc0LDEyICs1NzQsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0
YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKIHsKICAgICBpZiAoW3Rh
c2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAic3luY2Vycm9y
Oi8vL21haW4uaHRtbCJdKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBieXRlcyA9ICI8
c2NyaXB0PnZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7eGhyLm9wZW4oJ0dFVCcsJ3N1YnJl
c291cmNlJyxmYWxzZSk7dHJ5e3hoci5zZW5kKG51bGwpO2FsZXJ0KCdubyBlcnJvcicpfWNhdGNo
KGUpe2FsZXJ0KGUpfTwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RybGVuKGJ5dGVzKSB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6c3RybGVuKGJ5dGVzKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ5dGVzIGxlbmd0aDpz
dHJsZW4oYnl0ZXMpXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgRVhQRUNUX1NUUkVRKHRhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRG
OFN0cmluZywgInN5bmNlcnJvcjovLy9zdWJyZXNvdXJjZSIpOwotICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
XTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIFt0YXNrIGRpZEZhaWxX
aXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiVGVzdEVycm9yRG9tYWluIiBjb2Rl
OjEyMyB1c2VySW5mbzpuaWxdXTsKICAgICB9CiB9CkBAIC03OTEsMTggKzc5MSwxOCBAQCBURVNU
KFVSTFNjaGVtZUhhbmRsZXIsIENPUlMpCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVU
YXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAg
ICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4u
aHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbQCI8c2NyaXB0PmZldGNoKCdj
b3JzOi8vaG9zdDIvY29yc3Jlc291cmNlJykudGhlbihmdW5jdGlvbigpe2ZldGNoKCcvY29yc3N1
Y2Nlc3MnKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3JzZmFpbHVyZScpfSk8L3Njcmlw
dD4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07
CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwog
ICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5y
ZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jb3JzcmVzb3VyY2UiXSkgewogICAg
ICAgICAgICAgaWYgKGluY2x1ZGVDT1JTSGVhZGVyRmllbGRJblJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TSFRUUFVSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJz
aW9uOm5pbCBoZWFkZXJGaWVsZHM6QHsKKyAgICAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6YWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVs
ZHM6QHsKICAgICAgICAgICAgICAgICAgICAgQCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4i
OiBAIioiLAogICAgICAgICAgICAgICAgICAgICBAIkNvbnRlbnQtTGVuZ3RoIjogQCIyIiwKICAg
ICAgICAgICAgICAgICAgICAgQCJDb250ZW50LVR5cGUiOkAidGV4dC9odG1sIgotICAgICAgICAg
ICAgICAgIH1dIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICAgICAgfV0pLmF1dG9yZWxlYXNl
KCldOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRF
bmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlRGF0YTpbQCJISSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBp
ZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29yc3N1Y2Nlc3Mi
XSkgewpAQCAtODQzLDcgKzg0Myw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNP
UlMpCiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJdOwogCiAgICAgTlNTdHJpbmcgKnRl
c3RKUyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OgpAQCAtODYxLDcgKzg2MSw3IEBAIFRF
U1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlMpCiAgICAgICAgIGlmIChbdGFzay5yZXF1
ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAgICAg
ICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OgogICAgICAgICAg
ICAgICAgIEAiPHNjcmlwdD4lQDwvc2NyaXB0PiIsIHRlc3RKU10gZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRG
aW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiL2NvcnNzdWNjZXNzIl0pIHsKQEAgLTg3NSw3ICs4NzUsNyBAQCBURVNUKFVS
TFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTKQogICAgIH1dOwogICAgIAogICAgIHsKLSAgICAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
KTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9t
YWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
ICAgIH0KQEAgLTg4Niw4ICs4ODYsOCBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVD
T1JTKQogICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAg
Y29uZmlndXJhdGlvbi5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8qLyoiXTsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IEBbQCIq
Oi8vKi8qIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiY29yczovL2hvc3QxL21h
aW4uaHRtbCJdXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBF
WFBFQ1RfVFJVRShjb3Jzc3VjY2Vzcyk7CkBAIC05MjYsMTMgKzkyNiwxMyBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIERpc2FibGVDT1JTQ3JlZGVudGlhbHMpCiAKICAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKIAotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBb
Y29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAiY29ycyJdOwogCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxl
cjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBp
ZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbi5odG1sIl0p
IHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIjxzY3JpcHQ+ZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6JWQvc3VicmVzb3VyY2UnLCB7Y3Jl
ZGVudGlhbHM6J2luY2x1ZGUnfSkudGhlbihmdW5jdGlvbigpe2ZldGNoKCcvY29yc3N1Y2Nlc3Mn
KX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmV0Y2goJy9jb3JzZmFpbHVyZScpfSk8L3NjcmlwdD4iLCBz
ZXJ2ZXIucG9ydCgpXSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0g
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRv
cmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpkYXRhXTsKICAgICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgICAgIH0gZWxzZSBp
ZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY29yc3N1Y2Nlc3Mi
XSkgewpAQCAtOTQ2LDcgKzk0Niw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNP
UlNDcmVkZW50aWFscykKICAgICB9XTsKICAgICAKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsK
ICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICB9CkBAIC05NTcs
OSArOTU3LDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU0NyZWRlbnRpYWxz
KQogICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgY29u
ZmlndXJhdGlvbi5fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gTk87Cisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkID0gTk87CiAgICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiY29yczovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQpAQCAtOTc5LDE0ICs5NzksMTQgQEAgVEVTVChV
UkxTY2hlbWVIYW5kbGVyLCBEaXNhYmxlQ09SU1NjcmlwdCkKIAogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwogCi0gICAgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJjb3Jz
Il07CiAKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dl
YlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChbdGFzay5y
ZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkgewogICAgICAg
ICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlw
dCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMnIG9uZXJyb3I9
J2ZldGNoKFwibG9hZEZhaWxcIiknIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvc2NyaXB0
PiIsIHNlcnZlci5wb3J0KCldIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltb
W05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAgICAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hd
OwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiL2xvYWRTdWNjZXNzIl0pIHsKQEAgLTEwMDAsNyArMTAwMCw3IEBAIFRFU1QoVVJMU2No
ZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQpCiAgICAgfV07CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjb3JzOi8vaG9zdDEvbWFp
bi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAg
ICB9CkBAIC0xMDExLDkgKzEwMTEsOSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVD
T1JTU2NyaXB0KQogICAgIGxvYWRGYWlsID0gZmFsc2U7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0g
ICAgY29uZmlndXJhdGlvbi5fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gQFtAIio6Ly8qLyoiXTsK
KyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBAW0AiKjov
LyovKiJdOwogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTEwMjksNyArMTAyOSw3IEBAIFRFU1QoVVJM
U2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNDYW52YXMpCiAKICAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKIAotICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY29ycyJd
OwogCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJW
aWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtMTA2NCwxNCArMTA2NCwxNCBA
QCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTQ2FudmFzKQogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICAgICAgaWYgKHJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTptaW1lVHlwZSBleHBlY3RlZENvbnRl
bnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFz
ZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm1p
bWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5n
TmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpyZXNw
b25zZV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9CiAgICAgfV07
CiAKICAgICB7Ci0gICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJjb3JzOi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKICAgICB9CkBAIC0xMDgyLDkgKzEwODIsOSBAQCBURVNUKFVSTFNjaGVt
ZUhhbmRsZXIsIERpc2FibGVDT1JTQ2FudmFzKQogICAgIGNvcnNmYWlsdXJlID0gZmFsc2U7CiAg
ICAgZG9uZSA9IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5fY29yc0Rpc2FibGluZ1BhdHRl
cm5zID0gQFtAIio6Ly8qLyoiXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9jb3JzRGlzYWJs
aW5nUGF0dGVybnMgPSBAW0AiKjovLyovKiJdOwogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImNvcnM6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOwog
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KQEAgLTExMDQs
NyArMTEwNCw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykKIAog
ICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwog
Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJ0ZXN0Il07CiAKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRh
c2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CkBA
IC0xMTE3LDcgKzExMTcsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdv
cmspCiAgICAgICAgICAgICAgICAgICAgICJ3cy5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGZldGNo
KCcvbG9hZEZhaWwnKSB9OyIKICAgICAgICAgICAgICAgICAifSkiCiAgICAgICAgICAgICAgICAg
Ijwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCksIHNlcnZlci5wb3J0KCldIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5n
dGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29u
dGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAg
ICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sg
ZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlz
RXF1YWxUb1N0cmluZzpAIi9sb2FkU3VjY2VzcyJdKSB7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBU
RVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdvcmspCiAgICAgfV07CiAgICAgCiAg
ICAgewotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVz
dDovL2hvc3QxL21haW4uaHRtbCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgfQpAQCAtMTE0Myw5ICsxMTQzLDkgQEAgVEVTVChVUkxTY2hlbWVIYW5k
bGVyLCBMb2Fkc0Zyb21OZXR3b3JrKQogICAgIGxvYWRGYWlsID0gZmFsc2U7CiAgICAgZG9uZSA9
IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5fbG9hZHNGcm9tTmV0d29yayA9IE5POworICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2xvYWRzRnJvbU5ldHdvcmsgPSBOTzsKICAgICB7Ci0gICAg
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEv
bWFpbi5odG1sIl1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
ICAgICB9CkBAIC0xMTYxLDcgKzExNjEsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRz
U3VicmVzb3VyY2VzKQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVt
ZUhhbmRsZXIgbmV3XSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxl
cjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKIAogICAgIFtoYW5kbGVyIHNl
dFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVt
ZVRhc2s+IHRhc2spIHsKQEAgLTExNzYsMTMgKzExNzYsMTMgQEAgVEVTVChVUkxTY2hlbWVIYW5k
bGVyLCBMb2Fkc1N1YnJlc291cmNlcykKICAgICAgICAgICAgIGxvYWRlZElGcmFtZSA9IHRydWU7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVs
ZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0
ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29k
aW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNw
b25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOwogICAgIH1dOwogICAgIAogICAgIHsKLSAgICAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1d
OwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmxvYWRlZEltYWdlKTsKICAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZsb2FkZWRJRnJhbWUpOwpAQCAtMTE5MSw5ICsx
MTkxLDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fkc1N1YnJlc291cmNlcykKICAgICBs
b2FkZWRJbWFnZSA9IGZhbHNlOwogICAgIGxvYWRlZElGcmFtZSA9IGZhbHNlOwogCi0gICAgY29u
ZmlndXJhdGlvbi5fbG9hZHNTdWJyZXNvdXJjZXMgPSBOTzsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLl9sb2Fkc1N1YnJlc291cmNlcyA9IE5POwogICAgIHsKLSAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSk7CiAgICAgICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5o
dG1sIl1dXTsKQEAgLTEyMzksNyArMTIzOSw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhCiAg
ICAgfTsKIAogICAgIGF1dG8gcmVzcG9uZCA9IFtdIChpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2ss
IGNvbnN0IGNoYXIqIGJ5dGVzKSB7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6c3RybGVuKGJ5dGVzKSB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
c3RybGVuKGJ5dGVzKSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ5dGVzIGxlbmd0aDpzdHJs
ZW4oYnl0ZXMpXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgfTsKQEAgLTEzNzQs
MjEgKzEzNzQsMjEgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBGcmFtZXMpCiAKIFRFU1QoVVJM
U2NoZW1lSGFuZGxlciwgT3JpZ2luKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGhhbmRsZXIg
PSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAg
YXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CiAgICAg
W2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxX
S1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAgICAgICAgTlNTdHJpbmcgKnJlc3BvbnNlU3RyaW5n
ID0gQCI8c2NyaXB0PmFsZXJ0KCIKICAgICAgICAgICAgICJuZXcgVVJMKCdyZWdpc3RlcmVkOi8v
aG9zdDoxMjMvcGF0aCcpLm9yaWdpbiArICcsICcgKyAiCiAgICAgICAgICAgICAibmV3IFVSTCgn
bm90cmVnaXN0ZXJlZDovL2hvc3Q6MTIzL3BhdGgnKS5vcmlnaW4iCiAgICAgICAgICIpPC9zY3Jp
cHQ+IjsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZVN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5n
TmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNl
U3RyaW5nLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNlU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgfV07Ci0g
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0g
ICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVt
ZTpAInJlZ2lzdGVyZWQiXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RVSURlbGVnYXRlIG5ld10p
OworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJyZWdpc3RlcmVkIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicmVnaXN0ZXJl
ZDovLy8iXV1dOwogICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwg
InJlZ2lzdGVyZWQ6Ly9ob3N0OjEyMywgbnVsbCIpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCmluZGV4IDZmMjc2YTE1NzRmOTk2ZjMyZWRmZmVlYzI5OGU2ZjE4NmNlY2UxN2YuLjVi
ZjZkYTkzZGI2OWM1OWI2MDIxZThhYmY5ZWU0NGIyN2Q1YmFmN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KQEAgLTExMywxOSArMTEzLDE5IEBAIFRFU1QoV2ViS2l0LCBDb25maWd1
cmF0aW9uSFRUUFNVcGdyYWRlKQogCiAgICAgYXV0byBydW5UZXN0ID0gWyZdIChib29sIHVwZ3Jh
ZGUpIHsKICAgICAgICAgZG9uZSA9IGZhbHNlOwotICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJh
dGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9u
UGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgc3RvcmVDb25m
aWd1cmF0aW9uLmFsbG93c1NlcnZlclByZWNvbm5lY3QgPSBOTzsKLSAgICAgICAgc3RvcmVDb25m
aWd1cmF0aW9uLnByb3h5Q29uZmlndXJhdGlvbiA9IEB7CisgICAgICAgIGF1dG8gc3RvcmVDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3N0b3JlQ29u
ZmlndXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5PXTsKKyAgICAgICAgW3N0b3Jl
Q29uZmlndXJhdGlvbiBzZXRQcm94eUNvbmZpZ3VyYXRpb246QHsKICAgICAgICAgICAgIChOU1N0
cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFNQcm94eUhvc3Q6IEAiMTI3LjAuMC4xIiwKICAg
ICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFNQcm94eVBvcnQ6IEAo
c2VydmVyLnBvcnQoKSksCiAgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0
eUhUVFBQcm94eUhvc3Q6IEAiMTI3LjAuMC4xIiwKICAgICAgICAgICAgIChOU1N0cmluZyAqKWtD
RlN0cmVhbVByb3BlcnR5SFRUUFByb3h5UG9ydDogQChzZXJ2ZXIucG9ydCgpKSwKLSAgICAgICAg
fTsKLSAgICAgICAgYXV0byBzdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgICAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBz
dG9yZTsKLSAgICAgICAgY29uZmlndXJhdGlvbi51cGdyYWRlS25vd25Ib3N0c1RvSFRUUFMgPSB1
cGdyYWRlOwotICAgICAgICBhdXRvIHdlYlZpZXcgPSBbW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgfV07CisgICAgICAgIGF1dG8gc3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJz
aXRlRGF0YVN0b3JlOnN0b3JlLmdldCgpXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VXBn
cmFkZUtub3duSG9zdHNUb0hUVFBTOnVwZ3JhZGVdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d3d3Lm9wZW5nbC5vcmcvIl1dOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKICAgICAgICAgVXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUph
dmFTY3JpcHQubW0KaW5kZXggYzcwNWE5MTVhY2EzYjU0NzA2ZDYzNzIzM2Y3MmExNWY0YjA5Njgx
MS4uNTVjNTAwNmZmODdhYTkwMTBhYWU1ODVjNzdjOTcyYzMzMzExMzdkZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUph
dmFTY3JpcHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KQEAgLTE5Nyw4ICsxOTcsOCBAQCBURVNUKFdL
V2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0SW5Xb3JsZHMpCiAKICAgICAvLyBBZGQgYSBzY3Jp
cHRNZXNzYWdlSGFuZGxlciBpbiBhIG5hbWVkIHdvcmxkLgogICAgIFJldGFpblB0cjxXS0NvbnRl
bnRXb3JsZD4gbmFtZWRXb3JsZCA9IFtXS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiTmFt
ZWRXb3JsZCJdOwotICAgIGlkIGhhbmRsZXIgPSBbW1tEdW1teU1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgW3dlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi51
c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIgbmFt
ZTpAInRlc3RIYW5kbGVyTmFtZSIgdXNlckNvbnRlbnRXb3JsZDpuYW1lZFdvcmxkLmdldCgpLl91
c2VyQ29udGVudFdvcmxkXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbRHVtbXlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRp
b24udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVy
LmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlck5hbWUiIHVzZXJDb250ZW50V29ybGQ6bmFtZWRXb3Js
ZC5nZXQoKS5fdXNlckNvbnRlbnRXb3JsZF07CiAKICAgICAvLyBTZXQgYSB2YXJpYWJsZSB2YWx1
ZSBpbiB0aGF0IG5hbWVkIHdvcmxkLgogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpA
InZhciBiYXIgPSAnYmF6JyIgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6bmFtZWRXb3JsZC5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKQEAg
LTQ0Miw5ICs0NDIsOSBAQCBURVNUKFdlYktpdCwgU1BJSmF2YXNjcmlwdE1hcmt1cFZzQVBJQ29u
dGVudEphdmFTY3JpcHQpCiB7CiAgICAgLy8gVGhlcmUncyBub3QgYSBkeW5hbWljYWxseSBjb25m
aWd1cmF0aW9uIHNldHRpbmcgZm9yIGphdmFzY3JpcHQgbWFya3VwLAogICAgIC8vIGJ1dCBpdCBj
YW4gYmUgY29uZmlndXJlZCBhdCBXS1dlYlZpZXcgY3JlYXRpb24gdGltZS4KLSAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c0ph
dmFTY3JpcHRNYXJrdXAgPSBOTzsKLSAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93c0phdmFTY3JpcHRNYXJrdXA6
Tk9dOworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICAvLyBWZXJpZnkg
dGhhdCB0aGUgZm9sbG93aW5nIEpTIGRvZXMgbm90IGV4ZWN1dGUuCiAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD52YXIgZm9vID0gJ2Jhcic8L3Njcmlw
dD4iXTsKQEAgLTUwMywxOSArNTAzLDE5IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZh
U2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9
IGFkb3B0TlMoW1tGcmFtZXNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
dXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNl
OnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk8gaW5Db250ZW50V29ybGQ6V0tDb250
ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkXSk7CiAKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxl
ciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFtjb25maWd1cmF0aW9uLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxl
ci5nZXQoKSBjb250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIG5h
bWU6QCJmcmFtZXNUZXN0ZXIiXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6dXNlclNjcmlwdC5nZXQoKV07
CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgY29udGVudFdvcmxkOldLQ29udGVudFdv
cmxkLmRlZmF1bHRDbGllbnRXb3JsZCBuYW1lOkAiZnJhbWVzVGVzdGVyIl07CiAKICAgICBhdXRv
IGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
ICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcg
KiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZXN0ZXN0Oi8vdGVzdC9p
bmRleC5odG1sIl0pIHsKICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVzIiwgZnJhbWVzTWFpblJlc291cmNlXSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3Ro
IHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5hdXRvcmVsZWFzZSgp
XTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAg
W3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5h
YnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRl
eC5odG1sIl0pIHsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0g
YXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9w
dE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5n
TmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTI0LDcgKzUy
NCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9z
dE1lc3NhZ2UpCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAImZyYW1lc3Rlc3QiXTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAib3RoZXJwcm90
b2NvbCJdOwogCi0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4Lmh0
bWwiXV1dOwogCiAgICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOwpAQCAtNTc4LDIz
ICs1NzgsMjMgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zy
b21OYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNr
SGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAg
ICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEg
KmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyIsIGZyYW1lc01haW5SZXNv
dXJjZV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29u
dGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2Vd
XTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXSkuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07
CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNr
LnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9j
b2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW0Ai
Rm9vQmFyQmF6IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAg
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07Cisg
ICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCld
OwogICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH1dOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJmcmFtZXN0ZXN0Il07CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAIm90aGVycHJvdG9jb2wiXTsKIAotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIApAQCAtNjYzLDIzICs2NjMsMjMgQEAgVEVT
VChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFtZUVycm9yKQogICAg
IFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBp
ZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAgICAgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4
Lmh0bWwiXSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW1tOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJXMiLCBmcmFtZXNNYWluUmVzb3VyY2VdIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25z
ZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4
dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmlu
aXNoXTsKICAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
ZyBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pIHsK
ICAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtAIkZvb0JhckJheiIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5V
UkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6
MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJl
Y2VpdmVEYXRhOmRhdGFdOwogICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9XTsKIAotICAg
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiZnJhbWVzdGVzdCJdOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJvdGhlcnByb3RvY29sIl07CiAKLSAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwogCkBAIC03MzQsMjggKzczNCwyOCBAQCBURVNUKEV2YWx1YXRl
SmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0ZyYW1lQWZ0ZXJOYXZpZ2F0aW9uRXJyb3Ip
CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3
ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBpZiAoW3Rhc2sucmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3Qv
aW5kZXguaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlcyIsIGZyYW1lc01haW5SZXNvdXJjZV0gZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5V
UkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0
aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAg
ICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBk
aWRGaW5pc2hdOwogICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwi
XSkgewogICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW0AiRm9vQmFyQmF6IiBkYXRhVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1
ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4
dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExl
bmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAgICAgICAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAg
ICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxU
b1N0cmluZzpAImZyYW1lc3Rlc3Q6Ly9pbmRleDIuaHRtbCJdKSB7CiAgICAgICAgICAgICBOU0Rh
dGEgKmRhdGEgPSBbQCJIaSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OwotICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFz
ZV1dOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0p
LmdldCgpXTsKICAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAg
ICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9XTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWVzdGVzdCJdOwog
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JV
UkxTY2hlbWU6QCJvdGhlcnByb3RvY29sIl07CiAKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogCkBA
IC04MDksOCArODA5LDggQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1p
c3NpbmdGcmFtZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogCiBURVNUKEV2YWx1YXRlSmF2YVNjcmlw
dCwgV2luZG93UGVyc2lzdGVuY3kpCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
YXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwogICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2hOYXZpZ2F0aW9uID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2Vic2l0ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IGQ0MmFhODYxNmJlOWNjMWQ1ZDFmNzU0
M2JmNzJmNzRlZGUzZWYwMTIuLjJiZjAyYmJkNDE3MzA1YmFhMmQwMmE3NDQwMjNhZDU4OGRjYjVk
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJzaXRlRGF0YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC0xNTMsOCArMTUzLDggQEAgVEVTVChXS1dl
YnNpdGVEYXRhU3RvcmUsIEZldGNoUGVyc2lzdGVudENyZWRlbnRpYWxzKQogICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwogCiAgICAg
Ly8gTWFrZSBzdXJlIG5vIGNyZWRlbnRpYWwgbGVmdCBieSBwcmV2aW91cyB0ZXN0cy4KLSAgICBO
U1VSTFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNlID0gW1tbTlNVUkxQcm90ZWN0aW9u
U3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpAIjEyNy4wLjAuMSIgcG9ydDpzZXJ2ZXIucG9ydCgp
IHByb3RvY29sOk5TVVJMUHJvdGVjdGlvblNwYWNlSFRUUCByZWFsbTpAInRlc3RyZWFsbSIgYXV0
aGVudGljYXRpb25NZXRob2Q6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10gYXV0
b3JlbGVhc2VdOwotICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfY2xl
YXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2Vd
OworICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlID0gYWRvcHROUyhbW05TVVJMUHJvdGVjdGlvblNw
YWNlIGFsbG9jXSBpbml0V2l0aEhvc3Q6QCIxMjcuMC4wLjEiIHBvcnQ6c2VydmVyLnBvcnQoKSBw
cm90b2NvbDpOU1VSTFByb3RlY3Rpb25TcGFjZUhUVFAgcmVhbG06QCJ0ZXN0cmVhbG0iIGF1dGhl
bnRpY2F0aW9uTWV0aG9kOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWNdKTsKKyAg
ICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3Jl
ZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgpXTsKIAogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAu
MC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtMTY4LDcgKzE2OCw3IEBAIFRFU1QoV0tXZWJz
aXRlRGF0YVN0b3JlLCBGZXRjaFBlcnNpc3RlbnRDcmVkZW50aWFscykKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgLy8gQ2xlYXIgcGVyc2lzdGVudCBjcmVkZW50
aWFscyBjcmVhdGVkIGJ5IHRoaXMgdGVzdC4KLSAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0u
cHJvY2Vzc1Bvb2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6
cHJvdGVjdGlvblNwYWNlXTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJvY2Vzc1Bv
b2wgX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlv
blNwYWNlLmdldCgpXTsKIH0KIAogVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIFJlbW92ZU5vblBl
cnNpc3RlbnRDcmVkZW50aWFscykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2ViR0xQb2xpY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYkdMUG9saWN5Lm1tCmluZGV4IDk5ODExOWYzNTAxODRhNDBjMmIyMmRj
OWM3ZDg0ZTExMmNiN2Q2OWMuLmE0ZmIzNzVlNWRjNjkwZmVjNjFkOGEwODcyMTVlNjJkNWUxZTc2
ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
R0xQb2xpY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJHTFBvbGljeS5tbQpAQCAtNjQsNyArNjQsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViR0xUZXN0
RGVsZWdhdGUKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJM
U2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXJsU2NoZW1lVGFzawogewotICAgIFt1
cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxd
IGF1dG9yZWxlYXNlXV07CisgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFk
b3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJl
cXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0
YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgW3VybFNjaGVtZVRh
c2sgZGlkUmVjZWl2ZURhdGE6W2RhdGEgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKICAgICBbdXJsU2NoZW1lVGFzayBkaWRGaW5pc2hdOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC5tbQppbmRleCAzMGZlYTA3NTNkYWIzOWQyODhhMmEwYmRiNzI0YmU5
MWQ2MWQ3NGFlLi4yOTgxOTk2OTEzMjZlMzA4ZTkwOTRkN2UxMGZkNDQzYzIzNTFiZTQzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlByb2Nlc3NL
aWxsSURCQ2xlYW51cC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg
V0tTY3JpcHRNZXNzYWdlICpnZXROZXh0TWVzc2FnZSgpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICB9CiAKLSAgICByZXR1cm4g
W1tzY3JpcHRNZXNzYWdlcy50YWtlRmlyc3QoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogVEVT
VChJbmRleGVkREIsIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggM2IxMzFmN2NiODYwYWU4MDFiOTIzNTU1M2Q1MGZi
N2ExNmMyNzRkMS4uMjgxYWMxYmEyMjEwZGM2NWM2OGI1MGQ3OTdjOThlYTMxMjliMDRiYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTc2LDcgKzc2LDcgQEAg
c3RhdGljIFdLU2NyaXB0TWVzc2FnZSAqZ2V0TmV4dE1lc3NhZ2UoKQogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIFtbc2NyaXB0TWVzc2FnZXMudGFrZUZpcnN0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIHNjcmlwdE1lc3NhZ2VzLnRha2VGaXJzdCgpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIGVudW0gY2xhc3MgU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgeyBObywgWWVzIH07
CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIHZvaWQgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nIHNob3VsZEUKICAgICB3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fY29va2llU3RvcmFnZUZpbGUgPSBjb29raWVT
dG9yYWdlRmlsZTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRo
OwogCi0gICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pLmdldCgpOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSBwcm9j
ZXNzUG9vbC5nZXQoKTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtNDQ5LDcgKzQ0
OSw3IEBAIFRFU1QoV2ViS2l0LCBBbHRlcm5hdGl2ZVNlcnZpY2VzRGVmYXVsdERpcmVjdG9yeUNy
ZWF0aW9uKQogICAgIE5TVVJMICpkZWZhdWx0RGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9X
ZWJLaXQvQWx0ZXJuYXRpdmVTZXJ2aWNlcyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0g
aXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJl
bW92ZUl0ZW1BdFVSTDpkZWZhdWx0RGlyZWN0b3J5IGVycm9yOm5pbF07CiAgICAgCi0gICAgVGVz
dFdLV2ViVmlldyAqd2ViVmlldzEgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcxIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
InN0YXJ0IGF1eGlsaWFyeSBwcm9jZXNzZXMiIGJhc2VVUkw6bmlsXTsKIAogICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVm
YXVsdERpcmVjdG9yeS5wYXRoXSk7CkBAIC00NjQsOSArNDY0LDkgQEAgVEVTVChXZWJLaXQsIEFs
dGVybmF0aXZlU2VydmljZXNEZWZhdWx0RGlyZWN0b3J5Q3JlYXRpb24pCiAgICAgCiAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTprZXldOwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9y
ZWxlYXNlXTsKLSAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246W1tbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXV0gYXV0b3JlbGVh
c2VdOwotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0gW1tbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9u
IHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKS5nZXQoKV0pLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcy
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgW3dlYlZpZXcyIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInN0YXJ0IGF1eGlsaWFy
eSBwcm9jZXNzZXMiIGJhc2VVUkw6bmlsXTsKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0RGlyZWN0b3J5LnBh
dGhdKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUVw
aGVtZXJhbFZpYUNvbmZpZ3VyYXRpb24pCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhdGgucGF0aF0pOwogCiAgICAgUmV0YWluUHRyPF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3Vy
YXRpb25dKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdl
dCgpOwogICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CiAKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7CkBAIC01MzAsNyArNTMwLDcgQEAgVEVTVChXZWJL
aXQsIERvTG9hZFdpdGhOb25EZWZhdWx0RGF0YVN0b3JlQWZ0ZXJUZXJtaW5hdGluZ05ldHdvcmtQ
cm9jZXNzKQogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLndlYnNp
dGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKQEAgLTU0OSw4ICs1NDksOCBAQCBURVNUKFdlYktpdCwgRG9Mb2FkV2l0aE5vbkRl
ZmF1bHREYXRhU3RvcmVBZnRlclRlcm1pbmF0aW5nTmV0d29ya1Byb2Nlc3MpCiAKIFRFU1QoV2Vi
S2l0LCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblBhdGhOdWxsKQogewotICAgIEVYUEVD
VF9UUlVFKFtbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV0pOwotICAgIEVYUEVDVF9G
QUxTRShbW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25Q
ZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV0pOworICAgIEVYUEVDVF9UUlVFKFthZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnld
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW2Fkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSkgX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5XSk7CiB9CiAKIFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3Jl
SWZFeGlzdHMpCkBAIC02MzAsMTMgKzYzMCwxMyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFT
dG9yZVJlbmFtZU9yaWdpbkZvckluZGV4ZWREYXRhYmFzZSkKIAogVEVTVChXZWJLaXQsIFdlYnNp
dGVEYXRhU3RvcmVSZW5hbWVPcmlnaW4pCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9
IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxzY3JpcHQ+bG9jYWxTdG9yYWdlLnNl
dEl0ZW0oJ3Rlc3RrZXknLCAndGVzdHZhbHVlJyk8L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdXTsKICAgICAKICAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIE5TVVJMICpleGFtcGxlVVJMID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdOwogICAgIE5TVVJMICp3ZWJLaXRVUkwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXTsKLSAgICBXS1dl
YnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IHdlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0ud2Vic2l0ZURhdGFTdG9yZTsKICAgICBOU1NldCAqbG9jYWxTdG9yYWdl
U2V0ID0gW05TU2V0IHNldFdpdGhPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2Vd
OwogICAgIFtkYXRhU3RvcmUgX3JlbmFtZU9yaWdpbjpleGFtcGxlVVJMIHRvOndlYktpdFVSTCBm
b3JEYXRhT2ZUeXBlczpsb2NhbFN0b3JhZ2VTZXQgY29tcGxldGlvbkhhbmRsZXI6XnsKICAgICAg
ICAgZG9uZSA9IHRydWU7CkBAIC02NzYsNyArNjc2LDcgQEAgVEVTVChXZWJLaXQsIE5ldHdvcmtD
YWNoZURpcmVjdG9yeSkKICAgICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0TmV0
d29ya0NhY2hlRGlyZWN0b3J5OnRlbXBEaXJdOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3Q29uZmlndXJh
dGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldKS5nZXQoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAu
MC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwpAQCAtNzA5LDcgKzcwOSw3IEBAIFRFU1QoV2Vi
S2l0LCBBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3JpZXMpCiAgICAgW3dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIHNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU6
QCJ0ZXN0c3ViZGlyZWN0b3J5Il07CiAgICAgCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
W3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKS5nZXQoKV07CiAgICAgCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4w
LjAuMTolZC9pbmRleC5odG1sIiwgc2VydmVyLnBvcnQoKV1dXV07CkBAIC03NDgsOSArNzQ4LDkg
QEAgVEVTVChXZWJLaXQsIERJU0FCTEVEX0FsdGVybmF0aXZlU2VydmljZSkKICAgICBOU0ZpbGVN
YW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAg
ICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOiZlcnJvcl07CiAKLSAg
ICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07Ci0gICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVNlcnZpY2Vz
U3RvcmFnZURpcmVjdG9yeSA9IHRlbXBEaXI7Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRh
U3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGF0YVN0
b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtkYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEFsdGVy
bmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5OnRlbXBEaXJdOworICAgIGF1dG8gZGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOwogICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6
W05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNl
c10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJl
Y29yZHMpIHsKQEAgLTc1OSwxMiArNzU5LDEyIEBAIFRFU1QoV2ViS2l0LCBESVNBQkxFRF9BbHRl
cm5hdGl2ZVNlcnZpY2UpCiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIAotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKndlYlZpZXdDb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmU7Ci0gICAgV0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb25dIGF1dG9yZWxl
YXNlXTsKLSAgICBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0
YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBk
ZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLV2Vi
VmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAgICAgfTsK
QEAgLTc3Miw3ICs3NzIsNyBAQCBURVNUKFdlYktpdCwgRElTQUJMRURfQWx0ZXJuYXRpdmVTZXJ2
aWNlKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwogCiAgICAg
ZG9uZSA9IGZhbHNlOwotICAgIGNoZWNrVW50aWxFbnRyeUZvdW5kKGRhdGFTdG9yZSwgXihOU0Fy
cmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICBjaGVja1VudGlsRW50
cnlGb3VuZChkYXRhU3RvcmUuZ2V0KCksIF4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+
ICpyZWNvcmRzKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAxdSk7CiAgICAg
ICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6X1dL
V2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10gZm9yRGF0YVJlY29yZHM6cmVjb3Jk
cyBjb21wbGV0aW9uSGFuZGxlcjpeewogICAgICAgICAgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRl
cm5hdGl2ZVNlcnZpY2VzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0
YVJlY29yZCAqPiAqcmVjb3JkcykgewpAQCAtODQ3LDcgKzg0Nyw3IEBAIFRFU1QoV2ViS2l0LCBN
ZWRpYUNhY2hlKQogICAgIFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5OnRlbXBEaXJdOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dl
YlZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1tbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KS5nZXQoKV07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlci5wb3J0KCldXV1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQppbmRleCBmYmM0MTI2YzgxMTJi
Y2QzMWI1OTQ5YzI2ZTJkOTk1ZWZjMjhiMTNlLi4wNDE3NGM5OWQwZDZjMzVmODkyMjliMzkwM2Iw
MDdjMGE0NzI4MDg0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTA1LDcgKzEwNSw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdp
dGhNZXNzYWdlOihOU1N0cmluCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKilu
YXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXByZWZl
cmVuY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9IGFk
b3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOwogICAgIHN3aXRjaCAo
YWxlcnRDb3VudCkgewogICAgIGNhc2UgMDoKICAgICAgICAgLy8gVmVyaWZ5IHRoZSBjb250ZW50
IGJsb2NrZXJzIGJlaGF2ZSBjb3JyZWN0bHkgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvci4KQEAg
LTExMywxMSArMTEzLDExIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAgICAgY2FzZSAxOgog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBWZXJpZnkgZGlzYWJsaW5nIGNvbnRlbnQgYmxvY2tl
cnMgd29ya3MgY29ycmVjdGx5LgotICAgICAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9jb250ZW50
QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9z
ZXRDb250ZW50QmxvY2tlcnNFbmFibGVkOmZhbHNlXTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgLy8gVmVyaWZ5IGNhbGxpbmcgdGhlIGRlY2lzaW9uSGFuZGxlciBhc3luY2hyb25vdXNseSB3
b3JrcyBjb3JyZWN0bHkuCiAgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlckNvcHkgPSBC
bG9ja19jb3B5KGRlY2lzaW9uSGFuZGxlcik7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtkZWNpc2lvbkhhbmRsZXJDb3B5LCB3ZWJzaXRlUG9saWNpZXMgPSByZXRhaW5QdHIod2Vic2l0
ZVBvbGljaWVzKV0geworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5k
bGVyQ29weSwgd2Vic2l0ZVBvbGljaWVzXSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5k
bGVyQ29weShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdl
dCgpKTsKICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGRlY2lzaW9uSGFuZGxlckNvcHkp
OwogICAgICAgICAgICAgfSk7CkBAIC0xMjUsMTIgKzEyNSwxMiBAQCAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tO
YXZpZ2F0aQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSAyOgogICAgICAgICAvLyBWZXJpZnkg
ZW5hYmxpbmcgY29udGVudCBibG9ja2VycyBoYXMgbm8gZWZmZWN0IHdoZW4gcmVsb2FkaW5nIHdp
dGhvdXQgY29udGVudCBibG9ja2Vycy4KLSAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9jb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q29u
dGVudEJsb2NrZXJzRW5hYmxlZDp0cnVlXTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOwogICAgIH0KLSAgICBkZWNpc2lvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOwogfQogCiBAZW5kCkBAIC0xODksMTIgKzE4OSwxMiBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlv
bkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtb
V0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoX2FsbG93ZWRBdXRv
cGxheVF1aXJrc0ZvclVSTCkKLSAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9hbGxvd2VkQXV0b3Bs
YXlRdWlya3MgPSBfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rpb24u
cmVxdWVzdC5VUkwpOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRBbGxvd2VkQXV0b3Bs
YXlRdWlya3M6X2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJl
cXVlc3QuVVJMKV07CiAgICAgaWYgKF9hdXRvcGxheVBvbGljeUZvclVSTCkKLSAgICAgICAgd2Vi
c2l0ZVBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9IF9hdXRvcGxheVBvbGljeUZvclVSTChuYXZp
Z2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgIFt3ZWJzaXRl
UG9saWNpZXMgX3NldEF1dG9wbGF5UG9saWN5Ol9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0
aW9uQWN0aW9uLnJlcXVlc3QuVVJMKV07CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogfQogCiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5RXZlbnQ6KF9XS0F1
dG9wbGF5RXZlbnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50RmxhZ3MpZmxhZ3MK
QEAgLTIyMiwxMiArMjIyLDEyIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNp
b25IYW5kbGVyCiB7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKLSAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtb
W1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAg
IGF1dG8gd2Vic2l0ZVBvbGljaWVzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIGlmIChfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKQot
ICAgICAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBfYWxs
b3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwor
ICAgICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzOl9h
bGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCld
OwogICAgICAgICBpZiAoX2F1dG9wbGF5UG9saWN5Rm9yVVJMKQotICAgICAgICAgICAgd2Vic2l0
ZVBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9IF9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0
aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOworICAgICAgICAgICAgW3dl
YnNpdGVQb2xpY2llcyBfc2V0QXV0b3BsYXlQb2xpY3k6X2F1dG9wbGF5UG9saWN5Rm9yVVJMKG5h
dmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpXTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAg
IH0pOwogfQogCkBAIC0zMDQsOSArMzA0LDkgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdl
YnNpdGVQb2xpY2llc0F1dG9wbGF5RW5hYmxlZCkKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAImRpZC1ub3QtcGxheSJdOwogCiAgICAgLy8gVGVzdCB1cGRhdGluZyB3ZWJzaXRlIHBvbGlj
aWVzLgotICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dl
YnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHdlYnNpdGVQ
b2xpY2llcy5fYXV0b3BsYXlQb2xpY3kgPSBfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lBbGxvdzsK
LSAgICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOndlYnNpdGVQb2xpY2llc107
CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRBdXRvcGxheVBvbGlj
eTpfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lBbGxvd107CisgICAgW3dlYlZpZXcgX3VwZGF0ZVdl
YnBhZ2VQcmVmZXJlbmNlczp3ZWJzaXRlUG9saWNpZXMuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwbGF5VmlkZW8oKSJdOwogICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAiYXV0b3BsYXllZCJdOwogCkBAIC03MDEsMTAgKzcwMSwxMCBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWRlb0RhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0
YQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFz
azooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzawogewogICAgIGlmIChbdGFzay5yZXF1ZXN0LlVS
TC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9zaG91bGQtcmVkaXJlY3QiXSkgewotICAgICAgICBb
KGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2RpZFBlcmZvcm1SZWRpcmVjdGlvbjpb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0gYXV0
b3JlbGVhc2VdIG5ld1JlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vYXV0b3BsYXktY2hlY2suaHRtbCJdXV07CisgICAgICAg
IFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9u
OmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0pLmdldCgpIG5ld1JlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vYXV0b3BsYXktY2hlY2suaHRtbCJdXV07CiAgICAg
ICAgIAogICAgICAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2si
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXTsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0
bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0
TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4
dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRh
OmRhdGFdOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwogICAgICAgICByZXR1cm47CkBAIC03
MTYsOCArNzE2LDggQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0
VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICBhdXRvJiByYW5nZSA9
ICpwYXJzZWRSYW5nZS5yYW5nZTsKICAgICAKICAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxk
cyA9IEB7IEAiQ29udGVudC1MZW5ndGgiOiBbQChyYW5nZS5zZWNvbmQgLSByYW5nZS5maXJzdCkg
c3RyaW5nVmFsdWVdLCBAIkNvbnRlbnQtUmFuZ2UiOiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImJ5dGVzICVsdS0lbHUvJWx1IiwgcmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCwgW3ZpZGVv
RGF0YSBsZW5ndGhdXSB9OwotICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tbTlNIVFRQ
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgc3RhdHVzQ29k
ZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5nICopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmll
bGRzOmhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwotICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZV07CisgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIw
MCBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6
aGVhZGVyRmllbGRzXSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdl
dCgpXTsKICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbdmlkZW9EYXRhIHN1YmRhdGFXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2UocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCAtIHJhbmdlLmZpcnN0KV1d
OwogICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAgCkBAIC03MzMsNyArNzMzLDcgQEAgVEVTVChX
ZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0R1cmluZ1JlZGlyZWN0KQogewogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgYXV0byB2aWRlb0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9j
XSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInRlc3QiIHdpdGhFeHRlbnNpb246QCJtcDQiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOltbW1Rlc3RTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFZpZGVvRGF0YTpXVEZNb3Zl
KHZpZGVvRGF0YSldIGF1dG9yZWxlYXNlXSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjphZG9wdE5TKFtbVGVzdFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoVmlkZW9EYXRhOldURk1vdmUodmlkZW9EYXRhKV0pLmdldCgpIGZv
clVSTFNjaGVtZTpAInRlc3QiXTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAKICAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpA
QCAtNzcxLDkgKzc3MSw5IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNp
ZXNVcGRhdGVzKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RXaXRoQXVkaW9dOwog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAKLSAgICBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqcG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9IF9X
S1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OwotICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdl
UHJlZmVyZW5jZXM6cG9saWNpZXNdOworICAgIGF1dG8gcG9saWNpZXMgPSBhZG9wdE5TKFtbV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICBbcG9saWNpZXMgX3NldEF1dG9w
bGF5UG9saWN5Ol9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93XTsKKyAgICBbd2ViVmlldyBf
dXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnBvbGljaWVzLmdldCgpXTsKIAogICAgIC8vIE5vdyB0
aGF0IHdlIHVwZGF0ZWQgb3VyIHBvbGljaWVzLCBhIHNjcmlwdCBzaG91bGQgYmUgYWJsZSB0byBh
dXRvcGxheSBtZWRpYS4KICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAicGxheVZpZGVvKCkiXTsKQEAgLTc4MSw5ICs3ODEsOSBAQCBURVNUKFdlYnBhZ2VQcmVmZXJl
bmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJwYXVzZVZpZGVvKCkiXTsKIAotICAgIFdLV2VicGFnZVByZWZl
cmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07Ci0gICAgcHJlZmVyZW5jZXMuX2F1dG9wbGF5UG9saWN5ID0gX1dLV2Vi
c2l0ZUF1dG9wbGF5UG9saWN5RGVueTsKLSAgICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZl
cmVuY2VzOnByZWZlcmVuY2VzXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhbW1dL
V2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAgW3ByZWZlcmVuY2VzIF9zZXRB
dXRvcGxheVBvbGljeTpfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lEZW55XTsKKyAgICBbd2ViVmll
dyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgpXTsKIAogICAgIC8v
IEEgc2NyaXB0IHNob3VsZCBubyBsb25nZXIgYmUgYWJsZSB0byBhdXRvcGxheSBtZWRpYS4KICAg
ICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CkBAIC0xMDMzLDcgKzEwMzMs
NyBAQCBzdGF0aWMgdm9pZCBleHBlY3RIZWFkZXJzKGlkIDxXS1VSTFNjaGVtZVRhc2s+IHRhc2ss
IGJvb2wgZXhwZWN0ZWQpCiAKIHN0YXRpYyB2b2lkIHJlc3BvbmQoaWQgPFdLVVJMU2NoZW1lVGFz
az50YXNrLCBOU1N0cmluZyAqaHRtbCA9IG5pbCkKIHsKLSAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3Ro
IHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFz
ay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
Omh0bWwubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAgIFt0YXNrIGRp
ZFJlY2VpdmVEYXRhOltodG1sIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XV07CiAgICAgW3Rhc2sgZGlkRmluaXNoXTsKIH0KQEAgLTEwNTAsNyArMTA1MCw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpCiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShsZWdhY3lIZWFkZXJG
aWVsZERpY3Rpb25hcnkuZ2V0KCksIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlgta2V5MiIpKS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygidmFsdWUyIikpLmdldCgpKTsKICAgICBXS1dlYnNpdGVQb2xpY2llc1NldEN1c3RvbUhlYWRl
ckZpZWxkcygoV0tXZWJzaXRlUG9saWNpZXNSZWYpcHJlZmVyZW5jZXMsIGxlZ2FjeUhlYWRlckZp
ZWxkRGljdGlvbmFyeS5nZXQoKSk7CiAKLSAgICBfV0tDdXN0b21IZWFkZXJGaWVsZHMgKmhlYWRl
ckZpZWxkcyA9IFtbW19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gaGVhZGVyRmllbGRzID0gYWRvcHROUyhbW19XS0N1c3RvbUhlYWRlckZp
ZWxkcyBhbGxvY10gaW5pdF0pOwogICAgIFtoZWFkZXJGaWVsZHMgc2V0RmllbGRzOkB7QCJYLWtl
eTMiOiBAInZhbHVlMyIsIEAiWC1rZXk0IjogQCJ2YWx1ZTQifV07CiAgICAgW2hlYWRlckZpZWxk
cyBzZXRUaGlyZFBhcnR5RG9tYWluczpAWwogICAgICAgICBAIiouaG9zdHdpdGhhc3Rlcmlzay5j
b20iLApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKICAgICAg
ICAgQCIqLmNvbSIgLy8gc2hvdWxkIGJlIGlnbm9yZWQuCiAgICAgXV07CiAgICAgCi0gICAgW3By
ZWZlcmVuY2VzIF9zZXRDdXN0b21IZWFkZXJGaWVsZHM6QFtoZWFkZXJGaWVsZHNdXTsKKyAgICBb
cHJlZmVyZW5jZXMgX3NldEN1c3RvbUhlYWRlckZpZWxkczpAW2hlYWRlckZpZWxkcy5nZXQoKV1d
OwogICAgIAogICAgIGlmIChbbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1
YWxUb1N0cmluZzpAIi9tYWlucmVzb3VyY2UiXSkgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewpAQCAtMTIxNCwxMSArMTIxNCwxMSBAQCBJR05P
UkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzooaWQg
PE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5k
bGVyCiBJR05PUkVfV0FSTklOR1NfRU5ECiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndl
YnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJn
ZXRGcmFtZS5tYWluRnJhbWUpCiAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbVVz
ZXJBZ2VudDpAIkZvbyBDdXN0b20gVXNlckFnZW50Il07CiAKLSAgICBkZWNpc2lvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CisgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgpAQCAtMTMwNCwxNCAr
MTMwNCwxNCBAQCBAaW1wbGVtZW50YXRpb24gQ3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudERlbGVn
YXRlCiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlv
biB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQ
b2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFt
ZS5tYWluRnJhbWUpIHsKICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tVXNlckFn
ZW50QXNTaXRlU3BlY2lmaWNRdWlya3M6QCJGb28gU2l0ZSBTcGVjaWZpYyBRdXJpa3MgVXNlckFn
ZW50Il07CiAgICAgICAgIGlmIChfc2V0Q3VzdG9tVXNlckFnZW50KQogICAgICAgICAgICAgW3dl
YnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tVXNlckFnZW50OkAiRm9vIEN1c3RvbSBSZXF1ZXN0IFVz
ZXJBZ2VudCJdOwogICAgIH0KIAotICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAK
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9u
OihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCkBAIC0xNDAxLDExICsxNDAxLDExIEBAIEBpbXBs
ZW1lbnRhdGlvbiBDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybURlbGVnYXRlCiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzooaWQgPE5T
U2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVy
CiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2Vi
cGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJz
aXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRd
KTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUpCiAgICAg
ICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOkAiVGVzdCBD
dXN0b20gUGxhdGZvcm0iXTsKIAotICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAK
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9u
OihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCkBAIC0xNDYwLDEwICsxNDYwLDEwIEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERldmljZU9yaWVudGF0aW9uQWNjZXNzUG9saWN5OihfV0tXZWJz
aXRlRGV2aWNlT3JpZW50YXRpCiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICop
bmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVm
ZXJlbmNlcyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndl
YnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXREZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeTpfYWNjZXNzUG9saWN5XTsKIAotICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBv
bGljaWVzKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCkBAIC0xNTY3LDEwICsxNTY3LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJzaXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJw
YWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoX3BvcFVwUG9saWN5Rm9yVVJM
KQotICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3BvcFVwUG9saWN5ID0gX3BvcFVwUG9saWN5Rm9y
VVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwotICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAg
W3dlYnNpdGVQb2xpY2llcyBfc2V0UG9wVXBQb2xpY3k6X3BvcFVwUG9saWN5Rm9yVVJMKG5hdmln
YXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpXTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiB9CiAKIC0gKG51
bGxhYmxlIFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRlV2Vi
Vmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9u
QWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMK
QEAgLTE2MTgsMTIgKzE2MTgsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGkKIHsKICAgICBO
U1VSTCAqdXJsID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTDsKICAgICBpZiAoW3VybC5w
YXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbnZhbGlkIl0pIHsKLSAgICAgICAgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURh
dGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd2Vic2l0ZVBvbGljaWVzID0g
YWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3
ZWJzaXRlUG9saWNpZXMgX3NldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5nZXQoKV0pLmdldCgpXTsKIAog
ICAgICAgICBib29sIHNhd0V4Y2VwdGlvbiA9IGZhbHNlOwogICAgICAgICBAdHJ5IHsKLSAgICAg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vi
c2l0ZVBvbGljaWVzKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICAgICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgICAgIHNhd0V4Y2VwdGlvbiA9
IHRydWU7CiAgICAgICAgIH0KQEAgLTE2MzQsMTYgKzE2MzQsMTYgQEAgLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGkKICAgICBpZiAoW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja1N0b3Jh
Z2UiXQogICAgICAgICB8fCBbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NoZWNrQ29va2ll
cyJdCiAgICAgICAgIHx8IFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbkZyYW1lIl0p
IHsKLSAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dL
V2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdl
YnNpdGVQb2xpY2llcy5fd2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9u
UGVyc2lzdGVudERhdGFTdG9yZV07Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKKyAgICAgICAgYXV0byB3ZWJz
aXRlUG9saWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRd
KTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0V2Vic2l0ZURhdGFTdG9yZTpbV0tXZWJz
aXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdXTsKKyAgICAgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMuZ2V0
KCkpOwogICAgIH0KICAgICBpZiAoW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9zdWJGcmFt
ZSJdKSB7Ci0gICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBb
W1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAg
ICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3Jl
IG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOworICAgICAgICBhdXRvIHdlYnNpdGVQb2xpY2llcyA9
IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgICAgICBb
d2Vic2l0ZVBvbGljaWVzIF9zZXRXZWJzaXRlRGF0YVN0b3JlOltXS1dlYnNpdGVEYXRhU3RvcmUg
bm9uUGVyc2lzdGVudERhdGFTdG9yZV1dOwogICAgICAgICBib29sIHNhd0V4Y2VwdGlvbiA9IGZh
bHNlOwogICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwsIHdlYnNpdGVQb2xpY2llcyk7CisgICAgICAgICAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2VsLCB3ZWJzaXRlUG9s
aWNpZXMuZ2V0KCkpOwogICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikg
ewogICAgICAgICAgICAgc2F3RXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTcyOCwy
NCArMTcyOCwyNCBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzRGF0
YVN0b3JlKQogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJDb250
ZW50Q29udHJvbGxlcikKIHsKICAgICBhdXRvIG1ha2VTY3JpcHQgPSBbXSAoTlNTdHJpbmcgKnNj
cmlwdCkgewotICAgICAgICByZXR1cm4gW1tbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNv
dXJjZTpzY3JpcHQgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1
bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJl
dHVybiBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzY3JpcHQg
aW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZv
ck1haW5GcmFtZU9ubHk6WUVTXSk7CiAgICAgfTsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2Ny
aXB0Om1ha2VTY3JpcHQoQCJhbGVydCgndGVzdEFsZXJ0MScpIildOwotICAgIFRlc3RXS1dlYlZp
ZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3Jl
bGVhc2VdOwotICAgIFRlc3RVSURlbGVnYXRlICp1aURlbGVnYXRlID0gW1tUZXN0VUlEZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSB1aURlbGVnYXRl
OwotICAgIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgKm5hdmlnYXRpb25EZWxlZ2F0ZSA9IFtbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6bWFrZVNjcmlw
dChAImFsZXJ0KCd0ZXN0QWxlcnQxJykiKS5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0
byB1aURlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBhdXRvIG5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgX19i
bG9jayBib29sIGlmcmFtZUV4Y2VwdGlvblRocm93biA9IGZhbHNlOwogICAgIF9fYmxvY2sgUmV0
YWluUHRyPFdLVXNlckNvbnRlbnRDb250cm9sbGVyPiByZXBsYWNlbWVudFVzZXJDb250ZW50Q29u
dHJvbGxlcjsKLSAgICBuYXZpZ2F0aW9uRGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdL
V2VicGFnZVByZWZlcmVuY2VzICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgIG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZl
cmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ks
IFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CiAgICAgICAgIGlmIChbYWN0aW9uLnJlcXVlc3Qu
VVJMLnBhdGggaGFzU3VmZml4OkAiL3NpbXBsZS1pZnJhbWUuaHRtbCJdKQogICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBu
aWwpOwogICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5wYXRoIGhhc1N1ZmZpeDpAIi9z
aW1wbGUuaHRtbCJdKSB7CiAgICAgICAgICAgICBAdHJ5IHsKLSAgICAgICAgICAgICAgICBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dLV2VicGFnZVByZWZlcmVuY2VzIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgICAgIHByZWZlcmVuY2VzLl91c2VyQ29udGVu
dENvbnRyb2xsZXIgPSBbW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIG5ld10gYXV0b3JlbGVhc2Vd
OwotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgICAgICAgICAgICAgIGF1dG8gcHJl
ZmVyZW5jZXMgPSBhZG9wdE5TKFtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBuZXddKTsKKyAgICAgICAg
ICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVzZXJDb250ZW50Q29udHJvbGxlcjphZG9wdE5TKFtX
S1VzZXJDb250ZW50Q29udHJvbGxlciBuZXddKS5nZXQoKV07CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVm
ZXJlbmNlcy5nZXQoKSk7CiAgICAgICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewogICAgICAgICAgICAgICAgIGlmcmFtZUV4Y2VwdGlvblRocm93biA9IHRydWU7CiAg
ICAgICAgICAgICB9CkBAIC0xNzUzLDEzICsxNzUzLDEzIEBAIFRFU1QoV2VicGFnZVByZWZlcmVu
Y2VzLCBXZWJzaXRlUG9saWNpZXNVc2VyQ29udGVudENvbnRyb2xsZXIpCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIEVYUEVDVF9UUlVFKFthY3Rpb24ucmVxdWVzdC5VUkwucGF0aCBoYXNT
dWZmaXg6QCIvc2ltcGxlMi5odG1sIl0pOwotICAgICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXMgPSBbW1dLV2VicGFnZVByZWZlcmVuY2VzIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgICAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRvcHROUyhbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
bmV3XSk7CiAgICAgICAgIHJlcGxhY2VtZW50VXNlckNvbnRlbnRDb250cm9sbGVyID0gYWRvcHRO
UyhbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgbmV3XSk7Ci0gICAgICAgIFtyZXBsYWNlbWVudFVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0Om1ha2VTY3JpcHQoQCJhbGVydCgndGVz
dEFsZXJ0MicpIildOwotICAgICAgICBwcmVmZXJlbmNlcy5fdXNlckNvbnRlbnRDb250cm9sbGVy
ID0gcmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCk7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7
CisgICAgICAgIFtyZXBsYWNlbWVudFVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0
Om1ha2VTY3JpcHQoQCJhbGVydCgndGVzdEFsZXJ0MicpIikuZ2V0KCldOworICAgICAgICBbcHJl
ZmVyZW5jZXMgX3NldFVzZXJDb250ZW50Q29udHJvbGxlcjpyZXBsYWNlbWVudFVzZXJDb250ZW50
Q29udHJvbGxlci5nZXQoKV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcy5nZXQoKSk7CiAgICAgfTsKLSAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5hdmlnYXRpb25EZWxlZ2F0ZTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKIAogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlLWlmcmFtZSJdOwogICAgIEVYUEVD
VF9XS19TVFJFUShbdWlEZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAidGVzdEFsZXJ0MSIpOwpAQCAt
MTc3MCwxNCArMTc3MCwxNCBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGlj
aWVzVXNlckNvbnRlbnRDb250cm9sbGVyKQogCiAgICAgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBm
YWxzZTsKICAgICBAdHJ5IHsKLSAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzID0gW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
cHJlZmVyZW5jZXMuX3VzZXJDb250ZW50Q29udHJvbGxlciA9IFtbV0tVc2VyQ29udGVudENvbnRy
b2xsZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdl
UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOworICAgICAgICBhdXRvIHByZWZlcmVuY2VzID0gYWRv
cHROUyhbV0tXZWJwYWdlUHJlZmVyZW5jZXMgbmV3XSk7CisgICAgICAgIFtwcmVmZXJlbmNlcyBf
c2V0VXNlckNvbnRlbnRDb250cm9sbGVyOmFkb3B0TlMoW1dLVXNlckNvbnRlbnRDb250cm9sbGVy
IG5ld10pLmdldCgpXTsKKyAgICAgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNl
czpwcmVmZXJlbmNlcy5nZXQoKV07CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKICAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKICAgICB9CiAgICAgRVhQRUNU
X1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKIAotICAgIFtyZXBsYWNlbWVudFVzZXJDb250ZW50Q29u
dHJvbGxlciBfYWRkVXNlclNjcmlwdEltbWVkaWF0ZWx5Om1ha2VTY3JpcHQoQCJhbGVydCgndGVz
dEFsZXJ0MycpOyIpXTsKKyAgICBbcmVwbGFjZW1lbnRVc2VyQ29udGVudENvbnRyb2xsZXIgX2Fk
ZFVzZXJTY3JpcHRJbW1lZGlhdGVseTptYWtlU2NyaXB0KEAiYWxlcnQoJ3Rlc3RBbGVydDMnKTsi
KS5nZXQoKV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFt1aURlbGVnYXRlIHdhaXRGb3JBbGVydF0s
ICJ0ZXN0QWxlcnQzIik7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2lPU01vdXNlU3VwcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvaU9TTW91c2VTdXBwb3J0Lm1tCmluZGV4IDcyY2Q2YmQxMjIyMDliYjNl
YmI4ZjVhOGI2NmE1ZmJmMGM5YWU5MDEuLjY0YThkODcyNDhhNWJmNzNiOWM0NzZkM2FhMGQ2Y2Ji
NTAwNzFkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvaU9TTW91c2VTdXBwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvaU9TTW91c2VTdXBwb3J0Lm1tCkBAIC0yODYsMTAgKzI4NiwxMCBAQCBURVNUKGlP
U01vdXNlU3VwcG9ydCwgV2Vic2l0ZU1vdXNlRXZlbnRQb2xpY2llcykKIAogICAgIC8vIElmIGxv
YWRlZCB3aXRoIF9XS1dlYnNpdGVNb3VzZUV2ZW50UG9saWN5U3ludGhlc2l6ZVRvdWNoRXZlbnRz
LCBpdCBzaG91bGQgc2VuZCB0b3VjaCBldmVudHMgaW5zdGVhZC4KIAotICAgIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07Ci0gICAgcHJlZmVyZW5jZXMuX21vdXNlRXZlbnRQb2xpY3kgPSBf
V0tXZWJzaXRlTW91c2VFdmVudFBvbGljeVN5bnRoZXNpemVUb3VjaEV2ZW50czsKKyAgICBhdXRv
IHByZWZlcmVuY2VzID0gYWRvcHROUyhbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSk7CisgICAgW3ByZWZlcmVuY2VzIF9zZXRNb3VzZUV2ZW50UG9saWN5Ol9XS1dlYnNpdGVNb3Vz
ZUV2ZW50UG9saWN5U3ludGhlc2l6ZVRvdWNoRXZlbnRzXTsKIAotICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInR3byIgcHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAInR3byIgcHJlZmVyZW5j
ZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwogCiAgICAgLy8gRklYTUU6IEJlY2F1c2Ugd2UncmUgZGly
ZWN0bHkgY2FsbGluZyBtb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDogdG8gZW11bGF0ZSB0
aGUgZ2VzdHVyZSByZWNvZ25pemVyLAogICAgIC8vIHdlIGNhbid0IGp1c3QgdGFwQW5kV2FpdCgp
IGFnYWluIGFuZCBleHBlY3QgdGhlIGZhY3QgdGhhdCBpdCdzIGRpc2FibGVkIHRvIHN0b3AgdGhl
IG1vdXNlIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0TGVnYWN5L2lvcy9EYXRlVGltZUlucHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9EYXRlVGltZUlucHV0c0FjY2Vz
c29yeVZpZXdUZXN0cy5tbQppbmRleCBmNGNkNzVmZTZiZmZmZWY1OTYxMDljYTM2MjcyNDhlZGM5
MDUwOGZkLi5lZTVkMzY1OWViZTkyNGE0OTA1YmUwZTIzMzBmYmM0NTZkNTNiMTkzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvRGF0ZVRpbWVJ
bnB1dHNBY2Nlc3NvcnlWaWV3VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRMZWdhY3kvaW9zL0RhdGVUaW1lSW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3RzLm1tCkBA
IC01MSw3ICs1MSw3IEBAIEBlbmQKIAogc3RhdGljIFVJVGFibGVWaWV3Q2VsbCAqIGNlbGxGb3JS
b3dBdEluZGV4UGF0aChpZCwgU0VMKQogewotICAgIHJldHVybiBbW1tVSVRhYmxlVmlld0NlbGwg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJVGFibGVW
aWV3Q2VsbCBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ1
blRlc3RXaXRoSW5wdXRUeXBlKE5TU3RyaW5nICp0eXBlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KaW5kZXggNzg3ZDNmZWVhYTY5YTg1
NTg3M2RmZGNhNDZlZGIzYjIxOTk1OTc1OS4uOTY3YWNlNTkyZDg1YThlYjg4ODU4ZGRiNmY1YjQ0
ZjJkZWJiY2NlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0
aW9uU2hlZXRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rp
b25TaGVldFRlc3RzLm1tCkBAIC0xNTQsNyArMTU0LDcgQEAgVEVTVChBY3Rpb25TaGVldFRlc3Rz
LCBJbWFnZU1hcERvZXNOb3REZXN0cm95U2VsZWN0aW9uKQogCiBzdGF0aWMgVUlWaWV3ICpzd2l6
emxlZFJlc2l6YWJsZVNuYXBzaG90Vmlld0Zyb21SZWN0KGlkLCBTRUwsIENHUmVjdCByZWN0LCBC
T09MLCBVSUVkZ2VJbnNldHMpCiB7Ci0gICAgcmV0dXJuIFtbW1VJVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdo
dCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhl
aWdodCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBURVNUKEFjdGlvblNoZWV0VGVzdHMsIERhdGFE
ZXRlY3RvcnNMaW5rSXNOb3RQcmVzZW50ZWRBc0FMaW5rKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNzU2NTIyZmQx
ZmQ5MTk2NTRjMTQ3MTcyMDE4NzAzNDJlNzJiMTI4ZC4uMTkwMGE1ODgzNDBjYWQyYzcwNDMzNDY0
ZDZkZDJmZTZiMjE4YjdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCkBAIC0xMjc3LDggKzEyNzcsOCBAQCBURVNUKERy
YWdBbmREcm9wVGVzdHMsIE92ZXJyaWRlRHJvcCkKICAgICBbc2ltdWxhdG9yIHNldERyb3BDb21w
bGV0aW9uQmxvY2s6XihCT09MIGhhbmRsZWQsIE5TQXJyYXkgKml0ZW1Qcm92aWRlcnMpIHsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZWQpOwogICAgICAgICBbaXRlbVByb3ZpZGVycy5maXJz
dE9iamVjdCBsb2FkRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZUhUTUwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKmRhdGEs
IE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqdGV4dCA9IFtbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCI8Ym9keT48L2Jv
ZHk+IiwgdGV4dC5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dCA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiPGJvZHk+PC9ib2R5PiIs
IFt0ZXh0IFVURjhTdHJpbmddKTsKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsK
ICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0RhdGEgPSB0cnVlOwogICAgICAgICB9XTsKQEAg
LTE1NDYsMTAgKzE1NDYsMTAgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBDdXN0b21BY3Rpb25T
aGVldFBvcG92ZXIpCiAKIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgVW5yZXNwb25zaXZlUGFnZURv
ZXNOb3RIYW5nVUkpCiB7Ci0gICAgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uICpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBbW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaWdub3Jl
U3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3RpbmcgPSBZRVM7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRJ
Z25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZzpZRVNdOwogCi0gICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpbW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKS5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0
OkAid2hpbGUoMSk7IiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogCkBAIC0yMDc2LDcgKzIwNzYs
NyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlclNhbml0aXplSFRNTCkKICAg
ICAgICAgYXV0byAqaXRlbSA9IHNlc3Npb24uaXRlbXNbMF0uaXRlbVByb3ZpZGVyOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbaXRlbS5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzIGNvbnRhaW5zT2Jq
ZWN0OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MXSk7CiAgICAgICAgIFtpdGVtIGxv
YWREYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlSFRNTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAq
ZXJyb3IpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICptYXJrdXAgPSBbW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICBhdXRvIG1hcmt1cCA9IGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbbWFya3VwIGNvbnRh
aW5zU3RyaW5nOkAiaGVsbG8iXSk7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbbWFya3VwIGNv
bnRhaW5zU3RyaW5nOkAiLCB3b3JsZCJdKTsKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShbbWFy
a3VwIGNvbnRhaW5zU3RyaW5nOkAic2VjcmV0Il0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvSW5zcGVjdG9yQmFyLm1tCmluZGV4IDI1ZGZkMzRkNjQ1YzM0ZDc3YWQ0MjhlYjA3
N2YwZjEwOWU0MTc3MGYuLjBjZWE4ZjMwZTdlZDIwM2EwYTYzZDA1MDZkM2FkZDkxODRhN2RkMGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0luc3BlY3RvckJhci5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9JbnNwZWN0b3JCYXIubW0KQEAg
LTQyLDkgKzQyLDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlz
aExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogCiAtIChOU0RpY3Rpb25hcnkgKiljb252
ZXJ0QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQogewotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKm5ld0RpY3Rpb25hcnkgPSBbZGljdGlvbmFyeSBtdXRhYmxlQ29weV07Cisg
ICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gYWRvcHROUyhbZGljdGlvbmFyeSBtdXRhYmxlQ29weV0p
OwogICAgIFtuZXdEaWN0aW9uYXJ5IHJlbW92ZU9iamVjdEZvcktleTpOU0ZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWVdOwotICAgIHJldHVybiBbbmV3RGljdGlvbmFyeSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIG5ld0RpY3Rpb25hcnkuYXV0b3JlbGVhc2UoKTsKIH0KIEBlbmQKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvSmF2YXNjcmlwdFVSTE5hdmln
YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZhc2NyaXB0VVJMTmF2
aWdhdGlvbi5tbQppbmRleCBmZjgzMGQwMjNmMDY2MzVhNzlkNjc1YjI4NDRmNzU3MTAzMzMxNzg3
Li40NGY2MDI0YjhhYmZlY2VhYzRkMWQxMTRiNDFlZWVjMmI0ZDRlNDM4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9KYXZhc2NyaXB0VVJMTmF2aWdhdGlv
bi5tbQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKV93ZWJWaWV3UnVuTW9kYWw6KFdLV2ViVmll
dyAqKXdlYlZpZXcKIAogLSAobnVsbGFibGUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVy
ZXMgKil3aW5kb3dGZWF0dXJlcwogewotICAgIGNyZWF0ZWRXZWJWaWV3ID0gW1tbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBjcmVhdGVkV2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFtj
cmVhdGVkV2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogCiAgICAgbmF2RGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xlZ2FjeURyYWdBbmREcm9wVGVzdHMu
bW0KaW5kZXggNWRhZjE0NTY3OGM0ZDJhOThiYmIwNDg3MzRjZWMzMTc1NDgxYTIyYy4uYzg4ZmQ1
MmI2YjYyODlhZjIzYzRiMDgxOGJmMmE0MzVkOTMzNGQ0NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9MZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tCkBAIC00
NSw3ICs0NSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIK
IAogKyAoaW5zdGFuY2V0eXBlKWxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hf
YmxvY2tfdCljb21wbGV0aW9uQmxvY2sKIHsKLSAgICByZXR1cm4gW1tbRnJhbWVMb2FkQ29tcGxl
dGlvbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxv
Y2tdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW0ZyYW1lTG9hZENvbXBsZXRp
b25MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2Nr
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlv
bkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jawpAQCAtMjEyLDcgKzIxMiw3
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIE5TSW1hZ2UgKmdldFRlc3RJ
bWFnZSgpCiB7Ci0gICAgcmV0dXJuIFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNP
ZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4
dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0g
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhDb250ZW50c09mVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJp
Y29uIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogc3RhdGljIFdlYlZpZXcgKndlYlZpZXdB
ZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5tbQppbmRleCAxZDdiYmQ1MTZhZWVjOThmNGZmYTNmNjhmYTFiZDE1M2I0OGE0NDllLi4w
NWIyN2NmNGUxZDViNTAyNDYzZTliYmU0NDdiYmM1ZmYwN2VhYjg2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tCkBA
IC0yNSwxMyArMjUsMTQgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0IDxXZWJLaXQv
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdlYktpdExlZ2FjeSwgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyKQogewogICAgIFdlYkluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsKLSAgICBbW1tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZnJhbWVOYW1lOm5pbCBncm91
cE5hbWU6bmlsXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdKTsKICAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGFzc2Vy
dC4KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV0tXZWJW
aWV3TWFjRWRpdGluZ1Rlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV0tX
ZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tCmluZGV4IGJkMjI1MTYzNjQ5MTU0MTAyZDdiNzg4YTAy
OGExNDgwODBjM2Q0OGMuLjgwMzEzYTcwNWZlNTlmMmJiYWU1MWFlMGY3OWEyZTI4NWY0N2FiZGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dLV2ViVmlld01hY0Vk
aXRpbmdUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9XS1dlYlZp
ZXdNYWNFZGl0aW5nVGVzdHMubW0KQEAgLTEyNiwxNCArMTI2LDE0IEBAIFRFU1QoV0tXZWJWaWV3
TWFjRWRpdGluZ1Rlc3RzLCBEb05vdENyYXNoV2hlbkludGVycHJldGluZ0tleUV2ZW50V2hpbGVE
ZWFsbG9jYXRpCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogCiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7Ci0gICAgICAgIFNsb3dJbnB1dFdlYlZpZXcgKndlYlZpZXcgPSBbW1tTbG93
SW5wdXRXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0
MDApXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tTbG93
SW5wdXRXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0
MDApXSk7CiAgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT5IZWxsbyB3b3Js
ZDwvYm9keT4iXV07CiAgICAgICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKICAgICAgICAgW3dlYlZpZXcgd2FpdEZvck5l
eHRQcmVzZW50YXRpb25VcGRhdGVdOwogICAgICAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKICAgICAgICAgW3dlYlZpZXcgdHlwZUNoYXJhY3RlcjonYSddOwogCi0gICAgICAgIHdl
YlZpZXcuX3dlYl9zdXBlcklucHV0Q29udGV4dC5oYW5kbGVkSW5wdXRNZXRob2RFdmVudEJsb2Nr
ID0gXigpIHsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5fd2ViX3N1cGVySW5wdXRDb250ZXh0Lmhh
bmRsZWRJbnB1dE1ldGhvZEV2ZW50QmxvY2sgPSBeKCkgewogICAgICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICAgICAgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9XZWJWaWV3SWNvbkxvYWRpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9XZWJWaWV3SWNvbkxvYWRpbmcubW0KaW5kZXggMzQ4ZDU1OGUxMDdhMjNmMTc4MGVi
MDdiNWI3YTAyODE5YjM1N2VkMS4uODljZjk4YjAwOTU5ODdiZjBjN2M0MjFlZTk5MmI1OGJjZTRi
MThmNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvV2ViVmlld0lj
b25Mb2FkaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1dlYlZpZXdJ
Y29uTG9hZGluZy5tbQpAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgTlNEYXRhICpjdXN0b21GYXZp
Y29uRGF0YSgpCiAKIHN0YXRpYyBOU0ltYWdlICppbWFnZUZyb21EYXRhKE5TRGF0YSAqZGF0YSkK
IHsKLSAgICBhdXRvICppbWFnZSA9IFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFd
OworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRh
OmRhdGFdKTsKIAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtNzAsNyAr
NzAsNyBAQCBzdGF0aWMgTlNJbWFnZSAqaW1hZ2VGcm9tRGF0YShOU0RhdGEgKmRhdGEpCiAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgW2ltYWdlIHNldFNpemU6TlNNYWtlU2l6ZSgx
NiwgMTYpXTsKIAotICAgIHJldHVybiBbaW1hZ2UgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBp
bWFnZS5hdXRvcmVsZWFzZSgpOwogfQogCiBAaW50ZXJmYWNlIEljb25Mb2FkaW5nUHJvdG9jb2wg
OiBOU1VSTFByb3RvY29sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RQcm90b2NvbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1t
CmluZGV4IGFmZDZkZGM5YjdlOTIyZmI2N2NhYjc5YjYwYzkwNzUwMDkxZGE4MzIuLjIxM2E3Zjk5
NzUzZjJhOTNiNDRjNjE4Y2FlZDJlZTQ0YzcyN2NlMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFByb3RvY29sLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFByb3RvY29sLm1tCkBAIC03NiwxNyArNzYsMjAgQEAgKyAodm9pZCl1bnJlZ2lz
dGVyCiAgICAgdGVzdFNjaGVtZSgpID0gbmlsOwogfQogCi1zdGF0aWMgTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIE5TU3RyaW5nICo+ICphZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzOworc3RhdGlj
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4+JiBhZGRpdGlv
bmFsUmVzcG9uc2VIZWFkZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPj4+IF9hZGRpdGlvbmFsUmVz
cG9uc2VIZWFkZXJzOworICAgIHJldHVybiBfYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczsKK30K
IAogKyAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopYWRkaXRpb25hbFJl
c3BvbnNlSGVhZGVycwogewotICAgIHJldHVybiBhZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzOwor
ICAgIHJldHVybiBhZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzKCkuZ2V0KCk7CiB9CiAKICsgKHZv
aWQpc2V0QWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IE5TU3RyaW5nICo+ICopYWRkaXRpb25hbEhlYWRlcnMKIHsKLSAgICBbYWRkaXRpb25hbFJlc3Bv
bnNlSGVhZGVycyBhdXRvcmVsZWFzZV07Ci0gICAgYWRkaXRpb25hbFJlc3BvbnNlSGVhZGVycyA9
IFthZGRpdGlvbmFsSGVhZGVycyBjb3B5XTsKKyAgICBhZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJz
KCkgPSBhZG9wdE5TKFthZGRpdGlvbmFsSGVhZGVycyBjb3B5XSk7CiB9CiAKIHN0YXRpYyBOU1VS
TCAqY3JlYXRlUmVkaXJlY3RVUkwoTlNTdHJpbmcgKnF1ZXJ5KQpAQCAtMTM2LDggKzEzOSw4IEBA
IC0gKHZvaWQpc3RhcnRMb2FkaW5nCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcmVzcG9uc2VI
ZWFkZXJzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eToyXTsK
ICAgICByZXNwb25zZUhlYWRlcnNbQCJDb250ZW50LVR5cGUiXSA9IGNvbnRlbnRUeXBlOwogICAg
IHJlc3BvbnNlSGVhZGVyc1tAIkNvbnRlbnQtTGVuZ3RoIl0gPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiV0dSIsIGRhdGEubGVuZ3RoXTsKLSAgICBpZiAoYWRkaXRpb25hbFJlc3BvbnNl
SGVhZGVycykKLSAgICAgICAgW3Jlc3BvbnNlSGVhZGVycyBhZGRFbnRyaWVzRnJvbURpY3Rpb25h
cnk6YWRkaXRpb25hbFJlc3BvbnNlSGVhZGVyc107CisgICAgaWYgKGF1dG8mIGhlYWRlcnMgPSBh
ZGRpdGlvbmFsUmVzcG9uc2VIZWFkZXJzKCkpCisgICAgICAgIFtyZXNwb25zZUhlYWRlcnMgYWRk
RW50cmllc0Zyb21EaWN0aW9uYXJ5OmhlYWRlcnMuZ2V0KCldOwogCiAgICAgYXV0byByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVz
dFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6
cmVzcG9uc2VIZWFkZXJzXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQppbmRleCA4NzEzNzkwYmE3OGIwODA1YWM4Y2I4MzIzNDRkNjdjMzhjOTFiNzgyLi4z
NGE0NjQwOWMxMjJlYzdmYTJhNjg2ZWJhZGY5NTExOWE4YmE1MmEyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yMDMsMTYgKzIwMywxNiBAQCAtIChp
ZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNjcmlwdCB3aXRoQXJn
dW1lbnRzOihOU0RpY3Rpb25hcgogICAgICAgICAqZXJyb3JPdXQgPSBuaWw7CiAKICAgICBSZXRh
aW5QdHI8aWQ+IGV2YWxSZXN1bHQ7CisgICAgUmV0YWluUHRyPE5TRXJyb3I+IHN0cm9uZ0Vycm9y
OwogICAgIFtzZWxmIGNhbGxBc3luY0phdmFTY3JpcHQ6c2NyaXB0IGFyZ3VtZW50czphcmd1bWVu
dHMgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQucGFnZVdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAg
ICBldmFsUmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBpZiAoZXJyb3JPdXQpCi0gICAgICAgICAg
ICAqZXJyb3JPdXQgPSBbZXJyb3IgcmV0YWluXTsKKyAgICAgICAgc3Ryb25nRXJyb3IgPSBlcnJv
cjsKICAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7CiAgICAgfV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKIAogICAg
IGlmIChlcnJvck91dCkKLSAgICAgICAgWyplcnJvck91dCBhdXRvcmVsZWFzZV07CisgICAgICAg
ICplcnJvck91dCA9IHN0cm9uZ0Vycm9yLmF1dG9yZWxlYXNlKCk7CiAKICAgICByZXR1cm4gZXZh
bFJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQpAQCAtNDE2LDggKzQxNiw4IEBAIEBpbXBsZW1lbnRh
dGlvbiBUZXN0V0tXZWJWaWV3IHsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmRlZmF1bHRDb25maWd1
cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246
ZGVmYXVsdENvbmZpZ3VyYXRpb25dOworICAgIGF1dG8gZGVmYXVsdENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHJldHVy
biBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246ZGVmYXVsdENvbmZpZ3Vy
YXRpb24uZ2V0KCldOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uCkBAIC00NTQsNyArNDU0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW8KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dl
YlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246KF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqKXByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bgogewotICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uXSBh
dXRvcmVsZWFzZV1dOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOmFkb3B0TlMo
W1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbl0pLmdldCgpXTsKICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpm
cmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOwogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCmluZGV4IDI3MWU2NWMz
ZWY3NjdkNWQ2MmZmNTU3MDQ4MWM2ZGY3MDUyODNjMTUuLmUwNDk5NWQ0MzM3MTYxMjI4OTQ2ZDQ3
Mjk5ZTNkNmZlZDcyYzBlNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCkBAIC0xNzMsNyArMTczLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoUHJvdmlkZXJzOihOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICopcHJvdmlk
ZXJzIGxvY2F0aW8KIHsKICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGlu
IHByb3ZpZGVycykKLSAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDpbW1tVSURyYWdJdGVtIGFsbG9j
XSBpbml0V2l0aEl0ZW1Qcm92aWRlcjppdGVtUHJvdmlkZXJdIGF1dG9yZWxlYXNlXV07CisgICAg
ICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJRHJhZ0l0ZW0gYWxsb2NdIGluaXRXaXRo
SXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlcl0pLmdldCgpXTsKIAogICAgIHJldHVybiBbc3VwZXIg
aW5pdFdpdGhJdGVtczppdGVtcy5nZXQoKSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IHdpbmRv
dzp3aW5kb3cgYWxsb3dNb3ZlOmFsbG93TW92ZV07CiB9CkBAIC0zNDQsOSArMzQ0LDkgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ZyYW1lOihDR1JlY3QpZnJhbWUKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246
KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKGNvbmZp
Z3VyYXRpb24pCi0gICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6W1tbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dIGF1dG9yZWxlYXNlXV07CisgICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZp
ZXc6YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSkuZ2V0KCldOwogCi0gICAgcmV0dXJuIFtzZWxmIGlu
aXRXaXRoV2ViVmlldzpbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1l
XSBhdXRvcmVsZWFzZV1dOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFdlYlZpZXc6YWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdKS5nZXQoKV07CiB9
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3CkBAIC04OTIsNyArODkyLDcgQEAgLSAoVUlEcm9wUHJvcG9zYWwgKilfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyB3aWxsVXBkYXRlRHJvcFByb3Bvc2FsVG9Qcm9wb3MKICAgICBpZiAo
IXNlbGYub3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2spCiAgICAgICAgIHJldHVybiBwcm9wb3NhbDsK
IAotICAgIHJldHVybiBbW1tVSURyb3BQcm9wb3NhbCBhbGxvY10gaW5pdFdpdGhEcm9wT3BlcmF0
aW9uOnNlbGYub3ZlcnJpZGVEcmFnVXBkYXRlQmxvY2socHJvcG9zYWwub3BlcmF0aW9uLCBzZXNz
aW9uKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlEcm9wUHJvcG9zYWwg
YWxsb2NdIGluaXRXaXRoRHJvcE9wZXJhdGlvbjpzZWxmLm92ZXJyaWRlRHJhZ1VwZGF0ZUJsb2Nr
KHByb3Bvc2FsLm9wZXJhdGlvbiwgc2Vzc2lvbildKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWRqdXN0ZWREYXRhSW50ZXJh
Y3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOihOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Q
cm92aWRlciByZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0
cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0RyYWdBbmREcm9wU2ltdWxhdG9yTWFjLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KaW5kZXgg
NGI0ODM4ZWRjODgwMjE2ZGY5ZGNlYjQ4ZjI3YzA2MjViMDFlOGU3Ny4uNzg0ZWNmNTNmY2EyMDA5
OGQ4YTRjNzdiZmNkMDM2NGExMDA5YjIwYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvRHJhZ0FuZERyb3BTaW11bGF0b3JNYWMubW0KQEAgLTc2LDkgKzc2LDkgQEAgQGVuZAog
Y29uc3QgZG91YmxlIGluaXRpYWxNb3VzZURyYWdEaXN0YW5jZSA9IDQ1OwogY29uc3QgZG91Ymxl
IGRyYWdVcGRhdGVQcm9ncmVzc0luY3JlbWVudCA9IDAuMDU7CiAKLXN0YXRpYyBOU0ltYWdlICpk
ZWZhdWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQorc3RhdGljIFJldGFpblB0cjxOU0ltYWdlPiBkZWZh
dWx0RXh0ZXJuYWxEcmFnSW1hZ2UoKQogewotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pOwogfQogCiBAaW1wbGVtZW50YXRpb24gRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgewpAQCAtMTExLDcgKzExMSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFdlYlZpZXdGcmFtZTooQ0dSZWN0KWZyYW1lCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
ZWJWaWV3RnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbgogewogICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7
Ci0gICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gPzog
W1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdIHNpbXVs
YXRvcjpzZWxmXSk7CisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24gPzogYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KS5nZXQoKSBzaW11bGF0b3I6c2VsZl0pOwogICAgICAgICBfZmlsZVByb21pc2VEZXN0aW5hdGlv
blVSTHMgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKICAgICAgICAgW193ZWJWaWV3
IHNldFVJRGVsZWdhdGU6c2VsZl07CiAgICAgICAgIHNlbGYuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
ID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V0tEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkOwpAQCAtMTYyLDggKzE2Miw4IEBAIC0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClmbGlwcGVk
U3RhcnRMb2NhdGlvbiB0bzooQ0dQb2ludClmbGlwcGVkRW5kTG9jYXRpb24KIAogICAgIGlmIChO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBzZWxmLmV4dGVybmFsRHJhZ1Bhc3RlYm9hcmQpIHsK
ICAgICAgICAgTlNQb2ludCBzdGFydExvY2F0aW9uSW5WaWV3ID0gW193ZWJWaWV3IGNvbnZlcnRQ
b2ludDpfc3RhcnRMb2NhdGlvbkluV2luZG93IGZyb21WaWV3Om5pbF07Ci0gICAgICAgIE5TSW1h
Z2UgKmRyYWdJbWFnZSA9IHNlbGYuZXh0ZXJuYWxEcmFnSW1hZ2UgPzogZGVmYXVsdEV4dGVybmFs
RHJhZ0ltYWdlKCk7Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1EcmFnSW5XZWJWaWV3Ol93ZWJWaWV3
LmdldCgpIGF0TG9jYXRpb246c3RhcnRMb2NhdGlvbkluVmlldyB3aXRoSW1hZ2U6ZHJhZ0ltYWdl
IHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6bmlsXTsKKyAgICAgICAgYXV0byBkcmFnSW1h
Z2UgPSAhc2VsZi5leHRlcm5hbERyYWdJbWFnZSA/IGRlZmF1bHRFeHRlcm5hbERyYWdJbWFnZSgp
OiBuaWw7CisgICAgICAgIFtzZWxmIHBlcmZvcm1EcmFnSW5XZWJWaWV3Ol93ZWJWaWV3LmdldCgp
IGF0TG9jYXRpb246c3RhcnRMb2NhdGlvbkluVmlldyB3aXRoSW1hZ2U6ZHJhZ0ltYWdlLmdldCgp
IHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6bmlsXTsKICAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZfZG9uZVdhaXRpbmdGb3JEcm9wKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGVmZGFm
OGM1MmU4OWJlYjdjMzE5NmJmNmM4ZmNlZmY2YTZiMGViYTMuLjQ0MjRkOTI5MjE0OWMxZTJhNmU0
NGU0NjQ5MGM1MWFiNTliYWFhYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQpAQCAtMTkyNyw3ICsxOTI3LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGUK
IAogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVKU1N0cmluZ1JlZihpZCBz
dHJpbmcpCiB7Ci0gICAgaWQgbXV0YWJsZVN0cmluZyA9IFtbW05TTXV0YWJsZVN0cmluZyBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gbXV0YWJsZVN0cmluZyA9IGFkb3B0TlMo
W1tOU011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdKTsKICAgICBpZCBhdHRyaWJ1dGVzID0gW3N0
cmluZyBhdHRyaWJ1dGVzQXRJbmRleDowIGVmZmVjdGl2ZVJhbmdlOm5pbF07CiAgICAgaWQgYXR0
cmlidXRlRW51bWVyYXRpb25CbG9jayA9IF4oTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
YXR0cnMsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKnN0b3ApIHsKICAgICAgICAgQk9PTCBtaXNzcGVs
bGVkID0gW1thdHRycyBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRB
dHRyaWJ1dGVdIGJvb2xWYWx1ZV07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNjViMThkMzc5NGJkMjAzZDZlOGY1ODJm
NjlmZmYxNjkwNzBjYzQxMy4uY2UzNmZiYTJkNGJiMTUxZjg3OWUzMWExNTQyZDRkMDZlOWUyOWRl
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQpAQCAtMTMyLDE2ICsxMzIsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1Jbml0aWFsaXplRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFQK
ICAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24gPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Np
b24oKTsKICAgICBhdXRvIHN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTCA9IG9wdGlvbnMuc3Rh
bmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMKCk7CiAgICAgaWYgKHVzZUVwaGVtZXJhbFNlc3Npb24g
fHwgc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMLmxlbmd0aCgpIHx8IG9wdGlvbnMuZW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeSgpKSB7Ci0gICAgICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNv
bmZpZyA9IHVzZUVwaGVtZXJhbFNlc3Npb24gPyBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFz
ZV0gOiBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWcgPSB1c2VFcGhl
bWVyYWxTZXNzaW9uID8gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKSA6IGFkb3B0TlMoW1tfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgICAgICBpZiAo
IXVzZUVwaGVtZXJhbFNlc3Npb24pCi0gICAgICAgICAgICBjb25maWd1cmVXZWJzaXRlRGF0YVN0
b3JlVGVtcG9yYXJ5RGlyZWN0b3JpZXMoKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25S
ZWYpd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyk7CisgICAgICAgICAgICBjb25maWd1cmVXZWJzaXRl
RGF0YVN0b3JlVGVtcG9yYXJ5RGlyZWN0b3JpZXMoKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25SZWYpd2Vic2l0ZURhdGFTdG9yZUNvbmZpZy5nZXQoKSk7CiAgICAgICAgIGlmIChzdGFu
ZGFsb25lV2ViQXBwbGljYXRpb25VUkwubGVuZ3RoKCkpCiAgICAgICAgICAgICBbd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZyBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnN0YW5kYWxvbmVXZWJBcHBsaWNh
dGlvblVSTC5jX3N0cigpXV1dOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlm
IChvcHRpb25zLmVuYWJsZUluQXBwQnJvd3NlclByaXZhY3koKSkKICAgICAgICAgICAgIFt3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlnIHNldEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lGb3JUZXN0aW5n
OllFU107CiAjZW5kaWYKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKF9fYnJpZGdlIFdL
V2Vic2l0ZURhdGFTdG9yZVJlZilbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ10gYXV0b3JlbGVhc2VdOworICAg
ICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlUmVm
KWFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZy5nZXQoKV0pLmdldCgpOwogICAgIH0gZWxzZQogICAg
ICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlUmVm
KWdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7CiB9CkBAIC0xOTEs
MTEgKzE5MSwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXco
V0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogCiBQbGF0Zm9ybVdlYlZpZXcq
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcq
IHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb25zKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKm5ld0NvbmZpZ3VyYXRpb24g
PSBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBu
ZXdDb25maWd1cmF0aW9uLl9yZWxhdGVkV2ViVmlldyA9IHN0YXRpY19jYXN0PFdLV2ViVmlldyo+
KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKTsKLSAgICBpZiAobmV3Q29uZmlndXJhdGlvbi5f
cmVsYXRlZFdlYlZpZXcpCi0gICAgICAgIG5ld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSA9IG5ld0NvbmZpZ3VyYXRpb24uX3JlbGF0ZWRXZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZTsKLSAgICBQbGF0Zm9ybVdlYlZpZXcqIHZpZXcgPSBuZXcgUGxhdGZvcm1XZWJW
aWV3KG5ld0NvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOworICAgIGF1dG8gbmV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNvcHldKTsKKyAgICBbbmV3
Q29uZmlndXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4o
cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpXTsKKyAgICBpZiAoW25ld0NvbmZpZ3VyYXRpb24g
X3JlbGF0ZWRXZWJWaWV3XSkKKyAgICAgICAgW25ld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpbbmV3Q29uZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddLmNvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZV07CisgICAgUGxhdGZvcm1XZWJWaWV3KiB2aWV3ID0gbmV3IFBsYXRm
b3JtV2ViVmlldyhuZXdDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hD
cmVhdGluZ1BsYXRmb3JtV2ViVmlldyh2aWV3LCBvcHRpb25zKTsKICAgICByZXR1cm4gdmlldzsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJh
dG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0K
aW5kZXggZmZmYjE5MDQ0YzAyNTI4MTQzZGI1NGMxMzU2MzM5YTgyZDdkN2I0Yy4uMTJiMzU2MTcz
MmE3ZTQzM2UzNzAyN2YxMzJlZjQzZDgxZjkwMGRkNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTExNDMsMTIgKzExNDMsMTIgQEAg
LSAodm9pZClzZW5kRXZlbnRTdHJlYW06KE5TRGljdGlvbmFyeSAqKWV2ZW50SW5mbyBjb21wbGV0
aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQKICAgICB9CiAgICAgCiAgICAgTlNEaWN0aW9uYXJ5KiB0
aHJlYWREYXRhID0gQHsKLSAgICAgICAgQCJldmVudEluZm8iOiBbW2V2ZW50SW5mbyBjb3B5XSBh
dXRvcmVsZWFzZV0sCi0gICAgICAgIEAiY29tcGxldGlvbkJsb2NrIjogW1tjb21wbGV0aW9uQmxv
Y2sgY29weV0gYXV0b3JlbGVhc2VdCisgICAgICAgIEAiZXZlbnRJbmZvIjogYWRvcHROUyhbZXZl
bnRJbmZvIGNvcHldKS5nZXQoKSwKKyAgICAgICAgQCJjb21wbGV0aW9uQmxvY2siOiBhZG9wdE5T
KFtjb21wbGV0aW9uQmxvY2sgY29weV0pLmdldCgpCiAgICAgfTsKICAgICAKLSAgICBOU1RocmVh
ZCAqZXZlbnREaXNwYXRjaFRocmVhZCA9IFtbW05TVGhyZWFkIGFsbG9jXSBpbml0V2l0aFRhcmdl
dDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihldmVudERpc3BhdGNoVGhyZWFkRW50cnk6KSBvYmpl
Y3Q6dGhyZWFkRGF0YV0gYXV0b3JlbGVhc2VdOwotICAgIGV2ZW50RGlzcGF0Y2hUaHJlYWQucXVh
bGl0eU9mU2VydmljZSA9IE5TUXVhbGl0eU9mU2VydmljZVVzZXJJbnRlcmFjdGl2ZTsKKyAgICBh
dXRvIGV2ZW50RGlzcGF0Y2hUaHJlYWQgPSBhZG9wdE5TKFtbTlNUaHJlYWQgYWxsb2NdIGluaXRX
aXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGV2ZW50RGlzcGF0Y2hUaHJlYWRFbnRy
eTopIG9iamVjdDp0aHJlYWREYXRhXSk7CisgICAgW2V2ZW50RGlzcGF0Y2hUaHJlYWQgc2V0UXVh
bGl0eU9mU2VydmljZTpOU1F1YWxpdHlPZlNlcnZpY2VVc2VySW50ZXJhY3RpdmVdOwogICAgIFtl
dmVudERpc3BhdGNoVGhyZWFkIHN0YXJ0XTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>