<?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>208891</bug_id>
          
          <creation_ts>2020-03-10 16:12:28 -0700</creation_ts>
          <short_desc>Modern WebKit: QuickLook for attachment elements</short_desc>
          <delta_ts>2022-09-08 13:18:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210814</blocked>
    
    <blocked>211160</blocked>
    
    <blocked>211660</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikos Mouchtaris">nmouchtaris</reporter>
          <assigned_to name="Nikos Mouchtaris">nmouchtaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1628422</commentid>
    <comment_count>0</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-10 16:12:28 -0700</bug_when>
    <thetext>WK2 Quicklook for attachments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636763</commentid>
    <comment_count>1</comment_count>
      <attachid>395233</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-01 18:41:53 -0700</bug_when>
    <thetext>Created attachment 395233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636764</commentid>
    <comment_count>2</comment_count>
      <attachid>395234</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-01 18:46:36 -0700</bug_when>
    <thetext>Created attachment 395234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638881</commentid>
    <comment_count>3</comment_count>
      <attachid>395234</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-07 16:44:25 -0700</bug_when>
    <thetext>Comment on attachment 395234
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Both changelogs could do with more comments at the function level about what&apos;s going on and why.

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:252
&gt; +void HTMLAttachmentElement::updateThumbnailRepresentation(const RefPtr&lt;Image&gt; qlThumbnailRepresentation)

I think we should avoid referencing QuickLook at this platform-independent layer and just refer to it as a thumbnail or something

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1826
&gt; +            iconRect = FloatRect(FloatPoint((attachmentRect.width() / 2) - (65 / 2), 0), FloatSize(65, 65));

There&apos;s a spot for magic numbers up by the #if ENABLE(ATTACHMENT_ELEMENT) above

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1832
&gt; +            if (icon) {

I think all of the layout and painting code can be refactored so there&apos;s only one copy of the iconRect/yOffset computation and drawImage?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:189
&gt; +#import &lt;QuickLookThumbnailing/QLThumbnailGenerator.h&gt;
&gt; +

I don&apos;t think this needs to be here?

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:35
&gt; +#import &quot;QLThumbnailLoad.h&quot;

This is a weird name! Maybe expand it out a bit. QuickLookThumbnailLoader or something :)

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:366
&gt; +static RefPtr&lt;WebKit::ShareableBitmap&gt; convertNSImageToBitmap(NSImage *image, const WebCore::IntSize&amp; size)

Is there not code somewhere shared to do this already? (it might be two steps, NSImage-&gt;Image-&gt;ShareableBitmap?)

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:379
&gt; +    ALLOW_DEPRECATED_DECLARATIONS_BEGIN

Not great to add /new/ code that uses deprecated API. Is there no way to do this without deprecated API?

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:410
&gt; +void (^completionHandler)(BOOL success);

Having this just chilling in the WebKit namespace in WebPageProxyCocoa with the name &quot;completionHandler&quot; seems ripe for conflict. Also, I&apos;m kind of confused what it is? You make a blockPtr from it below, but I don&apos;t see a definition anywhere? Something is not right here.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:412
&gt; +void WebPageProxy::getQLThumbnailForGenerationRequestion(WKQLThumbnailLoadOperation *operation)

&quot;Requestion&quot;!

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:418
&gt; +            auto convertedImage = convertNSImageToBitmap(operation.qlThumbnailMac, WebCore::IntSize(1280, 1280));

That is a huuuuuuuuge thumbnail, for what ends up being a very small icon at its largest.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:432
&gt; +    [[WKQLThumbnailQueueManager sharedInstance].qlThumbnailGenerationQueue addOperation:operation];

Not sure about all the NSOperation stuff, will have to think about it. We don&apos;t often use it.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:438
&gt; +    WKQLThumbnailLoadOperation *operation = [[WKQLThumbnailLoadOperation alloc] initWithAttachment:fileWrapper identifier:identifier];

Who frees this?

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.h:1
&gt; +// Copyright Â© 2020 ___ORGANIZATIONNAME___ All rights reserved.

Not the right copyright header again

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.h:25
&gt; +#if PLATFORM(MAC)
&gt; +@property (nonatomic, readwrite, assign) NSImage *qlThumbnailMac;
&gt; +#endif
&gt; +
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +@property (nonatomic, readwrite, assign) UIImage *qlThumbnailiOS;
&gt; +#endif

You can have just one property that varies in type, instead of varying both the property name and type.

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.h:29
&gt; +@property (nonatomic, readwrite, assign) NSString *contentType;

In general you don&apos;t have to say &apos;readwrite&apos;, that is the default. Also, &apos;assign&apos; is not likely right (NSObjects should probably be retain or copy, depending on the ownership model)

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.h:38
&gt; +- (id)initWithAttachment:(NSFileWrapper *)fileWrapper identifier: (NSString *)identifier;
&gt; +- (id)initWithURL:(NSString *)fileUrl identifier: (NSString *)identifier;

No space after the :s

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.mm:1
&gt; +// Copyright Â© 2020 ___ORGANIZATIONNAME___ All rights reserved.

Not the right copyright header again

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.mm:36
&gt; +        _identifier = [identifier copy];

Who frees this?

&gt; Source/WebKit/UIProcess/QLThumbnailLoad.mm:62
&gt; +        _filePath = [[NSURL fileURLWithPath:fileUrl] copy];

Another leak as far as I can see

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1591
&gt; +    void getQLThumbnailForAttachment(const String&amp;, const String&amp;);
&gt; +    void getQLThumbnailForFileWrapper(NSFileWrapper*, const String&amp;);
&gt; +    void getQLThumbnailForGenerationRequestion(WKQLThumbnailLoadOperation*);

I think: drop the QL, and the names are much better. You could even imagine another platform implementing this using those names (but not if they mentioned &quot;QL&quot; or &quot;QuickLook&quot;).

Also, the `get` prefix usually indicates an out argument. Maybe these should have a &quot;request-&quot; prefix instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641429</commentid>
    <comment_count>4</comment_count>
      <attachid>395234</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-14 10:03:42 -0700</bug_when>
    <thetext>Comment on attachment 395234
Patch

Marking r- based on Tim&apos;s comments.  Please post a new patch addressing review comments, and make sure Mac and (if possible) WinCario builds are fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641929</commentid>
    <comment_count>5</comment_count>
      <attachid>396563</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-15 13:05:39 -0700</bug_when>
    <thetext>Created attachment 396563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641988</commentid>
    <comment_count>6</comment_count>
      <attachid>396577</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-15 14:31:25 -0700</bug_when>
    <thetext>Created attachment 396577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642405</commentid>
    <comment_count>7</comment_count>
      <attachid>396689</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-16 12:50:51 -0700</bug_when>
    <thetext>Created attachment 396689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642412</commentid>
    <comment_count>8</comment_count>
      <attachid>396689</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-16 13:10:29 -0700</bug_when>
    <thetext>Comment on attachment 396689
Patch

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

&gt; Source/WTF/wtf/PlatformEnableCocoa.h:289
&gt; +#define ENABLE_QLTHUMBNAIL_ATTACHMENT 1

This could also be a HAVE macro (&quot;I have the platform framework QuickLookThumbnailing&quot; -&gt; HAVE(QUICKLOOK_THUMBNAILING)).

An alternative name for the ENABLE form: ENABLE(ATTACHMENT_ELEMENT_THUMBNAILS)

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:254
&gt; +void HTMLAttachmentElement::updateThumbnailRepresentation(const RefPtr&lt;Image&gt; thumbnailRepresentation)
&gt; +{
&gt; +    m_thumbnailRepresentation = thumbnailRepresentation;

I wonder if the word &quot;representation&quot; really buys us anything. &quot;updateThumbnail&quot;, &quot;m_thumbnail&quot;, etc. all seem like they are sufficient to me. Thoughts?

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1585
&gt; +const CGFloat defaultThumbnailIconWidth = 65;

Remind me where this came from? (I&apos;m surprised it&apos;s not the same as attachmentIconSize, but maybe it makes sense!).

&gt; Source/WebKit/Configurations/WebKit.xcconfig:127
&gt; +WK_QUICKLOOK_LDFLAGS = $(WK_QUICKLOOK_LDFLAGS_$(WK_PLATFORM_NAME));

Should be WK_QUICKLOOK_THUMBNAILING_LDFLAGS, IMO. QuickLook.framework is a different (but related) thing.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:366
&gt; +static RefPtr&lt;WebKit::ShareableBitmap&gt; convertNSImageToBitmap(NSImage *image, const WebCore::IntSize&amp; size)

You could smush these together (convertPlatformImageToShareableBitmap, taking a PlatformImage typedef), and then only a few lines in the middle would have to be ifdeffed.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:379
&gt; +    ALLOW_DEPRECATED_DECLARATIONS_BEGIN

I still think you can find a non-deprecated way to do this. I think what you want is:

[NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithCGContext:graphicsContext-&gt;platformContext() flipped:YES]];

graphicsContextWithCGContext is available back to 10.10 so it should be no problem.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:403
&gt; +    [image drawInRect: CGRectMake(0, 0, bitmap-&gt;size().width(), bitmap-&gt;size().height())];

No space after :

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:139
&gt; +-(UIImage *)getThumbnailiOS {

Braces are in the wrong place (should be alone on the next line), and this should not have a get- prefix because it does not have any out arguments.
Also, I would recommend naming both of these methods the same thing, just -thumbnail, and only having their return value differ. That way, the caller (above) doesn&apos;t have to have extraneous #ifdefs, and we don&apos;t have to say weird things like iOS and Mac in method names.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:151
&gt; +- (NSString *)getAttachmentIdentifier

Another get!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642420</commentid>
    <comment_count>9</comment_count>
      <attachid>396689</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-16 13:31:37 -0700</bug_when>
    <thetext>Comment on attachment 396689
Patch

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

review- because this has at least one reference counting mistake that must be fixed

&gt; Source/WebCore/ChangeLog:3
&gt; +        WK2 Quicklook for attachments

Let&apos;s say modern WebKit if we need to distinguish from WebKitLegacy, and not &quot;WK2&quot;. QuickLook and not &quot;Quicklook&quot;.

&gt; Source/WebCore/ChangeLog:9
&gt; +        ql thumbnail. Added code to render this image on both ios and mac.

Let&apos;s say QuickLook and not &quot;ql&quot;. Also, lets use iOS and Mac, not &quot;ios&quot; and &quot;mac&quot;.

&gt; Source/WebCore/ChangeLog:15
&gt; +        Allow setting of thumbnial member.

typo: &quot;thumbnail&quot;

&gt; Source/WebKit/ChangeLog:8
&gt; +        Allow attachment elements to render quicklook thumbnail generated

Let&apos;s say QuickLook and not &quot;quicklook&quot;.

&gt; Source/WebCore/html/HTMLAttachmentElement.h:61
&gt; +    WEBCORE_EXPORT void updateThumbnailRepresentation(const RefPtr&lt;Image&gt; thumbnailRepresentation);

This type doesn’t make sense; the use of const unusual here since it’s not so meaningful when applied to a type. Some possible types that would make more sense:

    Image*
    const RefPtr&lt;Image&gt;&amp;
    Image&amp;
    const Ref&lt;Image&gt;&amp;

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1585
&gt; +const CGFloat defaultThumbnailIconWidth = 65;

In new code we want to use constexpr for things like this instead of const.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1854
&gt; +    context.drawImage(*iconImage.get(), info.iconRect);

Should not need &quot;.get()&quot; here if we are using *.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2781
&gt; +    auto thumbnailIcon = attachment.attachmentElement().thumbnailRepresentation();
&gt; +    if (thumbnailIcon) {

Better to define the local variable inside the if so it&apos;s scoped:

    if (auto thumbnailIcon = attachment.attachmentElement().thumbnailRepresentation()) {

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2782
&gt; +        context.drawImage(*thumbnailIcon.get(), layout.iconRect);

Should not need &quot;.get()&quot; here if we are using const.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:377
&gt; +    RetainPtr&lt;NSGraphicsContext&gt; savedContext = [NSGraphicsContext currentContext];

I guess you just moved this code. How about writing it this way?

    auto savedContext = retainPtr([NSGraphicsContext currentContext]);

Also the LocalCurrentGraphicsContext seems to exist for this purpose. Too bad we can’t use that.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:381
&gt; +    ALLOW_DEPRECATED_DECLARATIONS_BEGIN
&gt; +    [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:graphicsContext-&gt;platformContext() flipped:YES]];
&gt; +    ALLOW_DEPRECATED_DECLARATIONS_END

Seems unfortunate that we are using this deprecated declaration in newly written code. Is there a non-deprecated alternative available?

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:421
&gt; +            if (convertedImage == nullptr)

WebKit coding style says:

    if (!convertedImage)
        return;

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:25
&gt; +*/
&gt; +#if ENABLE(QLTHUMBNAIL_ATTACHMENT)

Missing blank line here.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:26
&gt; +#import &lt;Foundation/Foundation.h&gt;

Seems highly unlikely this included is needed. Pretty sure Foundation.h is always included in any Objective-C compilation.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:29
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +#import &lt;UIKit/UIKit.h&gt;
&gt; +#endif

Normally we’d use a forward declaration of the Objective-C class we are using rather than importing the UIKit header.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:30
&gt; +@interface WKQLThumbnailQueueManager : NSObject

Missing blank line before this.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:33
&gt; +- (id)init;

Typically don’t need to declare this since it’s inherited from NSObject. We can override it, of course.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:43
&gt; +@property (nonatomic, retain) NSString *contentType;

Normally we’d use copy for an NSString, not retain.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:46
&gt; +- (id)initWithAttachment:(NSFileWrapper *)fileWrapper identifier: (NSString *)identifier;

No space after the colon here.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:47
&gt; +- (id)initWithURL:(NSString *)fileUrl identifier: (NSString *)identifier;

Should be fileURL, also no space after the colon.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:48
&gt; +- (NSString *)getAttachmentIdentifier;

We don’t use get in these kinds of method names in WebKit coding style or even Cocoa coding style.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:50
&gt; +-(UIImage *)getThumbnailiOS;

Ditto. Also, doesn’t need to mention the platform in the name.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:53
&gt; +-(NSImage *)getThumbnailMac;

Ditto.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:28
&gt; +#import &quot;config.h&quot;
&gt; +#import &quot;QuickLookThumbnailLoader.h&quot;

Typically we put these outside the #if.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:39
&gt; +        _qlThumbnailGenerationQueue = [[NSOperationQueue alloc] init];

I don’t think we need the prefix &quot;ql&quot; in this field name. Also I don’t see where it’s defined.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:50
&gt; +    static WKQLThumbnailQueueManager *sharedInstance = nil;
&gt; +    static dispatch_once_t isDispatched;
&gt; +
&gt; +    dispatch_once(&amp;isDispatched, ^{
&gt; +        sharedInstance = [[WKQLThumbnailQueueManager alloc] init];
&gt; +    });

If this is used from a single thread.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:62
&gt; +    RetainPtr&lt;NSImage&gt; _qlThumbnail;

Should just be named _thumbnail.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:65
&gt; +    RetainPtr&lt;UIImage&gt; _qlThumbnail;

Ditto.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:72
&gt; +        _fileWrapper =  adoptNS(fileWrapper);

This is wrong and will result in over-release. Do not call adoptNS.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:75
&gt; +        _qlThumbnail = nullptr;
&gt; +        _filePath = nullptr;

Unnecessary. Objective-C starts all fields as null or NO.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:84
&gt; +        _fileWrapper = nullptr;

Unnecessary.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:85
&gt; +        _identifier =  adoptNS([identifier copy]);

Extra space here before adoptNS.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:86
&gt; +        _qlThumbnail = nullptr;

Unnecessary.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:88
&gt; +        _shouldWrite = NO;

Unnecessary.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:96
&gt; +    
&gt; +    NSLog(@&quot;Starting %@&quot;, self);

Please don’t log with this line.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:114
&gt; +    QLThumbnailGenerationRequest *req = [[QLThumbnailGenerationRequest alloc] initWithFileAtURL:_filePath.get() size:CGSizeMake(400, 400) scale:1 representationTypes:QLThumbnailGenerationRequestRepresentationTypeAll];

This is allocated with no release. We need to use adoptNS or release.

Also, we don’t use names like &quot;req&quot; in WebKit, instead &quot;request&quot;.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:139
&gt; +-(UIImage *)getThumbnailiOS {

We put spaces after &quot;-&quot;. We put a &quot;{&quot; on a separate line.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:145
&gt; +-(NSImage *)getThumbnailMac {

We put spaces after &quot;-&quot;. We put a &quot;{&quot; on a separate line.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6835
&gt; +        if (RefPtr&lt;ShareableBitmap&gt; qlThumbnail = !qlThumbnailHandle.isNull() ? ShareableBitmap::create(qlThumbnailHandle) : nullptr)

Should just call this &quot;thumbnail&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642719</commentid>
    <comment_count>10</comment_count>
      <attachid>396689</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-17 10:02:51 -0700</bug_when>
    <thetext>Comment on attachment 396689
Patch

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

&gt;&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:50
&gt;&gt; +    });
&gt; 
&gt; If this is used from a single thread.

Sorry, I meant to say, if this is used from a single thread, don’t need the dispatch_once dance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642784</commentid>
    <comment_count>11</comment_count>
      <attachid>396783</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-17 12:48:52 -0700</bug_when>
    <thetext>Created attachment 396783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642820</commentid>
    <comment_count>12</comment_count>
      <attachid>396783</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-17 14:02:30 -0700</bug_when>
    <thetext>Comment on attachment 396783
Patch

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

Not sure I fully understand the threading concerns and whether the use of @synchronized is sufficient locking. Typically it’s not sufficient to just do individual locks around setting flags and it takes more. But I didn’t see anything I know is incorrect.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1810
&gt; +            auto iconSizeBoth = thumbnailIcon ? FloatSize(attachmentIconSize, attachmentIconSize) : iconSize;

I don’t fully understand the word &quot;both&quot; in this name given that it’s size or the other. Is there some guarantee that this is the larger of the two? Maybe this should be something like &quot;visibleIconSize&quot; since only one is visible?

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:366
&gt; +typedef NSImage *PlatformImage;

In newer code we try to use &quot;using&quot; instead of &quot;typedef&quot;.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:368
&gt; +typedef UIImage *PlatformImage;

Ditto.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:25
&gt; +#if HAVE(QUICKLOOK_THUMBNAILING)

One more blank line before this, please.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.h:57
&gt; +#endif

One more blank line before this, please.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:27
&gt; +*/
&gt; +
&gt; +
&gt; +#import &quot;config.h&quot;

Only need one blank line here, not two.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:50
&gt; +@end

Another blank line before this, please.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:64
&gt; +- (id)initWithAttachment:(NSFileWrapper *)fileWrapper identifier:(NSMutableString *)identifier

This should be NSString, not NSMutableString.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:74
&gt; +- (id)initWithURL:(NSMutableString *)fileURL identifier:(NSMutableString *)identifier

This should be NSString, not NSMutableString.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:78
&gt; +        _filePath = adoptNS([[NSURL fileURLWithPath:fileURL] copy]);

The adoptNS/copy aren’t needed here. Just:

    _filePath = [NSURL fileURLWithPath:fileURL];

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:86
&gt; +{
&gt; +    
&gt; +    self.executing = YES;

Should get rid of this excess blank line.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:89
&gt; +        NSString *tempDirectory = FileSystem::createTemporaryDirectory(@&quot;QLTempFileData&quot;);

WebKit coding style says to use words, not abbreviations. So this would be better named either &quot;directory&quot; or &quot;temporaryDirectory&quot;.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:98
&gt; +        _filePath = fileURLPath;

Could save a little reference count churn here with WTFMove since fileURLPath is not used after this line:

    _filePath = WTFMove(fileURLPath);

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:119
&gt; +            NSError *errorFile = nil;
&gt; +            [[NSFileManager defaultManager] removeItemAtURL:_filePath.get() error:&amp;errorFile];

If we are going to ignore the error, we can pass error:nullptr and there is no need for a local variable.

&gt; Source/WebKit/UIProcess/QuickLookThumbnailLoader.mm:192
&gt; +#endif

Should add another blank line before this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643689</commentid>
    <comment_count>13</comment_count>
      <attachid>397035</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-20 16:28:23 -0700</bug_when>
    <thetext>Created attachment 397035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643701</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-20 17:27:51 -0700</bug_when>
    <thetext>Committed r260407: &lt;https://trac.webkit.org/changeset/260407&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397035.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643702</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-20 17:29:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/62083967&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395233</attachid>
            <date>2020-04-01 18:41:53 -0700</date>
            <delta_ts>2020-04-01 18:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200401214152.patch</filename>
            <type>text/plain</type>
            <size>37612</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZlMmVlZWY2ZWQzMzYz
YzUwNzkxMjE5NWU1NjVkYjIxOGE0ZDAzMS4uZjYxNmQ4NzM2NjM1YTgzOTQyNjUxYzE4MTVhZTg2
YzgzMmM0MzZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1i
ZXIgaW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIHFsIHRodW1ibmFpbC4gQWRkZWQgY29kZSB0
byByZW5kZXIgdGhpcyBpbWFnZSBvbiBib3RoIGlvcyBhbmQgbWFjLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gVGVzdCB3aWxsIGJlIGFkZGVkIGFmdGVyIGFkZGl0aW9ucyB0byB0ZXN0IGluZnJh
c3RydWN0dXJlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6cGFpbnRBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKwogMjAy
MC0wMy0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAg
ICAgICBbR1RLXSBBbGxvdyBkaXN0cmlidXRvcnMgdG8gYnJhbmQgdXNlciBhZ2VudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3NzQ5YmYzZDUxOGEzMGNkNDI3OGM4NTI0NGE4ZDlmOGI0MGMzZTgwLi5mMjZlODdkNmQ0
NTY2NWMwNmIzNTg4ZGNhZDBhOTFlYWYxZWRhZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBA
CisyMDIwLTAzLTEwICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgor
CisgICAgICAgIFdLMiBRdWlja2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBhdHRhY2htZW50IGVsZW1lbnRz
IHRvIHJlbmRlciBxdWlja2xvb2sgdGh1bWJuYWlsIGdlbmVyYXRlZAorICAgICAgICBmcm9tIGNv
bnRlbnRzIG9mIHRoZSBmaWxlIGFzIGl0cyBpY29uLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdAor
ICAgICAgICBpY29ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBtaW1lIHR5cGUuCisKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3Jh
cHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydE5TSW1hZ2VU
b0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRVSUltYWdlVG9CaXRtYXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWlsRm9yR2VuZXJhdGlvblJl
cXVlc3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWls
Rm9yRmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1
bWJuYWlsRm9yQXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1FMVGh1bWJuYWlsTG9h
ZC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLm1tOiBBZGRl
ZC4KKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBpbml0XSk6CisgICAgICAg
ICgrW1dLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAg
KC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaW5pdFdpdGhBdHRhY2htZW50OmlkZW50aWZp
ZXI6XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGluaXRXaXRoVVJM
OmlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHN0
YXJ0XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGlzQXN5bmNocm9u
b3VzXSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGlzRXhlY3V0aW5n
XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHNldEV4ZWN1dGluZzpd
KToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaXNGaW5pc2hlZF0pOgor
ICAgICAgICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBzZXRGaW5pc2hlZDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0yMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBpbnNlcnRpbmcgdGV4dCBvciBkaWN0YXRpb24g
YWx0ZXJuYXRpdmUgYnkgc2ltdWxhdGluZyBrZXlib2FyZCBpbnB1dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IGJkYWQ5YTAwNTQyOGYxNDdh
ODE1ZWNlMDNlN2MzOWEwN2I4OWEyZDUuLjE5MjA1NDA0NTQzN2U3ZjMxODJkYWI5YjQ1YzU4Mjg5
ODkxMDU0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKQEAgLTI0OSw2ICsyNDksMTQgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVw
ZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBo
b3N0RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpLCBtaW1lVHlwZSkpKTsKIH0KIAordm9pZCBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbFJlcHJlc2VudGF0aW9uKGNvbnN0IFJlZlB0cjxJbWFnZT4g
cWxUaHVtYm5haWxSZXByZXNlbnRhdGlvbikKK3sKKyAgICBtX3FsVGh1bWJuYWlsUmVwcmVzZW50
YXRpb24gPSBxbFRodW1ibmFpbFJlcHJlc2VudGF0aW9uOworICAgIAorICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaAppbmRleCBhOWJiMjQ3NTc1NWEyOGFjMmQzMTc5NjQ2YWI4ZTNkMWE5MmZiY2U1Li44MzM2
YmYyMDBiYmY4ODQ3ZTdiYjZkYjc2ZDI3YWJhNDE4YjY1Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTMzLDcgKzMzLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKK2NsYXNz
IEltYWdlOwogY2xhc3MgUmVuZGVyQXR0YWNobWVudDsKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKQEAgLTU2LDYgKzU4LDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKE9wdGlvbmFsPHVpbnQ2NF90PiYm
IG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IG5ld0ZpbGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0lt
YWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbFJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFJlZlB0cjxJbWFnZT4gcWxUaHVtYm5haWxSZXByZXNlbnRhdGlvbik7CiAK
ICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC02Nyw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0
OwogICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2ht
ZW50UGF0aCgpIGNvbnN0OwotCisgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxSZXByZXNlbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcWxUaHVtYm5haWxSZXByZXNlbnRhdGlvbjsgfQogICAg
IFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC04Nyw2
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBT
dHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOworICAgIFJlZlB0cjxJbWFnZT4gbV9xbFRodW1ibmFp
bFJlcHJlc2VudGF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDA5YTEyZGM1ZGFjMWExYjI0
OWUwMDE3Y2I0YzYwZjJkZTliZGZkNWEuLjU5OWVjNDAzNWNjZTMxOGY3MTVkZmVjNGQ0MjViOGE2
YjNkYTU1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
QEAgLTE2MzcsNiArMTYzNyw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAg
ZmxvYXQgcHJvZ3Jlc3M7CiAKICAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQ
dHI8SW1hZ2U+IHRodW1ibmFpbEljb247CiAKICAgICBpbnQgYmFzZWxpbmUgeyAwIH07CiAKQEAg
LTE4MTksMTIgKzE4MjAsMjAgQEAgUmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1l
bnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgfQogCiAgICAg
aWYgKGFjdGlvbi5pc0VtcHR5KCkgJiYgIWhhc1Byb2dyZXNzKSB7Ci0gICAgICAgIEZsb2F0U2l6
ZSBpY29uU2l6ZTsKLSAgICAgICAgaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQs
IGljb25TaXplKTsKLSAgICAgICAgaWYgKGljb24pIHsKLSAgICAgICAgICAgIGljb25SZWN0ID0g
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAyKSAtIChpY29u
U2l6ZS53aWR0aCgpIC8gMiksIDApLCBpY29uU2l6ZSk7CisgICAgICAgIAorICAgICAgICB0aHVt
Ym5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbFJlcHJl
c2VudGF0aW9uKCk7CisgICAgICAgIGlmICh0aHVtYm5haWxJY29uKSB7CisgICAgICAgICAgICBp
Y29uUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KChhdHRhY2htZW50UmVjdC53aWR0aCgpIC8g
MikgLSAoNjUgLyAyKSwgMCksIEZsb2F0U2l6ZSg2NSwgNjUpKTsKICAgICAgICAgICAgIHlPZmZz
ZXQgKz0gaWNvblJlY3QuaGVpZ2h0KCkgKyBhdHRhY2htZW50SXRlbU1hcmdpbjsKICAgICAgICAg
fQorICAgICAgICBpZiAoIXRodW1ibmFpbEljb24pIHsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBp
Y29uU2l6ZTsKKyAgICAgICAgICAgIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50
LCBpY29uU2l6ZSk7CisgICAgICAgICAgICBpZiAoaWNvbikgeworICAgICAgICAgICAgICAgIGlj
b25SZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAy
KSAtIChpY29uU2l6ZS53aWR0aCgpIC8gMiksIDApLCBpY29uU2l6ZSk7CisgICAgICAgICAgICAg
ICAgeU9mZnNldCArPSBpY29uUmVjdC5oZWlnaHQoKSArIGF0dGFjaG1lbnRJdGVtTWFyZ2luOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIGJ1aWxkV3JhcHBl
ZExpbmVzKGFjdGlvbiwgYXR0YWNobWVudEFjdGlvbkZvbnQoKS5nZXQoKSwgYXR0YWNobWVudEFj
dGlvbkNvbG9yKGF0dGFjaG1lbnQpLCBhdHRhY2htZW50V3JhcHBpbmdUZXh0TWF4aW11bUxpbmVD
b3VudCk7CiAKQEAgLTE4NTcsNiArMTg2Niw5IEBAIGludCBSZW5kZXJUaGVtZUlPUzo6YXR0YWNo
bWVudEJhc2VsaW5lKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpIGNvbnN0CiAK
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKKyAgICBpZiAoaW5mby50aHVtYm5haWxJ
Y29uKQorICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW5mby50aHVtYm5haWxJY29uLmdldCgp
LCBpbmZvLmljb25SZWN0KTsKKyAgICAKICAgICBpZiAoIWluZm8uaWNvbikKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xOTM3LDcgKzE5NDksNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEF0
dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbgogCiAg
ICAgaWYgKGluZm8uaGFzUHJvZ3Jlc3MpCiAgICAgICAgIHBhaW50QXR0YWNobWVudFByb2dyZXNz
KGNvbnRleHQsIGluZm8pOwotICAgIGVsc2UgaWYgKGluZm8uaWNvbikKKyAgICBlbHNlIGlmIChp
bmZvLmljb24gfHwgaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBwYWludEF0dGFjaG1lbnRJ
Y29uKGNvbnRleHQsIGluZm8pOwogCiAgICAgcGFpbnRBdHRhY2htZW50VGV4dChjb250ZXh0LCBp
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCAz
MThlYjgyZDlhZDU3ZDdkNDM1YTVjMTc5Nzk2OGQzZWU3NmI5ZmRjLi41ODkzM2ZhZGI1MWQ5ZjQy
NzZmYTg1NTYyYjZjNWUzMDFhNjRhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCkBAIC0yODA2LDYgKzI4MDYsMTEgQEAgc3RhdGljIFJlZlB0cjxJY29u
PiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQog
CiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudExheW91dCYg
bGF5b3V0KQogeworICAgIGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS50aHVtYm5haWxSZXByZXNlbnRhdGlvbigpOworICAgIGlmICh0aHVtYm5haWxJ
Y29uKSB7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCp0aHVtYm5haWxJY29uLmdldCgpLCBs
YXlvdXQuaWNvblJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGF1dG8gaWNvbiA9
IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQpOwogICAgIGlmICghaWNvbikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQu
eGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpp
bmRleCBmNDlhMjU0MWQ2NmVkYWFkMWU3OTkxYjZmYTJlY2QwYjU5OGJkMWZjLi42MDg1NjkzOGMz
YjhiOTI4NDRkODM4Njg5ZmI0YjcwNWJlYTFlMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZp
Z3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTI0LDcgKzEyNCwxMCBAQCBXS19BVVRIS0lU
X0xERkxBR1NfSU9TX1NJTkNFXzEzID0gLWZyYW1ld29yayBBdXRoS2l0OwogV0tfQVVUSEtJVF9M
REZMQUdTX21hY29zeCA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19NQUNPU18xMDE1KSk7CiBX
S19BVVRIS0lUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTAxNSA9IC1mcmFtZXdvcmsgQXV0aEtpdDsK
IAotRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5l
dHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJh
bWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRh
dGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIElPU3Vy
ZmFjZSAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZ
X0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xE
RkxBR1MpICQoV0tfUlVOTklOR0JPQVJEX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQVVUSEtJVF9M
REZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUFJFRElDVElPTl9MREZMQUdT
KSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZM
QUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChX
S19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxB
R1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU0FGRV9C
Uk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZMQUdTKSAkKFdLX1VJ
S0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19XRUJJTlNQRUNU
T1JVSV9MREZMQUdTKTsKK1dLX1FVSUNLX0xPT0tfVEhVTUJOQUlMSU5HX0xERkxBR1MgPSAtZnJh
bWV3b3JrIFF1aWNrTG9va1RodW1ibmFpbGluZzsKK1dLX1FVSUNLX0xPT0tfVEhVTUJOQUlMSU5H
X0xERkxBR1Nbc2RrPXdhdGNoKl0gPSA7CisKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdT
ID0gLWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFt
ZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBD
b3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdv
cmsgSU9LaXQgLWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxu
ZXR3b3JrICQoV0tfQUNDRVNTSUJJTElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAk
KFdLX0FTU0VSVElPTl9TRVJWSUNFU19MREZMQUdTKSAkKFdLX1JVTk5JTkdCT0FSRF9TRVJWSUNF
U19MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChX
S19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQo
V0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQo
V0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykg
JChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BE
RktJVF9MREZMQUdTKSAkKFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19TRUNVUklUWV9J
TlRFUkZBQ0VfTERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5H
X0xERkxBR1MpICQoV0tfV0VCSU5TUEVDVE9SVUlfTERGTEFHUykgJChXS19RVUlDS19MT09LX1RI
VU1CTkFJTElOR19MREZMQUdTKTsKIAogLy8gUHJldmVudCBDKysgc3RhbmRhcmQgbGlicmFyeSBi
YXNpY19zdHJpbmdzdHJlYW0sIG9wZXJhdG9yIG5ldywgZGVsZXRlIGFuZCB0aGVpciByZWxhdGVk
IGV4Y2VwdGlvbiB0eXBlcyBmcm9tIGJlaW5nIGV4cG9ydGVkIGFzIHdlYWsgc3ltYm9scy4KIFVO
RVhQT1JURURfU1lNQk9MX0xERkxBR1MgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pU
SVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWV4Y2VwdGlv
biAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndtUHYgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndtIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEy
UG9saWN5QWN0aW9uRUVFQzFFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVhU0VEbiAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5
QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVu
Y3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRTRzd2FwRVJTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFQzFFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5j
dGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9u
RUVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2
TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2Nh
bGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5n
c3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUwX05TXzEzYmFz
aWNfaXN0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18x
MThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRTBfTlNfMTRiYXNpY19pb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VF
TlNfOWFsbG9jYXRvckljRUVFRTE2X05TXzEzYmFzaWNfb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aVFROU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzEx
Y2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUVk5TdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVO
U185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19f
MTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJ
Y0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJp
bmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRThfTlNfMTNi
YXNpY19vc3RyZWFtSWNTMl9FRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDljMzlkMjlkNTI0ZDM1NzJlNTM3OGI2YTViNDM4Mzg5MGE0
ZDY3NGMuLjQ4NWY4Y2YyY2RhZTdlMDA1MWZmNGQ0ODQzY2UzODY3NWNhN2I3NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDYsNiAr
NDYsNyBAQAogI2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50
LmgiCiAjaW1wb3J0ICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2ltcG9ydCAiUUxUaHVtYm5h
aWxMb2FkLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVP
YmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCkBAIC0xODQsNiArMTg1LDggQEAgc3RhdGljIGNvbnN0
IEJPT0wgZGVmYXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1aW50
MzJfdCBmaXJzdFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0gMHhB
MDAwMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0IDxRdWlja0xv
b2tUaHVtYm5haWxpbmcvUUxUaHVtYm5haWxHZW5lcmF0b3IuaD4KKwogc3RhdGljIEhhc2hNYXA8
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLV2ViVmlldyAqPiYg
cGFnZVRvVmlld01hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLV2ViVmlldyAqPj4gbWFw
OwpAQCAtMjIyMyw3ICsyMjI2LDggQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIKICAgICAgICAg
aWYgKGNhcHR1cmVkSGFuZGxlcikKICAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihlcnJvciA9
PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwogICAgIH0pOwotCisgICAgCisg
ICAgX3BhZ2UtPmdldFFMVGh1bWJuYWlsRm9yRmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50
aWZpZXIpOwogICAgIHJldHVybiB3cmFwcGVyKGF0dGFjaG1lbnQpOwogI2Vsc2UKICAgICByZXR1
cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQppbmRleCBmOTU3NjE2NzU5OTMxNTgwMGY2Yjg4MzY3NTdmZWJiZjhmOGNlYjZl
Li4zOWQzZWYyNjQ5MGU5NzE3YjE1ZThjNjZkNzc1N2I2NjU1YzczMDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzIs
MTIgKzMyLDE0IEBACiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQgIlFMVGh1bWJu
YWlsTG9hZC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2ltcG9ydCA8UXVpY2tMb29rVGh1bWJuYWls
aW5nL1FMVGh1bWJuYWlsR2VuZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nl
YXJjaFBvcHVwTWVudUNvY29hLmg+CkBAIC0zNTEsNCArMzUzLDg4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UoKQogI2VuZGlmCiB9CiAKKyNpZiBQ
TEFURk9STShNQUMpCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252
ZXJ0TlNJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplKQoreworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJp
dG1hcENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGlm
ICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZ3JhcGhpY3ND
b250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZXRhaW5QdHI8TlNH
cmFwaGljc0NvbnRleHQ+IHNhdmVkQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50
Q29udGV4dF07CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAg
IFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQg
Z3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpncmFwaGljc0NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpIGZsaXBwZWQ6WUVTXV07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECisgICAgW2ltYWdlIGRyYXdJblJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBiaXRtYXAtPnNp
emUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQoKSkgZnJvbVJlY3Q6TlNaZXJvUmVj
dCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSBy
ZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBz
ZXRDdXJyZW50Q29udGV4dDpzYXZlZENvbnRleHQuZ2V0KCldOworCisgICAgcmV0dXJuIGJpdG1h
cDsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBSZWZQdHI8
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRVSUltYWdlVG9CaXRtYXAoVUlJbWFnZSAq
aW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisgICAgV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRv
IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwg
Yml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAKKyAgICBVSUdyYXBoaWNzUHVzaENvbnRleHQoZ3JhcGhpY3NDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgW2ltYWdlIGRyYXdJblJlY3Q6IENHUmVjdE1ha2Uo
MCwgMCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwgYml0bWFwLT5zaXplKCkuaGVpZ2h0KCkpXTsK
KyAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOworCisgICAgcmV0dXJuIGJpdG1hcDsKK30KKyNl
bmRpZgorCit2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKEJPT0wgc3VjY2Vzcyk7CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckdlbmVyYXRpb25SZXF1ZXN0aW9uKFdLUUxU
aHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRpb24pCit7CisgICAgW29wZXJhdGlvbiBzZXRD
b21wbGV0aW9uQmxvY2s6XnsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi5p
ZGVudGlmaWVyOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgIGF1dG8gY29udmVydGVk
SW1hZ2UgPSBjb252ZXJ0TlNJbWFnZVRvQml0bWFwKG9wZXJhdGlvbi5xbFRodW1ibmFpbE1hYywg
V2ViQ29yZTo6SW50U2l6ZSgxMjgwLCAxMjgwKSk7CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnRVSUltYWdl
VG9CaXRtYXAob3BlcmF0aW9uLnFsVGh1bWJuYWlsaU9TLCBXZWJDb3JlOjpJbnRTaXplKDEyODAs
IDEyODApKTsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKGNvbnZlcnRlZEltYWdlID09IG51bGxw
dHIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0
YWNobWVudEljb24oaWRlbnRpZmllciwgY29udmVydGVkSW1hZ2UsIFtjYXB0dXJlZEhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhcHR1cmVkSGFuZGxlcikKKyAg
ICAgICAgICAgICAgICAgICAgY2FwdHVyZWRIYW5kbGVyKGVycm9yID09IFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fV07CisgICAgICAgIAorICAgIFtbV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBzaGFyZWRJbnN0
YW5jZV0ucWxUaHVtYm5haWxHZW5lcmF0aW9uUXVldWUgYWRkT3BlcmF0aW9uOm9wZXJhdGlvbl07
Cit9CisKKwordm9pZCBXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWlsRm9yRmlsZVdyYXBwZXIo
TlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9uID0gW1tXS1FMVGh1bWJu
YWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhBdHRhY2htZW50OmZpbGVXcmFwcGVyIGlk
ZW50aWZpZXI6aWRlbnRpZmllcl07CisgICAgZ2V0UUxUaHVtYm5haWxGb3JHZW5lcmF0aW9uUmVx
dWVzdGlvbihvcGVyYXRpb24pOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UUxUaHVtYm5h
aWxGb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKK3sKKyAgICBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9uID0g
W1tXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhVUkw6ZmlsZVBhdGgg
aWRlbnRpZmllcjppZGVudGlmaWVyXTsKKyAgICBnZXRRTFRodW1ibmFpbEZvckdlbmVyYXRpb25S
ZXF1ZXN0aW9uKG9wZXJhdGlvbik7CisgICAgCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RTFRodW1ibmFpbExvYWQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzc3
NmQxOTg4YjExNDM4OThiYWUwZWUzNGJiYmMxMDkyODQ2ZTE5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLmgKQEAgLTAsMCArMSwzOSBA
QAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFUSU9OTkFNRV9fXyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNlbmRpZgorCitAaW50
ZXJmYWNlIFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgOiBOU09iamVjdAorCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIE5TT3BlcmF0aW9uUXVldWUqIHFsVGh1bWJu
YWlsR2VuZXJhdGlvblF1ZXVlOworLSAoaWQpaW5pdDsKKysgKFdLUUxUaHVtYm5haWxRdWV1ZU1h
bmFnZXIgKilzaGFyZWRJbnN0YW5jZTsKK0BlbmQKKworQGludGVyZmFjZSBXS1FMVGh1bWJuYWls
TG9hZE9wZXJhdGlvbiA6IE5TT3BlcmF0aW9uCitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9
aXNBc3luY2hyb25vdXMpIEJPT0wgYXN5bmNocm9ub3VzOworQHByb3BlcnR5IChyZWFkb25seSwg
Z2V0dGVyPWlzRXhlY3V0aW5nKSBCT09MIGV4ZWN1dGluZzsKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IGdldHRlcj1pc0ZpbmlzaGVkKSBCT09MIGZpbmlzaGVkOworI2lmIFBMQVRGT1JNKE1BQykKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGFzc2lnbikgTlNJbWFnZSAqcWxUaHVtYm5h
aWxNYWM7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIFVJSW1hZ2UgKnFsVGh1bWJuYWlsaU9TOworI2Vu
ZGlmCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGFzc2lnbikgTlNNdXRhYmxl
U3RyaW5nICppZGVudGlmaWVyOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBh
c3NpZ24pIE5TU3RyaW5nICpjb250ZW50VHlwZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWR3cml0ZSwgYXNzaWduKSBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlcjsKKworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWR3cml0ZSwgYXNzaWduKSBCT09MIHNob3VsZFdyaXRlOworCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIE5TVVJMICpmaWxlUGF0aDsKKwor
LSAoaWQpaW5pdFdpdGhBdHRhY2htZW50OihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgaWRl
bnRpZmllcjogKE5TU3RyaW5nICopaWRlbnRpZmllcjsKKy0gKGlkKWluaXRXaXRoVVJMOihOU1N0
cmluZyAqKWZpbGVVcmwgaWRlbnRpZmllcjogKE5TU3RyaW5nICopaWRlbnRpZmllcjsKK0BlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1FMVGh1bWJuYWlsTG9hZC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1FMVGh1bWJuYWlsTG9hZC5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YmM5ZTNkMTNmZDYzMjcxOTc0MzRjOTg5Nzc5NTJiMDhmNDY2MDEwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLm1tCkBAIC0wLDAgKzEs
MTYyIEBACisvLyBDb3B5cmlnaHQgwqkgMjAyMCBfX19PUkdBTklaQVRJT05OQU1FX19fIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlFMVGh1bWJuYWls
TG9hZC5oIgorCisjaW1wb3J0IDxRdWlja0xvb2tUaHVtYm5haWxpbmcvUUxUaHVtYm5haWxHZW5l
cmF0b3IuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBX
S1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyCistIChpZClpbml0Cit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgX3FsVGh1bWJuYWlsR2VuZXJhdGlvblF1
ZXVlID0gW1tOU09wZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsK
K30KKworKyAoV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciAqKXNoYXJlZEluc3RhbmNlCit7Cisg
ICAgc3RhdGljIFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgKnNoYXJlZEluc3RhbmNlID0gbmls
OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgaXNEaXNwYXRjaGVkOworCisgICAgZGlzcGF0
Y2hfb25jZSgmaXNEaXNwYXRjaGVkLCBeeworICAgICAgICBzaGFyZWRJbnN0YW5jZSA9IFtbV0tR
TFRodW1ibmFpbFF1ZXVlTWFuYWdlciBhbGxvY10gaW5pdF07CisgICAgfSk7CisKKyAgICByZXR1
cm4gc2hhcmVkSW5zdGFuY2U7Cit9CitAZW5kCisKKworQGltcGxlbWVudGF0aW9uIFdLUUxUaHVt
Ym5haWxMb2FkT3BlcmF0aW9uCistIChpZClpbml0V2l0aEF0dGFjaG1lbnQ6KE5TRmlsZVdyYXBw
ZXIgKilmaWxlV3JhcHBlciBpZGVudGlmaWVyOihOU011dGFibGVTdHJpbmcgKilpZGVudGlmaWVy
Cit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2ZpbGVXcmFwcGVy
ID0gZmlsZVdyYXBwZXI7CisgICAgICAgIF9pZGVudGlmaWVyID0gW2lkZW50aWZpZXIgY29weV07
CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBfcWxUaHVtYm5haWxNYWMgPSBudWxscHRyOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgX3FsVGh1bWJuYWlsaU9T
ID0gbnVsbHB0cjsKKyNlbmRpZgorICAgICAgICBfZmlsZVBhdGggPSBudWxscHRyOworICAgICAg
ICBfc2hvdWxkV3JpdGUgPSBZRVM7CisgICAgfQorCisgICAgcmV0dXJuIHNlbGY7CisgICAgCit9
CisKKy0gKGlkKWluaXRXaXRoVVJMOihOU011dGFibGVTdHJpbmcgKilmaWxlVXJsIGlkZW50aWZp
ZXI6KE5TTXV0YWJsZVN0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBl
ciBpbml0XSkgeworICAgICAgICBfZmlsZVdyYXBwZXIgPSBudWxscHRyOworICAgICAgICBfaWRl
bnRpZmllciA9IFtpZGVudGlmaWVyIGNvcHldOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAg
X3FsVGh1bWJuYWlsTWFjID0gbnVsbHB0cjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgIF9xbFRodW1ibmFpbGlPUyA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAgICAg
X2ZpbGVQYXRoID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVVybF0gY29weV07CisgICAg
ICAgIF9zaG91bGRXcml0ZSA9IE5POworICAgIH0KKworICAgIHJldHVybiBzZWxmOworICAgIAor
fQorCistICh2b2lkKXN0YXJ0Cit7CisgICAgCisgICAgTlNMb2coQCJTdGFydGluZyAlQCIsIHNl
bGYpOworICAgIHNlbGYuZXhlY3V0aW5nID0gWUVTOworICAgIAorICAgIGlmIChfc2hvdWxkV3Jp
dGUpIHsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJRTFRlbXBGaWxlRGF0YSIpOworICAgIAorICAgICAgICBO
U1N0cmluZyAqZmlsZVBhdGggPSBbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6X2ZpbGVXcmFwcGVyLnByZWZlcnJlZEZpbGVuYW1lXTsKKyAgICAgICAgTlNGaWxl
V3JhcHBlcldyaXRpbmdPcHRpb25zIG9wdGlvbnMgPSAwOworICAgICAgICBOU0Vycm9yICplcnJv
ciA9IG5pbDsKKyAgICAgICAgCisgICAgICAgIE5TVVJMICpmaWxlVVJMUGF0aCA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6ZmlsZVBhdGhdOworCisgICAgICAgIFtfZmlsZVdyYXBwZXIgd3JpdGVU
b1VSTDpmaWxlVVJMUGF0aCBvcHRpb25zOm9wdGlvbnMgb3JpZ2luYWxDb250ZW50c1VSTDpuaWwg
ZXJyb3I6JmVycm9yXTsKKyAgICAgICAgX2ZpbGVQYXRoID0gZmlsZVVSTFBhdGg7CisgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRTFRodW1ibmFp
bEdlbmVyYXRpb25SZXF1ZXN0ICpyZXEgPSBbW1FMVGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3Qg
YWxsb2NdIGluaXRXaXRoRmlsZUF0VVJMOl9maWxlUGF0aCBzaXplOkNHU2l6ZU1ha2UoMTI4MC4w
LCAxMjgwLjApIHNjYWxlOjEgcmVwcmVzZW50YXRpb25UeXBlczpRTFRodW1ibmFpbEdlbmVyYXRp
b25SZXF1ZXN0UmVwcmVzZW50YXRpb25UeXBlQWxsXTsKKyAgICByZXEuaWNvbk1vZGUgPSBZRVM7
CisgICAgCisgICAgW1tRTFRodW1ibmFpbEdlbmVyYXRvciBzaGFyZWRHZW5lcmF0b3JdIGdlbmVy
YXRlQmVzdFJlcHJlc2VudGF0aW9uRm9yUmVxdWVzdDpyZXEgY29tcGxldGlvbkhhbmRsZXI6XihR
TFRodW1ibmFpbFJlcHJlc2VudGF0aW9uICp0aHVtYm5haWwsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgICAgIGlmIChfcWxUaHVtYm5haWxNYWMpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIF9xbFRodW1ibmFpbE1hYyA9IHRodW1ibmFpbC5OU0ltYWdlOworI2VuZGlmCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgaWYgKF9xbFRodW1ibmFpbGlPUykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgX3FsVGh1bWJuYWlsaU9TID0gdGh1bWJuYWlsLlVJSW1hZ2U7
CisjZW5kaWYKKyAgICAgICAgaWYgKF9zaG91bGRXcml0ZSkgeworICAgICAgICAgICAgTlNFcnJv
ciAqZXJyb3JGaWxlID0gbmlsOworICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6X2ZpbGVQYXRoIGVycm9yOiZlcnJvckZpbGVdOworICAg
ICAgICB9CisKKyAgICAgICAgc2VsZi5leGVjdXRpbmcgPSBOTzsKKyAgICAgICAgc2VsZi5maW5p
c2hlZCA9IFlFUzsKKyAgICB9XTsKK30KKworLSAoQk9PTClpc0FzeW5jaHJvbm91cworeworICAg
IHJldHVybiBZRVM7Cit9CisKK0BzeW50aGVzaXplIGV4ZWN1dGluZz1fZXhlY3V0aW5nOworCist
IChCT09MKWlzRXhlY3V0aW5nCit7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAg
IHJldHVybiBfZXhlY3V0aW5nOworICAgIH0KK30KKworLSAodm9pZClzZXRFeGVjdXRpbmc6KEJP
T0wpZXhlY3V0aW5nCit7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAgIGlmIChl
eGVjdXRpbmcgIT0gX2V4ZWN1dGluZykgeworICAgICAgICAgICAgW3NlbGYgd2lsbENoYW5nZVZh
bHVlRm9yS2V5OkAiaXNFeGVjdXRpbmciXTsKKyAgICAgICAgICAgIF9leGVjdXRpbmcgPSBleGVj
dXRpbmc7CisgICAgICAgICAgICBbc2VsZiBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAImlzRXhlY3V0
aW5nIl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BzeW50aGVzaXplIGZpbmlzaGVkPV9maW5p
c2hlZDsKKworLSAoQk9PTClpc0ZpbmlzaGVkCit7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7
CisgICAgICAgIHJldHVybiBfZmluaXNoZWQ7CisgICAgfQorfQorCistICh2b2lkKXNldEZpbmlz
aGVkOihCT09MKWZpbmlzaGVkCit7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAg
IGlmIChmaW5pc2hlZCAhPSBfZmluaXNoZWQpIHsKKyAgICAgICAgICAgIFtzZWxmIHdpbGxDaGFu
Z2VWYWx1ZUZvcktleTpAImlzRmluaXNoZWQiXTsKKyAgICAgICAgICAgIF9maW5pc2hlZCA9IGZp
bmlzaGVkOworICAgICAgICAgICAgW3NlbGYgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Zpbmlz
aGVkIl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGE0ZWQxM2Q2NzY4NDQxYmZmMzZlNjMyOTk2YWJlMjAz
NmNhMDRhNmYuLjIyNTY5YTMxZjg5NDgwYzgzN2FiZGRiZmY1Y2NlOWMzNjg2MTgzYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTM0Niw2ICs5MzQ2LDIx
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBB
UEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFj
aG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0
YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiBiaXRtYXAsICBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6
OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKGJpdG1hcCkK
KyAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVu
dEljb24iX3MpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50
SWNvbihpZGVudGlmaWVyLCBoYW5kbGUsIGNhbGxiYWNrSUQpKTsKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0
YSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgSWRlbnRpZmllclRvQXR0YWNobWVu
dE1hcDo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CkBAIC05MzcxLDggKzkzODYsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChj
b25zdCBTdHJpbmcmIGlkZW50aQogICAgIGF0dGFjaG1lbnQtPnNldENvbnRlbnRUeXBlKGNvbnRl
bnRUeXBlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlUGF0aChmaWxlUGF0aCk7CiAgICAgbV9h
dHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoaWRlbnRpZmllciwgYXR0YWNo
bWVudC5jb3B5UmVmKCkpOwotCiAgICAgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoV1RGTW92
ZShhdHRhY2htZW50KSwgZmlsZVBhdGgpOworICAgIGdldFFMVGh1bWJuYWlsRm9yQXR0YWNobWVu
dChpZGVudGlmaWVyLCBmaWxlUGF0aCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTAzYzcwZjM4OGMwNDVlMGMwNjdhMTlh
NTBlNjBmMTZmMzhkYjRhMi4uZjY5Y2IyMmUxMGQ5ZWYyNmJlYWRhYzI1YWQ3NTBlZDg4ODZmZDIw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5Niw2ICsxOTYs
OCBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQorT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOworT0JK
Q19DTEFTUyBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xNTc0LDkgKzE1NzYsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYm
LCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYsIEZ1bmN0aW9uPHZv
aWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpPiYm
KTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNo
bWVudCYpOwotCisgICAgdm9pZCBnZXRRTFRodW1ibmFpbEZvckF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBnZXRRTFRodW1ibmFpbEZvckZpbGVXcmFw
cGVyKE5TRmlsZVdyYXBwZXIqLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGdldFFMVGh1bWJu
YWlsRm9yR2VuZXJhdGlvblJlcXVlc3Rpb24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24qKTsK
ICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIDogYm9vbCB7
IE5vLCBZZXMgfTsKICAgICBTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyB3aWxsVXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50Jik7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDE5ZGZmZGZiZThmYTg4Y2JlM2JhZWQ0ZjM1YjI3MTVlMDI1MjM1OGQuLjFhNjMwMTZlZjdkZGRm
MTYyMDE0ZjdkNTczZWM2ZDY5NjgwZTAyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY0LDYgKzE2NCw3IEBACiAJCTFBMDdEMkY5
MTkxOUIzQTkwMEVDREExNiAvKiBtZXNzYWdlcy5weSBpbiBDb3B5IE1lc3NhZ2UgR2VuZXJhdGlv
biBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA4NTZGMTg3
Q0UwQTkwMDc4MEQ4NiAvKiBtZXNzYWdlcy5weSAqLzsgfTsKIAkJMUEwN0QyRkExOTE5QjNBOTAw
RUNEQTE2IC8qIG1vZGVsLnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzAxODdDRTBBOTAwNzgwRDg2
IC8qIG1vZGVsLnB5ICovOyB9OwogCQkxQTA3RDJGQjE5MTlCM0E5MDBFQ0RBMTYgLyogcGFyc2Vy
LnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzExODdDRTBBOTAwNzgwRDg2IC8qIHBhcnNlci5weSAq
LzsgfTsKKwkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFFMVGh1bWJuYWlsTG9hZC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUU1NzI0MjQw
OUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQubW0gKi87IH07CiAJCTFBMEVDNjAzMTI0
QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM2MDExMjRBOUYyQzAwN0VGNEE1IC8q
IFBsdWdpblByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRB
NSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEVDNkJFMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9j
ZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUEwRUM3NUUxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdp
blByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEwRUM3NUMxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oICov
OyB9OwpAQCAtMzc5LDYgKzM4MCw3IEBACiAJCTFBRTQ5ODc4MTFGRjdGQUEwMDQ4QjQ2NCAvKiBK
U05QT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUU0OTg3NjExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9iamVjdC5oICovOyB9OwogCQkxQUU0
OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNDlBNDcxMUZGQThDRTAwNDhCNDY0IC8qIEpT
TlBNZXRob2QuaCAqLzsgfTsKIAkJMUFFNTJGOTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8qIFFMVGh1bWJuYWlsTG9hZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRTU3MjMyNDA5RjE0MjAw
MjAwNUQ2IC8qIFFMVGh1bWJuYWlsTG9hZC5oICovOyB9OwogCQkxQUVGQ0MxMjExRDAxRjk2MDA4
MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUVGQ0MxMDExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0
b3JlLmggKi87IH07CiAJCTFBRUZEMjc5MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGRDI3
ODExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovOyB9OwogCQkxQUVGRDJGNzEx
RDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1
bWVudENvZGVycy5oICovOyB9OwpAQCAtMjY1MSw2ICsyNjUzLDggQEAKIAkJMUFFNTJGOTMxOTIw
MUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAv
KiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFFNUI3RjkxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5N
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzIzMjQwOUYxNDIwMDIw
MDVENiAvKiBRTFRodW1ibmFpbExvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUUxUaHVtYm5haWxMb2Fk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzI0MjQwOUYxNDIwMDIwMDVE
NiAvKiBRTFRodW1ibmFpbExvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFFMVGh1bWJuYWls
TG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFRkNDMTAxMUQwMUY5NjAw
ODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFF
RkNDMTExMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUVGQ0NCQzExRDAyQzVFMDA4MjE5RDMgLyogUGx1Z2luSW5m
b1N0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1
Z2luSW5mb1N0b3JlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg3OSw2
ICs4ODgzLDggQEAKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90
dGxlckNsaWVudC5oICovLAogCQkJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFBy
b3Zpc2lvbmFsUGFnZVByb3h5LmggKi8sCisJCQkJMUFFRTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8q
IFFMVGh1bWJuYWlsTG9hZC5oICovLAorCQkJCTFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBR
TFRodW1ibmFpbExvYWQubW0gKi8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAv
KiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZC
IC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKQEAgLTEwOTIwLDYgKzEwOTI2LDcgQEAKIAkJ
CQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Ro
cm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8q
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBRUU1NzI1MjQw
OUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
RTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTI2
NTYsNiArMTI2NjMsNyBAQAogCQkJCUMxNUNCQjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJl
bmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMxQjIxMkY0REE2MDA0OUMx
NzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjg2NUVGMjI1
NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxQTBDMjI1RTI0MzU3NUNEMDBFRDYxNEQgLyogUUxUaHVtYm5haWxMb2FkLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUMyMEY3MjNGQzcy
NkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFjZDBiMzBjNTg4ZjRi
NDQ1NTUyNGMxMjQ1ZGY0NDg4MzlhOTdiMjYuLmUwMWJiZGE3NzFmMDRkYWVlYjhiMjlhYTA5YTc3
ODYyZTlkMzM0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC02ODMzLDYgKzY4MzMsMTUgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7
CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5k
bGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0g
YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gcWxUaHVtYm5haWwgPSAhcWxUaHVtYm5haWxIYW5k
bGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShxbFRodW1ibmFpbEhhbmRsZSkg
OiBudWxscHRyKQorICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlVGh1bWJuYWlsUmVwcmVz
ZW50YXRpb24ocWxUaHVtYm5haWwtPmNyZWF0ZUltYWdlKCkpOworICAgIH0KKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7Cit9CisKIFJl
ZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0
aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMgdG9vIGFzIHdlbGwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMDliNjA4
NGI0NjNlM2U0N2IxY2MxNTk2NzhhMDg2OTgyY2YxYWM1Zi4uZmEwNjEyOTA5YjRhODIzY2MzN2M4
ZjI5MTNjYWNmODA3ODFkYzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlU2hlZXRDYWxs
YmFja0lELmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJUcmFuc2FjdGlvbklELmgiCkBAIC0xMjAyLDYgKzEyMDMsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSwgQ2FsbGJhY2tJRCk7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDc2
MjAyZTUzNmFhYmIzZmIwNmUxNDhhM2Y1YzY1NmNjNjczNjAwMzguLmZiYjQ1Zjc0Njg3OGEwZTg4
YjM0MzNmNzdlNzM3ZTFhY2Q4MGZmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTU0LDYgKzU1NCw3IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJp
bmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVu
dFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVu
Y2xvc2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBk
YXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395234</attachid>
            <date>2020-04-01 18:46:36 -0700</date>
            <delta_ts>2020-04-15 13:05:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200401214635.patch</filename>
            <type>text/plain</type>
            <size>37633</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdiMzY5Nzg0NWVjZmNj
MGQzZTQyZDI5ODFmMzIxYTIxNDkxOWZjNC4uNjNiMzEyODE3NWMwNDdhZWIzZmIxYzRhMzQ0YjBm
ZWQ2ODBkODUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1i
ZXIgaW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIHFsIHRodW1ibmFpbC4gQWRkZWQgY29kZSB0
byByZW5kZXIgdGhpcyBpbWFnZSBvbiBib3RoIGlvcyBhbmQgbWFjLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gVGVzdCB3aWxsIGJlIGFkZGVkIGFmdGVyIGFkZGl0aW9ucyB0byB0ZXN0IGluZnJh
c3RydWN0dXJlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6cGFpbnRBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKwogMjAy
MC0wNC0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgc29tZSBQTEFURk9STShJT1NfRkFNSUxZKSBndWFyZHMgaW4gVGV4dEZpZWxkSW5w
dXRUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGNkMjE0MzA1ZmVmZjlkYmEyNTJhYzhlM2ZlNGQxZDZmMzUyZDg1
YWQuLjYwMmMxZDAwZWJjNTkyMmZjZWQ1YTI2NWE3ZjE3YTlmYTE3Y2QyODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMjAtMDMtMTAgIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJp
c0BhcHBsZS5jb20+CisKKyAgICAgICAgV0syIFF1aWNrbG9vayBmb3IgYXR0YWNobWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODg5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGF0dGFj
aG1lbnQgZWxlbWVudHMgdG8gcmVuZGVyIHF1aWNrbG9vayB0aHVtYm5haWwgZ2VuZXJhdGVkCisg
ICAgICAgIGZyb20gY29udGVudHMgb2YgdGhlIGZpbGUgYXMgaXRzIGljb24sIHJhdGhlciB0aGFu
IHRoZSBkZWZhdWx0CisgICAgICAgIGljb25zIGFzc29jaWF0ZWQgd2l0aCBlYWNoIG1pbWUgdHlw
ZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZzoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVXcmFwcGVyOmNvbnRlbnRUeXBlOmNvbXBsZXRpb246XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0TlNJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFVJSW1hZ2VU
b0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UUxUaHVtYm5haWxG
b3JHZW5lcmF0aW9uUmVxdWVzdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0UUxUaHVtYm5haWxGb3JGaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0UUxUaHVtYm5haWxGb3JBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UUxUaHVtYm5haWxMb2FkLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9RTFRodW1ibmFp
bExvYWQubW06IEFkZGVkLgorICAgICAgICAoLVtXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyIGlu
aXRdKToKKyAgICAgICAgKCtbV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBzaGFyZWRJbnN0YW5j
ZV0pOgorICAgICAgICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpbml0V2l0aEF0dGFj
aG1lbnQ6aWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRp
b24gaW5pdFdpdGhVUkw6aWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExv
YWRPcGVyYXRpb24gc3RhcnRdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRp
b24gaXNBc3luY2hyb25vdXNdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRp
b24gaXNFeGVjdXRpbmddKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24g
c2V0RXhlY3V0aW5nOl0pOgorICAgICAgICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBp
c0ZpbmlzaGVkXSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHNldEZp
bmlzaGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTA0LTAxICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVUSSBmcm9tIE1J
TUUgdHlwZSBjYWNoZSBjYW4gYmUgcmVtb3ZlZCBhZnRlciByMjU4OTE1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggYmRhZDlhMDA1NDI4ZjE0
N2E4MTVlY2UwM2U3YzM5YTA3Yjg5YTJkNS4uMTkyMDU0MDQ1NDM3ZTdmMzE4MmRhYjliNDVjNTgy
ODk4OTEwNTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcApAQCAtMjQ5LDYgKzI0OSwxNCBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAg
IGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSksIG1pbWVUeXBlKSkpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6dXBkYXRlVGh1bWJuYWlsUmVwcmVzZW50YXRpb24oY29uc3QgUmVmUHRyPEltYWdl
PiBxbFRodW1ibmFpbFJlcHJlc2VudGF0aW9uKQoreworICAgIG1fcWxUaHVtYm5haWxSZXByZXNl
bnRhdGlvbiA9IHFsVGh1bWJuYWlsUmVwcmVzZW50YXRpb247CisgICAgCisgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPmludmFsaWRh
dGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5oCmluZGV4IGE5YmIyNDc1NzU1YTI4YWMyZDMxNzk2NDZhYjhlM2QxYTkyZmJjZTUuLjgz
MzZiZjIwMGJiZjg4NDdlN2JiNmRiNzZkMjdhYmE0MThiNjUyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzMsNyArMzMsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OworY2xh
c3MgSW1hZ2U7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50OworY2xhc3MgU2hhcmVhYmxlQml0bWFw
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmlu
YWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewpAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoT3B0aW9uYWw8dWludDY0X3Q+
JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5n
SW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWlsUmVwcmVz
ZW50YXRpb24oY29uc3QgUmVmUHRyPEltYWdlPiBxbFRodW1ibmFpbFJlcHJlc2VudGF0aW9uKTsK
IAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9t
QW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY3LDcgKzcw
LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBhdHRhY2htZW50VGl0bGVGb3JEaXNwbGF5KCkgY29u
c3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0dGFj
aG1lbnRQYXRoKCkgY29uc3Q7Ci0KKyAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9xbFRodW1ibmFpbFJlcHJlc2VudGF0aW9uOyB9CiAg
ICAgUmVuZGVyQXR0YWNobWVudCogcmVuZGVyZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTg3
LDYgKzkwLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwogICAg
IFN0cmluZyBtX3VuaXF1ZUlkZW50aWZpZXI7CisgICAgUmVmUHRyPEltYWdlPiBtX3FsVGh1bWJu
YWlsUmVwcmVzZW50YXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMDlhMTJkYzVkYWMxYTFi
MjQ5ZTAwMTdjYjRjNjBmMmRlOWJkZmQ1YS4uNTk5ZWM0MDM1Y2NlMzE4ZjcxNWRmZWM0ZDQyNWI4
YTZiM2RhNTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtMTYzNyw2ICsxNjM3LDcgQEAgc3RydWN0IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsKICAg
ICBmbG9hdCBwcm9ncmVzczsKIAogICAgIFJldGFpblB0cjxVSUltYWdlPiBpY29uOworICAgIFJl
ZlB0cjxJbWFnZT4gdGh1bWJuYWlsSWNvbjsKIAogICAgIGludCBiYXNlbGluZSB7IDAgfTsKIApA
QCAtMTgxOSwxMiArMTgyMCwyMCBAQCBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICB9CiAKICAg
ICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRT
aXplIGljb25TaXplOwotICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVu
dCwgaWNvblNpemUpOwotICAgICAgICBpZiAoaWNvbikgewotICAgICAgICAgICAgaWNvblJlY3Qg
PSBGbG9hdFJlY3QoRmxvYXRQb2ludCgoYXR0YWNobWVudFJlY3Qud2lkdGgoKSAvIDIpIC0gKGlj
b25TaXplLndpZHRoKCkgLyAyKSwgMCksIGljb25TaXplKTsKKyAgICAgICAgCisgICAgICAgIHRo
dW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsUmVw
cmVzZW50YXRpb24oKTsKKyAgICAgICAgaWYgKHRodW1ibmFpbEljb24pIHsKKyAgICAgICAgICAg
IGljb25SZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkg
LyAyKSAtICg2NSAvIDIpLCAwKSwgRmxvYXRTaXplKDY1LCA2NSkpOwogICAgICAgICAgICAgeU9m
ZnNldCArPSBpY29uUmVjdC5oZWlnaHQoKSArIGF0dGFjaG1lbnRJdGVtTWFyZ2luOwogICAgICAg
ICB9CisgICAgICAgIGlmICghdGh1bWJuYWlsSWNvbikgeworICAgICAgICAgICAgRmxvYXRTaXpl
IGljb25TaXplOworICAgICAgICAgICAgaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1l
bnQsIGljb25TaXplKTsKKyAgICAgICAgICAgIGlmIChpY29uKSB7CisgICAgICAgICAgICAgICAg
aWNvblJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgoYXR0YWNobWVudFJlY3Qud2lkdGgoKSAv
IDIpIC0gKGljb25TaXplLndpZHRoKCkgLyAyKSwgMCksIGljb25TaXplKTsKKyAgICAgICAgICAg
ICAgICB5T2Zmc2V0ICs9IGljb25SZWN0LmhlaWdodCgpICsgYXR0YWNobWVudEl0ZW1NYXJnaW47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgYnVpbGRXcmFw
cGVkTGluZXMoYWN0aW9uLCBhdHRhY2htZW50QWN0aW9uRm9udCgpLmdldCgpLCBhdHRhY2htZW50
QWN0aW9uQ29sb3IoYXR0YWNobWVudCksIGF0dGFjaG1lbnRXcmFwcGluZ1RleHRNYXhpbXVtTGlu
ZUNvdW50KTsKIApAQCAtMTg1Nyw2ICsxODY2LDkgQEAgaW50IFJlbmRlclRoZW1lSU9TOjphdHRh
Y2htZW50QmFzZWxpbmUoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkgY29uc3QK
IAogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogeworICAgIGlmIChpbmZvLnRodW1ibmFp
bEljb24pCisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbmZvLnRodW1ibmFpbEljb24uZ2V0
KCksIGluZm8uaWNvblJlY3QpOworICAgIAogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTE5MzcsNyArMTk0OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAK
ICAgICBpZiAoaW5mby5oYXNQcm9ncmVzcykKICAgICAgICAgcGFpbnRBdHRhY2htZW50UHJvZ3Jl
c3MoY29udGV4dCwgaW5mbyk7Ci0gICAgZWxzZSBpZiAoaW5mby5pY29uKQorICAgIGVsc2UgaWYg
KGluZm8uaWNvbiB8fCBpbmZvLnRodW1ibmFpbEljb24pCiAgICAgICAgIHBhaW50QXR0YWNobWVu
dEljb24oY29udGV4dCwgaW5mbyk7CiAKICAgICBwYWludEF0dGFjaG1lbnRUZXh0KGNvbnRleHQs
IGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4
IDMxOGViODJkOWFkNTdkN2Q0MzVhNWMxNzk3OTY4ZDNlZTc2YjlmZGMuLjU4OTMzZmFkYjUxZDlm
NDI3NmZhODU1NjJiNmM1ZTMwMWE2NGE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KQEAgLTI4MDYsNiArMjgwNiwxMSBAQCBzdGF0aWMgUmVmUHRyPElj
b24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQp
CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3QgUmVuZGVyQXR0YWNobWVu
dCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0
JiBsYXlvdXQpCiB7CisgICAgYXV0byB0aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLnRodW1ibmFpbFJlcHJlc2VudGF0aW9uKCk7CisgICAgaWYgKHRodW1ibmFp
bEljb24pIHsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKnRodW1ibmFpbEljb24uZ2V0KCks
IGxheW91dC5pY29uUmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgYXV0byBpY29u
ID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCk7CiAgICAgaWYgKCFpY29uKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktp
dC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmln
CmluZGV4IGY0OWEyNTQxZDY2ZWRhYWQxZTc5OTFiNmZhMmVjZDBiNTk4YmQxZmMuLjYwODU2OTM4
YzNiOGI5Mjg0NGQ4Mzg2ODlmYjRiNzA1YmVhMWUwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvQ29u
ZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCkBAIC0xMjQsNyArMTI0LDEwIEBAIFdLX0FVVEhL
SVRfTERGTEFHU19JT1NfU0lOQ0VfMTMgPSAtZnJhbWV3b3JrIEF1dGhLaXQ7CiBXS19BVVRIS0lU
X0xERkxBR1NfbWFjb3N4ID0gJChXS19BVVRIS0lUX0xERkxBR1MkKFdLX01BQ09TXzEwMTUpKTsK
IFdLX0FVVEhLSVRfTERGTEFHU19NQUNPU19TSU5DRV8xMDE1ID0gLWZyYW1ld29yayBBdXRoS2l0
OwogCi1GUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9IC1sb2JqYyAtZnJhbWV3b3JrIENG
TmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1m
cmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3Vu
ZGF0aW9uIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSU9T
dXJmYWNlIC1mcmFtZXdvcmsgV2ViS2l0TGVnYWN5IC1sbmV0d29yayAkKFdLX0FDQ0VTU0lCSUxJ
VFlfTERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BU1NFUlRJT05fU0VSVklDRVNf
TERGTEFHUykgJChXS19SVU5OSU5HQk9BUkRfU0VSVklDRVNfTERGTEFHUykgJChXS19BVVRIS0lU
X0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QUkVESUNUSU9OX0xERkxB
R1MpICQoV0tfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xE
RkxBR1MpICQoV0tfTElCU0FOREJPWF9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAk
KFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERG
TEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TQUZF
X0JST1dTSU5HX0xERkxBR1MpICQoV0tfU0VDVVJJVFlfSU5URVJGQUNFX0xERkxBR1MpICQoV0tf
VUlLSVRfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1dFQklOU1BF
Q1RPUlVJX0xERkxBR1MpOworV0tfUVVJQ0tfTE9PS19USFVNQk5BSUxJTkdfTERGTEFHUyA9IC1m
cmFtZXdvcmsgUXVpY2tMb29rVGh1bWJuYWlsaW5nOworV0tfUVVJQ0tfTE9PS19USFVNQk5BSUxJ
TkdfTERGTEFHU1tzZGs9d2F0Y2gqXSA9IDsKKworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxB
R1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZy
YW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3Jr
IENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1l
d29yayBJT0tpdCAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAt
bG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1Mp
ICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfUlVOTklOR0JPQVJEX1NFUlZJ
Q0VTX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAk
KFdLX0NPUkVfUFJFRElDVElPTl9MREZMQUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykg
JChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykg
JChXS19MSUJXRUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdT
KSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tf
UERGS0lUX0xERkxBR1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZ
X0lOVEVSRkFDRV9MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJ
TkdfTERGTEFHUykgJChXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTKSAkKFdLX1FVSUNLX0xPT0tf
VEhVTUJOQUlMSU5HX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMrKyBzdGFuZGFyZCBsaWJyYXJ5
IGJhc2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0
ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgog
VU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
WlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0
aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2ws
LXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzJFT1M0XyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3Jl
MTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xp
Y3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThm
dW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBFUlM0XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lB
Y3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1
bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0XyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rp
b25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25J
RnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNFUktT
NF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25f
Y2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJp
bmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTNi
YXNpY19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNf
XzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9y
SWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRSAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNF
RU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3Qz
X18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0
cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFOF9OU18x
M2Jhc2ljX29zdHJlYW1JY1MyX0VFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNTNhMGY5OWI1MzEyNTNhYjUxZDViNDI3YjRlZDc4NTcy
NTc3ZjAwYS4uN2YwYzNmOWY2MTRlMTBiYzBmZGJmYzU2MmNmYjk2MzkxZjg0YjQzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00Niw2
ICs0Niw3IEBACiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKICNpbXBvcnQgIlBhZ2VDbGll
bnQuaCIKICNpbXBvcnQgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisjaW1wb3J0ICJRTFRodW1i
bmFpbExvYWQuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90
ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKQEAgLTE4NCw2ICsxODUsOCBAQCBzdGF0aWMgY29u
c3QgQk9PTCBkZWZhdWx0RmFzdENsaWNraW5nRW5hYmxlZCA9IE5POwogc3RhdGljIGNvbnN0IHVp
bnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhMaW5rUHJldmlld0VuYWJsZWRCeURlZmF1bHQgPSAw
eEEwMDAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgPFF1aWNr
TG9va1RodW1ibmFpbGluZy9RTFRodW1ibmFpbEdlbmVyYXRvci5oPgorCiBzdGF0aWMgSGFzaE1h
cDxXZWJLaXQ6OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+
JiBwYWdlVG9WaWV3TWFwKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxX
ZWJLaXQ6OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+PiBt
YXA7CkBAIC0yMjIyLDcgKzIyMjUsOCBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFj
aG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcgogICAgICAg
ICBpZiAoY2FwdHVyZWRIYW5kbGVyKQogICAgICAgICAgICAgY2FwdHVyZWRIYW5kbGVyKGVycm9y
ID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CiAgICAgfSk7Ci0KKyAgICAK
KyAgICBfcGFnZS0+Z2V0UUxUaHVtYm5haWxGb3JGaWxlV3JhcHBlcihmaWxlV3JhcHBlciwgaWRl
bnRpZmllcik7CiAgICAgcmV0dXJuIHdyYXBwZXIoYXR0YWNobWVudCk7CiAjZWxzZQogICAgIHJl
dHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCmluZGV4IDM5NGJmOTE5Mzk3ODdhNzZiZjE3M2UzMTlkYzIyYmI2MjIzMjk3
YjAuLmJhMTNiMjk1ZWJhMGRiODJiZjEzMWM2NzhjZGNhYmExY2ViMWIyNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0z
Miw2ICszMiw3IEBACiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQgIlFMVGh1bWJu
YWlsTG9hZC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCkBA
IC0zOSw2ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2ltcG9y
dCA8UXVpY2tMb29rVGh1bWJuYWlsaW5nL1FMVGh1bWJuYWlsR2VuZXJhdG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CkBAIC0zNjAsNCArMzYy
LDg4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2Uo
KQogI2VuZGlmCiB9CiAKKyNpZiBQTEFURk9STShNQUMpCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0TlNJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENv
bmZpZ3VyYXRpb24pOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBSZXRhaW5QdHI8TlNHcmFwaGljc0NvbnRleHQ+IHNhdmVkQ29udGV4dCA9IFtOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgorICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpncmFw
aGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGZsaXBwZWQ6WUVTXV07CisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgW2ltYWdlIGRyYXdJblJlY3Q6TlNNYWtl
UmVjdCgwLCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQo
KSkgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNv
dXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKworICAg
IFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpzYXZlZENvbnRleHQuZ2V0KCld
OworCisgICAgcmV0dXJuIGJpdG1hcDsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKK3N0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRVSUlt
YWdlVG9CaXRtYXAoVUlJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
Cit7CisgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29u
ZmlndXJhdGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFiaXRt
YXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3NDb250
ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBVSUdyYXBoaWNzUHVzaENv
bnRleHQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgW2ltYWdlIGRy
YXdJblJlY3Q6IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwgYml0bWFw
LT5zaXplKCkuaGVpZ2h0KCkpXTsKKyAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOworCisgICAg
cmV0dXJuIGJpdG1hcDsKK30KKyNlbmRpZgorCit2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKEJP
T0wgc3VjY2Vzcyk7CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckdlbmVy
YXRpb25SZXF1ZXN0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRpb24pCit7
CisgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKKyAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IG9wZXJhdGlvbi5pZGVudGlmaWVyOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAg
ICAgICAgIGF1dG8gY29udmVydGVkSW1hZ2UgPSBjb252ZXJ0TlNJbWFnZVRvQml0bWFwKG9wZXJh
dGlvbi5xbFRodW1ibmFpbE1hYywgV2ViQ29yZTo6SW50U2l6ZSgxMjgwLCAxMjgwKSk7CisjZW5k
aWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRJ
bWFnZSA9IGNvbnZlcnRVSUltYWdlVG9CaXRtYXAob3BlcmF0aW9uLnFsVGh1bWJuYWlsaU9TLCBX
ZWJDb3JlOjpJbnRTaXplKDEyODAsIDEyODApKTsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKGNv
bnZlcnRlZEltYWdlID09IG51bGxwdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgY29udmVydGVkSW1h
Z2UsIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNhcHR1cmVkSGFuZGxlcikKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRIYW5kbGVyKGVy
cm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfV07CisgICAgICAgIAorICAgIFtbV0tRTFRodW1ibmFpbFF1
ZXVlTWFuYWdlciBzaGFyZWRJbnN0YW5jZV0ucWxUaHVtYm5haWxHZW5lcmF0aW9uUXVldWUgYWRk
T3BlcmF0aW9uOm9wZXJhdGlvbl07Cit9CisKKwordm9pZCBXZWJQYWdlUHJveHk6OmdldFFMVGh1
bWJuYWlsRm9yRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3Bl
cmF0aW9uID0gW1tXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhBdHRh
Y2htZW50OmZpbGVXcmFwcGVyIGlkZW50aWZpZXI6aWRlbnRpZmllcl07CisgICAgZ2V0UUxUaHVt
Ym5haWxGb3JHZW5lcmF0aW9uUmVxdWVzdGlvbihvcGVyYXRpb24pOworfQorCit2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0UUxUaHVtYm5haWxGb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBXS1FMVGh1bWJuYWlsTG9hZE9w
ZXJhdGlvbiAqb3BlcmF0aW9uID0gW1tXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10g
aW5pdFdpdGhVUkw6ZmlsZVBhdGggaWRlbnRpZmllcjppZGVudGlmaWVyXTsKKyAgICBnZXRRTFRo
dW1ibmFpbEZvckdlbmVyYXRpb25SZXF1ZXN0aW9uKG9wZXJhdGlvbik7CisgICAgCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UUxUaHVtYm5haWxMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RTFRodW1ibmFpbExv
YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYzc3NmQxOTg4YjExNDM4OThiYWUwZWUzNGJiYmMxMDkyODQ2ZTE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUUxUaHVtYm5haWxM
b2FkLmgKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFU
SU9OTkFNRV9fXyBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8VUlLaXQvVUlL
aXQuaD4KKyNlbmRpZgorCitAaW50ZXJmYWNlIFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgOiBO
U09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIE5TT3Bl
cmF0aW9uUXVldWUqIHFsVGh1bWJuYWlsR2VuZXJhdGlvblF1ZXVlOworLSAoaWQpaW5pdDsKKysg
KFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgKilzaGFyZWRJbnN0YW5jZTsKK0BlbmQKKworQGlu
dGVyZmFjZSBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiA6IE5TT3BlcmF0aW9uCitAcHJvcGVy
dHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNBc3luY2hyb25vdXMpIEJPT0wgYXN5bmNocm9ub3VzOwor
QHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzRXhlY3V0aW5nKSBCT09MIGV4ZWN1dGluZzsK
K0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc0ZpbmlzaGVkKSBCT09MIGZpbmlzaGVkOwor
I2lmIFBMQVRGT1JNKE1BQykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGFzc2ln
bikgTlNJbWFnZSAqcWxUaHVtYm5haWxNYWM7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIFVJSW1hZ2Ug
KnFsVGh1bWJuYWlsaU9TOworI2VuZGlmCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3Jp
dGUsIGFzc2lnbikgTlNNdXRhYmxlU3RyaW5nICppZGVudGlmaWVyOworCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIE5TU3RyaW5nICpjb250ZW50VHlwZTsKKworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgYXNzaWduKSBOU0ZpbGVXcmFwcGVyICpmaWxl
V3JhcHBlcjsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgYXNzaWduKSBCT09M
IHNob3VsZFdyaXRlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24p
IE5TVVJMICpmaWxlUGF0aDsKKworLSAoaWQpaW5pdFdpdGhBdHRhY2htZW50OihOU0ZpbGVXcmFw
cGVyICopZmlsZVdyYXBwZXIgaWRlbnRpZmllcjogKE5TU3RyaW5nICopaWRlbnRpZmllcjsKKy0g
KGlkKWluaXRXaXRoVVJMOihOU1N0cmluZyAqKWZpbGVVcmwgaWRlbnRpZmllcjogKE5TU3RyaW5n
ICopaWRlbnRpZmllcjsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1FMVGh1bWJuYWlsTG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1FMVGh1bWJuYWls
TG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YmM5ZTNkMTNmZDYzMjcxOTc0MzRjOTg5Nzc5NTJiMDhmNDY2
MDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUUxUaHVtYm5h
aWxMb2FkLm1tCkBAIC0wLDAgKzEsMTYyIEBACisvLyBDb3B5cmlnaHQgwqkgMjAyMCBfX19PUkdB
TklaQVRJT05OQU1FX19fIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlFMVGh1bWJuYWlsTG9hZC5oIgorCisjaW1wb3J0IDxRdWlja0xvb2tUaHVtYm5h
aWxpbmcvUUxUaHVtYm5haWxHZW5lcmF0b3IuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CisKK0BpbXBsZW1lbnRhdGlvbiBXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyCistIChpZClpbml0
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgX3Fs
VGh1bWJuYWlsR2VuZXJhdGlvblF1ZXVlID0gW1tOU09wZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0
XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciAq
KXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIg
KnNoYXJlZEluc3RhbmNlID0gbmlsOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgaXNEaXNw
YXRjaGVkOworCisgICAgZGlzcGF0Y2hfb25jZSgmaXNEaXNwYXRjaGVkLCBeeworICAgICAgICBz
aGFyZWRJbnN0YW5jZSA9IFtbV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBhbGxvY10gaW5pdF07
CisgICAgfSk7CisKKyAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7Cit9CitAZW5kCisKKworQGlt
cGxlbWVudGF0aW9uIFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uCistIChpZClpbml0V2l0aEF0
dGFjaG1lbnQ6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBpZGVudGlmaWVyOihOU011dGFi
bGVTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsK
KyAgICAgICAgX2ZpbGVXcmFwcGVyID0gZmlsZVdyYXBwZXI7CisgICAgICAgIF9pZGVudGlmaWVy
ID0gW2lkZW50aWZpZXIgY29weV07CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBfcWxUaHVt
Ym5haWxNYWMgPSBudWxscHRyOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICAgICAgX3FsVGh1bWJuYWlsaU9TID0gbnVsbHB0cjsKKyNlbmRpZgorICAgICAgICBfZmlsZVBh
dGggPSBudWxscHRyOworICAgICAgICBfc2hvdWxkV3JpdGUgPSBZRVM7CisgICAgfQorCisgICAg
cmV0dXJuIHNlbGY7CisgICAgCit9CisKKy0gKGlkKWluaXRXaXRoVVJMOihOU011dGFibGVTdHJp
bmcgKilmaWxlVXJsIGlkZW50aWZpZXI6KE5TTXV0YWJsZVN0cmluZyAqKWlkZW50aWZpZXIKK3sK
KyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBfZmlsZVdyYXBwZXIgPSBu
dWxscHRyOworICAgICAgICBfaWRlbnRpZmllciA9IFtpZGVudGlmaWVyIGNvcHldOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAgICAgX3FsVGh1bWJuYWlsTWFjID0gbnVsbHB0cjsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIF9xbFRodW1ibmFpbGlPUyA9IG51bGxw
dHI7CisjZW5kaWYKKyAgICAgICAgX2ZpbGVQYXRoID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
ZmlsZVVybF0gY29weV07CisgICAgICAgIF9zaG91bGRXcml0ZSA9IE5POworICAgIH0KKworICAg
IHJldHVybiBzZWxmOworICAgIAorfQorCistICh2b2lkKXN0YXJ0Cit7CisgICAgCisgICAgTlNM
b2coQCJTdGFydGluZyAlQCIsIHNlbGYpOworICAgIHNlbGYuZXhlY3V0aW5nID0gWUVTOworICAg
IAorICAgIGlmIChfc2hvdWxkV3JpdGUpIHsKKyAgICAgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJRTFRlbXBGaWxlRGF0
YSIpOworICAgIAorICAgICAgICBOU1N0cmluZyAqZmlsZVBhdGggPSBbdGVtcERpcmVjdG9yeSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6X2ZpbGVXcmFwcGVyLnByZWZlcnJlZEZpbGVu
YW1lXTsKKyAgICAgICAgTlNGaWxlV3JhcHBlcldyaXRpbmdPcHRpb25zIG9wdGlvbnMgPSAwOwor
ICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgCisgICAgICAgIE5TVVJMICpm
aWxlVVJMUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVBhdGhdOworCisgICAgICAg
IFtfZmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpmaWxlVVJMUGF0aCBvcHRpb25zOm9wdGlvbnMgb3Jp
Z2luYWxDb250ZW50c1VSTDpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgX2ZpbGVQYXRoID0g
ZmlsZVVSTFBhdGg7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBRTFRodW1ibmFpbEdlbmVyYXRpb25SZXF1ZXN0ICpyZXEgPSBbW1FMVGh1bWJu
YWlsR2VuZXJhdGlvblJlcXVlc3QgYWxsb2NdIGluaXRXaXRoRmlsZUF0VVJMOl9maWxlUGF0aCBz
aXplOkNHU2l6ZU1ha2UoMTI4MC4wLCAxMjgwLjApIHNjYWxlOjEgcmVwcmVzZW50YXRpb25UeXBl
czpRTFRodW1ibmFpbEdlbmVyYXRpb25SZXF1ZXN0UmVwcmVzZW50YXRpb25UeXBlQWxsXTsKKyAg
ICByZXEuaWNvbk1vZGUgPSBZRVM7CisgICAgCisgICAgW1tRTFRodW1ibmFpbEdlbmVyYXRvciBz
aGFyZWRHZW5lcmF0b3JdIGdlbmVyYXRlQmVzdFJlcHJlc2VudGF0aW9uRm9yUmVxdWVzdDpyZXEg
Y29tcGxldGlvbkhhbmRsZXI6XihRTFRodW1ibmFpbFJlcHJlc2VudGF0aW9uICp0aHVtYm5haWws
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVy
bjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGlmIChfcWxUaHVtYm5haWxNYWMpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIF9xbFRodW1ibmFpbE1hYyA9IHRodW1ibmFpbC5OU0lt
YWdlOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgaWYgKF9xbFRo
dW1ibmFpbGlPUykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgX3FsVGh1bWJuYWlsaU9T
ID0gdGh1bWJuYWlsLlVJSW1hZ2U7CisjZW5kaWYKKyAgICAgICAgaWYgKF9zaG91bGRXcml0ZSkg
eworICAgICAgICAgICAgTlNFcnJvciAqZXJyb3JGaWxlID0gbmlsOworICAgICAgICAgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6X2ZpbGVQYXRoIGVy
cm9yOiZlcnJvckZpbGVdOworICAgICAgICB9CisKKyAgICAgICAgc2VsZi5leGVjdXRpbmcgPSBO
TzsKKyAgICAgICAgc2VsZi5maW5pc2hlZCA9IFlFUzsKKyAgICB9XTsKK30KKworLSAoQk9PTClp
c0FzeW5jaHJvbm91cworeworICAgIHJldHVybiBZRVM7Cit9CisKK0BzeW50aGVzaXplIGV4ZWN1
dGluZz1fZXhlY3V0aW5nOworCistIChCT09MKWlzRXhlY3V0aW5nCit7CisgICAgQHN5bmNocm9u
aXplZChzZWxmKSB7CisgICAgICAgIHJldHVybiBfZXhlY3V0aW5nOworICAgIH0KK30KKworLSAo
dm9pZClzZXRFeGVjdXRpbmc6KEJPT0wpZXhlY3V0aW5nCit7CisgICAgQHN5bmNocm9uaXplZChz
ZWxmKSB7CisgICAgICAgIGlmIChleGVjdXRpbmcgIT0gX2V4ZWN1dGluZykgeworICAgICAgICAg
ICAgW3NlbGYgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiaXNFeGVjdXRpbmciXTsKKyAgICAgICAg
ICAgIF9leGVjdXRpbmcgPSBleGVjdXRpbmc7CisgICAgICAgICAgICBbc2VsZiBkaWRDaGFuZ2VW
YWx1ZUZvcktleTpAImlzRXhlY3V0aW5nIl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BzeW50
aGVzaXplIGZpbmlzaGVkPV9maW5pc2hlZDsKKworLSAoQk9PTClpc0ZpbmlzaGVkCit7CisgICAg
QHN5bmNocm9uaXplZChzZWxmKSB7CisgICAgICAgIHJldHVybiBfZmluaXNoZWQ7CisgICAgfQor
fQorCistICh2b2lkKXNldEZpbmlzaGVkOihCT09MKWZpbmlzaGVkCit7CisgICAgQHN5bmNocm9u
aXplZChzZWxmKSB7CisgICAgICAgIGlmIChmaW5pc2hlZCAhPSBfZmluaXNoZWQpIHsKKyAgICAg
ICAgICAgIFtzZWxmIHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImlzRmluaXNoZWQiXTsKKyAgICAg
ICAgICAgIF9maW5pc2hlZCA9IGZpbmlzaGVkOworICAgICAgICAgICAgW3NlbGYgZGlkQ2hhbmdl
VmFsdWVGb3JLZXk6QCJpc0ZpbmlzaGVkIl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyMDhhODdlY2Ji
YmFkMGNiNmM3MDFlNzZjYzUzZDI0ZTdkOGQ1NDQuLjU3MDQ4YjM4N2U3ZjJiYjAwNDkzZjAxNWM3
ODAzOTYzYWI3ZDcxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtOTQzMyw2ICs5NDMzLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVu
dC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1l
bnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZl
cmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiBiaXRtYXAsICBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBj
YWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5k
bGU7CisgICAgaWYgKGJpdG1hcCkKKyAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxl
KTsKKworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6dXBkYXRlQXR0YWNobWVudEljb24iX3MpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVcGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5kbGUsIGNhbGxiYWNrSUQp
KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJG
cm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
SWRlbnRpZmllclRvQXR0YWNobWVudE1hcDo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CkBAIC05
NDU4LDggKzk0NzMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmIGlkZW50aQogICAgIGF0dGFjaG1lbnQt
PnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlUGF0
aChmaWxlUGF0aCk7CiAgICAgbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5z
ZXQoaWRlbnRpZmllciwgYXR0YWNobWVudC5jb3B5UmVmKCkpOwotCiAgICAgcGxhdGZvcm1SZWdp
c3RlckF0dGFjaG1lbnQoV1RGTW92ZShhdHRhY2htZW50KSwgZmlsZVBhdGgpOworICAgIGdldFFM
VGh1bWJuYWlsRm9yQXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxlUGF0aCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTZi
ZTM0ZTAzOTc2NzliYTcwMDZlODJjZTAyNmNiNDFiZjJmMDUxYS4uNmNkZTA0ZjlkYzk5YmI4OTQ3
YTc4M2EwZGJmMmE4YmUzNTFhNzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTE5Niw2ICsxOTYsOCBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFS
ZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQorT0JKQ19DTEFT
UyBOU0ZpbGVXcmFwcGVyOworT0JKQ19DTEFTUyBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBA
IC0xNTgxLDkgKzE1ODMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiwgRnVuY3Rpb248dm9p
ZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JB
dHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYpOwotCisgICAgdm9pZCBnZXRRTFRodW1ibmFpbEZv
ckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBnZXRR
TFRodW1ibmFpbEZvckZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIGdldFFMVGh1bWJuYWlsRm9yR2VuZXJhdGlvblJlcXVlc3Rpb24oV0tRTFRodW1i
bmFpbExvYWRPcGVyYXRpb24qKTsKICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBTaG91bGRVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyB3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpB
dHRhY2htZW50Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDFjNWEyOGM0M2E2N2YzZjY4ZjNhNGRmZmJiOTVlMGZhNzE5
NzdjNTUuLjY0M2U3ZmZjYzcxMWVhYzRkMDhiYWM4YjkyMDdjMWU5ZDc3MTJjYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY0LDYg
KzE2NCw3IEBACiAJCTFBMDdEMkY5MTkxOUIzQTkwMEVDREExNiAvKiBtZXNzYWdlcy5weSBpbiBD
b3B5IE1lc3NhZ2UgR2VuZXJhdGlvbiBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQzA4NTZGMTg3Q0UwQTkwMDc4MEQ4NiAvKiBtZXNzYWdlcy5weSAqLzsgfTsK
IAkJMUEwN0QyRkExOTE5QjNBOTAwRUNEQTE2IC8qIG1vZGVsLnB5IGluIENvcHkgTWVzc2FnZSBH
ZW5lcmF0aW9uIFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
MDg1NzAxODdDRTBBOTAwNzgwRDg2IC8qIG1vZGVsLnB5ICovOyB9OwogCQkxQTA3RDJGQjE5MTlC
M0E5MDBFQ0RBMTYgLyogcGFyc2VyLnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlw
dHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzExODdDRTBBOTAw
NzgwRDg2IC8qIHBhcnNlci5weSAqLzsgfTsKKwkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8q
IFFMVGh1bWJuYWlsTG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQubW0g
Ki87IH07CiAJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM2
MDExMjRBOUYyQzAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTFB
MEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEVDNkJFMTI0QkJEOUIw
MDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUEwRUM3NUUxMjRC
QzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM3NUMxMjRCQzdCMjAwN0VGNEE1IC8qIFBs
dWdpblByb2Nlc3NQcm94eS5oICovOyB9OwpAQCAtMzc5LDYgKzM4MCw3IEBACiAJCTFBRTQ5ODc4
MTFGRjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU0OTg3NjExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9i
amVjdC5oICovOyB9OwogCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNDlBNDcx
MUZGQThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCAqLzsgfTsKIAkJMUFFNTJGOTgxOTIwMjY3
MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAv
KiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8qIFFMVGh1
bWJuYWlsTG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFFRTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFFMVGh1bWJuYWlsTG9hZC5oICovOyB9Owog
CQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGQ0MxMDExRDAxRjk2MDA4
MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggKi87IH07CiAJCTFBRUZEMjc5MTFEMTZDODEwMDgy
MTlEMyAvKiBBcmd1bWVudENvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUVGRDI3ODExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5o
ICovOyB9OwogCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZEMkY2MTFE
MTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oICovOyB9OwpAQCAtMjY1MSw2ICsyNjUz
LDggQEAKIAkJMUFFNTJGOTMxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25SZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRTUy
Rjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFNUI3RjkxMUU3QUVEMjAwQkE2NzY3IC8q
IE5ldHNjYXBlUGx1Z2luTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTmV0c2NhcGVQbHVnaW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFBRUU1NzIzMjQwOUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUUxUaHVtYm5haWxMb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFB
RUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFFMVGh1bWJuYWlsTG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFFRkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFFRkNDMTExMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9T
dG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5JbmZv
U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVGQ0NCQzExRDAyQzVF
MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUGx1Z2luSW5mb1N0b3JlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODg4Nyw2ICs4ODkxLDggQEAKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4
MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAogCQkJCTQ2ODM1NjlCMjFFODFD
QzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJNDY4MzU2OUEy
MUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8sCisJCQkJMUFFRTU3
MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFFMVGh1bWJuYWlsTG9hZC5oICovLAorCQkJCTFBRUU1NzI0
MjQwOUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQubW0gKi8sCiAJCQkJQkMxMTFCMDgx
MTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAw
NjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNB
OTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKQEAgLTEw
OTI4LDYgKzEwOTM0LDcgQEAKIAkJCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkU2N0EyNTE5MTBCOUQx
MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhB
RTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFBRUU1NzI1MjQwOUYxNDIwMDIwMDVENiAvKiBRTFRodW1ibmFpbExvYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5l
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVk
aXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlE
MjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTI2NjQsNiArMTI2NzEsNyBAQAogCQkJCUMxNUNCQjM3MjNGMzdF
Q0IwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQky
RDU0QzMxQjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2Jz
ZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQTBDMjI1RTI0MzU3NUNEMDBFRDYxNEQgLyog
UUxUaHVtYm5haWxMb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAw
OENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDIyNDM4NGEyYjM1Y2YxNDRjMGYzZTc2MjNjZmRiNDcxYjViYWM4OTIuLmM3Y2ViY2Fh
YzNiYmI4NzU4OWIzNDBjYmY2YjBkZTlmZTM3Zjg1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Nzk5LDYgKzY3OTksMTUgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPHVpbnQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRD
YWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVu
dEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgcWxUaHVtYm5haWxIYW5kbGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBp
ZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVu
dGlmaWVyKSkgeworICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gcWxUaHVtYm5h
aWwgPSAhcWxUaHVtYm5haWxIYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShxbFRodW1ibmFpbEhhbmRsZSkgOiBudWxscHRyKQorICAgICAgICAgICAgYXR0YWNobWVudC0+
dXBkYXRlVGh1bWJuYWlsUmVwcmVzZW50YXRpb24ocWxUaHVtYm5haWwtPmNyZWF0ZUltYWdlKCkp
OworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhj
YWxsYmFja0lEKSk7Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6
OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50cyBpbiBz
dWJmcmFtZXMgdG9vIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggMmQ1MWI5YmVjOTFhYWQ2N2YxYjBjZjljMzZkYzZkZTlhYzBjNzkxNC4u
ZjY3YzhjOTEyNGNmZDRhODFkYTE5MDFlMTU1ZWI1NWU2NTk5ZmE0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlU2hlZXRDYWxsYmFja0lELmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2FjdGlvbklELmgiCkBAIC0xMjA3LDYgKzEy
MDgsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lk
IGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVT
aXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhh
bmRsZSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDY0YTNkMjAwYTljNDVjZmM1NWZmZTdiMTYxMGI4YTQ1ZTQxMGYy
ZDEuLjZjZWIxYTRmYjg3YTJkMjVlODRmNmQxNzllMGRmZmUxYjIzYjk1YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtNTU3LDYgKzU1Nyw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNv
bnRlbnRUeXBlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZp
bGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIs
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396563</attachid>
            <date>2020-04-15 13:05:39 -0700</date>
            <delta_ts>2020-04-15 14:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200415160538.patch</filename>
            <type>text/plain</type>
            <size>39559</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhkMDI4MGEwY2RjNTk2
NzAyZGY3MTg0NzczNjlmY2QwODVhYWJmYi4uNTA5NTlhM2ExZjkwNjBjZmEzMmFiYmFhM2FiZTUz
NmViMThkY2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1i
ZXIgaW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIHFsIHRodW1ibmFpbC4gQWRkZWQgY29kZSB0
byByZW5kZXIgdGhpcyBpbWFnZSBvbiBib3RoIGlvcyBhbmQgbWFjLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gVGVzdCB3aWxsIGJlIGFkZGVkIGFmdGVyIGFkZGl0aW9ucyB0byB0ZXN0IGluZnJh
c3RydWN0dXJlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIEFsbG93IHNldHRpbmcgb2YgdGh1bWJuaWFsIG1lbWJl
ci4KKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgQWRkZWQgcmVuZGVyaW5nIG9mIGlt
YWdlIG1lbWJlciBvZiBhdHRhY2htZW50IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKwogMjAyMC0wNC0x
MyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVhbiB1
cCBtb3JlIHJlc291cmNlcyBkdXJpbmcgV2ViR0xMYXllciB0ZWFyZG93bgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
NzQ3MWIwOGJhOTZjMzY1ODI5NmIzYTczZTlkYjY3NjdlN2U1YTZlLi4wZWRiY2NmMTgxMmVjYzdi
OTAyZjQ1ZDY2MTY1ZDlkYjJiMmZiMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIw
LTAzLTEwICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFdLMiBRdWlja2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBhdHRhY2htZW50IGVsZW1lbnRzIHRvIHJl
bmRlciBxdWlja2xvb2sgdGh1bWJuYWlsIGdlbmVyYXRlZAorICAgICAgICBmcm9tIGNvbnRlbnRz
IG9mIHRoZSBmaWxlIGFzIGl0cyBpY29uLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdAorICAgICAg
ICBpY29ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBtaW1lIHR5cGUuCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpj
b250ZW50VHlwZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydE5TSW1hZ2VUb0JpdG1h
cCk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRVSUltYWdlVG9CaXRtYXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWlsRm9yR2VuZXJhdGlvblJlcXVlc3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWlsRm9yRmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWls
Rm9yQXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1FMVGh1bWJuYWlsTG9hZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBpbml0XSk6CisgICAgICAgICgrW1dL
UUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKC1bV0tR
TFRodW1ibmFpbExvYWRPcGVyYXRpb24gaW5pdFdpdGhBdHRhY2htZW50OmlkZW50aWZpZXI6XSk6
CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGluaXRXaXRoVVJMOmlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHN0YXJ0XSk6
CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGlzQXN5bmNocm9ub3VzXSk6
CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGlzRXhlY3V0aW5nXSk6Cisg
ICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHNldEV4ZWN1dGluZzpdKToKKyAg
ICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaXNGaW5pc2hlZF0pOgorICAgICAg
ICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBzZXRGaW5pc2hlZDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAyMC0wNC0xMyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gVXBkYXRlIG1lc3NhZ2UgZmlsdGVycyBpbiB0aGUgV2Vi
Q29udGVudCBzYW5kYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAKaW5kZXggYmRhZDlhMDA1NDI4ZjE0N2E4MTVlY2UwM2U3YzM5YTA3Yjg5YTJkNS4u
ODM5OWMwZDU5NmNjOGRjMmNiMzkwZDAyODA2MmIxMDBjMjNmOWI0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjQ5LDYgKzI0OSwxNCBA
QCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0
YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIG1pbWVUeXBl
KSkpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuYWlsUmVw
cmVzZW50YXRpb24oY29uc3QgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxSZXByZXNlbnRhdGlvbikK
K3sKKyAgICBtX3RodW1ibmFpbFJlcHJlc2VudGF0aW9uID0gdGh1bWJuYWlsUmVwcmVzZW50YXRp
b247CisgICAgCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IGE5YmIyNDc1NzU1YTI4YWMyZDMx
Nzk2NDZhYjhlM2QxYTkyZmJjZTUuLmE0YTcxNmM5MGU5NDlhNjhmYmM0NzFiZjVlNjMzMzkxYWFj
YWUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApA
QCAtMzMsNyArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGU7CiBjbGFz
cyBIVE1MSW1hZ2VFbGVtZW50OworY2xhc3MgSW1hZ2U7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50
OworY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBI
VE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewpAQCAtNTYs
NiArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJp
YnV0ZXMoT3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3
Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlVGh1bWJuYWlsUmVwcmVzZW50YXRpb24oY29uc3QgUmVmUHRyPEltYWdlPiB0aHVt
Ym5haWxSZXByZXNlbnRhdGlvbik7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBp
bnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JikgZmluYWw7CkBAIC02Nyw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXR0YWNobWVu
dFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNv
bnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwotCisgICAgUmVmUHRyPElt
YWdlPiB0aHVtYm5haWxSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGh1bWJuYWls
UmVwcmVzZW50YXRpb247IH0KICAgICBSZW5kZXJBdHRhY2htZW50KiByZW5kZXJlcigpIGNvbnN0
OwogCiBwcml2YXRlOgpAQCAtODcsNiArOTAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFJlZlB0
cjxGaWxlPiBtX2ZpbGU7CiAgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKKyAgICBSZWZQ
dHI8SW1hZ2U+IG1fdGh1bWJuYWlsUmVwcmVzZW50YXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5k
ZXggMjc1NDhiMTczYjc2MzBjYzM0ZGFiODQzMDJkYjA4YmNkYmU4ODRjYi4uNmRjNGY1YmFlZjY5
ZDE2NzlkMDU2N2JhYWIyOWJmY2RlZDIyN2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTU4Miw2ICsxNTgyLDggQEAgY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50SXRlbU1hcmdpbiA9IDg7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRXcmFwcGlu
Z1RleHRNYXhpbXVtV2lkdGggPSAxNDA7CiBjb25zdCBDRkluZGV4IGF0dGFjaG1lbnRXcmFwcGlu
Z1RleHRNYXhpbXVtTGluZUNvdW50ID0gMjsKIAorY29uc3QgQ0dGbG9hdCBkZWZhdWx0VGh1bWJu
YWlsSWNvbldpZHRoID0gNjU7CisKIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhdHRhY2ht
ZW50QWN0aW9uRm9udCgpCiB7CiAgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHls
ZShrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydEZvb3Rub3RlLCBSZW5kZXJUaGVtZUlPUzo6Y29udGVu
dFNpemVDYXRlZ29yeSgpLCAwKSk7CkBAIC0xNjE5LDYgKzE2MjEsNyBAQCBzdHJ1Y3QgUmVuZGVy
QXR0YWNobWVudEluZm8gewogICAgIGZsb2F0IHByb2dyZXNzOwogCiAgICAgUmV0YWluUHRyPFVJ
SW1hZ2U+IGljb247CisgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50
IGJhc2VsaW5lIHsgMCB9OwogCkBAIC0xODAzLDggKzE4MDYsMTEgQEAgUmVuZGVyQXR0YWNobWVu
dEluZm86OlJlbmRlckF0dGFjaG1lbnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFj
aG1lbnQpCiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkgJiYgIWhhc1Byb2dyZXNzKSB7CiAgICAg
ICAgIEZsb2F0U2l6ZSBpY29uU2l6ZTsKICAgICAgICAgaWNvbiA9IGljb25Gb3JBdHRhY2htZW50
KGF0dGFjaG1lbnQsIGljb25TaXplKTsKLSAgICAgICAgaWYgKGljb24pIHsKLSAgICAgICAgICAg
IGljb25SZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkg
LyAyKSAtIChpY29uU2l6ZS53aWR0aCgpIC8gMiksIDApLCBpY29uU2l6ZSk7CisgICAgICAgIHRo
dW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsUmVw
cmVzZW50YXRpb24oKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aHVtYm5haWxJY29uIHx8IGlj
b24pIHsKKyAgICAgICAgICAgIGF1dG8gaWNvblNpemVCb3RoID0gdGh1bWJuYWlsSWNvbiA/IEZs
b2F0U2l6ZShkZWZhdWx0VGh1bWJuYWlsSWNvbldpZHRoLCBkZWZhdWx0VGh1bWJuYWlsSWNvbldp
ZHRoKSA6IGljb25TaXplOworICAgICAgICAgICAgaWNvblJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgoYXR0YWNobWVudFJlY3Qud2lkdGgoKSAvIDIpIC0gKGljb25TaXplQm90aC53aWR0aCgp
IC8gMiksIDApLCBpY29uU2l6ZUJvdGgpOwogICAgICAgICAgICAgeU9mZnNldCArPSBpY29uUmVj
dC5oZWlnaHQoKSArIGF0dGFjaG1lbnRJdGVtTWFyZ2luOwogICAgICAgICB9CiAgICAgfSBlbHNl
CkBAIC0xODM5LDEwICsxODQ1LDEyIEBAIGludCBSZW5kZXJUaGVtZUlPUzo6YXR0YWNobWVudEJh
c2VsaW5lKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpIGNvbnN0CiAKIHN0YXRp
YyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5k
ZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKLSAgICBpZiAoIWluZm8uaWNvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZv
Lmljb24gQ0dJbWFnZV0pOworICAgIFJlZjxJbWFnZT4gaWNvbkltYWdlOworICAgIGlmIChpbmZv
LnRodW1ibmFpbEljb24pCisgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsK
KyAgICBlbHNlIGlmIChpbmZvLmljb24pCisgICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdl
OjpjcmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAgCiAgICAgY29udGV4dC5kcmF3SW1h
Z2UoaWNvbkltYWdlLmdldCgpLCBpbmZvLmljb25SZWN0KTsKIH0KIApAQCAtMTkxOSw3ICsxOTI3
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW4KIAogICAgIGlmIChpbmZvLmhhc1Byb2dyZXNz
KQogICAgICAgICBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb250ZXh0LCBpbmZvKTsKLSAgICBl
bHNlIGlmIChpbmZvLmljb24pCisgICAgZWxzZSBpZiAoaW5mby5pY29uIHx8IGluZm8udGh1bWJu
YWlsSWNvbikKICAgICAgICAgcGFpbnRBdHRhY2htZW50SWNvbihjb250ZXh0LCBpbmZvKTsKIAog
ICAgIHBhaW50QXR0YWNobWVudFRleHQoY29udGV4dCwgaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggY2JhMTYxZTc0OTYwNGU2YjRkZDY4ZjA0
NDVhMDAxZjg4NjQxOWQ5Zi4uNGI2ZThmMzc5Yjk5N2M3MzdjOGQ3YTg4NWI1OTZhNWNmNjJmYTg4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjc3
Nyw2ICsyNzc3LDExIEBAIHN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIAogc3RhdGljIHZvaWQgcGFpbnRBdHRh
Y2htZW50SWNvbihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKKyAgICBhdXRvIHRo
dW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsUmVw
cmVzZW50YXRpb24oKTsKKyAgICBpZiAodGh1bWJuYWlsSWNvbikgeworICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNvbi5nZXQoKSwgbGF5b3V0Lmljb25SZWN0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRh
Y2htZW50KTsKICAgICBpZiAoIWljb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnIGIvU291cmNlL1dlYktp
dC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKaW5kZXggZjQ5YTI1NDFkNjZlZGFhZDFl
Nzk5MWI2ZmEyZWNkMGI1OThiZDFmYy4uMzdiM2JmNzNjZWVjZDgzMGY0MzA5YzJiN2VmOWE3ODY4
NDg3NTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25m
aWcKQEAgLTEyNCw3ICsxMjQsNyBAQCBXS19BVVRIS0lUX0xERkxBR1NfSU9TX1NJTkNFXzEzID0g
LWZyYW1ld29yayBBdXRoS2l0OwogV0tfQVVUSEtJVF9MREZMQUdTX21hY29zeCA9ICQoV0tfQVVU
SEtJVF9MREZMQUdTJChXS19NQUNPU18xMDE1KSk7CiBXS19BVVRIS0lUX0xERkxBR1NfTUFDT1Nf
U0lOQ0VfMTAxNSA9IC1mcmFtZXdvcmsgQXV0aEtpdDsKIAotRlJBTUVXT1JLX0FORF9MSUJSQVJZ
X0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVk
aW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJh
bWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8g
LWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIFdlYktpdExl
Z2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xE
RkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfUlVOTklOR0JPQVJE
X1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZM
QUdTKSAkKFdLX0NPUkVfUFJFRElDVElPTl9MREZMQUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERG
TEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERG
TEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19M
REZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1Mp
ICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NF
Q1VSSVRZX0lOVEVSRkFDRV9MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZP
Uk1BVFRJTkdfTERGTEFHUykgJChXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTKTsKK0ZSQU1FV09S
S19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFt
ZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3Jl
R3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1l
d29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1l
d29yayBXZWJLaXRMZWdhY3kgLWZyYW1ld29yayBRdWlja0xvb2tUaHVtYm5haWxpbmcgLWxuZXR3
b3JrICQoV0tfQUNDRVNTSUJJTElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdL
X0FTU0VSVElPTl9TRVJWSUNFU19MREZMQUdTKSAkKFdLX1JVTk5JTkdCT0FSRF9TRVJWSUNFU19M
REZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19D
T1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tf
R1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tf
TElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChX
S19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJ
VF9MREZMQUdTKSAkKFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19TRUNVUklUWV9JTlRF
UkZBQ0VfTERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xE
RkxBR1MpICQoV0tfV0VCSU5TUEVDVE9SVUlfTERGTEFHUykgJChXS19RVUlDS19MT09LX1RIVU1C
TkFJTElOR19MREZMQUdTKTsKIAogLy8gUHJldmVudCBDKysgc3RhbmRhcmQgbGlicmFyeSBiYXNp
Y19zdHJpbmdzdHJlYW0sIG9wZXJhdG9yIG5ldywgZGVsZXRlIGFuZCB0aGVpciByZWxhdGVkIGV4
Y2VwdGlvbiB0eXBlcyBmcm9tIGJlaW5nIGV4cG9ydGVkIGFzIHdlYWsgc3ltYm9scy4KIFVORVhQ
T1JURURfU1lNQk9MX0xERkxBR1MgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0
OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWV4Y2VwdGlvbiAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndtUHYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19abndtIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9s
aWN5QWN0aW9uRUVFQzFFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18x
OGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVhU0VEbiAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFY2xFUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rp
b25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRTRzd2FwRVJTNF8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9u
RUVFQzFFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlv
bklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVF
RDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdX
ZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxF
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3Ry
ZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUwX05TXzEzYmFzaWNf
aXN0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThi
YXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVF
RTBfTlNfMTRiYXNpY19pb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNf
OWFsbG9jYXRvckljRUVFRTE2X05TXzEzYmFzaWNfb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aVFROU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hh
cl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pUVk5TdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185
YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE4
YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VF
RUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdz
dHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRThfTlNfMTNiYXNp
Y19vc3RyZWFtSWNTMl9FRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDcwOGI0OTZiN2UxOWEzMGM5YjAyYTRlMGU5ZmJkYzUyMTA3NWEw
YTAuLjM5ZWEyNzc5YTAyOTk1M2M3YjM3NGQxYmY0NWRhNTAzZDBmN2QzYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDYsNiArNDYs
NyBAQAogI2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50Lmgi
CiAjaW1wb3J0ICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1
bWJuYWlsTG9hZGVyLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJS
ZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCkBAIC0yMjQ4LDcgKzIyNDksOCBAQCAtIChf
V0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdy
YXBwZXIgKilmaWxlV3JhcHBlcgogICAgICAgICBpZiAoY2FwdHVyZWRIYW5kbGVyKQogICAgICAg
ICAgICAgY2FwdHVyZWRIYW5kbGVyKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSk7CiAgICAgfSk7Ci0KKyAgICAKKyAgICBfcGFnZS0+cmVxdWVzdFRodW1ibmFpbFdp
dGhGaWxlV3JhcHBlcihmaWxlV3JhcHBlciwgaWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHdyYXBw
ZXIoYXR0YWNobWVudCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDM5NGJmOTE5
Mzk3ODdhNzZiZjE3M2UzMTlkYzIyYmI2MjIzMjk3YjAuLmNkNzllMTUwNjZhOWQyNWM5NTJjNWI3
MTg0N2I5YjA4ZGY5NzVhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJJbnNl
cnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlBh
Z2VDbGllbnQuaCIKKyNpbXBvcnQgIlF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIgogI2ltcG9y
dCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAj
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCkBAIC0zOSw2ICs0MCw3IEBACiAj
aW1wb3J0ICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2ltcG9ydCA8UXVpY2tMb29rVGh1bWJu
YWlsaW5nL1FMVGh1bWJuYWlsR2VuZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVt
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CkBAIC0zNjAsNCArMzYyLDgzIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UoKQogI2VuZGlmCiB9CiAKKyNp
ZiBQTEFURk9STShNQUMpCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBj
b252ZXJ0TlNJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplKQoreworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
IGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAg
IGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZ3JhcGhp
Y3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWdy
YXBoaWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZXRhaW5QdHI8
TlNHcmFwaGljc0NvbnRleHQ+IHNhdmVkQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF07CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgor
ICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpbTlNHcmFwaGljc0NvbnRl
eHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpIGZsaXBwZWQ6WUVTXV07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECisgICAgW2ltYWdlIGRyYXdJblJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBiaXRtYXAt
PnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQoKSkgZnJvbVJlY3Q6TlNaZXJv
UmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246
MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKworICAgIFtOU0dyYXBoaWNzQ29udGV4
dCBzZXRDdXJyZW50Q29udGV4dDpzYXZlZENvbnRleHQuZ2V0KCldOworCisgICAgcmV0dXJuIGJp
dG1hcDsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3N0YXRpYyBSZWZQ
dHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRVSUltYWdlVG9CaXRtYXAoVUlJbWFn
ZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisgICAgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBh
dXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6
ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAKKyAgICBVSUdyYXBoaWNzUHVzaENvbnRleHQoZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgW2ltYWdlIGRyYXdJblJlY3Q6IENHUmVjdE1h
a2UoMCwgMCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwgYml0bWFwLT5zaXplKCkuaGVpZ2h0KCkp
XTsKKyAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOworCisgICAgcmV0dXJuIGJpdG1hcDsKK30K
KyNlbmRpZgorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRp
b24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gKm9wZXJhdGlvbikKK3sKKyAgICBbb3BlcmF0
aW9uIHNldENvbXBsZXRpb25CbG9jazpeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gW29w
ZXJhdGlvbiBnZXRBdHRhY2htZW50SWRlbnRpZmllcl07CisjaWYgUExBVEZPUk0oTUFDKQorICAg
ICAgICAgICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnROU0ltYWdlVG9CaXRtYXAob3Bl
cmF0aW9uLmdldFRodW1ibmFpbE1hYywgV2ViQ29yZTo6SW50U2l6ZSg0MDAsIDQwMCkpOworI2Vu
ZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgICAgIGF1dG8gY29udmVydGVk
SW1hZ2UgPSBjb252ZXJ0VUlJbWFnZVRvQml0bWFwKG9wZXJhdGlvbi5nZXRUaHVtYm5haWxpT1Ms
IFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDApKTsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKGNv
bnZlcnRlZEltYWdlID09IG51bGxwdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgY29udmVydGVkSW1h
Z2UpOworICAgICAgICB9KTsKKyAgICB9XTsKKyAgICAgICAgCisgICAgW1tXS1FMVGh1bWJuYWls
UXVldWVNYW5hZ2VyIHNoYXJlZEluc3RhbmNlXS5xbFRodW1ibmFpbEdlbmVyYXRpb25RdWV1ZSBh
ZGRPcGVyYXRpb246b3BlcmF0aW9uXTsKK30KKworCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcihOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlciwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gb3BlcmF0aW9uID0gYWRvcHROUyhb
W1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGFsbG9jXSBpbml0V2l0aEF0dGFjaG1lbnQ6Zmls
ZVdyYXBwZXIgaWRlbnRpZmllcjppZGVudGlmaWVyXSk7CisgICAgcmVxdWVzdFRodW1ibmFpbFdp
dGhPcGVyYXRpb24ob3BlcmF0aW9uLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RUaHVtYm5haWxXaXRoUGF0aChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCit7CisgICAgYXV0byBvcGVyYXRpb24gPSBhZG9wdE5TKFtbV0tRTFRo
dW1ibmFpbExvYWRPcGVyYXRpb24gYWxsb2NdIGluaXRXaXRoVVJMOmZpbGVQYXRoIGlkZW50aWZp
ZXI6aWRlbnRpZmllcl0pOworICAgIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKG9wZXJh
dGlvbi5nZXQoKSk7CisgICAgCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NmFjMTIwZjdhZGM0Zjk2N2M3ZDc1ODBlNjFiYTc4NTQwMDU5MjgyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVy
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUg
bWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNlbmRpZgorQGludGVyZmFj
ZSBXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWR3cml0ZSwgYXNzaWduKSBOU09wZXJhdGlvblF1ZXVlKiBxbFRodW1ibmFpbEdl
bmVyYXRpb25RdWV1ZTsKKy0gKGlkKWluaXQ7CisrIChXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2Vy
ICopc2hhcmVkSW5zdGFuY2U7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tRTFRodW1ibmFpbExvYWRP
cGVyYXRpb24gOiBOU09wZXJhdGlvbgorCitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNB
c3luY2hyb25vdXMpIEJPT0wgYXN5bmNocm9ub3VzOworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0
dGVyPWlzRXhlY3V0aW5nKSBCT09MIGV4ZWN1dGluZzsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdl
dHRlcj1pc0ZpbmlzaGVkKSBCT09MIGZpbmlzaGVkOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmV0YWluKSBOU1N0cmluZyAqY29udGVudFR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBzaG91bGRXcml0ZTsKKworLSAoaWQpaW5pdFdpdGhBdHRhY2htZW50OihOU0ZpbGVXcmFwcGVy
ICopZmlsZVdyYXBwZXIgaWRlbnRpZmllcjogKE5TU3RyaW5nICopaWRlbnRpZmllcjsKKy0gKGlk
KWluaXRXaXRoVVJMOihOU1N0cmluZyAqKWZpbGVVcmwgaWRlbnRpZmllcjogKE5TU3RyaW5nICop
aWRlbnRpZmllcjsKKy0gKE5TU3RyaW5nICopZ2V0QXR0YWNobWVudElkZW50aWZpZXI7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKy0oVUlJbWFnZSAqKWdldFRodW1ibmFpbGlPUzsKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKE1BQykKKy0oTlNJbWFnZSAqKWdldFRodW1ibmFpbE1hYzsKKyNlbmRp
ZgorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1
bWJuYWlsTG9hZGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJu
YWlsTG9hZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0ZjI2YmY4OGU2ZjA1MjIwZDhiYmQxM2QyN2QxN2Ex
NGFiMjJmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlj
a0xvb2tUaHVtYm5haWxMb2FkZXIubW0KQEAgLTAsMCArMSwyMDAgQEAKKy8qCisqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCIKKworI2ltcG9ydCA8UXVpY2tMb29rVGh1
bWJuYWlsaW5nL1FMVGh1bWJuYWlsR2VuZXJhdG9yLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3Rl
bS5oPgorCitAaW1wbGVtZW50YXRpb24gV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciAKKworLSAo
aWQpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAg
ICAgIF9xbFRodW1ibmFpbEdlbmVyYXRpb25RdWV1ZSA9IFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxv
Y10gaW5pdF07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKFdLUUxUaHVtYm5haWxRdWV1ZU1h
bmFnZXIgKilzaGFyZWRJbnN0YW5jZQoreworICAgIHN0YXRpYyBXS1FMVGh1bWJuYWlsUXVldWVN
YW5hZ2VyICpzaGFyZWRJbnN0YW5jZSA9IG5pbDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IGlzRGlzcGF0Y2hlZDsKKworICAgIGRpc3BhdGNoX29uY2UoJmlzRGlzcGF0Y2hlZCwgXnsKKyAg
ICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW1dLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgYWxsb2Nd
IGluaXRdOworICAgIH0pOworCisgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworfQorQGVuZAor
CisKK0BpbXBsZW1lbnRhdGlvbiBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiB7CisgICAgUmV0
YWluUHRyPE5TVVJMPiBfZmlsZVBhdGg7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0cmluZz4g
X2lkZW50aWZpZXI7CisgICAgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IF9maWxlV3JhcHBlcjsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9xbFRodW1ibmFpbDsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgUmV0YWluUHRyPFVJSW1hZ2U+
IF9xbFRodW1ibmFpbDsKKyNlbmRpZgorfQorCistIChpZClpbml0V2l0aEF0dGFjaG1lbnQ6KE5T
RmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBpZGVudGlmaWVyOihOU011dGFibGVTdHJpbmcgKilp
ZGVudGlmaWVyCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2Zp
bGVXcmFwcGVyID0gIGFkb3B0TlMoZmlsZVdyYXBwZXIpOworICAgICAgICBfaWRlbnRpZmllciA9
IGFkb3B0TlMoW2lkZW50aWZpZXIgY29weV0pOworICAgICAgICBfcWxUaHVtYm5haWwgPSBudWxs
cHRyOworICAgICAgICBfZmlsZVBhdGggPSBudWxscHRyOworICAgICAgICBfc2hvdWxkV3JpdGUg
PSBZRVM7CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistIChpZClpbml0V2l0aFVSTDoo
TlNNdXRhYmxlU3RyaW5nICopZmlsZVVybCBpZGVudGlmaWVyOihOU011dGFibGVTdHJpbmcgKilp
ZGVudGlmaWVyCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2Zp
bGVXcmFwcGVyID0gbnVsbHB0cjsKKyAgICAgICAgX2lkZW50aWZpZXIgPSAgYWRvcHROUyhbaWRl
bnRpZmllciBjb3B5XSk7CisgICAgICAgIF9xbFRodW1ibmFpbCA9IG51bGxwdHI7CisgICAgICAg
IF9maWxlUGF0aCA9IGFkb3B0TlMoW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVVybF0gY29w
eV0pOworICAgICAgICBfc2hvdWxkV3JpdGUgPSBOTzsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICAKKyAgICBOU0xvZyhAIlN0YXJ0aW5nICVAIiwg
c2VsZik7CisgICAgc2VsZi5leGVjdXRpbmcgPSBZRVM7CisgICAgCisgICAgaWYgKF9zaG91bGRX
cml0ZSkgeworICAgICAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlFMVGVtcEZpbGVEYXRhIik7CisgICAgCisgICAgICAg
IE5TU3RyaW5nICpmaWxlUGF0aCA9IFt0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpbX2ZpbGVXcmFwcGVyIHByZWZlcnJlZEZpbGVuYW1lXV07CisgICAgICAgIE5T
RmlsZVdyYXBwZXJXcml0aW5nT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICAgICAgTlNFcnJvciAq
ZXJyb3IgPSBuaWw7CisgICAgICAgIAorICAgICAgICBhdXRvIGZpbGVVUkxQYXRoID0gYWRvcHRO
UyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVQYXRoXSk7CisKKyAgICAgICAgW19maWxlV3Jh
cHBlciB3cml0ZVRvVVJMOmZpbGVVUkxQYXRoLmdldCgpIG9wdGlvbnM6b3B0aW9ucyBvcmlnaW5h
bENvbnRlbnRzVVJMOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBfZmlsZVBhdGggPSBmaWxl
VVJMUGF0aDsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFFMVGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3QgKnJlcSA9IFtbUUxUaHVtYm5haWxH
ZW5lcmF0aW9uUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhGaWxlQXRVUkw6X2ZpbGVQYXRoLmdldCgp
IHNpemU6Q0dTaXplTWFrZSg0MDAsIDQwMCkgc2NhbGU6MSByZXByZXNlbnRhdGlvblR5cGVzOlFM
VGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3RSZXByZXNlbnRhdGlvblR5cGVBbGxdOworICAgIHJl
cS5pY29uTW9kZSA9IFlFUzsKKyAgICAKKyAgICBbW1FMVGh1bWJuYWlsR2VuZXJhdG9yIHNoYXJl
ZEdlbmVyYXRvcl0gZ2VuZXJhdGVCZXN0UmVwcmVzZW50YXRpb25Gb3JSZXF1ZXN0OnJlcSBjb21w
bGV0aW9uSGFuZGxlcjpeKFFMVGh1bWJuYWlsUmVwcmVzZW50YXRpb24gKnRodW1ibmFpbCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAoX3FsVGh1bWJuYWlsKQorICAgICAgICAgICAgcmV0dXJuOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgX3FsVGh1bWJuYWlsID0gdGh1bWJuYWlsLk5TSW1hZ2U7CisjZW5k
aWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBfcWxUaHVtYm5haWwgPSB0aHVt
Ym5haWwuVUlJbWFnZTsKKyNlbmRpZgorICAgICAgICBpZiAoX3Nob3VsZFdyaXRlKSB7CisgICAg
ICAgICAgICBOU0Vycm9yICplcnJvckZpbGUgPSBuaWw7CisgICAgICAgICAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpfZmlsZVBhdGguZ2V0KCkgZXJy
b3I6JmVycm9yRmlsZV07CisgICAgICAgIH0KKworICAgICAgICBzZWxmLmV4ZWN1dGluZyA9IE5P
OworICAgICAgICBzZWxmLmZpbmlzaGVkID0gWUVTOworICAgIH1dOworfQorCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKy0oVUlJbWFnZSAqKWdldFRodW1ibmFpbGlPUyB7CisgICAgcmV0dXJu
IF9xbFRodW1ibmFpbC5nZXQoKTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorLShO
U0ltYWdlICopZ2V0VGh1bWJuYWlsTWFjIHsKKyAgICByZXR1cm4gX3FsVGh1bWJuYWlsLmdldCgp
OworfQorCisjZW5kaWYKKworLSAoTlNTdHJpbmcgKilnZXRBdHRhY2htZW50SWRlbnRpZmllcgor
eworICAgIHJldHVybiBfaWRlbnRpZmllci5nZXQoKTsKK30KKworLSAoQk9PTClpc0FzeW5jaHJv
bm91cworeworICAgIHJldHVybiBZRVM7Cit9CisKK0BzeW50aGVzaXplIGV4ZWN1dGluZz1fZXhl
Y3V0aW5nOworCistIChCT09MKWlzRXhlY3V0aW5nCit7CisgICAgQHN5bmNocm9uaXplZChzZWxm
KSB7CisgICAgICAgIHJldHVybiBfZXhlY3V0aW5nOworICAgIH0KK30KKworLSAodm9pZClzZXRF
eGVjdXRpbmc6KEJPT0wpZXhlY3V0aW5nCit7CisgICAgQHN5bmNocm9uaXplZChzZWxmKSB7Cisg
ICAgICAgIGlmIChleGVjdXRpbmcgIT0gX2V4ZWN1dGluZykgeworICAgICAgICAgICAgW3NlbGYg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiaXNFeGVjdXRpbmciXTsKKyAgICAgICAgICAgIF9leGVj
dXRpbmcgPSBleGVjdXRpbmc7CisgICAgICAgICAgICBbc2VsZiBkaWRDaGFuZ2VWYWx1ZUZvcktl
eTpAImlzRXhlY3V0aW5nIl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BzeW50aGVzaXplIGZp
bmlzaGVkPV9maW5pc2hlZDsKKworLSAoQk9PTClpc0ZpbmlzaGVkCit7CisgICAgQHN5bmNocm9u
aXplZChzZWxmKSB7CisgICAgICAgIHJldHVybiBfZmluaXNoZWQ7CisgICAgfQorfQorCistICh2
b2lkKXNldEZpbmlzaGVkOihCT09MKWZpbmlzaGVkCit7CisgICAgQHN5bmNocm9uaXplZChzZWxm
KSB7CisgICAgICAgIGlmIChmaW5pc2hlZCAhPSBfZmluaXNoZWQpIHsKKyAgICAgICAgICAgIFtz
ZWxmIHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImlzRmluaXNoZWQiXTsKKyAgICAgICAgICAgIF9m
aW5pc2hlZCA9IGZpbmlzaGVkOworICAgICAgICAgICAgW3NlbGYgZGlkQ2hhbmdlVmFsdWVGb3JL
ZXk6QCJpc0ZpbmlzaGVkIl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5N2UwYWU3OTVhOTE3N2JiM2Y1
NmQwZDAxZGE5NjEzYWFkZjJjNTAuLjczYjJkMzg3NTk2MTI2NDZhMzNiMTljN2Q5MDA0ZDNiOTcy
Njg4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQ0
OCw2ICs5NDQ4LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlm
aWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVu
dFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBj
YWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
JiBiaXRtYXApCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChi
aXRtYXApCisgICAgICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5k
bGUpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgbV9wcmVmZXJlbmNlcy0+YXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpOwpAQCAtOTQ3NSw4
ICs5NDg3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJGcm9tRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBpZGVudGkKICAgICBhdHRhY2htZW50LT5zZXRD
b250ZW50VHlwZShjb250ZW50VHlwZSk7CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVBhdGgoZmls
ZVBhdGgpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGlk
ZW50aWZpZXIsIGF0dGFjaG1lbnQuY29weVJlZigpKTsKLQogICAgIHBsYXRmb3JtUmVnaXN0ZXJB
dHRhY2htZW50KFdURk1vdmUoYXR0YWNobWVudCksIGZpbGVQYXRoKTsKKyAgICByZXF1ZXN0VGh1
bWJuYWlsV2l0aFBhdGgoaWRlbnRpZmllciwgZmlsZVBhdGgpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDI2ZWEzNmZiM2Yw
MDEzNjMzM2Q0NDk1MWNmZmJiYTk3NDE1OGU2NDAuLjdhNTI3MzVmOWQ2NTRmMTM3OGM1Njg2Mzg5
MzRiZjBkMTY1OTYzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xOTYsNiArMTk2LDggQEAgY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KK09CSkNfQ0xBU1MgTlNGaWxl
V3JhcHBlcjsKK09CSkNfQ0xBU1MgV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb247CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAtMTU4NCw5
ICsxNTg2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6
QXR0YWNobWVudD4mJiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQm
LCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiYmKT4mJik7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYpOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEludmFsaWRh
dGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKTsKLQorICAgIHZvaWQgcmVxdWVz
dFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgcmVxdWVzdFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcihOU0ZpbGVXcmFwcGVyKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1
bWJuYWlsTG9hZE9wZXJhdGlvbiopOwogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFNob3VsZFVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzIHdpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6
OkF0dGFjaG1lbnQmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmFjZTllMjcyMzNjNGVmN2FmZTU1ZjhiNTllOTYxMzYy
MmU5NWIwMS4uOWY2ODI1MjFmNWU3Yzc3NWE0MDViZTNkNmQ2OWQ3OTNjZDczZmYyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjQs
NiArMTY0LDcgQEAKIAkJMUEwN0QyRjkxOTE5QjNBOTAwRUNEQTE2IC8qIG1lc3NhZ2VzLnB5IGlu
IENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDMDg1NkYxODdDRTBBOTAwNzgwRDg2IC8qIG1lc3NhZ2VzLnB5ICovOyB9
OwogCQkxQTA3RDJGQTE5MTlCM0E5MDBFQ0RBMTYgLyogbW9kZWwucHkgaW4gQ29weSBNZXNzYWdl
IEdlbmVyYXRpb24gU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkMwODU3MDE4N0NFMEE5MDA3ODBEODYgLyogbW9kZWwucHkgKi87IH07CiAJCTFBMDdEMkZCMTkx
OUIzQTkwMEVDREExNiAvKiBwYXJzZXIucHkgaW4gQ29weSBNZXNzYWdlIEdlbmVyYXRpb24gU2Ny
aXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwODU3MTE4N0NFMEE5
MDA3ODBEODYgLyogcGFyc2VyLnB5ICovOyB9OworCQkxQTBDMjI1RTI0MzU3NUNEMDBFRDYxNEQg
LyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRTU3MjQyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9v
a1RodW1ibmFpbExvYWRlci5tbSAqLzsgfTsKIAkJMUEwRUM2MDMxMjRBOUYyQzAwN0VGNEE1IC8q
IFBsdWdpblByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTBFQzYwMTEyNEE5RjJDMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc01h
bmFnZXIuaCAqLzsgfTsKIAkJMUEwRUM2QzAxMjRCQkQ5QjAwN0VGNEE1IC8qIFBsdWdpblByb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEwRUM2QkUxMjRCQkQ5QjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NNZXNzYWdlcy5oICov
OyB9OwogCQkxQTBFQzc1RTEyNEJDN0IyMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTBFQzc1QzEy
NEJDN0IyMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmggKi87IH07CkBAIC0zNzksNiAr
MzgwLDcgQEAKIAkJMUFFNDk4NzgxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTQ5ODc2MTFGRjdG
QUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggKi87IH07CiAJCTFBRTQ5QTQ5MTFGRkE4Q0UwMDQ4
QjQ2NCAvKiBKU05QTWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUU0OUE0NzExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oICovOyB9
OwogCQkxQUU1MkY5ODE5MjAyNjcyMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
Zi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNTJG
OTQxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQUVFNTcyNTI0MDlG
MTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVFNTcyMzI0MDlGMTQyMDAyMDA1RDYg
LyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggKi87IH07CiAJCTFBRUZDQzEyMTFEMDFGOTYw
MDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZDQzEwMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZv
U3RvcmUuaCAqLzsgfTsKIAkJMUFFRkQyNzkxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29k
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZE
Mjc4MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggKi87IH07CiAJCTFBRUZEMkY3
MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRkQyRjYxMUQxODA3QjAwODIxOUQzIC8qIEFy
Z3VtZW50Q29kZXJzLmggKi87IH07CkBAIC0yNjUxLDYgKzI2NTMsOCBAQAogCQkxQUU1MkY5MzE5
MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFNTJGOTQxOTIwMUY2QjAwQTFGQTM3
IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUU1QjdGOTExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXRzY2FwZVBsdWdp
bk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFFRTU3MjMyNDA5RjE0MjAw
MjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlj
a0xvb2tUaHVtYm5haWxMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFF
RTU3MjQyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUVGQ0MxMDExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5m
b1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkluZm9TdG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVGQ0MxMTExRDAxRjk2MDA4MjE5
RDMgLyogUGx1Z2luSW5mb1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsdWdpbkluZm9TdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBRUZDQ0JDMTFEMDJDNUUwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmVNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmVNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODgzLDYgKzg4ODcsOCBAQAogCQkJCTgz
MDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi8sCiAJ
CQkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAq
LywKIAkJCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHku
aCAqLywKKwkJCQkxQUVFNTcyMzI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWls
TG9hZGVyLmggKi8sCisJCQkJMUFFRTU3MjQyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1Ro
dW1ibmFpbExvYWRlci5tbSAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIg
LyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovLApAQCAtMTA5MjUsNiArMTA5MzEsNyBAQAogCQkJ
CTg2RTY3QTI1MTkxMEI5RDEwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1
YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBRUU1NzI1MjQwOUYxNDIwMDIwMDVE
NiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQz
MTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5Q0QyM0ZG
MjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyNjYwLDYgKzEyNjY3LDcgQEAKIAkJCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBD
QzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1NEMzMUIy
MTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFF1aWNrTG9v
a1RodW1ibmFpbExvYWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMTIyOUNFMjNGRjI1RjIw
MDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUMyMEY4MjNGQzcyNkMw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBlZThhNTYxYjU3NmY1NGI2OGMxYWQwMDczOTNhNDcxZDUyNzkwYjMwLi42OTBkYjZk
YWQ3ZTU3MDg4ZDdjNjE1Y2UyMDExNDc5Mzc1MTllMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjgyOSw2ICs2ODI5LDE0IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBPcHRpb25hbDx1aW50CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lk
Q2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1l
bnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQoreworICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBh
dHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CisgICAgICAgIGlm
IChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBxbFRodW1ibmFpbCA9ICFxbFRodW1ibmFpbEhhbmRs
ZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHFsVGh1bWJuYWlsSGFuZGxlKSA6
IG51bGxwdHIpCisgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVUaHVtYm5haWxSZXByZXNl
bnRhdGlvbihxbFRodW1ibmFpbC0+Y3JlYXRlSW1hZ2UoKSk7CisgICAgfQorfQorCiBSZWZQdHI8
SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
SGFuZGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3ZWxsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGQwZWQ5YzAwNzlm
ZTVhODRmZWMxZWYxNDZmOThmNjliMmY1ZWJiYzcuLmRmMTg3OWY0NzY1NWVjZDRlM2Y3ZmMwYjkz
MzQ2NWM1ZmQyMGYxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZVNoZWV0Q2FsbGJhY2tJ
RC5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
VHJhbnNhY3Rpb25JRC5oIgpAQCAtMTIwNyw2ICsxMjA4LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwNzZjMWZhZjJlNDRjMGM3N2I5
NDliZTllYjc5M2QyNmIzNWEwZjYyLi5hMTcxNmIyOWI3YWUwY2Y5YzAwODZiNTQ0NzgyNjYzNjY5
NzNjZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU1OCw2ICs1NTgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVu
dChTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcg
ZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmls
ZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29u
KFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1
bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396577</attachid>
            <date>2020-04-15 14:31:25 -0700</date>
            <delta_ts>2020-04-16 12:50:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200415173124.patch</filename>
            <type>text/plain</type>
            <size>39903</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhkMDI4MGEwY2RjNTk2
NzAyZGY3MTg0NzczNjlmY2QwODVhYWJmYi4uNTA5NTlhM2ExZjkwNjBjZmEzMmFiYmFhM2FiZTUz
NmViMThkY2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1i
ZXIgaW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIHFsIHRodW1ibmFpbC4gQWRkZWQgY29kZSB0
byByZW5kZXIgdGhpcyBpbWFnZSBvbiBib3RoIGlvcyBhbmQgbWFjLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gVGVzdCB3aWxsIGJlIGFkZGVkIGFmdGVyIGFkZGl0aW9ucyB0byB0ZXN0IGluZnJh
c3RydWN0dXJlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIEFsbG93IHNldHRpbmcgb2YgdGh1bWJuaWFsIG1lbWJl
ci4KKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgQWRkZWQgcmVuZGVyaW5nIG9mIGlt
YWdlIG1lbWJlciBvZiBhdHRhY2htZW50IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKwogMjAyMC0wNC0x
MyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVhbiB1
cCBtb3JlIHJlc291cmNlcyBkdXJpbmcgV2ViR0xMYXllciB0ZWFyZG93bgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
NzQ3MWIwOGJhOTZjMzY1ODI5NmIzYTczZTlkYjY3NjdlN2U1YTZlLi44YTZjNWFiZGFmNmI0MzMx
ZTc1ZDNjZGIwYjcyODI1YWNhODI0MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIw
LTAzLTEwICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFdLMiBRdWlja2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBhdHRhY2htZW50IGVsZW1lbnRzIHRvIHJl
bmRlciBxdWlja2xvb2sgdGh1bWJuYWlsIGdlbmVyYXRlZAorICAgICAgICBmcm9tIGNvbnRlbnRz
IG9mIHRoZSBmaWxlIGFzIGl0cyBpY29uLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdAorICAgICAg
ICBpY29ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBtaW1lIHR5cGUuCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgIExpbmsgUXVpY2tsb29rIHRodW1i
bmFpbGluZyBmcmFtZXdvcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlw
ZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgQ3JlYXRlIHRodW1ibmFpbCByZXF1ZXN0IGFuZCBhZGQgdG8gcXVl
dWUuCisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnROU0ltYWdlVG9CaXRtYXApOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VUlJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckdlbmVyYXRpb25SZXF1ZXN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckZpbGVXcmFwcGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckF0dGFjaG1lbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9RTFRodW1ibmFpbExvYWQuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1FMVGh1bWJuYWlsTG9hZC5tbTogQWRkZWQuCisgICAgICAgIEFkZCBjb2Rl
IHRvIHJlcXVlc3QgdGh1bWJuYWlsIGZvciBmaWxlIGRhdGEuCisgICAgICAgICgtW1dLUUxUaHVt
Ym5haWxRdWV1ZU1hbmFnZXIgaW5pdF0pOgorICAgICAgICAoK1tXS1FMVGh1bWJuYWlsUXVldWVN
YW5hZ2VyIHNoYXJlZEluc3RhbmNlXSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3Bl
cmF0aW9uIGluaXRXaXRoQXR0YWNobWVudDppZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpbml0V2l0aFVSTDppZGVudGlmaWVyOl0pOgorICAgICAg
ICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBzdGFydF0pOgorICAgICAgICAoLVtXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpc0FzeW5jaHJvbm91c10pOgorICAgICAgICAoLVtXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpc0V4ZWN1dGluZ10pOgorICAgICAgICAoLVtXS1FMVGh1
bWJuYWlsTG9hZE9wZXJhdGlvbiBzZXRFeGVjdXRpbmc6XSk6CisgICAgICAgICgtW1dLUUxUaHVt
Ym5haWxMb2FkT3BlcmF0aW9uIGlzRmluaXNoZWRdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFp
bExvYWRPcGVyYXRpb24gc2V0RmluaXNoZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
QXR0YWNobWVudEljb24pOgorICAgICAgICBTZXQgdGh1bWJuYWlsIG9mIGF0dGFjaG1lbnQgZWxl
bWVudAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFRodW1ibmFp
bCByZXF1ZXN0IG1lc3NhZ2UuCisKIDIwMjAtMDQtMTMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVwZGF0ZSBtZXNzYWdlIGZpbHRlcnMgaW4g
dGhlIFdlYkNvbnRlbnQgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCmluZGV4IGJkYWQ5YTAwNTQyOGYxNDdhODE1ZWNlMDNlN2MzOWEwN2I4
OWEyZDUuLjgzOTljMGQ1OTZjYzhkYzJjYjM5MGQwMjgwNjJiMTAwYzIzZjliNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0OSw2ICsy
NDksMTQgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBob3N0RWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBt
aW1lVHlwZSkpKTsKIH0KIAordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1i
bmFpbFJlcHJlc2VudGF0aW9uKGNvbnN0IFJlZlB0cjxJbWFnZT4gdGh1bWJuYWlsUmVwcmVzZW50
YXRpb24pCit7CisgICAgbV90aHVtYm5haWxSZXByZXNlbnRhdGlvbiA9IHRodW1ibmFpbFJlcHJl
c2VudGF0aW9uOworICAgIAorICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCisgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCBhOWJiMjQ3NTc1NWEy
OGFjMmQzMTc5NjQ2YWI4ZTNkMWE5MmZiY2U1Li5hNGE3MTZjOTBlOTQ5YTY4ZmJjNDcxYmY1ZTYz
MzM5MWFhY2FlMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKQEAgLTMzLDcgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxl
OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKK2NsYXNzIEltYWdlOwogY2xhc3MgUmVuZGVyQXR0
YWNobWVudDsKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
QEAgLTU2LDYgKzU4LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVBdHRyaWJ1dGVzKE9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbFJlcHJlc2VudGF0aW9uKGNvbnN0IFJlZlB0cjxJbWFn
ZT4gdGh1bWJuYWlsUmVwcmVzZW50YXRpb24pOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JS
ZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwpAQCAtNjcsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGF0
dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFR5
cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25zdDsKLQorICAgIFJl
ZlB0cjxJbWFnZT4gdGh1bWJuYWlsUmVwcmVzZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Ro
dW1ibmFpbFJlcHJlc2VudGF0aW9uOyB9CiAgICAgUmVuZGVyQXR0YWNobWVudCogcmVuZGVyZXIo
KSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTg3LDYgKzkwLDcgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBSZWZQdHI8RmlsZT4gbV9maWxlOwogICAgIFN0cmluZyBtX3VuaXF1ZUlkZW50aWZpZXI7Cisg
ICAgUmVmUHRyPEltYWdlPiBtX3RodW1ibmFpbFJlcHJlc2VudGF0aW9uOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCmluZGV4IDI3NTQ4YjE3M2I3NjMwY2MzNGRhYjg0MzAyZGIwOGJjZGJlODg0Y2IuLjAxMTgy
NjRmYWIyODM3OTNkOWI3MzFjMDJjMzJlMzQyNWFhZDczZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE1ODIsNiArMTU4Miw4IEBAIGNvbnN0IENH
RmxvYXQgYXR0YWNobWVudEl0ZW1NYXJnaW4gPSA4OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50
V3JhcHBpbmdUZXh0TWF4aW11bVdpZHRoID0gMTQwOwogY29uc3QgQ0ZJbmRleCBhdHRhY2htZW50
V3JhcHBpbmdUZXh0TWF4aW11bUxpbmVDb3VudCA9IDI7CiAKK2NvbnN0IENHRmxvYXQgZGVmYXVs
dFRodW1ibmFpbEljb25XaWR0aCA9IDY1OworCiBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4g
YXR0YWNobWVudEFjdGlvbkZvbnQoKQogewogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9y
UmVmPiBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhU
ZXh0U3R5bGUoa0NUVUlGb250VGV4dFN0eWxlU2hvcnRGb290bm90ZSwgUmVuZGVyVGhlbWVJT1M6
OmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwpAQCAtMTYxOSw2ICsxNjIxLDcgQEAgc3RydWN0
IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsKICAgICBmbG9hdCBwcm9ncmVzczsKIAogICAgIFJldGFp
blB0cjxVSUltYWdlPiBpY29uOworICAgIFJlZlB0cjxJbWFnZT4gdGh1bWJuYWlsSWNvbjsKIAog
ICAgIGludCBiYXNlbGluZSB7IDAgfTsKIApAQCAtMTgwMyw4ICsxODA2LDExIEBAIFJlbmRlckF0
dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50
JiBhdHRhY2htZW50KQogICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykg
ewogICAgICAgICBGbG9hdFNpemUgaWNvblNpemU7CiAgICAgICAgIGljb24gPSBpY29uRm9yQXR0
YWNobWVudChhdHRhY2htZW50LCBpY29uU2l6ZSk7Ci0gICAgICAgIGlmIChpY29uKSB7Ci0gICAg
ICAgICAgICBpY29uUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KChhdHRhY2htZW50UmVjdC53
aWR0aCgpIC8gMikgLSAoaWNvblNpemUud2lkdGgoKSAvIDIpLCAwKSwgaWNvblNpemUpOworICAg
ICAgICB0aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1i
bmFpbFJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgIAorICAgICAgICBpZiAodGh1bWJuYWlsSWNv
biB8fCBpY29uKSB7CisgICAgICAgICAgICBhdXRvIGljb25TaXplQm90aCA9IHRodW1ibmFpbElj
b24gPyBGbG9hdFNpemUoZGVmYXVsdFRodW1ibmFpbEljb25XaWR0aCwgZGVmYXVsdFRodW1ibmFp
bEljb25XaWR0aCkgOiBpY29uU2l6ZTsKKyAgICAgICAgICAgIGljb25SZWN0ID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAyKSAtIChpY29uU2l6ZUJvdGgu
d2lkdGgoKSAvIDIpLCAwKSwgaWNvblNpemVCb3RoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0g
aWNvblJlY3QuaGVpZ2h0KCkgKyBhdHRhY2htZW50SXRlbU1hcmdpbjsKICAgICAgICAgfQogICAg
IH0gZWxzZQpAQCAtMTgzOSwxMSArMTg0NSwxMyBAQCBpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFj
aG1lbnRCYXNlbGluZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KSBjb25zdAog
CiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCiB7Ci0gICAgaWYgKCFpbmZvLmljb24pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0
ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2Uu
Z2V0KCksIGluZm8uaWNvblJlY3QpOworICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdlOworICAg
IGlmIChpbmZvLnRodW1ibmFpbEljb24pCisgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJu
YWlsSWNvbjsKKyAgICBlbHNlIGlmIChpbmZvLmljb24pCisgICAgICAgIGljb25JbWFnZSA9IEJp
dG1hcEltYWdlOjpjcmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAgCisgICAgY29udGV4
dC5kcmF3SW1hZ2UoKmljb25JbWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRp
YyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5k
ZXJBdHRhY2htZW50SW5mbyYgaW5mbykKQEAgLTE5MTksNyArMTkyNyw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEluCiAKICAgICBpZiAoaW5mby5oYXNQcm9ncmVzcykKICAgICAgICAgcGFpbnRB
dHRhY2htZW50UHJvZ3Jlc3MoY29udGV4dCwgaW5mbyk7Ci0gICAgZWxzZSBpZiAoaW5mby5pY29u
KQorICAgIGVsc2UgaWYgKGluZm8uaWNvbiB8fCBpbmZvLnRodW1ibmFpbEljb24pCiAgICAgICAg
IHBhaW50QXR0YWNobWVudEljb24oY29udGV4dCwgaW5mbyk7CiAKICAgICBwYWludEF0dGFjaG1l
bnRUZXh0KGNvbnRleHQsIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IGNiYTE2MWU3NDk2MDRlNmI0ZGQ2OGYwNDQ1YTAwMWY4ODY0MTlkOWYu
LjRiNmU4ZjM3OWI5OTdjNzM3YzhkN2E4ODViNTk2YTVjZjYyZmE4ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI3NzcsNiArMjc3NywxMSBAQCBz
dGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1l
bnQmIGF0dGFjaG1lbnQpCiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBB
dHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CisgICAgYXV0byB0aHVtYm5haWxJY29uID0gYXR0
YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbFJlcHJlc2VudGF0aW9uKCk7Cisg
ICAgaWYgKHRodW1ibmFpbEljb24pIHsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKnRodW1i
bmFpbEljb24uZ2V0KCksIGxheW91dC5pY29uUmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgYXV0byBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCk7CiAgICAgaWYg
KCFpY29uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZp
Z3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMv
V2ViS2l0LnhjY29uZmlnCmluZGV4IGY0OWEyNTQxZDY2ZWRhYWQxZTc5OTFiNmZhMmVjZDBiNTk4
YmQxZmMuLjMyODUwMDNiNTBiNzA4OTlhMzEzMWU1YTg4ZDgyN2YwNzM4YmUxYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCkBAIC0xMjQsNyArMTI0
LDcgQEAgV0tfQVVUSEtJVF9MREZMQUdTX0lPU19TSU5DRV8xMyA9IC1mcmFtZXdvcmsgQXV0aEtp
dDsKIFdLX0FVVEhLSVRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FVVEhLSVRfTERGTEFHUyQoV0tf
TUFDT1NfMTAxNSkpOwogV0tfQVVUSEtJVF9MREZMQUdTX01BQ09TX1NJTkNFXzEwMTUgPSAtZnJh
bWV3b3JrIEF1dGhLaXQ7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpj
IC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29y
ZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAt
ZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQg
LWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQo
V0tfQUNDRVNTSUJJTElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VS
VElPTl9TRVJWSUNFU19MREZMQUdTKSAkKFdLX1JVTk5JTkdCT0FSRF9TRVJWSUNFU19MREZMQUdT
KSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1BS
RURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJ
Q1NfU0VSVklDRVNfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VC
UlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJ
TEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZM
QUdTKSAkKFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19TRUNVUklUWV9JTlRFUkZBQ0Vf
TERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1Mp
ICQoV0tfV0VCSU5TUEVDVE9SVUlfTERGTEFHUyk7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERG
TEFHUyA9IC1sb2JqYyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAt
ZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdv
cmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJh
bWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdvcmsgV2ViS2l0TGVnYWN5
IC1mcmFtZXdvcmsgUXVpY2tMb29rVGh1bWJuYWlsaW5nIC1sbmV0d29yayAkKFdLX0FDQ0VTU0lC
SUxJVFlfTERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BU1NFUlRJT05fU0VSVklD
RVNfTERGTEFHUykgJChXS19SVU5OSU5HQk9BUkRfU0VSVklDRVNfTERGTEFHUykgJChXS19BVVRI
S0lUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QUkVESUNUSU9OX0xE
RkxBR1MpICQoV0tfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfTElCU0FOREJPWF9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdT
KSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRf
TERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19T
QUZFX0JST1dTSU5HX0xERkxBR1MpICQoV0tfU0VDVVJJVFlfSU5URVJGQUNFX0xERkxBR1MpICQo
V0tfVUlLSVRfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1dFQklO
U1BFQ1RPUlVJX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMrKyBzdGFuZGFyZCBsaWJyYXJ5IGJh
c2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQg
ZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgogVU5F
WFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJ
U3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0aW9u
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wg
LVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19a
TlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzJFT1M0XyAtV2ws
LXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQ
b2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lB
Y3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5j
dGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBFUlM0XyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rp
b25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25F
RUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZO
N1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNFUktTNF8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2Fs
bEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdz
dHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTNiYXNp
Y19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzEx
OGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNF
RUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVO
U185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFj
aGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wg
LVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5T
XzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18x
MThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmlu
Z3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFOF9OU18xM2Jh
c2ljX29zdHJlYW1JY1MyX0VFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggNzA4YjQ5NmI3ZTE5YTMwYzliMDJhNGUwZTlmYmRjNTIxMDc1
YTBhMC4uMzllYTI3NzlhMDI5OTUzYzdiMzc0ZDFiZjQ1ZGE1MDNkMGY3ZDNiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00Niw2ICs0
Niw3IEBACiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQu
aCIKICNpbXBvcnQgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisjaW1wb3J0ICJRdWlja0xvb2tU
aHVtYm5haWxMb2FkZXIuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQg
IlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKQEAgLTIyNDgsNyArMjI0OSw4IEBAIC0g
KF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxl
V3JhcHBlciAqKWZpbGVXcmFwcGVyCiAgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCiAgICAg
ICAgICAgICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lKTsKICAgICB9KTsKLQorICAgIAorICAgIF9wYWdlLT5yZXF1ZXN0VGh1bWJuYWls
V2l0aEZpbGVXcmFwcGVyKGZpbGVXcmFwcGVyLCBpZGVudGlmaWVyKTsKICAgICByZXR1cm4gd3Jh
cHBlcihhdHRhY2htZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMzk0YmY5
MTkzOTc4N2E3NmJmMTczZTMxOWRjMjJiYjYyMjMyOTdiMC4uY2Q3OWUxNTA2NmE5ZDI1Yzk1MmM1
YjcxODQ3YjliMDhkZjk3NWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIklu
c2VydFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAi
UGFnZUNsaWVudC5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmgiCiAjaW1w
b3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIK
ICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAgLTM5LDYgKzQwLDcgQEAK
ICNpbXBvcnQgIldlYlBhc3RlYm9hcmRQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDxRdWlja0xvb2tUaHVt
Ym5haWxpbmcvUUxUaHVtYm5haWxHZW5lcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KQEAgLTM2MCw0ICszNjIsODMgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmdyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSgpCiAjZW5kaWYKIH0KIAor
I2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnROU0ltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNpemUpCit7CisgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Cisg
ICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJldGFpblB0
cjxOU0dyYXBoaWNzQ29udGV4dD4gc2F2ZWRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1
cnJlbnRDb250ZXh0XTsKKworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OltOU0dyYXBoaWNzQ29u
dGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmdyYXBoaWNzQ29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCkgZmxpcHBlZDpZRVNdXTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpOU01ha2VSZWN0KDAsIDAsIGJpdG1h
cC0+c2l6ZSgpLndpZHRoKCksIGJpdG1hcC0+c2l6ZSgpLmhlaWdodCgpKSBmcm9tUmVjdDpOU1pl
cm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlv
bjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworCisgICAgW05TR3JhcGhpY3NDb250
ZXh0IHNldEN1cnJlbnRDb250ZXh0OnNhdmVkQ29udGV4dC5nZXQoKV07CisKKyAgICByZXR1cm4g
Yml0bWFwOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorc3RhdGljIFJl
ZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFVJSW1hZ2VUb0JpdG1hcChVSUlt
YWdlICppbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAg
IGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShz
aXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIAorICAgIFVJR3JhcGhpY3NQdXNoQ29udGV4dChncmFwaGljc0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDogQ0dSZWN0
TWFrZSgwLCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQo
KSldOworICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7CisKKyAgICByZXR1cm4gYml0bWFwOwor
fQorI2VuZGlmCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJh
dGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9uKQoreworICAgIFtvcGVy
YXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBb
b3BlcmF0aW9uIGdldEF0dGFjaG1lbnRJZGVudGlmaWVyXTsKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydE5TSW1hZ2VUb0JpdG1hcChv
cGVyYXRpb24uZ2V0VGh1bWJuYWlsTWFjLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICAgICAgYXV0byBjb252ZXJ0
ZWRJbWFnZSA9IGNvbnZlcnRVSUltYWdlVG9CaXRtYXAob3BlcmF0aW9uLmdldFRodW1ibmFpbGlP
UywgV2ViQ29yZTo6SW50U2l6ZSg0MDAsIDQwMCkpOworI2VuZGlmCisgICAgICAgICAgICBpZiAo
Y29udmVydGVkSW1hZ2UgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB0aGlzLT51cGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBjb252ZXJ0ZWRJ
bWFnZSk7CisgICAgICAgIH0pOworICAgIH1dOworICAgICAgICAKKyAgICBbW1dLUUxUaHVtYm5h
aWxRdWV1ZU1hbmFnZXIgc2hhcmVkSW5zdGFuY2VdLnFsVGh1bWJuYWlsR2VuZXJhdGlvblF1ZXVl
IGFkZE9wZXJhdGlvbjpvcGVyYXRpb25dOworfQorCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyLCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBvcGVyYXRpb24gPSBhZG9wdE5T
KFtbV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gYWxsb2NdIGluaXRXaXRoQXR0YWNobWVudDpm
aWxlV3JhcHBlciBpZGVudGlmaWVyOmlkZW50aWZpZXJdKTsKKyAgICByZXF1ZXN0VGh1bWJuYWls
V2l0aE9wZXJhdGlvbihvcGVyYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBhdXRvIG9wZXJhdGlvbiA9IGFkb3B0TlMoW1tXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhVUkw6ZmlsZVBhdGggaWRlbnRp
ZmllcjppZGVudGlmaWVyXSk7CisgICAgcmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24ob3Bl
cmF0aW9uLmdldCgpKTsKKyAgICAKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1RodW1ibmFpbExvYWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2YWMxMjBmN2FkYzRmOTY3YzdkNzU4MGU2MWJhNzg1NDAwNTkyODIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2Fk
ZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFy
ZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2VuZGlmCitAaW50ZXJm
YWNlIFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZHdyaXRlLCBhc3NpZ24pIE5TT3BlcmF0aW9uUXVldWUqIHFsVGh1bWJuYWls
R2VuZXJhdGlvblF1ZXVlOworLSAoaWQpaW5pdDsKKysgKFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFn
ZXIgKilzaGFyZWRJbnN0YW5jZTsKK0BlbmQKKworQGludGVyZmFjZSBXS1FMVGh1bWJuYWlsTG9h
ZE9wZXJhdGlvbiA6IE5TT3BlcmF0aW9uCisKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1p
c0FzeW5jaHJvbm91cykgQk9PTCBhc3luY2hyb25vdXM7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBn
ZXR0ZXI9aXNFeGVjdXRpbmcpIEJPT0wgZXhlY3V0aW5nOworQHByb3BlcnR5IChyZWFkb25seSwg
Z2V0dGVyPWlzRmluaXNoZWQpIEJPT0wgZmluaXNoZWQ7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4pIE5TU3RyaW5nICpjb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHNob3VsZFdyaXRlOworCistIChpZClpbml0V2l0aEF0dGFjaG1lbnQ6KE5TRmlsZVdyYXBw
ZXIgKilmaWxlV3JhcHBlciBpZGVudGlmaWVyOiAoTlNTdHJpbmcgKilpZGVudGlmaWVyOworLSAo
aWQpaW5pdFdpdGhVUkw6KE5TU3RyaW5nICopZmlsZVVybCBpZGVudGlmaWVyOiAoTlNTdHJpbmcg
KilpZGVudGlmaWVyOworLSAoTlNTdHJpbmcgKilnZXRBdHRhY2htZW50SWRlbnRpZmllcjsKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorLShVSUltYWdlICopZ2V0VGh1bWJuYWlsaU9TOworI2Vu
ZGlmCisjaWYgUExBVEZPUk0oTUFDKQorLShOU0ltYWdlICopZ2V0VGh1bWJuYWlsTWFjOworI2Vu
ZGlmCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tU
aHVtYm5haWxMb2FkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVt
Ym5haWxMb2FkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRmMjZiZjg4ZTZmMDUyMjBkOGJiZDEzZDI3ZDE3
YTE0YWIyMmYzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1
aWNrTG9va1RodW1ibmFpbExvYWRlci5tbQpAQCAtMCwwICsxLDIwMCBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIgorCisjaW1wb3J0IDxRdWlja0xvb2tU
aHVtYm5haWxpbmcvUUxUaHVtYm5haWxHZW5lcmF0b3IuaD4KKyNpbXBvcnQgPHd0Zi9GaWxlU3lz
dGVtLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyIAorCist
IChpZClpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAg
ICAgICAgX3FsVGh1bWJuYWlsR2VuZXJhdGlvblF1ZXVlID0gW1tOU09wZXJhdGlvblF1ZXVlIGFs
bG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoV0tRTFRodW1ibmFpbFF1ZXVl
TWFuYWdlciAqKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFdLUUxUaHVtYm5haWxRdWV1
ZU1hbmFnZXIgKnNoYXJlZEluc3RhbmNlID0gbmlsOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3QgaXNEaXNwYXRjaGVkOworCisgICAgZGlzcGF0Y2hfb25jZSgmaXNEaXNwYXRjaGVkLCBeewor
ICAgICAgICBzaGFyZWRJbnN0YW5jZSA9IFtbV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBhbGxv
Y10gaW5pdF07CisgICAgfSk7CisKKyAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7Cit9CitAZW5k
CisKKworQGltcGxlbWVudGF0aW9uIFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHsKKyAgICBS
ZXRhaW5QdHI8TlNVUkw+IF9maWxlUGF0aDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5n
PiBfaWRlbnRpZmllcjsKKyAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gX2ZpbGVXcmFwcGVy
OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX3FsVGh1bWJuYWls
OworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBSZXRhaW5QdHI8VUlJbWFn
ZT4gX3FsVGh1bWJuYWlsOworI2VuZGlmCit9CisKKy0gKGlkKWluaXRXaXRoQXR0YWNobWVudDoo
TlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGlkZW50aWZpZXI6KE5TTXV0YWJsZVN0cmluZyAq
KWlkZW50aWZpZXIKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBf
ZmlsZVdyYXBwZXIgPSAgYWRvcHROUyhmaWxlV3JhcHBlcik7CisgICAgICAgIF9pZGVudGlmaWVy
ID0gYWRvcHROUyhbaWRlbnRpZmllciBjb3B5XSk7CisgICAgICAgIF9xbFRodW1ibmFpbCA9IG51
bGxwdHI7CisgICAgICAgIF9maWxlUGF0aCA9IG51bGxwdHI7CisgICAgICAgIF9zaG91bGRXcml0
ZSA9IFlFUzsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWluaXRXaXRoVVJM
OihOU011dGFibGVTdHJpbmcgKilmaWxlVXJsIGlkZW50aWZpZXI6KE5TTXV0YWJsZVN0cmluZyAq
KWlkZW50aWZpZXIKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBf
ZmlsZVdyYXBwZXIgPSBudWxscHRyOworICAgICAgICBfaWRlbnRpZmllciA9ICBhZG9wdE5TKFtp
ZGVudGlmaWVyIGNvcHldKTsKKyAgICAgICAgX3FsVGh1bWJuYWlsID0gbnVsbHB0cjsKKyAgICAg
ICAgX2ZpbGVQYXRoID0gYWRvcHROUyhbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlVXJsXSBj
b3B5XSk7CisgICAgICAgIF9zaG91bGRXcml0ZSA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClzdGFydAoreworICAgIAorICAgIE5TTG9nKEAiU3RhcnRpbmcgJUAi
LCBzZWxmKTsKKyAgICBzZWxmLmV4ZWN1dGluZyA9IFlFUzsKKyAgICAKKyAgICBpZiAoX3Nob3Vs
ZFdyaXRlKSB7CisgICAgICAgIE5TU3RyaW5nICp0ZW1wRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiUUxUZW1wRmlsZURhdGEiKTsKKyAgICAKKyAgICAg
ICAgTlNTdHJpbmcgKmZpbGVQYXRoID0gW3RlbXBEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OltfZmlsZVdyYXBwZXIgcHJlZmVycmVkRmlsZW5hbWVdXTsKKyAgICAgICAg
TlNGaWxlV3JhcHBlcldyaXRpbmdPcHRpb25zIG9wdGlvbnMgPSAwOworICAgICAgICBOU0Vycm9y
ICplcnJvciA9IG5pbDsKKyAgICAgICAgCisgICAgICAgIGF1dG8gZmlsZVVSTFBhdGggPSBhZG9w
dE5TKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVBhdGhdKTsKKworICAgICAgICBbX2ZpbGVX
cmFwcGVyIHdyaXRlVG9VUkw6ZmlsZVVSTFBhdGguZ2V0KCkgb3B0aW9uczpvcHRpb25zIG9yaWdp
bmFsQ29udGVudHNVUkw6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIF9maWxlUGF0aCA9IGZp
bGVVUkxQYXRoOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgUUxUaHVtYm5haWxHZW5lcmF0aW9uUmVxdWVzdCAqcmVxID0gW1tRTFRodW1ibmFp
bEdlbmVyYXRpb25SZXF1ZXN0IGFsbG9jXSBpbml0V2l0aEZpbGVBdFVSTDpfZmlsZVBhdGguZ2V0
KCkgc2l6ZTpDR1NpemVNYWtlKDQwMCwgNDAwKSBzY2FsZToxIHJlcHJlc2VudGF0aW9uVHlwZXM6
UUxUaHVtYm5haWxHZW5lcmF0aW9uUmVxdWVzdFJlcHJlc2VudGF0aW9uVHlwZUFsbF07CisgICAg
cmVxLmljb25Nb2RlID0gWUVTOworICAgIAorICAgIFtbUUxUaHVtYm5haWxHZW5lcmF0b3Igc2hh
cmVkR2VuZXJhdG9yXSBnZW5lcmF0ZUJlc3RSZXByZXNlbnRhdGlvbkZvclJlcXVlc3Q6cmVxIGNv
bXBsZXRpb25IYW5kbGVyOl4oUUxUaHVtYm5haWxSZXByZXNlbnRhdGlvbiAqdGh1bWJuYWlsLCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGlmIChfcWxUaHVtYm5haWwpCisgICAgICAgICAgICByZXR1cm47CisjaWYgUExB
VEZPUk0oTUFDKQorICAgICAgICBfcWxUaHVtYm5haWwgPSB0aHVtYm5haWwuTlNJbWFnZTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIF9xbFRodW1ibmFpbCA9IHRo
dW1ibmFpbC5VSUltYWdlOworI2VuZGlmCisgICAgICAgIGlmIChfc2hvdWxkV3JpdGUpIHsKKyAg
ICAgICAgICAgIE5TRXJyb3IgKmVycm9yRmlsZSA9IG5pbDsKKyAgICAgICAgICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOl9maWxlUGF0aC5nZXQoKSBl
cnJvcjomZXJyb3JGaWxlXTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYuZXhlY3V0aW5nID0g
Tk87CisgICAgICAgIHNlbGYuZmluaXNoZWQgPSBZRVM7CisgICAgfV07Cit9CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorLShVSUltYWdlICopZ2V0VGh1bWJuYWlsaU9TIHsKKyAgICByZXR1
cm4gX3FsVGh1bWJuYWlsLmdldCgpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCist
KE5TSW1hZ2UgKilnZXRUaHVtYm5haWxNYWMgeworICAgIHJldHVybiBfcWxUaHVtYm5haWwuZ2V0
KCk7Cit9CisKKyNlbmRpZgorCistIChOU1N0cmluZyAqKWdldEF0dGFjaG1lbnRJZGVudGlmaWVy
Cit7CisgICAgcmV0dXJuIF9pZGVudGlmaWVyLmdldCgpOworfQorCistIChCT09MKWlzQXN5bmNo
cm9ub3VzCit7CisgICAgcmV0dXJuIFlFUzsKK30KKworQHN5bnRoZXNpemUgZXhlY3V0aW5nPV9l
eGVjdXRpbmc7CisKKy0gKEJPT0wpaXNFeGVjdXRpbmcKK3sKKyAgICBAc3luY2hyb25pemVkKHNl
bGYpIHsKKyAgICAgICAgcmV0dXJuIF9leGVjdXRpbmc7CisgICAgfQorfQorCistICh2b2lkKXNl
dEV4ZWN1dGluZzooQk9PTClleGVjdXRpbmcKK3sKKyAgICBAc3luY2hyb25pemVkKHNlbGYpIHsK
KyAgICAgICAgaWYgKGV4ZWN1dGluZyAhPSBfZXhlY3V0aW5nKSB7CisgICAgICAgICAgICBbc2Vs
ZiB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0V4ZWN1dGluZyJdOworICAgICAgICAgICAgX2V4
ZWN1dGluZyA9IGV4ZWN1dGluZzsKKyAgICAgICAgICAgIFtzZWxmIGRpZENoYW5nZVZhbHVlRm9y
S2V5OkAiaXNFeGVjdXRpbmciXTsKKyAgICAgICAgfQorICAgIH0KK30KKworQHN5bnRoZXNpemUg
ZmluaXNoZWQ9X2ZpbmlzaGVkOworCistIChCT09MKWlzRmluaXNoZWQKK3sKKyAgICBAc3luY2hy
b25pemVkKHNlbGYpIHsKKyAgICAgICAgcmV0dXJuIF9maW5pc2hlZDsKKyAgICB9Cit9CisKKy0g
KHZvaWQpc2V0RmluaXNoZWQ6KEJPT0wpZmluaXNoZWQKK3sKKyAgICBAc3luY2hyb25pemVkKHNl
bGYpIHsKKyAgICAgICAgaWYgKGZpbmlzaGVkICE9IF9maW5pc2hlZCkgeworICAgICAgICAgICAg
W3NlbGYgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiaXNGaW5pc2hlZCJdOworICAgICAgICAgICAg
X2ZpbmlzaGVkID0gZmluaXNoZWQ7CisgICAgICAgICAgICBbc2VsZiBkaWRDaGFuZ2VWYWx1ZUZv
cktleTpAImlzRmluaXNoZWQiXTsKKyAgICAgICAgfQorICAgIH0KK30KKworQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzk3ZTBhZTc5NWE5MTc3YmIz
ZjU2ZDBkMDFkYTk2MTNhYWRmMmM1MC4uNzNiMmQzODc1OTYxMjY0NmEzM2IxOWM3ZDkwMDRkM2I5
NzI2ODg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05
NDQ4LDYgKzk0NDgsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50
aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250
ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSks
IGNhbGxiYWNrSUQpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRJ
Y29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4mIGJpdG1hcCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYg
KGJpdG1hcCkKKyAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGhh
bmRsZSkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
ZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLCBtX3ByZWZlcmVuY2VzLT5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSk7CkBAIC05NDc1
LDggKzk0ODcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
ZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmIGlkZW50aQogICAgIGF0dGFjaG1lbnQtPnNl
dENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlUGF0aChm
aWxlUGF0aCk7CiAgICAgbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQo
aWRlbnRpZmllciwgYXR0YWNobWVudC5jb3B5UmVmKCkpOwotCiAgICAgcGxhdGZvcm1SZWdpc3Rl
ckF0dGFjaG1lbnQoV1RGTW92ZShhdHRhY2htZW50KSwgZmlsZVBhdGgpOworICAgIHJlcXVlc3RU
aHVtYm5haWxXaXRoUGF0aChpZGVudGlmaWVyLCBmaWxlUGF0aCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjZlYTM2ZmIz
ZjAwMTM2MzMzZDQ0OTUxY2ZmYmJhOTc0MTU4ZTY0MC4uN2E1MjczNWY5ZDY1NGYxMzc4YzU2ODYz
ODkzNGJmMGQxNjU5NjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE5Niw2ICsxOTYsOCBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQorT0JKQ19DTEFTUyBOU0Zp
bGVXcmFwcGVyOworT0JKQ19DTEFTUyBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xNTg0
LDkgKzE1ODYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChSZWY8QVBJ
OjpBdHRhY2htZW50PiYmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVu
dCYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CiAgICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxp
ZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYpOwotCisgICAgdm9pZCByZXF1
ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxU
aHVtYm5haWxMb2FkT3BlcmF0aW9uKik7CiAgICAgZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgU2hvdWxkVXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMgd2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQ
STo6QXR0YWNobWVudCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYWNlOWUyNzIzM2M0ZWY3YWZlNTVmOGI1OWU5NjEz
NjIyZTk1YjAxLi45ZjY4MjUyMWY1ZTdjNzc1YTQwNWJlM2Q2ZDY5ZDc5M2NkNzNmZjI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2
NCw2ICsxNjQsNyBAQAogCQkxQTA3RDJGOTE5MTlCM0E5MDBFQ0RBMTYgLyogbWVzc2FnZXMucHkg
aW4gQ29weSBNZXNzYWdlIEdlbmVyYXRpb24gU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwODU2RjE4N0NFMEE5MDA3ODBEODYgLyogbWVzc2FnZXMucHkgKi87
IH07CiAJCTFBMDdEMkZBMTkxOUIzQTkwMEVDREExNiAvKiBtb2RlbC5weSBpbiBDb3B5IE1lc3Nh
Z2UgR2VuZXJhdGlvbiBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzA4NTcwMTg3Q0UwQTkwMDc4MEQ4NiAvKiBtb2RlbC5weSAqLzsgfTsKIAkJMUEwN0QyRkIx
OTE5QjNBOTAwRUNEQTE2IC8qIHBhcnNlci5weSBpbiBDb3B5IE1lc3NhZ2UgR2VuZXJhdGlvbiBT
Y3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA4NTcxMTg3Q0Uw
QTkwMDc4MEQ4NiAvKiBwYXJzZXIucHkgKi87IH07CisJCTFBMEMyMjVFMjQzNTc1Q0QwMEVENjE0
RCAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVFNTcyNDI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tM
b29rVGh1bWJuYWlsTG9hZGVyLm1tICovOyB9OwogCQkxQTBFQzYwMzEyNEE5RjJDMDA3RUY0QTUg
LyogUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMEVDNjAxMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlci5oICovOyB9OwogCQkxQTBFQzZDMDEyNEJCRDlCMDA3RUY0QTUgLyogUGx1Z2luUHJv
Y2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTBFQzZCRTEyNEJCRDlCMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc01lc3NhZ2VzLmgg
Ki87IH07CiAJCTFBMEVDNzVFMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEVDNzVD
MTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHkuaCAqLzsgfTsKQEAgLTM3OSw2
ICszODAsNyBAQAogCQkxQUU0OTg3ODExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNDk4NzYxMUZG
N0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuaCAqLzsgfTsKIAkJMUFFNDlBNDkxMUZGQThDRTAw
NDhCNDY0IC8qIEpTTlBNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBRTQ5QTQ3MTFGRkE4Q0UwMDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmggKi87
IH07CiAJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU1
MkY5NDE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBRUU1NzI1MjQw
OUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUU1NzIzMjQwOUYxNDIwMDIwMDVE
NiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCAqLzsgfTsKIAkJMUFFRkNDMTIxMUQwMUY5
NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbklu
Zm9TdG9yZS5oICovOyB9OwogCQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRD
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFF
RkQyNzgxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXIuaCAqLzsgfTsKIAkJMUFFRkQy
RjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGRDJGNjExRDE4MDdCMDA4MjE5RDMgLyog
QXJndW1lbnRDb2RlcnMuaCAqLzsgfTsKQEAgLTI2NTEsNiArMjY1Myw4IEBACiAJCTFBRTUyRjkz
MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU1MkY5NDE5MjAxRjZCMDBBMUZB
MzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBRTVCN0Y5MTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHNjYXBlUGx1
Z2luTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUVFNTcyMzI0MDlGMTQy
MDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
aWNrTG9va1RodW1ibmFpbExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QUVFNTcyNDI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUZDQzEwMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5J
bmZvU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSW5mb1N0
b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUZDQzExMTFEMDFGOTYwMDgy
MTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGx1Z2luSW5mb1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFFRkNDQkMxMUQwMkM1RTAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkluZm9TdG9yZU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4ODMsNiArODg4Nyw4IEBACiAJCQkJ
ODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywK
IAkJCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
ICovLAogCQkJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94
eS5oICovLAorCQkJCTFBRUU1NzIzMjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5h
aWxMb2FkZXIuaCAqLywKKwkJCQkxQUVFNTcyNDI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29r
VGh1bWJuYWlsTG9hZGVyLm1tICovLAogCQkJCUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBS
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0Mg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2
QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8sCkBAIC0xMDkyNSw2ICsxMDkzMSw3IEBACiAJ
CQkJODZFNjdBMjUxOTEwQjlEMTAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyog
UXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFFRTU3MjUyNDA5RjE0MjAwMjAw
NUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdG
RDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDRDIz
RkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTI2NjAsNiArMTI2NjcsNyBAQAogCQkJCUMxNUNCQjM3MjNGMzdFQ0IwMDMw
MENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMx
QjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLywKKwkJCQkxQTBDMjI1RTI0MzU3NUNEMDBFRDYxNEQgLyogUXVpY2tM
b29rVGh1bWJuYWlsTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVG
MjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIwRjgyM0ZDNzI2
QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGVlOGE1NjFiNTc2ZjU0YjY4YzFhZDAwNzM5M2E0NzFkNTI3OTBiMzAuLjY5MGRi
NmRhZDdlNTcwODhkN2M2MTVjZTIwMTE0NzkzNzUxOWUxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02ODI5LDYgKzY4MjksMTQgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIE9wdGlvbmFsPHVpbnQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZv
aWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9
IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAgICAg
aWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHFsVGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFu
ZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUp
IDogbnVsbHB0cikKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZVRodW1ibmFpbFJlcHJl
c2VudGF0aW9uKHFsVGh1bWJuYWlsLT5jcmVhdGVJbWFnZSgpKTsKKyAgICB9Cit9CisKIFJlZlB0
cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMgdG9vIGFzIHdlbGwuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDBlZDljMDA3
OWZlNWE4NGZlYzFlZjE0NmY5OGY2OWIyZjVlYmJjNy4uZGYxODc5ZjQ3NjU1ZWNkNGUzZjdmYzBi
OTMzNDY1YzVmZDIwZjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlU2hlZXRDYWxsYmFj
a0lELmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVt
b3J5LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJUcmFuc2FjdGlvbklELmgiCkBAIC0xMjA3LDYgKzEyMDgsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1
cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDA3NmMxZmFmMmU0NGMwYzc3
Yjk0OWJlOWViNzkzZDI2YjM1YTBmNjIuLmExNzE2YjI5YjdhZTBjZjljMDA4NmI1NDQ3ODI2NjM2
Njk3M2NlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTU4LDYgKzU1OCw3IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2ht
ZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBm
aWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0
YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlQXR0YWNobWVudElj
b24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxU
aHVtYm5haWxIYW5kbGUpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396689</attachid>
            <date>2020-04-16 12:50:51 -0700</date>
            <delta_ts>2020-04-17 12:48:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200416155050.patch</filename>
            <type>text/plain</type>
            <size>40742</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhkMDI4MGEwY2RjNTk2
NzAyZGY3MTg0NzczNjlmY2QwODVhYWJmYi4uNTA5NTlhM2ExZjkwNjBjZmEzMmFiYmFhM2FiZTUz
NmViMThkY2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1i
ZXIgaW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIHFsIHRodW1ibmFpbC4gQWRkZWQgY29kZSB0
byByZW5kZXIgdGhpcyBpbWFnZSBvbiBib3RoIGlvcyBhbmQgbWFjLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gVGVzdCB3aWxsIGJlIGFkZGVkIGFmdGVyIGFkZGl0aW9ucyB0byB0ZXN0IGluZnJh
c3RydWN0dXJlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIEFsbG93IHNldHRpbmcgb2YgdGh1bWJuaWFsIG1lbWJl
ci4KKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgQWRkZWQgcmVuZGVyaW5nIG9mIGlt
YWdlIG1lbWJlciBvZiBhdHRhY2htZW50IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRBdHRhY2htZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKwogMjAyMC0wNC0x
MyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDbGVhbiB1
cCBtb3JlIHJlc291cmNlcyBkdXJpbmcgV2ViR0xMYXllciB0ZWFyZG93bgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
NzQ3MWIwOGJhOTZjMzY1ODI5NmIzYTczZTlkYjY3NjdlN2U1YTZlLi44YTZjNWFiZGFmNmI0MzMx
ZTc1ZDNjZGIwYjcyODI1YWNhODI0MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIw
LTAzLTEwICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFdLMiBRdWlja2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBhdHRhY2htZW50IGVsZW1lbnRzIHRvIHJl
bmRlciBxdWlja2xvb2sgdGh1bWJuYWlsIGdlbmVyYXRlZAorICAgICAgICBmcm9tIGNvbnRlbnRz
IG9mIHRoZSBmaWxlIGFzIGl0cyBpY29uLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdAorICAgICAg
ICBpY29ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBtaW1lIHR5cGUuCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgIExpbmsgUXVpY2tsb29rIHRodW1i
bmFpbGluZyBmcmFtZXdvcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpjb250ZW50VHlw
ZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgQ3JlYXRlIHRodW1ibmFpbCByZXF1ZXN0IGFuZCBhZGQgdG8gcXVl
dWUuCisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnROU0ltYWdlVG9CaXRtYXApOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VUlJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckdlbmVyYXRpb25SZXF1ZXN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckZpbGVXcmFwcGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRRTFRodW1ibmFpbEZvckF0dGFjaG1lbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9RTFRodW1ibmFpbExvYWQuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1FMVGh1bWJuYWlsTG9hZC5tbTogQWRkZWQuCisgICAgICAgIEFkZCBjb2Rl
IHRvIHJlcXVlc3QgdGh1bWJuYWlsIGZvciBmaWxlIGRhdGEuCisgICAgICAgICgtW1dLUUxUaHVt
Ym5haWxRdWV1ZU1hbmFnZXIgaW5pdF0pOgorICAgICAgICAoK1tXS1FMVGh1bWJuYWlsUXVldWVN
YW5hZ2VyIHNoYXJlZEluc3RhbmNlXSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3Bl
cmF0aW9uIGluaXRXaXRoQXR0YWNobWVudDppZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpbml0V2l0aFVSTDppZGVudGlmaWVyOl0pOgorICAgICAg
ICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBzdGFydF0pOgorICAgICAgICAoLVtXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpc0FzeW5jaHJvbm91c10pOgorICAgICAgICAoLVtXS1FM
VGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpc0V4ZWN1dGluZ10pOgorICAgICAgICAoLVtXS1FMVGh1
bWJuYWlsTG9hZE9wZXJhdGlvbiBzZXRFeGVjdXRpbmc6XSk6CisgICAgICAgICgtW1dLUUxUaHVt
Ym5haWxMb2FkT3BlcmF0aW9uIGlzRmluaXNoZWRdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFp
bExvYWRPcGVyYXRpb24gc2V0RmluaXNoZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
QXR0YWNobWVudEljb24pOgorICAgICAgICBTZXQgdGh1bWJuYWlsIG9mIGF0dGFjaG1lbnQgZWxl
bWVudAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFRodW1ibmFp
bCByZXF1ZXN0IG1lc3NhZ2UuCisKIDIwMjAtMDQtMTMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVwZGF0ZSBtZXNzYWdlIGZpbHRlcnMgaW4g
dGhlIFdlYkNvbnRlbnQgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCmlu
ZGV4IDZhM2E1MTc0NDA2N2ZjMmI4MGZkNDlkYmUxMzkzZjMyODViMGI0Y2MuLmI3NDliYzhiMjYz
M2RlYWNjN2JhYTYyMjdmNmFmZjE3ODMxYmEyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZUNvY29hLmgKQEAgLTI4NCwzICsyODQsOCBAQAogI2lmICFkZWZpbmVkKEVOQUJMRV9TSUdJTExf
Q1JBU0hfQU5BTFlaRVIpICYmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oV0FU
Q0hPUykpCiAjZGVmaW5lIEVOQUJMRV9TSUdJTExfQ1JBU0hfQU5BTFlaRVIgMQogI2VuZGlmCisK
KyNpZiAhZGVmaW5lZChFTkFCTEVfUUxUSFVNQk5BSUxfQVRUQUNITUVOVCkgJiYgKChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQ
TEFURk9STShJT1NfRkFNSUxZKSkKKyNkZWZpbmUgRU5BQkxFX1FMVEhVTUJOQUlMX0FUVEFDSE1F
TlQgMQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcAppbmRleCBiZGFkOWEwMDU0MjhmMTQ3YTgxNWVjZTAzZTdjMzlhMDdiODlhMmQ1Li44
Mzk5YzBkNTk2Y2M4ZGMyY2IzOTBkMDI4MDYyYjEwMGMyM2Y5YjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yNDksNiArMjQ5LDE0IEBA
IHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRh
KGNvbnN0IFN0cmluZyYgY29udGVudFR5CiAgICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbWltZVR5cGUp
KSk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWxSZXBy
ZXNlbnRhdGlvbihjb25zdCBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbFJlcHJlc2VudGF0aW9uKQor
eworICAgIG1fdGh1bWJuYWlsUmVwcmVzZW50YXRpb24gPSB0aHVtYm5haWxSZXByZXNlbnRhdGlv
bjsKKyAgICAKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAg
ICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggYTliYjI0NzU3NTVhMjhhYzJkMzE3
OTY0NmFiOGUzZDFhOTJmYmNlNS4uYTRhNzE2YzkwZTk0OWE2OGZiYzQ3MWJmNWU2MzMzOTFhYWNh
ZTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBA
IC0zMyw3ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZTsKIGNsYXNz
IEhUTUxJbWFnZUVsZW1lbnQ7CitjbGFzcyBJbWFnZTsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7
CitjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhU
TUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkBAIC01Niw2
ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmli
dXRlcyhPcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdD
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVUaHVtYm5haWxSZXByZXNlbnRhdGlvbihjb25zdCBSZWZQdHI8SW1hZ2U+IHRodW1i
bmFpbFJlcHJlc2VudGF0aW9uKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGlu
c2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUm
KSBmaW5hbDsKQEAgLTY3LDcgKzcwLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBhdHRhY2htZW50
VGl0bGVGb3JEaXNwbGF5KCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29u
c3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRQYXRoKCkgY29uc3Q7Ci0KKyAgICBSZWZQdHI8SW1h
Z2U+IHRodW1ibmFpbFJlcHJlc2VudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWxS
ZXByZXNlbnRhdGlvbjsgfQogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7
CiAKIHByaXZhdGU6CkBAIC04Nyw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVmUHRy
PEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOworICAgIFJlZlB0
cjxJbWFnZT4gbV90aHVtYm5haWxSZXByZXNlbnRhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCAyNzU0OGIxNzNiNzYzMGNjMzRkYWI4NDMwMmRiMDhiY2RiZTg4NGNiLi4wMTE4MjY0ZmFiMjgz
NzkzZDliNzMxYzAyYzMyZTM0MjVhYWQ3M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNTgyLDYgKzE1ODIsOCBAQCBjb25zdCBDR0Zsb2F0IGF0
dGFjaG1lbnRJdGVtTWFyZ2luID0gODsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFdyYXBwaW5n
VGV4dE1heGltdW1XaWR0aCA9IDE0MDsKIGNvbnN0IENGSW5kZXggYXR0YWNobWVudFdyYXBwaW5n
VGV4dE1heGltdW1MaW5lQ291bnQgPSAyOwogCitjb25zdCBDR0Zsb2F0IGRlZmF1bHRUaHVtYm5h
aWxJY29uV2lkdGggPSA2NTsKKwogc3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGF0dGFjaG1l
bnRBY3Rpb25Gb250KCkKIHsKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxl
KGtDVFVJRm9udFRleHRTdHlsZVNob3J0Rm9vdG5vdGUsIFJlbmRlclRoZW1lSU9TOjpjb250ZW50
U2l6ZUNhdGVnb3J5KCksIDApKTsKQEAgLTE2MTksNiArMTYyMSw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgZmxvYXQgcHJvZ3Jlc3M7CiAKICAgICBSZXRhaW5QdHI8VUlJ
bWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbEljb247CiAKICAgICBpbnQg
YmFzZWxpbmUgeyAwIH07CiAKQEAgLTE4MDMsOCArMTgwNiwxMSBAQCBSZW5kZXJBdHRhY2htZW50
SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNo
bWVudCkKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKICAgICAg
ICAgRmxvYXRTaXplIGljb25TaXplOwogICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQo
YXR0YWNobWVudCwgaWNvblNpemUpOwotICAgICAgICBpZiAoaWNvbikgewotICAgICAgICAgICAg
aWNvblJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgoYXR0YWNobWVudFJlY3Qud2lkdGgoKSAv
IDIpIC0gKGljb25TaXplLndpZHRoKCkgLyAyKSwgMCksIGljb25TaXplKTsKKyAgICAgICAgdGh1
bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWxSZXBy
ZXNlbnRhdGlvbigpOworICAgICAgICAKKyAgICAgICAgaWYgKHRodW1ibmFpbEljb24gfHwgaWNv
bikgeworICAgICAgICAgICAgYXV0byBpY29uU2l6ZUJvdGggPSB0aHVtYm5haWxJY29uID8gRmxv
YXRTaXplKGRlZmF1bHRUaHVtYm5haWxJY29uV2lkdGgsIGRlZmF1bHRUaHVtYm5haWxJY29uV2lk
dGgpIDogaWNvblNpemU7CisgICAgICAgICAgICBpY29uUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBv
aW50KChhdHRhY2htZW50UmVjdC53aWR0aCgpIC8gMikgLSAoaWNvblNpemVCb3RoLndpZHRoKCkg
LyAyKSwgMCksIGljb25TaXplQm90aCk7CiAgICAgICAgICAgICB5T2Zmc2V0ICs9IGljb25SZWN0
LmhlaWdodCgpICsgYXR0YWNobWVudEl0ZW1NYXJnaW47CiAgICAgICAgIH0KICAgICB9IGVsc2UK
QEAgLTE4MzksMTEgKzE4NDUsMTMgQEAgaW50IFJlbmRlclRoZW1lSU9TOjphdHRhY2htZW50QmFz
ZWxpbmUoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkgY29uc3QKIAogc3RhdGlj
IHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRl
ckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewotICAgIGlmICghaW5mby5pY29uKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8u
aWNvbiBDR0ltYWdlXSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaWNvbkltYWdlLmdldCgpLCBp
bmZvLmljb25SZWN0KTsKKyAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZTsKKyAgICBpZiAoaW5m
by50aHVtYm5haWxJY29uKQorICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLnRodW1ibmFpbEljb247
CisgICAgZWxzZSBpZiAoaW5mby5pY29uKQorICAgICAgICBpY29uSW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIAorICAgIGNvbnRleHQuZHJhd0lt
YWdlKCppY29uSW1hZ2UuZ2V0KCksIGluZm8uaWNvblJlY3QpOwogfQogCiBzdGF0aWMgdm9pZCBw
YWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNo
bWVudEluZm8mIGluZm8pCkBAIC0xOTE5LDcgKzE5MjcsNyBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFp
bnRJbgogCiAgICAgaWYgKGluZm8uaGFzUHJvZ3Jlc3MpCiAgICAgICAgIHBhaW50QXR0YWNobWVu
dFByb2dyZXNzKGNvbnRleHQsIGluZm8pOwotICAgIGVsc2UgaWYgKGluZm8uaWNvbikKKyAgICBl
bHNlIGlmIChpbmZvLmljb24gfHwgaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBwYWludEF0
dGFjaG1lbnRJY29uKGNvbnRleHQsIGluZm8pOwogCiAgICAgcGFpbnRBdHRhY2htZW50VGV4dChj
b250ZXh0LCBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQppbmRleCBjYmExNjFlNzQ5NjA0ZTZiNGRkNjhmMDQ0NWEwMDFmODg2NDE5ZDlmLi40YjZlOGYz
NzliOTk3YzczN2M4ZDdhODg1YjU5NmE1Y2Y2MmZhODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yNzc3LDYgKzI3NzcsMTEgQEAgc3RhdGljIFJl
ZlB0cjxJY29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRh
Y2htZW50KQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKGNvbnN0IFJlbmRlckF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVu
dExheW91dCYgbGF5b3V0KQogeworICAgIGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQu
YXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWxSZXByZXNlbnRhdGlvbigpOworICAgIGlmICh0
aHVtYm5haWxJY29uKSB7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCp0aHVtYm5haWxJY29u
LmdldCgpLCBsYXlvdXQuaWNvblJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGF1
dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQpOwogICAgIGlmICghaWNvbikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZwppbmRleCBmNDlhMjU0MWQ2NmVkYWFkMWU3OTkxYjZmYTJlY2QwYjU5OGJkMWZjLi5l
OTIzZDBjYWNlMjc1MzJhZDBjYzBhYjhiZTVjYTdiZWE5Njk1ZDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTI0LDcgKzEyNCwxMyBAQCBX
S19BVVRIS0lUX0xERkxBR1NfSU9TX1NJTkNFXzEzID0gLWZyYW1ld29yayBBdXRoS2l0OwogV0tf
QVVUSEtJVF9MREZMQUdTX21hY29zeCA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19NQUNPU18x
MDE1KSk7CiBXS19BVVRIS0lUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTAxNSA9IC1mcmFtZXdvcmsg
QXV0aEtpdDsKIAotRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1l
d29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRh
dGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdv
cmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3
b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NF
U1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NF
UlZJQ0VTX0xERkxBR1MpICQoV0tfUlVOTklOR0JPQVJEX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tf
QVVUSEtJVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUFJFRElDVElP
Tl9MREZMQUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19HUkFQSElDU19TRVJW
SUNFU19MREZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERG
TEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNU
QUxUX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQo
V0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZMQUdT
KSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19X
RUJJTlNQRUNUT1JVSV9MREZMQUdTKTsKK1dLX1FVSUNLTE9PS19MREZMQUdTID0gJChXS19RVUlD
S0xPT0tfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1FVSUNLTE9PS19MREZMQUdT
X21hY29zeCA9ICQoV0tfUVVJQ0tMT09LX0xERkxBR1MkKFdLX01BQ09TXzEwMTUpKTsKK1dLX1FV
SUNLTE9PS19MREZMQUdTX01BQ09TX1NJTkNFXzEwMTUgPSAtZnJhbWV3b3JrIFF1aWNrTG9va1Ro
dW1ibmFpbGluZzsKK1dLX1FVSUNLTE9PS19MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBR
dWlja0xvb2tUaHVtYm5haWxpbmc7CitXS19RVUlDS0xPT0tfTERGTEFHU19pcGhvbmVzaW11bGF0
b3IgPSAtZnJhbWV3b3JrIFF1aWNrTG9va1RodW1ibmFpbGluZzsKKworRlJBTUVXT1JLX0FORF9M
SUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBD
b3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGlj
cyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIElt
YWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIFdl
YktpdExlZ2FjeSAtZnJhbWV3b3JrIFF1aWNrTG9va1RodW1ibmFpbGluZyAtbG5ldHdvcmsgJChX
S19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJU
SU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfUlVOTklOR0JPQVJEX1NFUlZJQ0VTX0xERkxBR1Mp
ICQoV0tfQVVUSEtJVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUFJF
RElDVElPTl9MREZMQUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19HUkFQSElD
U19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJS
VENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklM
RV9HRVNUQUxUX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxB
R1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9M
REZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykg
JChXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTKSAkKFdLX1FVSUNLTE9PS19MREZMQUdTKTsKIAog
Ly8gUHJldmVudCBDKysgc3RhbmRhcmQgbGlicmFyeSBiYXNpY19zdHJpbmdzdHJlYW0sIG9wZXJh
dG9yIG5ldywgZGVsZXRlIGFuZCB0aGVpciByZWxhdGVkIGV4Y2VwdGlvbiB0eXBlcyBmcm9tIGJl
aW5nIGV4cG9ydGVkIGFzIHdlYWsgc3ltYm9scy4KIFVORVhQT1JURURfU1lNQk9MX0xERkxBR1Mg
PSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0
OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pkbFB2U18gLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19a
bndtIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dl
YkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzFFT1M0XyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3Jl
MTJQb2xpY3lBY3Rpb25FRUVhU0VEbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOS1N0
M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGlj
eUFjdGlvbkVFRTRzd2FwRVJTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19f
MThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzFFUktTNF8gLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5
QWN0aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThm
dW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25F
RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZO
N1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wg
LVdsLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRz
SWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUwX05TXzEzYmFzaWNfaXN0cmVhbUljUzJfRUUgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05T
XzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTRiYXNpY19pb3N0cmVh
bUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19z
dHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTE2X05T
XzEzYmFzaWNfb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFRO
U3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9j
YXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzExNWJhc2lj
X3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNO
U18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFp
dHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRThfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDcw
OGI0OTZiN2UxOWEzMGM5YjAyYTRlMGU5ZmJkYzUyMTA3NWEwYTAuLmVlNWY4N2U5YjY5MTgxMzdm
NmJkN2QzYTQ3NDFhM2I4ZTkxNWMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiT2JqQ09i
amVjdEdyYXBoLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJQcm92aXNpb25h
bFBhZ2VQcm94eS5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmgiCiAjaW1w
b3J0ICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKICNpbXBvcnQg
IlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1l
c3NhZ2VzLmgiCkBAIC0yMjQ4LDcgKzIyNDksOSBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcgog
ICAgICAgICBpZiAoY2FwdHVyZWRIYW5kbGVyKQogICAgICAgICAgICAgY2FwdHVyZWRIYW5kbGVy
KGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CiAgICAgfSk7Ci0K
KyNpZiBFTkFCTEUoUUxUSFVNQk5BSUxfQVRUQUNITUVOVCkKKyAgICBfcGFnZS0+cmVxdWVzdFRo
dW1ibmFpbFdpdGhGaWxlV3JhcHBlcihmaWxlV3JhcHBlciwgaWRlbnRpZmllcik7CisjZW5kaWYK
ICAgICByZXR1cm4gd3JhcHBlcihhdHRhY2htZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KaW5kZXggMzk0YmY5MTkzOTc4N2E3NmJmMTczZTMxOWRjMjJiYjYyMjMyOTdiMC4uMzVkNGE5
MjA0OWUwN2RiMTFiNmYyZGY0MGNjYWFmYzA4NjEyOTNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFyYW1ldGVy
cy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1bWJuYWls
TG9hZGVyLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1dhcm5pbmcuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAg
LTM2MCw0ICszNjEsODUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9QcmVmZXJl
bmNlU2VydmljZSgpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShRTFRIVU1CTkFJTF9BVFRBQ0hN
RU5UKQorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA+IGNvbnZlcnROU0ltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCit7CisgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlv
bik7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJl
dGFpblB0cjxOU0dyYXBoaWNzQ29udGV4dD4gc2F2ZWRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XTsKKworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OltOU0dyYXBo
aWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmdyYXBoaWNzQ29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpZRVNdXTsKKyAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpOU01ha2VSZWN0KDAsIDAs
IGJpdG1hcC0+c2l6ZSgpLndpZHRoKCksIGJpdG1hcC0+c2l6ZSgpLmhlaWdodCgpKSBmcm9tUmVj
dDpOU1plcm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBm
cmFjdGlvbjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworCisgICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OnNhdmVkQ29udGV4dC5nZXQoKV07CisKKyAgICBy
ZXR1cm4gYml0bWFwOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorc3Rh
dGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFVJSW1hZ2VUb0JpdG1h
cChVSUltYWdlICppbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIFVJR3JhcGhpY3NQdXNoQ29udGV4dChncmFw
aGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDog
Q0dSZWN0TWFrZSgwLCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5o
ZWlnaHQoKSldOworICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7CisKKyAgICByZXR1cm4gYml0
bWFwOworfQorI2VuZGlmCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0
aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9uKQoreworICAg
IFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57CisgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBbb3BlcmF0aW9uIGdldEF0dGFjaG1lbnRJZGVudGlmaWVyXTsKKyNpZiBQTEFURk9STShN
QUMpCisgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydE5TSW1hZ2VUb0Jp
dG1hcChvcGVyYXRpb24uZ2V0VGh1bWJuYWlsTWFjLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAw
KSk7CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICAgICAgYXV0byBj
b252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnRVSUltYWdlVG9CaXRtYXAob3BlcmF0aW9uLmdldFRodW1i
bmFpbGlPUywgV2ViQ29yZTo6SW50U2l6ZSg0MDAsIDQwMCkpOworI2VuZGlmCisgICAgICAgICAg
ICBpZiAoY29udmVydGVkSW1hZ2UgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB0aGlzLT51cGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBjb252
ZXJ0ZWRJbWFnZSk7CisgICAgICAgIH0pOworICAgIH1dOworICAgICAgICAKKyAgICBbW1dLUUxU
aHVtYm5haWxRdWV1ZU1hbmFnZXIgc2hhcmVkSW5zdGFuY2VdLnFsVGh1bWJuYWlsR2VuZXJhdGlv
blF1ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb25dOworfQorCisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFw
cGVyLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBvcGVyYXRpb24gPSBh
ZG9wdE5TKFtbV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gYWxsb2NdIGluaXRXaXRoQXR0YWNo
bWVudDpmaWxlV3JhcHBlciBpZGVudGlmaWVyOmlkZW50aWZpZXJdKTsKKyAgICByZXF1ZXN0VGh1
bWJuYWlsV2l0aE9wZXJhdGlvbihvcGVyYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBhdXRvIG9wZXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhVUkw6ZmlsZVBhdGgg
aWRlbnRpZmllcjppZGVudGlmaWVyXSk7CisgICAgcmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRp
b24ob3BlcmF0aW9uLmdldCgpKTsKKyAgICAKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1RodW1i
bmFpbExvYWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWls
TG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY1MDU5NjU0NThmYjI2N2M3M2MzNGM4MDg4OGNjOTE4ZmUx
MzI2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9v
a1RodW1ibmFpbExvYWRlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKyNpZiBFTkFCTEUoUUxUSFVNQk5BSUxfQVRUQUNITUVO
VCkKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2VuZGlmCitAaW50ZXJmYWNlIFdLUUxU
aHVtYm5haWxRdWV1ZU1hbmFnZXIgOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZHdyaXRlLCBhc3NpZ24pIE5TT3BlcmF0aW9uUXVldWUqIHFsVGh1bWJuYWlsR2VuZXJhdGlv
blF1ZXVlOworLSAoaWQpaW5pdDsKKysgKFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgKilzaGFy
ZWRJbnN0YW5jZTsKK0BlbmQKKworQGludGVyZmFjZSBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlv
biA6IE5TT3BlcmF0aW9uCisKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc0FzeW5jaHJv
bm91cykgQk9PTCBhc3luY2hyb25vdXM7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNF
eGVjdXRpbmcpIEJPT0wgZXhlY3V0aW5nOworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlz
RmluaXNoZWQpIEJPT0wgZmluaXNoZWQ7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4p
IE5TU3RyaW5nICpjb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3Vs
ZFdyaXRlOworCistIChpZClpbml0V2l0aEF0dGFjaG1lbnQ6KE5TRmlsZVdyYXBwZXIgKilmaWxl
V3JhcHBlciBpZGVudGlmaWVyOiAoTlNTdHJpbmcgKilpZGVudGlmaWVyOworLSAoaWQpaW5pdFdp
dGhVUkw6KE5TU3RyaW5nICopZmlsZVVybCBpZGVudGlmaWVyOiAoTlNTdHJpbmcgKilpZGVudGlm
aWVyOworLSAoTlNTdHJpbmcgKilnZXRBdHRhY2htZW50SWRlbnRpZmllcjsKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorLShVSUltYWdlICopZ2V0VGh1bWJuYWlsaU9TOworI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKQorLShOU0ltYWdlICopZ2V0VGh1bWJuYWlsTWFjOworI2VuZGlmCitAZW5k
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1Ro
dW1ibmFpbExvYWRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1RodW1i
bmFpbExvYWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDU0OGI2N2I4OWE0OTRjOGRkY2I3ZjlhMjU0MjBm
ZjEyMGY4ODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVp
Y2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tCkBAIC0wLDAgKzEsMjAyIEBACisvKgorKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZiBFTkFCTEUoUUxUSFVNQk5BSUxf
QVRUQUNITUVOVCkKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1bWJu
YWlsTG9hZGVyLmgiCisKKyNpbXBvcnQgPFF1aWNrTG9va1RodW1ibmFpbGluZy9RTFRodW1ibmFp
bEdlbmVyYXRvci5oPgorI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworQGltcGxlbWVudGF0
aW9uIFdLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgCisKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOworICAgIGlmIChzZWxmKQorICAgICAgICBfcWxUaHVtYm5haWxHZW5l
cmF0aW9uUXVldWUgPSBbW05TT3BlcmF0aW9uUXVldWUgYWxsb2NdIGluaXRdOworICAgIHJldHVy
biBzZWxmOworfQorCisrIChXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyICopc2hhcmVkSW5zdGFu
Y2UKK3sKKyAgICBzdGF0aWMgV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciAqc2hhcmVkSW5zdGFu
Y2UgPSBuaWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBpc0Rpc3BhdGNoZWQ7CisKKyAg
ICBkaXNwYXRjaF9vbmNlKCZpc0Rpc3BhdGNoZWQsIF57CisgICAgICAgIHNoYXJlZEluc3RhbmNl
ID0gW1tXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyIGFsbG9jXSBpbml0XTsKKyAgICB9KTsKKwor
ICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKK30KK0BlbmQKKworCitAaW1wbGVtZW50YXRpb24g
V0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24geworICAgIFJldGFpblB0cjxOU1VSTD4gX2ZpbGVQ
YXRoOworICAgIFJldGFpblB0cjxOU011dGFibGVTdHJpbmc+IF9pZGVudGlmaWVyOworICAgIFJl
dGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBfZmlsZVdyYXBwZXI7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFJldGFpblB0cjxOU0ltYWdlPiBfcWxUaHVtYm5haWw7CisjZW5kaWYKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIFJldGFpblB0cjxVSUltYWdlPiBfcWxUaHVtYm5haWw7CisjZW5k
aWYKK30KKworLSAoaWQpaW5pdFdpdGhBdHRhY2htZW50OihOU0ZpbGVXcmFwcGVyICopZmlsZVdy
YXBwZXIgaWRlbnRpZmllcjooTlNNdXRhYmxlU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9maWxlV3JhcHBlciA9ICBhZG9wdE5T
KGZpbGVXcmFwcGVyKTsKKyAgICAgICAgX2lkZW50aWZpZXIgPSBhZG9wdE5TKFtpZGVudGlmaWVy
IGNvcHldKTsKKyAgICAgICAgX3FsVGh1bWJuYWlsID0gbnVsbHB0cjsKKyAgICAgICAgX2ZpbGVQ
YXRoID0gbnVsbHB0cjsKKyAgICAgICAgX3Nob3VsZFdyaXRlID0gWUVTOworICAgIH0KKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAoaWQpaW5pdFdpdGhVUkw6KE5TTXV0YWJsZVN0cmluZyAqKWZp
bGVVcmwgaWRlbnRpZmllcjooTlNNdXRhYmxlU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9maWxlV3JhcHBlciA9IG51bGxwdHI7
CisgICAgICAgIF9pZGVudGlmaWVyID0gIGFkb3B0TlMoW2lkZW50aWZpZXIgY29weV0pOworICAg
ICAgICBfcWxUaHVtYm5haWwgPSBudWxscHRyOworICAgICAgICBfZmlsZVBhdGggPSBhZG9wdE5T
KFtbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVVcmxdIGNvcHldKTsKKyAgICAgICAgX3Nob3Vs
ZFdyaXRlID0gTk87CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXN0YXJ0
Cit7CisgICAgCisgICAgTlNMb2coQCJTdGFydGluZyAlQCIsIHNlbGYpOworICAgIHNlbGYuZXhl
Y3V0aW5nID0gWUVTOworICAgIAorICAgIGlmIChfc2hvdWxkV3JpdGUpIHsKKyAgICAgICAgTlNT
dHJpbmcgKnRlbXBEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoQCJRTFRlbXBGaWxlRGF0YSIpOworICAgIAorICAgICAgICBOU1N0cmluZyAqZmlsZVBhdGgg
PSBbdGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W19maWxlV3Jh
cHBlciBwcmVmZXJyZWRGaWxlbmFtZV1dOworICAgICAgICBOU0ZpbGVXcmFwcGVyV3JpdGluZ09w
dGlvbnMgb3B0aW9ucyA9IDA7CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAg
ICAKKyAgICAgICAgYXV0byBmaWxlVVJMUGF0aCA9IGFkb3B0TlMoW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpmaWxlUGF0aF0pOworCisgICAgICAgIFtfZmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpmaWxl
VVJMUGF0aC5nZXQoKSBvcHRpb25zOm9wdGlvbnMgb3JpZ2luYWxDb250ZW50c1VSTDpuaWwgZXJy
b3I6JmVycm9yXTsKKyAgICAgICAgX2ZpbGVQYXRoID0gZmlsZVVSTFBhdGg7CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRTFRodW1ibmFpbEdl
bmVyYXRpb25SZXF1ZXN0ICpyZXEgPSBbW1FMVGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3QgYWxs
b2NdIGluaXRXaXRoRmlsZUF0VVJMOl9maWxlUGF0aC5nZXQoKSBzaXplOkNHU2l6ZU1ha2UoNDAw
LCA0MDApIHNjYWxlOjEgcmVwcmVzZW50YXRpb25UeXBlczpRTFRodW1ibmFpbEdlbmVyYXRpb25S
ZXF1ZXN0UmVwcmVzZW50YXRpb25UeXBlQWxsXTsKKyAgICByZXEuaWNvbk1vZGUgPSBZRVM7Cisg
ICAgCisgICAgW1tRTFRodW1ibmFpbEdlbmVyYXRvciBzaGFyZWRHZW5lcmF0b3JdIGdlbmVyYXRl
QmVzdFJlcHJlc2VudGF0aW9uRm9yUmVxdWVzdDpyZXEgY29tcGxldGlvbkhhbmRsZXI6XihRTFRo
dW1ibmFpbFJlcHJlc2VudGF0aW9uICp0aHVtYm5haWwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKF9xbFRodW1i
bmFpbCkKKyAgICAgICAgICAgIHJldHVybjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIF9x
bFRodW1ibmFpbCA9IHRodW1ibmFpbC5OU0ltYWdlOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICAgICAgX3FsVGh1bWJuYWlsID0gdGh1bWJuYWlsLlVJSW1hZ2U7CisjZW5k
aWYKKyAgICAgICAgaWYgKF9zaG91bGRXcml0ZSkgeworICAgICAgICAgICAgTlNFcnJvciAqZXJy
b3JGaWxlID0gbmlsOworICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRVUkw6X2ZpbGVQYXRoLmdldCgpIGVycm9yOiZlcnJvckZpbGVdOworICAg
ICAgICB9CisKKyAgICAgICAgc2VsZi5leGVjdXRpbmcgPSBOTzsKKyAgICAgICAgc2VsZi5maW5p
c2hlZCA9IFlFUzsKKyAgICB9XTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCistKFVJ
SW1hZ2UgKilnZXRUaHVtYm5haWxpT1MgeworICAgIHJldHVybiBfcWxUaHVtYm5haWwuZ2V0KCk7
Cit9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKy0oTlNJbWFnZSAqKWdldFRodW1ibmFp
bE1hYyB7CisgICAgcmV0dXJuIF9xbFRodW1ibmFpbC5nZXQoKTsKK30KKworI2VuZGlmCisKKy0g
KE5TU3RyaW5nICopZ2V0QXR0YWNobWVudElkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gX2lkZW50
aWZpZXIuZ2V0KCk7Cit9CisKKy0gKEJPT0wpaXNBc3luY2hyb25vdXMKK3sKKyAgICByZXR1cm4g
WUVTOworfQorCitAc3ludGhlc2l6ZSBleGVjdXRpbmc9X2V4ZWN1dGluZzsKKworLSAoQk9PTClp
c0V4ZWN1dGluZworeworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgeworICAgICAgICByZXR1cm4g
X2V4ZWN1dGluZzsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2V0RXhlY3V0aW5nOihCT09MKWV4ZWN1
dGluZworeworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgeworICAgICAgICBpZiAoZXhlY3V0aW5n
ICE9IF9leGVjdXRpbmcpIHsKKyAgICAgICAgICAgIFtzZWxmIHdpbGxDaGFuZ2VWYWx1ZUZvcktl
eTpAImlzRXhlY3V0aW5nIl07CisgICAgICAgICAgICBfZXhlY3V0aW5nID0gZXhlY3V0aW5nOwor
ICAgICAgICAgICAgW3NlbGYgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0V4ZWN1dGluZyJdOwor
ICAgICAgICB9CisgICAgfQorfQorCitAc3ludGhlc2l6ZSBmaW5pc2hlZD1fZmluaXNoZWQ7CisK
Ky0gKEJPT0wpaXNGaW5pc2hlZAoreworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgeworICAgICAg
ICByZXR1cm4gX2ZpbmlzaGVkOworICAgIH0KK30KKworLSAodm9pZClzZXRGaW5pc2hlZDooQk9P
TClmaW5pc2hlZAoreworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgeworICAgICAgICBpZiAoZmlu
aXNoZWQgIT0gX2ZpbmlzaGVkKSB7CisgICAgICAgICAgICBbc2VsZiB3aWxsQ2hhbmdlVmFsdWVG
b3JLZXk6QCJpc0ZpbmlzaGVkIl07CisgICAgICAgICAgICBfZmluaXNoZWQgPSBmaW5pc2hlZDsK
KyAgICAgICAgICAgIFtzZWxmIGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiaXNGaW5pc2hlZCJdOwor
ICAgICAgICB9CisgICAgfQorfQorCitAZW5kCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5N2UwYWU3OTVhOTE3N2JiM2Y1NmQwZDAxZGE5NjEz
YWFkZjJjNTAuLmU2NzhiYWYxNDlkMzY3MmZmYjMzNmQ5Y2NkNTVjZThlNzc0ODQ4YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQ0OCw2ICs5NDQ4LDIw
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBB
UEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFj
aG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0
YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7
CiB9CiAKKyNpZiBFTkFCTEUoUUxUSFVNQk5BSUxfQVRUQUNITUVOVCkKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCit7CisgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOworICAgIGlmIChiaXRtYXApCisgICAgICAgIGJpdG1hcC0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2ht
ZW50SWNvbihpZGVudGlmaWVyLCBoYW5kbGUpKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVm
ZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRh
KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBtX3ByZWZlcmVuY2VzLT5hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQoKSk7CkBAIC05NDc1LDggKzk0ODksMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRmlsZVBhdGgoY29uc3QgU3Ry
aW5nJiBpZGVudGkKICAgICBhdHRhY2htZW50LT5zZXRDb250ZW50VHlwZShjb250ZW50VHlwZSk7
CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVBhdGgoZmlsZVBhdGgpOwogICAgIG1fYXR0YWNobWVu
dElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGlkZW50aWZpZXIsIGF0dGFjaG1lbnQuY29w
eVJlZigpKTsKLQogICAgIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFdURk1vdmUoYXR0YWNo
bWVudCksIGZpbGVQYXRoKTsKKyNpZiBFTkFCTEUoUUxUSFVNQk5BSUxfQVRUQUNITUVOVCkKKyAg
ICByZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoaWRlbnRpZmllciwgZmlsZVBhdGgpOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMjZlYTM2ZmIzZjAwMTM2MzMzZDQ0OTUxY2ZmYmJhOTc0MTU4ZTY0MC4uNWJlNDMy
OWNiMTIyYjMzMzY2Y2Q1M2FhMjJhNmU1YTY5NTc4ZWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5Niw2ICsxOTYsOCBAQCBjbGFzcyBEZWNvZGVyOwogY2xh
c3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwog
fQorT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOworT0JKQ19DTEFTUyBXS1FMVGh1bWJuYWlsTG9h
ZE9wZXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CkBAIC0xNTg2LDcgKzE1ODgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+JiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRGF0YUZvckF0dGFjaG1lbnQoQVBJ
OjpBdHRhY2htZW50Jik7Ci0KKyNpZiBFTkFCTEUoUUxUSFVNQk5BSUxfQVRUQUNITUVOVCkKKyAg
ICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+Jik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0
aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJl
cXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uKik7
CisjZW5kaWYKICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyB3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50Jik7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGZhY2U5ZTI3MjMzYzRlZjdhZmU1NWY4YjU5ZTk2MTM2MjJlOTViMDEuLjlmNjgy
NTIxZjVlN2M3NzVhNDA1YmUzZDZkNjlkNzkzY2Q3M2ZmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY0LDYgKzE2NCw3IEBACiAJ
CTFBMDdEMkY5MTkxOUIzQTkwMEVDREExNiAvKiBtZXNzYWdlcy5weSBpbiBDb3B5IE1lc3NhZ2Ug
R2VuZXJhdGlvbiBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzA4NTZGMTg3Q0UwQTkwMDc4MEQ4NiAvKiBtZXNzYWdlcy5weSAqLzsgfTsKIAkJMUEwN0QyRkEx
OTE5QjNBOTAwRUNEQTE2IC8qIG1vZGVsLnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNj
cmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzAxODdDRTBB
OTAwNzgwRDg2IC8qIG1vZGVsLnB5ICovOyB9OwogCQkxQTA3RDJGQjE5MTlCM0E5MDBFQ0RBMTYg
LyogcGFyc2VyLnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzExODdDRTBBOTAwNzgwRDg2IC8qIHBh
cnNlci5weSAqLzsgfTsKKwkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFF1aWNrTG9va1Ro
dW1ibmFpbExvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2Fk
ZXIubW0gKi87IH07CiAJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEwRUM2MDExMjRBOUYyQzAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyLmggKi87IH07
CiAJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEVDNkJFMTI0
QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUEwRUM3
NUUxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM3NUMxMjRCQzdCMjAwN0VGNEE1
IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oICovOyB9OwpAQCAtMzc5LDYgKzM4MCw3IEBACiAJCTFB
RTQ5ODc4MTFGRjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU0OTg3NjExRkY3RkFBMDA0OEI0NjQgLyog
SlNOUE9iamVjdC5oICovOyB9OwogCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1l
dGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFF
NDlBNDcxMUZGQThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCAqLzsgfTsKIAkJMUFFNTJGOTgx
OTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTUyRjk0MTkyMDFGNkIwMEEx
RkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8q
IFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFFRTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1Ro
dW1ibmFpbExvYWRlci5oICovOyB9OwogCQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5RDMgLyogUGx1
Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUVGQ0MxMDExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggKi87IH07
CiAJCTFBRUZEMjc5MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGRDI3ODExRDE2QzgxMDA4
MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovOyB9OwogCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5
RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5o
ICovOyB9OwpAQCAtMjY1MSw2ICsyNjUzLDggQEAKIAkJMUFFNTJGOTMxOTIwMUY2QjAwQTFGQTM3
IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFF
NUI3RjkxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzIzMjQwOUYxNDIwMDIwMDVENiAvKiBRdWlj
a0xvb2tUaHVtYm5haWxMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rVGh1bWJuYWls
TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzI0MjQwOUYxNDIw
MDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFFRkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFRkNDMTExMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbklu
Zm9TdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5J
bmZvU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVGQ0NCQzExRDAy
QzVFMDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luSW5mb1N0b3JlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODg4Myw2ICs4ODg3LDggQEAKIAkJCQk4MzA0OEFFNTFBQ0E0NURD
MDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAogCQkJCTQ2ODM1NjlCMjFF
ODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJNDY4MzU2
OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8sCisJCQkJMUFF
RTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oICovLAor
CQkJCTFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIu
bW0gKi8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVz
c1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2lu
Z1dhcm5pbmcuaCAqLywKQEAgLTEwOTI1LDYgKzEwOTMxLDcgQEAKIAkJCQk4NkU2N0EyNTE5MTBC
OUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMw
NDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQUVFNTcyNTI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29r
VGh1bWJuYWlsTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4
RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAv
KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY2
MCw2ICsxMjY2Nyw3IEBACiAJCQkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVu
Y2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTRDMzFCMjEyRjREQTYwMDQ5QzE3
NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyODY1RUYyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTFBMEMyMjVFMjQzNTc1Q0QwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2Fk
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIw
RjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWU4YTU2
MWI1NzZmNTRiNjhjMWFkMDA3MzkzYTQ3MWQ1Mjc5MGIzMC4uNjkwZGI2ZGFkN2U1NzA4OGQ3YzYx
NWNlMjAxMTQ3OTM3NTE5ZTExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTY4MjksNiArNjgyOSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8
dWludAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1i
bmFpbEhhbmRsZSkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1l
bnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gcWxUaHVtYm5haWwgPSAhcWxUaHVtYm5haWxIYW5kbGUuaXNOdWxsKCkgPyBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShxbFRodW1ibmFpbEhhbmRsZSkgOiBudWxscHRyKQorICAg
ICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlVGh1bWJuYWlsUmVwcmVzZW50YXRpb24ocWxUaHVt
Ym5haWwtPmNyZWF0ZUltYWdlKCkpOworICAgIH0KK30KKwogUmVmUHRyPEhUTUxBdHRhY2htZW50
RWxlbWVudD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2ht
ZW50IGVsZW1lbnRzIGluIHN1YmZyYW1lcyB0b28gYXMgd2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkMGVkOWMwMDc5ZmU1YTg0ZmVjMWVmMTQ2
Zjk4ZjY5YjJmNWViYmM3Li5kZjE4NzlmNDc2NTVlY2Q0ZTNmN2ZjMGI5MzM0NjVjNWZkMjBmMWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVTaGVldENhbGxiYWNrSUQuaCIKKyNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRl
ICJTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRyYW5zYWN0aW9uSUQu
aCIKQEAgLTEyMDcsNiArMTIwOCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8
dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZW5j
bG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJ
Y29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMDc2YzFmYWYyZTQ0YzBjNzdiOTQ5YmU5ZWI3OTNkMjZi
MzVhMGY2Mi4uYTE3MTZiMjliN2FlMGNmOWMwMDg2YjU0NDc4MjY2MzY2OTczY2U3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC01NTgsNiArNTU4LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50
aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJp
bmcgY29udGVudFR5cGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5nSW1hZ2VEYXRhLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRp
ZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396783</attachid>
            <date>2020-04-17 12:48:52 -0700</date>
            <delta_ts>2020-04-20 16:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200417154850.patch</filename>
            <type>text/plain</type>
            <size>39023</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhkMDI4MGEwY2RjNTk2
NzAyZGY3MTg0NzczNjlmY2QwODVhYWJmYi4uMGNkZWNiNDZkOTZlMDgyZjg5YWNiZWZjZDc4YTQz
ZDYzYmQxZmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1i
ZXIgaW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIFF1aWNrTG9vayB0aHVtYm5haWwuIEFkZGVk
IGNvZGUgdG8gcmVuZGVyIHRoaXMgaW1hZ2Ugb24gYm90aCBpT1MgYW5kIE1hYy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFRlc3Qgd2lsbCBiZSBhZGRlZCBhZnRlciBhZGRpdGlvbnMgdG8gdGVz
dCBpbmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1
bWJuYWlsUmVwcmVzZW50YXRpb24pOgorICAgICAgICBBbGxvdyBzZXR0aW5nIG9mIHRodW1ibmFp
bCBtZW1iZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIEFkZGVkIHJlbmRlcmlu
ZyBvZiBpbWFnZSBtZW1iZXIgb2YgYXR0YWNobWVudCBlbGVtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVJT1M6OnBhaW50QXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisKIDIw
MjAtMDQtMTMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Q2xlYW4gdXAgbW9yZSByZXNvdXJjZXMgZHVyaW5nIFdlYkdMTGF5ZXIgdGVhcmRvd24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZDc0NzFiMDhiYTk2YzM2NTgyOTZiM2E3M2U5ZGI2NzY3ZTdlNWE2ZS4uZGMxNDA3NGUz
OTJiYzQyMDkyYzNlMzYyNTE1NzhiOTViYWZmYzFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBA
QAorMjAyMC0wMy0xMCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4K
KworICAgICAgICBXSzIgUXVpY2tsb29rIGZvciBhdHRhY2htZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4ODkxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYXR0YWNobWVudCBlbGVtZW50
cyB0byByZW5kZXIgUXVpY2tMb29rIHRodW1ibmFpbCBnZW5lcmF0ZWQKKyAgICAgICAgZnJvbSBj
b250ZW50cyBvZiB0aGUgZmlsZSBhcyBpdHMgaWNvbiwgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQK
KyAgICAgICAgaWNvbnMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggbWltZSB0eXBlLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnOgorICAgICAgICBMaW5rIFF1aWNrTG9v
ayB0aHVtYm5haWxpbmcgZnJhbWV3b3JrLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29u
dGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIENyZWF0ZSB0aHVtYm5haWwgcmVxdWVzdCBhbmQgYWRk
IHRvIHF1ZXVlLgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0TlNJbWFnZVRvQml0bWFwKToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFVJSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0UUxUaHVtYm5haWxGb3JHZW5lcmF0aW9uUmVxdWVzdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UUxUaHVtYm5haWxGb3JGaWxlV3JhcHBl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0UUxUaHVtYm5haWxGb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9RTFRodW1ibmFpbExvYWQubW06IEFkZGVkLgorICAgICAgICBB
ZGQgY29kZSB0byByZXF1ZXN0IHRodW1ibmFpbCBmb3IgZmlsZSBkYXRhLgorICAgICAgICAoLVtX
S1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyIGluaXRdKToKKyAgICAgICAgKCtbV0tRTFRodW1ibmFp
bFF1ZXVlTWFuYWdlciBzaGFyZWRJbnN0YW5jZV0pOgorICAgICAgICAoLVtXS1FMVGh1bWJuYWls
TG9hZE9wZXJhdGlvbiBpbml0V2l0aEF0dGFjaG1lbnQ6aWRlbnRpZmllcjpdKToKKyAgICAgICAg
KC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaW5pdFdpdGhVUkw6aWRlbnRpZmllcjpdKToK
KyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gc3RhcnRdKToKKyAgICAgICAg
KC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaXNBc3luY2hyb25vdXNdKToKKyAgICAgICAg
KC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaXNFeGVjdXRpbmddKToKKyAgICAgICAgKC1b
V0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gc2V0RXhlY3V0aW5nOl0pOgorICAgICAgICAoLVtX
S1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBpc0ZpbmlzaGVkXSk6CisgICAgICAgICgtW1dLUUxU
aHVtYm5haWxMb2FkT3BlcmF0aW9uIHNldEZpbmlzaGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZUF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgU2V0IHRodW1ibmFpbCBvZiBhdHRhY2ht
ZW50IGVsZW1lbnQKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBU
aHVtYm5haWwgcmVxdWVzdCBtZXNzYWdlLgorCiAyMDIwLTA0LTEzICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBVcGRhdGUgbWVzc2FnZSBmaWx0
ZXJzIGluIHRoZSBXZWJDb250ZW50IHNhbmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMTY2
YTEzNWQ3ZTA0ZGIzYTk1YTQzMTVjYTAzNjY5MjQ4ZWI0Yjc1MC4uNDM5NjQ0ODA2NDEzOWM0N2Vm
YWY3OGQ5NmI4ZjUzOWEyZDllMDM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTY2OSwzICs2
NjksNyBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX0lPU19K
SVRfUkVTVFJJQ1RJT05TIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPU19GQU1J
TFkpCisjZGVmaW5lIEhBVkVfUVVJQ0tMT09LX1RIVU1CTkFJTElORyAxCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBiZGFkOWEw
MDU0MjhmMTQ3YTgxNWVjZTAzZTdjMzlhMDdiODlhMmQ1Li4zYTExZDkyMGIwNzgwZWRjZDc2NGIx
OWEwNGMzYWZlMDllOTI2Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCkBAIC0yNDksNiArMjQ5LDE0IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRF
bGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVu
dFR5CiAgICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBC
bG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbWltZVR5cGUpKSk7CiB9CiAKK3ZvaWQgSFRNTEF0
dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1
bWJuYWlsKQoreworICAgIG1fdGh1bWJuYWlsID0gdGh1bWJuYWlsOworICAgIAorICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT5pbnZh
bGlkYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAppbmRleCBhOWJiMjQ3NTc1NWEyOGFjMmQzMTc5NjQ2YWI4ZTNkMWE5MmZiY2U1
Li5kMmM2NjY1N2QyNWU0ODBjNmIzN2EwOTA4MjkwMDQ1OWI4YzU4N2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTMzLDcgKzMzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsK
K2NsYXNzIEltYWdlOwogY2xhc3MgUmVuZGVyQXR0YWNobWVudDsKK2NsYXNzIFNoYXJlYWJsZUJp
dG1hcDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKQEAgLTU2LDYgKzU4LDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKE9wdGlvbmFsPHVpbnQ2
NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChj
b25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0
b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9k
ZSYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29u
dGFpbmVyTm9kZSYpIGZpbmFsOwpAQCAtNjcsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVu
dFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25zdDsKLQorICAg
IFJlZlB0cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0K
ICAgICBSZW5kZXJBdHRhY2htZW50KiByZW5kZXJlcigpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAt
ODcsNiArOTAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7CiAg
ICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fdGh1bWJu
YWlsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDI3NTQ4YjE3M2I3NjMwY2MzNGRhYjg0MzAyZGIw
OGJjZGJlODg0Y2IuLmI1MmEwNWE0MTE2NDMxZTk4NjJkNDBkZWY3ODQ3NTllNjFlM2E5NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE2MTksNiAr
MTYxOSw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAgZmxvYXQgcHJvZ3Jl
c3M7CiAKICAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1hZ2U+IHRo
dW1ibmFpbEljb247CiAKICAgICBpbnQgYmFzZWxpbmUgeyAwIH07CiAKQEAgLTE4MDMsOCArMTgw
NCwxMSBAQCBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8oY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAm
JiAhaGFzUHJvZ3Jlc3MpIHsKICAgICAgICAgRmxvYXRTaXplIGljb25TaXplOwogICAgICAgICBp
Y29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNpemUpOwotICAgICAgICBp
ZiAoaWNvbikgewotICAgICAgICAgICAgaWNvblJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgo
YXR0YWNobWVudFJlY3Qud2lkdGgoKSAvIDIpIC0gKGljb25TaXplLndpZHRoKCkgLyAyKSwgMCks
IGljb25TaXplKTsKKyAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS50aHVtYm5haWwoKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aHVtYm5haWxJ
Y29uIHx8IGljb24pIHsKKyAgICAgICAgICAgIGF1dG8gaWNvblNpemVCb3RoID0gdGh1bWJuYWls
SWNvbiA/IEZsb2F0U2l6ZShhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkg
OiBpY29uU2l6ZTsKKyAgICAgICAgICAgIGljb25SZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAyKSAtIChpY29uU2l6ZUJvdGgud2lkdGgoKSAvIDIp
LCAwKSwgaWNvblNpemVCb3RoKTsKICAgICAgICAgICAgIHlPZmZzZXQgKz0gaWNvblJlY3QuaGVp
Z2h0KCkgKyBhdHRhY2htZW50SXRlbU1hcmdpbjsKICAgICAgICAgfQogICAgIH0gZWxzZQpAQCAt
MTgzOSwxMSArMTg0MywxMyBAQCBpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRCYXNlbGlu
ZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KSBjb25zdAogCiBzdGF0aWMgdm9p
ZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0
YWNobWVudEluZm8mIGluZm8pCiB7Ci0gICAgaWYgKCFpbmZvLmljb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29u
IENHSW1hZ2VdKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2UuZ2V0KCksIGluZm8u
aWNvblJlY3QpOworICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdlOworICAgIGlmIChpbmZvLnRo
dW1ibmFpbEljb24pCisgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKKyAg
ICBlbHNlIGlmIChpbmZvLmljb24pCisgICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAgCisgICAgY29udGV4dC5kcmF3SW1hZ2Uo
Kmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYg
aW5mbykKQEAgLTE5MTksNyArMTkyNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50QXR0
YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAKICAg
ICBpZiAoaW5mby5oYXNQcm9ncmVzcykKICAgICAgICAgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3Mo
Y29udGV4dCwgaW5mbyk7Ci0gICAgZWxzZSBpZiAoaW5mby5pY29uKQorICAgIGVsc2UgaWYgKGlu
Zm8uaWNvbiB8fCBpbmZvLnRodW1ibmFpbEljb24pCiAgICAgICAgIHBhaW50QXR0YWNobWVudElj
b24oY29udGV4dCwgaW5mbyk7CiAKICAgICBwYWludEF0dGFjaG1lbnRUZXh0KGNvbnRleHQsIGlu
Zm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGNi
YTE2MWU3NDk2MDRlNmI0ZGQ2OGYwNDQ1YTAwMWY4ODY0MTlkOWYuLmMxMDk5MjdlNjc1YjkxYWFm
OWZhMjM2NjIxMTI4MWZiOWZmYmEwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KQEAgLTI3NzcsNiArMjc3NywxMCBAQCBzdGF0aWMgUmVmUHRyPEljb24+
IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAK
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3QgUmVuZGVyQXR0YWNobWVudCYg
YXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBs
YXlvdXQpCiB7CisgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNo
bWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgeworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgq
dGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KTsKICAgICBpZiAo
IWljb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ29uZmln
dXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9X
ZWJLaXQueGNjb25maWcKaW5kZXggZjQ5YTI1NDFkNjZlZGFhZDFlNzk5MWI2ZmEyZWNkMGI1OThi
ZDFmYy4uYzg4MjlhZjNkOTIyYTVjNTdmN2U3MjkzMWEzNjc2YjMzNDgzY2IyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKKysrIGIvU291
cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKQEAgLTEyNCw3ICsxMjQs
MTMgQEAgV0tfQVVUSEtJVF9MREZMQUdTX0lPU19TSU5DRV8xMyA9IC1mcmFtZXdvcmsgQXV0aEtp
dDsKIFdLX0FVVEhLSVRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FVVEhLSVRfTERGTEFHUyQoV0tf
TUFDT1NfMTAxNSkpOwogV0tfQVVUSEtJVF9MREZMQUdTX01BQ09TX1NJTkNFXzEwMTUgPSAtZnJh
bWV3b3JrIEF1dGhLaXQ7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpj
IC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29y
ZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAt
ZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQg
LWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQo
V0tfQUNDRVNTSUJJTElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VS
VElPTl9TRVJWSUNFU19MREZMQUdTKSAkKFdLX1JVTk5JTkdCT0FSRF9TRVJWSUNFU19MREZMQUdT
KSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1BS
RURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJ
Q1NfU0VSVklDRVNfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VC
UlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJ
TEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZM
QUdTKSAkKFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19TRUNVUklUWV9JTlRFUkZBQ0Vf
TERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1Mp
ICQoV0tfV0VCSU5TUEVDVE9SVUlfTERGTEFHUyk7CitXS19RVUlDS0xPT0tfVEhVTUJOQUlMSU5H
X0xERkxBR1MgPSAkKFdLX1FVSUNLTE9PS19USFVNQk5BSUxJTkdfTERGTEFHU18kKFdLX1BMQVRG
T1JNX05BTUUpKTsKK1dLX1FVSUNLTE9PS19USFVNQk5BSUxJTkdfTERGTEFHU19tYWNvc3ggPSAk
KFdLX1FVSUNLTE9PS19USFVNQk5BSUxJTkdfTERGTEFHUyQoV0tfTUFDT1NfMTAxNSkpOworV0tf
UVVJQ0tMT09LX1RIVU1CTkFJTElOR19MREZMQUdTX01BQ09TX1NJTkNFXzEwMTUgPSAtZnJhbWV3
b3JrIFF1aWNrTG9va1RodW1ibmFpbGluZzsKK1dLX1FVSUNLTE9PS19USFVNQk5BSUxJTkdfTERG
TEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgUXVpY2tMb29rVGh1bWJuYWlsaW5nOworV0tfUVVJ
Q0tMT09LX1RIVU1CTkFJTElOR19MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsg
UXVpY2tMb29rVGh1bWJuYWlsaW5nOworCitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9
IC1sb2JqYyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3
b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29y
ZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3Jr
IElPS2l0IC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdvcmsgV2ViS2l0TGVnYWN5IC1mcmFt
ZXdvcmsgUXVpY2tMb29rVGh1bWJuYWlsaW5nIC1sbmV0d29yayAkKFdLX0FDQ0VTU0lCSUxJVFlf
TERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BU1NFUlRJT05fU0VSVklDRVNfTERG
TEFHUykgJChXS19SVU5OSU5HQk9BUkRfU0VSVklDRVNfTERGTEFHUykgJChXS19BVVRIS0lUX0xE
RkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QUkVESUNUSU9OX0xERkxBR1Mp
ICQoV0tfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxB
R1MpICQoV0tfTElCU0FOREJPWF9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdL
X01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFH
UykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TQUZFX0JS
T1dTSU5HX0xERkxBR1MpICQoV0tfU0VDVVJJVFlfSU5URVJGQUNFX0xERkxBR1MpICQoV0tfVUlL
SVRfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1dFQklOU1BFQ1RP
UlVJX0xERkxBR1MpICQoV0tfUVVJQ0tMT09LX1RIVU1CTkFJTElOR19MREZMQUdTKTsKIAogLy8g
UHJldmVudCBDKysgc3RhbmRhcmQgbGlicmFyeSBiYXNpY19zdHJpbmdzdHJlYW0sIG9wZXJhdG9y
IG5ldywgZGVsZXRlIGFuZCB0aGVpciByZWxhdGVkIGV4Y2VwdGlvbiB0eXBlcyBmcm9tIGJlaW5n
IGV4cG9ydGVkIGFzIHdlYWsgc3ltYm9scy4KIFVORVhQT1JURURfU1lNQk9MX0xERkxBR1MgPSAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWV4
Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pkbFB2U18gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndt
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19a
TlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzFFT1M0XyAtV2ws
LXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQ
b2xpY3lBY3Rpb25FRUVhU0VEbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOS1N0M19f
MThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFj
dGlvbkVFRTRzd2FwRVJTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThm
dW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzFFUktTNF8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5j
dGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVE
MkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dl
YkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wg
LVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNF
RU5TXzlhbGxvY2F0b3JJY0VFRUUwX05TXzEzYmFzaWNfaXN0cmVhbUljUzJfRUUgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzEx
Y2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTRiYXNpY19pb3N0cmVhbUlj
UzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJp
bmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTE2X05TXzEz
YmFzaWNfb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFROU3Qz
X18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzExNWJhc2ljX3N0
cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18x
MWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJ
Y0VFTlNfOWFsbG9jYXRvckljRUVFRThfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDcwOGI0
OTZiN2UxOWEzMGM5YjAyYTRlMGU5ZmJkYzUyMTA3NWEwYTAuLmZmM2RiMTU3ZjdmOTVhZmIzNzhi
NmE0OTFjYWE3YjM5Zjk2MDkxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiT2JqQ09iamVj
dEdyYXBoLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJQcm92aXNpb25hbFBh
Z2VQcm94eS5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmgiCiAjaW1wb3J0
ICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKICNpbXBvcnQgIlJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3Nh
Z2VzLmgiCkBAIC0yMjQ4LDcgKzIyNDksOSBAQCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcgogICAg
ICAgICBpZiAoY2FwdHVyZWRIYW5kbGVyKQogICAgICAgICAgICAgY2FwdHVyZWRIYW5kbGVyKGVy
cm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CiAgICAgfSk7Ci0KKyNp
ZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCisgICAgX3BhZ2UtPnJlcXVlc3RUaHVtYm5h
aWxXaXRoRmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIsIGlkZW50aWZpZXIpOworI2VuZGlmCiAgICAg
cmV0dXJuIHdyYXBwZXIoYXR0YWNobWVudCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmlu
ZGV4IDM5NGJmOTE5Mzk3ODdhNzZiZjE3M2UzMTlkYzIyYmI2MjIzMjk3YjAuLjM0MGY0N2Y0NjQ0
N2YzMTk3OGMyNjJlNDBkMzM1OWRkZGI1OThjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMiw2ICszMiw3IEBACiAj
aW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIK
ICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQgIlF1aWNrTG9va1RodW1ibmFpbExvYWRl
ci5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdX
YXJuaW5nLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCkBAIC0zNjAs
NCArMzYxLDY1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNl
cnZpY2UoKQogI2VuZGlmCiB9CiAKKyNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCisj
aWYgUExBVEZPUk0oTUFDKQordHlwZWRlZiBOU0ltYWdlICpQbGF0Zm9ybUltYWdlOworI2VsaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKK3R5cGVkZWYgVUlJbWFnZSAqUGxhdGZvcm1JbWFnZTsKKyNl
bmRpZgorCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxh
dGZvcm1JbWFnZVRvQml0bWFwKFBsYXRmb3JtSW1hZ2UgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNpemUpCit7CisgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Cisg
ICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIFVJR3JhcGhpY3NQdXNoQ29udGV4dChncmFwaGljc0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpKTsKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpDR1JlY3RNYWtlKDAsIDAs
IGJpdG1hcC0+c2l6ZSgpLndpZHRoKCksIGJpdG1hcC0+c2l6ZSgpLmhlaWdodCgpKV07CisgICAg
VUlHcmFwaGljc1BvcENvbnRleHQoKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIHNh
dmVkQ29udGV4dCA9IGFkb3B0TlMoW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSk7
CisKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W05TR3JhcGhpY3ND
b250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhDR0NvbnRleHQ6Z3JhcGhpY3NDb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSBmbGlwcGVkOllFU11dOworICAgIFtpbWFnZSBkcmF3SW5SZWN0Ok5TTWFr
ZVJlY3QoMCwgMCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwgYml0bWFwLT5zaXplKCkuaGVpZ2h0
KCkpIGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25T
b3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07CisKKyAg
ICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6c2F2ZWRDb250ZXh0LmdldCgp
XTsKKyNlbmRpZgorICAgIHJldHVybiBiaXRtYXA7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAq
b3BlcmF0aW9uKQoreworICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57CisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAg
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBbb3BlcmF0aW9uIGlkZW50aWZpZXJdOworICAgICAgICAg
ICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoW29w
ZXJhdGlvbiB0aHVtYm5haWxdLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7CisgICAgICAg
ICAgICBpZiAoIWNvbnZlcnRlZEltYWdlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGNvbnZlcnRlZElt
YWdlKTsKKyAgICAgICAgfSk7CisgICAgfV07CisgICAgICAgIAorICAgIFtbV0tRTFRodW1ibmFp
bFF1ZXVlTWFuYWdlciBzaGFyZWRJbnN0YW5jZV0ucWxUaHVtYm5haWxHZW5lcmF0aW9uUXVldWUg
YWRkT3BlcmF0aW9uOm9wZXJhdGlvbl07Cit9CisKKwordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RUaHVtYm5haWxXaXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIsIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIG9wZXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhBdHRhY2htZW50OmZp
bGVXcmFwcGVyIGlkZW50aWZpZXI6aWRlbnRpZmllcl0pOworICAgIHJlcXVlc3RUaHVtYm5haWxX
aXRoT3BlcmF0aW9uKG9wZXJhdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQoreworICAgIGF1dG8gb3BlcmF0aW9uID0gYWRvcHROUyhbW1dLUUxU
aHVtYm5haWxMb2FkT3BlcmF0aW9uIGFsbG9jXSBpbml0V2l0aFVSTDpmaWxlUGF0aCBpZGVudGlm
aWVyOmlkZW50aWZpZXJdKTsKKyAgICByZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihvcGVy
YXRpb24uZ2V0KCkpOworICAgIAorfQorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1RodW1ibmFpbExvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTU4MGQyZThkYWRiYTJiZDZjZDg4YzQ2Y2RiYTc1YjMxY2QwOWE4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1RodW1ibmFp
bExvYWRlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKyNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorQGNsYXNzIFVJSW1hZ2U7CisjZW5kaWYKKworQGludGVyZmFj
ZSBXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2VyIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWR3cml0ZSwgcmV0YWluKSBOU09wZXJhdGlvblF1ZXVlKiBxbFRodW1ibmFpbEdl
bmVyYXRpb25RdWV1ZTsKKy0gKGlkKWluaXQ7CisrIChXS1FMVGh1bWJuYWlsUXVldWVNYW5hZ2Vy
ICopc2hhcmVkSW5zdGFuY2U7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tRTFRodW1ibmFpbExvYWRP
cGVyYXRpb24gOiBOU09wZXJhdGlvbgorCitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNB
c3luY2hyb25vdXMpIEJPT0wgYXN5bmNocm9ub3VzOworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0
dGVyPWlzRXhlY3V0aW5nKSBCT09MIGV4ZWN1dGluZzsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdl
dHRlcj1pc0ZpbmlzaGVkKSBCT09MIGZpbmlzaGVkOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgTlNTdHJpbmcgKmNvbnRlbnRUeXBlOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
c2hvdWxkV3JpdGU7CisKKy0gKGlkKWluaXRXaXRoQXR0YWNobWVudDooTlNGaWxlV3JhcHBlciAq
KWZpbGVXcmFwcGVyIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcjsKKy0gKGlkKWlu
aXRXaXRoVVJMOihOU1N0cmluZyAqKWZpbGVVUkwgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVu
dGlmaWVyOworLSAoTlNTdHJpbmcgKilpZGVudGlmaWVyOworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCistKFVJSW1hZ2UgKil0aHVtYm5haWw7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCist
KE5TSW1hZ2UgKil0aHVtYm5haWw7CisjZW5kaWYKK0BlbmQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxZmU5ODhlMmFhMTBhZTJjMjBmNmNhOTU1MjlhNmIyZWEzZjUwODEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2FkZXIu
bW0KQEAgLTAsMCArMSwxOTIgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlF1aWNrTG9va1RodW1i
bmFpbExvYWRlci5oIgorCisjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQorCisjaW1w
b3J0IDxRdWlja0xvb2tUaHVtYm5haWxpbmcvUUxUaHVtYm5haWxHZW5lcmF0b3IuaD4KKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1FMVGh1bWJuYWlsUXVl
dWVNYW5hZ2VyIAorCistIChpZClpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
ICBpZiAoc2VsZikKKyAgICAgICAgX3FsVGh1bWJuYWlsR2VuZXJhdGlvblF1ZXVlID0gW1tOU09w
ZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoV0tR
TFRodW1ibmFpbFF1ZXVlTWFuYWdlciAqKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFdL
UUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgKnNoYXJlZEluc3RhbmNlID0gW1tXS1FMVGh1bWJuYWls
UXVldWVNYW5hZ2VyIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7Cit9
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiB7Cisg
ICAgUmV0YWluUHRyPE5TVVJMPiBfZmlsZVBhdGg7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0
cmluZz4gX2lkZW50aWZpZXI7CisgICAgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IF9maWxlV3Jh
cHBlcjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IF90aHVtYm5h
aWw7CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFJldGFpblB0cjxVSUlt
YWdlPiBfdGh1bWJuYWlsOworI2VuZGlmCit9CisKKy0gKGlkKWluaXRXaXRoQXR0YWNobWVudDoo
TlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGlkZW50aWZpZXI6KE5TTXV0YWJsZVN0cmluZyAq
KWlkZW50aWZpZXIKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBf
ZmlsZVdyYXBwZXIgPSBmaWxlV3JhcHBlcjsKKyAgICAgICAgX2lkZW50aWZpZXIgPSBhZG9wdE5T
KFtpZGVudGlmaWVyIGNvcHldKTsKKyAgICAgICAgX3Nob3VsZFdyaXRlID0gWUVTOworICAgIH0K
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQpaW5pdFdpdGhVUkw6KE5TTXV0YWJsZVN0cmlu
ZyAqKWZpbGVVUkwgaWRlbnRpZmllcjooTlNNdXRhYmxlU3RyaW5nICopaWRlbnRpZmllcgorewor
ICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9pZGVudGlmaWVyID0gYWRv
cHROUyhbaWRlbnRpZmllciBjb3B5XSk7CisgICAgICAgIF9maWxlUGF0aCA9IGFkb3B0TlMoW1tO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVVSTF0gY29weV0pOworICAgIH0KKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClzdGFydAoreworICAgIAorICAgIHNlbGYuZXhlY3V0aW5nID0g
WUVTOworICAgIAorICAgIGlmIChfc2hvdWxkV3JpdGUpIHsKKyAgICAgICAgTlNTdHJpbmcgKnRl
bXBEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJRTFRl
bXBGaWxlRGF0YSIpOworICAgIAorICAgICAgICBOU1N0cmluZyAqZmlsZVBhdGggPSBbdGVtcERp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W19maWxlV3JhcHBlciBwcmVm
ZXJyZWRGaWxlbmFtZV1dOworICAgICAgICBOU0ZpbGVXcmFwcGVyV3JpdGluZ09wdGlvbnMgb3B0
aW9ucyA9IDA7CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICAKKyAgICAg
ICAgYXV0byBmaWxlVVJMUGF0aCA9IGFkb3B0TlMoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxl
UGF0aF0pOworCisgICAgICAgIFtfZmlsZVdyYXBwZXIgd3JpdGVUb1VSTDpmaWxlVVJMUGF0aC5n
ZXQoKSBvcHRpb25zOm9wdGlvbnMgb3JpZ2luYWxDb250ZW50c1VSTDpuaWwgZXJyb3I6JmVycm9y
XTsKKyAgICAgICAgX2ZpbGVQYXRoID0gZmlsZVVSTFBhdGg7CisgICAgICAgIGlmIChlcnJvcikK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRTFRodW1ibmFpbEdlbmVyYXRpb25S
ZXF1ZXN0ICpyZXEgPSBbW1FMVGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3QgYWxsb2NdIGluaXRX
aXRoRmlsZUF0VVJMOl9maWxlUGF0aC5nZXQoKSBzaXplOkNHU2l6ZU1ha2UoNDAwLCA0MDApIHNj
YWxlOjEgcmVwcmVzZW50YXRpb25UeXBlczpRTFRodW1ibmFpbEdlbmVyYXRpb25SZXF1ZXN0UmVw
cmVzZW50YXRpb25UeXBlQWxsXTsKKyAgICByZXEuaWNvbk1vZGUgPSBZRVM7CisgICAgCisgICAg
W1tRTFRodW1ibmFpbEdlbmVyYXRvciBzaGFyZWRHZW5lcmF0b3JdIGdlbmVyYXRlQmVzdFJlcHJl
c2VudGF0aW9uRm9yUmVxdWVzdDpyZXEgY29tcGxldGlvbkhhbmRsZXI6XihRTFRodW1ibmFpbFJl
cHJlc2VudGF0aW9uICp0aHVtYm5haWwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKF90aHVtYm5haWwpCisgICAg
ICAgICAgICByZXR1cm47CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBfdGh1bWJuYWlsID0g
dGh1bWJuYWlsLk5TSW1hZ2U7CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
ICAgICBfdGh1bWJuYWlsID0gdGh1bWJuYWlsLlVJSW1hZ2U7CisjZW5kaWYKKyAgICAgICAgaWYg
KF9zaG91bGRXcml0ZSkgeworICAgICAgICAgICAgTlNFcnJvciAqZXJyb3JGaWxlID0gbmlsOwor
ICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRV
Ukw6X2ZpbGVQYXRoLmdldCgpIGVycm9yOiZlcnJvckZpbGVdOworICAgICAgICB9CisKKyAgICAg
ICAgc2VsZi5leGVjdXRpbmcgPSBOTzsKKyAgICAgICAgc2VsZi5maW5pc2hlZCA9IFlFUzsKKyAg
ICB9XTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCistIChVSUltYWdlICopdGh1bWJu
YWlsCit7CisgICAgcmV0dXJuIF90aHVtYm5haWwuZ2V0KCk7Cit9CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKE1BQykKKy0gKE5TSW1hZ2UgKil0aHVtYm5haWwKK3sKKyAgICByZXR1cm4gX3RodW1i
bmFpbC5nZXQoKTsKK30KKyNlbmRpZgorCistIChOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAg
ICByZXR1cm4gX2lkZW50aWZpZXIuZ2V0KCk7Cit9CisKKy0gKEJPT0wpaXNBc3luY2hyb25vdXMK
K3sKKyAgICByZXR1cm4gWUVTOworfQorCitAc3ludGhlc2l6ZSBleGVjdXRpbmc9X2V4ZWN1dGlu
ZzsKKworLSAoQk9PTClpc0V4ZWN1dGluZworeworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgewor
ICAgICAgICByZXR1cm4gX2V4ZWN1dGluZzsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2V0RXhlY3V0
aW5nOihCT09MKWV4ZWN1dGluZworeworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgeworICAgICAg
ICBpZiAoZXhlY3V0aW5nICE9IF9leGVjdXRpbmcpIHsKKyAgICAgICAgICAgIFtzZWxmIHdpbGxD
aGFuZ2VWYWx1ZUZvcktleTpAImlzRXhlY3V0aW5nIl07CisgICAgICAgICAgICBfZXhlY3V0aW5n
ID0gZXhlY3V0aW5nOworICAgICAgICAgICAgW3NlbGYgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJp
c0V4ZWN1dGluZyJdOworICAgICAgICB9CisgICAgfQorfQorCitAc3ludGhlc2l6ZSBmaW5pc2hl
ZD1fZmluaXNoZWQ7CisKKy0gKEJPT0wpaXNGaW5pc2hlZAoreworICAgIEBzeW5jaHJvbml6ZWQo
c2VsZikgeworICAgICAgICByZXR1cm4gX2ZpbmlzaGVkOworICAgIH0KK30KKworLSAodm9pZClz
ZXRGaW5pc2hlZDooQk9PTClmaW5pc2hlZAoreworICAgIEBzeW5jaHJvbml6ZWQoc2VsZikgewor
ICAgICAgICBpZiAoZmluaXNoZWQgIT0gX2ZpbmlzaGVkKSB7CisgICAgICAgICAgICBbc2VsZiB3
aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0ZpbmlzaGVkIl07CisgICAgICAgICAgICBfZmluaXNo
ZWQgPSBmaW5pc2hlZDsKKyAgICAgICAgICAgIFtzZWxmIGRpZENoYW5nZVZhbHVlRm9yS2V5OkAi
aXNGaW5pc2hlZCJdOworICAgICAgICB9CisgICAgfQorfQorCitAZW5kCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5N2UwYWU3OTVhOTE3N2Ji
M2Y1NmQwZDAxZGE5NjEzYWFkZjJjNTAuLjcxNzA5NzJhYWU0ZDI5YzM2ZTAyNWVhZTkxMjczZjU4
YzQ1OWFlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
OTQ0OCw2ICs5NDQ4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVu
dGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29u
dGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2Up
LCBjYWxsYmFja0lEKSk7CiB9CiAKKyNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCit2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYgYml0bWFwKQoreworICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoYml0bWFwKQorICAgICAgICBiaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlKSk7Cit9CisjZW5kaWYKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYgZGF0YSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcmVmZXJl
bmNlcy0+YXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpOwpAQCAtOTQ3NSw4ICs5NDg5LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQ
YXRoKGNvbnN0IFN0cmluZyYgaWRlbnRpCiAgICAgYXR0YWNobWVudC0+c2V0Q29udGVudFR5cGUo
Y29udGVudFR5cGUpOwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGVQYXRoKGZpbGVQYXRoKTsKICAg
ICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChpZGVudGlmaWVyLCBh
dHRhY2htZW50LmNvcHlSZWYoKSk7Ci0KICAgICBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChX
VEZNb3ZlKGF0dGFjaG1lbnQpLCBmaWxlUGF0aCk7CisjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJO
QUlMSU5HKQorICAgIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChpZGVudGlmaWVyLCBmaWxlUGF0
aCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCAyNmVhMzZmYjNmMDAxMzYzMzNkNDQ5NTFjZmZiYmE5NzQxNThl
NjQwLi44OWY5MWM5YTVkZTc2YTA3MDU1ZTgzNTEzNTc5ZmY5Njk3YTU1NDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk2LDYgKzE5Niw4IEBAIGNsYXNzIERl
Y29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U7CiB9CitPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CitPQkpDX0NMQVNTIFdLUUxU
aHVtYm5haWxMb2FkT3BlcmF0aW9uOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTE1ODYsNyArMTU4OCwxMiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT4mJik+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEludmFsaWRhdGVEYXRhRm9yQXR0
YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKTsKLQorI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJ
TElORykKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0
aFBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZXF1ZXN0VGh1
bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3Bl
cmF0aW9uKik7CisjZW5kaWYKICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBTaG91bGRVcGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyB3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRh
Y2htZW50Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGZhY2U5ZTI3MjMzYzRlZjdhZmU1NWY4YjU5ZTk2MTM2MjJlOTVi
MDEuLjlmNjgyNTIxZjVlN2M3NzVhNDA1YmUzZDZkNjlkNzkzY2Q3M2ZmMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY0LDYgKzE2
NCw3IEBACiAJCTFBMDdEMkY5MTkxOUIzQTkwMEVDREExNiAvKiBtZXNzYWdlcy5weSBpbiBDb3B5
IE1lc3NhZ2UgR2VuZXJhdGlvbiBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQzA4NTZGMTg3Q0UwQTkwMDc4MEQ4NiAvKiBtZXNzYWdlcy5weSAqLzsgfTsKIAkJ
MUEwN0QyRkExOTE5QjNBOTAwRUNEQTE2IC8qIG1vZGVsLnB5IGluIENvcHkgTWVzc2FnZSBHZW5l
cmF0aW9uIFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1
NzAxODdDRTBBOTAwNzgwRDg2IC8qIG1vZGVsLnB5ICovOyB9OwogCQkxQTA3RDJGQjE5MTlCM0E5
MDBFQ0RBMTYgLyogcGFyc2VyLnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzExODdDRTBBOTAwNzgw
RDg2IC8qIHBhcnNlci5weSAqLzsgfTsKKwkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFF1
aWNrTG9va1RodW1ibmFpbExvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVt
Ym5haWxMb2FkZXIubW0gKi87IH07CiAJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEwRUM2MDExMjRBOUYyQzAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
LmggKi87IH07CiAJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
MEVDNkJFMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsK
IAkJMUEwRUM3NUUxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM3NUMxMjRCQzdC
MjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oICovOyB9OwpAQCAtMzc5LDYgKzM4MCw3
IEBACiAJCTFBRTQ5ODc4MTFGRjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU0OTg3NjExRkY3RkFBMDA0
OEI0NjQgLyogSlNOUE9iamVjdC5oICovOyB9OwogCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQg
LyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFFNDlBNDcxMUZGQThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCAqLzsgfTsKIAkJ
MUFFNTJGOTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTUyRjk0MTky
MDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFFRTU3MjUyNDA5RjE0MjAw
MjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1
aWNrTG9va1RodW1ibmFpbExvYWRlci5oICovOyB9OwogCQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5
RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUVGQ0MxMDExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3Jl
LmggKi87IH07CiAJCTFBRUZEMjc5MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGRDI3ODEx
RDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5oICovOyB9OwogCQkxQUVGRDJGNzExRDE4
MDdCMDA4MjE5RDMgLyogQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVu
dENvZGVycy5oICovOyB9OwpAQCAtMjY1MSw2ICsyNjUzLDggQEAKIAkJMUFFNTJGOTMxOTIwMUY2
QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFFNUI3RjkxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5NYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzIzMjQwOUYxNDIwMDIwMDVE
NiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29r
VGh1bWJuYWlsTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzI0
MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFFRkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFRkNDMTExMUQwMUY5NjAwODIxOUQzIC8q
IFBsdWdpbkluZm9TdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbHVnaW5JbmZvU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVG
Q0NCQzExRDAyQzVFMDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luSW5mb1N0b3JlTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg4Myw2ICs4ODg3LDggQEAKIAkJCQk4MzA0OEFF
NTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAogCQkJCTQ2
ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8sCiAJ
CQkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8s
CisJCQkJMUFFRTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRl
ci5oICovLAorCQkJCTFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5h
aWxMb2FkZXIubW0gKi8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKQEAgLTEwOTI1LDYgKzEwOTMxLDcgQEAKIAkJCQk4NkU2
N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50
aW5lU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUVFNTcyNTI0MDlGMTQyMDAyMDA1RDYgLyog
UXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIy
QjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIw
MDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjY2MCw2ICsxMjY2Nyw3IEBACiAJCQkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8q
IFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTRDMzFCMjEyRjRE
QTYwMDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Qy
ODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTFBMEMyMjVFMjQzNTc1Q0QwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVt
Ym5haWxMb2FkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3
NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggZWU4YTU2MWI1NzZmNTRiNjhjMWFkMDA3MzkzYTQ3MWQ1Mjc5MGIzMC4uMGM0MDM2ZWYxMGFi
NjQ3NTE1NDE5OWE2Zjg1ZGY5NjdjYWNjNDlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY4MjksNiArNjgyOSwxNCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxi
YWNrKGNhbGxiYWNrSUQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiBxbFRodW1ibmFpbEhhbmRsZSkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNo
bWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gdGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFuZGxlLmlzTnVs
bCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUpIDogbnVsbHB0
cikKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZVRodW1ibmFpbCh0aHVtYm5haWwtPmNy
ZWF0ZUltYWdlKCkpOworICAgIH0KK30KKwogUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVudD4g
V2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2htZW50IGVsZW1l
bnRzIGluIHN1YmZyYW1lcyB0b28gYXMgd2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkMGVkOWMwMDc5ZmU1YTg0ZmVjMWVmMTQ2Zjk4ZjY5YjJm
NWViYmM3Li5kZjE4NzlmNDc2NTVlY2Q0ZTNmN2ZjMGI5MzM0NjVjNWZkMjBmMWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSAiU2hhcmVTaGVldENhbGxiYWNrSUQuaCIKKyNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRyYW5zYWN0aW9uSUQuaCIKQEAgLTEy
MDcsNiArMTIwOCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+
JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1
bWJuYWlsSGFuZGxlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggMDc2YzFmYWYyZTQ0YzBjNzdiOTQ5YmU5ZWI3OTNkMjZiMzVhMGY2Mi4u
YTE3MTZiMjliN2FlMGNmOWMwMDg2YjU0NDc4MjY2MzY2OTczY2U3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01
NTgsNiArNTU4LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVu
dFR5cGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5nSW1hZ2VEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397035</attachid>
            <date>2020-04-20 16:28:23 -0700</date>
            <delta_ts>2020-04-20 17:03:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208891-20200420192821.patch</filename>
            <type>text/plain</type>
            <size>40173</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyYWQ5MmI0OTIzNDRj
ZWIzZDBkZGU3ZDczYjc1M2UxZjliMWZmOC4uNmMwMjg2MWIzM2MxMmRlMDg0NmM1Y2FjNWU3OTll
YTU5NzM1ODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAzLTEwICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFdLMiBRdWlj
a2xvb2sgZm9yIGF0dGFjaG1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBBZGRlZCB0byBIVE1MQXR0YWNobWVudEVsZW1lbnQgdG8gaGF2ZSBtZW1iZXIg
aW1hZ2UgcmVwcmVzZW50aW5nCisgICAgICAgIFF1aWNrTG9vayB0aHVtYm5haWwuIEFkZGVkIGNv
ZGUgdG8gcmVuZGVyIHRoaXMgaW1hZ2Ugb24gYm90aCBpT1MgYW5kIE1hYy4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIFRlc3Qgd2lsbCBiZSBhZGRlZCBhZnRlciBhZGRpdGlvbnMgdG8gdGVzdCBp
bmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJu
YWlsUmVwcmVzZW50YXRpb24pOgorICAgICAgICBBbGxvdyBzZXR0aW5nIG9mIHRodW1ibmFpbCBt
ZW1iZXIuCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIEFkZGVkIHJlbmRlcmluZyBv
ZiBpbWFnZSBtZW1iZXIgb2YgYXR0YWNobWVudCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OnBhaW50QXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisKIDIwMjAt
MDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTZW5kaW5n
IGJlYWNvbnMgd2hlbiBGZXRjaCBLZWVwQWxpdmUgZmVhdHVyZSBpcyBkaXNhYmxlZCBjcmFzaGVz
IHRoZSBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2Y2IwZTNlMDU5ZjgwMDQyMTdhNDFjNDhhMzg4
OGRjOTEwMTY4OGYuLjdmZjZhNGNkMDM5YjhlZWQwNzQ3MDZhYjZjMTJlZGUzYTVkZTkwZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDMtMTAgIE5pa29zIE1vdWNodGFyaXMgIDxu
bW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgV0syIFF1aWNrbG9vayBmb3IgYXR0YWNo
bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFsbG93
IGF0dGFjaG1lbnQgZWxlbWVudHMgdG8gcmVuZGVyIFF1aWNrTG9vayB0aHVtYm5haWwgZ2VuZXJh
dGVkCisgICAgICAgIGZyb20gY29udGVudHMgb2YgdGhlIGZpbGUgYXMgaXRzIGljb24sIHJhdGhl
ciB0aGFuIHRoZSBkZWZhdWx0CisgICAgICAgIGljb25zIGFzc29jaWF0ZWQgd2l0aCBlYWNoIG1p
bWUgdHlwZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZzoKKyAg
ICAgICAgTGluayBRdWlja0xvb2sgdGh1bWJuYWlsaW5nIGZyYW1ld29yay4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50
V2l0aEZpbGVXcmFwcGVyOmNvbnRlbnRUeXBlOmNvbXBsZXRpb246XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICBDcmVhdGUgdGh1bWJu
YWlsIHJlcXVlc3QgYW5kIGFkZCB0byBxdWV1ZS4KKyAgICAgICAgKFdlYktpdDo6Y29udmVydE5T
SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRVSUltYWdlVG9CaXRtYXAp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1bWJuYWlsRm9yR2VuZXJh
dGlvblJlcXVlc3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFFMVGh1
bWJuYWlsRm9yRmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dFFMVGh1bWJuYWlsRm9yQXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1FMVGh1bWJu
YWlsTG9hZC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUUxUaHVtYm5haWxMb2FkLm1t
OiBBZGRlZC4KKyAgICAgICAgQWRkIGNvZGUgdG8gcmVxdWVzdCB0aHVtYm5haWwgZm9yIGZpbGUg
ZGF0YS4KKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciBpbml0XSk6CisgICAg
ICAgICgrW1dLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAg
ICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaW5pdFdpdGhBdHRhY2htZW50OmlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGluaXRXaXRo
VVJMOmlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9u
IHN0YXJ0XSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGlzQXN5bmNo
cm9ub3VzXSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIGlzRXhlY3V0
aW5nXSk6CisgICAgICAgICgtW1dLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHNldEV4ZWN1dGlu
ZzpdKToKKyAgICAgICAgKC1bV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gaXNGaW5pc2hlZF0p
OgorICAgICAgICAoLVtXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBzZXRGaW5pc2hlZDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbik6CisgICAgICAgIFNldCB0
aHVtYm5haWwgb2YgYXR0YWNobWVudCBlbGVtZW50CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgVGh1bWJuYWlsIHJlcXVlc3QgbWVzc2FnZS4KKwogMjAyMC0wNC0y
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlbmRpbmcgYmVh
Y29ucyB3aGVuIEZldGNoIEtlZXBBbGl2ZSBmZWF0dXJlIGlzIGRpc2FibGVkIGNyYXNoZXMgdGhl
IFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggY2YzNmUwOWJkOTcyNWVlZDgwOGQ3
ZTNhODU3ZTRkYmM3OTdjOTQ3Ni4uYWJiNzQ1OTJmYjAyNDVmZTBlMWNmNzIzZWQ2MGI3YTEyYjRm
MjZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTY3NywzICs2NzcsNyBAQAogI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwKSB8
fCAoUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDE0MDAwMCkKICNkZWZpbmUgSEFWRV9NRURJQV9VU0FHRV9GUkFNRVdPUksgMQogI2Vu
ZGlmCisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNkZWZpbmUgSEFWRV9RVUlD
S0xPT0tfVEhVTUJOQUlMSU5HIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IGJkYWQ5YTAwNTQyOGYxNDdhODE1ZWNlMDNlN2Mz
OWEwN2I4OWEyZDUuLjNhMTFkOTIwYjA3ODBlZGNkNzY0YjE5YTA0YzNhZmUwOWU5MjZjYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0
OSw2ICsyNDksMTQgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2lu
Z0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBob3N0RWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpLCBtaW1lVHlwZSkpKTsKIH0KIAordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0
ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpCit7CisgICAgbV90aHVt
Ym5haWwgPSB0aHVtYm5haWw7CisgICAgCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IGE5YmIy
NDc1NzU1YTI4YWMyZDMxNzk2NDZhYjhlM2QxYTkyZmJjZTUuLmQyYzY2NjU3ZDI1ZTQ4MGM2YjM3
YTA5MDgyOTAwNDU5YjhjNTg3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaApAQCAtMzMsNyArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OworY2xhc3MgSW1hZ2U7CiBjbGFzcyBS
ZW5kZXJBdHRhY2htZW50OworY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewpAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoT3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRo
dW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBA
IC02Nyw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXR0YWNobWVudFRpdGxlRm9yRGlz
cGxheSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0OwogICAgIFN0
cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwotCisgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5h
aWwoKSBjb25zdCB7IHJldHVybiBtX3RodW1ibmFpbDsgfQogICAgIFJlbmRlckF0dGFjaG1lbnQq
IHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC04Nyw2ICs5MCw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOworICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
aW5kZXggMjc1NDhiMTczYjc2MzBjYzM0ZGFiODQzMDJkYjA4YmNkYmU4ODRjYi4uYWE5ZTczMzFj
Y2VlYTQxMTcyMzFhMDljOTEyYTE5Y2U4NzE0YWYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTYxOSw2ICsxNjE5LDcgQEAgc3RydWN0IFJlbmRl
ckF0dGFjaG1lbnRJbmZvIHsKICAgICBmbG9hdCBwcm9ncmVzczsKIAogICAgIFJldGFpblB0cjxV
SUltYWdlPiBpY29uOworICAgIFJlZlB0cjxJbWFnZT4gdGh1bWJuYWlsSWNvbjsKIAogICAgIGlu
dCBiYXNlbGluZSB7IDAgfTsKIApAQCAtMTgwMyw4ICsxODA0LDExIEBAIFJlbmRlckF0dGFjaG1l
bnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRh
Y2htZW50KQogICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykgewogICAg
ICAgICBGbG9hdFNpemUgaWNvblNpemU7CiAgICAgICAgIGljb24gPSBpY29uRm9yQXR0YWNobWVu
dChhdHRhY2htZW50LCBpY29uU2l6ZSk7Ci0gICAgICAgIGlmIChpY29uKSB7Ci0gICAgICAgICAg
ICBpY29uUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KChhdHRhY2htZW50UmVjdC53aWR0aCgp
IC8gMikgLSAoaWNvblNpemUud2lkdGgoKSAvIDIpLCAwKSwgaWNvblNpemUpOworICAgICAgICB0
aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbCgp
OworICAgICAgICAKKyAgICAgICAgaWYgKHRodW1ibmFpbEljb24gfHwgaWNvbikgeworICAgICAg
ICAgICAgYXV0byB2aXNpYmxlSWNvblNpemUgPSB0aHVtYm5haWxJY29uID8gRmxvYXRTaXplKGF0
dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNobWVudEljb25TaXplKSA6IGljb25TaXplOworICAgICAg
ICAgICAgaWNvblJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgoYXR0YWNobWVudFJlY3Qud2lk
dGgoKSAvIDIpIC0gKHZpc2libGVJY29uU2l6ZS53aWR0aCgpIC8gMiksIDApLCB2aXNpYmxlSWNv
blNpemUpOwogICAgICAgICAgICAgeU9mZnNldCArPSBpY29uUmVjdC5oZWlnaHQoKSArIGF0dGFj
aG1lbnRJdGVtTWFyZ2luOwogICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC0xODM5LDExICsxODQz
LDEzIEBAIGludCBSZW5kZXJUaGVtZUlPUzo6YXR0YWNobWVudEJhc2VsaW5lKGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpIGNvbnN0CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYg
aW5mbykKIHsKLSAgICBpZiAoIWluZm8uaWNvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOwot
ICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25JbWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7Cisg
ICAgUmVmUHRyPEltYWdlPiBpY29uSW1hZ2U7CisgICAgaWYgKGluZm8udGh1bWJuYWlsSWNvbikK
KyAgICAgICAgaWNvbkltYWdlID0gaW5mby50aHVtYm5haWxJY29uOworICAgIGVsc2UgaWYgKGlu
Zm8uaWNvbikKKyAgICAgICAgaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5p
Y29uIENHSW1hZ2VdKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBp
bmZvLmljb25SZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQpAQCAtMTkx
OSw3ICsxOTI1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRBdHRhY2htZW50KGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW4KIAogICAgIGlmIChpbmZvLmhh
c1Byb2dyZXNzKQogICAgICAgICBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb250ZXh0LCBpbmZv
KTsKLSAgICBlbHNlIGlmIChpbmZvLmljb24pCisgICAgZWxzZSBpZiAoaW5mby5pY29uIHx8IGlu
Zm8udGh1bWJuYWlsSWNvbikKICAgICAgICAgcGFpbnRBdHRhY2htZW50SWNvbihjb250ZXh0LCBp
bmZvKTsKIAogICAgIHBhaW50QXR0YWNobWVudFRleHQoY29udGV4dCwgaW5mbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggY2JhMTYxZTc0OTYwNGU2
YjRkZDY4ZjA0NDVhMDAxZjg4NjQxOWQ5Zi4uYzEwOTkyN2U2NzViOTFhYWY5ZmEyMzY2MjExMjgx
ZmI5ZmZiYTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtMjc3Nyw2ICsyNzc3LDEwIEBAIHN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFj
aG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIAogc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKKyAg
ICBpZiAoYXV0byB0aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LnRodW1ibmFpbCgpKSB7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCp0aHVtYm5haWxJY29u
LCBsYXlvdXQuaWNvblJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGF1dG8gaWNv
biA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQpOwogICAgIGlmICghaWNvbikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJL
aXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZp
ZwppbmRleCAwODRhNTZlNDE0ZGU4MmI4NmMwYTY2ZmZhOWE3YzQxNGY0YjJhZDRiLi5jODMwMGFi
MTRhNzI3Mzk0MmQ1ODBhY2Q1ZGU3ZWMxZmY1M2QzZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0Nv
bmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTI0LDcgKzEyNCwxMyBAQCBXS19BVVRI
S0lUX0xERkxBR1NfSU9TX1NJTkNFXzEzID0gLWZyYW1ld29yayBBdXRoS2l0OwogV0tfQVVUSEtJ
VF9MREZMQUdTX21hY29zeCA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19NQUNPU18xMDE1KSk7
CiBXS19BVVRIS0lUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTAxNSA9IC1mcmFtZXdvcmsgQXV0aEtp
dDsKIAotRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBD
Rk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAt
ZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91
bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIElP
U3VyZmFjZSAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklM
SVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfUlVOTklOR0JPQVJEX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQVVUSEtJ
VF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUFJFRElDVElPTl9MREZM
QUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19M
REZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykg
JChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xE
RkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU0FG
RV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZMQUdTKSAkKFdL
X1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19XRUJJTlNQ
RUNUT1JVSV9MREZMQUdTKTsKK1dLX1FVSUNLTE9PS19USFVNQk5BSUxJTkdfTERGTEFHUyA9ICQo
V0tfUVVJQ0tMT09LX1RIVU1CTkFJTElOR19MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwor
V0tfUVVJQ0tMT09LX1RIVU1CTkFJTElOR19MREZMQUdTX21hY29zeCA9ICQoV0tfUVVJQ0tMT09L
X1RIVU1CTkFJTElOR19MREZMQUdTJChXS19NQUNPU18xMDE1KSk7CitXS19RVUlDS0xPT0tfVEhV
TUJOQUlMSU5HX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTAxNSA9IC1mcmFtZXdvcmsgUXVpY2tMb29r
VGh1bWJuYWlsaW5nOworV0tfUVVJQ0tMT09LX1RIVU1CTkFJTElOR19MREZMQUdTX2lwaG9uZW9z
ID0gLWZyYW1ld29yayBRdWlja0xvb2tUaHVtYm5haWxpbmc7CitXS19RVUlDS0xPT0tfVEhVTUJO
QUlMSU5HX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBRdWlja0xvb2tUaHVt
Ym5haWxpbmc7CisKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpjIC1mcmFt
ZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUZvdW5k
YXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3
b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l
d29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWZyYW1ld29yayBRdWlja0xv
b2tUaHVtYm5haWxpbmcgLWxuZXR3b3JrICQoV0tfQUNDRVNTSUJJTElUWV9MREZMQUdTKSAkKFdL
X0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VSVElPTl9TRVJWSUNFU19MREZMQUdTKSAkKFdLX1JV
Tk5JTkdCT0FSRF9TRVJWSUNFU19MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19D
QVJCT05fTERGTEFHUykgJChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NF
UlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19MSUJT
QU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVf
U0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5H
TF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NBRkVfQlJPV1NJTkdfTERGTEFH
UykgJChXS19TRUNVUklUWV9JTlRFUkZBQ0VfTERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAk
KFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfV0VCSU5TUEVDVE9SVUlfTERGTEFHUykg
JChXS19RVUlDS0xPT0tfVEhVTUJOQUlMSU5HX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMrKyBz
dGFuZGFyZCBsaWJyYXJ5IGJhc2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3IgbmV3LCBkZWxldGUg
YW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMg
d2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5YmFk
X2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFQzJFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVF
RWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2
TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBF
UlM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdX
ZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0
XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJD
b3JlMTJQb2xpY3lBY3Rpb25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQyRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5
QWN0aW9uRUVFYVNFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3Qz
X18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRSAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNiYXNpY19vc3RyZWFt
SWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNfXzExOGJhc2ljX3N0
cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18x
MWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVFZOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJ
Y0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05T
dDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2Nh
dG9ySWNFRUVFOF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNmIxMWIzODQ0MTVhYWI1MzI3
MWI0NjAxNDFiNTU5YTVmOGEzNzYxNC4uOTlkZDgyYzgxYTUzYTQ5NWY2Njc3OWZhMTBlYjlkMzhk
MmRmYWIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKICNp
bXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisj
aW1wb3J0ICJRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKQEAgLTIx
NjAsNyArMjE2MSw5IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyCiAgICAgICAgIGlmIChjYXB0
dXJlZEhhbmRsZXIpCiAgICAgICAgICAgICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKICAgICB9KTsKLQorI2lmIEhBVkUoUVVJQ0tM
T09LX1RIVU1CTkFJTElORykKKyAgICBfcGFnZS0+cmVxdWVzdFRodW1ibmFpbFdpdGhGaWxlV3Jh
cHBlcihmaWxlV3JhcHBlciwgaWRlbnRpZmllcik7CisjZW5kaWYKICAgICByZXR1cm4gd3JhcHBl
cihhdHRhY2htZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggM2NhZTE5ZTM0
M2NiMGJmMzNmZmZjMTE0ODFjODA3Yjg2NDZlNDQ2Yi4uOTNiZjgwMGNiMjRjOGNlZjU5YzRmNDJi
ODkzMTkxZDc0MWViZmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkluc2Vy
dFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGFn
ZUNsaWVudC5oIgorI2ltcG9ydCAiUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmgiCiAjaW1wb3J0
ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNp
bXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAgLTM4Nyw2ICszODgsNjggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihXZWJDb3Jl
OjpNZWRpYVNlc3Npb25JZGVudGlmaWUKIH0KICNlbmRpZgogCisjaWYgSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQorI2lmIFBMQVRGT1JNKE1BQykKK3VzaW5nIFBsYXRmb3JtSW1hZ2UgPSBO
U0ltYWdlKjsKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCit1c2luZyBQbGF0Zm9ybUltYWdl
ID0gVUlJbWFnZSo7CisjZW5kaWYKKworc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcD4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChQbGF0Zm9ybUltYWdlIGltYWdlLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENv
bmZpZ3VyYXRpb24pOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBVSUdyYXBoaWNzUHVzaENvbnRleHQoZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgW2ltYWdlIGRyYXdJblJlY3Q6
Q0dSZWN0TWFrZSgwLCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5o
ZWlnaHQoKSldOworICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7CisjZWxpZiBQTEFURk9STShN
QUMpCisgICAgYXV0byBzYXZlZENvbnRleHQgPSBhZG9wdE5TKFtOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF0pOworCisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoQ0dDb250ZXh0OmdyYXBo
aWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpZRVNdXTsKKyAgICBbaW1hZ2Ug
ZHJhd0luUmVjdDpOU01ha2VSZWN0KDAsIDAsIGJpdG1hcC0+c2l6ZSgpLndpZHRoKCksIGJpdG1h
cC0+c2l6ZSgpLmhlaWdodCgpKSBmcm9tUmVjdDpOU1plcm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBv
c2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxIHJlc3BlY3RGbGlwcGVkOllFUyBo
aW50czpuaWxdOworCisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OnNh
dmVkQ29udGV4dC5nZXQoKV07CisjZW5kaWYKKyAgICByZXR1cm4gYml0bWFwOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRodW1ibmFp
bExvYWRPcGVyYXRpb24gKm9wZXJhdGlvbikKK3sKKyAgICBbb3BlcmF0aW9uIHNldENvbXBsZXRp
b25CbG9jazpeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gW29wZXJhdGlvbiBpZGVudGlm
aWVyXTsKKyAgICAgICAgICAgIGF1dG8gY29udmVydGVkSW1hZ2UgPSBjb252ZXJ0UGxhdGZvcm1J
bWFnZVRvQml0bWFwKFtvcGVyYXRpb24gdGh1bWJuYWlsXSwgV2ViQ29yZTo6SW50U2l6ZSg0MDAs
IDQwMCkpOworICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWRJbWFnZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB0aGlzLT51cGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlm
aWVyLCBjb252ZXJ0ZWRJbWFnZSk7CisgICAgICAgIH0pOworICAgIH1dOworICAgICAgICAKKyAg
ICBbW1dLUUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgc2hhcmVkSW5zdGFuY2VdLnFsVGh1bWJuYWls
R2VuZXJhdGlvblF1ZXVlIGFkZE9wZXJhdGlvbjpvcGVyYXRpb25dOworfQorCisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIq
IGZpbGVXcmFwcGVyLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBvcGVy
YXRpb24gPSBhZG9wdE5TKFtbV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gYWxsb2NdIGluaXRX
aXRoQXR0YWNobWVudDpmaWxlV3JhcHBlciBpZGVudGlmaWVyOmlkZW50aWZpZXJdKTsKKyAgICBy
ZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihvcGVyYXRpb24uZ2V0KCkpOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBhdXRvIG9wZXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiBhbGxvY10gaW5pdFdpdGhVUkw6
ZmlsZVBhdGggaWRlbnRpZmllcjppZGVudGlmaWVyXSk7CisgICAgcmVxdWVzdFRodW1ibmFpbFdp
dGhPcGVyYXRpb24ob3BlcmF0aW9uLmdldCgpKTsKKyAgICAKK30KKworI2VuZGlmCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yYTNjOGZkZGM1MmJhOWUxMDdkOGVjZjM2MTQ2MDA5YTI4MjBlODczCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUXVpY2tMb29rVGh1bWJuYWlsTG9h
ZGVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQorCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKK0BjbGFzcyBVSUltYWdlOworI2VuZGlmCisKK0BpbnRlcmZhY2Ug
V0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkd3JpdGUsIHJldGFpbikgTlNPcGVyYXRpb25RdWV1ZSogcWxUaHVtYm5haWxHZW5l
cmF0aW9uUXVldWU7CistIChpZClpbml0OworKyAoV0tRTFRodW1ibmFpbFF1ZXVlTWFuYWdlciAq
KXNoYXJlZEluc3RhbmNlOworQGVuZAorCitAaW50ZXJmYWNlIFdLUUxUaHVtYm5haWxMb2FkT3Bl
cmF0aW9uIDogTlNPcGVyYXRpb24KKworQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzQXN5
bmNocm9ub3VzKSBCT09MIGFzeW5jaHJvbm91czsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRl
cj1pc0V4ZWN1dGluZykgQk9PTCBleGVjdXRpbmc7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0
ZXI9aXNGaW5pc2hlZCkgQk9PTCBmaW5pc2hlZDsKKworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIE5TU3RyaW5nICpjb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNo
b3VsZFdyaXRlOworCistIChpZClpbml0V2l0aEF0dGFjaG1lbnQ6KE5TRmlsZVdyYXBwZXIgKilm
aWxlV3JhcHBlciBpZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXI7CistIChpZClpbml0
V2l0aFVSTDooTlNTdHJpbmcgKilmaWxlVVJMIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRp
ZmllcjsKKy0gKE5TU3RyaW5nICopaWRlbnRpZmllcjsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorLShVSUltYWdlICopdGh1bWJuYWlsOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorLShO
U0ltYWdlICopdGh1bWJuYWlsOworI2VuZGlmCisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9RdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzQ1ZjU1OTk5MDM0YTY4OTMxNmJkYTJmZGViMjBmMTRjOWI3YjY3MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1F1aWNrTG9va1RodW1ibmFpbExvYWRl
ci5tbQpAQCAtMCwwICsxLDE5MCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlF1aWNrTG9va1RodW1i
bmFpbExvYWRlci5oIgorCisjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQorCisjaW1w
b3J0IDxRdWlja0xvb2tUaHVtYm5haWxpbmcvUUxUaHVtYm5haWxHZW5lcmF0b3IuaD4KKyNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1FMVGh1bWJuYWlsUXVl
dWVNYW5hZ2VyIAorCistIChpZClpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
ICBpZiAoc2VsZikKKyAgICAgICAgX3FsVGh1bWJuYWlsR2VuZXJhdGlvblF1ZXVlID0gW1tOU09w
ZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoV0tR
TFRodW1ibmFpbFF1ZXVlTWFuYWdlciAqKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFdL
UUxUaHVtYm5haWxRdWV1ZU1hbmFnZXIgKnNoYXJlZEluc3RhbmNlID0gW1tXS1FMVGh1bWJuYWls
UXVldWVNYW5hZ2VyIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7Cit9
CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uIHsK
KyAgICBSZXRhaW5QdHI8TlNVUkw+IF9maWxlUGF0aDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
U3RyaW5nPiBfaWRlbnRpZmllcjsKKyAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gX2ZpbGVX
cmFwcGVyOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX3RodW1i
bmFpbDsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgUmV0YWluUHRyPFVJ
SW1hZ2U+IF90aHVtYm5haWw7CisjZW5kaWYKK30KKworLSAoaWQpaW5pdFdpdGhBdHRhY2htZW50
OihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVu
dGlmaWVyCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2ZpbGVX
cmFwcGVyID0gZmlsZVdyYXBwZXI7CisgICAgICAgIF9pZGVudGlmaWVyID0gYWRvcHROUyhbaWRl
bnRpZmllciBjb3B5XSk7CisgICAgICAgIF9zaG91bGRXcml0ZSA9IFlFUzsKKyAgICB9CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWluaXRXaXRoVVJMOihOU1N0cmluZyAqKWZpbGVVUkwg
aWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pIHsKKyAgICAgICAgX2lkZW50aWZpZXIgPSBhZG9wdE5TKFtpZGVudGlmaWVyIGNv
cHldKTsKKyAgICAgICAgX2ZpbGVQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlVVJM
XTsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICBz
ZWxmLmV4ZWN1dGluZyA9IFlFUzsKKyAgICAKKyAgICBpZiAoX3Nob3VsZFdyaXRlKSB7CisgICAg
ICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJRTFRlbXBGaWxlRGF0YSIpOworICAgIAorICAgICAgICBOU1N0cmlu
ZyAqZmlsZVBhdGggPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpbX2ZpbGVXcmFwcGVyIHByZWZlcnJlZEZpbGVuYW1lXV07CisgICAgICAgIE5TRmls
ZVdyYXBwZXJXcml0aW5nT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICAgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7CisgICAgICAgIAorICAgICAgICBhdXRvIGZpbGVVUkxQYXRoID0gYWRvcHROUyhb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVQYXRoXSk7CisKKyAgICAgICAgW19maWxlV3JhcHBl
ciB3cml0ZVRvVVJMOmZpbGVVUkxQYXRoLmdldCgpIG9wdGlvbnM6b3B0aW9ucyBvcmlnaW5hbENv
bnRlbnRzVVJMOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBfZmlsZVBhdGggPSBXVEZNb3Zl
KGZpbGVVUkxQYXRoKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFFMVGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3QgKnJlcSA9IFtbUUxUaHVt
Ym5haWxHZW5lcmF0aW9uUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhGaWxlQXRVUkw6X2ZpbGVQYXRo
LmdldCgpIHNpemU6Q0dTaXplTWFrZSg0MDAsIDQwMCkgc2NhbGU6MSByZXByZXNlbnRhdGlvblR5
cGVzOlFMVGh1bWJuYWlsR2VuZXJhdGlvblJlcXVlc3RSZXByZXNlbnRhdGlvblR5cGVBbGxdOwor
ICAgIHJlcS5pY29uTW9kZSA9IFlFUzsKKyAgICAKKyAgICBbW1FMVGh1bWJuYWlsR2VuZXJhdG9y
IHNoYXJlZEdlbmVyYXRvcl0gZ2VuZXJhdGVCZXN0UmVwcmVzZW50YXRpb25Gb3JSZXF1ZXN0OnJl
cSBjb21wbGV0aW9uSGFuZGxlcjpeKFFMVGh1bWJuYWlsUmVwcmVzZW50YXRpb24gKnRodW1ibmFp
bCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoX3RodW1ibmFpbCkKKyAgICAgICAgICAgIHJldHVybjsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgICAgIF90aHVtYm5haWwgPSB0aHVtYm5haWwuTlNJbWFnZTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIF90aHVtYm5haWwgPSB0aHVt
Ym5haWwuVUlJbWFnZTsKKyNlbmRpZgorICAgICAgICBpZiAoX3Nob3VsZFdyaXRlKQorICAgICAg
ICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6X2Zp
bGVQYXRoLmdldCgpIGVycm9yOm51bGxwdHJdOworCisgICAgICAgIHNlbGYuZXhlY3V0aW5nID0g
Tk87CisgICAgICAgIHNlbGYuZmluaXNoZWQgPSBZRVM7CisgICAgfV07Cit9CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorLSAoVUlJbWFnZSAqKXRodW1ibmFpbAoreworICAgIHJldHVybiBf
dGh1bWJuYWlsLmdldCgpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCistIChOU0lt
YWdlICopdGh1bWJuYWlsCit7CisgICAgcmV0dXJuIF90aHVtYm5haWwuZ2V0KCk7Cit9CisjZW5k
aWYKKworLSAoTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgcmV0dXJuIF9pZGVudGlmaWVy
LmdldCgpOworfQorCistIChCT09MKWlzQXN5bmNocm9ub3VzCit7CisgICAgcmV0dXJuIFlFUzsK
K30KKworQHN5bnRoZXNpemUgZXhlY3V0aW5nPV9leGVjdXRpbmc7CisKKy0gKEJPT0wpaXNFeGVj
dXRpbmcKK3sKKyAgICBAc3luY2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgcmV0dXJuIF9leGVj
dXRpbmc7CisgICAgfQorfQorCistICh2b2lkKXNldEV4ZWN1dGluZzooQk9PTClleGVjdXRpbmcK
K3sKKyAgICBAc3luY2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgaWYgKGV4ZWN1dGluZyAhPSBf
ZXhlY3V0aW5nKSB7CisgICAgICAgICAgICBbc2VsZiB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJp
c0V4ZWN1dGluZyJdOworICAgICAgICAgICAgX2V4ZWN1dGluZyA9IGV4ZWN1dGluZzsKKyAgICAg
ICAgICAgIFtzZWxmIGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiaXNFeGVjdXRpbmciXTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworQHN5bnRoZXNpemUgZmluaXNoZWQ9X2ZpbmlzaGVkOworCistIChC
T09MKWlzRmluaXNoZWQKK3sKKyAgICBAc3luY2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgcmV0
dXJuIF9maW5pc2hlZDsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2V0RmluaXNoZWQ6KEJPT0wpZmlu
aXNoZWQKK3sKKyAgICBAc3luY2hyb25pemVkKHNlbGYpIHsKKyAgICAgICAgaWYgKGZpbmlzaGVk
ICE9IF9maW5pc2hlZCkgeworICAgICAgICAgICAgW3NlbGYgd2lsbENoYW5nZVZhbHVlRm9yS2V5
OkAiaXNGaW5pc2hlZCJdOworICAgICAgICAgICAgX2ZpbmlzaGVkID0gZmluaXNoZWQ7CisgICAg
ICAgICAgICBbc2VsZiBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAImlzRmluaXNoZWQiXTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGMzYTNlZDRmNzdiNTFiMjFkYWQ1MmMxNmIwMjMwZjE1NGQw
NGM2MzguLmZjMGNhNmZlOWIwYWExNDc2NjQ1NTgxZjcwNzQ5MzA0NDBlYWNiMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQ5NSw2ICs5NDk1LDIwIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6
OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1l
bnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNo
bWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9
CiAKKyNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCit2b2lkIFdlYlBhZ2VQcm94eTo6
dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYgYml0bWFwKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKKyAgICBpZiAoYml0bWFwKQorICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZSho
YW5kbGUpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudElj
b24oaWRlbnRpZmllciwgaGFuZGxlKSk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsK
ICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcmVmZXJlbmNlcy0+YXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkKCkpOwpAQCAtOTUyMiw4ICs5NTM2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYg
aWRlbnRpCiAgICAgYXR0YWNobWVudC0+c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOwogICAg
IGF0dGFjaG1lbnQtPnNldEZpbGVQYXRoKGZpbGVQYXRoKTsKICAgICBtX2F0dGFjaG1lbnRJZGVu
dGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChpZGVudGlmaWVyLCBhdHRhY2htZW50LmNvcHlSZWYo
KSk7Ci0KICAgICBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChXVEZNb3ZlKGF0dGFjaG1lbnQp
LCBmaWxlUGF0aCk7CisjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQorICAgIHJlcXVl
c3RUaHVtYm5haWxXaXRoUGF0aChpZGVudGlmaWVyLCBmaWxlUGF0aCk7CisjZW5kaWYKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBmNmMyMzJiOTBhMmY3M2M0NjY1ZmE4YjBhZmJiMjI2ZDZiYjU1ZWEyLi4xNTQzNTVkYmM4NDRk
YWQxZWIwYWIwYjc1ZjE5Y2QyNzRmMDZiY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjAxLDYgKzIwMSw4IEBAIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3Jt
RGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB9CitPQkpD
X0NMQVNTIE5TRmlsZVdyYXBwZXI7CitPQkpDX0NMQVNTIFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0
aW9uOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKQEAgLTE1OTYsNyArMTU5OCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4m
Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIGRpZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFj
aG1lbnQmKTsKLQorI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKKyAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+Jik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFw
cGVyKE5TRmlsZVdyYXBwZXIqLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlcXVlc3RUaHVt
Ym5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uKik7CisjZW5kaWYK
ICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIDogYm9vbCB7
IE5vLCBZZXMgfTsKICAgICBTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyB3aWxsVXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50Jik7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGI3YTFjNDdjNDk1OWI1ZjRhZTBhM2Q3YmQzZmZiMDhiZjZlZWVlNGIuLmE5OThhY2E4NDhkZTlk
ZThmODUwZWM2ODA1Y2E2YjU2YjJjMjU0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY0LDYgKzE2NCw3IEBACiAJCTFBMDdEMkY5
MTkxOUIzQTkwMEVDREExNiAvKiBtZXNzYWdlcy5weSBpbiBDb3B5IE1lc3NhZ2UgR2VuZXJhdGlv
biBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA4NTZGMTg3
Q0UwQTkwMDc4MEQ4NiAvKiBtZXNzYWdlcy5weSAqLzsgfTsKIAkJMUEwN0QyRkExOTE5QjNBOTAw
RUNEQTE2IC8qIG1vZGVsLnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzAxODdDRTBBOTAwNzgwRDg2
IC8qIG1vZGVsLnB5ICovOyB9OwogCQkxQTA3RDJGQjE5MTlCM0E5MDBFQ0RBMTYgLyogcGFyc2Vy
LnB5IGluIENvcHkgTWVzc2FnZSBHZW5lcmF0aW9uIFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDMDg1NzExODdDRTBBOTAwNzgwRDg2IC8qIHBhcnNlci5weSAq
LzsgfTsKKwkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFF1aWNrTG9va1RodW1ibmFpbExv
YWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
RUU1NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gKi87
IH07CiAJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM2MDEx
MjRBOUYyQzAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTFBMEVD
NkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEVDNkJFMTI0QkJEOUIwMDdF
RjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUEwRUM3NUUxMjRCQzdC
MjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRUM3NUMxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdp
blByb2Nlc3NQcm94eS5oICovOyB9OwpAQCAtMzc5LDYgKzM4MCw3IEBACiAJCTFBRTQ5ODc4MTFG
RjdGQUEwMDQ4QjQ2NCAvKiBKU05QT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU0OTg3NjExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9iamVj
dC5oICovOyB9OwogCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFNDlBNDcxMUZG
QThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCAqLzsgfTsKIAkJMUFFNTJGOTgxOTIwMjY3MjAw
QTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFFRTU3MjUyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9v
a1RodW1ibmFpbExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFFRTU3MjMyNDA5RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExv
YWRlci5oICovOyB9OwogCQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVG
Q0MxMDExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggKi87IH07CiAJCTFBRUZE
Mjc5MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGRDI3ODExRDE2QzgxMDA4MjE5RDMgLyog
QXJndW1lbnRDb2Rlci5oICovOyB9OwogCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJn
dW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBRUZEMkY2MTFEMTgwN0IwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVycy5oICovOyB9OwpA
QCAtMjY2Myw2ICsyNjY1LDggQEAKIAkJMUFFNTJGOTMxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFNUI3RjkxMUU3
QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5NYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBRUU1NzIzMjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVt
Ym5haWxMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzI0MjQwOUYxNDIwMDIwMDVENiAv
KiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFF1aWNr
TG9va1RodW1ibmFpbExvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFF
RkNDMTAxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFFRkNDMTExMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVGQ0NCQzExRDAyQzVFMDA4MjE5
RDMgLyogUGx1Z2luSW5mb1N0b3JlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGx1Z2luSW5mb1N0b3JlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODkzMyw2ICs4OTM3LDggQEAKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIg
LyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAogCQkJCTQ2ODM1NjlCMjFFODFDQzcwMDZF
MjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJNDY4MzU2OUEyMUU4MUND
NzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8sCisJCQkJMUFFRTU3MjMyNDA5
RjE0MjAwMjAwNUQ2IC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5oICovLAorCQkJCTFBRUU1
NzI0MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0gKi8sCiAJ
CQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICov
LAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcu
aCAqLywKQEAgLTEwOTk5LDYgKzExMDA1LDcgQEAKIAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRB
QjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNB
NDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxQUVFNTcyNTI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tMb29rVGh1bWJuYWls
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyog
UmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEy
MjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTMyNyw3ICsxMTMz
NCw2IEBACiAJCQkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwRTQyNTE2OEI3QTI4MDA1N0U2NkEgLyog
V2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUUwOTM0MTg4NjFE
MzgwMEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0
aFJlcGx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyog
V2ViUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjFDQ0NBNjIzMTQ4NUFB
MDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTY4MSw2ICsxMTY4Nyw3IEBACiAJCQkJNUNBMjZEODEyMTdBQkQ1QjAwRjk3QTM1
IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3RTM3Nzkx
OEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE3RTM3NzUxOEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxMDkwOTk3MjNEQUNCRjIwMDNCMUU0QyAvKiBXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyV2l0aFJlcGx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0M5OUEzNjE4RUY3Q0JD
MDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0I0RTU0MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMDQxNTlDMjNDN0NDNzMwMDYwQTNFMiAvKiBXS1Njcm9sbFZpZXdNYWMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTI3MzgsNiArMTI3NDUsNyBAQAogCQkJCUMxNUNCQjM3MjNGMzdFQ0Iw
MDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDU0
QzMxQjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQTBDMjI1RTI0MzU3NUNEMDBFRDYxNEQgLyogUXVp
Y2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZG
MjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIwRjgyM0ZD
NzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGYwZDI4NmNhYzhlZDI5ZmRmYmNhY2E4NDI5NTdjYzY1OGFkZDFmYzUuLmUx
ZDhiMGIwYjdmMGYxNTNiZDZlOTY3ZmQwY2VhMDI5NGU0ZWZjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02ODQxLDYgKzY4NDEsMTQgQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0
YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVu
dCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAg
ICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHRodW1ibmFpbCA9ICFxbFRodW1ibmFpbEhh
bmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHFsVGh1bWJuYWlsSGFuZGxl
KSA6IG51bGxwdHIpCisgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVUaHVtYm5haWwodGh1
bWJuYWlsLT5jcmVhdGVJbWFnZSgpKTsKKyAgICB9Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNo
bWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMgdG9vIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjQ5ZTgyNTJiYTVmYjA3NDhhMDM2MWU2
YWNiMmM4YmI5NDE1ZDk1My4uMzBmMDIzNWU3OTBiMzZhOGQyOWExMGY5ZWYyNGJhMzU1MDUwZTA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlU2hlZXRDYWxsYmFja0lELmgiCisjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2FjdGlvbklE
LmgiCkBAIC0xMjE4LDYgKzEyMTksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFs
PHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVu
Y2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50
SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDdjMzQ4YTc3MjZhMzg2MmVhNWZiMzNiMDZlNDExNGM0
MDI1NWQ5MjMuLjAxOGM3ZTU1ZGNmYzIyYjZiNjc0YzgxODgxZjQzOWY3MDg5ODE3ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtNTYwLDYgKzU2MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3Ry
aW5nIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50
aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
</data>
<flag name="commit-queue"
          id="412461"
          type_id="3"
          status="+"
          setter="nmouchtaris"
    />
          </attachment>
      

    </bug>

</bugzilla>