<?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>226986</bug_id>
          
          <creation_ts>2021-06-14 13:26:06 -0700</creation_ts>
          <short_desc>Refactor MacOS keyboard scrolling and use KeyboardScroll struct</short_desc>
          <delta_ts>2021-06-28 17:39:28 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Estra">dana.estra</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769522</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-14 13:26:06 -0700</bug_when>
    <thetext>Renavigate MacOS keyboard scrolling and use KeyboardScroll struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769524</commentid>
    <comment_count>1</comment_count>
      <attachid>431359</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-14 13:30:51 -0700</bug_when>
    <thetext>Created attachment 431359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769529</commentid>
    <comment_count>2</comment_count>
      <attachid>431359</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-14 13:43:50 -0700</bug_when>
    <thetext>Comment on attachment 431359
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:4302
&gt; +    else if (event.keyIdentifier() == &quot;PageDown&quot;)
&gt; +        key = Key::PageDown;
&gt; +    else if (event.keyIdentifier() == &quot;PageUp&quot;)
&gt; +        key = Key::PageUp;

PageDown is not going to get to defaultArrowEventHandler, likely this all needs to be factored out and called from multiple places (some kind of &quot;maybe handle keyboard scroll&quot; function)

&gt; Source/WebCore/page/EventHandler.cpp:4344
&gt; +    WebCore::KeyboardScroll scroll;
&gt; +
&gt; +    scroll.offset = unitVector(direction).scaled(scrollDistance);
&gt; +    scroll.increment = increment;
&gt; +    scroll.direction = direction;
&gt; +    scroll.maximumVelocity = scroll.offset.scaled(this-&gt;parameters().maximumVelocityMultiplier);
&gt; +
&gt; +    scroll.force = scroll.maximumVelocity.scaled(this-&gt;parameters().springMass / this-&gt;parameters().timeToMaximumVelocity);

Maybe we can add KeyboardScroll in a second patch? First patch computes the bits but calls scrollRecursively directly, second patch introduces KeyboardScroll for the arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769534</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-14 13:51:10 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #2)
&gt; Comment on attachment 431359 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431359&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:4302
&gt; &gt; +    else if (event.keyIdentifier() == &quot;PageDown&quot;)
&gt; &gt; +        key = Key::PageDown;
&gt; &gt; +    else if (event.keyIdentifier() == &quot;PageUp&quot;)
&gt; &gt; +        key = Key::PageUp;
&gt; 
&gt; PageDown is not going to get to defaultArrowEventHandler, likely this all
&gt; needs to be factored out and called from multiple places (some kind of
&gt; &quot;maybe handle keyboard scroll&quot; function)

Also don&apos;t forget about the spacebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769537</commentid>
    <comment_count>4</comment_count>
      <attachid>431361</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-14 13:52:16 -0700</bug_when>
    <thetext>Created attachment 431361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769543</commentid>
    <comment_count>5</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-06-14 14:17:21 -0700</bug_when>
    <thetext>You&apos;ll need to add &apos;KeyboardScroll.h&apos; to the Xcode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769559</commentid>
    <comment_count>6</comment_count>
      <attachid>431361</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-14 14:56:57 -0700</bug_when>
    <thetext>Comment on attachment 431361
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Renavigate MacOS keyboard scrolling and use KeyboardScroll struct

What is &quot;Renavigate&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769838</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-15 09:48:51 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 431361 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431361&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Renavigate MacOS keyboard scrolling and use KeyboardScroll struct
&gt; 
&gt; What is &quot;Renavigate&quot;?

I couldn&apos;t think of a better word. I meant that I am changing the route through functions that is taken to make keyboard scrolling happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770810</commentid>
    <comment_count>8</comment_count>
      <attachid>431719</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-17 14:07:04 -0700</bug_when>
    <thetext>Created attachment 431719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770861</commentid>
    <comment_count>9</comment_count>
      <attachid>431719</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-17 15:50:28 -0700</bug_when>
    <thetext>Comment on attachment 431719
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:461
&gt; +    // // First give accessibility a chance to handle the event.
&gt; +    // Frame* frame = frameForEvent(event);
&gt; +    // frame-&gt;eventHandler().handleKeyboardSelectionMovementForAccessibility(*event);
&gt; +    // if (event-&gt;defaultHandled())
&gt; +    //     return true;

Probably need to leave THIS code alone.

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:468
&gt; +    // if (selector == &quot;moveUp:&quot;)

Instead of leaving these commented out, I think you should add an off-by-default (until you&apos;re further along) setting (see WebPreferences*.yaml) or maybe a compile-time flag (see PlatformEnable.h); here you&apos;ll use it to guard the ones you don&apos;t want to be evaluated as &quot;non-editing editing command behaviors&quot; anymore, and will bail in EventHandler::handleKeyboardScrolling.

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:487
&gt; +    // else if (selector == &quot;moveToLeftEndOfLine:&quot;)
&gt; +    //     didPerformAction = m_userInterfaceLayoutDirection == WebCore::UserInterfaceLayoutDirection::LTR ? m_page-&gt;backForward().goBack() : m_page-&gt;backForward().goForward();

For now, you&apos;ve not moved goForward/goBack, so need to put this one back

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:493
&gt; +    //     didPerformAction = m_userInterfaceLayoutDirection == WebCore::UserInterfaceLayoutDirection::LTR ? m_page-&gt;backForward().goForward() : m_page-&gt;backForward().goBack();

For now, you&apos;ve not moved goForward/goBack, so need to put this one back</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770888</commentid>
    <comment_count>10</comment_count>
      <attachid>431719</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-17 16:43:46 -0700</bug_when>
    <thetext>Comment on attachment 431719
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:4244
&gt; +const WebCore::KeyboardScrollParameters&amp; EventHandler::parameters()
&gt; +{
&gt; +    static const KeyboardScrollParameters parameters;
&gt; +    return parameters;
&gt; +}

I think KeyboardScrollParameters could maybe hang on a static method off KeyboardScroll? EventHandler is not the right place, anyway

&gt; Source/WebCore/page/EventHandler.h:379
&gt; +

Too many newlines around this paragraph

&gt; Source/WebCore/page/EventHandler.h:380
&gt; +    const WebCore::KeyboardScrollParameters&amp; parameters();

Not sure why this is here. Don&apos;t think it needs to be.

&gt; Source/WebCore/page/KeyboardScroll.h:34
&gt; +enum class ScrollingIncrement : uint8_t {
&gt; +    Line,
&gt; +    Page,
&gt; +    Document
&gt; +};

Instead of this, you should just make all this code use ScrollTypes.h&apos;s ScrollGranularity

&gt; Source/WebCore/page/KeyboardScroll.h:41
&gt; +enum class ScrollingDirection : uint8_t {
&gt; +    Up,
&gt; +    Down,
&gt; +    Left,
&gt; +    Right
&gt; +};

Instead of this, you should just make all this code use ScrollTypes.h&apos;s ScrollDirection

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:783
&gt; +    

Should be able to revert this and not touch this file at all :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770904</commentid>
    <comment_count>11</comment_count>
      <attachid>431719</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-06-17 17:14:36 -0700</bug_when>
    <thetext>Comment on attachment 431719
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Renavigate MacOS keyboard scrolling and use KeyboardScroll struct

Nit: Update to match bug title.

&gt; Source/WebCore/page/EventHandler.cpp:4193
&gt; +    

You should configure your editor to remove trailing spaces :)

&gt; Source/WebCore/page/EventHandler.cpp:4209
&gt; +    

Nit: Unnecessary newline.

&gt; Source/WebCore/page/EventHandler.cpp:4250
&gt; +        return {0, -1};

Nit: Add spaces around the values, like `{ 0, -1 };`.

&gt; Source/WebCore/page/EventHandler.cpp:4260
&gt; +CGFloat EventHandler::ScrollDistance(WebCore::ScrollingDirection direction, WebCore::ScrollingIncrement increment)

Nit: `scrollDistance`.

&gt; Source/WebCore/page/EventHandler.cpp:4263
&gt; +    FrameView* view = frame-&gt;view();

`m_frame.view()`. No need for the local variable.

&gt; Source/WebCore/page/EventHandler.cpp:4351
&gt; +    scroll.maximumVelocity = scroll.offset.scaled(this-&gt;parameters().maximumVelocityMultiplier);
&gt; +
&gt; +    scroll.force = scroll.maximumVelocity.scaled(this-&gt;parameters().springMass / this-&gt;parameters().timeToMaximumVelocity);

Remove `this`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771421</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-21 13:27:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/79577430&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771482</commentid>
    <comment_count>13</comment_count>
      <attachid>431916</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-21 15:22:28 -0700</bug_when>
    <thetext>Created attachment 431916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771488</commentid>
    <comment_count>14</comment_count>
      <attachid>431918</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-21 15:26:59 -0700</bug_when>
    <thetext>Created attachment 431918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771497</commentid>
    <comment_count>15</comment_count>
      <attachid>431919</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-21 15:41:26 -0700</bug_when>
    <thetext>Created attachment 431919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771727</commentid>
    <comment_count>16</comment_count>
      <attachid>431979</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-22 11:18:14 -0700</bug_when>
    <thetext>Created attachment 431979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771734</commentid>
    <comment_count>17</comment_count>
      <attachid>431979</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-22 11:37:30 -0700</bug_when>
    <thetext>Comment on attachment 431979
Patch

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

Need to get the bots not red and clean up some random files that you don&apos;t need to touch, but this seems pretty much ready to go.

&gt; Source/WebCore/page/EventHandler.cpp:4192
&gt; -
&gt; +    

What editor are you using that is making all these spurious changes :) If it&apos;s Xcode, check &quot;including white-space only lines&quot; in the &quot;editing&quot; tab of &quot;text editing&quot;

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:315
&gt; +        eventWasHandled = executeKeypressCommandsInternal(commands, &amp;event); 

?

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:456
&gt; +    // // First give accessibility a chance to handle the event.

What&apos;s this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771735</commentid>
    <comment_count>18</comment_count>
      <attachid>431979</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-06-22 11:39:00 -0700</bug_when>
    <thetext>Comment on attachment 431979
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Renavigate MacOS keyboard scrolling and use KeyboardScroll struct

Nit: You can remove this line.

It would be nice to summarize the refactoring here (and in the WebKit changelog).

&gt; Source/WebCore/page/EventHandler.cpp:-3802
&gt; -

Nit: Undo this change.

&gt; Source/WebCore/page/EventHandler.cpp:4192
&gt; +    

Nit: Remove trailing whitespace (also a couple more instances below).

&gt; Source/WebCore/page/EventHandler.cpp:4206
&gt; +    if (m_frame.settings().smoothKeyboardScrollingEnabled()) {

This could be a ternary: `m_frame.settings().smoothKeyboardScrollingEnabled() ? handleKeyboardScrolling(event) : view-&gt;logicalScroll(direction, ScrollByPage)`

&gt; Source/WebCore/page/EventHandler.cpp:4338
&gt; +    WebCore::KeyboardScroll scroll;

No need for `WebCore::`, since you&apos;re in the WebCore namespace.

&gt; Source/WebCore/page/KeyboardScroll.h:28
&gt; +#pragma once
&gt; +#include &quot;ScrollTypes.h&quot;
&gt; +namespace WebCore {

Nit: Add some newlines here.

```
#pragma once

#include &quot;ScrollTypes.h&quot;

namespace WebCore {
```

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:456
&gt; +    // // First give accessibility a chance to handle the event.

Nit: Remove added `//`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771749</commentid>
    <comment_count>19</comment_count>
      <attachid>431979</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-06-22 12:00:06 -0700</bug_when>
    <thetext>Comment on attachment 431979
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:4304
&gt; +    auto granularity = ^() {

Use lambda syntax (`[] {`) rather than block syntax since this is a C++ file.

&gt; Source/WebCore/page/EventHandler.cpp:4321
&gt; +    auto direction = ^() {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771785</commentid>
    <comment_count>20</comment_count>
      <attachid>431992</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-22 14:12:18 -0700</bug_when>
    <thetext>Created attachment 431992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771801</commentid>
    <comment_count>21</comment_count>
      <attachid>431997</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-22 14:49:59 -0700</bug_when>
    <thetext>Created attachment 431997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771839</commentid>
    <comment_count>22</comment_count>
      <attachid>431997</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-22 18:00:11 -0700</bug_when>
    <thetext>Comment on attachment 431997
Patch

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

Seems like there is a bunch of code duplication going on. Instead, it would be better to make the code useable by both WKKeyboardScrollingAnimator and EventHandler, and have those classes called shared functionality.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Renavigate MacOS keyboard scrolling and use KeyboardScroll struct

I don&apos;t think you mean Renavigate here. Refactor?

&gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:696
&gt; +   default: false

Given we do support smooth keyboard scrolling on iOS, this seems like an incorrect default. If this setting does not effect the iOS functionality, we should either update things so this does, or rename this to be more clear about what it does.

&gt; Source/WebCore/page/EventHandler.cpp:4240
&gt; +FloatSize EventHandler::unitVector(ScrollDirection direction)

This seems like it should be a free function rather than a static class function.

&gt; Source/WebCore/page/EventHandler.cpp:4254
&gt; +CGFloat EventHandler::scrollDistance(ScrollDirection direction, ScrollGranularity granularity)

We try to avoid using platform specific types like CGFloat in platform independent files if we can avoid it. This should just return a float or double.

&gt; Source/WebCore/page/EventHandler.cpp:4261
&gt; +    Scrollbar* scrollbar;
&gt; +
&gt; +    if (direction == ScrollDirection::ScrollUp || direction == ScrollDirection::ScrollDown) 
&gt; +        scrollbar = m_frame.view()-&gt;verticalScrollbar();
&gt; +    else 
&gt; +        scrollbar = m_frame.view()-&gt;horizontalScrollbar();

A trick we do for things like this with an uninitialized variable is to use an anonymous lambda that is called immediately.  
auto scrollbar = [&amp;] {
    if (direction == ScrollDirection::ScrollUp || direction == ScrollDirection::ScrollDown) 
        return m_frame.view()-&gt;verticalScrollbar();
     return m_frame.view()-&gt;horizontalScrollbar();
}();

&gt; Source/WebCore/page/EventHandler.cpp:4278
&gt; +    switch (granularity) {
&gt; +    case ScrollGranularity::ScrollByLine:
&gt; +        step = scrollbar-&gt;lineStep();
&gt; +        break;
&gt; +    case ScrollGranularity::ScrollByPage:
&gt; +        step = scrollbar-&gt;pageStep();
&gt; +        break;
&gt; +    case ScrollGranularity::ScrollByDocument:
&gt; +        step = scrollbar-&gt;totalSize();
&gt; +        break;
&gt; +    case ScrollGranularity::ScrollByPixel:
&gt; +        step = scrollbar-&gt;pixelStep();
&gt; +        break;
&gt; +    }

These should just return the value directly.

&gt; Source/WebCore/page/EventHandler.cpp:4301
&gt; +    auto granularity = ^() {

This should use a c++ lambda, not a block. Blocks should only be used when lambdas absolutely cannot.

&gt; Source/WebCore/page/EventHandler.cpp:4330
&gt; +        };

; is not needed here.

&gt; Source/WebCore/page/KeyboardScroll.h:28
&gt; +#pragma once
&gt; +#include &quot;ScrollTypes.h&quot;
&gt; +namespace WebCore {

Please add newlines between these.

&gt; Source/WebCore/page/KeyboardScroll.h:33
&gt; +    WebCore::FloatSize offset; // Points per increment.
&gt; +    WebCore::FloatSize maximumVelocity; // Points per second.
&gt; +    WebCore::FloatSize force;

WebCore:: are not needed.

&gt; Source/WebCore/page/KeyboardScroll.h:47
&gt; +    CGFloat springMass { 1 };
&gt; +    CGFloat springStiffness { 109 };
&gt; +    CGFloat springDamping { 20 };
&gt; +
&gt; +    CGFloat maximumVelocityMultiplier { 25 };
&gt; +    CGFloat timeToMaximumVelocity { 1 };
&gt; +
&gt; +    CGFloat rubberBandForce { 5000 };

Should not be using CGFloat here. Use float instead.

Do these ever change? Seems weird to have these constants just sitting here as default parameters. If we think they might vary, perhaps they should be on Settings? If not, perhaps just some constexprs would suffice?

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:48
&gt; +- (CGFloat)distanceForIncrement:(ScrollGranularity)increment inDirection:(ScrollDirection)direction;

I would add the explicit WebCore:: here for the types.

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:127
&gt; +    case ScrollDirection::ScrollUp:
&gt;          return { 0, -1 };
&gt; -    case WebKit::ScrollingDirection::Down:
&gt; +    case ScrollDirection::ScrollDown:
&gt;          return { 0, 1 };
&gt; -    case WebKit::ScrollingDirection::Left:
&gt; +    case ScrollDirection::ScrollLeft:
&gt;          return { -1, 0 };
&gt; -    case WebKit::ScrollingDirection::Right:
&gt; +    case ScrollDirection::ScrollRight:

This seems like it is a duplicate of the code in WebCore. Why not just use that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771844</commentid>
    <comment_count>23</comment_count>
      <attachid>432012</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-22 18:57:30 -0700</bug_when>
    <thetext>Created attachment 432012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772106</commentid>
    <comment_count>24</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-23 16:26:44 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #22)
&gt; Comment on attachment 431997 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431997&amp;action=review
&gt; 
&gt; Seems like there is a bunch of code duplication going on. Instead, it would
&gt; be better to make the code useable by both WKKeyboardScrollingAnimator and
&gt; EventHandler, and have those classes called shared functionality.

Ideally, yes. In practice this is a bit annoying, because the input to this function is an event, and I don&apos;t think there is any event type that is *commonly* used both in WebCore in the Web Content process and WebKit in the UI process. Ideally we could make the code deal in terms of WebCore events (WebCore::KeyboardEvent), but it&apos;s a bit weird to use the DOMmy KeyboardEvent in the UI process, no?

I think it might be better if Dana doesn&apos;t try to solve this all the way in the first patch, since it will involve lots of thoughtful refactoring of the iOS code. But there is a good bit of sharing that she /can/ do; e.g. `unitVector` like you said, also the code to fill out a KeyboardScroll instance once you have a ScrollGranularity+ScrollDirection.

&gt; &gt; Source/WebCore/page/KeyboardScroll.h:47
&gt; &gt; +    CGFloat springMass { 1 };
&gt; &gt; +    CGFloat springStiffness { 109 };
&gt; &gt; +    CGFloat springDamping { 20 };
&gt; &gt; +
&gt; &gt; +    CGFloat maximumVelocityMultiplier { 25 };
&gt; &gt; +    CGFloat timeToMaximumVelocity { 1 };
&gt; &gt; +
&gt; &gt; +    CGFloat rubberBandForce { 5000 };
&gt; 
&gt; Do these ever change? Seems weird to have these constants just sitting here
&gt; as default parameters. If we think they might vary, perhaps they should be
&gt; on Settings? If not, perhaps just some constexprs would suffice?

This was my doing; back in the day they used to be adjustable with some UI, and I never constexpr&apos;d them. Dana, you&apos;re welcome to do so, though I don&apos;t think it&apos;s vital for this patch.

&gt; &gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:127
&gt; &gt; +    case ScrollDirection::ScrollUp:
&gt; &gt;          return { 0, -1 };
&gt; &gt; -    case WebKit::ScrollingDirection::Down:
&gt; &gt; +    case ScrollDirection::ScrollDown:
&gt; &gt;          return { 0, 1 };
&gt; &gt; -    case WebKit::ScrollingDirection::Left:
&gt; &gt; +    case ScrollDirection::ScrollLeft:
&gt; &gt;          return { -1, 0 };
&gt; &gt; -    case WebKit::ScrollingDirection::Right:
&gt; &gt; +    case ScrollDirection::ScrollRight:
&gt; 
&gt; This seems like it is a duplicate of the code in WebCore. Why not just use
&gt; that?

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772327</commentid>
    <comment_count>25</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-24 10:01:54 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #24)
&gt; (In reply to Sam Weinig from comment #22)
&gt; &gt; Comment on attachment 431997 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=431997&amp;action=review
&gt; &gt; 
&gt; &gt; Seems like there is a bunch of code duplication going on. Instead, it would
&gt; &gt; be better to make the code useable by both WKKeyboardScrollingAnimator and
&gt; &gt; EventHandler, and have those classes called shared functionality.
&gt; 
&gt; Ideally, yes. In practice this is a bit annoying, because the input to this
&gt; function is an event, and I don&apos;t think there is any event type that is
&gt; *commonly* used both in WebCore in the Web Content process and WebKit in the
&gt; UI process. Ideally we could make the code deal in terms of WebCore events
&gt; (WebCore::KeyboardEvent), but it&apos;s a bit weird to use the DOMmy
&gt; KeyboardEvent in the UI process, no?

I would solve this with a new struct that contains the input to the algorithm that both event types can be be constructed from or adding a shared interface for both event types.

&gt; 
&gt; I think it might be better if Dana doesn&apos;t try to solve this all the way in
&gt; the first patch, since it will involve lots of thoughtful refactoring of the
&gt; iOS code. But there is a good bit of sharing that she /can/ do; e.g.
&gt; `unitVector` like you said, also the code to fill out a KeyboardScroll
&gt; instance once you have a ScrollGranularity+ScrollDirection.

Yeah, let&apos;s do what sharing we can. Free functions on the platform types will go a long way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772382</commentid>
    <comment_count>26</comment_count>
      <attachid>432194</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-24 11:24:26 -0700</bug_when>
    <thetext>Created attachment 432194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772407</commentid>
    <comment_count>27</comment_count>
      <attachid>432194</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-06-24 12:09:29 -0700</bug_when>
    <thetext>Comment on attachment 432194
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No tests yet

Nit: Add a period at the end of the sentence.

Also might be good to summarize the changes.

&gt; Source/WebCore/page/EventHandler.cpp:4237
&gt; +static FloatSize unitVector(ScrollDirection direction)

The IOS_FAMILY build is failing because this method is not in a header (and is not WEBCORE_EXPORT).

I think you should move this to a new KeyboardScroll.cpp, and WEBCORE_EXPORT the method in KeyboardScroll.h. And probably rename the method to unitVectorForScrollDirection.

You&apos;ll need to add the new file to Source/WebCore/Sources.txt (and we should probably add the header to Source/WebCore/Headers.cmake).

&gt; Source/WebCore/page/EventHandler.cpp:4332
&gt; +    CGFloat distance = scrollDistance(direction, granularity);
&gt; +    
&gt; +    KeyboardScroll scroll;
&gt; +
&gt; +    scroll.offset = unitVector(direction).scaled(distance);
&gt; +    scroll.granularity = granularity;
&gt; +    scroll.direction = direction;
&gt; +    scroll.maximumVelocity = scroll.offset.scaled(KeyboardScrollParameters::parameters().maximumVelocityMultiplier);
&gt; +
&gt; +    scroll.force = scroll.maximumVelocity.scaled(KeyboardScrollParameters::parameters().springMass / KeyboardScrollParameters::parameters().timeToMaximumVelocity);

It looks like none of these variables are actually used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772748</commentid>
    <comment_count>28</comment_count>
      <attachid>432287</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-25 13:14:06 -0700</bug_when>
    <thetext>Created attachment 432287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772765</commentid>
    <comment_count>29</comment_count>
      <attachid>432293</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-25 14:46:35 -0700</bug_when>
    <thetext>Created attachment 432293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773157</commentid>
    <comment_count>30</comment_count>
      <attachid>432293</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-28 12:23:29 -0700</bug_when>
    <thetext>Comment on attachment 432293
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:4259
&gt; +    // FIXME: This logic does not account for writing-mode.

This should have a bugzilla number in parens (FIXME (123456): ...)

&gt; Source/WebCore/page/EventHandler.cpp:4318
&gt; +    KeyboardScroll scroll;
&gt; +
&gt; +    scroll.offset = unitVectorForScrollDirection(direction).scaled(distance);
&gt; +    scroll.granularity = granularity;
&gt; +    scroll.direction = direction;
&gt; +    scroll.maximumVelocity = scroll.offset.scaled(KeyboardScrollParameters::parameters().maximumVelocityMultiplier);
&gt; +
&gt; +    scroll.force = scroll.maximumVelocity.scaled(KeyboardScrollParameters::parameters().springMass / KeyboardScrollParameters::parameters().timeToMaximumVelocity);

Not the end of the world, but ideally you would stash this unused code aside for patch 2 instead of including it here.

&gt; Source/WebCore/page/KeyboardScroll.cpp:1
&gt; +// Copyright (C) 2021 Apple Inc. All rights reserved.

This copyright header should look like the one in your .h (with a multi-line comment); not sure where this version came from.

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:-299
&gt; -    WebKit::KeyboardScroll scroll;

Should be a FIXME in this general vicinity about adopting the WebCore version of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773203</commentid>
    <comment_count>31</comment_count>
      <attachid>432423</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-28 14:42:31 -0700</bug_when>
    <thetext>Created attachment 432423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773210</commentid>
    <comment_count>32</comment_count>
      <attachid>432423</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-28 14:48:17 -0700</bug_when>
    <thetext>Comment on attachment 432423
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:489
&gt; +        didPerformAction = scroll(m_page.get(), ScrollRight, ScrollByPage);

Wrong indentation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773214</commentid>
    <comment_count>33</comment_count>
      <attachid>432426</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-06-28 14:55:43 -0700</bug_when>
    <thetext>Created attachment 432426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773279</commentid>
    <comment_count>34</comment_count>
      <attachid>432426</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-28 17:20:04 -0700</bug_when>
    <thetext>Comment on attachment 432426
Patch

There&apos;s more we can do to clean up and deduplicate, but let&apos;s start here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773285</commentid>
    <comment_count>35</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-28 17:39:24 -0700</bug_when>
    <thetext>Committed r279355 (239223@main): &lt;https://commits.webkit.org/239223@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432426.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431359</attachid>
            <date>2021-06-14 13:30:51 -0700</date>
            <delta_ts>2021-06-14 13:52:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210614163050.patch</filename>
            <type>text/plain</type>
            <size>28137</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUwNjM5ZmIwMWYwMGEy
MGUwOTViZDk2OGQyZGRmZjQ0ZmFiNjNiNy4uZDIwOWNkMjlkYmZiNmM4NTJkYzYwZDgyYmYzMTk4
OGYwZjQyMTNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hdmlnYXRlIE1hY09TIGtl
eWJvYXJkIHNjcm9sbGluZyBhbmQgdXNlIEtleWJvYXJkU2Nyb2xsIHN0cnVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYXZpZ2F0ZSBNYWNPUyBr
ZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKworICAgICAg
ICBObyB0ZXN0cyB5ZXQKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnVuaXRWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpTY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRl
ZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjpzY3JvbGwpOgorCiAyMDIxLTA1LTI4ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBUcmFuc2l0aW9uIGNvbnRhaW5pbmcgYmxvY2sgZm9y
IGxvb3BzIHRvIHJhbmdlIGxvb3BzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcyMThiOGZjZThjYTBhYjBjYzZkYzZl
ZDA1YWRiNmJkNTRkNmYyYTAuLmJmZDk1Y2U4YmQxMDAzMGY2MGQwYjZiNjVjYjU3ZTYwNzdiMTc2
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDYtMTQgIERhbmEgRXN0cmEgIDxk
ZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5Ym9hcmQgc2Ny
b2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBwYXJhbWV0ZXJzXSk6CisgICAgICAgICh1bml0VmVjdG9yKToKKyAgICAgICAgKHBlcnBlbmRp
Y3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IpOgorICAgICAgICAoYm94U2lkZSk6CisgICAgICAgICgt
W1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBrZXlib2FyZFNjcm9sbEZvckV2ZW50Ol0pOgor
ICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgYmVnaW5XaXRoRXZlbnQ6XSk6
CisgICAgICAgIChmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24pOgorICAgICAgICAoLVtXS0tleWJv
YXJkU2Nyb2xsVmlld0FuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OmluRGlyZWN0aW9uOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3Ip
OgorCiAyMDIxLTA1LTI4ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZG9wdCBSZXZlYWwgZm9yIHBob25lIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCBiYjYxNzZmZTgzNThkN2M5ZGE4YWRhN2U0YjFhMmMyZDAyODg0MDc1Li4y
ZjNkMWFmMzRhMjA0MGNkMWU0MTI2N2ZlNmUwMTgwYjg5NTQ5YjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCIKQEAgLTQyMTQsNiArNDIxNSw1MyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAg
ICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAorY29uc3QgV2ViQ29yZTo6S2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzJiBFdmVudEhhbmRsZXI6OnBhcmFtZXRlcnMoKQoreworICAgIHN0
YXRpYyBjb25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICByZXR1
cm4gcGFyYW1ldGVyczsKK30KKworRmxvYXRTaXplIEV2ZW50SGFuZGxlcjo6dW5pdFZlY3RvcihX
ZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGly
ZWN0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAg
ICAgICByZXR1cm4gezAsIC0xfTsKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6RG93bjoKKyAgICAgICAgcmV0dXJuIHswLCAxfTsKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6TGVmdDoKKyAgICAgICAgcmV0dXJuIHstMSwgMH07CisgICAgY2FzZSBX
ZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgICAgICByZXR1cm4gezEsIDB9
OworICAgIH0KK30KKworQ0dGbG9hdCBFdmVudEhhbmRsZXI6OlNjcm9sbERpc3RhbmNlKFdlYkNv
cmU6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbGluZ0luY3Jl
bWVudCBpbmNyZW1lbnQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7CisgICAgRnJh
bWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKworICAgIFNjcm9sbGJhciogc2Nyb2xsYmFy
OworICAgIGlmIChkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCB8
fCBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duKSAKKyAgICAg
ICAgc2Nyb2xsYmFyID0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKTsKKyAgICBlbHNlIAorICAg
ICAgICBzY3JvbGxiYXIgPSB2aWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgCisKKyAg
ICBDR0Zsb2F0IHN0ZXAgPSAwOworICAgIHN3aXRjaCAoaW5jcmVtZW50KSB7CisgICAgY2FzZSBX
ZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxi
YXItPmxpbmVTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpQYWdlOgorICAgICAgICBzdGVwID0gc2Nyb2xsYmFyLT5wYWdlU3RlcCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6
RG9jdW1lbnQ6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RlcDsKK30KIAogdm9pZCBFdmVudEhhbmRs
ZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiBmb2N1c0RpcmVjdGlv
biwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CkBAIC00MjM2LDYgKzQyODQsNjcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiBmb2N1
c0RpcmVjdGlvbiwgS2V5Ym8KIAogICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5hZHZh
bmNlRm9jdXMoZm9jdXNEaXJlY3Rpb24sICZldmVudCkpCiAgICAgICAgIGV2ZW50LnNldERlZmF1
bHRIYW5kbGVkKCk7CisKKyAgICBlbnVtIGNsYXNzIEtleSA6IHVpbnQ4X3QgeyBMZWZ0QXJyb3cs
IFJpZ2h0QXJyb3csIFVwQXJyb3csIERvd25BcnJvdywgUGFnZVVwLCBQYWdlRG93biB9OworCisg
ICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJMZWZ0IikKKyAg
ICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllcigpID09ICJSaWdodCIpCisgICAgICAgIGtleSA9IEtleTo6UmlnaHRBcnJvdzsKKyAgICBl
bHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIlVwIikKKyAgICAgICAga2V5ID0gS2V5
OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiRG93biIp
CisgICAgICAgIGtleSA9IEtleTo6RG93bkFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIoKSA9PSAiUGFnZURvd24iKQorICAgICAgICBrZXkgPSBLZXk6OlBhZ2VEb3duOwor
ICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiUGFnZVVwIikKKyAgICAgICAg
a2V5ID0gS2V5OjpQYWdlVXA7CisgICAgZWxzZQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGluY3JlbWVudCA9IF4oKSB7CisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2Ug
S2V5OjpMZWZ0QXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICBj
YXNlIEtleTo6VXBBcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgIGNh
c2UgS2V5OjpQYWdlVXA6CisgICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKKyAgICAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgIH07Cisg
ICAgfSgpOworCisgICAgYXV0byBkaXJlY3Rpb24gPSBeKCkgeworICAgICAgICBzd2l0Y2ggKGtl
eSkgeworICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0
QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpS
aWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpQYWdl
VXA6CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDsK
KyAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3du
OgorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsK
KyAgICAgICAgfTsKKyAgICB9KCk7CisKKyAgICAKKyAgICBDR0Zsb2F0IHNjcm9sbERpc3RhbmNl
ID0gU2Nyb2xsRGlzdGFuY2UoZGlyZWN0aW9uLCBpbmNyZW1lbnQpOworICAgIAorICAgIFdlYkNv
cmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKworICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0VmVj
dG9yKGRpcmVjdGlvbikuc2NhbGVkKHNjcm9sbERpc3RhbmNlKTsKKyAgICBzY3JvbGwuaW5jcmVt
ZW50ID0gaW5jcmVtZW50OworICAgIHNjcm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CisgICAg
c2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9IHNjcm9sbC5vZmZzZXQuc2NhbGVkKHRoaXMtPnBhcmFt
ZXRlcnMoKS5tYXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyKTsKKworICAgIHNjcm9sbC5mb3JjZSA9
IHNjcm9sbC5tYXhpbXVtVmVsb2NpdHkuc2NhbGVkKHRoaXMtPnBhcmFtZXRlcnMoKS5zcHJpbmdN
YXNzIC8gdGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb01heGltdW1WZWxvY2l0eSk7CisKKworICAg
IEV2ZW50SGFuZGxlcjo6c2Nyb2xsUmVjdXJzaXZlbHkoKFNjcm9sbERpcmVjdGlvbilkaXJlY3Rp
b24sIChTY3JvbGxHcmFudWxhcml0eSlpbmNyZW1lbnQsIG51bGxwdHIpOwogfQogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRhYkV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGZmYjczNjk0NTBlNDkzOWVjN2JjYWUy
ZGJhN2JhOTI4NWY4ZjY3MWIuLmNjOWUxY2Y4NDRjOTE1NTgwODYyODc2ZWE5NTk5ZjM2MDhjZTRi
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNs
dWRlICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5j
bHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTM3NSw2ICszNzYsMTIgQEAgcHJpdmF0ZToKICAg
ICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBs
ZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorCisgICAgY29u
c3QgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCk7CisgICAg
c3RhdGljIEZsb2F0U2l6ZSB1bml0VmVjdG9yKFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbik7
CisgICAgQ0dGbG9hdCBTY3JvbGxEaXN0YW5jZShXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24s
IFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudCk7CisKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3VsZENoZWNrRHJhZ0h5
c3RlcmVzaXMpOwogICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0RHJhZygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYWI3M2Y0
NjgwZGZiNDJlODk5M2JlNTZjYTJhYTNiMTNiOGY5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3Mg
U2Nyb2xsaW5nSW5jcmVtZW50IDogdWludDhfdCB7CisgICAgTGluZSwKKyAgICBQYWdlLAorICAg
IERvY3VtZW50Cit9OworCitlbnVtIGNsYXNzIFNjcm9sbGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3Qg
eworICAgIFVwLAorICAgIERvd24sCisgICAgTGVmdCwKKyAgICBSaWdodAorfTsKKworc3RydWN0
IEtleWJvYXJkU2Nyb2xsIHsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgb2Zmc2V0OyAvLyBQb2lu
dHMgcGVyIGluY3JlbWVudC4KKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVZlbG9jaXR5
OyAvLyBQb2ludHMgcGVyIHNlY29uZC4KKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZm9yY2U7CisK
KyAgICBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OworICAgIFdlYkNvcmU6
OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb247Cit9OworCitzdHJ1Y3QgS2V5Ym9hcmRTY3Jv
bGxQYXJhbWV0ZXJzIHsKKyAgICBDR0Zsb2F0IHNwcmluZ01hc3MgeyAxIH07CisgICAgQ0dGbG9h
dCBzcHJpbmdTdGlmZm5lc3MgeyAxMDkgfTsKKyAgICBDR0Zsb2F0IHNwcmluZ0RhbXBpbmcgeyAy
MCB9OworCisgICAgQ0dGbG9hdCBtYXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyIHsgMjUgfTsKKyAg
ICBDR0Zsb2F0IHRpbWVUb01heGltdW1WZWxvY2l0eSB7IDEgfTsKKworICAgIENHRmxvYXQgcnVi
YmVyQmFuZEZvcmNlIHsgNTAwMCB9OworfTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5k
ZXggYjFmMzc1YmZhNTdiZGExNTA5M2RhMmJhZmE1MzU1YjFkYWZmNGFjOC4uMmJlNTNlMDg0MTcy
NzBlOWUwNzU4ZDU3NjdiNWEzYjYyODE4YzAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNzgwLDYgKzc4MCw3IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgU2Nyb2xsR3JhbnVsYXJpCiAKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJl
YW0gPDwgIlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwgIiA8PCAiIGZyb20gIiA8PCBjdXJyZW50
UG9zaXRpb24oKSA8PCAiIHRvICIgPDwgbmV3UG9zaXRpb24pOwogICAgIFttX3Njcm9sbEFuaW1h
dGlvbkhlbHBlciBzY3JvbGxUb1BvaW50Om5ld1Bvc2l0aW9uXTsKKyAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRl
OWNhMzM1YTI0ZTI3NWUyZDguLjE0NTk1ZmU0ODE5NWRhZWU0MzRlMTNhNTMwY2QyNDRmZGYzZmE5
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgKQEAgLTI5LDIyICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVt
IGNsYXNzIFNjcm9sbGluZ0luY3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAg
IFBhZ2UsCi0gICAgTGluZQotfTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1
aW50OF90IHsKLSAgICBVcCwKLSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0K
LX0KIAogQGNsYXNzIFVJU2Nyb2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLm1tCmluZGV4IDdiNjUwNWZhNzhlNjYzMTQ2NzlkNDhmNjZlYzJkOTBkYWQ3MTQ0YzMuLjM2
MjVmNmY4OGExOTgxMzBjNWIwOGFiNjJlZTMzZDZhM2NkMDkxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ci5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5r
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5
RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZWN0RWRnZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4K
ICNpbXBvcnQgPFdlYktpdC9VSUtpdFNQSS5oPgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBLZXlib2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29y
ZTo6RmxvYXRTaXplIGZvcmNlOwotCi0gICAgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5j
cmVtZW50OwotICAgIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0K
LXN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFz
cyB7IDEgfTsKLSAgICBDR0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxv
YXQgc3ByaW5nRGFtcGluZyB7IDIwIH07Ci0KLSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11
bHRpcGxpZXIgeyAyNSB9OwotICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9
OwotCi0gICAgQ0dGbG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBw
cm90b2NvbCBXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJl
ZAogLSAoQk9PTClpc0tleWJvYXJkU2Nyb2xsYWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJ
bmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlv
bjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0
YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBp
bkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbjsKIC0gKHZv
aWQpc2Nyb2xsVG9Db250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldCBhbmlt
YXRlZDooQk9PTClhbmltYXRlZDsKIC0gKHZvaWQpc2Nyb2xsV2l0aFNjcm9sbFRvRXh0ZW50QW5p
bWF0aW9uVG86KENHUG9pbnQpb2Zmc2V0OwogLSAoQ0dQb2ludCljb250ZW50T2Zmc2V0OwpAQCAt
OTcsNyArNzUsNyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBpZCA8
V0tLZXlib2FyZFNjcm9sbGFibGVJbnRlcm5hbD4gX3Njcm9sbGFibGU7CiAgICAgUmV0YWluUHRy
PENBRGlzcGxheUxpbms+IF9kaXNwbGF5TGluazsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6S2V5
Ym9hcmRTY3JvbGw+IF9jdXJyZW50U2Nyb2xsOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OktleWJv
YXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKIAogICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdL
ZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsxMDIsOSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQ
YXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdl
YktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNv
bnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJl
dHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0xMzcsNDcgKzExNSw0NyBAQCBzdHJ1Y3QgS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBfc2Nyb2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGlj
IFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
IGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgdW5pdFZlY3RvcihXZWJDb3Jl
OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBX
ZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgogICAgICAgICByZXR1cm4geyAwLCAtMSB9
OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246CisgICAgY2FzZSBX
ZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246CiAgICAgICAgIHJldHVybiB7IDAsIDEg
fTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2Ug
V2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICByZXR1cm4geyAtMSwg
MCB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNh
c2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJuIHsg
MSwgMCB9OwogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1
bGFyQWJzb2x1dGVVbml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZl
Y3RvcihXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRj
aCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFdl
YkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxp
bmdEaXJlY3Rpb246OkRvd246CiAgICAgICAgIHJldHVybiB7IDEsIDAgfTsKLSAgICBjYXNlIFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxp
bmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKICAg
ICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkJveFNp
ZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMg
V2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBX
ZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJv
dHRvbTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNh
c2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Qm94U2lkZTo6TGVmdDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CiAg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKE9w
dGlvbmFsPFdlYktpdDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6
V2ViRXZlbnQgKilldmVudAorLSAoT3B0aW9uYWw8V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGw+KWtl
eWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudAogewogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwogCkBAIC0yNTUsNDggKzIzMyw0OCBA
QCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikKICAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgY2Fz
ZSBLZXk6OlJpZ2h0QXJyb3c6CiAgICAgICAgICAgICBpZiAoYWx0UHJlc3NlZCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CiAgICAgICAgIGNh
c2UgS2V5OjpVcEFycm93OgogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAg
ICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpQYWdlOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3Jv
bGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CiAgICAgICAgICAgICBpZiAoY21kUHJlc3NlZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50Owot
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50
OworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsK
ICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgog
ICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3Jv
bGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpQYWdlOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9s
bGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxp
bmdJbmNyZW1lbnQ6OkxpbmU7CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgYXV0byBkaXJl
Y3Rpb24gPSBeKCkgewogICAgICAgICBzd2l0Y2ggKGtleSkgewogICAgICAgICBjYXNlIEtleTo6
TGVmdEFycm93OgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpMZWZ0OworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
TGVmdDsKICAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6Ci0gICAgICAgICAgICByZXR1cm4g
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OworICAgICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFy
cm93OgogICAgICAgICBjYXNlIEtleTo6UGFnZVVwOgotICAgICAgICAgICAgcmV0dXJuIFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
Y3JvbGxpbmdEaXJlY3Rpb246OlVwOwogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAg
ICAgICBjYXNlIEtleTo6UGFnZURvd246Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb246OkRvd247CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xs
aW5nRGlyZWN0aW9uOjpEb3duOwogICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAgICAgICAg
ICByZXR1cm4gc2hpZnRQcmVzc2VkID8gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwIDog
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd247CisgICAgICAgICAgICByZXR1cm4gc2hp
ZnRQcmVzc2VkID8gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFdlYkNvcmU6OlNj
cm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKICAgICAgICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb246OkRvd247CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpEb3duOwogICAgICAgICB9OwogICAgIH0oKTsKIAogICAgIENHRmxv
YXQgc2Nyb2xsRGlzdGFuY2UgPSBbX3Njcm9sbGFibGUgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6aW5j
cmVtZW50IGluRGlyZWN0aW9uOmRpcmVjdGlvbl07CiAKLSAgICBXZWJLaXQ6OktleWJvYXJkU2Ny
b2xsIHNjcm9sbDsKKyAgICBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbCBzY3JvbGw7CiAgICAgc2Ny
b2xsLm9mZnNldCA9IHVuaXRWZWN0b3IoZGlyZWN0aW9uKS5zY2FsZWQoc2Nyb2xsRGlzdGFuY2Up
OwogICAgIHNjcm9sbC5pbmNyZW1lbnQgPSBpbmNyZW1lbnQ7CiAgICAgc2Nyb2xsLmRpcmVjdGlv
biA9IGRpcmVjdGlvbjsKQEAgLTMyNyw3ICszMDUsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lk
ZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBfc2Ny
b2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZCA9IFlFUzsKICAgICBfY3VycmVudFNjcm9sbCA9IHNj
cm9sbDsKIAotICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBXZWJLaXQ6OlNjcm9sbGluZ0lu
Y3JlbWVudDo6RG9jdW1lbnQpIHsKKyAgICBpZiAoc2Nyb2xsLT5pbmNyZW1lbnQgPT0gV2ViQ29y
ZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7
IH07CiAgICAgICAgIFtzZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0
b3BEaXNwbGF5TGlua107CkBAIC0zNjAsMTYgKzMzOCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94
U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9
CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlv
bihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQg
ZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6
RmxvYXRQb2ludCBiLCBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewog
ICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVj
dGlvbjo6VXA6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgogICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChhLngoKSwgc3RkOjptaW4oYS55KCksIGIu
eSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEueSgpLCBiLnkoKSkpOwotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpT
Y3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBv
aW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVj
dGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWF4
KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NDQsNyBAQCBzdGF0
aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6
RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Nyb2xsYWJsZUZv
cktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zsb2F0KWRpc3Rh
bmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5E
aXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9h
dClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3Jl
bWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgog
ewogICAgIGF1dG8gc2Nyb2xsVmlldyA9IF9zY3JvbGxWaWV3LmdldEF1dG9yZWxlYXNlZCgpOwog
ICAgIGlmICghc2Nyb2xsVmlldykKQEAgLTU3NSwxNSArNTUzLDE1IEBAIHN0YXRpYyBXZWJDb3Jl
OjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
IGEsIFdlYkNvCiAgICAgY29uc3QgQ0dGbG9hdCBkZWZhdWx0UGFnZVNjcm9sbEZyYWN0aW9uID0g
MC44OwogICAgIGNvbnN0IENHRmxvYXQgZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgPSA0MDsKIAot
ICAgIEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09IFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpMZWZ0IHx8IGRpcmVjdGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGluZ0Rp
cmVjdGlvbjo6UmlnaHQ7CisgICAgQk9PTCBkaXJlY3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rp
b24gPT0gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0IHx8IGRpcmVjdGlvbiA9PSBX
ZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OwogCiAgICAgaWYgKCFfZGVsZWdhdGVS
ZXNwb25kc1RvRGlzdGFuY2VGb3JJbmNyZW1lbnQpIHsKICAgICAgICAgc3dpdGNoIChpbmNyZW1l
bnQpIHsKLSAgICAgICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6
CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKICAg
ICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRl
bnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6CisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOgogICAgICAgICAgICAgcmV0dXJuIChkaXJlY3Rp
b25Jc0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmZyYW1lLnNpemUud2lkdGggOiBzY3JvbGxWaWV3
LmZyYW1lLnNpemUuaGVpZ2h0KSAqIGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb247Ci0gICAgICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU6CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgogICAgICAgICAgICAgcmV0dXJuIGRlZmF1
bHRMaW5lU2Nyb2xsSGVpZ2h0ICogc2Nyb2xsVmlldy56b29tU2NhbGU7CiAgICAgICAgIH0KICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDU3OWM0ZTg5NDkxZDJhYTQ1ZmZl
ZWUwNDlhYjBlMjU2NDEyMTljYzkuLjkyMjYwZGM0YjY1NmNkZjE1YTA2MmYzYzQ2NGFkMGQ2NTY3
ODUwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAvLyBJZiB0aGVyZSBh
cmUgbm8gdGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRlZmF1bHQga2V5ZG93biBoYW5kbGVyIGlz
IHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmRzLgogICAgIC8vIEtleXByZXNz
IChDaGFyIGV2ZW50KSBoYW5kbGVyIGlzIHRoZSBsYXRlc3Qgb3Bwb3J0dW5pdHkgdG8gZXhlY3V0
ZS4KICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpIHsKLSAgICAgICAgZXZlbnRXYXNIYW5kbGVk
ID0gZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb21tYW5kcywgJmV2ZW50KTsKKyAg
ICAgICAgZXZlbnRXYXNIYW5kbGVkID0gZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChj
b21tYW5kcywgJmV2ZW50KTsgCiAgICAgICAgIGNvbW1hbmRzLmNsZWFyKCk7CiAgICAgfQogCkBA
IC00NTMsNDUgKzQ1Myw0OCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25h
cnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZTZWxlYwogCiBib29sIFdlYlBh
Z2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICAvLyBGaXJzdCBnaXZlIGFjY2Vz
c2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVudC4KLSAgICBGcmFtZSogZnJhbWUg
PSBmcmFtZUZvckV2ZW50KGV2ZW50KTsKLSAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxl
S2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsKLSAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
Ly8gRklYTUU6IEFsbCB0aGVzZSBzZWxlY3RvcnMgaGF2ZSBjb3JyZXNwb25kaW5nIEVkaXRvciBj
b21tYW5kcywgYnV0IHRoZSBjb21tYW5kcyBvbmx5IHdvcmsgaW4gZWRpdGFibGUgY29udGVudC4K
LSAgICAvLyBTaG91bGQgc3VjaCBub24tZWRpdGluZyBiZWhhdmlvcnMgYmUgaW1wbGVtZW50ZWQg
aW4gRWRpdG9yIG9yIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKCkgcGVy
aGFwcz8KKyAgICAvLyAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFu
ZGxlIHRoZSBldmVudC4KKyAgICAvLyBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50
KTsKKyAgICAvLyBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25N
b3ZlbWVudEZvckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsKKyAgICAvLyBpZiAoZXZlbnQtPmRlZmF1
bHRIYW5kbGVkKCkpCisgICAgLy8gICAgIHJldHVybiB0cnVlOworCisgICAgLy8gLy8gRklYTUU6
IEFsbCB0aGVzZSBzZWxlY3RvcnMgaGF2ZSBjb3JyZXNwb25kaW5nIEVkaXRvciBjb21tYW5kcywg
YnV0IHRoZSBjb21tYW5kcyBvbmx5IHdvcmsgaW4gZWRpdGFibGUgY29udGVudC4KKyAgICAvLyAv
LyBTaG91bGQgc3VjaCBub24tZWRpdGluZyBiZWhhdmlvcnMgYmUgaW1wbGVtZW50ZWQgaW4gRWRp
dG9yIG9yIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKCkgcGVyaGFwcz8K
KyAgICAKKyAgICAvLyBib29sIGRpZFBlcmZvcm1BY3Rpb24gPSBmYWxzZTsKKyAgICAKKyAgICAv
LyBpZiAoc2VsZWN0b3IgPT0gIm1vdmVVcDoiKQorICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5TGluZSk7CisgICAgLy8g
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOiIpCisgICAg
Ly8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwg
U2Nyb2xsQnlQYWdlKTsKKyAgICAvLyBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvQmVnaW5u
aW5nT2ZEb2N1bWVudDoiKSB7CisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgLy8gICAgIGRp
ZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xs
QnlEb2N1bWVudCk7CisgICAgLy8gfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZURvd246IikK
KyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bERvd24sIFNjcm9sbEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVU
b0VuZE9mUGFyYWdyYXBoOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgIC8vIGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAgICAvLyAgICAgZGlkUGVy
Zm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9j
dW1lbnQpOworICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0
KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIC8vIH0gZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgIC8vIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZExlZnQ6IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFj
dGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5UGFnZSk7Cisg
ICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0xlZnRFbmRPZkxpbmU6IikKKyAgICAv
LyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9
PSBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBtX3BhZ2UtPmJh
Y2tGb3J3YXJkKCkuZ29CYWNrKCkgOiBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCk7
CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgIC8vICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9s
bEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikK
KyAgICAvLyAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xs
UmlnaHQsIFNjcm9sbEJ5UGFnZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVU
b1JpZ2h0RW5kT2ZMaW5lOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdl
LT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOworICAgIAorICAgIC8vIHJldHVybiBkaWRQZXJmb3Jt
QWN0aW9uOworICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBib29sIGRpZFBlcmZvcm1BY3Rp
b24gPSBmYWxzZTsKLQotICAgIGlmIChzZWxlY3RvciA9PSAibW92ZVVwOiIpCi0gICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlM
aW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3Jh
cGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbFVwLCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxC
eURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlRG93bjoiKQotICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwg
U2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZQYXJh
Z3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1v
dmVUb0VuZE9mRG9jdW1lbnQ6IikgewotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xs
QnlEb2N1bWVudCk7Ci0gICAgfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZUxlZnQ6IikKLSAg
ICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQs
IFNjcm9sbEJ5TGluZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoi
KQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xs
TGVmdCwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVm
dEVuZE9mTGluZToiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKSA6IG1fcGFnZS0+YmFja0Zvcndh
cmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIp
Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxS
aWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRS
aWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1v
dmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdl
LT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwotCi0gICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247
CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431361</attachid>
            <date>2021-06-14 13:52:16 -0700</date>
            <delta_ts>2021-06-17 14:07:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210614165214.patch</filename>
            <type>text/plain</type>
            <size>28225</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwY2QwOGIyZTgzY2Fh
YTFmMjkwNDk5ZjM2YmUxZjk3MTE0MzU3Zi4uOWU1NmUxNDM0YTU4NzQxYWUwYjlmNjFlMDMyNzU4
ZjBkZjM3YzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hdmlnYXRlIE1hY09TIGtl
eWJvYXJkIHNjcm9sbGluZyBhbmQgdXNlIEtleWJvYXJkU2Nyb2xsIHN0cnVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYXZpZ2F0ZSBNYWNPUyBr
ZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKworICAgICAg
ICBObyB0ZXN0cyB5ZXQKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnVuaXRWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpTY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRl
ZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjpzY3JvbGwpOgorCiAyMDIxLTA2LTE0ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1MgdmFyaWFibGVzIG5vdCBo
YW5kbGVkIGFzIGNhc2Ugc2Vuc2l0aXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI1NmUxYjRhYTJmZWE5ZmIxM2I0
NjExMWI4MGNlMWRmOGIzNTg5NjAuLmEwM2EyYTg2NzFiZmNiM2I4NzZhNTlkMDM4YjQ4YWUzYTU0
NDM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDYtMTQgIERhbmEgRXN0cmEg
IDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5Ym9hcmQg
c2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciBwYXJhbWV0ZXJzXSk6CisgICAgICAgICh1bml0VmVjdG9yKToKKyAgICAgICAgKHBlcnBl
bmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IpOgorICAgICAgICAoYm94U2lkZSk6CisgICAgICAg
ICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBrZXlib2FyZFNjcm9sbEZvckV2ZW50Ol0p
OgorICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgYmVnaW5XaXRoRXZlbnQ6
XSk6CisgICAgICAgIChmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24pOgorICAgICAgICAoLVtXS0tl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OmluRGlyZWN0aW9u
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0
b3IpOgorCiAyMDIxLTA2LTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBY2Nlc3NpbmcgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2Vz
IGFmdGVyIGdyYW50aW5nIHBlcm1pc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCA5Njk4NmI1MzA5MWJjNjkwZTZmY2Q0Y2IwNjdhYmEwMjFhMzU2MDcyLi5hNjRlNWU5
YmQ1ODcwOTllMmZiNjUyNmI0OTk1NjVjMzBkNjA5YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJLZXlib2FyZFNjcm9sbC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgpAQCAtNDIzNSw2ICs0MjM2LDUzIEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2
ZW50KQogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCitjb25zdCBXZWJD
b3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMmIEV2ZW50SGFuZGxlcjo6cGFyYW1ldGVycygp
Cit7CisgICAgc3RhdGljIGNvbnN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitGbG9hdFNpemUgRXZlbnRIYW5kbGVyOjp1
bml0VmVjdG9yKFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXA6CisgICAgICAgIHJldHVybiB7MCwgLTF9OworICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xs
aW5nRGlyZWN0aW9uOjpEb3duOgorICAgICAgICByZXR1cm4gezAsIDF9OworICAgIGNhc2UgV2Vi
Q29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgICAgICByZXR1cm4gey0xLCAwfTsK
KyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgICAgIHJl
dHVybiB7MSwgMH07CisgICAgfQorfQorCitDR0Zsb2F0IEV2ZW50SGFuZGxlcjo6U2Nyb2xsRGlz
dGFuY2UoV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgV2ViQ29yZTo6U2Ny
b2xsaW5nSW5jcmVtZW50IGluY3JlbWVudCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSAmbV9mcmFt
ZTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworCisgICAgU2Nyb2xsYmFy
KiBzY3JvbGxiYXI7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJl
Y3Rpb246OlVwIHx8IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkRv
d24pIAorICAgICAgICBzY3JvbGxiYXIgPSB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAg
IGVsc2UgCisgICAgICAgIHNjcm9sbGJhciA9IHZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKTsK
KyAgICAKKworICAgIENHRmxvYXQgc3RlcCA9IDA7CisgICAgc3dpdGNoIChpbmNyZW1lbnQpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZToKKyAgICAgICAgc3Rl
cCA9IHNjcm9sbGJhci0+bGluZVN0ZXAoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJD
b3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXIt
PnBhZ2VTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5n
SW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+dG90YWxTaXpl
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBzdGVwOworfQogCiB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZv
Y3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKQEAgLTQyNTcsNiArNDMwNSw2
NyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGly
ZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogCiAgICAgaWYgKHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmFkdmFuY2VGb2N1cyhmb2N1c0RpcmVjdGlvbiwgJmV2ZW50KSkKICAgICAgICAgZXZl
bnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKKworICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhfdCB7
IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBBcnJvdywgRG93bkFycm93LCBQYWdlVXAsIFBhZ2VE
b3duIH07CisKKyAgICBLZXkga2V5OworICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0g
IkxlZnQiKQorICAgICAgICBrZXkgPSBLZXk6OkxlZnRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVu
dC5rZXlJZGVudGlmaWVyKCkgPT0gIlJpZ2h0IikKKyAgICAgICAga2V5ID0gS2V5OjpSaWdodEFy
cm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVXAiKQorICAgICAg
ICBrZXkgPSBLZXk6OlVwQXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigp
ID09ICJEb3duIikKKyAgICAgICAga2V5ID0gS2V5OjpEb3duQXJyb3c7CisgICAgZWxzZSBpZiAo
ZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJQYWdlRG93biIpCisgICAgICAgIGtleSA9IEtleTo6
UGFnZURvd247CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJQYWdlVXAi
KQorICAgICAgICBrZXkgPSBLZXk6OlBhZ2VVcDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gaW5jcmVtZW50ID0gXigpIHsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAg
ICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6
CisgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93
OgorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsK
KyAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKKyAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgor
ICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAg
ICAgICAgfTsKKyAgICB9KCk7CisKKyAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CisgICAgICAg
IHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OworICAgICAgICBjYXNl
IEtleTo6UmlnaHRBcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdE
aXJlY3Rpb246OlJpZ2h0OworICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKKyAgICAgICAgY2Fz
ZSBLZXk6OlBhZ2VVcDoKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdEaXJl
Y3Rpb246OlVwOworICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICBjYXNlIEtl
eTo6UGFnZURvd246CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0
aW9uOjpEb3duOworICAgICAgICB9OworICAgIH0oKTsKKworICAgIAorICAgIENHRmxvYXQgc2Ny
b2xsRGlzdGFuY2UgPSBTY3JvbGxEaXN0YW5jZShkaXJlY3Rpb24sIGluY3JlbWVudCk7CisgICAg
CisgICAgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOworCisgICAgc2Nyb2xsLm9mZnNl
dCA9IHVuaXRWZWN0b3IoZGlyZWN0aW9uKS5zY2FsZWQoc2Nyb2xsRGlzdGFuY2UpOworICAgIHNj
cm9sbC5pbmNyZW1lbnQgPSBpbmNyZW1lbnQ7CisgICAgc2Nyb2xsLmRpcmVjdGlvbiA9IGRpcmVj
dGlvbjsKKyAgICBzY3JvbGwubWF4aW11bVZlbG9jaXR5ID0gc2Nyb2xsLm9mZnNldC5zY2FsZWQo
dGhpcy0+cGFyYW1ldGVycygpLm1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOworCisgICAgc2Ny
b2xsLmZvcmNlID0gc2Nyb2xsLm1heGltdW1WZWxvY2l0eS5zY2FsZWQodGhpcy0+cGFyYW1ldGVy
cygpLnNwcmluZ01hc3MgLyB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTWF4aW11bVZlbG9jaXR5
KTsKKworCisgICAgRXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSgoU2Nyb2xsRGlyZWN0
aW9uKWRpcmVjdGlvbiwgKFNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVudCwgbnVsbHB0cik7CiB9
CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0VGFiRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZl
bnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggOWZiNTJiMmU5ZmJk
ODU3MzE1MzRhNmIyOGE5MWEzNjljMzc4NzdkMi4uMGU1N2RlMjEwNWY4MDhkYTE5MjAxZmI0NzM4
NTlkMjVmOTRmYjliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlv
bi5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3Jv
bGwuaCIKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VF
dmVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtMzc1LDYgKzM3NiwxMiBAQCBw
cml2YXRlOgogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50RG91YmxlQ2xpY2soY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVz
c0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwog
CisKKyAgICBjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMoKTsKKyAgICBzdGF0aWMgRmxvYXRTaXplIHVuaXRWZWN0b3IoV2ViQ29yZTo6U2Nyb2xsaW5n
RGlyZWN0aW9uKTsKKyAgICBDR0Zsb2F0IFNjcm9sbERpc3RhbmNlKFdlYkNvcmU6OlNjcm9sbGlu
Z0RpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50KTsKKworCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBib29sIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzID0gU2hvdWxk
Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CiAgICAgYm9vbCBzaG91bGRBbGxvd01vdXNlRG93blRvU3Rh
cnREcmFnKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJk
U2Nyb2xsLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjFhYjczZjQ2ODBkZmI0MmU4OTkzYmU1NmNhMmFhM2IxM2I4ZjlkYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuaApAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ZW51bSBjbGFzcyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50OF90IHsKKyAgICBMaW5lLAorICAg
IFBhZ2UsCisgICAgRG9jdW1lbnQKK307CisKK2VudW0gY2xhc3MgU2Nyb2xsaW5nRGlyZWN0aW9u
IDogdWludDhfdCB7CisgICAgVXAsCisgICAgRG93biwKKyAgICBMZWZ0LAorICAgIFJpZ2h0Cit9
OworCitzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGwgeworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvZmZz
ZXQ7IC8vIFBvaW50cyBwZXIgaW5jcmVtZW50LgorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhp
bXVtVmVsb2NpdHk7IC8vIFBvaW50cyBwZXIgc2Vjb25kLgorICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBmb3JjZTsKKworICAgIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnQ7Cisg
ICAgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgeworICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsK
KyAgICBDR0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIENHRmxvYXQgc3ByaW5n
RGFtcGluZyB7IDIwIH07CisKKyAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIg
eyAyNSB9OworICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAg
Q0dGbG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07Cit9OworCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQppbmRleCBiMWVjMmM2NGJlNWI2NzMwY2RkYzJjMGM4MDg1ZWQyOWI3NDg5OTAzLi40
OTA3Yzc1ZTczMDE2NjQ3NzEwOTQwZmM3NmU1ZTcwZWE3MTg1NzE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC03ODAsNiArNzgw
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcmkKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbCAiIDw8ICIgZnJvbSAi
IDw8IGN1cnJlbnRQb3NpdGlvbigpIDw8ICIgdG8gIiA8PCBuZXdQb3NpdGlvbik7CiAgICAgW21f
c2Nyb2xsQW5pbWF0aW9uSGVscGVyIHNjcm9sbFRvUG9pbnQ6bmV3UG9zaXRpb25dOworICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgKaW5kZXggM2ZmODNiNjU1YWNj
MGRlN2NhYjgyNGU5Y2EzMzVhMjRlMjc1ZTJkOC4uMTQ1OTVmZTQ4MTk1ZGFlZTQzNGUxM2E1MzBj
ZDI0NGZkZjNmYTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaApAQCAtMjksMjIgKzI5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKIH0KIAotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWVudW0gY2xhc3MgU2Nyb2xsaW5nSW5jcmVtZW50IDogdWludDhfdCB7Ci0gICAgRG9j
dW1lbnQsCi0gICAgUGFnZSwKLSAgICBMaW5lCi19OwotCi1lbnVtIGNsYXNzIFNjcm9sbGluZ0Rp
cmVjdGlvbiA6IHVpbnQ4X3QgewotICAgIFVwLAotICAgIERvd24sCi0gICAgTGVmdCwKLSAgICBS
aWdodAotfTsKLQotfQogCiBAY2xhc3MgVUlTY3JvbGxWaWV3OwogQGNsYXNzIFdlYkV2ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IubW0KaW5kZXggMzkyN2UyY2NkMWNhMTE1YjAwNmU2NjEyNTQzMDExZGJl
NmQ4Nzg2OS4uNDQ4ODhkNTU4YjQ4NjdmZjhlM2U2OGQwMDU2Nzk4YWJjYzYzZjdjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL0NB
RGlzcGxheUxpbmsuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9LZXlFdmVudENvZGVzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkU2Ny
b2xsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlY3RFZGdlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1VJS2l0U1BJLmg+CkBAIC00MCwzNCArNDEsMTEg
QEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IEtleWJvYXJkU2Nyb2xsIHsKLSAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgb2Zmc2V0OyAvLyBQb2ludHMgcGVyIGluY3JlbWVudC4KLSAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVZlbG9jaXR5OyAvLyBQb2ludHMgcGVyIHNlY29uZC4K
LSAgICBXZWJDb3JlOjpGbG9hdFNpemUgZm9yY2U7Ci0KLSAgICBXZWJLaXQ6OlNjcm9sbGluZ0lu
Y3JlbWVudCBpbmNyZW1lbnQ7Ci0gICAgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0
aW9uOwotfTsKLQotc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyB7Ci0gICAgQ0dGbG9h
dCBzcHJpbmdNYXNzIHsgMSB9OwotICAgIENHRmxvYXQgc3ByaW5nU3RpZmZuZXNzIHsgMTA5IH07
Ci0gICAgQ0dGbG9hdCBzcHJpbmdEYW1waW5nIHsgMjAgfTsKLQotICAgIENHRmxvYXQgbWF4aW11
bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1IH07Ci0gICAgQ0dGbG9hdCB0aW1lVG9NYXhpbXVtVmVs
b2NpdHkgeyAxIH07Ci0KLSAgICBDR0Zsb2F0IHJ1YmJlckJhbmRGb3JjZSB7IDUwMDAgfTsKLX07
Ci0KLX0KIAogQHByb3RvY29sIFdLS2V5Ym9hcmRTY3JvbGxhYmxlSW50ZXJuYWwgPE5TT2JqZWN0
PgogQHJlcXVpcmVkCiAtIChCT09MKWlzS2V5Ym9hcmRTY3JvbGxhYmxlOwotLSAoQ0dGbG9hdClk
aXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50
IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb247CistIChD
R0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQp
aW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0
aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQp
b2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClzY3JvbGxXaXRoU2Nyb2xs
VG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChDR1BvaW50KWNvbnRlbnRP
ZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
ewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBfc2Nyb2xsYWJsZTsKICAg
ICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwogCi0gICAgc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKIAogICAgIEJP
T0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsxMDIsOSBAQCBz
dHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2VsZjsKIH0KIAot
LSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0ZXJzCist
IChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0ZXJzCiB7
Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0xMzcsNDcgKzEx
NSw0NyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBfc2Nyb2xsYWJs
ZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVjdG9yKFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdFNp
emUgdW5pdFZlY3RvcihXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewog
ICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVj
dGlvbjo6VXA6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgogICAg
ICAgICByZXR1cm4geyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b246OkRvd246CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246CiAg
ICAgICAgIHJldHVybiB7IDAsIDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0Ogog
ICAgICAgICByZXR1cm4geyAtMSwgMCB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdo
dDoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9OwogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6
OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJzb2x1dGVVbml0VmVjdG9yKFdlYktpdDo6U2Nyb2xs
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgcGVycGVu
ZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNj
cm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246CiAgICAgICAgIHJldHVybiB7
IDEsIDAgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgotICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29y
ZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5n
RGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAot
c3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYkNvcmU6OlNj
cm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsK
LSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNv
cmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hT
aWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAg
ICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0
OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVmdDsKLSAgICBjYXNlIFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpSaWdo
dDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4p
a2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CistIChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9sbEZvckV2ZW50Oig6Oldl
YkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5
ID0gMHgyMDsKIApAQCAtMjU1LDQ4ICsyMzMsNDggQEAgc3RhdGljIFdlYkNvcmU6OkJveFNpZGUg
Ym94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgICAgIGNh
c2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgogICAgICAg
ICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Ny
b2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3Jv
bGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpMaW5lOwogICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKICAgICAgICAg
Y2FzZSBLZXk6OkRvd25BcnJvdzoKICAgICAgICAgICAgIGlmIChhbHRQcmVzc2VkKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwogICAg
ICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6
OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKKyAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6
CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKICAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgot
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAg
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKICAgICAg
ICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAg
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOwogICAgICAg
ICB9OwogICAgIH0oKTsKIAogICAgIGF1dG8gZGlyZWN0aW9uID0gXigpIHsKICAgICAgICAgc3dp
dGNoIChrZXkpIHsKICAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKLSAgICAgICAgICAgIHJl
dHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CiAgICAgICAgIGNhc2UgS2V5OjpS
aWdodEFycm93OgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpSaWdodDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246
OlJpZ2h0OwogICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlBh
Z2VVcDoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA7
CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDsKICAg
ICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgot
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOworICAg
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKICAgICAg
ICAgY2FzZSBLZXk6OlNwYWNlOgotICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpEb3duOworICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IFdlYkNvcmU6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6VXAgOiBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd247CiAg
ICAgICAgIGNhc2UgS2V5OjpPdGhlcjoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOwor
ICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKICAg
ICAgICAgfTsKICAgICB9KCk7CiAKICAgICBDR0Zsb2F0IHNjcm9sbERpc3RhbmNlID0gW19zY3Jv
bGxhYmxlIGRpc3RhbmNlRm9ySW5jcmVtZW50OmluY3JlbWVudCBpbkRpcmVjdGlvbjpkaXJlY3Rp
b25dOwogCi0gICAgV2ViS2l0OjpLZXlib2FyZFNjcm9sbCBzY3JvbGw7CisgICAgV2ViQ29yZTo6
S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOwogICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0VmVjdG9yKGRp
cmVjdGlvbikuc2NhbGVkKHNjcm9sbERpc3RhbmNlKTsKICAgICBzY3JvbGwuaW5jcmVtZW50ID0g
aW5jcmVtZW50OwogICAgIHNjcm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CkBAIC0zMjcsNyAr
MzA1LDcgQEAgc3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQg
PSBZRVM7CiAgICAgX2N1cnJlbnRTY3JvbGwgPSBzY3JvbGw7CiAKLSAgICBpZiAoc2Nyb2xsLT5p
bmNyZW1lbnQgPT0gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50KSB7CisgICAg
aWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9j
dW1lbnQpIHsKICAgICAgICAgX3ZlbG9jaXR5ID0geyB9OwogICAgICAgICBbc2VsZiBzdG9wQW5p
bWF0ZWRTY3JvbGxdOwogICAgICAgICBbc2VsZiBzdG9wRGlzcGxheUxpbmtdOwpAQCAtMzYwLDE2
ICszMzgsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29yZTo6Rmxv
YXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IGIsIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihX
ZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViQ29yZTo6U2Ny
b2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29y
ZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0
UG9pbnQoYS54KCksIHN0ZDo6bWluKGEueSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb246OkRvd246CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkRvd246CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KGEueCgpLCBz
dGQ6Om1heChhLnkoKSwgYi55KCkpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0Ogog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChzdGQ6Om1pbihhLngoKSwgYi54KCkp
LCBhLnkoKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6Cisg
ICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICByZXR1
cm4gV2ViQ29yZTo6RmxvYXRQb2ludChzdGQ6Om1heChhLngoKSwgYi54KCkpLCBhLnkoKSk7CiAg
ICAgfQogCkBAIC01NjYsNyArNTQ0LDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFy
dGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBy
ZXR1cm4gW19kZWxlZ2F0ZSBpc1Njcm9sbGFibGVGb3JLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRv
cjpzZWxmXTsKIH0KIAotLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpT
Y3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbilkaXJlY3Rpb24KKy0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdl
YkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYkNvcmU6
OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb24KIHsKICAgICBhdXRvIHNjcm9sbFZpZXcgPSBf
c2Nyb2xsVmlldy5nZXRBdXRvcmVsZWFzZWQoKTsKICAgICBpZiAoIXNjcm9sbFZpZXcpCkBAIC01
NzUsMTUgKzU1MywxNSBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50
SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIGNvbnN0IENHRmxv
YXQgZGVmYXVsdFBhZ2VTY3JvbGxGcmFjdGlvbiA9IDAuODsKICAgICBjb25zdCBDR0Zsb2F0IGRl
ZmF1bHRMaW5lU2Nyb2xsSGVpZ2h0ID0gNDA7CiAKLSAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpv
bnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdCB8fCBk
aXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OworICAgIEJPT0wg
ZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9sbGluZ0Rp
cmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpSaWdodDsKIAogICAgIGlmICghX2RlbGVnYXRlUmVzcG9uZHNUb0Rpc3RhbmNlRm9ySW5jcmVt
ZW50KSB7CiAgICAgICAgIHN3aXRjaCAoaW5jcmVtZW50KSB7Ci0gICAgICAgIGNhc2UgV2ViS2l0
OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OgorICAgICAgICBjYXNlIFdlYkNvcmU6OlNj
cm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6CiAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9u
SXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCA6IHNjcm9sbFZpZXcu
Y29udGVudFNpemUuaGVpZ2h0OwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVt
ZW50OjpQYWdlOgorICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFn
ZToKICAgICAgICAgICAgIHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmll
dy5mcmFtZS5zaXplLndpZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZh
dWx0UGFnZVNjcm9sbEZyYWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5j
cmVtZW50OjpMaW5lOgorICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6
TGluZToKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCAqIHNjcm9s
bFZpZXcuem9vbVNjYWxlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCAyYWIxMDg0YzVjZGM0YjNmYThlNGViNzI1NTQxYjY4NjA1MDI0ODRlLi5kZjhi
MDY2MjY3YTdhNzIyNDJjNDY4N2RiNmIxZmI3MjdlOTI2NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzEyLDcgKzMx
Miw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1h
bmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0byBleGVjdXRl
IHRoZSBjb21tYW5kcy4KICAgICAvLyBLZXlwcmVzcyAoQ2hhciBldmVudCkgaGFuZGxlciBpcyB0
aGUgbGF0ZXN0IG9wcG9ydHVuaXR5IHRvIGV4ZWN1dGUuCiAgICAgaWYgKCFoYXZlVGV4dEluc2Vy
dGlvbkNvbW1hbmRzIHx8IHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpD
aGFyKSB7Ci0gICAgICAgIGV2ZW50V2FzSGFuZGxlZCA9IGV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRz
SW50ZXJuYWwoY29tbWFuZHMsICZldmVudCk7CisgICAgICAgIGV2ZW50V2FzSGFuZGxlZCA9IGV4
ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwoY29tbWFuZHMsICZldmVudCk7IAogICAgICAg
ICBjb21tYW5kcy5jbGVhcigpOwogICAgIH0KIApAQCAtNDUzLDQ1ICs0NTMsNDggQEAgRGljdGlv
bmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5Q
REZQbHVnaW4oUERGU2VsZWMKIAogYm9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2
aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiB7Ci0gICAgLy8gRmlyc3QgZ2l2ZSBhY2Nlc3NpYmlsaXR5IGEgY2hhbmNlIHRvIGhhbmRs
ZSB0aGUgZXZlbnQuCi0gICAgRnJhbWUqIGZyYW1lID0gZnJhbWVGb3JFdmVudChldmVudCk7Ci0g
ICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRG
b3JBY2Nlc3NpYmlsaXR5KCpldmVudCk7Ci0gICAgaWYgKGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIEZJWE1FOiBBbGwgdGhlc2Ugc2VsZWN0
b3JzIGhhdmUgY29ycmVzcG9uZGluZyBFZGl0b3IgY29tbWFuZHMsIGJ1dCB0aGUgY29tbWFuZHMg
b25seSB3b3JrIGluIGVkaXRhYmxlIGNvbnRlbnQuCi0gICAgLy8gU2hvdWxkIHN1Y2ggbm9uLWVk
aXRpbmcgYmVoYXZpb3JzIGJlIGltcGxlbWVudGVkIGluIEVkaXRvciBvciBFdmVudEhhbmRsZXI6
OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcigpIHBlcmhhcHM/CisgICAgLy8gLy8gRmlyc3QgZ2l2
ZSBhY2Nlc3NpYmlsaXR5IGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgZXZlbnQuCisgICAgLy8gRnJh
bWUqIGZyYW1lID0gZnJhbWVGb3JFdmVudChldmVudCk7CisgICAgLy8gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KCpl
dmVudCk7CisgICAgLy8gaWYgKGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQorICAgIC8vICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIC8vIC8vIEZJWE1FOiBBbGwgdGhlc2Ugc2VsZWN0b3JzIGhhdmUg
Y29ycmVzcG9uZGluZyBFZGl0b3IgY29tbWFuZHMsIGJ1dCB0aGUgY29tbWFuZHMgb25seSB3b3Jr
IGluIGVkaXRhYmxlIGNvbnRlbnQuCisgICAgLy8gLy8gU2hvdWxkIHN1Y2ggbm9uLWVkaXRpbmcg
YmVoYXZpb3JzIGJlIGltcGxlbWVudGVkIGluIEVkaXRvciBvciBFdmVudEhhbmRsZXI6OmRlZmF1
bHRBcnJvd0V2ZW50SGFuZGxlcigpIHBlcmhhcHM/CisgICAgCisgICAgLy8gYm9vbCBkaWRQZXJm
b3JtQWN0aW9uID0gZmFsc2U7CisgICAgCisgICAgLy8gaWYgKHNlbGVjdG9yID09ICJtb3ZlVXA6
IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3Zl
VG9CZWdpbm5pbmdPZlBhcmFncmFwaDoiKQorICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0g
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7CisgICAgLy8gZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgeworICAgIC8v
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNj
cm9sbEJ5RG9jdW1lbnQpOworICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIC8vIH0gZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVEb3duOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOworICAg
IC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQorICAgIC8v
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwg
U2Nyb2xsQnlQYWdlKTsKKyAgICAvLyBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZE
b2N1bWVudDoiKSB7CisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdl
LmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAvLyAgICAgZGlkUGVy
Zm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURv
Y3VtZW50KTsKKyAgICAvLyB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlTGVmdDoiKQorICAg
IC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVm
dCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAvLyBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRM
ZWZ0OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBt
X3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpIDogbV9w
YWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlUmlnaHQ6IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUpOworICAgIC8vIGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlV29yZFJpZ2h0OiIpCisgICAgLy8gICAgZGlkUGVyZm9ybUFjdGlv
biA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2UpOworICAg
IC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9SaWdodEVuZE9mTGluZToiKQorICAgIC8v
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09
IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFj
a0ZvcndhcmQoKS5nb0ZvcndhcmQoKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKTsK
KyAgICAKKyAgICAvLyByZXR1cm4gZGlkUGVyZm9ybUFjdGlvbjsKKyAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgYm9vbCBkaWRQZXJmb3JtQWN0aW9uID0gZmFsc2U7Ci0KLSAgICBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVVcDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5TGluZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0
b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOiIpCi0gICAgICAgIGRpZFBlcmZvcm1B
Y3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKLSAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudDoiKSB7Ci0g
ICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwg
U2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgfSBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZURvd246IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5TGluZSk7Ci0gICAgZWxzZSBp
ZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFyYWdyYXBoOiIpCi0gICAgICAgIGRpZFBlcmZv
cm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2Up
OwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKLSAg
ICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24s
IFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBp
ZiAoc2VsZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZExlZnQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlv
biA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5UGFnZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0xlZnRFbmRPZkxpbmU6IikKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBXZWJDb3Jl
OjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBtX3BhZ2UtPmJhY2tGb3J3YXJk
KCkuZ29CYWNrKCkgOiBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCk7Ci0gICAgZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5TGluZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikKLSAgICAgICAgZGlkUGVyZm9y
bUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2Up
OwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9SaWdodEVuZE9mTGluZToiKQotICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09
IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFj
a0ZvcndhcmQoKS5nb0ZvcndhcmQoKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKTsK
LQotICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431719</attachid>
            <date>2021-06-17 14:07:04 -0700</date>
            <delta_ts>2021-06-21 15:22:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210617170703.patch</filename>
            <type>text/plain</type>
            <size>34773</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwY2QwOGIyZTgzY2Fh
YTFmMjkwNDk5ZjM2YmUxZjk3MTE0MzU3Zi4uOWU1NmUxNDM0YTU4NzQxYWUwYjlmNjFlMDMyNzU4
ZjBkZjM3YzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hdmlnYXRlIE1hY09TIGtl
eWJvYXJkIHNjcm9sbGluZyBhbmQgdXNlIEtleWJvYXJkU2Nyb2xsIHN0cnVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYXZpZ2F0ZSBNYWNPUyBr
ZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKworICAgICAg
ICBObyB0ZXN0cyB5ZXQKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnVuaXRWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpTY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRl
ZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjpzY3JvbGwpOgorCiAyMDIxLTA2LTE0ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1MgdmFyaWFibGVzIG5vdCBo
YW5kbGVkIGFzIGNhc2Ugc2Vuc2l0aXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI1NmUxYjRhYTJmZWE5ZmIxM2I0
NjExMWI4MGNlMWRmOGIzNTg5NjAuLmEwM2EyYTg2NzFiZmNiM2I4NzZhNTlkMDM4YjQ4YWUzYTU0
NDM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDYtMTQgIERhbmEgRXN0cmEg
IDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5Ym9hcmQg
c2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciBwYXJhbWV0ZXJzXSk6CisgICAgICAgICh1bml0VmVjdG9yKToKKyAgICAgICAgKHBlcnBl
bmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IpOgorICAgICAgICAoYm94U2lkZSk6CisgICAgICAg
ICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBrZXlib2FyZFNjcm9sbEZvckV2ZW50Ol0p
OgorICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgYmVnaW5XaXRoRXZlbnQ6
XSk6CisgICAgICAgIChmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24pOgorICAgICAgICAoLVtXS0tl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OmluRGlyZWN0aW9u
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0
b3IpOgorCiAyMDIxLTA2LTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBY2Nlc3NpbmcgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2Vz
IGFmdGVyIGdyYW50aW5nIHBlcm1pc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyOTZmOTgyOTZjOWE2Y2I2NjY4MzM3NDRk
ZDVkYzc2NzcwYmU2ZjM1Li4zYmIxNmRkY2Q3MGZiNzc5NGM5ZjQ1Y2FjNzBjMTFkYzVlZmNhNDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02NjcsNiArNjY3LDcgQEAKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBp
Y3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1
cmVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4
RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkx
REY3RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1
NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5
QSAvKiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUYzNkVB
OUMxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzNkVBOUExRTIxQkEx
NzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGNzJCRjBCMTg3RkQ0NUMwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAv
KiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyog
V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3NTZCMTFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTcwNjQsNiArNzA2NSw3IEBACiAJCTFERUYwNkRDMjMzRDJF
MUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURFRjA2REQyMzNEMkUxQzAwRUUyMjhEIC8qIERv
Y3VtZW50UGljdHVyZUluUGljdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMURFRjA2REUyMzNEMkUxQzAwRUUyMjhEIC8qIERvY3VtZW50K1BpY3R1cmVJblBpY3R1cmUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJEb2N1bWVudCtQaWN0dXJlSW5QaWN0dXJlLmlk
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDIwQUVEMjY3ODBGQ0UwMDAwODA5
QSAvKiBLZXlib2FyZFNjcm9sbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZXlib2FyZFNjcm9sbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjM2RUE5QTFF
MjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjM2RUE5QjFFMjFCQTE3MDA2MjFFMjUgLyog
V2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxRjcyQkYwODE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMjUxMyw2ICsyMjUxNSw3IEBACiAJCQkJMEY0NzEwRDgxREI2RkUy
MjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuY3BwICovLAogCQkJCTBGNDcx
MEQ5MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggKi8sCiAJ
CQkJMEY0NzEwREExREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnku
aWRsICovLAorCQkJCTFGMDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5o
ICovLAogCQkJCTkzMUQ3MkY1MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAq
LywKIAkJCQlCQ0UxQzQxQTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLAogCQkJ
CUJDRTFDNDE5MEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLApAQCAtMzI2NDYsNyAr
MzI2NDksNiBAQAogCQkJCUU0QThEMjE2MjI1NzhEQjcwMEE4NDYzQyAvKiBFdmVudFJlZ2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTBGRUYzNzJCMTdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTJFREI3QjBCMzA4QTc4MDAyNzA0QjYgLyogRXZl
bnRUYXJnZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUUzQ0EwQkZDMjY3M0Y0N0MwMDlGREQ2NyAv
KiBKU0RPTUJpbmRpbmdTZWN1cml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0QjM0
OUEyMjJGODZFNzUwMEQ0N0JDRiAvKiBFdmVudFRhcmdldENvbmNyZXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0FBM0NBNjE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJn
ZXRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNDUzLDYgKzMzNDU1LDcgQEAKIAkJ
CQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjUgLyogSlNET01CaW5kaW5nSW50ZXJuYWxz
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNDVDOUQ0MUUzRkNCREYwMEFBQjU1OCAv
KiBKU0RPTUJpbmRpbmdTZWN1cml0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNDQTBCRkMyNjcz
RjQ3QzAwOUZERDY3IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjc5IC8qIEpTRE9NQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDRTE5MTczMUYyQUJFNzEwMDI3MkY3QSAvKiBKU0RPTUNhY2hlU3RvcmFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQxQzQ0MTYyNjBDMzhGRDAwRkY2NjczIC8qIEpTRE9N
Q2FzdFRoaXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDE1Nyw2ICszNDE2MCw3IEBACiAJ
CQkJQkNFRkUxRUIwRENBNUY2NDAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODNCNzRFRjYxRjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0NDBBNDRFRkM3MDBGOTkyRTAgLyog
S2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUYwMjBBRUYyNjc4MEZDRTAwMDA4
MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ1OTE4MkRB
QzhEMDAwODdERDcgLyogS2V5ZWRDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E2M0M1
MUI3NDMxOEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5Njk4NmI1MzA5MWJjNjkw
ZTZmY2Q0Y2IwNjdhYmEwMjFhMzU2MDcyLi5iMmUzNWJhZGMxYjM3YTc5NWYwMmNmNjRkZmU3MGVk
OGU0ZWVmZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02OCw2ICs2
OCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKKyNp
bmNsdWRlICJLZXlib2FyZFNjcm9sbC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5o
IgpAQCAtNDE4OSwyMiArNDE5MCwyMyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFNwYWNl
RXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIFJlZjxGcmFtZT4gcHJvdGVj
dGVkRnJhbWUobV9mcmFtZSk7CiAKICAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50KTsKLQorICAgIAogICAgIGlmIChldmVudC5jdHJsS2V5KCkgfHwg
ZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkp
CiAgICAgICAgIHJldHVybjsKLQorICAgIAogICAgIFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGly
ZWN0aW9uID0gZXZlbnQuc2hpZnRLZXkoKSA/IFNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQg
OiBTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQ7CiAgICAgaWYgKGxvZ2ljYWxTY3JvbGxPdmVy
ZmxvdyhkaXJlY3Rpb24sIFNjcm9sbEJ5UGFnZSkpIHsKICAgICAgICAgZXZlbnQuc2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAgIAogICAgIEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2Up
KQorICAgIGlmIChoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhldmVudCkpCiAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgCiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZh
dWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQpAQCAtNDIzNSw2
ICs0MjM3LDEyMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFu
ZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAorY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzJiBFdmVu
dEhhbmRsZXI6OnBhcmFtZXRlcnMoKQoreworICAgIHN0YXRpYyBjb25zdCBLZXlib2FyZFNjcm9s
bFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworRmxv
YXRTaXplIEV2ZW50SGFuZGxlcjo6dW5pdFZlY3RvcihXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBXZWJD
b3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgICAgICByZXR1cm4gezAsIC0xfTsKKyAg
ICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICAgICAgcmV0dXJu
IHswLCAxfTsKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDoKKyAg
ICAgICAgcmV0dXJuIHstMSwgMH07CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rp
b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gezEsIDB9OworICAgIH0KK30KKworQ0dGbG9hdCBF
dmVudEhhbmRsZXI6OlNjcm9sbERpc3RhbmNlKFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnQpCit7CisgICAg
RnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZp
ZXcoKTsKKworICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyOworICAgIGlmIChkaXJlY3Rpb24gPT0g
V2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCB8fCBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duKSAKKyAgICAgICAgc2Nyb2xsYmFyID0gdmlldy0+dmVy
dGljYWxTY3JvbGxiYXIoKTsKKyAgICBlbHNlIAorICAgICAgICBzY3JvbGxiYXIgPSB2aWV3LT5o
b3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgCisKKyAgICBDR0Zsb2F0IHN0ZXAgPSAwOworICAg
IHN3aXRjaCAoaW5jcmVtZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1l
bnQ6OkxpbmU6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXItPmxpbmVTdGVwKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOgorICAg
ICAgICBzdGVwID0gc2Nyb2xsYmFyLT5wYWdlU3RlcCgpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6CisgICAgICAgIHN0ZXAg
PSBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBy
ZXR1cm4gc3RlcDsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2Nyb2xs
aW5nKEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhf
dCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBBcnJvdywgRG93bkFycm93LCBQYWdlRG93biwg
UGFnZVVwLCBTcGFjZSB9OworCisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllcigpID09ICJMZWZ0IikKKyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7CisgICAgZWxz
ZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJSaWdodCIpCisgICAgICAgIGtleSA9IEtl
eTo6UmlnaHRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIlVw
IikKKyAgICAgICAga2V5ID0gS2V5OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIoKSA9PSAiRG93biIpCisgICAgICAgIGtleSA9IEtleTo6RG93bkFycm93OworICAg
IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiUGFnZURvd24iKQorICAgICAgICBr
ZXkgPSBLZXk6OlBhZ2VEb3duOworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9
PSAiUGFnZVVwIikKKyAgICAgICAga2V5ID0gS2V5OjpQYWdlVXA7CisgICAgZWxzZSBpZiAoZXZl
bnQuY2hhckNvZGUoKSA9PSAnICcpCisgICAgICAgIGtleSA9IEtleTo6U3BhY2U7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGluY3JlbWVudCA9IF4oKSB7Cisg
ICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAg
ICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKKyAg
ICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
Y3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6CisgICAg
ICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgorCisgICAg
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAgICAg
ICB9OworICAgIH0oKTsKKworICAgIGF1dG8gZGlyZWN0aW9uID0gXigpIHsKKyAgICAgICAgc3dp
dGNoIChrZXkpIHsKKyAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKKyAgICAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgIGNhc2UgS2V5
OjpSaWdodEFycm93OgorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVj
dGlvbjo6UmlnaHQ7CisgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgorICAgICAgICBjYXNlIEtl
eTo6UGFnZVVwOgorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXA7CisgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpQ
YWdlRG93bjoKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246
OkRvd247CisgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBldmVu
dC5zaGlmdEtleSgpID8gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFdlYkNvcmU6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgfTsKKyAgICB9KCk7CisKKyAgICBD
R0Zsb2F0IHNjcm9sbERpc3RhbmNlID0gU2Nyb2xsRGlzdGFuY2UoZGlyZWN0aW9uLCBpbmNyZW1l
bnQpOworICAgIAorICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKworICAgIHNj
cm9sbC5vZmZzZXQgPSB1bml0VmVjdG9yKGRpcmVjdGlvbikuc2NhbGVkKHNjcm9sbERpc3RhbmNl
KTsKKyAgICBzY3JvbGwuaW5jcmVtZW50ID0gaW5jcmVtZW50OworICAgIHNjcm9sbC5kaXJlY3Rp
b24gPSBkaXJlY3Rpb247CisgICAgc2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9IHNjcm9sbC5vZmZz
ZXQuc2NhbGVkKHRoaXMtPnBhcmFtZXRlcnMoKS5tYXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyKTsK
KworICAgIHNjcm9sbC5mb3JjZSA9IHNjcm9sbC5tYXhpbXVtVmVsb2NpdHkuc2NhbGVkKHRoaXMt
PnBhcmFtZXRlcnMoKS5zcHJpbmdNYXNzIC8gdGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb01heGlt
dW1WZWxvY2l0eSk7CisKKyAgICByZXR1cm4gRXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVs
eSgoU2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbiwgKFNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVu
dCwgbnVsbHB0cik7Cit9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhh
bmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQmIGV2ZW50
KQogewpAQCAtNDI0Nyw5ICs0MzY0LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJy
b3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24sIEtleWJvCiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkKCZtX2ZyYW1lKSkKKyAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KCZtX2ZyYW1lKSkgeworICAgICAgICBoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhldmVudCk7CiAg
ICAgICAgIHJldHVybjsKLQorICAgIH0KKyAgICAKICAgICAvLyBBcnJvd3MgYW5kIG90aGVyIHBv
c3NpYmxlIGRpcmVjdGlvbmFsIG5hdmlnYXRpb24ga2V5cyBjYW4gYmUgdXNlZCBpbiBkZXNpZ24K
ICAgICAvLyBtb2RlIGVkaXRpbmcuCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5EZXNp
Z25Nb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA5ZmI1MmIyZTlmYmQ4
NTczMTUzNGE2YjI4YTkxYTM2OWMzNzg3N2QyLi41MmMyNzM5NGNhOGFmZWY3ZGI0YzYzOWFlY2Zm
MTBhYmIxMzMwNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKKyNpbmNsdWRlICJLZXlib2FyZFNjcm9s
bC5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0zNzUsNiArMzc2LDEzIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnREb3VibGVDbGljayhjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNz
RXZlbnRUcmlwbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAK
KworICAgIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyYgcGFyYW1ldGVy
cygpOworICAgIHN0YXRpYyBGbG9hdFNpemUgdW5pdFZlY3RvcihXZWJDb3JlOjpTY3JvbGxpbmdE
aXJlY3Rpb24pOworICAgIENHRmxvYXQgU2Nyb2xsRGlzdGFuY2UoV2ViQ29yZTo6U2Nyb2xsaW5n
RGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQpOworICAgIGJvb2wgaGFuZGxl
S2V5Ym9hcmRTY3JvbGxpbmcoS2V5Ym9hcmRFdmVudCYpOworCisKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgIGJvb2wgaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMgPSBTaG91bGRDaGVja0Ry
YWdIeXN0ZXJlc2lzKTsKICAgICBib29sIHNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWco
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWFi
NzNmNDY4MGRmYjQyZTg5OTNiZTU2Y2EyYWEzYjEzYjhmOWRhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNs
YXNzIFNjcm9sbGluZ0luY3JlbWVudCA6IHVpbnQ4X3QgeworICAgIExpbmUsCisgICAgUGFnZSwK
KyAgICBEb2N1bWVudAorfTsKKworZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50
OF90IHsKKyAgICBVcCwKKyAgICBEb3duLAorICAgIExlZnQsCisgICAgUmlnaHQKK307CisKK3N0
cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8g
UG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxv
Y2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNl
OworCisgICAgV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50IGluY3JlbWVudDsKKyAgICBXZWJD
b3JlOjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uOworfTsKKworc3RydWN0IEtleWJvYXJk
U2Nyb2xsUGFyYW1ldGVycyB7CisgICAgQ0dGbG9hdCBzcHJpbmdNYXNzIHsgMSB9OworICAgIENH
RmxvYXQgc3ByaW5nU3RpZmZuZXNzIHsgMTA5IH07CisgICAgQ0dGbG9hdCBzcHJpbmdEYW1waW5n
IHsgMjAgfTsKKworICAgIENHRmxvYXQgbWF4aW11bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1IH07
CisgICAgQ0dGbG9hdCB0aW1lVG9NYXhpbXVtVmVsb2NpdHkgeyAxIH07CisKKyAgICBDR0Zsb2F0
IHJ1YmJlckJhbmRGb3JjZSB7IDUwMDAgfTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CmluZGV4IGIxZWMyYzY0YmU1YjY3MzBjZGRjMmMwYzgwODVlZDI5Yjc0ODk5MDMuLjQ5MDdjNzVl
NzMwMTY2NDc3MTA5NDBmYzc2ZTVlNzBlYTcxODU3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTc4MCw2ICs3ODAsNyBAQCBi
b29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24sIFNjcm9sbEdyYW51bGFyaQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsICIgPDwgIiBmcm9tICIgPDwgY3Vy
cmVudFBvc2l0aW9uKCkgPDwgIiB0byAiIDw8IG5ld1Bvc2l0aW9uKTsKICAgICBbbV9zY3JvbGxB
bmltYXRpb25IZWxwZXIgc2Nyb2xsVG9Qb2ludDpuZXdQb3NpdGlvbl07CisgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAppbmRleCAzZmY4M2I2NTVhY2MwZGU3Y2Fi
ODI0ZTljYTMzNWEyNGUyNzVlMmQ4Li4xNDU5NWZlNDgxOTVkYWVlNDM0ZTEzYTUzMGNkMjQ0ZmRm
M2ZhOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCkBAIC0yOSwyMiArMjksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwogfQogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
ZW51bSBjbGFzcyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50OF90IHsKLSAgICBEb2N1bWVudCwK
LSAgICBQYWdlLAotICAgIExpbmUKLX07Ci0KLWVudW0gY2xhc3MgU2Nyb2xsaW5nRGlyZWN0aW9u
IDogdWludDhfdCB7Ci0gICAgVXAsCi0gICAgRG93biwKLSAgICBMZWZ0LAotICAgIFJpZ2h0Ci19
OwotCi19CiAKIEBjbGFzcyBVSVNjcm9sbFZpZXc7CiBAY2xhc3MgV2ViRXZlbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5tbQppbmRleCAzOTI3ZTJjY2QxY2ExMTViMDA2ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5
Li40NDg4OGQ1NThiNDg2N2ZmOGUzZTY4ZDAwNTY3OThhYmNjNjNmN2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FEaXNwbGF5
TGluay5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0tleUV2ZW50Q29kZXNJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRTY3JvbGwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVjdEVkZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvVUlLaXRTUEkuaD4KQEAgLTQwLDM0ICs0MSwxMSBAQAogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgS2V5Ym9hcmRTY3JvbGwgewotICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBvZmZzZXQ7IC8vIFBvaW50cyBwZXIgaW5jcmVtZW50LgotICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBtYXhpbXVtVmVsb2NpdHk7IC8vIFBvaW50cyBwZXIgc2Vjb25kLgotICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBmb3JjZTsKLQotICAgIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50
IGluY3JlbWVudDsKLSAgICBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb247Ci19
OwotCi1zdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKLSAgICBDR0Zsb2F0IHNwcmlu
Z01hc3MgeyAxIH07Ci0gICAgQ0dGbG9hdCBzcHJpbmdTdGlmZm5lc3MgeyAxMDkgfTsKLSAgICBD
R0Zsb2F0IHNwcmluZ0RhbXBpbmcgeyAyMCB9OwotCi0gICAgQ0dGbG9hdCBtYXhpbXVtVmVsb2Np
dHlNdWx0aXBsaWVyIHsgMjUgfTsKLSAgICBDR0Zsb2F0IHRpbWVUb01heGltdW1WZWxvY2l0eSB7
IDEgfTsKLQotICAgIENHRmxvYXQgcnViYmVyQmFuZEZvcmNlIHsgNTAwMCB9OwotfTsKLQotfQog
CiBAcHJvdG9jb2wgV0tLZXlib2FyZFNjcm9sbGFibGVJbnRlcm5hbCA8TlNPYmplY3Q+CiBAcmVx
dWlyZWQKIC0gKEJPT0wpaXNLZXlib2FyZFNjcm9sbGFibGU7Ci0tIChDR0Zsb2F0KWRpc3RhbmNl
Rm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJl
Y3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbjsKKy0gKENHRmxvYXQp
ZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYkNvcmU6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1l
bnQgaW5EaXJlY3Rpb246KFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb247CiAt
ICh2b2lkKXNjcm9sbFRvQ29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZzZXQg
YW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CiAtICh2b2lkKXNjcm9sbFdpdGhTY3JvbGxUb0V4dGVu
dEFuaW1hdGlvblRvOihDR1BvaW50KW9mZnNldDsKIC0gKENHUG9pbnQpY29udGVudE9mZnNldDsK
QEAgLTk3LDcgKzc1LDcgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyB7CiAgICAg
aWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxlSW50ZXJuYWw+IF9zY3JvbGxhYmxlOwogICAgIFJldGFp
blB0cjxDQURpc3BsYXlMaW5rPiBfZGlzcGxheUxpbms7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6S2V5Ym9hcmRTY3JvbGw+IF9jdXJyZW50U2Nyb2xsOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGw+IF9jdXJyZW50U2Nyb2xsOwogCiAgICAgQk9PTCBfc2Ny
b2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZDsKIApAQCAtMTI0LDkgKzEwMiw5IEBAIHN0cnVjdCBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgewogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChjb25z
dCBXZWJLaXQ6OktleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyAmKXBhcmFtZXRlcnMKKy0gKGNvbnN0
IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyAmKXBhcmFtZXRlcnMKIHsKLSAgICBz
dGF0aWMgY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
KyAgICBzdGF0aWMgY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKQEAgLTEzNyw0NyArMTE1LDQ3IEBA
IHN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgewogICAgIF9zY3JvbGxhYmxlID0gbmls
OwogfQogCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIHVuaXRWZWN0b3IoV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0
VmVjdG9yKFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dp
dGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpV
cDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CiAgICAgICAgIHJl
dHVybiB7IDAsIC0xIH07Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93
bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAg
cmV0dXJuIHsgMCwgMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246Okxl
ZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CiAgICAgICAg
IHJldHVybiB7IC0xLCAwIH07Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgogICAg
ICAgICByZXR1cm4geyAxLCAwIH07CiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRT
aXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFy
QWJzb2x1dGVVbml0VmVjdG9yKFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5n
RGlyZWN0aW9uOjpVcDoKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3du
OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdl
YkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9
OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6Ci0gICAgY2FzZSBX
ZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3Jv
bGxpbmdEaXJlY3Rpb246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rp
b246OlJpZ2h0OgogICAgICAgICByZXR1cm4geyAwLCAxIH07CiAgICAgfQogfQogCi1zdGF0aWMg
V2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikKK3N0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViQ29yZTo6U2Nyb2xsaW5n
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OlRv
cDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgorICAgIGNhc2Ug
V2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgogICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Qm94U2lkZTo6Qm90dG9tOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246
OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CiAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpMZWZ0OwotICAgIGNhc2UgV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0
aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OlJpZ2h0OwogICAg
IH0KIH0KIAotLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPilrZXlib2Fy
ZFNjcm9sbEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQg
KilldmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIw
OwogCkBAIC0yNTUsNDggKzIzMyw0OCBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRl
KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgY2FzZSBLZXk6
OkxlZnRBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CiAgICAgICAgICAgICBp
ZiAoYWx0UHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJ
bmNyZW1lbnQ6OlBhZ2U7Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNy
ZW1lbnQ6OkxpbmU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0lu
Y3JlbWVudDo6UGFnZTsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNy
ZW1lbnQ6OkxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgogICAgICAgICBjYXNlIEtl
eTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CiAgICAgICAgICAg
ICBpZiAoY21kUHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxp
bmdJbmNyZW1lbnQ6OkRvY3VtZW50OwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3Jv
bGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNj
cm9sbGluZ0luY3JlbWVudDo6TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKICAgICAg
ICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwogICAgICAgICBjYXNl
IEtleTo6T3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CiAgICAgICAgIH07CiAg
ICAgfSgpOwogCiAgICAgYXV0byBkaXJlY3Rpb24gPSBeKCkgewogICAgICAgICBzd2l0Y2ggKGtl
eSkgewogICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgotICAgICAgICAgICAgcmV0dXJuIFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OworICAgICAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJy
b3c6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0
OworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7
CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgogICAgICAgICBjYXNlIEtleTo6UGFnZVVwOgot
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDsKKyAgICAg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOwogICAgICAgICBj
YXNlIEtleTo6RG93bkFycm93OgogICAgICAgICBjYXNlIEtleTo6UGFnZURvd246Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd247CisgICAgICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOwogICAgICAgICBjYXNl
IEtleTo6U3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4gc2hpZnRQcmVzc2VkID8gV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb246OlVwIDogV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd247
CisgICAgICAgICAgICByZXR1cm4gc2hpZnRQcmVzc2VkID8gV2ViQ29yZTo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpVcCA6IFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKICAgICAgICAg
Y2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd247CisgICAgICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOwogICAgICAgICB9
OwogICAgIH0oKTsKIAogICAgIENHRmxvYXQgc2Nyb2xsRGlzdGFuY2UgPSBbX3Njcm9sbGFibGUg
ZGlzdGFuY2VGb3JJbmNyZW1lbnQ6aW5jcmVtZW50IGluRGlyZWN0aW9uOmRpcmVjdGlvbl07CiAK
LSAgICBXZWJLaXQ6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKyAgICBXZWJDb3JlOjpLZXlib2Fy
ZFNjcm9sbCBzY3JvbGw7CiAgICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRWZWN0b3IoZGlyZWN0aW9u
KS5zY2FsZWQoc2Nyb2xsRGlzdGFuY2UpOwogICAgIHNjcm9sbC5pbmNyZW1lbnQgPSBpbmNyZW1l
bnQ7CiAgICAgc2Nyb2xsLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKQEAgLTMyNyw3ICszMDUsNyBA
QCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikKICAgICBfc2Nyb2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZCA9IFlFUzsK
ICAgICBfY3VycmVudFNjcm9sbCA9IHNjcm9sbDsKIAotICAgIGlmIChzY3JvbGwtPmluY3JlbWVu
dCA9PSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQpIHsKKyAgICBpZiAoc2Ny
b2xsLT5pbmNyZW1lbnQgPT0gV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudCkg
ewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAgIFtzZWxmIHN0b3BBbmltYXRlZFNj
cm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlua107CkBAIC0zNjAsMTYgKzMzOCwx
NiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50
IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorc3Rh
dGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6
OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBXZWJDb3JlOjpTY3JvbGxpbmdE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBXZWJDb3JlOjpTY3Jv
bGxpbmdEaXJlY3Rpb246OlVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChh
LngoKSwgc3RkOjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
RG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4
KGEueSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246Okxl
ZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CiAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgp
KTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNl
IFdlYkNvcmU6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpGbG9hdFBvaW50KHN0ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAK
QEAgLTU2Niw3ICs1NDQsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBv
aW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBb
X2RlbGVnYXRlIGlzU2Nyb2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZd
OwogfQogCi0tIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGlu
Z0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6
U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xs
aW5nRGlyZWN0aW9uKWRpcmVjdGlvbgogewogICAgIGF1dG8gc2Nyb2xsVmlldyA9IF9zY3JvbGxW
aWV3LmdldEF1dG9yZWxlYXNlZCgpOwogICAgIGlmICghc2Nyb2xsVmlldykKQEAgLTU3NSwxNSAr
NTUzLDE1IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVj
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvCiAgICAgY29uc3QgQ0dGbG9hdCBkZWZh
dWx0UGFnZVNjcm9sbEZyYWN0aW9uID0gMC44OwogICAgIGNvbnN0IENHRmxvYXQgZGVmYXVsdExp
bmVTY3JvbGxIZWlnaHQgPSA0MDsKIAotICAgIEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFsID0g
ZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0IHx8IGRpcmVjdGlv
biA9PSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7CisgICAgQk9PTCBkaXJlY3Rp
b25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpMZWZ0IHx8IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0
OwogCiAgICAgaWYgKCFfZGVsZWdhdGVSZXNwb25kc1RvRGlzdGFuY2VGb3JJbmNyZW1lbnQpIHsK
ICAgICAgICAgc3dpdGNoIChpbmNyZW1lbnQpIHsKLSAgICAgICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5n
SW5jcmVtZW50OjpEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6
b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5jb250ZW50
U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBh
Z2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOgogICAg
ICAgICAgICAgcmV0dXJuIChkaXJlY3Rpb25Jc0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmZyYW1l
LnNpemUud2lkdGggOiBzY3JvbGxWaWV3LmZyYW1lLnNpemUuaGVpZ2h0KSAqIGRlZmF1bHRQYWdl
U2Nyb2xsRnJhY3Rpb247Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6
OkxpbmU6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgog
ICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRMaW5lU2Nyb2xsSGVpZ2h0ICogc2Nyb2xsVmlldy56
b29tU2NhbGU7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDJhYjEwODRjNWNkYzRiM2ZhOGU0ZWI3MjU1NDFiNjg2MDUwMjQ4NGUuLmRmOGIwNjYyNjdh
N2E3MjI0MmM0Njg3ZGI2YjFmYjcyN2U5MjY1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMTIsNyArMzEyLDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBl
dmVudCkKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRl
ZmF1bHQga2V5ZG93biBoYW5kbGVyIGlzIHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNv
bW1hbmRzLgogICAgIC8vIEtleXByZXNzIChDaGFyIGV2ZW50KSBoYW5kbGVyIGlzIHRoZSBsYXRl
c3Qgb3Bwb3J0dW5pdHkgdG8gZXhlY3V0ZS4KICAgICBpZiAoIWhhdmVUZXh0SW5zZXJ0aW9uQ29t
bWFuZHMgfHwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpIHsK
LSAgICAgICAgZXZlbnRXYXNIYW5kbGVkID0gZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5h
bChjb21tYW5kcywgJmV2ZW50KTsKKyAgICAgICAgZXZlbnRXYXNIYW5kbGVkID0gZXhlY3V0ZUtl
eXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb21tYW5kcywgJmV2ZW50KTsgCiAgICAgICAgIGNvbW1h
bmRzLmNsZWFyKCk7CiAgICAgfQogCkBAIC00NTMsNDUgKzQ1Myw0OCBAQCBEaWN0aW9uYXJ5UG9w
dXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdp
bihQREZTZWxlYwogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JT
ZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
LSAgICAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBl
dmVudC4KLSAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsKLSAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vz
c2liaWxpdHkoKmV2ZW50KTsKLSAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gRklYTUU6IEFsbCB0aGVzZSBzZWxlY3RvcnMgaGF2
ZSBjb3JyZXNwb25kaW5nIEVkaXRvciBjb21tYW5kcywgYnV0IHRoZSBjb21tYW5kcyBvbmx5IHdv
cmsgaW4gZWRpdGFibGUgY29udGVudC4KLSAgICAvLyBTaG91bGQgc3VjaCBub24tZWRpdGluZyBi
ZWhhdmlvcnMgYmUgaW1wbGVtZW50ZWQgaW4gRWRpdG9yIG9yIEV2ZW50SGFuZGxlcjo6ZGVmYXVs
dEFycm93RXZlbnRIYW5kbGVyKCkgcGVyaGFwcz8KKyAgICAvLyAvLyBGaXJzdCBnaXZlIGFjY2Vz
c2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVudC4KKyAgICAvLyBGcmFtZSogZnJh
bWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsKKyAgICAvLyBmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsK
KyAgICAvLyBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgLy8gICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gLy8gRklYTUU6IEFsbCB0aGVzZSBzZWxlY3RvcnMgaGF2ZSBjb3JyZXNw
b25kaW5nIEVkaXRvciBjb21tYW5kcywgYnV0IHRoZSBjb21tYW5kcyBvbmx5IHdvcmsgaW4gZWRp
dGFibGUgY29udGVudC4KKyAgICAvLyAvLyBTaG91bGQgc3VjaCBub24tZWRpdGluZyBiZWhhdmlv
cnMgYmUgaW1wbGVtZW50ZWQgaW4gRWRpdG9yIG9yIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93
RXZlbnRIYW5kbGVyKCkgcGVyaGFwcz8KKyAgICAKKyAgICAvLyBib29sIGRpZFBlcmZvcm1BY3Rp
b24gPSBmYWxzZTsKKyAgICAKKyAgICAvLyBpZiAoc2VsZWN0b3IgPT0gIm1vdmVVcDoiKQorICAg
IC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAs
IFNjcm9sbEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAvLyBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudDoiKSB7CisgICAgLy8gICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlE
b2N1bWVudCk7CisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgLy8gfSBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZURvd246IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5TGluZSk7CisgICAgLy8gZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFyYWdyYXBoOiIpCisgICAgLy8gICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxC
eVBhZ2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50
OiIpIHsKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIC8vICAgICBkaWRQZXJmb3JtQWN0
aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQp
OworICAgIC8vIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCisgICAgLy8gICAg
IGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3Jv
bGxCeUxpbmUpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZExlZnQ6IikK
KyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bExlZnQsIFNjcm9sbEJ5UGFnZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVU
b0xlZnRFbmRPZkxpbmU6IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1fdXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOjpMVFIgPyBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29CYWNrKCkgOiBtX3BhZ2UtPmJh
Y2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1v
dmVSaWdodDoiKQorICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0
b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikKKyAgICAvLyAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CisgICAgLy8gZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCisgICAgLy8gICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29y
ZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2Fy
ZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOworICAgIAor
ICAgIC8vIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOworICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICBib29sIGRpZFBlcmZvcm1BY3Rpb24gPSBmYWxzZTsKLQotICAgIGlmIChzZWxlY3RvciA9
PSAibW92ZVVwOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKLSAgICAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxC
eURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlRG93bjoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZVRvRW5kT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlv
biA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mRG9jdW1lbnQ6IikgewotICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xs
QnlEb2N1bWVudCk7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgfSBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZUxlZnQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7Ci0gICAgZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQotICAgICAgICBkaWRQZXJmb3Jt
QWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0Jh
Y2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCi0gICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29y
ZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2Fy
ZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwotCi0gICAg
cmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431916</attachid>
            <date>2021-06-21 15:22:28 -0700</date>
            <delta_ts>2021-06-21 15:26:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210621182227.patch</filename>
            <type>text/plain</type>
            <size>32991</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwY2QwOGIyZTgzY2Fh
YTFmMjkwNDk5ZjM2YmUxZjk3MTE0MzU3Zi4uMzFmZDdkMjY5NGE3MTVjZWQxYzYzNDAyZWY2Mjg0
NWMzMWVlN2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5
Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisKKyAgICAgICAg
Tm8gdGVzdHMgeWV0CisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1bml0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6U2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZh
dWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6Cisg
ICAgICAgICogcGFnZS9LZXlib2FyZFNjcm9sbC5oOiBBZGRlZC4KKwogMjAyMS0wNi0xNCAgUGF0
cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Q1NTIHZhcmlhYmxlcyBub3QgaGFuZGxlZCBhcyBjYXNlIHNlbnNpdGl2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBi
NTZlMWI0YWEyZmVhOWZiMTNiNDYxMTFiODBjZTFkZjhiMzU4OTYwLi45OTE1ODA1MDEzZTZmOGJi
ZWM1MDk3Y2Y4YmI0NzI3MDU1OTM4M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIx
LTA2LTE0ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbToKKyAgICAgICAgKC1bV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yIHBhcmFtZXRlcnNdKToKKyAgICAgICAgKHVuaXRWZWN0b3Ip
OgorICAgICAgICAocGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3Rvcik6CisgICAgICAgIChi
b3hTaWRlKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGtleWJvYXJk
U2Nyb2xsRm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgKGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbik6
CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNy
ZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcik6CisKIDIwMjEtMDYtMTQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2luZyBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgYWZ0ZXIgZ3JhbnRpbmcgcGVybWlzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5NmY5ODI5
NmM5YTZjYjY2NjgzMzc0NGRkNWRjNzY3NzBiZTZmMzUuLjNiYjE2ZGRjZDcwZmI3Nzk0YzlmNDVj
YWM3MGMxMWRjNWVmY2E0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2Nyw2ICs2NjcsNyBAQAogCQkxREJDMUI1NjIzNDdC
M0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYg
LyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUREM0I0QzYyNTFEQTBCODAwNjlCMjRBIC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9i
akMubW0gKi87IH07CiAJCTFERjdFODFGMjUxQTlFMDYwMERCOEY2MSAvKiBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUYwMjBB
RUYyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEgLyog
S2V5Ym9hcmRTY3JvbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxRjM2RUE5QzFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjM2RUE5QTFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY3
MkJGMEIxODdGRDQ1QzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY3MkJGMDkx
ODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGODc1NkIyMUUy
MkMzMzUwMDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGODc1NkIxMUUyMkJFRUYw
MDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA2NCw2ICs3MDY1LDcgQEAK
IAkJMURFRjA2REMyMzNEMkUxQzAwRUUyMjhEIC8qIERvY3VtZW50UGljdHVyZUluUGljdHVyZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBpY3R1cmVJ
blBpY3R1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREVGMDZERDIzM0Qy
RTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREVGMDZERTIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnQr
UGljdHVyZUluUGljdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkRvY3VtZW50K1Bp
Y3R1cmVJblBpY3R1cmUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMjBB
RUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFGMzZFQTlBMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGMzZFQTlCMUUy
MUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xs
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTEzLDYgKzIyNTE1LDcgQEAKIAkJ
CQkwRjQ3MTBEODFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5j
cHAgKi8sCiAJCQkJMEY0NzEwRDkxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnkuaCAqLywKIAkJCQkwRjQ3MTBEQTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJFbnRyeS5pZGwgKi8sCisJCQkJMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8q
IEtleWJvYXJkU2Nyb2xsLmggKi8sCiAJCQkJOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExh
eW91dE1pbGVzdG9uZS5oICovLAogCQkJCUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2Nh
dGlvbi5jcHAgKi8sCiAJCQkJQkNFMUM0MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmgg
Ki8sCkBAIC0zMjY0Niw3ICszMjY0OSw2IEBACiAJCQkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjND
IC8qIEV2ZW50UmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMEZFRjM3MkIxN0M1M0VBQzFD
MUZCRUUgLyogRXZlbnRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMkVEQjdCMEIzMDhB
NzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTNDQTBCRkMy
NjczRjQ3QzAwOUZERDY3IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODRCMzQ5QTIyMkY4NkU3NTAwRDQ3QkNGIC8qIEV2ZW50VGFyZ2V0Q29uY3Jl
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVu
dFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM0NTMs
NiArMzM0NTUsNyBAQAogCQkJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBKU0RP
TUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0NUM5RDQx
RTNGQ0JERjAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlFM0NBMEJGQzI2NzNGNDdDMDA5RkRENjcgLyogSlNET01CaW5kaW5nU2VjdXJpdHlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGNzkgLyogSlNE
T01DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8q
IEpTRE9NQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDFDNDQxNjI2MEMzOEZE
MDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0MTU3
LDYgKzM0MTYwLDcgQEAKIAkJCQlCQ0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJv
Y2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyog
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQ0MEE0
NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjAy
MEFFRjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVy
Q0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDk2OTg2YjUzMDkxYmM2OTBlNmZjZDRjYjA2N2FiYTAyMWEzNTYwNzIuLjYyNDJiMTdjODRiM2E5
N2I1NzkyNDNiNDkyMmNiMmRhZmJiNDZiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmgiCkBAIC0zNzk5LDcgKzM4MDAsNiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
ICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSkKICAgICAgICAg
ICAgICAgICBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoZGlyZWN0aW9uLCBldmVudCk7CiAgICAg
ICAgIH0KLQogICAgICAgICBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNz
aWJpbGl0eShldmVudCk7CiAgICAgfQogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleXByZXNzRXZlbnQpIHsKQEAgLTQxODksMjEgKzQxODksMjEgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OmRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAg
ICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCiAgICAgQVNTRVJUKGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7Ci0KKyAgICAKICAgICBpZiAo
ZXZlbnQuY3RybEtleSgpIHx8IGV2ZW50Lm1ldGFLZXkoKSB8fCBldmVudC5hbHRLZXkoKSB8fCBl
dmVudC5hbHRHcmFwaEtleSgpKQogICAgICAgICByZXR1cm47Ci0KKyAgICAKICAgICBTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5KCkgPyBTY3JvbGxCbG9j
a0RpcmVjdGlvbkJhY2t3YXJkIDogU2Nyb2xsQmxvY2tEaXJlY3Rpb25Gb3J3YXJkOwogICAgIGlm
IChsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKSB7CiAgICAg
ICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0K
KyAgICAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2aWV3LT5sb2dpY2FsU2Nyb2xsKGRpcmVj
dGlvbiwgU2Nyb2xsQnlQYWdlKSkKKyAgICBpZiAoaGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoZXZl
bnQpKQogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC00MjM1LDEx
ICs0MjM1LDEyMyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFu
ZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAorRmxvYXRTaXplIEV2ZW50SGFuZGxlcjo6dW5pdFZlY3RvcihTY3JvbGxEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgorICAgICAgICByZXR1cm4geyAwLCAtMSB9OworICAg
IGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgorICAgICAgICByZXR1cm4geyAwLCAx
IH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CisgICAgICAgIHJldHVy
biB7IC0xLCAwIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgorICAg
ICAgICByZXR1cm4geyAxLCAwIH07CisgICAgfQorfQorCitDR0Zsb2F0IEV2ZW50SGFuZGxlcjo6
c2Nyb2xsRGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCit7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7CisKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgfHwgZGlyZWN0aW9uID09IFNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bikgCisgICAgICAgIHNjcm9sbGJhciA9IG1fZnJhbWUu
dmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIGVsc2UgCisgICAgICAgIHNjcm9sbGJh
ciA9IG1fZnJhbWUudmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgCisgICAgQ0dG
bG9hdCBzdGVwID0gMDsKKworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXIt
PmxpbmVTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6
OlNjcm9sbEJ5UGFnZToKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+cGFnZVN0ZXAoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVu
dDoKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgIHN0
ZXAgPSBzY3JvbGxiYXItPnBpeGVsU3RlcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RlcDsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2Ny
b2xsaW5nKEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIFdURkxvZ0Fsd2F5cygidXNpbmcg
aGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmdcbiIpOworICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhf
dCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBBcnJvdywgRG93bkFycm93LCBTcGFjZSB9Owor
CisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJMZWZ0IikK
KyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRl
bnRpZmllcigpID09ICJSaWdodCIpCisgICAgICAgIGtleSA9IEtleTo6UmlnaHRBcnJvdzsKKyAg
ICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIlVwIikKKyAgICAgICAga2V5ID0g
S2V5OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiRG93
biIpCisgICAgICAgIGtleSA9IEtleTo6RG93bkFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmNo
YXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBrZXkgPSBLZXk6OlNwYWNlOworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBncmFudWxhcml0eSA9IF4oKSB7CisgICAg
ICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAg
IGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgp
ID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZSA6IFNjcm9sbEdyYW51bGFyaXR5OjpT
Y3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgorICAgICAgICBjYXNlIEtl
eTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAg
ICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9s
bEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3Jh
bnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAgICAg
ICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIH07
CisgICAgfSgpOworCisgICAgYXV0byBkaXJlY3Rpb24gPSBeKCkgeworICAgICAgICBzd2l0Y2gg
KGtleSkgeworICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJu
IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDsKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJy
b3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKKyAg
ICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgICAg
IHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CisgICAgICAgIGNhc2UgS2V5OjpT
cGFjZToKKyAgICAgICAgICAgIHJldHVybiBldmVudC5zaGlmdEtleSgpID8gU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAgfTsK
KyAgICB9KCk7CisKKyAgICBDR0Zsb2F0IGRpc3RhbmNlID0gc2Nyb2xsRGlzdGFuY2UoZGlyZWN0
aW9uLCBncmFudWxhcml0eSk7CisgICAgCisgICAgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwgc2Ny
b2xsOworCisgICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRWZWN0b3IoZGlyZWN0aW9uKS5zY2FsZWQo
ZGlzdGFuY2UpOworICAgIHNjcm9sbC5ncmFudWxhcml0eSA9IGdyYW51bGFyaXR5OworICAgIHNj
cm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CisgICAgc2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9
IHNjcm9sbC5vZmZzZXQuc2NhbGVkKEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVy
cygpLm1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOworCisgICAgc2Nyb2xsLmZvcmNlID0gc2Ny
b2xsLm1heGltdW1WZWxvY2l0eS5zY2FsZWQoS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzOjpwYXJh
bWV0ZXJzKCkuc3ByaW5nTWFzcyAvIEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVy
cygpLnRpbWVUb01heGltdW1WZWxvY2l0eSk7CisKKyAgICByZXR1cm4gRXZlbnRIYW5kbGVyOjpz
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKK30KIAog
dm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlv
biBmb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KTsKIAorICAgIGlmICghaXNT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoJm1fZnJhbWUpKSB7CisgICAgICAgIGhhbmRsZUtleWJv
YXJkU2Nyb2xsaW5nKGV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChl
dmVudC5jdHJsS2V5KCkgfHwgZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkg
fHwgZXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjQ3LDkgKzQzNTks
NiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGly
ZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUgZGlyZWN0
aW9uYWwgbmF2aWdhdGlvbiBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8vIG1vZGUg
ZWRpdGluZy4KICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDlmYjUyYjJlOWZiZDg1NzMxNTM0YTZiMjhh
OTFhMzY5YzM3ODc3ZDIuLjM1MTUxODQ3M2E4YWIzMDJhNDdkODMxNjM4NmUzZmEwMGNhMGJmNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVk
ZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTM3NSw2ICszNzYsMTEgQEAgcHJpdmF0ZToKICAgICBi
b29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNs
aWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorICAgIHN0YXRpYyBG
bG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24pOworICAgIENHRmxvYXQgc2Nyb2xs
RGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CisgICAgYm9vbCBo
YW5kbGVLZXlib2FyZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50Jik7CisKKwogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3VsZENo
ZWNrRHJhZ0h5c3RlcmVzaXMpOwogICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0
RHJhZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNj
cm9sbC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE1MmIyZGNmMThhOGI2NmQzNTljYjJkY2VmNzJjNmJmNWVlMGMxNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisgICAg
V2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHk7CisgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgeworICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKKyAg
ICBDR0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIENHRmxvYXQgc3ByaW5nRGFt
cGluZyB7IDIwIH07CisKKyAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAy
NSB9OworICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAgQ0dG
bG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcmV0dXJu
IHBhcmFtZXRlcnM7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1YTI0ZTI3NWUyZDgu
LjE0NTk1ZmU0ODE5NWRhZWU0MzRlMTNhNTMwY2QyNDRmZGYzZmE5N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLmgKQEAgLTI5LDIyICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0
UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9sbGluZ0lu
Y3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAgTGluZQot
fTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICBVcCwK
LSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNzIFVJU2Ny
b2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5Mjdl
MmNjZDFjYTExNWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLjBmZjJhZTVlNThjYjNmNmM4ZDdi
NGQ1MzEyOGIxNzcyYzQ5NWMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiArMzMs
NyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWN0
RWRnZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktpdC9V
SUtpdFNQSS5oPgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0
cnVjdCBLZXlib2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8g
UG9pbnRzIHBlciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxv
Y2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNl
OwotCi0gICAgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2FyZFNj
cm9sbFBhcmFtZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBDR0Zs
b2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGluZyB7
IDIwIH07Ci0KLSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9Owot
ICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9hdCBy
dWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJvYXJk
U2Nyb2xsYWJsZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tleWJv
YXJkU2Nyb2xsYWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxp
bmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDoo
U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24p
ZGlyZWN0aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0
UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClzY3JvbGxXaXRo
U2Nyb2xsVG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChDR1BvaW50KWNv
bnRlbnRPZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFt
ZXRlcnMgewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBfc2Nyb2xsYWJs
ZTsKICAgICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwogCi0gICAgc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKIAog
ICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsxMDIs
OSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0
ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0
ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0xMzcs
NDcgKzExNSw0NyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBfc2Ny
b2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVjdG9y
KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpG
bG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4g
eyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246Cisg
ICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7IDAs
IDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNh
c2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4geyAtMSwgMCB9
OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2Ug
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9Owog
ICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJzb2x1
dGVVbml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRp
YyBXZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihTY3Jv
bGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAg
Y2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNj
cm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVy
biB7IDEsIDAgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0Ogot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgU2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3RhdGljIFdl
YkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFNjcm9sbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsRG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBj
YXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVm
dDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNl
IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpC
b3hTaWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXli
b2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50Cist
IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9sbEZv
ckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
a1dlYlNwYWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDQ4ICsyMzMsNDggQEAgc3RhdGljIFdlYkNv
cmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFy
cm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJuIFdl
YktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNjcm9s
bEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93Ogog
ICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdl
OworICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdl
OwogICAgICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdl
YktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVybiBX
ZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VV
cDoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6
Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAgICAg
ICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAg
ICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAg
fTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3aXRj
aCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICByZXR1
cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJv
dzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7
CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKICAgICAg
ICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOworICAgICAgICAgICAg
cmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpEb3du
QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKLSAgICAgICAgICAgIHJldHVybiBX
ZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAg
ICAgICAgIHJldHVybiBzaGlmdFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
VXAgOiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVy
biBzaGlmdFByZXNzZWQgPyBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBzY3JvbGxEaXN0
YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1lbnQgaW5EaXJl
Y3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOwor
ICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKICAgICBzY3JvbGwub2Zmc2V0ID0g
dW5pdFZlY3RvcihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7CiAgICAgc2Nyb2xs
LmluY3JlbWVudCA9IGluY3JlbWVudDsKICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0aW9u
OwpAQCAtMzI3LDcgKzMwNSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIF9zY3JvbGxUcmlnZ2VyaW5n
S2V5SXNQcmVzc2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xsID0gc2Nyb2xsOwogCi0gICAg
aWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1
bWVudCkgeworICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBTY3JvbGxHcmFudWxhcml0eTo6
U2Nyb2xsQnlEb2N1bWVudCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAgIFtz
ZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlua107
CkBAIC0zNjAsMTYgKzMzOCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBX
ZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludElu
RGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBT
Y3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0g
ICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChh
LngoKSwgc3RkOjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEueSgp
LCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6Cisg
ICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAgICBjYXNl
IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNjcm9sbERpcmVj
dGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0
ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NDQsNyBA
QCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Nyb2xs
YWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zsb2F0
KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1l
bnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgorLSAo
Q0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50
IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBzY3Jv
bGxWaWV3ID0gX3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3JvbGxW
aWV3KQpAQCAtNTc1LDE1ICs1NTMsMTUgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFy
dGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBj
b25zdCBDR0Zsb2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29uc3Qg
Q0dGbG9hdCBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJlY3Rp
b25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246
OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsK
KyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
UmlnaHQ7CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0YW5jZUZvckluY3JlbWVu
dCkgewogICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2FzZSBTY3JvbGxHcmFudWxh
cml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hv
cml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5jb250
ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6
OlBhZ2U6CisgICAgICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToKICAg
ICAgICAgICAgIHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5mcmFt
ZS5zaXplLndpZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0UGFn
ZVNjcm9sbEZyYWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50
OjpMaW5lOgorICAgICAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CiAg
ICAgICAgICAgICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3Lnpv
b21TY2FsZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5k
ZXggMmFiMTA4NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uZGE5ZTg5N2VjMzhi
NGQ3NGFhYWJmZTE4NGEzOThhZDk0MzAyY2UxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBi
b29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2
ZW50KQogICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVm
YXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29t
bWFuZHMuCiAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxhdGVz
dCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgogICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21t
YW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgewot
ICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFs
KGNvbW1hbmRzLCAmZXZlbnQpOworICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5
cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbW1hbmRzLCAmZXZlbnQpOyAKICAgICAgICAgY29tbWFu
ZHMuY2xlYXIoKTsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQ
REZTZWxlYwogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAg
ICAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVu
dC4KKyAgICAvLyAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxl
IHRoZSBldmVudC4KICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsKICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZv
ckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkp
CkBAIC00NjMsMzUgKzQ2MywzOCBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVo
YXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIC8vIFNo
b3VsZCBzdWNoIG5vbi1lZGl0aW5nIGJlaGF2aW9ycyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0b3Ig
b3IgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoKSBwZXJoYXBzPwogICAg
IAogICAgIGJvb2wgZGlkUGVyZm9ybUFjdGlvbiA9IGZhbHNlOwotCi0gICAgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVXA6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgewotICAgICAg
ICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9s
bEJ5RG9jdW1lbnQpOwotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVEb3duOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAgICAg
IGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3Jv
bGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdl
LmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgCisgICAgLy8gaWYg
KHNlbGVjdG9yID09ICJtb3ZlVXA6IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgIC8vIGlmIChz
ZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKKyAgICAvLyAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBh
Z2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3Vt
ZW50OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rp
b24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7
CisgICAgLy8gfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZURvd246IikKKyAgICAvLyAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9s
bEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFyYWdy
YXBoOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAg
IC8vICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExl
ZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIC8vIH0KKyAgICAvLyB9IGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlTGVmdDoiKQorICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAvLyBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOworICAg
IGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5n
b0JhY2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNl
IGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7Cisg
ICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgIC8vICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5
TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikKKyAg
ICAvLyAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmln
aHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0
RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6
TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9y
d2FyZCgpLmdvQmFjaygpOwotCisgICAgCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247Cisg
ICAgCisgICAgCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431918</attachid>
            <date>2021-06-21 15:26:59 -0700</date>
            <delta_ts>2021-06-21 15:41:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210621182658.patch</filename>
            <type>text/plain</type>
            <size>32949</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwY2QwOGIyZTgzY2Fh
YTFmMjkwNDk5ZjM2YmUxZjk3MTE0MzU3Zi4uMzFmZDdkMjY5NGE3MTVjZWQxYzYzNDAyZWY2Mjg0
NWMzMWVlN2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5
Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisKKyAgICAgICAg
Tm8gdGVzdHMgeWV0CisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1bml0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6U2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZh
dWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6Cisg
ICAgICAgICogcGFnZS9LZXlib2FyZFNjcm9sbC5oOiBBZGRlZC4KKwogMjAyMS0wNi0xNCAgUGF0
cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Q1NTIHZhcmlhYmxlcyBub3QgaGFuZGxlZCBhcyBjYXNlIHNlbnNpdGl2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBi
NTZlMWI0YWEyZmVhOWZiMTNiNDYxMTFiODBjZTFkZjhiMzU4OTYwLi45OTE1ODA1MDEzZTZmOGJi
ZWM1MDk3Y2Y4YmI0NzI3MDU1OTM4M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIx
LTA2LTE0ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbToKKyAgICAgICAgKC1bV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yIHBhcmFtZXRlcnNdKToKKyAgICAgICAgKHVuaXRWZWN0b3Ip
OgorICAgICAgICAocGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3Rvcik6CisgICAgICAgIChi
b3hTaWRlKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGtleWJvYXJk
U2Nyb2xsRm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgKGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbik6
CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNy
ZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcik6CisKIDIwMjEtMDYtMTQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2luZyBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgYWZ0ZXIgZ3JhbnRpbmcgcGVybWlzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5NmY5ODI5
NmM5YTZjYjY2NjgzMzc0NGRkNWRjNzY3NzBiZTZmMzUuLjNiYjE2ZGRjZDcwZmI3Nzk0YzlmNDVj
YWM3MGMxMWRjNWVmY2E0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2Nyw2ICs2NjcsNyBAQAogCQkxREJDMUI1NjIzNDdC
M0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYg
LyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUREM0I0QzYyNTFEQTBCODAwNjlCMjRBIC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9i
akMubW0gKi87IH07CiAJCTFERjdFODFGMjUxQTlFMDYwMERCOEY2MSAvKiBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUYwMjBB
RUYyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEgLyog
S2V5Ym9hcmRTY3JvbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxRjM2RUE5QzFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjM2RUE5QTFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY3
MkJGMEIxODdGRDQ1QzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY3MkJGMDkx
ODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGODc1NkIyMUUy
MkMzMzUwMDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGODc1NkIxMUUyMkJFRUYw
MDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA2NCw2ICs3MDY1LDcgQEAK
IAkJMURFRjA2REMyMzNEMkUxQzAwRUUyMjhEIC8qIERvY3VtZW50UGljdHVyZUluUGljdHVyZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBpY3R1cmVJ
blBpY3R1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREVGMDZERDIzM0Qy
RTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREVGMDZERTIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnQr
UGljdHVyZUluUGljdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkRvY3VtZW50K1Bp
Y3R1cmVJblBpY3R1cmUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMjBB
RUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFGMzZFQTlBMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGMzZFQTlCMUUy
MUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xs
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTEzLDYgKzIyNTE1LDcgQEAKIAkJ
CQkwRjQ3MTBEODFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5j
cHAgKi8sCiAJCQkJMEY0NzEwRDkxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnkuaCAqLywKIAkJCQkwRjQ3MTBEQTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJFbnRyeS5pZGwgKi8sCisJCQkJMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8q
IEtleWJvYXJkU2Nyb2xsLmggKi8sCiAJCQkJOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExh
eW91dE1pbGVzdG9uZS5oICovLAogCQkJCUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2Nh
dGlvbi5jcHAgKi8sCiAJCQkJQkNFMUM0MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmgg
Ki8sCkBAIC0zMjY0Niw3ICszMjY0OSw2IEBACiAJCQkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjND
IC8qIEV2ZW50UmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMEZFRjM3MkIxN0M1M0VBQzFD
MUZCRUUgLyogRXZlbnRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMkVEQjdCMEIzMDhB
NzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTNDQTBCRkMy
NjczRjQ3QzAwOUZERDY3IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODRCMzQ5QTIyMkY4NkU3NTAwRDQ3QkNGIC8qIEV2ZW50VGFyZ2V0Q29uY3Jl
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVu
dFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM0NTMs
NiArMzM0NTUsNyBAQAogCQkJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBKU0RP
TUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0NUM5RDQx
RTNGQ0JERjAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlFM0NBMEJGQzI2NzNGNDdDMDA5RkRENjcgLyogSlNET01CaW5kaW5nU2VjdXJpdHlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGNzkgLyogSlNE
T01DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8q
IEpTRE9NQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDFDNDQxNjI2MEMzOEZE
MDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0MTU3
LDYgKzM0MTYwLDcgQEAKIAkJCQlCQ0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJv
Y2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyog
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQ0MEE0
NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjAy
MEFFRjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVy
Q0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDk2OTg2YjUzMDkxYmM2OTBlNmZjZDRjYjA2N2FiYTAyMWEzNTYwNzIuLjYyNDJiMTdjODRiM2E5
N2I1NzkyNDNiNDkyMmNiMmRhZmJiNDZiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmgiCkBAIC0zNzk5LDcgKzM4MDAsNiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
ICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSkKICAgICAgICAg
ICAgICAgICBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoZGlyZWN0aW9uLCBldmVudCk7CiAgICAg
ICAgIH0KLQogICAgICAgICBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNz
aWJpbGl0eShldmVudCk7CiAgICAgfQogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleXByZXNzRXZlbnQpIHsKQEAgLTQxODksMjEgKzQxODksMjEgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OmRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAg
ICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCiAgICAgQVNTRVJUKGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7Ci0KKyAgICAKICAgICBpZiAo
ZXZlbnQuY3RybEtleSgpIHx8IGV2ZW50Lm1ldGFLZXkoKSB8fCBldmVudC5hbHRLZXkoKSB8fCBl
dmVudC5hbHRHcmFwaEtleSgpKQogICAgICAgICByZXR1cm47Ci0KKyAgICAKICAgICBTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5KCkgPyBTY3JvbGxCbG9j
a0RpcmVjdGlvbkJhY2t3YXJkIDogU2Nyb2xsQmxvY2tEaXJlY3Rpb25Gb3J3YXJkOwogICAgIGlm
IChsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKSB7CiAgICAg
ICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0K
KyAgICAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2aWV3LT5sb2dpY2FsU2Nyb2xsKGRpcmVj
dGlvbiwgU2Nyb2xsQnlQYWdlKSkKKyAgICBpZiAoaGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoZXZl
bnQpKQogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC00MjM1LDEx
ICs0MjM1LDEyMyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFu
ZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAorRmxvYXRTaXplIEV2ZW50SGFuZGxlcjo6dW5pdFZlY3RvcihTY3JvbGxEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgorICAgICAgICByZXR1cm4geyAwLCAtMSB9OworICAg
IGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgorICAgICAgICByZXR1cm4geyAwLCAx
IH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CisgICAgICAgIHJldHVy
biB7IC0xLCAwIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgorICAg
ICAgICByZXR1cm4geyAxLCAwIH07CisgICAgfQorfQorCitDR0Zsb2F0IEV2ZW50SGFuZGxlcjo6
c2Nyb2xsRGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCit7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7CisKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgfHwgZGlyZWN0aW9uID09IFNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bikgCisgICAgICAgIHNjcm9sbGJhciA9IG1fZnJhbWUu
dmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIGVsc2UgCisgICAgICAgIHNjcm9sbGJh
ciA9IG1fZnJhbWUudmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgCisgICAgQ0dG
bG9hdCBzdGVwID0gMDsKKworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXIt
PmxpbmVTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6
OlNjcm9sbEJ5UGFnZToKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+cGFnZVN0ZXAoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVu
dDoKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgIHN0
ZXAgPSBzY3JvbGxiYXItPnBpeGVsU3RlcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RlcDsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2Ny
b2xsaW5nKEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIFdURkxvZ0Fsd2F5cygidXNpbmcg
aGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmdcbiIpOworICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhf
dCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBBcnJvdywgRG93bkFycm93LCBTcGFjZSB9Owor
CisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJMZWZ0IikK
KyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRl
bnRpZmllcigpID09ICJSaWdodCIpCisgICAgICAgIGtleSA9IEtleTo6UmlnaHRBcnJvdzsKKyAg
ICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIlVwIikKKyAgICAgICAga2V5ID0g
S2V5OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiRG93
biIpCisgICAgICAgIGtleSA9IEtleTo6RG93bkFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmNo
YXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBrZXkgPSBLZXk6OlNwYWNlOworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBncmFudWxhcml0eSA9IF4oKSB7CisgICAg
ICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAg
IGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgp
ID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZSA6IFNjcm9sbEdyYW51bGFyaXR5OjpT
Y3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgorICAgICAgICBjYXNlIEtl
eTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAg
ICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9s
bEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3Jh
bnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAgICAg
ICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIH07
CisgICAgfSgpOworCisgICAgYXV0byBkaXJlY3Rpb24gPSBeKCkgeworICAgICAgICBzd2l0Y2gg
KGtleSkgeworICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJu
IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDsKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJy
b3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKKyAg
ICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgICAg
IHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CisgICAgICAgIGNhc2UgS2V5OjpT
cGFjZToKKyAgICAgICAgICAgIHJldHVybiBldmVudC5zaGlmdEtleSgpID8gU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAgfTsK
KyAgICB9KCk7CisKKyAgICBDR0Zsb2F0IGRpc3RhbmNlID0gc2Nyb2xsRGlzdGFuY2UoZGlyZWN0
aW9uLCBncmFudWxhcml0eSk7CisgICAgCisgICAgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwgc2Ny
b2xsOworCisgICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRWZWN0b3IoZGlyZWN0aW9uKS5zY2FsZWQo
ZGlzdGFuY2UpOworICAgIHNjcm9sbC5ncmFudWxhcml0eSA9IGdyYW51bGFyaXR5OworICAgIHNj
cm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CisgICAgc2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9
IHNjcm9sbC5vZmZzZXQuc2NhbGVkKEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVy
cygpLm1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOworCisgICAgc2Nyb2xsLmZvcmNlID0gc2Ny
b2xsLm1heGltdW1WZWxvY2l0eS5zY2FsZWQoS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzOjpwYXJh
bWV0ZXJzKCkuc3ByaW5nTWFzcyAvIEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVy
cygpLnRpbWVUb01heGltdW1WZWxvY2l0eSk7CisKKyAgICByZXR1cm4gRXZlbnRIYW5kbGVyOjpz
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKK30KIAog
dm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlv
biBmb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KTsKIAorICAgIGlmICghaXNT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoJm1fZnJhbWUpKSB7CisgICAgICAgIGhhbmRsZUtleWJv
YXJkU2Nyb2xsaW5nKGV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChl
dmVudC5jdHJsS2V5KCkgfHwgZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkg
fHwgZXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjQ3LDkgKzQzNTks
NiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGly
ZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUgZGlyZWN0
aW9uYWwgbmF2aWdhdGlvbiBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8vIG1vZGUg
ZWRpdGluZy4KICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDlmYjUyYjJlOWZiZDg1NzMxNTM0YTZiMjhh
OTFhMzY5YzM3ODc3ZDIuLjM1MTUxODQ3M2E4YWIzMDJhNDdkODMxNjM4NmUzZmEwMGNhMGJmNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVk
ZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTM3NSw2ICszNzYsMTEgQEAgcHJpdmF0ZToKICAgICBi
b29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNs
aWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorICAgIHN0YXRpYyBG
bG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24pOworICAgIENHRmxvYXQgc2Nyb2xs
RGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CisgICAgYm9vbCBo
YW5kbGVLZXlib2FyZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50Jik7CisKKwogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3VsZENo
ZWNrRHJhZ0h5c3RlcmVzaXMpOwogICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0
RHJhZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNj
cm9sbC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE1MmIyZGNmMThhOGI2NmQzNTljYjJkY2VmNzJjNmJmNWVlMGMxNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisgICAg
V2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHk7CisgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgeworICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKKyAg
ICBDR0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIENHRmxvYXQgc3ByaW5nRGFt
cGluZyB7IDIwIH07CisKKyAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAy
NSB9OworICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAgQ0dG
bG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcmV0dXJu
IHBhcmFtZXRlcnM7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1YTI0ZTI3NWUyZDgu
LjE0NTk1ZmU0ODE5NWRhZWU0MzRlMTNhNTMwY2QyNDRmZGYzZmE5N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLmgKQEAgLTI5LDIyICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0
UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9sbGluZ0lu
Y3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAgTGluZQot
fTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICBVcCwK
LSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNzIFVJU2Ny
b2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5Mjdl
MmNjZDFjYTExNWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLjBmZjJhZTVlNThjYjNmNmM4ZDdi
NGQ1MzEyOGIxNzcyYzQ5NWMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiArMzMs
NyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWN0
RWRnZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktpdC9V
SUtpdFNQSS5oPgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0
cnVjdCBLZXlib2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8g
UG9pbnRzIHBlciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxv
Y2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNl
OwotCi0gICAgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2FyZFNj
cm9sbFBhcmFtZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBDR0Zs
b2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGluZyB7
IDIwIH07Ci0KLSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9Owot
ICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9hdCBy
dWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJvYXJk
U2Nyb2xsYWJsZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tleWJv
YXJkU2Nyb2xsYWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxp
bmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDoo
U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24p
ZGlyZWN0aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0
UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClzY3JvbGxXaXRo
U2Nyb2xsVG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChDR1BvaW50KWNv
bnRlbnRPZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFt
ZXRlcnMgewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBfc2Nyb2xsYWJs
ZTsKICAgICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwogCi0gICAgc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKIAog
ICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsxMDIs
OSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0
ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0
ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0xMzcs
NDcgKzExNSw0NyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBfc2Ny
b2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVjdG9y
KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpG
bG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4g
eyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246Cisg
ICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7IDAs
IDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNh
c2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4geyAtMSwgMCB9
OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2Ug
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9Owog
ICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJzb2x1
dGVVbml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRp
YyBXZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihTY3Jv
bGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAg
Y2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNj
cm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVy
biB7IDEsIDAgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0Ogot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgU2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3RhdGljIFdl
YkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFNjcm9sbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsRG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBj
YXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVm
dDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNl
IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpC
b3hTaWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXli
b2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50Cist
IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9sbEZv
ckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
a1dlYlNwYWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDQ4ICsyMzMsNDggQEAgc3RhdGljIFdlYkNv
cmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFy
cm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJuIFdl
YktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNjcm9s
bEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93Ogog
ICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdl
OworICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdl
OwogICAgICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdl
YktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVybiBX
ZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VV
cDoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6
Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAgICAg
ICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAg
ICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAg
fTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3aXRj
aCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICByZXR1
cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJv
dzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7
CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKICAgICAg
ICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOworICAgICAgICAgICAg
cmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpEb3du
QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKLSAgICAgICAgICAgIHJldHVybiBX
ZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAg
ICAgICAgIHJldHVybiBzaGlmdFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
VXAgOiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVy
biBzaGlmdFByZXNzZWQgPyBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBzY3JvbGxEaXN0
YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1lbnQgaW5EaXJl
Y3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOwor
ICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKICAgICBzY3JvbGwub2Zmc2V0ID0g
dW5pdFZlY3RvcihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7CiAgICAgc2Nyb2xs
LmluY3JlbWVudCA9IGluY3JlbWVudDsKICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0aW9u
OwpAQCAtMzI3LDcgKzMwNSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIF9zY3JvbGxUcmlnZ2VyaW5n
S2V5SXNQcmVzc2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xsID0gc2Nyb2xsOwogCi0gICAg
aWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1
bWVudCkgeworICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBTY3JvbGxHcmFudWxhcml0eTo6
U2Nyb2xsQnlEb2N1bWVudCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAgIFtz
ZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlua107
CkBAIC0zNjAsMTYgKzMzOCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBX
ZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludElu
RGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBT
Y3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0g
ICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChh
LngoKSwgc3RkOjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEueSgp
LCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6Cisg
ICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAgICBjYXNl
IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNjcm9sbERpcmVj
dGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0
ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NDQsNyBA
QCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Nyb2xs
YWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zsb2F0
KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1l
bnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgorLSAo
Q0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50
IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBzY3Jv
bGxWaWV3ID0gX3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3JvbGxW
aWV3KQpAQCAtNTc1LDE1ICs1NTMsMTUgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFy
dGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBj
b25zdCBDR0Zsb2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29uc3Qg
Q0dGbG9hdCBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJlY3Rp
b25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246
OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsK
KyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
UmlnaHQ7CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0YW5jZUZvckluY3JlbWVu
dCkgewogICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2FzZSBTY3JvbGxHcmFudWxh
cml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hv
cml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5jb250
ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6
OlBhZ2U6CisgICAgICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToKICAg
ICAgICAgICAgIHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5mcmFt
ZS5zaXplLndpZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0UGFn
ZVNjcm9sbEZyYWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50
OjpMaW5lOgorICAgICAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CiAg
ICAgICAgICAgICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3Lnpv
b21TY2FsZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5k
ZXggMmFiMTA4NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uYjkyNjk4ZjdkZDdh
NDdhNDdmYzE5NTY3MGYzY2NhNDllYWQ3MzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBi
b29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2
ZW50KQogICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVm
YXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29t
bWFuZHMuCiAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxhdGVz
dCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgogICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21t
YW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgewot
ICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFs
KGNvbW1hbmRzLCAmZXZlbnQpOworICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5
cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbW1hbmRzLCAmZXZlbnQpOyAKICAgICAgICAgY29tbWFu
ZHMuY2xlYXIoKTsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQ
REZTZWxlYwogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAg
ICAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVu
dC4KKyAgICAvLyAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxl
IHRoZSBldmVudC4KICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsKICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZv
ckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkp
CkBAIC00NjMsMzQgKzQ2MywzNSBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVo
YXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIC8vIFNo
b3VsZCBzdWNoIG5vbi1lZGl0aW5nIGJlaGF2aW9ycyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0b3Ig
b3IgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoKSBwZXJoYXBzPwogICAg
IAogICAgIGJvb2wgZGlkUGVyZm9ybUFjdGlvbiA9IGZhbHNlOwotCi0gICAgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVXA6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgewotICAgICAg
ICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9s
bEJ5RG9jdW1lbnQpOwotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVEb3duOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAgICAg
IGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3Jv
bGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdl
LmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgCisgICAgLy8gaWYg
KHNlbGVjdG9yID09ICJtb3ZlVXA6IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgIC8vIGlmIChz
ZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKKyAgICAvLyAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBh
Z2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3Vt
ZW50OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rp
b24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7
CisgICAgLy8gfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZURvd246IikKKyAgICAvLyAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9s
bEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFyYWdy
YXBoOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAg
IC8vICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExl
ZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIC8vIH0KKyAgICAvLyB9IGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlTGVmdDoiKQorICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAvLyBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOworICAg
IGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5n
b0JhY2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNl
IGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7Cisg
ICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgIC8vICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5
TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikKKyAg
ICAvLyAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmln
aHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0
RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6
TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9y
d2FyZCgpLmdvQmFjaygpOwotCisgICAgCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431919</attachid>
            <date>2021-06-21 15:41:26 -0700</date>
            <delta_ts>2021-06-22 11:18:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210621184125.patch</filename>
            <type>text/plain</type>
            <size>32895</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwY2QwOGIyZTgzY2Fh
YTFmMjkwNDk5ZjM2YmUxZjk3MTE0MzU3Zi4uMzFmZDdkMjY5NGE3MTVjZWQxYzYzNDAyZWY2Mjg0
NWMzMWVlN2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5
Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisKKyAgICAgICAg
Tm8gdGVzdHMgeWV0CisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1bml0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6U2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZh
dWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6Cisg
ICAgICAgICogcGFnZS9LZXlib2FyZFNjcm9sbC5oOiBBZGRlZC4KKwogMjAyMS0wNi0xNCAgUGF0
cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Q1NTIHZhcmlhYmxlcyBub3QgaGFuZGxlZCBhcyBjYXNlIHNlbnNpdGl2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBi
NTZlMWI0YWEyZmVhOWZiMTNiNDYxMTFiODBjZTFkZjhiMzU4OTYwLi45OTE1ODA1MDEzZTZmOGJi
ZWM1MDk3Y2Y4YmI0NzI3MDU1OTM4M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIx
LTA2LTE0ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbToKKyAgICAgICAgKC1bV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yIHBhcmFtZXRlcnNdKToKKyAgICAgICAgKHVuaXRWZWN0b3Ip
OgorICAgICAgICAocGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3Rvcik6CisgICAgICAgIChi
b3hTaWRlKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGtleWJvYXJk
U2Nyb2xsRm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgKGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbik6
CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNy
ZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcik6CisKIDIwMjEtMDYtMTQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2luZyBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgYWZ0ZXIgZ3JhbnRpbmcgcGVybWlzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5NmY5ODI5
NmM5YTZjYjY2NjgzMzc0NGRkNWRjNzY3NzBiZTZmMzUuLjNiYjE2ZGRjZDcwZmI3Nzk0YzlmNDVj
YWM3MGMxMWRjNWVmY2E0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2Nyw2ICs2NjcsNyBAQAogCQkxREJDMUI1NjIzNDdC
M0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYg
LyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUREM0I0QzYyNTFEQTBCODAwNjlCMjRBIC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9i
akMubW0gKi87IH07CiAJCTFERjdFODFGMjUxQTlFMDYwMERCOEY2MSAvKiBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUYwMjBB
RUYyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEgLyog
S2V5Ym9hcmRTY3JvbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxRjM2RUE5QzFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjM2RUE5QTFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY3
MkJGMEIxODdGRDQ1QzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY3MkJGMDkx
ODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGODc1NkIyMUUy
MkMzMzUwMDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGODc1NkIxMUUyMkJFRUYw
MDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA2NCw2ICs3MDY1LDcgQEAK
IAkJMURFRjA2REMyMzNEMkUxQzAwRUUyMjhEIC8qIERvY3VtZW50UGljdHVyZUluUGljdHVyZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBpY3R1cmVJ
blBpY3R1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREVGMDZERDIzM0Qy
RTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREVGMDZERTIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnQr
UGljdHVyZUluUGljdHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkRvY3VtZW50K1Bp
Y3R1cmVJblBpY3R1cmUuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMjBB
RUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFGMzZFQTlBMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGMzZFQTlCMUUy
MUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xs
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTEzLDYgKzIyNTE1LDcgQEAKIAkJ
CQkwRjQ3MTBEODFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5j
cHAgKi8sCiAJCQkJMEY0NzEwRDkxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnkuaCAqLywKIAkJCQkwRjQ3MTBEQTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJFbnRyeS5pZGwgKi8sCisJCQkJMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8q
IEtleWJvYXJkU2Nyb2xsLmggKi8sCiAJCQkJOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExh
eW91dE1pbGVzdG9uZS5oICovLAogCQkJCUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2Nh
dGlvbi5jcHAgKi8sCiAJCQkJQkNFMUM0MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmgg
Ki8sCkBAIC0zMjY0Niw3ICszMjY0OSw2IEBACiAJCQkJRTRBOEQyMTYyMjU3OERCNzAwQTg0NjND
IC8qIEV2ZW50UmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMEZFRjM3MkIxN0M1M0VBQzFD
MUZCRUUgLyogRXZlbnRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMkVEQjdCMEIzMDhB
NzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTNDQTBCRkMy
NjczRjQ3QzAwOUZERDY3IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODRCMzQ5QTIyMkY4NkU3NTAwRDQ3QkNGIC8qIEV2ZW50VGFyZ2V0Q29uY3Jl
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVu
dFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM0NTMs
NiArMzM0NTUsNyBAQAogCQkJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NSAvKiBKU0RP
TUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0NUM5RDQx
RTNGQ0JERjAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlFM0NBMEJGQzI2NzNGNDdDMDA5RkRENjcgLyogSlNET01CaW5kaW5nU2VjdXJpdHlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGNzkgLyogSlNE
T01DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8q
IEpTRE9NQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDFDNDQxNjI2MEMzOEZE
MDBGRjY2NzMgLyogSlNET01DYXN0VGhpc1ZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0MTU3
LDYgKzM0MTYwLDcgQEAKIAkJCQlCQ0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJv
Y2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyog
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQ0MEE0
NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjAy
MEFFRjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVy
Q0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDk2OTg2YjUzMDkxYmM2OTBlNmZjZDRjYjA2N2FiYTAyMWEzNTYwNzIuLjA2Y2IyZDk2OThkMjA4
MDI4YWU1OTI2OTM3OTg3NjRiODg0NzVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmgiCkBAIC0zNzk5LDcgKzM4MDAsNiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
ICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSkKICAgICAgICAg
ICAgICAgICBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoZGlyZWN0aW9uLCBldmVudCk7CiAgICAg
ICAgIH0KLQogICAgICAgICBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNz
aWJpbGl0eShldmVudCk7CiAgICAgfQogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleXByZXNzRXZlbnQpIHsKQEAgLTQxODksMjEgKzQxODksMjEgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OmRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAg
ICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCiAgICAgQVNTRVJUKGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7Ci0KKyAgICAKICAgICBpZiAo
ZXZlbnQuY3RybEtleSgpIHx8IGV2ZW50Lm1ldGFLZXkoKSB8fCBldmVudC5hbHRLZXkoKSB8fCBl
dmVudC5hbHRHcmFwaEtleSgpKQogICAgICAgICByZXR1cm47Ci0KKyAgICAKICAgICBTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5KCkgPyBTY3JvbGxCbG9j
a0RpcmVjdGlvbkJhY2t3YXJkIDogU2Nyb2xsQmxvY2tEaXJlY3Rpb25Gb3J3YXJkOwogICAgIGlm
IChsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKSB7CiAgICAg
ICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0K
KyAgICAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2aWV3LT5sb2dpY2FsU2Nyb2xsKGRpcmVj
dGlvbiwgU2Nyb2xsQnlQYWdlKSkKKyAgICBpZiAoaGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoZXZl
bnQpKQogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC00MjM1LDEx
ICs0MjM1LDEyMiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFu
ZGxlcihLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAorRmxvYXRTaXplIEV2ZW50SGFuZGxlcjo6dW5pdFZlY3RvcihTY3JvbGxEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgorICAgICAgICByZXR1cm4geyAwLCAtMSB9OworICAg
IGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgorICAgICAgICByZXR1cm4geyAwLCAx
IH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CisgICAgICAgIHJldHVy
biB7IC0xLCAwIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgorICAg
ICAgICByZXR1cm4geyAxLCAwIH07CisgICAgfQorfQorCitDR0Zsb2F0IEV2ZW50SGFuZGxlcjo6
c2Nyb2xsRGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCit7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7CisKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgfHwgZGlyZWN0aW9uID09IFNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bikgCisgICAgICAgIHNjcm9sbGJhciA9IG1fZnJhbWUu
dmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIGVsc2UgCisgICAgICAgIHNjcm9sbGJh
ciA9IG1fZnJhbWUudmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgCisgICAgQ0dG
bG9hdCBzdGVwID0gMDsKKworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXIt
PmxpbmVTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6
OlNjcm9sbEJ5UGFnZToKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+cGFnZVN0ZXAoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVu
dDoKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgIHN0
ZXAgPSBzY3JvbGxiYXItPnBpeGVsU3RlcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RlcDsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2Ny
b2xsaW5nKEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIGVudW0gY2xhc3MgS2V5IDogdWlu
dDhfdCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBBcnJvdywgRG93bkFycm93LCBTcGFjZSB9
OworCisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJMZWZ0
IikKKyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5
SWRlbnRpZmllcigpID09ICJSaWdodCIpCisgICAgICAgIGtleSA9IEtleTo6UmlnaHRBcnJvdzsK
KyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIlVwIikKKyAgICAgICAga2V5
ID0gS2V5OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAi
RG93biIpCisgICAgICAgIGtleSA9IEtleTo6RG93bkFycm93OworICAgIGVsc2UgaWYgKGV2ZW50
LmNoYXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBrZXkgPSBLZXk6OlNwYWNlOworICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBncmFudWxhcml0eSA9IF4oKSB7Cisg
ICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAg
ICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmFsdEtl
eSgpID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZSA6IFNjcm9sbEdyYW51bGFyaXR5
OjpTY3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgorICAgICAgICBjYXNl
IEtleTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7Cisg
ICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xs
R3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAg
ICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAg
IH07CisgICAgfSgpOworCisgICAgYXV0byBkaXJlY3Rpb24gPSBeKCkgeworICAgICAgICBzd2l0
Y2ggKGtleSkgeworICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICAgICAgcmV0
dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDsKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0
QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsK
KyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAg
ICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CisgICAgICAgIGNhc2UgS2V5
OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBldmVudC5zaGlmdEtleSgpID8gU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAg
fTsKKyAgICB9KCk7CisKKyAgICBDR0Zsb2F0IGRpc3RhbmNlID0gc2Nyb2xsRGlzdGFuY2UoZGly
ZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgCisgICAgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwg
c2Nyb2xsOworCisgICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRWZWN0b3IoZGlyZWN0aW9uKS5zY2Fs
ZWQoZGlzdGFuY2UpOworICAgIHNjcm9sbC5ncmFudWxhcml0eSA9IGdyYW51bGFyaXR5OworICAg
IHNjcm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CisgICAgc2Nyb2xsLm1heGltdW1WZWxvY2l0
eSA9IHNjcm9sbC5vZmZzZXQuc2NhbGVkKEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1l
dGVycygpLm1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOworCisgICAgc2Nyb2xsLmZvcmNlID0g
c2Nyb2xsLm1heGltdW1WZWxvY2l0eS5zY2FsZWQoS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzOjpw
YXJhbWV0ZXJzKCkuc3ByaW5nTWFzcyAvIEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1l
dGVycygpLnRpbWVUb01heGltdW1WZWxvY2l0eSk7CisKKyAgICByZXR1cm4gRXZlbnRIYW5kbGVy
OjpzY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKK30K
IAogdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVj
dGlvbiBmb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJU
KGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KTsKIAorICAgIGlmICgh
aXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoJm1fZnJhbWUpKSB7CisgICAgICAgIGhhbmRsZUtl
eWJvYXJkU2Nyb2xsaW5nKGV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlm
IChldmVudC5jdHJsS2V5KCkgfHwgZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5
KCkgfHwgZXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjQ3LDkgKzQz
NTgsNiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3Vz
RGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUgZGly
ZWN0aW9uYWwgbmF2aWdhdGlvbiBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8vIG1v
ZGUgZWRpdGluZy4KICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDlmYjUyYjJlOWZiZDg1NzMxNTM0YTZi
MjhhOTFhMzY5YzM3ODc3ZDIuLjM1MTUxODQ3M2E4YWIzMDJhNDdkODMxNjM4NmUzZmEwMGNhMGJm
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNs
dWRlICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5j
bHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTM3NSw2ICszNzYsMTEgQEAgcHJpdmF0ZToKICAg
ICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBs
ZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorICAgIHN0YXRp
YyBGbG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24pOworICAgIENHRmxvYXQgc2Ny
b2xsRGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CisgICAgYm9v
bCBoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50Jik7CisKKwogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3Vs
ZENoZWNrRHJhZ0h5c3RlcmVzaXMpOwogICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0
YXJ0RHJhZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2Fy
ZFNjcm9sbC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE1MmIyZGNmMThhOGI2NmQzNTljYjJkY2VmNzJjNmJmNWVlMGMxNjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHk7CisgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgeworICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsK
KyAgICBDR0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIENHRmxvYXQgc3ByaW5n
RGFtcGluZyB7IDIwIH07CisKKyAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIg
eyAyNSB9OworICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAg
Q0dGbG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgS2V5
Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcmV0
dXJuIHBhcmFtZXRlcnM7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1YTI0ZTI3NWUy
ZDguLjE0NTk1ZmU0ODE5NWRhZWU0MzRlMTNhNTMwY2QyNDRmZGYzZmE5N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLmgKQEAgLTI5LDIyICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZs
b2F0UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9sbGlu
Z0luY3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAgTGlu
ZQotfTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICBV
cCwKLSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNzIFVJ
U2Nyb2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5
MjdlMmNjZDFjYTExNWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLjBmZjJhZTVlNThjYjNmNmM4
ZDdiNGQ1MzEyOGIxNzcyYzQ5NWMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiAr
MzMsNyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZWN0RWRnZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktp
dC9VSUtpdFNQSS5oPgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXN0cnVjdCBLZXlib2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsg
Ly8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1W
ZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZv
cmNlOwotCi0gICAgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2Fy
ZFNjcm9sbFBhcmFtZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBD
R0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGlu
ZyB7IDIwIH07Ci0KLSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9
OwotICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9h
dCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJv
YXJkU2Nyb2xsYWJsZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tl
eWJvYXJkU2Nyb2xsYWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktp
dDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVu
dDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rp
b24pZGlyZWN0aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZs
b2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClzY3JvbGxX
aXRoU2Nyb2xsVG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChDR1BvaW50
KWNvbnRlbnRPZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBh
cmFtZXRlcnMgewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBfc2Nyb2xs
YWJsZTsKICAgICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwogCi0gICAg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsK
IAogICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsx
MDIsOSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJh
bWV0ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJh
bWV0ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xs
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0x
MzcsNDcgKzExNSw0NyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBf
c2Nyb2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVj
dG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3Jl
OjpGbG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1
cm4geyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246
CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7
IDAsIDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAg
IGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4geyAtMSwg
MCB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNh
c2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9
OwogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJz
b2x1dGVVbml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0
YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihT
Y3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0g
ICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsVXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJl
dHVybiB7IDEsIDAgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0
OgotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2Ug
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpT
Y3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3RhdGlj
IFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFNjcm9sbERpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
VXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6
U2Nyb2xsRG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6
TGVmdDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBj
YXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpCb3hTaWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpL
ZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50
CistIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9s
bEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQga1dlYlNwYWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDQ4ICsyMzMsNDggQEAgc3RhdGljIFdl
YkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdo
dEFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJu
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVy
biBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93
OgogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNz
ZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQ
YWdlOworICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQ
YWdlOwogICAgICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBh
Z2VVcDoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3Bh
Y2U6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7
CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAg
ICAgICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAg
ICAgfTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3
aXRjaCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtleTo6UmlnaHRB
cnJvdzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6Umln
aHQ7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKICAg
ICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6Ci0gICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOworICAgICAgICAg
ICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpE
b3duQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAg
ICAgICAgICAgIHJldHVybiBzaGlmdFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXAgOiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJl
dHVybiBzaGlmdFByZXNzZWQgPyBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBzY3JvbGxE
aXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1lbnQgaW5E
aXJlY3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xs
OworICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKICAgICBzY3JvbGwub2Zmc2V0
ID0gdW5pdFZlY3RvcihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7CiAgICAgc2Ny
b2xsLmluY3JlbWVudCA9IGluY3JlbWVudDsKICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0
aW9uOwpAQCAtMzI3LDcgKzMwNSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUo
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIF9zY3JvbGxUcmlnZ2Vy
aW5nS2V5SXNQcmVzc2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xsID0gc2Nyb2xsOwogCi0g
ICAgaWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpE
b2N1bWVudCkgeworICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBTY3JvbGxHcmFudWxhcml0
eTo6U2Nyb2xsQnlEb2N1bWVudCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAg
IFtzZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlu
a107CkBAIC0zNjAsMTYgKzMzOCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRl
KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRp
YyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2lu
dEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBi
LCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2lu
dChhLngoKSwgc3RkOjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93
bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEu
eSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6
CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAgICBj
YXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNjcm9sbERp
cmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50
KHN0ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NDQs
NyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24o
V2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Ny
b2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zs
b2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNy
ZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgor
LSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVt
ZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBz
Y3JvbGxWaWV3ID0gX3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3Jv
bGxWaWV3KQpAQCAtNTc1LDE1ICs1NTMsMTUgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQg
ZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAg
ICBjb25zdCBDR0Zsb2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29u
c3QgQ0dGbG9hdCBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJl
Y3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b246OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdo
dDsKKyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsUmlnaHQ7CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0YW5jZUZvckluY3Jl
bWVudCkgewogICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAgICBjYXNlIFdlYktp
dDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2FzZSBTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25J
c0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5j
b250ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1l
bnQ6OlBhZ2U6CisgICAgICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToK
ICAgICAgICAgICAgIHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5m
cmFtZS5zaXplLndpZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0
UGFnZVNjcm9sbEZyYWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVt
ZW50OjpMaW5lOgorICAgICAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6
CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3
Lnpvb21TY2FsZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggMmFiMTA4NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uYjkyNjk4Zjdk
ZDdhNDdhNDdmYzE5NTY3MGYzY2NhNDllYWQ3MzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMxMiw3ICszMTIsNyBA
QCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQm
IGV2ZW50KQogICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywg
ZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUg
Y29tbWFuZHMuCiAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxh
dGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgogICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25D
b21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikg
ewotICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVy
bmFsKGNvbW1hbmRzLCAmZXZlbnQpOworICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRl
S2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbW1hbmRzLCAmZXZlbnQpOyAKICAgICAgICAgY29t
bWFuZHMuY2xlYXIoKTsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBEaWN0aW9uYXJ5UG9w
dXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdp
bihQREZTZWxlYwogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JT
ZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
LSAgICAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBl
dmVudC4KKyAgICAvLyAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFu
ZGxlIHRoZSBldmVudC4KICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsK
ICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVu
dEZvckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVk
KCkpCkBAIC00NjMsMzQgKzQ2MywzNSBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIC8v
IFNob3VsZCBzdWNoIG5vbi1lZGl0aW5nIGJlaGF2aW9ycyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0
b3Igb3IgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoKSBwZXJoYXBzPwog
ICAgIAogICAgIGJvb2wgZGlkUGVyZm9ybUFjdGlvbiA9IGZhbHNlOwotCi0gICAgaWYgKHNlbGVj
dG9yID09ICJtb3ZlVXA6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgewotICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNj
cm9sbEJ5RG9jdW1lbnQpOwotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAo
c2VsZWN0b3IgPT0gIm1vdmVEb3duOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3Jt
QWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsK
LSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAg
ICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBT
Y3JvbGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9w
YWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24g
PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVs
c2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgCisgICAgLy8g
aWYgKHNlbGVjdG9yID09ICJtb3ZlVXA6IikKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgIC8vIGlm
IChzZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKKyAgICAvLyAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxC
eVBhZ2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRv
Y3VtZW50OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgLy8gICAgIGRpZFBlcmZvcm1B
Y3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVu
dCk7CisgICAgLy8gfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZURvd246IikKKyAgICAvLyAg
ICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNj
cm9sbEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFy
YWdyYXBoOiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAgICAvLyAgICAgZGlkUGVyZm9ybUFjdGlv
biA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOwor
ICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgIC8vIH0KKyAgICAvLyB9IGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlTGVmdDoiKQorICAgIC8vICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAvLyBlbHNl
IGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCisgICAgLy8gICAgIGRpZFBlcmZvcm1B
Y3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwor
ICAgIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6
OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQo
KS5nb0JhY2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNl
IGlmIChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24g
PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBl
bHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3Jt
QWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7
CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgIC8vICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9s
bEJ5TGluZSk7CisgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikK
KyAgICAvLyAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xs
UmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1Jp
Z2h0RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNr
Rm9yd2FyZCgpLmdvQmFjaygpOwotCisgICAgCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431979</attachid>
            <date>2021-06-22 11:18:14 -0700</date>
            <delta_ts>2021-06-22 14:12:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210622141813.patch</filename>
            <type>text/plain</type>
            <size>34363</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwY2QwOGIyZTgzY2Fh
YTFmMjkwNDk5ZjM2YmUxZjk3MTE0MzU3Zi4uMzFmZDdkMjY5NGE3MTVjZWQxYzYzNDAyZWY2Mjg0
NWMzMWVlN2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5
Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisKKyAgICAgICAg
Tm8gdGVzdHMgeWV0CisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1bml0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6U2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZh
dWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6Cisg
ICAgICAgICogcGFnZS9LZXlib2FyZFNjcm9sbC5oOiBBZGRlZC4KKwogMjAyMS0wNi0xNCAgUGF0
cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Q1NTIHZhcmlhYmxlcyBub3QgaGFuZGxlZCBhcyBjYXNlIHNlbnNpdGl2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBi
NTZlMWI0YWEyZmVhOWZiMTNiNDYxMTFiODBjZTFkZjhiMzU4OTYwLi45OTE1ODA1MDEzZTZmOGJi
ZWM1MDk3Y2Y4YmI0NzI3MDU1OTM4M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIx
LTA2LTE0ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbToKKyAgICAgICAgKC1bV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yIHBhcmFtZXRlcnNdKToKKyAgICAgICAgKHVuaXRWZWN0b3Ip
OgorICAgICAgICAocGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3Rvcik6CisgICAgICAgIChi
b3hTaWRlKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGtleWJvYXJk
U2Nyb2xsRm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgKGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbik6
CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNy
ZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcik6CisKIDIwMjEtMDYtMTQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2luZyBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgYWZ0ZXIgZ3JhbnRpbmcgcGVybWlzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFt
bCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFs
LnlhbWwKaW5kZXggMTgzODlmYzc2ZWVhNzdjMGE0YWYwMTc1YzUzZDViZTg1MTU2ZGEyZS4uNTRl
MjBmZGQ5NWU5M2RkNTBkNjhiZTFiNjUzZjJkYTQxYzg4MzdkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55
YW1sCkBAIC02ODUsNiArNjg1LDE4IEBAIFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkOgogICAgIFdl
YkNvcmU6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKK1Ntb290aEtleWJvYXJkU2Nyb2xsaW5nRW5h
YmxlZDoKKyB0eXBlOiBib29sCisgaHVtYW5SZWFkYWJsZU5hbWU6ICJTbW9vdGggS2V5Ym9hcmQg
U2Nyb2xsaW5nIgorIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBzbW9vdGgga2V5
Ym9hcmQgc2Nyb2xsaW5nIgorIGRlZmF1bHRWYWx1ZToKKyAgV2ViS2l0TGVnYWN5OgorICAgZGVm
YXVsdDogZmFsc2UKKyAgV2ViS2l0OgorICAgZGVmYXVsdDogZmFsc2UKKyAgV2ViQ29yZToKKyAg
IGRlZmF1bHQ6IGZhbHNlCisKICMgRklYTUU6IElzIHRoaXMgaW1wbGVtZW50ZWQgZm9yIFdlYktp
dExlZ2FjeT8gSWYgbm90LCB0aGlzIHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIFdlYktpdExlZ2Fj
eSBlbnRpcmVseS4KIFNwZWFrZXJTZWxlY3Rpb25SZXF1aXJlc1VzZXJHZXN0dXJlOgogICB0eXBl
OiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMjk2Zjk4Mjk2YzlhNmNiNjY2ODMzNzQ0ZGQ1ZGM3Njc3MGJlNmYzNS4uM2Ji
MTZkZGNkNzBmYjc3OTRjOWY0NWNhYzcwYzExZGM1ZWZjYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjY3LDYgKzY2Nyw3
IEBACiAJCTFEQkMxQjU2MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQkMx
QjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREQzQjRDNjI1MURB
MEI4MDA2OUIyNEEgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8q
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSAqLzsgfTsKIAkJMURGN0U4MUYyNTFBOUUwNjAwREI4
RjYxIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREQxRTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxRjAyMEFFRjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDIwQUVE
MjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGMzZFQTlDMUUyMUJBMTcwMDYyMUUyNSAv
KiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzZFQTlBMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNr
Z3JvdW5kVGFza0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxRjcyQkYwQjE4N0ZENDVDMDAwOUJDQjMgLyogVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUY4NzU2QjIxRTIyQzMzNTAwNDJDNDBEIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUY4NzU2QjExRTIyQkVFRjAwNDJDNDBEIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC03MDY0LDYgKzcwNjUsNyBAQAogCQkxREVGMDZEQzIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1l
bnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFERUYwNkREMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRQaWN0dXJlSW5Q
aWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkRFMjMzRDJFMUMw
MEVFMjI4RCAvKiBEb2N1bWVudCtQaWN0dXJlSW5QaWN0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSAiRG9jdW1lbnQrUGljdHVyZUluUGljdHVyZS5pZGwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5Ym9hcmRTY3JvbGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUExRTIxQkExNzAwNjIxRTI1IC8qIFdl
YkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUYzNkVBOUIxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkJh
Y2tncm91bmRUYXNrQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklP
Uy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI1
MTMsNiArMjI1MTUsNyBAQAogCQkJCTBGNDcxMEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5LmNwcCAqLywKIAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAyRENFQzMg
LyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oICovLAogCQkJCTBGNDcxMERBMURCNkZFMjIw
MDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbCAqLywKKwkJCQkxRjAyMEFF
RDI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCAqLywKIAkJCQk5MzFENzJGNTE1
RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggKi8sCiAJCQkJQkNFMUM0MUEwRDk4
Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmNwcCAqLywKIAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAz
QjAyRjIgLyogTG9jYXRpb24uaCAqLywKQEAgLTMyNjQ2LDcgKzMyNjQ5LDYgQEAKIAkJCQlFNEE4
RDIxNjIyNTc4REI3MDBBODQ2M0MgLyogRXZlbnRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUwRkVGMzcyQjE3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyRURCN0IwQjMwOEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFM0NBMEJGQzI2NzNGNDdDMDA5RkRENjcgLyogSlNET01CaW5kaW5nU2VjdXJp
dHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEIzNDlBMjIyRjg2RTc1MDBENDdCQ0Yg
LyogRXZlbnRUYXJnZXRDb25jcmV0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQTNDQTUxNDUy
MzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdBQTNDQTYxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMzQ1Myw2ICszMzQ1NSw3IEBACiAJCQkJOTNCNzBENjQwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJE
MTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzQ1QzlENDFFM0ZDQkRGMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJp
dHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQ0EwQkZDMjY3M0Y0N0MwMDlGREQ2NyAvKiBKU0RP
TUJpbmRpbmdTZWN1cml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTczMUYy
QUJFNzEwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3
MzFGMkFCRTcxMDAyNzJGN0EgLyogSlNET01DYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0MUM0NDE2MjYwQzM4RkQwMEZGNjY3MyAvKiBKU0RPTUNhc3RUaGlzVmFsdWUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQxNTcsNiArMzQxNjAsNyBAQAogCQkJCUJDRUZFMUVCMERDQTVGNjQw
MDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjc0RUY2
MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9s
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENTkxODJEQUM4RDAwMDg3REQ3IC8qIEtleWVk
Q29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNTFCNzQzMThGMDBFN0RDREMgLyog
S2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E2M0M2MUI3NDMxOTIwMEU3
RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKaW5kZXggOTY5ODZiNTMwOTFiYzY5MGU2ZmNkNGNiMDY3YWJhMDIxYTM1
NjA3Mi4uOTI5NzQxMGJlYjdiYjkwY2ZhN2I5NWI3ZGE5YjRmMWNlNTdlZTFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgIklt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3Jv
bGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKQEAgLTM3OTksNyArMzgwMCw2
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uICE9IEZvY3VzRGlyZWN0
aW9uOjpOb25lKQogICAgICAgICAgICAgICAgIGRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihkaXJl
Y3Rpb24sIGV2ZW50KTsKICAgICAgICAgfQotCiAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0
aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkgewpAQCAtNDE4OSwyMiArNDE4
OSwyNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKEtleWJv
YXJkRXZlbnQmIGV2ZW50KQogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7
CiAKICAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50
KTsKLQorICAgIAogICAgIGlmIChldmVudC5jdHJsS2V5KCkgfHwgZXZlbnQubWV0YUtleSgpIHx8
IGV2ZW50LmFsdEtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkpCiAgICAgICAgIHJldHVybjsK
LQorICAgIAogICAgIFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uID0gZXZlbnQuc2hp
ZnRLZXkoKSA/IFNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQgOiBTY3JvbGxCbG9ja0RpcmVj
dGlvbkZvcndhcmQ7CiAgICAgaWYgKGxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24sIFNj
cm9sbEJ5UGFnZSkpIHsKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLQorICAgIAogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUu
dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHZpZXct
PmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKQotICAgICAgICBldmVudC5z
ZXREZWZhdWx0SGFuZGxlZCgpOworICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkuc21vb3RoS2V5
Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGhhbmRsZUtleWJvYXJkU2Ny
b2xsaW5nKGV2ZW50KSkKKyAgICAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBT
Y3JvbGxCeVBhZ2UpKQorICAgICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVy
KEtleWJvYXJkRXZlbnQmIGV2ZW50KQpAQCAtNDIzNSwxMSArNDI0MCwxMjMgQEAgdm9pZCBFdmVu
dEhhbmRsZXI6OmRlZmF1bHRCYWNrc3BhY2VFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK0Zsb2F0U2l6ZSBF
dmVudEhhbmRsZXI6OnVuaXRWZWN0b3IoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAg
ICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxV
cDoKKyAgICAgICAgcmV0dXJuIHsgMCwgLTEgfTsKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6
U2Nyb2xsRG93bjoKKyAgICAgICAgcmV0dXJuIHsgMCwgMSB9OworICAgIGNhc2UgU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgICAgICByZXR1cm4geyAtMSwgMCB9OworICAgIGNhc2Ug
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKKyAgICAgICAgcmV0dXJuIHsgMSwgMCB9Owor
ICAgIH0KK30KKworQ0dGbG9hdCBFdmVudEhhbmRsZXI6OnNjcm9sbERpc3RhbmNlKFNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAg
IFNjcm9sbGJhciogc2Nyb2xsYmFyOworCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbFVwIHx8IGRpcmVjdGlvbiA9PSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERv
d24pIAorICAgICAgICBzY3JvbGxiYXIgPSBtX2ZyYW1lLnZpZXcoKS0+dmVydGljYWxTY3JvbGxi
YXIoKTsKKyAgICBlbHNlIAorICAgICAgICBzY3JvbGxiYXIgPSBtX2ZyYW1lLnZpZXcoKS0+aG9y
aXpvbnRhbFNjcm9sbGJhcigpOworICAgIAorICAgIENHRmxvYXQgc3RlcCA9IDA7CisKKyAgICBz
d2l0Y2ggKGdyYW51bGFyaXR5KSB7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xs
QnlMaW5lOgorICAgICAgICBzdGVwID0gc2Nyb2xsYmFyLT5saW5lU3RlcCgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6CisgICAgICAg
IHN0ZXAgPSBzY3JvbGxiYXItPnBhZ2VTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ6CisgICAgICAgIHN0ZXAgPSBzY3Jv
bGxiYXItPnRvdGFsU2l6ZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjcm9sbEdyYW51
bGFyaXR5OjpTY3JvbGxCeVBpeGVsOgorICAgICAgICBzdGVwID0gc2Nyb2xsYmFyLT5waXhlbFN0
ZXAoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZXA7Cit9CisKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50JiBl
dmVudCkKK3sKKyAgICBlbnVtIGNsYXNzIEtleSA6IHVpbnQ4X3QgeyBMZWZ0QXJyb3csIFJpZ2h0
QXJyb3csIFVwQXJyb3csIERvd25BcnJvdywgU3BhY2UgfTsKKworICAgIEtleSBrZXk7CisgICAg
aWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiTGVmdCIpCisgICAgICAgIGtleSA9IEtleTo6
TGVmdEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiUmlnaHQi
KQorICAgICAgICBrZXkgPSBLZXk6OlJpZ2h0QXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5
SWRlbnRpZmllcigpID09ICJVcCIpCisgICAgICAgIGtleSA9IEtleTo6VXBBcnJvdzsKKyAgICBl
bHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIkRvd24iKQorICAgICAgICBrZXkgPSBL
ZXk6OkRvd25BcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5jaGFyQ29kZSgpID09ICcgJykKKyAg
ICAgICAga2V5ID0gS2V5OjpTcGFjZTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8gZ3JhbnVsYXJpdHkgPSBeKCkgeworICAgICAgICBzd2l0Y2ggKGtleSkgewor
ICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJv
dzoKKyAgICAgICAgICAgIHJldHVybiBldmVudC5hbHRLZXkoKSA/IFNjcm9sbEdyYW51bGFyaXR5
OjpTY3JvbGxCeVBhZ2UgOiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOworICAgICAg
ICBjYXNlIEtleTo6VXBBcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKKyAgICAg
ICAgICAgIGlmIChldmVudC5tZXRhS2V5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9s
bEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50OworICAgICAgICAgICAgaWYgKGV2ZW50LmFs
dEtleSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xs
QnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxp
bmU7CisgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxH
cmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICB9OworICAgIH0oKTsKKworICAgIGF1
dG8gZGlyZWN0aW9uID0gXigpIHsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgY2Fz
ZSBLZXk6OkxlZnRBcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbExlZnQ7CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICAgICAgcmV0
dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CisgICAgICAgIGNhc2UgS2V5OjpVcEFy
cm93OgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA7CisgICAg
ICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxEb3duOworICAgICAgICBjYXNlIEtleTo6U3BhY2U6CisgICAgICAgICAgICBy
ZXR1cm4gZXZlbnQuc2hpZnRLZXkoKSA/IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgOiBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbERvd247CisgICAgICAgIH07CisgICAgfSgpOworCisgICAgQ0dG
bG9hdCBkaXN0YW5jZSA9IHNjcm9sbERpc3RhbmNlKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwor
ICAgIAorICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKworICAgIHNjcm9sbC5v
ZmZzZXQgPSB1bml0VmVjdG9yKGRpcmVjdGlvbikuc2NhbGVkKGRpc3RhbmNlKTsKKyAgICBzY3Jv
bGwuZ3JhbnVsYXJpdHkgPSBncmFudWxhcml0eTsKKyAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGly
ZWN0aW9uOworICAgIHNjcm9sbC5tYXhpbXVtVmVsb2NpdHkgPSBzY3JvbGwub2Zmc2V0LnNjYWxl
ZChLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS5tYXhpbXVtVmVsb2NpdHlN
dWx0aXBsaWVyKTsKKworICAgIHNjcm9sbC5mb3JjZSA9IHNjcm9sbC5tYXhpbXVtVmVsb2NpdHku
c2NhbGVkKEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygpLnNwcmluZ01hc3Mg
LyBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS50aW1lVG9NYXhpbXVtVmVs
b2NpdHkpOworCisgICAgcmV0dXJuIEV2ZW50SGFuZGxlcjo6c2Nyb2xsUmVjdXJzaXZlbHkoZGly
ZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0cik7Cit9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24sIEtl
eWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCk7CiAKKyAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFi
bGVkKCZtX2ZyYW1lKSkgeworICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnNtb290aEtl
eWJvYXJkU2Nyb2xsaW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgaGFuZGxlS2V5Ym9hcmRTY3Jv
bGxpbmcoZXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGV2ZW50LmN0
cmxLZXkoKSB8fCBldmVudC5tZXRhS2V5KCkgfHwgZXZlbnQuYWx0R3JhcGhLZXkoKSB8fCBldmVu
dC5zaGlmdEtleSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyNDcsOSArNDM2NCw2IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24g
Zm9jdXNEaXJlY3Rpb24sIEtleWJvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCZtX2ZyYW1lKSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgLy8gQXJyb3dzIGFuZCBvdGhlciBwb3NzaWJsZSBkaXJlY3Rpb25hbCBu
YXZpZ2F0aW9uIGtleXMgY2FuIGJlIHVzZWQgaW4gZGVzaWduCiAgICAgLy8gbW9kZSBlZGl0aW5n
LgogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggOWZiNTJiMmU5ZmJkODU3MzE1MzRhNmIyOGE5MWEzNjlj
Mzc4NzdkMi4uODA5M2RkZDY1ZTZhMTI1MDJjZmM5NGU2MmRhNGY0MTYwZGE0OGM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJh
Z0FjdGlvbnMuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkhpdFRl
c3RSZXF1ZXN0LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMYXlv
dXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgpAQCAtMzc1LDYgKzM3NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFu
ZGxlTW91c2VQcmVzc0V2ZW50RG91YmxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCisgICAgc3RhdGljIEZsb2F0U2l6
ZSB1bml0VmVjdG9yKFNjcm9sbERpcmVjdGlvbik7CisgICAgQ0dGbG9hdCBzY3JvbGxEaXN0YW5j
ZShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KTsKKyAgICBib29sIGhhbmRsZUtl
eWJvYXJkU2Nyb2xsaW5nKEtleWJvYXJkRXZlbnQmKTsKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3VsZENoZWNrRHJhZ0h5
c3RlcmVzaXMpOwogICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0RHJhZygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1MmIyZGNm
MThhOGI2NmQzNTljYjJkY2VmNzJjNmJmNWVlMGMxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAgV2ViQ29yZTo6RmxvYXRT
aXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgV2ViQ29yZTo6RmxvYXRT
aXplIG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisgICAgV2ViQ29yZTo6
RmxvYXRTaXplIGZvcmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7Cisg
ICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBLZXlib2FyZFNjcm9s
bFBhcmFtZXRlcnMgeworICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKKyAgICBDR0Zsb2F0
IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIENHRmxvYXQgc3ByaW5nRGFtcGluZyB7IDIw
IH07CisKKyAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9OworICAg
IENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAgQ0dGbG9hdCBydWJi
ZXJCYW5kRm9yY2UgeyA1MDAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgS2V5Ym9hcmRTY3JvbGxQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRl
cnM7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5o
CmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1YTI0ZTI3NWUyZDguLjE0NTk1ZmU0
ODE5NWRhZWU0MzRlMTNhNTMwY2QyNDRmZGYzZmE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgKQEAg
LTI5LDIyICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiB9
CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9sbGluZ0luY3JlbWVudCA6
IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAgTGluZQotfTsKLQotZW51
bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICBVcCwKLSAgICBEb3du
LAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNzIFVJU2Nyb2xsVmlldzsK
IEBjbGFzcyBXZWJFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5MjdlMmNjZDFjYTEx
NWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLjBmZjJhZTVlNThjYjNmNmM4ZDdiNGQ1MzEyOGIx
NzcyYzQ5NWMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0
UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWN0RWRnZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktpdC9VSUtpdFNQSS5o
PgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBLZXli
b2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBl
ciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8g
UG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOwotCi0gICAg
V2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdlYktpdDo6U2Nyb2xs
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFt
ZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBDR0Zsb2F0IHNwcmlu
Z1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGluZyB7IDIwIH07Ci0K
LSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9OwotICAgIENHRmxv
YXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9hdCBydWJiZXJCYW5k
Rm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJvYXJkU2Nyb2xsYWJs
ZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tleWJvYXJkU2Nyb2xs
YWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5n
SW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooU2Nyb2xsR3Jh
bnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9u
OwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpb2Zm
c2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClzY3JvbGxXaXRoU2Nyb2xsVG9F
eHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChDR1BvaW50KWNvbnRlbnRPZmZz
ZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgewog
ICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBfc2Nyb2xsYWJsZTsKICAgICBS
ZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwogCi0gICAgc3RkOjpvcHRpb25h
bDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKIAogICAgIEJPT0wg
X3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsxMDIsOSBAQCBzdHJ1
Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAo
Y29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0ZXJzCistIChj
b25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJhbWV0ZXJzCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0xMzcsNDcgKzExNSw0
NyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBfc2Nyb2xsYWJsZSA9
IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVjdG9yKFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUg
dW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGly
ZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAg
Y2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4geyAwLCAtMSB9
OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246CisgICAgY2FzZSBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7IDAsIDEgfTsKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4geyAtMSwgMCB9OwotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9OwogICAgIH0KIH0K
IAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJzb2x1dGVVbml0VmVj
dG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3Jl
OjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0Rp
cmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CisgICAg
Y2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7IDEsIDAg
fTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgotICAgIGNhc2Ug
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoK
ICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkJv
eFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0
aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpVcDoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CiAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBjYXNlIFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpT
Y3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVmdDsKLSAgICBj
YXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNjcm9sbERp
cmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpS
aWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9s
bD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CistIChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9sbEZvckV2ZW50Oig6
OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNl
S2V5ID0gMHgyMDsKIApAQCAtMjU1LDQ4ICsyMzMsNDggQEAgc3RhdGljIFdlYkNvcmU6OkJveFNp
ZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgICAg
IGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgogICAg
ICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Ny
b2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93OgogICAgICAgICBj
YXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAgICAg
ICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAg
ICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Ny
b2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNj
cm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3Jh
bnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3Jh
bnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKICAgICAg
ICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgICAg
ICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAgICAgICAgY2FzZSBL
ZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAgICBy
ZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgfTsKICAgICB9
KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3aXRjaCAoa2V5KSB7
CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0
OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJvdzoKLSAgICAg
ICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7CisgICAgICAg
ICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKICAgICAgICAgY2FzZSBL
ZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6Ci0gICAgICAgICAgICByZXR1
cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOworICAgICAgICAgICAgcmV0dXJuIFNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAg
ICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNj
cm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rp
b246OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJl
dHVybiBzaGlmdFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXAgOiBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBzaGlmdFBy
ZXNzZWQgPyBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogU2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247
CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBzY3JvbGxEaXN0YW5jZSA9IFtf
c2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1lbnQgaW5EaXJlY3Rpb246ZGly
ZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOworICAgIFdlYkNv
cmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKICAgICBzY3JvbGwub2Zmc2V0ID0gdW5pdFZlY3Rv
cihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7CiAgICAgc2Nyb2xsLmluY3JlbWVu
dCA9IGluY3JlbWVudDsKICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwpAQCAtMzI3
LDcgKzMwNSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIF9zY3JvbGxUcmlnZ2VyaW5nS2V5SXNQcmVz
c2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKHNjcm9s
bC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudCkgewor
ICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlE
b2N1bWVudCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAgIFtzZWxmIHN0b3BB
bmltYXRlZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlua107CkBAIC0zNjAs
MTYgKzMzOCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpG
bG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0
aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBTY3JvbGxEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBX
ZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChhLngoKSwgc3Rk
OjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEueSgpLCBiLnkoKSkp
OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CisgICAgY2FzZSBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9h
dFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWF4KGEu
eCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NDQsNyBAQCBzdGF0aWMg
V2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6Rmxv
YXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Nyb2xsYWJsZUZvcktl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zsb2F0KWRpc3RhbmNl
Rm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJl
Y3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9hdClk
aXN0YW5jZUZvckluY3JlbWVudDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0
aW9uOihTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBzY3JvbGxWaWV3ID0g
X3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3JvbGxWaWV3KQpAQCAt
NTc1LDE1ICs1NTMsMTUgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2lu
dEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBjb25zdCBDR0Zs
b2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29uc3QgQ0dGbG9hdCBk
ZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJlY3Rpb25Jc0hvcml6
b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQgfHwg
ZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsKKyAgICBCT09M
IGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CiAK
ICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0YW5jZUZvckluY3JlbWVudCkgewogICAg
ICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5n
SW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Ny
b2xsQnlEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6b250YWwg
PyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5o
ZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6Cisg
ICAgICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToKICAgICAgICAgICAg
IHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5mcmFtZS5zaXplLndp
ZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0UGFnZVNjcm9sbEZy
YWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgor
ICAgICAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CiAgICAgICAgICAg
ICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3Lnpvb21TY2FsZTsK
ICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMmFiMTA4
NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uOWIzYjMzZDZjYmFiMjc2ZjFmMzY0
ZjEyOGI1YTZkNzhlNDEyMDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBib29sIFdlYlBh
Z2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
IC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlk
b3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCiAg
ICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxhdGVzdCBvcHBvcnR1
bml0eSB0byBleGVjdXRlLgogICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyB8fCBw
bGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikgewotICAgICAgICBl
dmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbW1hbmRz
LCAmZXZlbnQpOworICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21t
YW5kc0ludGVybmFsKGNvbW1hbmRzLCAmZXZlbnQpOyAKICAgICAgICAgY29tbWFuZHMuY2xlYXIo
KTsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBh
Z2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZTZWxlYwog
CiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICAvLyBGaXJz
dCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVudC4KKyAgICAv
LyAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBldmVu
dC4KICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsKICAgICBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vzc2li
aWxpdHkoKmV2ZW50KTsKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC00NjMs
MzQgKzQ2MywzNyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JT
ZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIC8vIFNob3VsZCBzdWNo
IG5vbi1lZGl0aW5nIGJlaGF2aW9ycyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0b3Igb3IgRXZlbnRI
YW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoKSBwZXJoYXBzPwogICAgIAogICAgIGJv
b2wgZGlkUGVyZm9ybUFjdGlvbiA9IGZhbHNlOworICAgIAorICAgIGlmICghZnJhbWUtPnNldHRp
bmdzKCkuc21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKHNl
bGVjdG9yID09ICJtb3ZlVXA6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBp
ZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOiIpCisgICAgICAgICAg
ICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9s
bEJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdP
ZkRvY3VtZW50OiIpIHsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9w
YWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5
RG9jdW1lbnQpOworICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlRG93bjoiKQor
ICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bERvd24sIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3Zl
VG9FbmRPZlBhcmFncmFwaDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAgICAgICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxC
eURvY3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoc2VsZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAg
ICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQorICAgICAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5
UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlUmlnaHQ6IikKKyAgICAg
ICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdo
dCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3Jk
UmlnaHQ6IikKKyAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2UpOworICAgIH0KIAotICAgIGlmIChzZWxlY3RvciA9
PSAibW92ZVVwOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKLSAgICAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxC
eURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlRG93bjoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZVRvRW5kT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlv
biA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mRG9jdW1lbnQ6IikgewotICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xs
QnlEb2N1bWVudCk7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgfSBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZUxlZnQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7Ci0gICAgZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQorICAgIGlmIChzZWxlY3RvciA9
PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKSA6IG1fcGFn
ZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9
PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2Fy
ZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwotCisgICAgCiAgICAgcmV0dXJu
IGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdCBiL1dlYktpdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431992</attachid>
            <date>2021-06-22 14:12:18 -0700</date>
            <delta_ts>2021-06-22 14:49:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210622171217.patch</filename>
            <type>text/plain</type>
            <size>2519</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIxYjJiMWE1NmRhZWIy
NDMxMDZlNTcxMWVmMDU5ZjFhZGNkNTBjOC4uYWMzZTIyMTFkNzFjMGZmOWE5NmFiZjlkYmU5ODEw
MGZiYmM4MjY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTcsNiArMTcsMjUgQEAKICAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5oOgogICAgICAgICAqIHBhZ2UvS2V5Ym9hcmRTY3JvbGwuaDogQWRkZWQu
CiAKKzIwMjEtMDYtMTQgIERhbmEgRXN0cmEgIDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAg
IFJlZmFjdG9yIE1hY09TIGtleWJvYXJkIHNjcm9sbGluZyBhbmQgdXNlIEtleWJvYXJkU2Nyb2xs
IHN0cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2OTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYXZpZ2F0ZSBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9s
bCBzdHJ1Y3QKKworICAgICAgICBObyB0ZXN0cyB5ZXQKKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVuaXRWZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpTY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVk
LgorCiAyMDIxLTA2LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKFNhZmFyaSAxNCk6IFN1Ym1lbnVzIG9uIGh0dHBzOi8vY29k
ZWxlYXJuLmNhdCBkb24ndCBzaG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFlZTQwYTRkN2IwOWYyZjlmMmJlZTk1
MDQ1ZWY3YjQ2NzMxNDZmMzUuLmY2OTM3NDRlMmZjYjk2OThiOTNlMGViNzE3YmY2ZjNhZDRiZTFl
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xOSw2ICsxOSwyNyBAQAogICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CiAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcik6CiAKKzIwMjEtMDYtMTQgIERh
bmEgRXN0cmEgIDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE1hY09TIGtl
eWJvYXJkIHNjcm9sbGluZyBhbmQgdXNlIEtleWJvYXJkU2Nyb2xsIHN0cnVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tOgorICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IgcGFyYW1ldGVyc10pOgorICAgICAgICAodW5pdFZlY3Rvcik6CisgICAgICAg
IChwZXJwZW5kaWN1bGFyQWJzb2x1dGVVbml0VmVjdG9yKToKKyAgICAgICAgKGJveFNpZGUpOgor
ICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iga2V5Ym9hcmRTY3JvbGxGb3JF
dmVudDpdKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJlZ2luV2l0
aEV2ZW50Ol0pOgorICAgICAgICAoZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKToKKyAgICAgICAg
KC1bV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDppbkRp
cmVjdGlvbjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZv
clNlbGVjdG9yKToKKwogMjAyMS0wNi0yMiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWpp
aUBzb255LmNvbT4KIAogICAgICAgICBbR0xpYl0gUmV3cml0ZSBOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFkb3B0TWFwIHdpdGhvdXQgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE6OmxlYWtIYW5kbGUg
YW5kIG11bm1hcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431997</attachid>
            <date>2021-06-22 14:49:59 -0700</date>
            <delta_ts>2021-06-22 18:57:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210622174958.patch</filename>
            <type>text/plain</type>
            <size>33406</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2MzdjMGVkZGViMWIw
MDYwMTA4MTQ1ZWQwM2VkMjhkZjc3NjE0Mi4uOTk4Njk0M2QyNTY1MDdhN2ZjODFjMmUzNDM0YzA4
ZDcxZmM4Mzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmF2aWdhdGUgTWFjT1Mga2V5
Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9hcmRTY3JvbGwgc3RydWN0CisKKyAgICAgICAg
Tm8gdGVzdHMgeWV0CisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1bml0VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6U2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZh
dWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6Cisg
ICAgICAgICogcGFnZS9LZXlib2FyZFNjcm9sbC5oOiBBZGRlZC4KKwogMjAyMS0wNi0yMiAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogW2lP
U10gQVNTRVJUSU9OIEZBSUxFRDogcGl4ZWxCdWZmZXItPmRhdGEoKS5sZW5ndGgoKSA+PSA0IHVu
ZGVyIFdlYkNvcmU6OnNhbXBsZUNvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzYzk2NGY1OGMyZGY2OWQ1YjVh
ZTg5YjQ4YjUyMTk2ZWE2NTc3YmYuLmQ4NWQ4ZTliNTIyMjM5N2M4OTRjOWM4OGM0NzJhZWY1Mjkz
NzVmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDYtMTQgIERhbmEgRXN0cmEg
IDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE1hY09TIGtleWJvYXJkIHNj
cm9sbGluZyBhbmQgdXNlIEtleWJvYXJkU2Nyb2xsIHN0cnVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLm1tOgorICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
b3IgcGFyYW1ldGVyc10pOgorICAgICAgICAodW5pdFZlY3Rvcik6CisgICAgICAgIChwZXJwZW5k
aWN1bGFyQWJzb2x1dGVVbml0VmVjdG9yKToKKyAgICAgICAgKGJveFNpZGUpOgorICAgICAgICAo
LVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iga2V5Ym9hcmRTY3JvbGxGb3JFdmVudDpdKToK
KyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJlZ2luV2l0aEV2ZW50Ol0p
OgorICAgICAgICAoZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKToKKyAgICAgICAgKC1bV0tLZXli
b2FyZFNjcm9sbFZpZXdBbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDppbkRpcmVjdGlvbjpd
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9y
KToKKwogMjAyMS0wNi0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjc5MTMzOiByZW1vdmUgdW5uZWNlc3Nh
cnkgaW5jbHVkZXMgYW5kIGRlZmluZXMgYWZ0ZXIgdXBzdHJlYW1pbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
IGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbAppbmRleCAxODM4OWZjNzZlZWE3N2MwYTRhZjAxNzVjNTNkNWJlODUxNTZkYTJlLi41NGUy
MGZkZDk1ZTkzZGQ1MGQ2OGJlMWI2NTNmMmRhNDFjODgzN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBi
L1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwKQEAgLTY4NSw2ICs2ODUsMTggQEAgU2ltcGxlTGluZUxheW91dEVuYWJsZWQ6CiAgICAgV2Vi
Q29yZToKICAgICAgIGRlZmF1bHQ6IHRydWUKIAorU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFi
bGVkOgorIHR5cGU6IGJvb2wKKyBodW1hblJlYWRhYmxlTmFtZTogIlNtb290aCBLZXlib2FyZCBT
Y3JvbGxpbmciCisgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHNtb290aCBrZXli
b2FyZCBzY3JvbGxpbmciCisgZGVmYXVsdFZhbHVlOgorICBXZWJLaXRMZWdhY3k6CisgICBkZWZh
dWx0OiBmYWxzZQorICBXZWJLaXQ6CisgICBkZWZhdWx0OiBmYWxzZQorICBXZWJDb3JlOgorICAg
ZGVmYXVsdDogZmFsc2UKKwogIyBGSVhNRTogSXMgdGhpcyBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0
TGVnYWN5PyBJZiBub3QsIHRoaXMgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gV2ViS2l0TGVnYWN5
IGVudGlyZWx5LgogU3BlYWtlclNlbGVjdGlvblJlcXVpcmVzVXNlckdlc3R1cmU6CiAgIHR5cGU6
IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAxM2NlM2UwNjkwMzZmNmFlZjgzYzlhOTFjNjMwNGU0NDVmMjE3NTVmLi4wZjZl
NDAwOGQ2MDA2M2YyZjNmYTBjYzg3YjA0Y2JlZmI0OGMwNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NjcsNiArNjY3LDcg
QEAKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCQzFC
NTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2MjUxREEw
QjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyog
VmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2MDBEQjhG
NjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMjBBRUQy
Njc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUYzNkVBOUMxRTIxQkExNzAwNjIxRTI1IC8q
IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzNkVBOUExRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tn
cm91bmRUYXNrQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFGNzJCRjBCMTg3RkQ0NUMwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjg3NTZCMTFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTcwNjEsNiArNzA2Miw3IEBACiAJCTFERUYwNkRDMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVu
dFBpY3R1cmVJblBpY3R1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMURFRjA2REQyMzNEMkUxQzAwRUUyMjhEIC8qIERvY3VtZW50UGljdHVyZUluUGljdHVy
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudFBpY3R1cmVJblBp
Y3R1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURFRjA2REUyMzNEMkUxQzAw
RUUyMjhEIC8qIERvY3VtZW50K1BpY3R1cmVJblBpY3R1cmUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9ICJEb2N1bWVudCtQaWN0dXJlSW5QaWN0dXJlLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFGMDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXlib2FyZFNjcm9sbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjM2RUE5QTFFMjFCQTE3MDA2MjFFMjUgLyogV2Vi
QmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRjM2RUE5QjFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250
cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQmFj
a2dyb3VuZFRhc2tDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RjcyQkYwODE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9T
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbGVDb250cm9sbGVy
TWVtb3J5SGFuZGxlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjUw
NCw2ICsyMjUwNiw3IEBACiAJCQkJMEY0NzEwRDgxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuY3BwICovLAogCQkJCTBGNDcxMEQ5MURCNkZFMjIwMDJEQ0VDMyAv
KiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggKi8sCiAJCQkJMEY0NzEwREExREI2RkUyMjAw
MkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsICovLAorCQkJCTFGMDIwQUVE
MjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oICovLAogCQkJCTkzMUQ3MkY1MTVG
RTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAqLywKIAkJCQlCQ0UxQzQxQTBEOTgy
OTgwMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLAogCQkJCUJDRTFDNDE5MEQ5ODI5ODAwMDNC
MDJGMiAvKiBMb2NhdGlvbi5oICovLApAQCAtMzQxNDEsNiArMzQxNDQsNyBAQAogCQkJCUJDRUZF
MUVCMERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJk
RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5QSAvKiBL
ZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENTkxODJEQUM4RDAwMDg3
REQ3IC8qIEtleWVkQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNTFCNzQzMThG
MDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E2M0M2
MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZjViMWY5MTgxODQwNWQ5ZmRmZTUwM2Mz
OWY5NzUyZmFjYTgzNTllMy4uZDc3NjVjYzExNzhiMDFiMjZhNGNjZGZiOTBjMTNiMzZlNzZjMjcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjgsNiArNjgsNyBAQAog
I2luY2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAi
S2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VF
dmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKQEAgLTM3
OTYsNyArMzc5Nyw2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhh
bmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uICE9
IEZvY3VzRGlyZWN0aW9uOjpOb25lKQogICAgICAgICAgICAgICAgIGRlZmF1bHRBcnJvd0V2ZW50
SGFuZGxlcihkaXJlY3Rpb24sIGV2ZW50KTsKICAgICAgICAgfQotCiAgICAgICAgIGhhbmRsZUtl
eWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KGV2ZW50KTsKICAgICB9CiAg
ICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkgewpAQCAt
NDE4NiwyMiArNDE4NiwyNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRI
YW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJh
bWUobV9mcmFtZSk7CiAKICAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5r
ZXlwcmVzc0V2ZW50KTsKLQorICAgIAogICAgIGlmIChldmVudC5jdHJsS2V5KCkgfHwgZXZlbnQu
bWV0YUtleSgpIHx8IGV2ZW50LmFsdEtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkpCiAgICAg
ICAgIHJldHVybjsKLQorICAgIAogICAgIFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9u
ID0gZXZlbnQuc2hpZnRLZXkoKSA/IFNjcm9sbEJsb2NrRGlyZWN0aW9uQmFja3dhcmQgOiBTY3Jv
bGxCbG9ja0RpcmVjdGlvbkZvcndhcmQ7CiAgICAgaWYgKGxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhk
aXJlY3Rpb24sIFNjcm9sbEJ5UGFnZSkpIHsKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRs
ZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAgIAogICAgIEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUudmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKQotICAg
ICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIGlmIChtX2ZyYW1lLnNldHRpbmdz
KCkuc21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGhhbmRs
ZUtleWJvYXJkU2Nyb2xsaW5nKGV2ZW50KSkKKyAgICAgICAgICAgIGV2ZW50LnNldERlZmF1bHRI
YW5kbGVkKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHZpZXctPmxvZ2ljYWxTY3JvbGwo
ZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKQorICAgICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhh
bmRsZWQoKTsKKyAgICB9CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNl
RXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQpAQCAtNDIzMiwxMSArNDIzNywxMjMg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRCYWNrc3BhY2VFdmVudEhhbmRsZXIoS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAK
K0Zsb2F0U2l6ZSBFdmVudEhhbmRsZXI6OnVuaXRWZWN0b3IoU2Nyb2xsRGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxVcDoKKyAgICAgICAgcmV0dXJuIHsgMCwgLTEgfTsKKyAgICBjYXNlIFNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKKyAgICAgICAgcmV0dXJuIHsgMCwgMSB9OworICAgIGNh
c2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgICAgICByZXR1cm4geyAtMSwgMCB9
OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKKyAgICAgICAgcmV0dXJu
IHsgMSwgMCB9OworICAgIH0KK30KKworQ0dGbG9hdCBFdmVudEhhbmRsZXI6OnNjcm9sbERpc3Rh
bmNlKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5KQoreworICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyOworCisgICAgaWYgKGRpcmVjdGlvbiA9
PSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIHx8IGRpcmVjdGlvbiA9PSBTY3JvbGxEaXJlY3Rp
b246OlNjcm9sbERvd24pIAorICAgICAgICBzY3JvbGxiYXIgPSBtX2ZyYW1lLnZpZXcoKS0+dmVy
dGljYWxTY3JvbGxiYXIoKTsKKyAgICBlbHNlIAorICAgICAgICBzY3JvbGxiYXIgPSBtX2ZyYW1l
LnZpZXcoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAgIAorICAgIENHRmxvYXQgc3RlcCA9
IDA7CisKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CisgICAgY2FzZSBTY3JvbGxHcmFudWxh
cml0eTo6U2Nyb2xsQnlMaW5lOgorICAgICAgICBzdGVwID0gc2Nyb2xsYmFyLT5saW5lU3RlcCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBh
Z2U6CisgICAgICAgIHN0ZXAgPSBzY3JvbGxiYXItPnBhZ2VTdGVwKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ6CisgICAgICAg
IHN0ZXAgPSBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBpeGVsOgorICAgICAgICBzdGVwID0gc2Nyb2xs
YmFyLT5waXhlbFN0ZXAoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0
ZXA7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhLZXli
b2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBlbnVtIGNsYXNzIEtleSA6IHVpbnQ4X3QgeyBMZWZ0
QXJyb3csIFJpZ2h0QXJyb3csIFVwQXJyb3csIERvd25BcnJvdywgU3BhY2UgfTsKKworICAgIEtl
eSBrZXk7CisgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiTGVmdCIpCisgICAgICAg
IGtleSA9IEtleTo6TGVmdEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIo
KSA9PSAiUmlnaHQiKQorICAgICAgICBrZXkgPSBLZXk6OlJpZ2h0QXJyb3c7CisgICAgZWxzZSBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJVcCIpCisgICAgICAgIGtleSA9IEtleTo6VXBB
cnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIkRvd24iKQorICAg
ICAgICBrZXkgPSBLZXk6OkRvd25BcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5jaGFyQ29kZSgp
ID09ICcgJykKKyAgICAgICAga2V5ID0gS2V5OjpTcGFjZTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8gZ3JhbnVsYXJpdHkgPSBeKCkgeworICAgICAgICBzd2l0
Y2ggKGtleSkgeworICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICBjYXNlIEtl
eTo6UmlnaHRBcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBldmVudC5hbHRLZXkoKSA/IFNjcm9s
bEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2UgOiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlM
aW5lOworICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OkRvd25B
cnJvdzoKKyAgICAgICAgICAgIGlmIChldmVudC5tZXRhS2V5KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50OworICAgICAgICAgICAg
aWYgKGV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxh
cml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5
OjpTY3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJl
dHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICB9OworICAgIH0o
KTsKKworICAgIGF1dG8gZGlyZWN0aW9uID0gXigpIHsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsK
KyAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbExlZnQ7CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAg
ICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CisgICAgICAgIGNh
c2UgS2V5OjpVcEFycm93OgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsVXA7CisgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CisgICAgICAgICAgICByZXR1cm4g
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOworICAgICAgICBjYXNlIEtleTo6U3BhY2U6Cisg
ICAgICAgICAgICByZXR1cm4gZXZlbnQuc2hpZnRLZXkoKSA/IFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsVXAgOiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CisgICAgICAgIH07CisgICAgfSgp
OworCisgICAgQ0dGbG9hdCBkaXN0YW5jZSA9IHNjcm9sbERpc3RhbmNlKGRpcmVjdGlvbiwgZ3Jh
bnVsYXJpdHkpOworICAgIAorICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKwor
ICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0VmVjdG9yKGRpcmVjdGlvbikuc2NhbGVkKGRpc3RhbmNl
KTsKKyAgICBzY3JvbGwuZ3JhbnVsYXJpdHkgPSBncmFudWxhcml0eTsKKyAgICBzY3JvbGwuZGly
ZWN0aW9uID0gZGlyZWN0aW9uOworICAgIHNjcm9sbC5tYXhpbXVtVmVsb2NpdHkgPSBzY3JvbGwu
b2Zmc2V0LnNjYWxlZChLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS5tYXhp
bXVtVmVsb2NpdHlNdWx0aXBsaWVyKTsKKworICAgIHNjcm9sbC5mb3JjZSA9IHNjcm9sbC5tYXhp
bXVtVmVsb2NpdHkuc2NhbGVkKEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygp
LnNwcmluZ01hc3MgLyBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS50aW1l
VG9NYXhpbXVtVmVsb2NpdHkpOworCisgICAgcmV0dXJuIEV2ZW50SGFuZGxlcjo6c2Nyb2xsUmVj
dXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0cik7Cit9CiAKIHZvaWQgRXZl
bnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNE
aXJlY3Rpb24sIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CiAKKyAgICBpZiAoIWlzU3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkKCZtX2ZyYW1lKSkgeworICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5n
cygpLnNtb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgaGFuZGxl
S2V5Ym9hcmRTY3JvbGxpbmcoZXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
aWYgKGV2ZW50LmN0cmxLZXkoKSB8fCBldmVudC5tZXRhS2V5KCkgfHwgZXZlbnQuYWx0R3JhcGhL
ZXkoKSB8fCBldmVudC5zaGlmdEtleSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyNDQsOSAr
NDM2MSw2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9j
dXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24sIEtleWJvCiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCZtX2ZyYW1l
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gQXJyb3dzIGFuZCBvdGhlciBwb3NzaWJsZSBk
aXJlY3Rpb25hbCBuYXZpZ2F0aW9uIGtleXMgY2FuIGJlIHVzZWQgaW4gZGVzaWduCiAgICAgLy8g
bW9kZSBlZGl0aW5nLgogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMmI2MzU4OTY0ODc2ZDE1MWMwOTcx
OGJkZWY4OWQ4ZWQ0MmQxNGFlZi4uNjE1ZjRjYzkyOGNjZGVjNTZiNmEyZTI5ZmFiZmU1ZTA5MzI1
YjA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNp
bmNsdWRlICJMYXlvdXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtMzc1LDYgKzM3NiwxMCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50RG91YmxlQ2xpY2soY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50VHJp
cGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCisgICAgc3Rh
dGljIEZsb2F0U2l6ZSB1bml0VmVjdG9yKFNjcm9sbERpcmVjdGlvbik7CisgICAgQ0dGbG9hdCBz
Y3JvbGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KTsKKyAgICBi
b29sIGhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKEtleWJvYXJkRXZlbnQmKTsKKwogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3Vs
ZENoZWNrRHJhZ0h5c3RlcmVzaXMpOwogICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0
YXJ0RHJhZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2Fy
ZFNjcm9sbC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE1MmIyZGNmMThhOGI2NmQzNTljYjJkY2VmNzJjNmJmNWVlMGMxNjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHk7CisgICAgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgeworICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsK
KyAgICBDR0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIENHRmxvYXQgc3ByaW5n
RGFtcGluZyB7IDIwIH07CisKKyAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIg
eyAyNSB9OworICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAg
Q0dGbG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgS2V5
Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcmV0
dXJuIHBhcmFtZXRlcnM7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1YTI0ZTI3NWUy
ZDguLjE0NTk1ZmU0ODE5NWRhZWU0MzRlMTNhNTMwY2QyNDRmZGYzZmE5N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLmgKQEAgLTI5LDIyICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZs
b2F0UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9sbGlu
Z0luY3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAgTGlu
ZQotfTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICBV
cCwKLSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNzIFVJ
U2Nyb2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5
MjdlMmNjZDFjYTExNWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLjBmZjJhZTVlNThjYjNmNmM4
ZDdiNGQ1MzEyOGIxNzcyYzQ5NWMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiAr
MzMsNyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZWN0RWRnZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktp
dC9VSUtpdFNQSS5oPgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXN0cnVjdCBLZXlib2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsg
Ly8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1W
ZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZv
cmNlOwotCi0gICAgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2Fy
ZFNjcm9sbFBhcmFtZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBD
R0Zsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGlu
ZyB7IDIwIH07Ci0KLSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9
OwotICAgIENHRmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9h
dCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJv
YXJkU2Nyb2xsYWJsZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tl
eWJvYXJkU2Nyb2xsYWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktp
dDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVu
dDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rp
b24pZGlyZWN0aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZs
b2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClzY3JvbGxX
aXRoU2Nyb2xsVG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChDR1BvaW50
KWNvbnRlbnRPZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBh
cmFtZXRlcnMgewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBfc2Nyb2xs
YWJsZTsKICAgICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwogCi0gICAg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsK
IAogICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEyNCw5ICsx
MDIsOSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJh
bWV0ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgJilwYXJh
bWV0ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xs
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkBAIC0x
MzcsNDcgKzExNSw0NyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBf
c2Nyb2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVj
dG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBXZWJDb3Jl
OjpGbG9hdFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1
cm4geyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246
CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7
IDAsIDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAg
IGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4geyAtMSwg
MCB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNh
c2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9
OwogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJz
b2x1dGVVbml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0
YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihT
Y3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0g
ICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsVXA6CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJl
dHVybiB7IDEsIDAgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0
OgotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2Ug
U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpT
Y3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3RhdGlj
IFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFNjcm9sbERpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
VXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6
U2Nyb2xsRG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6
TGVmdDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBj
YXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpCb3hTaWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpL
ZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50
CistIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9s
bEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQga1dlYlNwYWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDQ4ICsyMzMsNDggQEAgc3RhdGljIFdl
YkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdo
dEFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJu
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVy
biBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2UgS2V5OjpVcEFycm93
OgogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNz
ZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQ
YWdlOworICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQ
YWdlOwogICAgICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBh
Z2VVcDoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3Bh
Y2U6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7
CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAg
ICAgICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAg
ICAgfTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3
aXRjaCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtleTo6UmlnaHRB
cnJvdzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6Umln
aHQ7CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKICAg
ICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlVXA6Ci0gICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOworICAgICAgICAg
ICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpE
b3duQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdlRG93bjoKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAg
ICAgICAgICAgIHJldHVybiBzaGlmdFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXAgOiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJl
dHVybiBzaGlmdFByZXNzZWQgPyBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogU2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBzY3JvbGxE
aXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1lbnQgaW5E
aXJlY3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xs
OworICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKICAgICBzY3JvbGwub2Zmc2V0
ID0gdW5pdFZlY3RvcihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7CiAgICAgc2Ny
b2xsLmluY3JlbWVudCA9IGluY3JlbWVudDsKICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0
aW9uOwpAQCAtMzI3LDcgKzMwNSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUo
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIF9zY3JvbGxUcmlnZ2Vy
aW5nS2V5SXNQcmVzc2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xsID0gc2Nyb2xsOwogCi0g
ICAgaWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpE
b2N1bWVudCkgeworICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBTY3JvbGxHcmFudWxhcml0
eTo6U2Nyb2xsQnlEb2N1bWVudCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAg
IFtzZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlu
a107CkBAIC0zNjAsMTYgKzMzOCwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRl
KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRp
YyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2lu
dEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBi
LCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2lu
dChhLngoKSwgc3RkOjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93
bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEu
eSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6
CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAgICBj
YXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNjcm9sbERp
cmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50
KHN0ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAgLTU2Niw3ICs1NDQs
NyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24o
V2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Ny
b2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zs
b2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNy
ZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgor
LSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooU2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVt
ZW50IGluRGlyZWN0aW9uOihTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBz
Y3JvbGxWaWV3ID0gX3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3Jv
bGxWaWV3KQpAQCAtNTc1LDE1ICs1NTMsMTUgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQg
ZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAg
ICBjb25zdCBDR0Zsb2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29u
c3QgQ0dGbG9hdCBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJl
Y3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b246OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdo
dDsKKyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsUmlnaHQ7CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0YW5jZUZvckluY3Jl
bWVudCkgewogICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAgICBjYXNlIFdlYktp
dDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2FzZSBTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25J
c0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5j
b250ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1l
bnQ6OlBhZ2U6CisgICAgICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToK
ICAgICAgICAgICAgIHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5m
cmFtZS5zaXplLndpZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0
UGFnZVNjcm9sbEZyYWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVt
ZW50OjpMaW5lOgorICAgICAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6
CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3
Lnpvb21TY2FsZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggMmFiMTA4NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uOWIzYjMzZDZj
YmFiMjc2ZjFmMzY0ZjEyOGI1YTZkNzhlNDEyMDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMxMiw3ICszMTIsNyBA
QCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQm
IGV2ZW50KQogICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywg
ZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUg
Y29tbWFuZHMuCiAgICAgLy8gS2V5cHJlc3MgKENoYXIgZXZlbnQpIGhhbmRsZXIgaXMgdGhlIGxh
dGVzdCBvcHBvcnR1bml0eSB0byBleGVjdXRlLgogICAgIGlmICghaGF2ZVRleHRJbnNlcnRpb25D
b21tYW5kcyB8fCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6Q2hhcikg
ewotICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVy
bmFsKGNvbW1hbmRzLCAmZXZlbnQpOworICAgICAgICBldmVudFdhc0hhbmRsZWQgPSBleGVjdXRl
S2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbW1hbmRzLCAmZXZlbnQpOyAKICAgICAgICAgY29t
bWFuZHMuY2xlYXIoKTsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBEaWN0aW9uYXJ5UG9w
dXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdp
bihQREZTZWxlYwogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JT
ZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
LSAgICAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFuZGxlIHRoZSBl
dmVudC4KKyAgICAvLyAvLyBGaXJzdCBnaXZlIGFjY2Vzc2liaWxpdHkgYSBjaGFuY2UgdG8gaGFu
ZGxlIHRoZSBldmVudC4KICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvckV2ZW50KGV2ZW50KTsK
ICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVu
dEZvckFjY2Vzc2liaWxpdHkoKmV2ZW50KTsKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVk
KCkpCkBAIC00NjMsMzQgKzQ2MywzNyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIC8v
IFNob3VsZCBzdWNoIG5vbi1lZGl0aW5nIGJlaGF2aW9ycyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0
b3Igb3IgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoKSBwZXJoYXBzPwog
ICAgIAogICAgIGJvb2wgZGlkUGVyZm9ybUFjdGlvbiA9IGZhbHNlOworICAgIAorICAgIGlmICgh
ZnJhbWUtPnNldHRpbmdzKCkuc21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpIHsKKyAg
ICAgICAgaWYgKHNlbGVjdG9yID09ICJtb3ZlVXA6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1B
Y3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAg
ICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOiIp
CisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Ny
b2xsVXAsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24g
PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAg
ICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExl
ZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJt
b3ZlRG93bjoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFj
dGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7Cisg
ICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAg
ICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxE
b3duLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0g
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAg
ICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCisgICAgICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlM
aW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQorICAg
ICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExl
ZnQsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlUmln
aHQ6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3Ig
PT0gIm1vdmVXb3JkUmlnaHQ6IikKKyAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2UpOworICAgIH0KIAotICAgIGlm
IChzZWxlY3RvciA9PSAibW92ZVVwOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVy
Zm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBhZ2Up
OwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50OiIp
IHsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bFVwLCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVs
c2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlRG93bjoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKLSAgICBl
bHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5
UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mRG9jdW1lbnQ6Iikg
ewotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xs
RG93biwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgfSBl
bHNlIGlmIChzZWxlY3RvciA9PSAibW92ZUxlZnQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlv
biA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7Ci0gICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3Jt
QWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsK
LSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQorICAgIGlm
IChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBkaWRQZXJmb3Jt
QWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0Jh
Y2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29y
ZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2Fy
ZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwotCisgICAg
CiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdCBi
L1dlYktpdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1
MzkxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432012</attachid>
            <date>2021-06-22 18:57:30 -0700</date>
            <delta_ts>2021-06-24 11:24:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210622215729.patch</filename>
            <type>text/plain</type>
            <size>35170</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2MzdjMGVkZGViMWIw
MDYwMTA4MTQ1ZWQwM2VkMjhkZjc3NjE0Mi4uOGRkYmQzOWM1ZmUwMjQ5ZWQ2NTI1NDJiMGY4NTkx
OGQwYzdjMjQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHlldAorCisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dW5pdFZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OlNjcm9sbERpc3RhbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvS2V5Ym9h
cmRTY3JvbGwuaDogQWRkZWQuCisKIDIwMjEtMDYtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFtpT1NdIEFTU0VSVElPTiBGQUlMRUQ6
IHBpeGVsQnVmZmVyLT5kYXRhKCkubGVuZ3RoKCkgPj0gNCB1bmRlciBXZWJDb3JlOjpzYW1wbGVD
b2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkM2M5NjRmNThjMmRmNjlkNWI1YWU4OWI0OGI1MjE5NmVhNjU3N2Jm
Li5kODVkOGU5YjUyMjIzOTdjODk0YzljODhjNDcyYWVmNTI5Mzc1ZjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIxLTA2LTE0ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXli
b2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbToK
KyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHBhcmFtZXRlcnNdKToKKyAg
ICAgICAgKHVuaXRWZWN0b3IpOgorICAgICAgICAocGVycGVuZGljdWxhckFic29sdXRlVW5pdFZl
Y3Rvcik6CisgICAgICAgIChib3hTaWRlKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yIGtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgKGZhcnRoZXN0
UG9pbnRJbkRpcmVjdGlvbik6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0
b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcik6CisKIDIwMjEtMDYtMjIgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjI3OTEzMzogcmVtb3ZlIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGFuZCBkZWZp
bmVzIGFmdGVyIHVwc3RyZWFtaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggMTgzODlmYzc2
ZWVhNzdjMGE0YWYwMTc1YzUzZDViZTg1MTU2ZGEyZS4uNTRlMjBmZGQ5NWU5M2RkNTBkNjhiZTFi
NjUzZjJkYTQxYzg4MzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBAIC02ODUsNiArNjg1LDE4
IEBAIFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0
OiB0cnVlCiAKK1Ntb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZDoKKyB0eXBlOiBib29sCisg
aHVtYW5SZWFkYWJsZU5hbWU6ICJTbW9vdGggS2V5Ym9hcmQgU2Nyb2xsaW5nIgorIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBzbW9vdGgga2V5Ym9hcmQgc2Nyb2xsaW5nIgorIGRl
ZmF1bHRWYWx1ZToKKyAgV2ViS2l0TGVnYWN5OgorICAgZGVmYXVsdDogZmFsc2UKKyAgV2ViS2l0
OgorICAgZGVmYXVsdDogZmFsc2UKKyAgV2ViQ29yZToKKyAgIGRlZmF1bHQ6IGZhbHNlCisKICMg
RklYTUU6IElzIHRoaXMgaW1wbGVtZW50ZWQgZm9yIFdlYktpdExlZ2FjeT8gSWYgbm90LCB0aGlz
IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIFdlYktpdExlZ2FjeSBlbnRpcmVseS4KIFNwZWFrZXJT
ZWxlY3Rpb25SZXF1aXJlc1VzZXJHZXN0dXJlOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZTNlMDY5
MDM2ZjZhZWY4M2M5YTkxYzYzMDRlNDQ1ZjIxNzU1Zi4uMGY2ZTQwMDhkNjAwNjNmMmYzZmEwY2M4
N2IwNGNiZWZiNDhjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjY3LDYgKzY2Nyw3IEBACiAJCTFEQkMxQjU2MjM0N0Iz
RDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAv
KiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxREQzQjRDNjI1MURBMEI4MDA2OUIyNEEgLyogVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2Jq
Qy5tbSAqLzsgfTsKIAkJMURGN0U4MUYyNTFBOUUwNjAwREI4RjYxIC8qIFRleHRUcmFja1JlcHJl
c2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREQxRTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxRjAyMEFF
RjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBL
ZXlib2FyZFNjcm9sbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFGMzZFQTlDMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFGMzZFQTlBMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjcy
QkYwQjE4N0ZENDVDMDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjcyQkYwOTE4
N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY4NzU2QjIxRTIy
QzMzNTAwNDJDNDBEIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY4NzU2QjExRTIyQkVFRjAw
NDJDNDBEIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MDYxLDYgKzcwNjIsNyBAQAog
CQkxREVGMDZEQzIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUlu
UGljdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkREMjMzRDJF
MUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudCtQ
aWN0dXJlSW5QaWN0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiRG9jdW1lbnQrUGlj
dHVyZUluUGljdHVyZS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAyMEFF
RDI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS2V5Ym9hcmRTY3JvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUYzNkVBOUExRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJv
bGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFz
a0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUIxRTIx
QkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlC
Q0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI1MDQsNiArMjI1MDYsNyBAQAogCQkJ
CTBGNDcxMEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNw
cCAqLywKIAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJFbnRyeS5oICovLAogCQkJCTBGNDcxMERBMURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rp
b25PYnNlcnZlckVudHJ5LmlkbCAqLywKKwkJCQkxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEgLyog
S2V5Ym9hcmRTY3JvbGwuaCAqLywKIAkJCQk5MzFENzJGNTE1RkU2OTUzMDBDNEMwN0UgLyogTGF5
b3V0TWlsZXN0b25lLmggKi8sCiAJCQkJQkNFMUM0MUEwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0
aW9uLmNwcCAqLywKIAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCAq
LywKQEAgLTM0MTQxLDYgKzM0MTQ0LDcgQEAKIAkJCQlCQ0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkg
LyogSlNYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I3NEVGNjFGM0UwQkYy
MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDMxQjQ0MEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQkxRjAyMEFFRjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVj
b2RlckNGLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCmluZGV4IGY1YjFmOTE4MTg0MDVkOWZkZmU1MDNjMzlmOTc1MmZhY2E4MzU5ZTMuLjI5
MTU1ZDYzYjE1YTAyNmU0ODFkZTBhZTg0M2E2YjEwZjU0MTQzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJJbWFnZU92ZXJs
YXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCkBAIC00MjAwLDcgKzQyMDEsOCBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2
ZW50KQogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHZpZXctPmxv
Z2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKQorICAgIGJvb2wgZGVmYXVsdEhh
bmRsZWQgPSBtX2ZyYW1lLnNldHRpbmdzKCkuc21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVk
KCkgPyBoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhldmVudCkgOiB2aWV3LT5sb2dpY2FsU2Nyb2xs
KGRpcmVjdGlvbiwgU2Nyb2xsQnlQYWdlKTsKKyAgICBpZiAoZGVmYXVsdEhhbmRsZWQpCiAgICAg
ICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTQyMzIsMTEgKzQyMzQsMTIz
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJv
YXJkRXZlbnQmIGV2ZW50KQogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQog
CitGbG9hdFNpemUgRXZlbnRIYW5kbGVyOjp1bml0VmVjdG9yKFNjcm9sbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIFNjcm9sbERpcmVj
dGlvbjo6U2Nyb2xsVXA6CisgICAgICAgIHJldHVybiB7IDAsIC0xIH07CisgICAgY2FzZSBTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbERvd246CisgICAgICAgIHJldHVybiB7IDAsIDEgfTsKKyAgICBj
YXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDoKKyAgICAgICAgcmV0dXJuIHsgLTEsIDAg
fTsKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CisgICAgICAgIHJldHVy
biB7IDEsIDAgfTsKKyAgICB9Cit9CisKK0NHRmxvYXQgRXZlbnRIYW5kbGVyOjpzY3JvbGxEaXN0
YW5jZShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0eSkKK3sKKyAgICBTY3JvbGxiYXIqIHNjcm9sbGJhcjsKKworICAgIGlmIChkaXJlY3Rpb24g
PT0gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxEb3duKSAKKyAgICAgICAgc2Nyb2xsYmFyID0gbV9mcmFtZS52aWV3KCktPnZl
cnRpY2FsU2Nyb2xsYmFyKCk7CisgICAgZWxzZSAKKyAgICAgICAgc2Nyb2xsYmFyID0gbV9mcmFt
ZS52aWV3KCktPmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICAKKyAgICBDR0Zsb2F0IHN0ZXAg
PSAwOworCisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgU2Nyb2xsR3JhbnVs
YXJpdHk6OlNjcm9sbEJ5TGluZToKKyAgICAgICAgc3RlcCA9IHNjcm9sbGJhci0+bGluZVN0ZXAo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQ
YWdlOgorICAgICAgICBzdGVwID0gc2Nyb2xsYmFyLT5wYWdlU3RlcCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50OgorICAgICAg
ICBzdGVwID0gc2Nyb2xsYmFyLT50b3RhbFNpemUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAgICAgc3RlcCA9IHNjcm9s
bGJhci0+cGl4ZWxTdGVwKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBz
dGVwOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoS2V5
Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgZW51bSBjbGFzcyBLZXkgOiB1aW50OF90IHsgTGVm
dEFycm93LCBSaWdodEFycm93LCBVcEFycm93LCBEb3duQXJyb3csIFNwYWNlIH07CisKKyAgICBL
ZXkga2V5OworICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIkxlZnQiKQorICAgICAg
ICBrZXkgPSBLZXk6OkxlZnRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVy
KCkgPT0gIlJpZ2h0IikKKyAgICAgICAga2V5ID0gS2V5OjpSaWdodEFycm93OworICAgIGVsc2Ug
aWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVXAiKQorICAgICAgICBrZXkgPSBLZXk6OlVw
QXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJEb3duIikKKyAg
ICAgICAga2V5ID0gS2V5OjpEb3duQXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQuY2hhckNvZGUo
KSA9PSAnICcpCisgICAgICAgIGtleSA9IEtleTo6U3BhY2U7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGdyYW51bGFyaXR5ID0gWyZdIHsKKyAgICAgICAgc3dp
dGNoIChrZXkpIHsKKyAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKKyAgICAgICAgY2FzZSBL
ZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gZXZlbnQuYWx0S2V5KCkgPyBTY3Jv
bGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlIDogU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5
TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpEb3du
QXJyb3c6CisgICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDsKKyAgICAgICAgICAg
IGlmIChldmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVs
YXJpdHk6OlNjcm9sbEJ5UGFnZTsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0
eTo6U2Nyb2xsQnlMaW5lOworICAgICAgICBjYXNlIEtleTo6U3BhY2U6CisgICAgICAgICAgICBy
ZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKKyAgICAgICAgfTsKKyAgICB9
KCk7CisKKyAgICBhdXRvIGRpcmVjdGlvbiA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAoa2V5KSB7
CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxMZWZ0OworICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJvdzoKKyAg
ICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OworICAgICAgICBj
YXNlIEtleTo6VXBBcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbFVwOworICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAgcmV0dXJu
IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgor
ICAgICAgICAgICAgcmV0dXJuIGV2ZW50LnNoaWZ0S2V5KCkgPyBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbFVwIDogU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOworICAgICAgICB9OworICAgIH0o
KTsKKworICAgIENHRmxvYXQgZGlzdGFuY2UgPSBzY3JvbGxEaXN0YW5jZShkaXJlY3Rpb24sIGdy
YW51bGFyaXR5KTsKKyAgICAKKyAgICBLZXlib2FyZFNjcm9sbCBzY3JvbGw7CisKKyAgICBzY3Jv
bGwub2Zmc2V0ID0gdW5pdFZlY3RvcihkaXJlY3Rpb24pLnNjYWxlZChkaXN0YW5jZSk7CisgICAg
c2Nyb2xsLmdyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHk7CisgICAgc2Nyb2xsLmRpcmVjdGlvbiA9
IGRpcmVjdGlvbjsKKyAgICBzY3JvbGwubWF4aW11bVZlbG9jaXR5ID0gc2Nyb2xsLm9mZnNldC5z
Y2FsZWQoS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzOjpwYXJhbWV0ZXJzKCkubWF4aW11bVZlbG9j
aXR5TXVsdGlwbGllcik7CisKKyAgICBzY3JvbGwuZm9yY2UgPSBzY3JvbGwubWF4aW11bVZlbG9j
aXR5LnNjYWxlZChLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS5zcHJpbmdN
YXNzIC8gS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzOjpwYXJhbWV0ZXJzKCkudGltZVRvTWF4aW11
bVZlbG9jaXR5KTsKKworICAgIHJldHVybiBFdmVudEhhbmRsZXI6OnNjcm9sbFJlY3Vyc2l2ZWx5
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG51bGxwdHIpOworfQogCiB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9u
LCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoZXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpOwogCisgICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZCgmbV9mcmFtZSkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5zbW9v
dGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGhhbmRsZUtleWJvYXJk
U2Nyb2xsaW5nKGV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChldmVu
dC5jdHJsS2V5KCkgfHwgZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkgfHwg
ZXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjQ0LDkgKzQzNTgsNiBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0
aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUgZGlyZWN0aW9u
YWwgbmF2aWdhdGlvbiBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8vIG1vZGUgZWRp
dGluZy4KICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDJiNjM1ODk2NDg3NmQxNTFjMDk3MThiZGVmODlk
OGVkNDJkMTRhZWYuLjYxNWY0Y2M5MjhjY2RlYzU2YjZhMmUyOWZhYmZlNWUwOTMyNWIwNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJI
aXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKQEAgLTM3NSw2ICszNzYsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNr
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorICAgIHN0YXRpYyBGbG9h
dFNpemUgdW5pdFZlY3RvcihTY3JvbGxEaXJlY3Rpb24pOworICAgIENHRmxvYXQgc2Nyb2xsRGlz
dGFuY2UoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CisgICAgYm9vbCBoYW5k
bGVLZXlib2FyZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50Jik7CisKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgIGJvb2wgaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMgPSBTaG91bGRDaGVja0Ry
YWdIeXN0ZXJlc2lzKTsKICAgICBib29sIHNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWco
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTY3
YTU1ZDEzYjEyOGZmODI5NDkzZjc2MzA2NjM2MzJiZmQ1NTc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEtleWJvYXJkU2Nyb2xsIHsKKyAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgb2Zmc2V0OyAvLyBQb2ludHMgcGVyIGluY3JlbWVudC4KKyAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgbWF4aW11bVZlbG9jaXR5OyAvLyBQb2ludHMgcGVyIHNlY29uZC4KKyAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgZm9yY2U7CisKKyAgICBTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0eTsKKyAgICBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uOworfTsKKworc3RydWN0IEtleWJv
YXJkU2Nyb2xsUGFyYW1ldGVycyB7CisgICAgQ0dGbG9hdCBzcHJpbmdNYXNzIHsgMSB9OworICAg
IENHRmxvYXQgc3ByaW5nU3RpZmZuZXNzIHsgMTA5IH07CisgICAgQ0dGbG9hdCBzcHJpbmdEYW1w
aW5nIHsgMjAgfTsKKworICAgIENHRmxvYXQgbWF4aW11bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1
IH07CisgICAgQ0dGbG9hdCB0aW1lVG9NYXhpbXVtVmVsb2NpdHkgeyAxIH07CisKKyAgICBDR0Zs
b2F0IHJ1YmJlckJhbmRGb3JjZSB7IDUwMDAgfTsKKworICAgIHN0YXRpYyBjb25zdCBLZXlib2Fy
ZFNjcm9sbFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKQorICAgIHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAgICByZXR1cm4g
cGFyYW1ldGVyczsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCBkNzliOWFkODA5MmVmYzRkZjQxODVkZWE1MjFhMmQ3NTc4YWM2ZmFiLi4yNzFj
ODU1NTE3MTQzYTJlMmFiMmIwZjc0YmYxNGI2Njc2NTlmMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTExNiw2ICsxMTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFR5cGVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFy
ZURhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CkBA
IC01ODk5LDIxICs1OTAwLDIzIEBAIHN0YXRpYyBOU1N0cmluZyAqY29udGVudFR5cGVGcm9tRmll
bGROYW1lKFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lIGZpZWxkTmFtZSkKICAgICByZXR1cm4g
WUVTOwogfQogCi0tIChDR0Zsb2F0KWtleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJv
YXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdl
YktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uCistIChDR0Zsb2F0KWtleWJvYXJkU2Nyb2xsVmll
d0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3IgZGlzdGFu
Y2VGb3JJbmNyZW1lbnQ6KFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVudCBpbkRp
cmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbgogewotICAgIEJPT0wg
ZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpMZWZ0IHx8IGRpcmVjdGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
UmlnaHQ7CisgICAgQk9PTCBkaXJlY3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0IHx8IGRpcmVjdGlvbiA9PSBXZWJDb3Jl
OjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OwogCiAgICAgc3dpdGNoIChpbmNyZW1lbnQp
IHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDogeworICAg
IGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ6IHsKICAg
ICAgICAgQ0dTaXplIGRvY3VtZW50U2l6ZSA9IFtzZWxmIGNvbnZlcnRSZWN0OnNlbGYuYm91bmRz
IHRvVmlldzpzZWxmLndlYlZpZXddLnNpemU7CiAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hv
cml6b250YWwgPyBkb2N1bWVudFNpemUud2lkdGggOiBkb2N1bWVudFNpemUuaGVpZ2h0OwogICAg
IH0KLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOiB7CisgICAgY2Fz
ZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOiB7CiAgICAgICAgIENH
U2l6ZSBwYWdlU2l6ZSA9IFtzZWxmIGNvbnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6
U2Nyb2xsYmFyOjpwYWdlU3RlcChfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0
KCksIHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0KSkgdG9WaWV3OnNlbGYud2ViVmlld107CiAgICAg
ICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6b250YWwgPyBwYWdlU2l6ZS53aWR0aCA6IHBhZ2VT
aXplLmhlaWdodDsKICAgICB9Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6
TGluZToKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6
CiAgICAgICAgIHJldHVybiBbc2VsZiBjb252ZXJ0U2l6ZTpDR1NpemVNYWtlKDAsIFdlYkNvcmU6
OlNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSkgdG9WaWV3OnNlbGYud2ViVmlld10uaGVp
Z2h0OworICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6
CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaAppbmRleCAzZmY4M2I2NTVhY2MwZGU3Y2FiODI0
ZTljYTMzNWEyNGUyNzVlMmQ4Li4yZWY5MzhlY2ViZDUyOWM1ZGI0YTNkNjVjZjU3MThlM2IwOTY1
OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCkBAIC0yMywyOCArMjMsMTQgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFR5
cGVzLmg+CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBGbG9hdFBvaW50OwogfQogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBjbGFz
cyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50OF90IHsKLSAgICBEb2N1bWVudCwKLSAgICBQYWdl
LAotICAgIExpbmUKLX07Ci0KLWVudW0gY2xhc3MgU2Nyb2xsaW5nRGlyZWN0aW9uIDogdWludDhf
dCB7Ci0gICAgVXAsCi0gICAgRG93biwKLSAgICBMZWZ0LAotICAgIFJpZ2h0Ci19OwotCi19CiAK
IEBjbGFzcyBVSVNjcm9sbFZpZXc7CiBAY2xhc3MgV2ViRXZlbnQ7CkBAIC03MSw3ICs1Nyw3IEBA
IGVudW0gY2xhc3MgU2Nyb2xsaW5nRGlyZWN0aW9uIDogdWludDhfdCB7CiBAcHJvdG9jb2wgV0tL
ZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvckRlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAog
LSAoQk9PTClpc1Njcm9sbGFibGVGb3JLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjooV0tLZXli
b2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yOwotLSAoQ0dGbG9hdClrZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvcjooV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9y
IGRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1l
bnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbjsKKy0g
KENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxWaWV3
QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6U2Nyb2xs
R3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rp
b24pZGlyZWN0aW9uOwogLSAodm9pZClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcldpbGxTY3Jv
bGw6KFdLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvcjsKIC0gKHZvaWQpa2V5
Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3JEaWRGaW5pc2hTY3JvbGxpbmc6KFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3IgKilhbmltYXRvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KaW5kZXggMzky
N2UyY2NkMWNhMTE1YjAwNmU2NjEyNTQzMDExZGJlNmQ4Nzg2OS4uOTJiNTI2ZmU1OGU2MWY1MmE0
MzY4MjRhNzllYjJmNjQxMzcxNzI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBRGlzcGxheUxpbmsuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRQb2ludC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlFdmVudENvZGVzSU9TLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkU2Nyb2xsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
Y3RFZGdlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0
L1VJS2l0U1BJLmg+CkBAIC00MCwzNCArNDEsMTEgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RydWN0IEtleWJvYXJkU2Nyb2xsIHsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgb2Zmc2V0OyAv
LyBQb2ludHMgcGVyIGluY3JlbWVudC4KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVZl
bG9jaXR5OyAvLyBQb2ludHMgcGVyIHNlY29uZC4KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgZm9y
Y2U7Ci0KLSAgICBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnQ7Ci0gICAgV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uOwotfTsKLQotc3RydWN0IEtleWJvYXJk
U2Nyb2xsUGFyYW1ldGVycyB7Ci0gICAgQ0dGbG9hdCBzcHJpbmdNYXNzIHsgMSB9OwotICAgIENH
RmxvYXQgc3ByaW5nU3RpZmZuZXNzIHsgMTA5IH07Ci0gICAgQ0dGbG9hdCBzcHJpbmdEYW1waW5n
IHsgMjAgfTsKLQotICAgIENHRmxvYXQgbWF4aW11bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1IH07
Ci0gICAgQ0dGbG9hdCB0aW1lVG9NYXhpbXVtVmVsb2NpdHkgeyAxIH07Ci0KLSAgICBDR0Zsb2F0
IHJ1YmJlckJhbmRGb3JjZSB7IDUwMDAgfTsKLX07Ci0KLX0KIAogQHByb3RvY29sIFdLS2V5Ym9h
cmRTY3JvbGxhYmxlSW50ZXJuYWwgPE5TT2JqZWN0PgogQHJlcXVpcmVkCiAtIChCT09MKWlzS2V5
Ym9hcmRTY3JvbGxhYmxlOwotLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0
OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbilkaXJlY3Rpb247CistIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50
OihXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb247CiAtICh2b2lkKXNjcm9sbFRvQ29udGVudE9m
ZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7
CiAtICh2b2lkKXNjcm9sbFdpdGhTY3JvbGxUb0V4dGVudEFuaW1hdGlvblRvOihDR1BvaW50KW9m
ZnNldDsKIC0gKENHUG9pbnQpY29udGVudE9mZnNldDsKQEAgLTk3LDcgKzc1LDcgQEAgc3RydWN0
IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyB7CiAgICAgaWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxl
SW50ZXJuYWw+IF9zY3JvbGxhYmxlOwogICAgIFJldGFpblB0cjxDQURpc3BsYXlMaW5rPiBfZGlz
cGxheUxpbms7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6S2V5Ym9hcmRTY3JvbGw+IF9j
dXJyZW50U2Nyb2xsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGw+
IF9jdXJyZW50U2Nyb2xsOwogCiAgICAgQk9PTCBfc2Nyb2xsVHJpZ2dlcmluZ0tleUlzUHJlc3Nl
ZDsKIApAQCAtMTI0LDkgKzEwMiw5IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
ewogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChjb25zdCBXZWJLaXQ6OktleWJvYXJkU2Nyb2xs
UGFyYW1ldGVycyAmKXBhcmFtZXRlcnMKKy0gKGNvbnN0IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xs
UGFyYW1ldGVycyAmKXBhcmFtZXRlcnMKIHsKLSAgICBzdGF0aWMgY29uc3QgV2ViS2l0OjpLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29y
ZTo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7CiB9CiAKQEAgLTEzNyw0NyArMTE1LDQ3IEBAIHN0cnVjdCBLZXlib2FyZFNjcm9sbFBh
cmFtZXRlcnMgewogICAgIF9zY3JvbGxhYmxlID0gbmlsOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6
RmxvYXRTaXplIHVuaXRWZWN0b3IoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQorc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bml0VmVjdG9yKFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNl
IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsVXA6CiAgICAgICAgIHJldHVybiB7IDAsIC0xIH07Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwotICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3Jl
OjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVybiB7IC0xLCAwIH07
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgogICAgICAgICByZXR1cm4geyAx
LCAwIH07CiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3Vs
YXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQorc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZXJwZW5kaWN1bGFyQWJzb2x1dGVVbml0VmVj
dG9yKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChk
aXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgorICAgIGNhc2UgV2ViQ29y
ZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbjo6U2Nyb2xsRG93bjoKICAgICAgICAgcmV0dXJuIHsgMSwgMCB9OwotICAgIGNhc2Ug
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbExlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJp
Z2h0OgogICAgICAgICByZXR1cm4geyAwLCAxIH07CiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29y
ZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikK
K3N0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgV2ViS2l0
OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OlRvcDsKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgorICAgIGNhc2UgV2ViQ29y
ZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Qm94U2lkZTo6Qm90dG9tOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246Okxl
ZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpMZWZ0OwotICAgIGNhc2UgV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
OjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OlJpZ2h0Owog
ICAgIH0KIH0KIAotLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPilrZXli
b2FyZFNjcm9sbEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZl
bnQgKilldmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAw
eDIwOwogCkBAIC0yNTUsNTAgKzIzMyw1MCBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hT
aWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgY2FzZSBL
ZXk6OkxlZnRBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CiAgICAgICAgICAg
ICBpZiAoYWx0UHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxp
bmdJbmNyZW1lbnQ6OlBhZ2U7Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJ
bmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbEdy
YW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Ny
b2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6
CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAgICAgICAgICAgICBpZiAoYWx0UHJlc3Nl
ZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBh
Z2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpT
Y3JvbGxCeVBhZ2U7CiAgICAgICAgICAgICBpZiAoY21kUHJlc3NlZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OwotICAgICAgICAg
ICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDsK
KyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlM
aW5lOwogICAgICAgICBjYXNlIEtleTo6UGFnZVVwOgogICAgICAgICBjYXNlIEtleTo6UGFnZURv
d246CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6
OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
Y3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBX
ZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOwogICAgICAgICB9OwogICAgIH0o
KTsKIAogICAgIGF1dG8gZGlyZWN0aW9uID0gXigpIHsKICAgICAgICAgc3dpdGNoIChrZXkpIHsK
ICAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ7CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93
OgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsK
KyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0
OwogICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoK
LSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA7CisgICAg
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDsKICAgICAg
ICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgotICAg
ICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOworICAgICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjsKICAgICAg
ICAgY2FzZSBLZXk6OlNwYWNlOgotICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpEb3duOworICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsVXAgOiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERv
d247CiAgICAgICAgIGNhc2UgS2V5OjpPdGhlcjoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpE
b3duOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
RG93bjsKICAgICAgICAgfTsKICAgICB9KCk7CiAKICAgICBDR0Zsb2F0IHNjcm9sbERpc3RhbmNl
ID0gW19zY3JvbGxhYmxlIGRpc3RhbmNlRm9ySW5jcmVtZW50OmluY3JlbWVudCBpbkRpcmVjdGlv
bjpkaXJlY3Rpb25dOwogCi0gICAgV2ViS2l0OjpLZXlib2FyZFNjcm9sbCBzY3JvbGw7CisgICAg
V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOwogICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0
VmVjdG9yKGRpcmVjdGlvbikuc2NhbGVkKHNjcm9sbERpc3RhbmNlKTsKLSAgICBzY3JvbGwuaW5j
cmVtZW50ID0gaW5jcmVtZW50OworICAgIHNjcm9sbC5ncmFudWxhcml0eSA9IGluY3JlbWVudDsK
ICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogICAgIHNjcm9sbC5tYXhpbXVtVmVs
b2NpdHkgPSBzY3JvbGwub2Zmc2V0LnNjYWxlZChzZWxmLnBhcmFtZXRlcnMubWF4aW11bVZlbG9j
aXR5TXVsdGlwbGllcik7CiAKQEAgLTMyNyw3ICszMDUsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94
U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBf
c2Nyb2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZCA9IFlFUzsKICAgICBfY3VycmVudFNjcm9sbCA9
IHNjcm9sbDsKIAotICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBXZWJLaXQ6OlNjcm9sbGlu
Z0luY3JlbWVudDo6RG9jdW1lbnQpIHsKKyAgICBpZiAoc2Nyb2xsLT5ncmFudWxhcml0eSA9PSBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudCkgewogICAgICAgICBf
dmVsb2NpdHkgPSB7IH07CiAgICAgICAgIFtzZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CiAgICAg
ICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlua107CkBAIC0zNjAsMTYgKzMzOCwxNiBAQCBzdGF0aWMg
V2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9p
bnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQg
YiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIFdlYkNvcmU6
OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQg
YSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChhLngoKSwgc3RkOjpt
aW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0ZDo6bWF4KGEueSgpLCBi
LnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6CiAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngoKSksIGEueSgpKTsKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpGbG9hdFBvaW50KHN0ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgpKTsKICAgICB9CiAKQEAg
LTU2Niw3ICs1NDQsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50
SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2Rl
bGVnYXRlIGlzU2Nyb2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwog
fQogCi0tIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0lu
Y3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
KWRpcmVjdGlvbgorLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6U2Ny
b2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBzY3JvbGxWaWV3ID0gX3Njcm9sbFZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3JvbGxWaWV3KQpAQCAtNTc1LDE2ICs1NTMsMTgg
QEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdl
YkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBjb25zdCBDR0Zsb2F0IGRlZmF1bHRQYWdl
U2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29uc3QgQ0dGbG9hdCBkZWZhdWx0TGluZVNjcm9s
bEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJlY3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rp
b24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQgfHwgZGlyZWN0aW9uID09IFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsKKyAgICBCT09MIGRpcmVjdGlvbklzSG9y
aXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExl
ZnQgfHwgZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7
CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0YW5jZUZvckluY3JlbWVudCkgewog
ICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25J
c0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5j
b250ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1l
bnQ6OlBhZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5UGFnZToKICAgICAgICAgICAgIHJldHVybiAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Ny
b2xsVmlldy5mcmFtZS5zaXplLndpZHRoIDogc2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkg
KiBkZWZhdWx0UGFnZVNjcm9sbEZyYWN0aW9uOwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpMaW5lOgorICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeUxpbmU6CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxI
ZWlnaHQgKiBzY3JvbGxWaWV3Lnpvb21TY2FsZTsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KaW5kZXggMmFiMTA4NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uMjQ4ZmMx
ZTFlNGMzNGI5NGJjNWU1NWE2ZTdlYmE5MDMxYTgwZGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTQ2MywzMSArNDYz
LDM0IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9y
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtleWJvCiAgICAgLy8gU2hvdWxkIHN1Y2ggbm9uLWVk
aXRpbmcgYmVoYXZpb3JzIGJlIGltcGxlbWVudGVkIGluIEVkaXRvciBvciBFdmVudEhhbmRsZXI6
OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcigpIHBlcmhhcHM/CiAgICAgCiAgICAgYm9vbCBkaWRQ
ZXJmb3JtQWN0aW9uID0gZmFsc2U7CisgICAgCisgICAgaWYgKCFmcmFtZS0+c2V0dGluZ3MoKS5z
bW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3Ig
PT0gIm1vdmVVcDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKKyAgICAgICAgICAgIGRpZFBl
cmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdl
KTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQ6IikgeworICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0
KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1B
Y3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVu
dCk7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVEb3duOiIpCisgICAgICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwg
U2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9m
UGFyYWdyYXBoOiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVUb0VuZE9mRG9jdW1lbnQ6IikgeworICAgICAgICAgICAgZGlkUGVyZm9y
bUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1l
bnQpOworICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZUxlZnQ6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNl
IGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCisgICAgICAgICAgICBkaWRQZXJmb3Jt
QWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsK
KyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgICAgICAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3Jv
bGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoi
KQorICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xs
UmlnaHQsIFNjcm9sbEJ5UGFnZSk7CisgICAgfQogCi0gICAgaWYgKHNlbGVjdG9yID09ICJtb3Zl
VXA6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbFVwLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgewotICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1l
bnQpOwotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0g
Im1vdmVEb3duOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Ny
b2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAgICAgIGRpZFBlcmZv
cm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3Vt
ZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBT
Y3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9
PSAibW92ZVdvcmRMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9w
YWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgaWYgKHNlbGVjdG9yID09ICJtb3Zl
VG9MZWZ0RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpIDogbV9wYWdlLT5iYWNr
Rm9yd2FyZCgpLmdvRm9yd2FyZCgpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlUmln
aHQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3Zl
V29yZFJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlQYWdlKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9
PSAibW92ZVRvUmlnaHRFbmRPZkxpbmU6IikKICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1f
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOjpMVFIgPyBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCkgOiBt
X3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29CYWNrKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdCBiL1dl
YktpdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1Mzkx
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432194</attachid>
            <date>2021-06-24 11:24:26 -0700</date>
            <delta_ts>2021-06-25 13:14:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210624142425.patch</filename>
            <type>text/plain</type>
            <size>34856</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2MzdjMGVkZGViMWIw
MDYwMTA4MTQ1ZWQwM2VkMjhkZjc3NjE0Mi4uOGRkYmQzOWM1ZmUwMjQ5ZWQ2NTI1NDJiMGY4NTkx
OGQwYzdjMjQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHlldAorCisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dW5pdFZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OlNjcm9sbERpc3RhbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvS2V5Ym9h
cmRTY3JvbGwuaDogQWRkZWQuCisKIDIwMjEtMDYtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFtpT1NdIEFTU0VSVElPTiBGQUlMRUQ6
IHBpeGVsQnVmZmVyLT5kYXRhKCkubGVuZ3RoKCkgPj0gNCB1bmRlciBXZWJDb3JlOjpzYW1wbGVD
b2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkM2M5NjRmNThjMmRmNjlkNWI1YWU4OWI0OGI1MjE5NmVhNjU3N2Jm
Li5kODVkOGU5YjUyMjIzOTdjODk0YzljODhjNDcyYWVmNTI5Mzc1ZjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIxLTA2LTE0ICBEYW5hIEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXlib2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXli
b2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbToK
KyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHBhcmFtZXRlcnNdKToKKyAg
ICAgICAgKHVuaXRWZWN0b3IpOgorICAgICAgICAocGVycGVuZGljdWxhckFic29sdXRlVW5pdFZl
Y3Rvcik6CisgICAgICAgIChib3hTaWRlKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yIGtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgKGZhcnRoZXN0
UG9pbnRJbkRpcmVjdGlvbik6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0
b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcik6CisKIDIwMjEtMDYtMjIgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjI3OTEzMzogcmVtb3ZlIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGFuZCBkZWZp
bmVzIGFmdGVyIHVwc3RyZWFtaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggMTgzODlmYzc2
ZWVhNzdjMGE0YWYwMTc1YzUzZDViZTg1MTU2ZGEyZS4uNzcwNzRkNDgxZTQ0ZTI5NWNiODQ5NTdj
YTA5MTYxMzA3MWQ1ZWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBAIC0yMjAsNiArMjIwLDE4
IEBAIEVudGVyS2V5SGludEVuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZh
bHNlCiAKK0V2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZDoK
KyB0eXBlOiBib29sCisgaHVtYW5SZWFkYWJsZU5hbWU6ICJFdmVudEhhbmRsZXIgZHJpdmVuIHNt
b290aCBrZXlib2FyZCBzY3JvbGxpbmciCisgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5h
YmxlIEV2ZW50SGFuZGxlciBkcml2ZW4gc21vb3RoIGtleWJvYXJkIHNjcm9sbGluZyIKKyBkZWZh
dWx0VmFsdWU6CisgIFdlYktpdExlZ2FjeToKKyAgIGRlZmF1bHQ6IGZhbHNlCisgIFdlYktpdDoK
KyAgIGRlZmF1bHQ6IGZhbHNlCisgIFdlYkNvcmU6CisgICBkZWZhdWx0OiBmYWxzZQorCiAjIEZJ
WE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2ViS2l0TGVnYWN5LCBzbyBzaG91bGQgYmUg
ZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBFeHBlcmltZW50YWxQbHVnSW5T
YW5kYm94UHJvZmlsZXNFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZTNlMDY5MDM2ZjZh
ZWY4M2M5YTkxYzYzMDRlNDQ1ZjIxNzU1Zi4uMGY2ZTQwMDhkNjAwNjNmMmYzZmEwY2M4N2IwNGNi
ZWZiNDhjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNjY3LDYgKzY2Nyw3IEBACiAJCTFEQkMxQjU2MjM0N0IzRDIwMEI5
MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0
dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxREQzQjRDNjI1MURBMEI4MDA2OUIyNEEgLyogVmlkZW9MYXllck1h
bmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSAq
LzsgfTsKIAkJMURGN0U4MUYyNTFBOUUwNjAwREI4RjYxIC8qIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREQx
RTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxRjAyMEFFRjI2Nzgw
RkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2Fy
ZFNjcm9sbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFGMzZFQTlDMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzZF
QTlBMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjcyQkYwQjE4
N0ZENDVDMDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjcyQkYwOTE4N0ZENDI3
MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY4NzU2QjIxRTIyQzMzNTAw
NDJDNDBEIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY4NzU2QjExRTIyQkVFRjAwNDJDNDBE
IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MDYxLDYgKzcwNjIsNyBAQAogCQkxREVG
MDZEQzIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVy
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkREMjMzRDJFMUMwMEVF
MjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFERUYwNkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudCtQaWN0dXJl
SW5QaWN0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiRG9jdW1lbnQrUGljdHVyZUlu
UGljdHVyZS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAyMEFFRDI2Nzgw
RkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gS2V5Ym9hcmRTY3JvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUYzNkVBOUExRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUIxRTIxQkExNzAw
NjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8q
IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI1MDQsNiArMjI1MDYsNyBAQAogCQkJCTBGNDcx
MEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcCAqLywK
IAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eS5oICovLAogCQkJCTBGNDcxMERBMURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5LmlkbCAqLywKKwkJCQkxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9h
cmRTY3JvbGwuaCAqLywKIAkJCQk5MzFENzJGNTE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWls
ZXN0b25lLmggKi8sCiAJCQkJQkNFMUM0MUEwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmNw
cCAqLywKIAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCAqLywKQEAg
LTM0MTQxLDYgKzM0MTQ0LDcgQEAKIAkJCQlCQ0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkgLyogSlNY
U0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZC
QzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMx
QjQ0MEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxRjAyMEFFRjI2NzgwRkNFMDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNG
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRF
bmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IGY1YjFmOTE4MTg0MDVkOWZkZmU1MDNjMzlmOTc1MmZhY2E4MzU5ZTMuLmYyODA2M2Iz
ZTVkNWVlYjUwZDM1YmYyNjI1NDAyMmNhYTc0NGUwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCkBAIC00MjAwLDcgKzQyMDEsOCBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHZpZXctPmxvZ2ljYWxT
Y3JvbGwoZGlyZWN0aW9uLCBTY3JvbGxCeVBhZ2UpKQorICAgIGJvb2wgZGVmYXVsdEhhbmRsZWQg
PSBtX2ZyYW1lLnNldHRpbmdzKCkuZXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3Jv
bGxpbmdFbmFibGVkKCkgPyBoYW5kbGVLZXlib2FyZFNjcm9sbGluZyhldmVudCkgOiB2aWV3LT5s
b2dpY2FsU2Nyb2xsKGRpcmVjdGlvbiwgU2Nyb2xsQnlQYWdlKTsKKyAgICBpZiAoZGVmYXVsdEhh
bmRsZWQpCiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTQyMzIs
MTEgKzQyMzQsMTE2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRI
YW5kbGVyKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogfQogCitzdGF0aWMgRmxvYXRTaXplIHVuaXRWZWN0b3IoU2Nyb2xsRGlyZWN0aW9u
IGRpcmVjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxVcDoKKyAgICAgICAgcmV0dXJuIHsgMCwgLTEgfTsKKyAgICBjYXNl
IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKKyAgICAgICAgcmV0dXJuIHsgMCwgMSB9Owor
ICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgICAgICByZXR1cm4geyAt
MSwgMCB9OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKKyAgICAgICAg
cmV0dXJuIHsgMSwgMCB9OworICAgIH0KK30KKworZmxvYXQgRXZlbnRIYW5kbGVyOjpzY3JvbGxE
aXN0YW5jZShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFu
dWxhcml0eSkKK3sKKyAgICBhdXRvIHNjcm9sbGJhciA9IFsmXSB7CisgICAgICAgIGlmIChkaXJl
Y3Rpb24gPT0gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxEb3duKQorICAgICAgICAgICAgcmV0dXJuIG1fZnJhbWUudmlldygp
LT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgICAgICByZXR1cm4gbV9mcmFtZS52aWV3KCktPmhv
cml6b250YWxTY3JvbGxiYXIoKTsKKyAgICB9KCk7CisgICAgCisgICAgc3dpdGNoIChncmFudWxh
cml0eSkgeworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZToKKyAgICAg
ICAgcmV0dXJuIHNjcm9sbGJhci0+bGluZVN0ZXAoKTsKKyAgICBjYXNlIFNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeVBhZ2U6CisgICAgICAgIHJldHVybiBzY3JvbGxiYXItPnBhZ2VTdGVwKCk7
CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0
eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+cGl4ZWxTdGVwKCk7
CisgICAgfQorfQorCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmco
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgZG9lcyBu
b3QgYWNjb3VudCBmb3Igd3JpdGluZy1tb2RlLgorCisgICAgZW51bSBjbGFzcyBLZXkgOiB1aW50
OF90IHsgTGVmdEFycm93LCBSaWdodEFycm93LCBVcEFycm93LCBEb3duQXJyb3csIFNwYWNlIH07
CisKKyAgICBLZXkga2V5OworICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIkxlZnQi
KQorICAgICAgICBrZXkgPSBLZXk6OkxlZnRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJ
ZGVudGlmaWVyKCkgPT0gIlJpZ2h0IikKKyAgICAgICAga2V5ID0gS2V5OjpSaWdodEFycm93Owor
ICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVXAiKQorICAgICAgICBrZXkg
PSBLZXk6OlVwQXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJE
b3duIikKKyAgICAgICAga2V5ID0gS2V5OjpEb3duQXJyb3c7CisgICAgZWxzZSBpZiAoZXZlbnQu
Y2hhckNvZGUoKSA9PSAnICcpCisgICAgICAgIGtleSA9IEtleTo6U3BhY2U7CisgICAgZWxzZQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGdyYW51bGFyaXR5ID0gWyZdIHsKKyAg
ICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKKyAgICAg
ICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gZXZlbnQuYWx0S2V5
KCkgPyBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlIDogU2Nyb2xsR3JhbnVsYXJpdHk6
OlNjcm9sbEJ5TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgIGNhc2Ug
S2V5OjpEb3duQXJyb3c6CisgICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDsKKyAg
ICAgICAgICAgIGlmIChldmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Ny
b2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxH
cmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOworICAgICAgICBjYXNlIEtleTo6U3BhY2U6CisgICAg
ICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKKyAgICAgICAg
fTsKKyAgICB9KCk7CisKKyAgICBhdXRvIGRpcmVjdGlvbiA9IFsmXSB7CisgICAgICAgIHN3aXRj
aCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgICAgICByZXR1
cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OworICAgICAgICBjYXNlIEtleTo6UmlnaHRB
cnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0Owor
ICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbFVwOworICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAg
ICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAgY2FzZSBLZXk6
OlNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIGV2ZW50LnNoaWZ0S2V5KCkgPyBTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbFVwIDogU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOworICAgICAgICB9
CisgICAgfSgpOworCisgICAgQ0dGbG9hdCBkaXN0YW5jZSA9IHNjcm9sbERpc3RhbmNlKGRpcmVj
dGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIAorICAgIEtleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKwor
ICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0VmVjdG9yKGRpcmVjdGlvbikuc2NhbGVkKGRpc3RhbmNl
KTsKKyAgICBzY3JvbGwuZ3JhbnVsYXJpdHkgPSBncmFudWxhcml0eTsKKyAgICBzY3JvbGwuZGly
ZWN0aW9uID0gZGlyZWN0aW9uOworICAgIHNjcm9sbC5tYXhpbXVtVmVsb2NpdHkgPSBzY3JvbGwu
b2Zmc2V0LnNjYWxlZChLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS5tYXhp
bXVtVmVsb2NpdHlNdWx0aXBsaWVyKTsKKworICAgIHNjcm9sbC5mb3JjZSA9IHNjcm9sbC5tYXhp
bXVtVmVsb2NpdHkuc2NhbGVkKEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygp
LnNwcmluZ01hc3MgLyBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKS50aW1l
VG9NYXhpbXVtVmVsb2NpdHkpOworCisgICAgcmV0dXJuIEV2ZW50SGFuZGxlcjo6c2Nyb2xsUmVj
dXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0cik7Cit9CiAKIHZvaWQgRXZl
bnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNE
aXJlY3Rpb24sIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CiAKKyAgICBpZiAoIWlzU3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkKCZtX2ZyYW1lKSkgeworICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5n
cygpLmV2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZCgpKQor
ICAgICAgICAgICAgaGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoZXZlbnQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgaWYgKGV2ZW50LmN0cmxLZXkoKSB8fCBldmVudC5tZXRhS2V5KCkg
fHwgZXZlbnQuYWx0R3JhcGhLZXkoKSB8fCBldmVudC5zaGlmdEtleSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTQyNDQsOSArNDM1MSw2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJy
b3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24sIEtleWJvCiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkKCZtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gQXJyb3dzIGFu
ZCBvdGhlciBwb3NzaWJsZSBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uIGtleXMgY2FuIGJlIHVzZWQg
aW4gZGVzaWduCiAgICAgLy8gbW9kZSBlZGl0aW5nLgogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50
KCktPmluRGVzaWduTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMmI2
MzU4OTY0ODc2ZDE1MWMwOTcxOGJkZWY4OWQ4ZWQ0MmQxNGFlZi4uYTVhZjQwNDYxNGU2Y2Y4NmQw
YmM1Y2M2NTAyNDU1MzAzMmY4YmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJGb2N1
c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCisjaW5jbHVkZSAiS2V5
Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtMzc1LDYgKzM3
Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnREb3VibGVDbGlj
ayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAgICAgYm9vbCBoYW5kbGVN
b3VzZVByZXNzRXZlbnRUcmlwbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJik7CiAKKyAgICBmbG9hdCBzY3JvbGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5KTsKKyAgICBib29sIGhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKEtleWJvYXJk
RXZlbnQmKTsKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3Vz
ZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tE
cmFnSHlzdGVyZXNpcyA9IFNob3VsZENoZWNrRHJhZ0h5c3RlcmVzaXMpOwogICAgIGJvb2wgc2hv
dWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0RHJhZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9LZXli
b2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZThmZGQ0N2FhNjJmODgzN2IxYjMyM2Y4MTY4ODRm
OTA2ZDFmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJk
U2Nyb2xsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
S2V5Ym9hcmRTY3JvbGwgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7IC8vIFBvaW50cyBwZXIgaW5j
cmVtZW50LgorICAgIEZsb2F0U2l6ZSBtYXhpbXVtVmVsb2NpdHk7IC8vIFBvaW50cyBwZXIgc2Vj
b25kLgorICAgIEZsb2F0U2l6ZSBmb3JjZTsKKworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5OworICAgIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247Cit9OworCitzdHJ1Y3QgS2V5
Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKKyAgICBmbG9hdCBzcHJpbmdNYXNzIHsgMSB9OworICAg
IGZsb2F0IHNwcmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIGZsb2F0IHNwcmluZ0RhbXBpbmcg
eyAyMCB9OworCisgICAgZmxvYXQgbWF4aW11bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1IH07Cisg
ICAgZmxvYXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAgZmxvYXQgcnViYmVy
QmFuZEZvcmNlIHsgNTAwMCB9OworCisgICAgc3RhdGljIGNvbnN0IEtleWJvYXJkU2Nyb2xsUGFy
YW1ldGVycyYgcGFyYW1ldGVycygpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJz
OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGQ3OWI5YWQ4MDkyZWZjNGRmNDE4NWRlYTUyMWEyZDc1NzhhYzZmYWIuLjI3MWM4NTU1MTcxNDNh
MmUyYWIyYjBmNzRiZjE0YjY2NzY1OWYyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTE2LDYgKzEx
Niw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KQEAgLTU4OTksMjEg
KzU5MDAsMjMgQEAgc3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZyb21GaWVsZE5hbWUoV2Vi
Q29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgZmllbGROYW1lKQogICAgIHJldHVybiBZRVM7CiB9CiAK
LS0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxW
aWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpTY3Jv
bGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9sbGluZ0Rp
cmVjdGlvbilkaXJlY3Rpb24KKy0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6
KFdLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvckluY3Jl
bWVudDooV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7Ci0gICAgQk9PTCBkaXJlY3Rpb25J
c0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246Okxl
ZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsKKyAg
ICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CiAKICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OiB7CisgICAgY2FzZSBXZWJD
b3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDogewogICAgICAgICBDR1Np
emUgZG9jdW1lbnRTaXplID0gW3NlbGYgY29udmVydFJlY3Q6c2VsZi5ib3VuZHMgdG9WaWV3OnNl
bGYud2ViVmlld10uc2l6ZTsKICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA/
IGRvY3VtZW50U2l6ZS53aWR0aCA6IGRvY3VtZW50U2l6ZS5oZWlnaHQ7CiAgICAgfQotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6IHsKKyAgICBjYXNlIFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6IHsKICAgICAgICAgQ0dTaXplIHBhZ2VT
aXplID0gW3NlbGYgY29udmVydFNpemU6Q0dTaXplTWFrZSgwLCBXZWJDb3JlOjpTY3JvbGxiYXI6
OnBhZ2VTdGVwKF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSwgc2VsZi5i
b3VuZHMuc2l6ZS5oZWlnaHQpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XTsKICAgICAgICAgcmV0dXJu
IGRpcmVjdGlvbklzSG9yaXpvbnRhbCA/IHBhZ2VTaXplLndpZHRoIDogcGFnZVNpemUuaGVpZ2h0
OwogICAgIH0KLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgorICAg
IGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZToKICAgICAgICAg
cmV0dXJuIFtzZWxmIGNvbnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Nyb2xsYmFy
OjpwaXhlbHNQZXJMaW5lU3RlcCgpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XS5oZWlnaHQ7CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1YTI0
ZTI3NWUyZDguLjJlZjkzOGVjZWJkNTI5YzVkYjRhM2Q2NWNmNTcxOGUzYjA5NjU5NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmgKQEAgLTIzLDI4ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZs
b2F0UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9sbGlu
Z0luY3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAgTGlu
ZQotfTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAgICBV
cCwKLSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNzIFVJ
U2Nyb2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKQEAgLTcxLDcgKzU3LDcgQEAgZW51bSBjbGFz
cyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKIEBwcm90b2NvbCBXS0tleWJvYXJkU2Ny
b2xsVmlld0FuaW1hdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCiAtIChCT09MKWlz
U2Nyb2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xs
Vmlld0FuaW1hdG9yICopYW5pbWF0b3I7Ci0tIChDR0Zsb2F0KWtleWJvYXJkU2Nyb2xsVmlld0Fu
aW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3IgZGlzdGFuY2VG
b3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVj
dGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClr
ZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjooV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciAq
KWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0
eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbilkaXJlY3Rp
b247CiAtICh2b2lkKWtleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yV2lsbFNjcm9sbDooV0tLZXli
b2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yOwogLSAodm9pZClrZXlib2FyZFNjcm9s
bFZpZXdBbmltYXRvckRpZEZpbmlzaFNjcm9sbGluZzooV0tLZXlib2FyZFNjcm9sbFZpZXdBbmlt
YXRvciAqKWFuaW1hdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQppbmRleCAzOTI3ZTJjY2QxY2Ex
MTViMDA2ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5Li4xNWFiNGZmYzZjNzE1YmZlODNmODRiMjA2MmE3
MjBhMzhjZTkxNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ0FEaXNwbGF5TGluay5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFBvaW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29kZXNJT1MuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvS2V5Ym9hcmRTY3JvbGwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVjdEVkZ2VzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvVUlLaXRTUEku
aD4KQEAgLTQwLDM0ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgS2V5
Ym9hcmRTY3JvbGwgewotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvZmZzZXQ7IC8vIFBvaW50cyBw
ZXIgaW5jcmVtZW50LgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVmVsb2NpdHk7IC8v
IFBvaW50cyBwZXIgc2Vjb25kLgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmb3JjZTsKLQotICAg
IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50IGluY3JlbWVudDsKLSAgICBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbiBkaXJlY3Rpb247Ci19OwotCi1zdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJh
bWV0ZXJzIHsKLSAgICBDR0Zsb2F0IHNwcmluZ01hc3MgeyAxIH07Ci0gICAgQ0dGbG9hdCBzcHJp
bmdTdGlmZm5lc3MgeyAxMDkgfTsKLSAgICBDR0Zsb2F0IHNwcmluZ0RhbXBpbmcgeyAyMCB9Owot
Ci0gICAgQ0dGbG9hdCBtYXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyIHsgMjUgfTsKLSAgICBDR0Zs
b2F0IHRpbWVUb01heGltdW1WZWxvY2l0eSB7IDEgfTsKLQotICAgIENHRmxvYXQgcnViYmVyQmFu
ZEZvcmNlIHsgNTAwMCB9OwotfTsKLQotfQogCiBAcHJvdG9jb2wgV0tLZXlib2FyZFNjcm9sbGFi
bGVJbnRlcm5hbCA8TlNPYmplY3Q+CiBAcmVxdWlyZWQKIC0gKEJPT0wpaXNLZXlib2FyZFNjcm9s
bGFibGU7Ci0tIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGlu
Z0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uKWRpcmVjdGlvbjsKKy0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uKWRpcmVjdGlvbjsKIC0gKHZvaWQpc2Nyb2xsVG9Db250ZW50T2Zmc2V0OihXZWJD
b3JlOjpGbG9hdFBvaW50KW9mZnNldCBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKIC0gKHZvaWQp
c2Nyb2xsV2l0aFNjcm9sbFRvRXh0ZW50QW5pbWF0aW9uVG86KENHUG9pbnQpb2Zmc2V0OwogLSAo
Q0dQb2ludCljb250ZW50T2Zmc2V0OwpAQCAtOTcsNyArNzUsNyBAQCBzdHJ1Y3QgS2V5Ym9hcmRT
Y3JvbGxQYXJhbWV0ZXJzIHsKICAgICBpZCA8V0tLZXlib2FyZFNjcm9sbGFibGVJbnRlcm5hbD4g
X3Njcm9sbGFibGU7CiAgICAgUmV0YWluUHRyPENBRGlzcGxheUxpbms+IF9kaXNwbGF5TGluazsK
IAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4gX2N1cnJlbnRTY3Jv
bGw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpLZXlib2FyZFNjcm9sbD4gX2N1cnJlbnRT
Y3JvbGw7CiAKICAgICBCT09MIF9zY3JvbGxUcmlnZ2VyaW5nS2V5SXNQcmVzc2VkOwogCkBAIC0x
MjQsOSArMTAyLDkgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyB7CiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLS0gKGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJz
ICYpcGFyYW1ldGVycworLSAoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJz
ICYpcGFyYW1ldGVycwogewotICAgIHN0YXRpYyBjb25zdCBXZWJLaXQ6OktleWJvYXJkU2Nyb2xs
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHN0YXRpYyBjb25zdCBXZWJDb3JlOjpLZXlib2Fy
ZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0K
IApAQCAtMTM3LDQ3ICsxMTUsMzMgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyB7
CiAgICAgX3Njcm9sbGFibGUgPSBuaWw7CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUg
dW5pdFZlY3RvcihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMg
V2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2ViQ29y
ZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikg
ewotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgotICAgICAgICByZXR1
cm4geyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRvd246
Ci0gICAgICAgIHJldHVybiB7IDAsIDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpMZWZ0OgotICAgICAgICByZXR1cm4geyAtMSwgMCB9OwotICAgIGNhc2UgV2ViS2l0
OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4geyAxLCAwIH07Ci0g
ICAgfQotfQotCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0
ZVVuaXRWZWN0b3IoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CisgICAgY2FzZSBXZWJDb3Jl
OjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7IDEsIDAgfTsK
LSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgotICAgIGNhc2UgV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
OjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAotc3Rh
dGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBj
YXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRl
OjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKICAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxM
ZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVmdDsKLSAgICBjYXNlIFdl
YktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRl
OjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNj
cm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CistIChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9sbEZvckV2ZW50
Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNw
YWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDUwICsyMTksNTAgQEAgc3RhdGljIFdlYkNvcmU6OkJv
eFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAg
ICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93Ogog
ICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktp
dDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2UgS2V5
OjpVcEFycm93OgogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAgaWYg
KGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5j
cmVtZW50OjpQYWdlOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFu
dWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDsK
LSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5
RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6
OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKICAgICAgICAgY2FzZSBL
ZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAgICAgICAgICByZXR1
cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgICAgICByZXR1cm4g
V2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAgICAgICAgY2FzZSBL
ZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAg
fTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3aXRj
aCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICByZXR1
cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1cm4g
V2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtleTo6
UmlnaHRBcnJvdzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
bjo6UmlnaHQ7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpT
Y3JvbGxSaWdodDsKICAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5
OjpQYWdlVXA6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246
OlVwOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
VXA7CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQYWdl
RG93bjoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93
bjsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERv
d247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJldHVybiBzaGlmdFBy
ZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXAgOiBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBzaGlmdFByZXNzZWQgPyBXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
OjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0Rp
cmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rp
b246OlNjcm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBzY3Jv
bGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1lbnQg
aW5EaXJlY3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwgc2Ny
b2xsOworICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKICAgICBzY3JvbGwub2Zm
c2V0ID0gdW5pdFZlY3RvcihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7Ci0gICAg
c2Nyb2xsLmluY3JlbWVudCA9IGluY3JlbWVudDsKKyAgICBzY3JvbGwuZ3JhbnVsYXJpdHkgPSBp
bmNyZW1lbnQ7CiAgICAgc2Nyb2xsLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKICAgICBzY3JvbGwu
bWF4aW11bVZlbG9jaXR5ID0gc2Nyb2xsLm9mZnNldC5zY2FsZWQoc2VsZi5wYXJhbWV0ZXJzLm1h
eGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOwogCkBAIC0zMjcsNyArMjkxLDcgQEAgc3RhdGljIFdl
YkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQgPSBZRVM7CiAgICAgX2N1cnJl
bnRTY3JvbGwgPSBzY3JvbGw7CiAKLSAgICBpZiAoc2Nyb2xsLT5pbmNyZW1lbnQgPT0gV2ViS2l0
OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50KSB7CisgICAgaWYgKHNjcm9sbC0+Z3JhbnVs
YXJpdHkgPT0gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQpIHsK
ICAgICAgICAgX3ZlbG9jaXR5ID0geyB9OwogICAgICAgICBbc2VsZiBzdG9wQW5pbWF0ZWRTY3Jv
bGxdOwogICAgICAgICBbc2VsZiBzdG9wRGlzcGxheUxpbmtdOwpAQCAtMzYwLDE2ICszMjQsMTYg
QEAgc3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24pCiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBm
YXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDb3JlOjpG
bG9hdFBvaW50IGIsIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRp
YyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54
KCksIHN0ZDo6bWluKGEueSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdE
aXJlY3Rpb246OkRvd246CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9s
bERvd246CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KGEueCgpLCBzdGQ6Om1h
eChhLnkoKSwgYi55KCkpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpM
ZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgogICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChzdGQ6Om1pbihhLngoKSwgYi54KCkpLCBh
LnkoKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgogICAgICAgICByZXR1
cm4gV2ViQ29yZTo6RmxvYXRQb2ludChzdGQ6Om1heChhLngoKSwgYi54KCkpLCBhLnkoKSk7CiAg
ICAgfQogCkBAIC01NjYsNyArNTMwLDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFy
dGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBy
ZXR1cm4gW19kZWxlZ2F0ZSBpc1Njcm9sbGFibGVGb3JLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRv
cjpzZWxmXTsKIH0KIAotLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpT
Y3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbilkaXJlY3Rpb24KKy0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdl
YkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6
U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbgogewogICAgIGF1dG8gc2Nyb2xsVmlldyA9IF9zY3Jv
bGxWaWV3LmdldEF1dG9yZWxlYXNlZCgpOwogICAgIGlmICghc2Nyb2xsVmlldykKQEAgLTU3NSwx
NiArNTM5LDE4IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRp
cmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvCiAgICAgY29uc3QgQ0dGbG9hdCBk
ZWZhdWx0UGFnZVNjcm9sbEZyYWN0aW9uID0gMC44OwogICAgIGNvbnN0IENHRmxvYXQgZGVmYXVs
dExpbmVTY3JvbGxIZWlnaHQgPSA0MDsKIAotICAgIEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFs
ID0gZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0IHx8IGRpcmVj
dGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ7CisgICAgQk9PTCBkaXJl
Y3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
OjpTY3JvbGxMZWZ0IHx8IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbFJpZ2h0OwogCiAgICAgaWYgKCFfZGVsZWdhdGVSZXNwb25kc1RvRGlzdGFuY2VGb3JJbmNy
ZW1lbnQpIHsKICAgICAgICAgc3dpdGNoIChpbmNyZW1lbnQpIHsKLSAgICAgICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ6CiAgICAgICAgICAgICByZXR1cm4g
ZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCA6IHNj
cm9sbFZpZXcuY29udGVudFNpemUuaGVpZ2h0OwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpQYWdlOgorICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeVBhZ2U6CiAgICAgICAgICAgICByZXR1cm4gKGRpcmVjdGlvbklzSG9yaXpv
bnRhbCA/IHNjcm9sbFZpZXcuZnJhbWUuc2l6ZS53aWR0aCA6IHNjcm9sbFZpZXcuZnJhbWUuc2l6
ZS5oZWlnaHQpICogZGVmYXVsdFBhZ2VTY3JvbGxGcmFjdGlvbjsKLSAgICAgICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOgogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRM
aW5lU2Nyb2xsSGVpZ2h0ICogc2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IDJhYjEwODRjNWNkYzRiM2ZhOGU0ZWI3MjU1NDFiNjg2MDUwMjQ4
NGUuLjljZDMyZGY2NTZmNTczZjNhMmUzOGJiMDg5YzVjYzMwNGNkNzA4OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC00
NjMsMzEgKzQ2MywzNCBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JG
b3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIC8vIFNob3VsZCBz
dWNoIG5vbi1lZGl0aW5nIGJlaGF2aW9ycyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0b3Igb3IgRXZl
bnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoKSBwZXJoYXBzPwogICAgIAogICAg
IGJvb2wgZGlkUGVyZm9ybUFjdGlvbiA9IGZhbHNlOworICAgIAorICAgIGlmICghZnJhbWUtPnNl
dHRpbmdzKCkuZXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVk
KCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yID09ICJtb3ZlVXA6IikKKyAgICAgICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlM
aW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mUGFy
YWdyYXBoOiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKKyAgICAgICAgICAgIGRpZFBlcmZv
cm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVu
dCk7CisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICB9IGVsc2UgaWYgKHNlbGVj
dG9yID09ICJtb3ZlRG93bjoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQorICAgICAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5
UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50
OiIpIHsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1B
Y3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVu
dCk7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCisgICAgICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwg
U2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVm
dDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbExlZnQsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlUmlnaHQ6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9w
YWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAo
c2VsZWN0b3IgPT0gIm1vdmVXb3JkUmlnaHQ6IikKKyAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2UpOworICAgIH0K
IAotICAgIGlmIChzZWxlY3RvciA9PSAibW92ZVVwOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBl
bHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKLSAgICAg
ICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3Jv
bGxCeVBhZ2UpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRv
Y3VtZW50OiIpIHsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0
KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlv
biB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsK
LSAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlRG93bjoiKQotICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5l
KTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZQYXJhZ3JhcGg6IikKLSAg
ICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24s
IFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mRG9j
dW1lbnQ6IikgewotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQo
KSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rp
b24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7
Ci0gICAgfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZUxlZnQ6IikKLSAgICAgICAgZGlkUGVy
Zm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGlu
ZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQotICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xs
QnlQYWdlKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToi
KQorICAgIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNv
cmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0Zvcndh
cmQoKS5nb0JhY2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBl
bHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFn
ZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCiAg
ICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
PT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5i
YWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQgYi9XZWJLaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQx
ZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432287</attachid>
            <date>2021-06-25 13:14:06 -0700</date>
            <delta_ts>2021-06-25 14:46:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210625161405.patch</filename>
            <type>text/plain</type>
            <size>39753</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyZjFhOTYyOGYxOThj
NTc2YTA2MzFmYjg1MzU4MjZhN2I0NGNmOS4uOTczMDU1OTQ5ZmZmNzhhYWI4YWU4NWI0MGI5Njcw
MDExZjI0MGY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHlldAorCisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dW5pdFZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OlNjcm9sbERpc3RhbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvS2V5Ym9h
cmRTY3JvbGwuaDogQWRkZWQuCisKIDIwMjEtMDYtMjUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCBndWFy
ZHMgcHJvdGVjdCB1bnJlbGF0ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZjM4ZmVhNTNkMGM1OWQ0ZmEz
ZmM3OTIxN2U3MWNiMTQ0N2RlZGMxLi5mNmFmZTkwNTgxY2FjZmRlZTM3NWIyMDBhYTJlY2MwMTNm
MTAzYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA2LTE0ICBEYW5hIEVzdHJh
ICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXlib2FyZCBz
Y3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5tbToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yIHBhcmFtZXRlcnNdKToKKyAgICAgICAgKHVuaXRWZWN0b3IpOgorICAgICAgICAocGVycGVu
ZGljdWxhckFic29sdXRlVW5pdFZlY3Rvcik6CisgICAgICAgIChib3hTaWRlKToKKyAgICAgICAg
KC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6XSk6
CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBiZWdpbldpdGhFdmVudDpd
KToKKyAgICAgICAgKGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbik6CisgICAgICAgICgtW1dLS2V5
Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6aW5EaXJlY3Rpb246
XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rv
cik6CisKIDIwMjEtMDYtMjUgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBBZGQgbWlzc2luZyBtZXRob2RzIHRvIElPS2l0IGZpbHRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVy
bmFsLnlhbWwKaW5kZXggNjZlYmE3OTdiMzc1OTA0ZGJhNTBiNDFmMTc5M2MyYzYyNzY0NDg3NC4u
MGZiYjA2NTgzZGNhOWI4MWQ1NTViYTk2NTZkNTc3ZWU5MDEwMzRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAor
KysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5h
bC55YW1sCkBAIC0yMjAsNiArMjIwLDE4IEBAIEVudGVyS2V5SGludEVuYWJsZWQ6CiAgICAgV2Vi
Q29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0V2ZW50SGFuZGxlckRyaXZlblNtb290aEtl
eWJvYXJkU2Nyb2xsaW5nRW5hYmxlZDoKKyB0eXBlOiBib29sCisgaHVtYW5SZWFkYWJsZU5hbWU6
ICJFdmVudEhhbmRsZXIgZHJpdmVuIHNtb290aCBrZXlib2FyZCBzY3JvbGxpbmciCisgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIEV2ZW50SGFuZGxlciBkcml2ZW4gc21vb3RoIGtl
eWJvYXJkIHNjcm9sbGluZyIKKyBkZWZhdWx0VmFsdWU6CisgIFdlYktpdExlZ2FjeToKKyAgIGRl
ZmF1bHQ6IGZhbHNlCisgIFdlYktpdDoKKyAgIGRlZmF1bHQ6IGZhbHNlCisgIFdlYkNvcmU6Cisg
ICBkZWZhdWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2Vi
S2l0TGVnYWN5LCBzbyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJl
bHkuCiBFeHBlcmltZW50YWxQbHVnSW5TYW5kYm94UHJvZmlsZXNFbmFibGVkOgogICB0eXBlOiBi
b29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2YWRmZjBkZGI0ZDYwNmZlMTdmYzQzNzZjOGMyZTkx
ZDEzM2VkZDA2Li4xZTdhN2IyYmNiZmE2NTU3OGFkYTAzMWE5MzM0YzRmMTY1ZDczYmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTg5OCw2ICs4OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKICAgICBw
YWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlm
aWVyLmgKKyAgICBwYWdlL0tleWJvYXJkU2Nyb2xsLmgKICAgICBwYWdlL0xheW91dE1pbGVzdG9u
ZS5oCiAgICAgcGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAgIHBhZ2UvTWVkaWFDb250
cm9sc0NvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJhNWIxNzA0MmU0ODgzZGU2
NzE2NzA5ZTBiOTE1NWIwMWNlNDQxMzUuLjJlYmMyNzllNTFhYzAwOTcwN2EyYTcyY2JiNTgzZjNl
YWZjMzQ5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzExLDYgKzE3MTEsNyBAQCBwYWdlL0ZyYW1l
Vmlldy5jcHAKIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKIHBhZ2UvSGlzdG9yeS5j
cHAKIHBhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKK3BhZ2UvS2V5Ym9hcmRTY3JvbGwu
Y3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5LmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNWIwMmMyNjQ5NzE3MGE5NThj
MjQxM2JmOTdmMjIyMGNjMWY1YTkwLi41NmYzZjdkNzE1MmZmZWRhNDM4Njc4YTdkMjk0ZWJhYmIy
YTZjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NjcsNiArNjY3LDcgQEAKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFG
IC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJ
blBpY3R1cmVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdl
ck9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9
OwogCQkxREY3RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1
MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFGMDIwQUVGMjY3ODBGQ0Uw
MDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Ny
b2xsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUYzNkVBOUMxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzNkVBOUEx
RTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGNzJCRjBCMTg3RkQ0
NUMwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0MjcwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0
MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3NTZCMTFFMjJCRUVGMDA0MkM0MEQgLyog
V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTcwNjEsOCArNzA2MiwxMCBAQAogCQkxREVGMDZE
QzIzM0QyRTFDMDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkREMjMzRDJFMUMwMEVFMjI4
RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFERUYwNkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudCtQaWN0dXJlSW5Q
aWN0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiRG9jdW1lbnQrUGljdHVyZUluUGlj
dHVyZS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAyMEFFRDI2NzgwRkNF
MDAwMDgwOUEgLyogS2V5Ym9hcmRTY3JvbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gS2V5Ym9hcmRTY3JvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYz
NkVBOUExRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUIxRTIxQkExNzAwNjIx
RTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUY1MzAzOUEyNjg1NEU2NjAwMjM2MzAzIC8qIEtl
eWJvYXJkU2Nyb2xsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8q
IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxRjg3NTZCMDFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjI1MDgsNiArMjI1MTEsOCBAQAogCQkJCTBGNDcxMEQ4MURCNkZFMjIwMDJE
Q0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcCAqLywKIAkJCQkwRjQ3MTBEOTFE
QjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oICovLAogCQkJCTBG
NDcxMERBMURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbCAq
LywKKwkJCQkxRjUzMDM5QTI2ODU0RTY2MDAyMzYzMDMgLyogS2V5Ym9hcmRTY3JvbGwuY3BwICov
LAorCQkJCTFGMDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oICovLAog
CQkJCTkzMUQ3MkY1MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAqLywKIAkJ
CQlCQ0UxQzQxQTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLAogCQkJCUJDRTFD
NDE5MEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLApAQCAtMzQxNDUsNiArMzQxNTAs
NyBAQAogCQkJCUJDRUZFMUVCMERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5
MkUwIC8qIEtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFGMDIwQUVGMjY3ODBG
Q0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBE
NTkxODJEQUM4RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTdBNjNDNTFCNzQzMThGMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxN0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZDg5MjE0NDI1
MDRhNjliMzYwYzlmZDc2MWQ4OTYzOThlMmM0ODRmYy4uMjIyMzE5NDRmZjMwODU4YmUyOGQ4YTBl
MjBmZjk4N2QxZWM2Y2NjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
NjgsNiArNjgsNyBAQAogI2luY2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMuaCIKQEAgLTQyMDAsNyArNDIwMSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0
U3BhY2VFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmlldy0+bG9naWNhbFNjcm9sbChkaXJlY3Rpb24s
IFNjcm9sbEJ5UGFnZSkpCisgICAgYm9vbCBkZWZhdWx0SGFuZGxlZCA9IG1fZnJhbWUuc2V0dGlu
Z3MoKS5ldmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQoKSA/
IGhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKGV2ZW50KSA6IHZpZXctPmxvZ2ljYWxTY3JvbGwoZGly
ZWN0aW9uLCBTY3JvbGxCeVBhZ2UpOworICAgIGlmIChkZWZhdWx0SGFuZGxlZCkKICAgICAgICAg
ZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApAQCAtNDIzMiwxMSArNDIzNCwxMDIgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRCYWNrc3BhY2VFdmVudEhhbmRsZXIoS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK2Zs
b2F0IEV2ZW50SGFuZGxlcjo6c2Nyb2xsRGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byBzY3JvbGxiYXIg
PSBbJl0geworICAgICAgICBpZiAoZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
VXAgfHwgZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bikKKyAgICAgICAg
ICAgIHJldHVybiBtX2ZyYW1lLnZpZXcoKS0+dmVydGljYWxTY3JvbGxiYXIoKTsKKyAgICAgICAg
cmV0dXJuIG1fZnJhbWUudmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgfSgpOwor
ICAgIAorICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeUxpbmU6CisgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmxpbmVTdGVwKCk7
CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOgorICAgICAgICByZXR1
cm4gc2Nyb2xsYmFyLT5wYWdlU3RlcCgpOworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNj
cm9sbEJ5RG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpOwor
ICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgIHJldHVy
biBzY3JvbGxiYXItPnBpeGVsU3RlcCgpOworICAgIH0KK30KKworYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIC8v
IEZJWE1FOiBUaGlzIGxvZ2ljIGRvZXMgbm90IGFjY291bnQgZm9yIHdyaXRpbmctbW9kZS4KKwor
ICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhfdCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBB
cnJvdywgRG93bkFycm93LCBTcGFjZSB9OworCisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQu
a2V5SWRlbnRpZmllcigpID09ICJMZWZ0IikKKyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7
CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJSaWdodCIpCisgICAgICAg
IGtleSA9IEtleTo6UmlnaHRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVy
KCkgPT0gIlVwIikKKyAgICAgICAga2V5ID0gS2V5OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2
ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiRG93biIpCisgICAgICAgIGtleSA9IEtleTo6RG93bkFy
cm93OworICAgIGVsc2UgaWYgKGV2ZW50LmNoYXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBrZXkg
PSBLZXk6OlNwYWNlOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBncmFudWxhcml0eSA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNh
c2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAg
ICAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5
UGFnZSA6IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2UgS2V5
OjpVcEFycm93OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYg
KGV2ZW50Lm1ldGFLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJp
dHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAgICAg
ICAgY2FzZSBLZXk6OlNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5
OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIH07CisgICAgfSgpOworCisgICAgYXV0byBkaXJlY3Rp
b24gPSBbJl0geworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBjYXNlIEtleTo6TGVm
dEFycm93OgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDsK
KyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAg
ICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2FzZSBL
ZXk6OkRvd25BcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9s
bERvd247CisgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBldmVu
dC5zaGlmdEtleSgpID8gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVjdGlv
bjo6U2Nyb2xsRG93bjsKKyAgICAgICAgfQorICAgIH0oKTsKKworICAgIGZsb2F0IGRpc3RhbmNl
ID0gc2Nyb2xsRGlzdGFuY2UoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgCisgICAgS2V5
Ym9hcmRTY3JvbGwgc2Nyb2xsOworCisgICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRWZWN0b3JGb3JT
Y3JvbGxEaXJlY3Rpb24oZGlyZWN0aW9uKS5zY2FsZWQoZGlzdGFuY2UpOworICAgIHNjcm9sbC5n
cmFudWxhcml0eSA9IGdyYW51bGFyaXR5OworICAgIHNjcm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rp
b247CisgICAgc2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9IHNjcm9sbC5vZmZzZXQuc2NhbGVkKEtl
eWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygpLm1heGltdW1WZWxvY2l0eU11bHRp
cGxpZXIpOworCisgICAgc2Nyb2xsLmZvcmNlID0gc2Nyb2xsLm1heGltdW1WZWxvY2l0eS5zY2Fs
ZWQoS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzOjpwYXJhbWV0ZXJzKCkuc3ByaW5nTWFzcyAvIEtl
eWJvYXJkU2Nyb2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygpLnRpbWVUb01heGltdW1WZWxvY2l0
eSk7CisKKyAgICByZXR1cm4gRXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rp
b24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKK30KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1
bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiBmb2N1c0RpcmVjdGlvbiwgS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
KCkua2V5ZG93bkV2ZW50KTsKIAorICAgIGlmICghaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
Jm1fZnJhbWUpKSB7CisgICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkuZXZlbnRIYW5kbGVy
RHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBoYW5k
bGVLZXlib2FyZFNjcm9sbGluZyhldmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAoZXZlbnQuY3RybEtleSgpIHx8IGV2ZW50Lm1ldGFLZXkoKSB8fCBldmVudC5hbHRHcmFw
aEtleSgpIHx8IGV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDI0NCw5
ICs0MzM3LDYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihG
b2N1c0RpcmVjdGlvbiBmb2N1c0RpcmVjdGlvbiwgS2V5Ym8KICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoJm1fZnJh
bWUpKQotICAgICAgICByZXR1cm47Ci0KICAgICAvLyBBcnJvd3MgYW5kIG90aGVyIHBvc3NpYmxl
IGRpcmVjdGlvbmFsIG5hdmlnYXRpb24ga2V5cyBjYW4gYmUgdXNlZCBpbiBkZXNpZ24KICAgICAv
LyBtb2RlIGVkaXRpbmcuCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2Rl
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAyYjYzNTg5NjQ4NzZkMTUxYzA5
NzE4YmRlZjg5ZDhlZDQyZDE0YWVmLi5hNWFmNDA0NjE0ZTZjZjg2ZDBiYzVjYzY1MDI0NTUzMDMy
ZjhiYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKKyNpbmNsdWRlICJLZXlib2FyZFNjcm9sbC5oIgog
I2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0zNzUsNiArMzc2LDkgQEAgcHJpdmF0ZToK
ICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRy
aXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorICAgIGZs
b2F0IHNjcm9sbERpc3RhbmNlKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpOwor
ICAgIGJvb2wgaGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoS2V5Ym9hcmRFdmVudCYpOworCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzID0g
U2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcyk7CiAgICAgYm9vbCBzaG91bGRBbGxvd01vdXNlRG93
blRvU3RhcnREcmFnKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tl
eWJvYXJkU2Nyb2xsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3NzAyMDM4NmE2ZjM3YzIyNjIzMDhiZDI2OWVjZmMyNzAyNTkyMWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmNwcApA
QCAtMCwwICsxLDQzIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0
OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKy8vIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorLy8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisvLyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisvLyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisvLyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorLy8gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKy8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKy8vIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIktleWJv
YXJkU2Nyb2xsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRTaXplIHVuaXRWZWN0
b3JGb3JTY3JvbGxEaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDoK
KyAgICAgICAgcmV0dXJuIHsgMCwgLTEgfTsKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsRG93bjoKKyAgICAgICAgcmV0dXJuIHsgMCwgMSB9OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxMZWZ0OgorICAgICAgICByZXR1cm4geyAtMSwgMCB9OworICAgIGNhc2UgU2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKKyAgICAgICAgcmV0dXJuIHsgMSwgMCB9OworICAg
IH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9s
bC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1
ZDMwYTA0MTU0ZjdhZGU3MTkwOTQzNTdiMWExYTJhOWZkZjUzZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgdW5pdFZlY3Rv
ckZvclNjcm9sbERpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pOworCitzdHJ1Y3QgS2V5Ym9hcmRT
Y3JvbGwgeworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7IC8vIFBvaW50cyBwZXIgaW5jcmVtZW50Lgor
ICAgIEZsb2F0U2l6ZSBtYXhpbXVtVmVsb2NpdHk7IC8vIFBvaW50cyBwZXIgc2Vjb25kLgorICAg
IEZsb2F0U2l6ZSBmb3JjZTsKKworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5Owor
ICAgIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247Cit9OworCitzdHJ1Y3QgS2V5Ym9hcmRTY3Jv
bGxQYXJhbWV0ZXJzIHsKKyAgICBmbG9hdCBzcHJpbmdNYXNzIHsgMSB9OworICAgIGZsb2F0IHNw
cmluZ1N0aWZmbmVzcyB7IDEwOSB9OworICAgIGZsb2F0IHNwcmluZ0RhbXBpbmcgeyAyMCB9Owor
CisgICAgZmxvYXQgbWF4aW11bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1IH07CisgICAgZmxvYXQg
dGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAgZmxvYXQgcnViYmVyQmFuZEZvcmNl
IHsgNTAwMCB9OworCisgICAgc3RhdGljIGNvbnN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyYg
cGFyYW1ldGVycygpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgS2V5Ym9hcmRTY3JvbGxQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOworICAgIH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRl
ZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLjQ2N2NjNWYyMThmZTg4MzUz
NjY1ODdmZmQwNjg0NDRjNWU3OGI3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtMjksNiAr
MjksOSBAQAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKIAogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGY3NTc1ODc1MTIyMjRhZmVkZDc0ZDRkNzE4MzU5YzFkNjNkYjYx
NDYuLjBmMzgxZDU2NjU4MTNkMDRmNjAxMWE3ODY2NThmODRlZTNlNzBiMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtMTA4LDYgKzEwOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9LZXlFdmVudENvZGVzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkU2Nyb2xsLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTE2LDYgKzExNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlw
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1No
YXJlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4K
QEAgLTU5MTAsMjEgKzU5MTIsMjMgQEAgc3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZyb21G
aWVsZE5hbWUoV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgZmllbGROYW1lKQogICAgIHJldHVy
biBZRVM7CiB9CiAKLS0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5
Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDoo
V2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb24KKy0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxW
aWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0
YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGlu
RGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7Ci0gICAgQk9P
TCBkaXJlY3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdE
aXJlY3Rpb246OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpSaWdodDsKKyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CiAKICAgICBzd2l0Y2ggKGluY3JlbWVu
dCkgewotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OiB7Cisg
ICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDogewog
ICAgICAgICBDR1NpemUgZG9jdW1lbnRTaXplID0gW3NlbGYgY29udmVydFJlY3Q6c2VsZi5ib3Vu
ZHMgdG9WaWV3OnNlbGYud2ViVmlld10uc2l6ZTsKICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbklz
SG9yaXpvbnRhbCA/IGRvY3VtZW50U2l6ZS53aWR0aCA6IGRvY3VtZW50U2l6ZS5oZWlnaHQ7CiAg
ICAgfQotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6IHsKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6IHsKICAgICAgICAg
Q0dTaXplIHBhZ2VTaXplID0gW3NlbGYgY29udmVydFNpemU6Q0dTaXplTWFrZSgwLCBXZWJDb3Jl
OjpTY3JvbGxiYXI6OnBhZ2VTdGVwKF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWln
aHQoKSwgc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XTsKICAg
ICAgICAgcmV0dXJuIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA/IHBhZ2VTaXplLndpZHRoIDogcGFn
ZVNpemUuaGVpZ2h0OwogICAgIH0KLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50
OjpMaW5lOgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGlu
ZToKICAgICAgICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XS5o
ZWlnaHQ7CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhl
bDoKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4
MjRlOWNhMzM1YTI0ZTI3NWUyZDguLjJlZjkzOGVjZWJkNTI5YzVkYjRhM2Q2NWNmNTcxOGUzYjA5
NjU5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgKQEAgLTIzLDI4ICsyMywxNCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xs
VHlwZXMuaD4KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNs
YXNzIFNjcm9sbGluZ0luY3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBh
Z2UsCi0gICAgTGluZQotfTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50
OF90IHsKLSAgICBVcCwKLSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0K
IAogQGNsYXNzIFVJU2Nyb2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKQEAgLTcxLDcgKzU3LDcg
QEAgZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKIEBwcm90b2NvbCBX
S0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFs
CiAtIChCT09MKWlzU2Nyb2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3I7Ci0tIChDR0Zsb2F0KWtleWJvYXJk
U2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0
b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3Jl
bWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uOwor
LSAoQ0dGbG9hdClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjooV0tLZXlib2FyZFNjcm9sbFZp
ZXdBbmltYXRvciAqKWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYkNvcmU6OlNjcm9sbERpcmVj
dGlvbilkaXJlY3Rpb247CiAtICh2b2lkKWtleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yV2lsbFNj
cm9sbDooV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yOwogLSAodm9pZClr
ZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvckRpZEZpbmlzaFNjcm9sbGluZzooV0tLZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQppbmRleCAz
OTI3ZTJjY2QxY2ExMTViMDA2ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5Li5jODE4YTFiZDUzOTRjYWJl
OWIxYjEwOTIxMmE0YTRlNTVlN2VjYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTMzLDYg
KzMzLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FEaXNwbGF5TGluay5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29kZXNJT1Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRTY3JvbGwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVjdEVkZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJL
aXQvVUlLaXRTUEkuaD4KQEAgLTQwLDM0ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1zdHJ1Y3QgS2V5Ym9hcmRTY3JvbGwgewotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvZmZzZXQ7
IC8vIFBvaW50cyBwZXIgaW5jcmVtZW50LgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVt
VmVsb2NpdHk7IC8vIFBvaW50cyBwZXIgc2Vjb25kLgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBm
b3JjZTsKLQotICAgIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50IGluY3JlbWVudDsKLSAgICBX
ZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb247Ci19OwotCi1zdHJ1Y3QgS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzIHsKLSAgICBDR0Zsb2F0IHNwcmluZ01hc3MgeyAxIH07Ci0gICAg
Q0dGbG9hdCBzcHJpbmdTdGlmZm5lc3MgeyAxMDkgfTsKLSAgICBDR0Zsb2F0IHNwcmluZ0RhbXBp
bmcgeyAyMCB9OwotCi0gICAgQ0dGbG9hdCBtYXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyIHsgMjUg
fTsKLSAgICBDR0Zsb2F0IHRpbWVUb01heGltdW1WZWxvY2l0eSB7IDEgfTsKLQotICAgIENHRmxv
YXQgcnViYmVyQmFuZEZvcmNlIHsgNTAwMCB9OwotfTsKLQotfQogCiBAcHJvdG9jb2wgV0tLZXli
b2FyZFNjcm9sbGFibGVJbnRlcm5hbCA8TlNPYmplY3Q+CiBAcmVxdWlyZWQKIC0gKEJPT0wpaXNL
ZXlib2FyZFNjcm9sbGFibGU7Ci0tIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJL
aXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbjsKKy0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1l
bnQ6KFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbjsKIC0gKHZvaWQpc2Nyb2xsVG9Db250ZW50
T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldCBhbmltYXRlZDooQk9PTClhbmltYXRl
ZDsKIC0gKHZvaWQpc2Nyb2xsV2l0aFNjcm9sbFRvRXh0ZW50QW5pbWF0aW9uVG86KENHUG9pbnQp
b2Zmc2V0OwogLSAoQ0dQb2ludCljb250ZW50T2Zmc2V0OwpAQCAtOTcsNyArNzUsNyBAQCBzdHJ1
Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBpZCA8V0tLZXlib2FyZFNjcm9sbGFi
bGVJbnRlcm5hbD4gX3Njcm9sbGFibGU7CiAgICAgUmV0YWluUHRyPENBRGlzcGxheUxpbms+IF9k
aXNwbGF5TGluazsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4g
X2N1cnJlbnRTY3JvbGw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpLZXlib2FyZFNjcm9s
bD4gX2N1cnJlbnRTY3JvbGw7CiAKICAgICBCT09MIF9zY3JvbGxUcmlnZ2VyaW5nS2V5SXNQcmVz
c2VkOwogCkBAIC0xMjQsOSArMTAyLDkgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVy
cyB7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3Jv
bGxQYXJhbWV0ZXJzICYpcGFyYW1ldGVycworLSAoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRTY3Jv
bGxQYXJhbWV0ZXJzICYpcGFyYW1ldGVycwogewotICAgIHN0YXRpYyBjb25zdCBXZWJLaXQ6Oktl
eWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHN0YXRpYyBjb25zdCBXZWJD
b3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KIApAQCAtMTM3LDQ3ICsxMTUsMzMgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xs
UGFyYW1ldGVycyB7CiAgICAgX3Njcm9sbGFibGUgPSBuaWw7CiB9CiAKLXN0YXRpYyBXZWJDb3Jl
OjpGbG9hdFNpemUgdW5pdFZlY3RvcihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCitzdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0ZVVuaXRW
ZWN0b3IoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgot
ICAgICAgICByZXR1cm4geyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkRvd246Ci0gICAgICAgIHJldHVybiB7IDAsIDEgfTsKLSAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgotICAgICAgICByZXR1cm4geyAtMSwgMCB9OwotICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4g
eyAxLCAwIH07Ci0gICAgfQotfQotCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRp
Y3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0
aW9uKQotewotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVy
biB7IDEsIDAgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0Ogot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAg
IH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNl
IFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CiAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpCb3hTaWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBjYXNlIFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVmdDsK
LSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpCb3hTaWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2
ZW50CistIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNj
cm9sbEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQga1dlYlNwYWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDUwICsyMTksNTAgQEAgc3RhdGlj
IFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpS
aWdodEFycm93OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0
dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAg
ICAgIGNhc2UgS2V5OjpVcEFycm93OgogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAg
ICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6
U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAgICAgICAgaWYgKGNtZFBy
ZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50
OjpEb2N1bWVudDsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVu
dDo6TGluZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJp
dHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xs
R3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKICAg
ICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAg
ICAgICAgY2FzZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7Cisg
ICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGlu
ZTsKICAgICAgICAgfTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAg
ICAgICAgIHN3aXRjaCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAg
ICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAg
ICBjYXNlIEtleTo6UmlnaHRBcnJvdzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6UmlnaHQ7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKICAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAg
ICAgIGNhc2UgS2V5OjpQYWdlVXA6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxp
bmdEaXJlY3Rpb246OlVwOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVj
dGlvbjo6U2Nyb2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAgICAgICAgIGNh
c2UgS2V5OjpQYWdlRG93bjoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0Rp
cmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rp
b246OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJl
dHVybiBzaGlmdFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXAgOiBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBzaGlmdFBy
ZXNzZWQgPyBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAg
Q0dGbG9hdCBzY3JvbGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVu
dDppbmNyZW1lbnQgaW5EaXJlY3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9h
cmRTY3JvbGwgc2Nyb2xsOwotICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0VmVjdG9yKGRpcmVjdGlv
bikuc2NhbGVkKHNjcm9sbERpc3RhbmNlKTsKLSAgICBzY3JvbGwuaW5jcmVtZW50ID0gaW5jcmVt
ZW50OworICAgIFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKyAgICBzY3JvbGwub2Zm
c2V0ID0gV2ViQ29yZTo6dW5pdFZlY3RvckZvclNjcm9sbERpcmVjdGlvbihkaXJlY3Rpb24pLnNj
YWxlZChzY3JvbGxEaXN0YW5jZSk7CisgICAgc2Nyb2xsLmdyYW51bGFyaXR5ID0gaW5jcmVtZW50
OwogICAgIHNjcm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CiAgICAgc2Nyb2xsLm1heGltdW1W
ZWxvY2l0eSA9IHNjcm9sbC5vZmZzZXQuc2NhbGVkKHNlbGYucGFyYW1ldGVycy5tYXhpbXVtVmVs
b2NpdHlNdWx0aXBsaWVyKTsKIApAQCAtMzI3LDcgKzI5MSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpC
b3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAg
IF9zY3JvbGxUcmlnZ2VyaW5nS2V5SXNQcmVzc2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xs
ID0gc2Nyb2xsOwogCi0gICAgaWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xs
aW5nSW5jcmVtZW50OjpEb2N1bWVudCkgeworICAgIGlmIChzY3JvbGwtPmdyYW51bGFyaXR5ID09
IFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50KSB7CiAgICAgICAg
IF92ZWxvY2l0eSA9IHsgfTsKICAgICAgICAgW3NlbGYgc3RvcEFuaW1hdGVkU2Nyb2xsXTsKICAg
ICAgICAgW3NlbGYgc3RvcERpc3BsYXlMaW5rXTsKQEAgLTM2MCwxNiArMzI0LDE2IEBAIHN0YXRp
YyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQ
b2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBiLCBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgV2ViQ29y
ZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2lu
dCBhLCBXZWJDb3JlOjpGbG9hdFBvaW50IGIsIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Ny
b2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6
U2Nyb2xsVXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KGEueCgpLCBzdGQ6
Om1pbihhLnkoKSwgYi55KCkpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpEb3duOgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChhLngoKSwgc3RkOjptYXgoYS55KCks
IGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDoKKyAg
ICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDoKICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoc3RkOjptaW4oYS54KCksIGIueCgpKSwgYS55KCkpOwot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OkZsb2F0UG9pbnQoc3RkOjptYXgoYS54KCksIGIueCgpKSwgYS55KCkpOwogICAgIH0KIApA
QCAtNDQ2LDcgKzQxMCw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9p
bnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvCiAgICAgICAgICAgICAv
LyBUaGUgc2Nyb2xsIHZpZXcgY2Fubm90IHNjcm9sbCBpbiB0aGlzIGRpcmVjdGlvbiwgYW5kIGlz
IHJ1YmJlci1iYW5kaW5nLgogICAgICAgICAgICAgLy8gQXBwbHkgYSBjb25zdGFudCBhbmQgc2ln
bmlmaWNhbnQgZm9yY2U7IG90aGVyd2lzZSwgdGhlIGZvcmNlIGZvciBhCiAgICAgICAgICAgICAv
LyBzaW5nbGUtbGluZSBpbmNyZW1lbnQgaXMgbm90IHN0cm9uZyBlbm91Z2ggdG8gcnViYmVyLWJh
bmQgcGVyY2VwdGlibHkuCi0gICAgICAgICAgICBmb3JjZSA9IHVuaXRWZWN0b3IoZGlyZWN0aW9u
KS5zY2FsZWQoc2VsZi5wYXJhbWV0ZXJzLnJ1YmJlckJhbmRGb3JjZSk7CisgICAgICAgICAgICBm
b3JjZSA9IFdlYkNvcmU6OnVuaXRWZWN0b3JGb3JTY3JvbGxEaXJlY3Rpb24oZGlyZWN0aW9uKS5z
Y2FsZWQoc2VsZi5wYXJhbWV0ZXJzLnJ1YmJlckJhbmRGb3JjZSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIG9yIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIHZlbG9jaXR5
LCBzdG9wIGFwcGx5aW5nIGFueSBmb3JjZS4KQEAgLTU2Niw3ICs1MzAsNyBAQCBzdGF0aWMgV2Vi
Q29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBhLCBXZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Nyb2xsYWJsZUZvcktleWJv
YXJkU2Nyb2xsVmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zsb2F0KWRpc3RhbmNlRm9y
SW5jcmVtZW50OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rp
b246KFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9hdClkaXN0
YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGlu
RGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0
byBzY3JvbGxWaWV3ID0gX3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFz
Y3JvbGxWaWV3KQpAQCAtNTc1LDE2ICs1MzksMTggQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9p
bnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28K
ICAgICBjb25zdCBDR0Zsb2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAg
Y29uc3QgQ0dGbG9hdCBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBk
aXJlY3Rpb25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpS
aWdodDsKKyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFdlYkNvcmU6
OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3Bv
bmRzVG9EaXN0YW5jZUZvckluY3JlbWVudCkgewogICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkg
ewotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoK
ICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmNv
bnRlbnRTaXplLndpZHRoIDogc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6CisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToKICAgICAgICAgICAgIHJldHVy
biAoZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5mcmFtZS5zaXplLndpZHRoIDog
c2Nyb2xsVmlldy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0UGFnZVNjcm9sbEZyYWN0aW9u
OwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgorICAgICAg
ICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CiAgICAgICAg
ICAgICByZXR1cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3Lnpvb21TY2Fs
ZTsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhl
bDoKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMmFiMTA4NGM1Y2RjNGIzZmE4
ZTRlYjcyNTU0MWI2ODYwNTAyNDg0ZS4uOWNkMzJkZjY1NmY1NzNmM2EyZTM4YmIwODljNWNjMzA0
Y2Q3MDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTQ2MywzMSArNDYzLDM0IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9y
bU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtl
eWJvCiAgICAgLy8gU2hvdWxkIHN1Y2ggbm9uLWVkaXRpbmcgYmVoYXZpb3JzIGJlIGltcGxlbWVu
dGVkIGluIEVkaXRvciBvciBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcigp
IHBlcmhhcHM/CiAgICAgCiAgICAgYm9vbCBkaWRQZXJmb3JtQWN0aW9uID0gZmFsc2U7CisgICAg
CisgICAgaWYgKCFmcmFtZS0+c2V0dGluZ3MoKS5ldmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXli
b2FyZFNjcm9sbGluZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3IgPT0gIm1vdmVV
cDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCks
IFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAg
ICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6Iikgewor
ICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9s
bFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0g
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAg
ICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVEb3duOiIpCisgICAgICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlM
aW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFyYWdyYXBo
OiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0g
Im1vdmVUb0VuZE9mRG9jdW1lbnQ6IikgeworICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAg
ICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxM
ZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZUxlZnQ6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdl
LmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxl
Y3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0g
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgICAgICAgICAgZGlkUGVyZm9y
bUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUp
OworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQorICAgICAg
ICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNj
cm9sbEJ5UGFnZSk7CisgICAgfQogCi0gICAgaWYgKHNlbGVjdG9yID09ICJtb3ZlVXA6IikKLSAg
ICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBT
Y3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdP
ZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0g
Im1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgewotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQs
IFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVEb3du
OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3Jv
bGxEb3duLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9F
bmRPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlmIChzZWxlY3Rv
ciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24g
PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKLSAg
ICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0
LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlTGVm
dDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Ny
b2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdv
cmRMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJt
b3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0RW5k
T2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRS
ID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgp
LmdvRm9yd2FyZCgpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlUmlnaHQ6IikKLSAg
ICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0
LCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZFJpZ2h0
OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3Jv
bGxSaWdodCwgU2Nyb2xsQnlQYWdlKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRv
UmlnaHRFbmRPZkxpbmU6IikKICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1fdXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbiA9PSBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uOjpMVFIgPyBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCkgOiBtX3BhZ2UtPmJh
Y2tGb3J3YXJkKCkuZ29CYWNrKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432293</attachid>
            <date>2021-06-25 14:46:35 -0700</date>
            <delta_ts>2021-06-28 14:42:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210625174634.patch</filename>
            <type>text/plain</type>
            <size>40827</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyZjFhOTYyOGYxOThj
NTc2YTA2MzFmYjg1MzU4MjZhN2I0NGNmOS4uYzQzZjYzNDAyODYyM2I3OTFjNTRjN2M0OTZkZGZh
M2I1MWM1YmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHlldC4KKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHVzYWdlIG9mIHN3aXRjaCBFdmVudERyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nCisgICAg
ICAgIHRoYXQgd2hlbiBlbmFibGVkIHNlbmRzIEtleWJvYXJkRXZlbnQgdG8KKyAgICAgICAgSGFu
ZGxlS2V5Ym9hcmRTY3JvbGxpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpzY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKToKKyAgICAgICAgCisgICAgICAgIE1ha2VzIEtleWJv
YXJkU2Nyb2xsIGFuZCBjYWxscyBzY3JvbGxSZWN1cnNpdmVseS4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAg
ICAgIAorICAgICAgICBBZGRlZCB1c2FnZSBvZiBzd2l0Y2ggRXZlbnREcml2ZW5TbW9vdGhLZXli
b2FyZFNjcm9sbGluZworICAgICAgICB0aGF0IHdoZW4gZW5hYmxlZCBzZW5kcyBLZXlib2FyZEV2
ZW50IHRvCisgICAgICAgIEhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvS2V5Ym9hcmRTY3JvbGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVkLgorCiAy
MDIxLTA2LTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQgZ3VhcmRzIHByb3RlY3QgdW5yZWxhdGVkIGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZmYzOGZlYTUzZDBjNTlkNGZhM2ZjNzkyMTdlNzFjYjE0NDdkZWRjMS4u
ZGFkMTE0MTI0MDcxOGI4NjQ3MTlkYTk2OGUyZDk3YWUwZjgwYjM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wNi0xNCAgRGFuYSBFc3RyYSAgPGRlc3RyYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgTWFjT1Mga2V5Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9h
cmRTY3JvbGwgc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjY5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIEluIGFkZGl0aW9uIHRvIG5vdGVzIHVuZGVybmVhdGgsIGNoYW5nZWQg
dXNhZ2Ugb2YgV2ViS2l0OjpLZXlib2FyZFNjcm9sbCwgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1l
bnQsIGFuZCBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiB0bworICAgICAgICBXZWJDb3JlOjpL
ZXlib2FyZFNjcm9sbCwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHksIGFuZCBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb24sIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvciBwYXJhbWV0ZXJzXSk6CisgICAgICAgIAorICAgICAgICBEZWxldGVkLiBO
b3cgbGl2ZXMgaW4gV2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oLgorICAgICAgICAKKyAgICAgICAg
KHVuaXRWZWN0b3IpOgorICAgICAgICAKKyAgICAgICAgRGVsZXRlZC4gTm93IGxpdmVzIGluIFdl
YkNvcmUvS2V5Ym9hcmRTY3JvbGwuaC4KKyAgICAgICAgCisgICAgICAgIChwZXJwZW5kaWN1bGFy
QWJzb2x1dGVVbml0VmVjdG9yKToKKyAgICAgICAgKGJveFNpZGUpOgorICAgICAgICAoLVtXS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iga2V5Ym9hcmRTY3JvbGxGb3JFdmVudDpdKToKKyAgICAg
ICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJlZ2luV2l0aEV2ZW50Ol0pOgorICAg
ICAgICAoZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDppbkRpcmVjdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKToKKyAg
ICAgICAgCisgICAgICAgIEFkZGVkIHN3aXRjaCB0aGF0IHJlbW92ZXMgc2VsZWN0b3JzIHRoYXQg
YXJlIG5vdyBoYW5kbGVkIGJ5CisgICAgICAgIEV2ZW50SGFuZGxlciB3aGVuIEV2ZW50SGFuZGxl
ckRyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nCisgICAgICAgIGlzIGVuYWJsZWQuCisKIDIw
MjEtMDYtMjUgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBBZGQgbWlzc2luZyBtZXRob2RzIHRvIElPS2l0IGZpbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1Nv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
aW5kZXggNjZlYmE3OTdiMzc1OTA0ZGJhNTBiNDFmMTc5M2MyYzYyNzY0NDg3NC4uMGZiYjA2NTgz
ZGNhOWI4MWQ1NTViYTk2NTZkNTc3ZWU5MDEwMzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBA
IC0yMjAsNiArMjIwLDE4IEBAIEVudGVyS2V5SGludEVuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAg
ICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0V2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJkU2Ny
b2xsaW5nRW5hYmxlZDoKKyB0eXBlOiBib29sCisgaHVtYW5SZWFkYWJsZU5hbWU6ICJFdmVudEhh
bmRsZXIgZHJpdmVuIHNtb290aCBrZXlib2FyZCBzY3JvbGxpbmciCisgaHVtYW5SZWFkYWJsZURl
c2NyaXB0aW9uOiAiRW5hYmxlIEV2ZW50SGFuZGxlciBkcml2ZW4gc21vb3RoIGtleWJvYXJkIHNj
cm9sbGluZyIKKyBkZWZhdWx0VmFsdWU6CisgIFdlYktpdExlZ2FjeToKKyAgIGRlZmF1bHQ6IGZh
bHNlCisgIFdlYktpdDoKKyAgIGRlZmF1bHQ6IGZhbHNlCisgIFdlYkNvcmU6CisgICBkZWZhdWx0
OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2ViS2l0TGVnYWN5
LCBzbyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBFeHBl
cmltZW50YWxQbHVnSW5TYW5kYm94UHJvZmlsZXNFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCA2YWRmZjBkZGI0ZDYwNmZlMTdmYzQzNzZjOGMyZTkxZDEzM2VkZDA2
Li4xZTdhN2IyYmNiZmE2NTU3OGFkYTAzMWE5MzM0YzRmMTY1ZDczYmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTg5OCw2ICs4OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKICAgICBwYWdlL0dsb2Jh
bEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKKyAg
ICBwYWdlL0tleWJvYXJkU2Nyb2xsLmgKICAgICBwYWdlL0xheW91dE1pbGVzdG9uZS5oCiAgICAg
cGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAgIHBhZ2UvTWVkaWFDb250cm9sc0NvbnRl
eHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJhNWIxNzA0MmU0ODgzZGU2NzE2NzA5ZTBi
OTE1NWIwMWNlNDQxMzUuLjJlYmMyNzllNTFhYzAwOTcwN2EyYTcyY2JiNTgzZjNlYWZjMzQ5MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNzExLDYgKzE3MTEsNyBAQCBwYWdlL0ZyYW1lVmlldy5jcHAK
IHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKIHBhZ2UvSGlzdG9yeS5jcHAKIHBhZ2Uv
SW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKK3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwCiBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
LmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNWIwMmMyNjQ5NzE3MGE5NThjMjQxM2JmOTdm
MjIyMGNjMWY1YTkwLi41NmYzZjdkNzE1MmZmZWRhNDM4Njc4YTdkMjk0ZWJhYmIyYTZjZmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02NjcsNiArNjY3LDcgQEAKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3
RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQw
MENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5QSAv
KiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUYzNkVBOUMx
RTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzNkVBOUExRTIxQkExNzAw
NjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGNzJCRjBCMTg3RkQ0NUMwMDA5QkNC
MyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3NTZCMTFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTcwNjEsOCArNzA2MiwxMCBAQAogCQkxREVGMDZEQzIzM0QyRTFD
MDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkREMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1
bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFERUYwNkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudCtQaWN0dXJlSW5QaWN0dXJlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiRG9jdW1lbnQrUGljdHVyZUluUGljdHVyZS5pZGwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEg
LyogS2V5Ym9hcmRTY3JvbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5
Ym9hcmRTY3JvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUExRTIx
QkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUIxRTIxQkExNzAwNjIxRTI1IC8qIFdl
YkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUY1MzAzOUEyNjg1NEU2NjAwMjM2MzAzIC8qIEtleWJvYXJkU2Ny
b2xsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxRjg3NTZCMDFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjI1MDgsNiArMjI1MTEsOCBAQAogCQkJCTBGNDcxMEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcCAqLywKIAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAy
RENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oICovLAogCQkJCTBGNDcxMERBMURC
NkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbCAqLywKKwkJCQkx
RjUzMDM5QTI2ODU0RTY2MDAyMzYzMDMgLyogS2V5Ym9hcmRTY3JvbGwuY3BwICovLAorCQkJCTFG
MDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oICovLAogCQkJCTkzMUQ3
MkY1MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAqLywKIAkJCQlCQ0UxQzQx
QTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLAogCQkJCUJDRTFDNDE5MEQ5ODI5
ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLApAQCAtMzQxNDUsNiArMzQxNTAsNyBAQAogCQkJ
CUJDRUZFMUVCMERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtl
eWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5
QSAvKiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENTkxODJEQUM4
RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNTFC
NzQzMThGMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
N0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZDg5MjE0NDI1MDRhNjliMzYw
YzlmZDc2MWQ4OTYzOThlMmM0ODRmYy4uMjIyMzE5NDRmZjMwODU4YmUyOGQ4YTBlMjBmZjk4N2Qx
ZWM2Y2NjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjgsNiArNjgs
NyBAQAogI2luY2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5j
bHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIK
QEAgLTQyMDAsNyArNDIwMSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0U3BhY2VFdmVu
dEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAodmlldy0+bG9naWNhbFNjcm9sbChkaXJlY3Rpb24sIFNjcm9sbEJ5
UGFnZSkpCisgICAgYm9vbCBkZWZhdWx0SGFuZGxlZCA9IG1fZnJhbWUuc2V0dGluZ3MoKS5ldmVu
dEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQoKSA/IGhhbmRsZUtl
eWJvYXJkU2Nyb2xsaW5nKGV2ZW50KSA6IHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBT
Y3JvbGxCeVBhZ2UpOworICAgIGlmIChkZWZhdWx0SGFuZGxlZCkKICAgICAgICAgZXZlbnQuc2V0
RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApAQCAtNDIzMiwxMSArNDIzNCwxMDIgQEAgdm9pZCBFdmVu
dEhhbmRsZXI6OmRlZmF1bHRCYWNrc3BhY2VFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK2Zsb2F0IEV2ZW50
SGFuZGxlcjo6c2Nyb2xsRGlzdGFuY2UoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byBzY3JvbGxiYXIgPSBbJl0gewor
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgfHwgZGly
ZWN0aW9uID09IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bikKKyAgICAgICAgICAgIHJldHVy
biBtX2ZyYW1lLnZpZXcoKS0+dmVydGljYWxTY3JvbGxiYXIoKTsKKyAgICAgICAgcmV0dXJuIG1f
ZnJhbWUudmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgfSgpOworICAgIAorICAg
IHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFNjcm9sbEdyYW51bGFyaXR5OjpTY3Jv
bGxCeUxpbmU6CisgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmxpbmVTdGVwKCk7CisgICAgY2Fz
ZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOgorICAgICAgICByZXR1cm4gc2Nyb2xs
YmFyLT5wYWdlU3RlcCgpOworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9j
dW1lbnQ6CisgICAgICAgIHJldHVybiBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpOworICAgIGNhc2Ug
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgIHJldHVybiBzY3JvbGxi
YXItPnBpeGVsU3RlcCgpOworICAgIH0KK30KKworYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUtl
eWJvYXJkU2Nyb2xsaW5nKEtleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIC8vIEZJWE1FOiBU
aGlzIGxvZ2ljIGRvZXMgbm90IGFjY291bnQgZm9yIHdyaXRpbmctbW9kZS4KKworICAgIGVudW0g
Y2xhc3MgS2V5IDogdWludDhfdCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBBcnJvdywgRG93
bkFycm93LCBTcGFjZSB9OworCisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllcigpID09ICJMZWZ0IikKKyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJyb3c7CisgICAgZWxz
ZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJSaWdodCIpCisgICAgICAgIGtleSA9IEtl
eTo6UmlnaHRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyKCkgPT0gIlVw
IikKKyAgICAgICAga2V5ID0gS2V5OjpVcEFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIoKSA9PSAiRG93biIpCisgICAgICAgIGtleSA9IEtleTo6RG93bkFycm93OworICAg
IGVsc2UgaWYgKGV2ZW50LmNoYXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBrZXkgPSBLZXk6OlNw
YWNlOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBncmFudWxh
cml0eSA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgIGNhc2UgS2V5OjpM
ZWZ0QXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAgICAgICAgICAgcmV0
dXJuIGV2ZW50LmFsdEtleSgpID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZSA6IFNj
cm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpVcEFycm93
OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYgKGV2ZW50Lm1l
dGFLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAg
ICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAgICAgICAgY2FzZSBL
ZXk6OlNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxC
eVBhZ2U7CisgICAgICAgIH07CisgICAgfSgpOworCisgICAgYXV0byBkaXJlY3Rpb24gPSBbJl0g
eworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBjYXNlIEtleTo6TGVmdEFycm93Ogor
ICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDsKKyAgICAgICAg
Y2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9u
OjpTY3JvbGxSaWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgICAgICBy
ZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2FzZSBLZXk6OkRvd25B
cnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd247Cisg
ICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBldmVudC5zaGlmdEtl
eSgpID8gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xs
RG93bjsKKyAgICAgICAgfQorICAgIH0oKTsKKworICAgIGZsb2F0IGRpc3RhbmNlID0gc2Nyb2xs
RGlzdGFuY2UoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgCisgICAgS2V5Ym9hcmRTY3Jv
bGwgc2Nyb2xsOworCisgICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRWZWN0b3JGb3JTY3JvbGxEaXJl
Y3Rpb24oZGlyZWN0aW9uKS5zY2FsZWQoZGlzdGFuY2UpOworICAgIHNjcm9sbC5ncmFudWxhcml0
eSA9IGdyYW51bGFyaXR5OworICAgIHNjcm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CisgICAg
c2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9IHNjcm9sbC5vZmZzZXQuc2NhbGVkKEtleWJvYXJkU2Ny
b2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygpLm1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOwor
CisgICAgc2Nyb2xsLmZvcmNlID0gc2Nyb2xsLm1heGltdW1WZWxvY2l0eS5zY2FsZWQoS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzOjpwYXJhbWV0ZXJzKCkuc3ByaW5nTWFzcyAvIEtleWJvYXJkU2Ny
b2xsUGFyYW1ldGVyczo6cGFyYW1ldGVycygpLnRpbWVUb01heGltdW1WZWxvY2l0eSk7CisKKyAg
ICByZXR1cm4gRXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51
bGFyaXR5LCBudWxscHRyKTsKK30KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2
ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiBmb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50KTsKIAorICAgIGlmICghaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoJm1fZnJhbWUp
KSB7CisgICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkuZXZlbnRIYW5kbGVyRHJpdmVuU21v
b3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBoYW5kbGVLZXlib2Fy
ZFNjcm9sbGluZyhldmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoZXZl
bnQuY3RybEtleSgpIHx8IGV2ZW50Lm1ldGFLZXkoKSB8fCBldmVudC5hbHRHcmFwaEtleSgpIHx8
IGV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDI0NCw5ICs0MzM3LDYg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVj
dGlvbiBmb2N1c0RpcmVjdGlvbiwgS2V5Ym8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoJm1fZnJhbWUpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICAvLyBBcnJvd3MgYW5kIG90aGVyIHBvc3NpYmxlIGRpcmVjdGlv
bmFsIG5hdmlnYXRpb24ga2V5cyBjYW4gYmUgdXNlZCBpbiBkZXNpZ24KICAgICAvLyBtb2RlIGVk
aXRpbmcuCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAyYjYzNTg5NjQ4NzZkMTUxYzA5NzE4YmRlZjg5
ZDhlZDQyZDE0YWVmLi5hNWFmNDA0NjE0ZTZjZjg2ZDBiYzVjYzY1MDI0NTUzMDMyZjhiYjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlcXVlc3QuaCIKKyNpbmNsdWRlICJLZXlib2FyZFNjcm9sbC5oIgogI2luY2x1ZGUg
IkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0zNzUsNiArMzc2LDkgQEAgcHJpdmF0ZToKICAgICBib29s
IGhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNr
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAorICAgIGZsb2F0IHNjcm9s
bERpc3RhbmNlKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpOworICAgIGJvb2wg
aGFuZGxlS2V5Ym9hcmRTY3JvbGxpbmcoS2V5Ym9hcmRFdmVudCYpOworCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBib29sIGhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzID0gU2hvdWxkQ2hl
Y2tEcmFnSHlzdGVyZXNpcyk7CiAgICAgYm9vbCBzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnRE
cmFnKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Ny
b2xsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3NzAyMDM4NmE2ZjM3YzIyNjIzMDhiZDI2OWVjZmMyNzAyNTkyMWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmNwcApAQCAtMCwwICsx
LDQzIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKy8vIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8g
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisvLyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisvLyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorLy8gU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisvLyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorLy8gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKy8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKy8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xs
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRTaXplIHVuaXRWZWN0b3JGb3JTY3Jv
bGxEaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRp
cmVjdGlvbikgeworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDoKKyAgICAgICAg
cmV0dXJuIHsgMCwgLTEgfTsKKyAgICBjYXNlIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoK
KyAgICAgICAgcmV0dXJuIHsgMCwgMSB9OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxMZWZ0OgorICAgICAgICByZXR1cm4geyAtMSwgMCB9OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxSaWdodDoKKyAgICAgICAgcmV0dXJuIHsgMSwgMCB9OworICAgIH0KK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZDMwYTA0MTU0
ZjdhZGU3MTkwOTQzNTdiMWExYTJhOWZkZjUzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgdW5pdFZlY3RvckZvclNjcm9s
bERpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pOworCitzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGwgewor
ICAgIEZsb2F0U2l6ZSBvZmZzZXQ7IC8vIFBvaW50cyBwZXIgaW5jcmVtZW50LgorICAgIEZsb2F0
U2l6ZSBtYXhpbXVtVmVsb2NpdHk7IC8vIFBvaW50cyBwZXIgc2Vjb25kLgorICAgIEZsb2F0U2l6
ZSBmb3JjZTsKKworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5OworICAgIFNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb247Cit9OworCitzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0
ZXJzIHsKKyAgICBmbG9hdCBzcHJpbmdNYXNzIHsgMSB9OworICAgIGZsb2F0IHNwcmluZ1N0aWZm
bmVzcyB7IDEwOSB9OworICAgIGZsb2F0IHNwcmluZ0RhbXBpbmcgeyAyMCB9OworCisgICAgZmxv
YXQgbWF4aW11bVZlbG9jaXR5TXVsdGlwbGllciB7IDI1IH07CisgICAgZmxvYXQgdGltZVRvTWF4
aW11bVZlbG9jaXR5IHsgMSB9OworCisgICAgZmxvYXQgcnViYmVyQmFuZEZvcmNlIHsgNTAwMCB9
OworCisgICAgc3RhdGljIGNvbnN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyYgcGFyYW1ldGVy
cygpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOworICAgIH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZDRkOTc1YTdl
YTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLjQ2N2NjNWYyMThmZTg4MzUzNjY1ODdmZmQw
Njg0NDRjNWU3OGI3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtMjksNiArMjksOSBAQAog
I2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY3Jv
bGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGY3NTc1ODc1MTIyMjRhZmVkZDc0ZDRkNzE4MzU5YzFkNjNkYjYxNDYuLjBmMzgx
ZDU2NjU4MTNkMDRmNjAxMWE3ODY2NThmODRlZTNlNzBiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MTA4LDYgKzEwOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlFdmVu
dENvZGVzSU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkU2Nyb2xsLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTE2LDYg
KzExNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KQEAgLTU5MTAs
MjEgKzU5MTIsMjMgQEAgc3RhdGljIE5TU3RyaW5nICpjb250ZW50VHlwZUZyb21GaWVsZE5hbWUo
V2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgZmllbGROYW1lKQogICAgIHJldHVybiBZRVM7CiB9
CiAKLS0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpT
Y3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbilkaXJlY3Rpb24KKy0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0
b3I6KFdLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZvcklu
Y3JlbWVudDooV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9u
OihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7Ci0gICAgQk9PTCBkaXJlY3Rp
b25Jc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246
OkxlZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsK
KyAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CiAKICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OiB7CisgICAgY2FzZSBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDogewogICAgICAgICBD
R1NpemUgZG9jdW1lbnRTaXplID0gW3NlbGYgY29udmVydFJlY3Q6c2VsZi5ib3VuZHMgdG9WaWV3
OnNlbGYud2ViVmlld10uc2l6ZTsKICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbklzSG9yaXpvbnRh
bCA/IGRvY3VtZW50U2l6ZS53aWR0aCA6IGRvY3VtZW50U2l6ZS5oZWlnaHQ7CiAgICAgfQotICAg
IGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6IHsKKyAgICBjYXNlIFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6IHsKICAgICAgICAgQ0dTaXplIHBh
Z2VTaXplID0gW3NlbGYgY29udmVydFNpemU6Q0dTaXplTWFrZSgwLCBXZWJDb3JlOjpTY3JvbGxi
YXI6OnBhZ2VTdGVwKF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSwgc2Vs
Zi5ib3VuZHMuc2l6ZS5oZWlnaHQpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XTsKICAgICAgICAgcmV0
dXJuIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA/IHBhZ2VTaXplLndpZHRoIDogcGFnZVNpemUuaGVp
Z2h0OwogICAgIH0KLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgor
ICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZToKICAgICAg
ICAgcmV0dXJuIFtzZWxmIGNvbnZlcnRTaXplOkNHU2l6ZU1ha2UoMCwgV2ViQ29yZTo6U2Nyb2xs
YmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKSB0b1ZpZXc6c2VsZi53ZWJWaWV3XS5oZWlnaHQ7Cisg
ICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvci5oCmluZGV4IDNmZjgzYjY1NWFjYzBkZTdjYWI4MjRlOWNhMzM1
YTI0ZTI3NWUyZDguLjJlZjkzOGVjZWJkNTI5YzVkYjRhM2Q2NWNmNTcxOGUzYjA5NjU5NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmgKQEAgLTIzLDI4ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4K
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEZsb2F0UG9pbnQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIFNjcm9s
bGluZ0luY3JlbWVudCA6IHVpbnQ4X3QgewotICAgIERvY3VtZW50LAotICAgIFBhZ2UsCi0gICAg
TGluZQotfTsKLQotZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKLSAg
ICBVcCwKLSAgICBEb3duLAotICAgIExlZnQsCi0gICAgUmlnaHQKLX07Ci0KLX0KIAogQGNsYXNz
IFVJU2Nyb2xsVmlldzsKIEBjbGFzcyBXZWJFdmVudDsKQEAgLTcxLDcgKzU3LDcgQEAgZW51bSBj
bGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50OF90IHsKIEBwcm90b2NvbCBXS0tleWJvYXJk
U2Nyb2xsVmlld0FuaW1hdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCiAtIChCT09M
KWlzU2Nyb2xsYWJsZUZvcktleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJvYXJkU2Ny
b2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3I7Ci0tIChDR0Zsb2F0KWtleWJvYXJkU2Nyb2xsVmll
d0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3IgZGlzdGFu
Y2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3JlbWVudCBpbkRp
cmVjdGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uOworLSAoQ0dGbG9h
dClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjooV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRv
ciAqKWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJDb3JlOjpTY3JvbGxHcmFudWxh
cml0eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbilkaXJl
Y3Rpb247CiAtICh2b2lkKWtleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yV2lsbFNjcm9sbDooV0tL
ZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yOwogLSAodm9pZClrZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvckRpZEZpbmlzaFNjcm9sbGluZzooV0tLZXlib2FyZFNjcm9sbFZpZXdB
bmltYXRvciAqKWFuaW1hdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQppbmRleCAzOTI3ZTJjY2Qx
Y2ExMTViMDA2ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5Li5jODE4YTFiZDUzOTRjYWJlOWIxYjEwOTIx
MmE0YTRlNTVlN2VjYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FEaXNwbGF5TGluay5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
bG9hdFBvaW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29kZXNJT1MuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvS2V5Ym9hcmRTY3JvbGwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVjdEVkZ2Vz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvVUlLaXRT
UEkuaD4KQEAgLTQwLDM0ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3Qg
S2V5Ym9hcmRTY3JvbGwgewotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvZmZzZXQ7IC8vIFBvaW50
cyBwZXIgaW5jcmVtZW50LgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVmVsb2NpdHk7
IC8vIFBvaW50cyBwZXIgc2Vjb25kLgotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmb3JjZTsKLQot
ICAgIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50IGluY3JlbWVudDsKLSAgICBXZWJLaXQ6OlNj
cm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb247Ci19OwotCi1zdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQ
YXJhbWV0ZXJzIHsKLSAgICBDR0Zsb2F0IHNwcmluZ01hc3MgeyAxIH07Ci0gICAgQ0dGbG9hdCBz
cHJpbmdTdGlmZm5lc3MgeyAxMDkgfTsKLSAgICBDR0Zsb2F0IHNwcmluZ0RhbXBpbmcgeyAyMCB9
OwotCi0gICAgQ0dGbG9hdCBtYXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyIHsgMjUgfTsKLSAgICBD
R0Zsb2F0IHRpbWVUb01heGltdW1WZWxvY2l0eSB7IDEgfTsKLQotICAgIENHRmxvYXQgcnViYmVy
QmFuZEZvcmNlIHsgNTAwMCB9OwotfTsKLQotfQogCiBAcHJvdG9jb2wgV0tLZXlib2FyZFNjcm9s
bGFibGVJbnRlcm5hbCA8TlNPYmplY3Q+CiBAcmVxdWlyZWQKIC0gKEJPT0wpaXNLZXlib2FyZFNj
cm9sbGFibGU7Ci0tIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9s
bGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uKWRpcmVjdGlvbjsKKy0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uKWRpcmVjdGlvbjsKIC0gKHZvaWQpc2Nyb2xsVG9Db250ZW50T2Zmc2V0OihX
ZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldCBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKIC0gKHZv
aWQpc2Nyb2xsV2l0aFNjcm9sbFRvRXh0ZW50QW5pbWF0aW9uVG86KENHUG9pbnQpb2Zmc2V0Owog
LSAoQ0dQb2ludCljb250ZW50T2Zmc2V0OwpAQCAtOTcsNyArNzUsNyBAQCBzdHJ1Y3QgS2V5Ym9h
cmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICBpZCA8V0tLZXlib2FyZFNjcm9sbGFibGVJbnRlcm5h
bD4gX3Njcm9sbGFibGU7CiAgICAgUmV0YWluUHRyPENBRGlzcGxheUxpbms+IF9kaXNwbGF5TGlu
azsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4gX2N1cnJlbnRT
Y3JvbGw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpLZXlib2FyZFNjcm9sbD4gX2N1cnJl
bnRTY3JvbGw7CiAKICAgICBCT09MIF9zY3JvbGxUcmlnZ2VyaW5nS2V5SXNQcmVzc2VkOwogCkBA
IC0xMjQsOSArMTAyLDkgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyB7CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKLS0gKGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0
ZXJzICYpcGFyYW1ldGVycworLSAoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGxQYXJhbWV0
ZXJzICYpcGFyYW1ldGVycwogewotICAgIHN0YXRpYyBjb25zdCBXZWJLaXQ6OktleWJvYXJkU2Ny
b2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHN0YXRpYyBjb25zdCBXZWJDb3JlOjpLZXli
b2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICByZXR1cm4gcGFyYW1ldGVyczsK
IH0KIApAQCAtMTM3LDQ3ICsxMTUsMzMgQEAgc3RydWN0IEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVy
cyB7CiAgICAgX3Njcm9sbGFibGUgPSBuaWw7CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpGbG9hdFNp
emUgdW5pdFZlY3RvcihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0
aWMgV2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlv
bikgewotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgotICAgICAgICBy
ZXR1cm4geyAwLCAtMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkRv
d246Ci0gICAgICAgIHJldHVybiB7IDAsIDEgfTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5n
RGlyZWN0aW9uOjpMZWZ0OgotICAgICAgICByZXR1cm4geyAtMSwgMCB9OwotICAgIGNhc2UgV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4geyAxLCAwIH07
Ci0gICAgfQotfQotCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNv
bHV0ZVVuaXRWZWN0b3IoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQotewot
ICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVj
dGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAg
ICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CisgICAgY2FzZSBXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiB7IDEsIDAg
fTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0OgotICAgIGNhc2Ug
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwogICAgIH0KIH0KIAot
c3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNvcmU6
OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hT
aWRlOjpUb3A7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKKyAg
ICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93bjoKICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkJveFNpZGU6OkJvdHRvbTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5n
RGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxMZWZ0OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Qm94U2lkZTo6TGVmdDsKLSAgICBjYXNl
IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hT
aWRlOjpSaWdodDsKICAgICB9CiB9CiAKLS0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpLZXlib2Fy
ZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CistIChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPilrZXlib2FyZFNjcm9sbEZvckV2
ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dl
YlNwYWNlS2V5ID0gMHgyMDsKIApAQCAtMjU1LDUwICsyMTksNTAgQEAgc3RhdGljIFdlYkNvcmU6
OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAg
ICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93
OgogICAgICAgICAgICAgaWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdl
YktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOwotICAgICAgICAgICAgcmV0dXJuIFdlYktp
dDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOworICAgICAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CiAgICAgICAgIGNhc2Ug
S2V5OjpVcEFycm93OgogICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgogICAgICAgICAgICAg
aWYgKGFsdFByZXNzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5n
SW5jcmVtZW50OjpQYWdlOworICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAgICAgICAgaWYgKGNtZFByZXNzZWQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVu
dDsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJp
dHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKICAgICAgICAgY2Fz
ZSBLZXk6OlBhZ2VEb3duOgogICAgICAgICBjYXNlIEtleTo6U3BhY2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7CisgICAgICAgICAgICByZXR1
cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTsKICAgICAgICAgY2Fz
ZSBLZXk6Ok90aGVyOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAg
ICAgfTsKICAgICB9KCk7CiAKICAgICBhdXRvIGRpcmVjdGlvbiA9IF4oKSB7CiAgICAgICAgIHN3
aXRjaCAoa2V5KSB7CiAgICAgICAgIGNhc2UgS2V5OjpMZWZ0QXJyb3c6Ci0gICAgICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgICAgICByZXR1
cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0OwogICAgICAgICBjYXNlIEtl
eTo6UmlnaHRBcnJvdzoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVj
dGlvbjo6UmlnaHQ7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
OjpTY3JvbGxSaWdodDsKICAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CiAgICAgICAgIGNhc2Ug
S2V5OjpQYWdlVXA6Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b246OlVwOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Ny
b2xsVXA7CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpQ
YWdlRG93bjoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
RG93bjsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9s
bERvd247CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJldHVybiBzaGlm
dFByZXNzZWQgPyBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXAgOiBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBzaGlmdFByZXNzZWQgPyBX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwIDogV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uOjpTY3JvbGxEb3duOwogICAgICAgICBjYXNlIEtleTo6T3RoZXI6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbERvd247CiAgICAgICAgIH07CiAgICAgfSgpOwogCiAgICAgQ0dGbG9hdCBz
Y3JvbGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvckluY3JlbWVudDppbmNyZW1l
bnQgaW5EaXJlY3Rpb246ZGlyZWN0aW9uXTsKIAotICAgIFdlYktpdDo6S2V5Ym9hcmRTY3JvbGwg
c2Nyb2xsOwotICAgIHNjcm9sbC5vZmZzZXQgPSB1bml0VmVjdG9yKGRpcmVjdGlvbikuc2NhbGVk
KHNjcm9sbERpc3RhbmNlKTsKLSAgICBzY3JvbGwuaW5jcmVtZW50ID0gaW5jcmVtZW50OworICAg
IFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKKyAgICBzY3JvbGwub2Zmc2V0ID0gV2Vi
Q29yZTo6dW5pdFZlY3RvckZvclNjcm9sbERpcmVjdGlvbihkaXJlY3Rpb24pLnNjYWxlZChzY3Jv
bGxEaXN0YW5jZSk7CisgICAgc2Nyb2xsLmdyYW51bGFyaXR5ID0gaW5jcmVtZW50OwogICAgIHNj
cm9sbC5kaXJlY3Rpb24gPSBkaXJlY3Rpb247CiAgICAgc2Nyb2xsLm1heGltdW1WZWxvY2l0eSA9
IHNjcm9sbC5vZmZzZXQuc2NhbGVkKHNlbGYucGFyYW1ldGVycy5tYXhpbXVtVmVsb2NpdHlNdWx0
aXBsaWVyKTsKIApAQCAtMzI3LDcgKzI5MSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJv
eFNpZGUoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIF9zY3JvbGxU
cmlnZ2VyaW5nS2V5SXNQcmVzc2VkID0gWUVTOwogICAgIF9jdXJyZW50U2Nyb2xsID0gc2Nyb2xs
OwogCi0gICAgaWYgKHNjcm9sbC0+aW5jcmVtZW50ID09IFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVt
ZW50OjpEb2N1bWVudCkgeworICAgIGlmIChzY3JvbGwtPmdyYW51bGFyaXR5ID09IFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50KSB7CiAgICAgICAgIF92ZWxvY2l0
eSA9IHsgfTsKICAgICAgICAgW3NlbGYgc3RvcEFuaW1hdGVkU2Nyb2xsXTsKICAgICAgICAgW3Nl
bGYgc3RvcERpc3BsYXlMaW5rXTsKQEAgLTM2MCwxNiArMzI0LDE2IEBAIHN0YXRpYyBXZWJDb3Jl
OjpCb3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgIH0KIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGly
ZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgV2ViQ29yZTo6RmxvYXRQ
b2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJD
b3JlOjpGbG9hdFBvaW50IGIsIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpVcDoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXA6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KGEueCgpLCBzdGQ6Om1pbihhLnko
KSwgYi55KCkpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgor
ICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgogICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChhLngoKSwgc3RkOjptYXgoYS55KCksIGIueSgpKSk7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDoKKyAgICBjYXNlIFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdDoKICAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OkZsb2F0UG9pbnQoc3RkOjptaW4oYS54KCksIGIueCgpKSwgYS55KCkpOwotICAgIGNhc2Ug
V2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0
UG9pbnQoc3RkOjptYXgoYS54KCksIGIueCgpKSwgYS55KCkpOwogICAgIH0KIApAQCAtNDQ2LDcg
KzQxMCw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVj
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvCiAgICAgICAgICAgICAvLyBUaGUgc2Ny
b2xsIHZpZXcgY2Fubm90IHNjcm9sbCBpbiB0aGlzIGRpcmVjdGlvbiwgYW5kIGlzIHJ1YmJlci1i
YW5kaW5nLgogICAgICAgICAgICAgLy8gQXBwbHkgYSBjb25zdGFudCBhbmQgc2lnbmlmaWNhbnQg
Zm9yY2U7IG90aGVyd2lzZSwgdGhlIGZvcmNlIGZvciBhCiAgICAgICAgICAgICAvLyBzaW5nbGUt
bGluZSBpbmNyZW1lbnQgaXMgbm90IHN0cm9uZyBlbm91Z2ggdG8gcnViYmVyLWJhbmQgcGVyY2Vw
dGlibHkuCi0gICAgICAgICAgICBmb3JjZSA9IHVuaXRWZWN0b3IoZGlyZWN0aW9uKS5zY2FsZWQo
c2VsZi5wYXJhbWV0ZXJzLnJ1YmJlckJhbmRGb3JjZSk7CisgICAgICAgICAgICBmb3JjZSA9IFdl
YkNvcmU6OnVuaXRWZWN0b3JGb3JTY3JvbGxEaXJlY3Rpb24oZGlyZWN0aW9uKS5zY2FsZWQoc2Vs
Zi5wYXJhbWV0ZXJzLnJ1YmJlckJhbmRGb3JjZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJ
ZiB3ZSd2ZSByZWFjaGVkIG9yIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIHZlbG9jaXR5LCBzdG9wIGFw
cGx5aW5nIGFueSBmb3JjZS4KQEAgLTU2Niw3ICs1MzAsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Rmxv
YXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBX
ZWJDbwogICAgIHJldHVybiBbX2RlbGVnYXRlIGlzU2Nyb2xsYWJsZUZvcktleWJvYXJkU2Nyb2xs
Vmlld0FuaW1hdG9yOnNlbGZdOwogfQogCi0tIChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50
OihXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktp
dDo6U2Nyb2xsaW5nRGlyZWN0aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9hdClkaXN0YW5jZUZvcklu
Y3JlbWVudDooV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9u
OihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgYXV0byBzY3JvbGxW
aWV3ID0gX3Njcm9sbFZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgaWYgKCFzY3JvbGxWaWV3
KQpAQCAtNTc1LDE2ICs1MzksMTggQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhl
c3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICBjb25z
dCBDR0Zsb2F0IGRlZmF1bHRQYWdlU2Nyb2xsRnJhY3Rpb24gPSAwLjg7CiAgICAgY29uc3QgQ0dG
bG9hdCBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCA9IDQwOwogCi0gICAgQk9PTCBkaXJlY3Rpb25J
c0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246Okxl
ZnQgfHwgZGlyZWN0aW9uID09IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDsKKyAg
ICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbExlZnQgfHwgZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbjo6U2Nyb2xsUmlnaHQ7CiAKICAgICBpZiAoIV9kZWxlZ2F0ZVJlc3BvbmRzVG9EaXN0
YW5jZUZvckluY3JlbWVudCkgewogICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAgICAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpEb2N1bWVudDoKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAg
ICAgIHJldHVybiBkaXJlY3Rpb25Jc0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmNvbnRlbnRTaXpl
LndpZHRoIDogc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQ7Ci0gICAgICAgIGNhc2UgV2Vi
S2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZToKICAgICAgICAgICAgIHJldHVybiAoZGlyZWN0
aW9uSXNIb3Jpem9udGFsID8gc2Nyb2xsVmlldy5mcmFtZS5zaXplLndpZHRoIDogc2Nyb2xsVmll
dy5mcmFtZS5zaXplLmhlaWdodCkgKiBkZWZhdWx0UGFnZVNjcm9sbEZyYWN0aW9uOwotICAgICAg
ICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOgorICAgICAgICBjYXNlIFdl
YkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU6CiAgICAgICAgICAgICByZXR1
cm4gZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgKiBzY3JvbGxWaWV3Lnpvb21TY2FsZTsKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMmFiMTA4NGM1Y2RjNGIzZmE4ZTRlYjcyNTU0
MWI2ODYwNTAyNDg0ZS4uOWNkMzJkZjY1NmY1NzNmM2EyZTM4YmIwODljNWNjMzA0Y2Q3MDg4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTQ2MywzMSArNDYzLDM0IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRp
bmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtleWJvCiAgICAg
Ly8gU2hvdWxkIHN1Y2ggbm9uLWVkaXRpbmcgYmVoYXZpb3JzIGJlIGltcGxlbWVudGVkIGluIEVk
aXRvciBvciBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcigpIHBlcmhhcHM/
CiAgICAgCiAgICAgYm9vbCBkaWRQZXJmb3JtQWN0aW9uID0gZmFsc2U7CisgICAgCisgICAgaWYg
KCFmcmFtZS0+c2V0dGluZ3MoKS5ldmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9s
bGluZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3IgPT0gIm1vdmVVcDoiKQorICAg
ICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVw
LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGg6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgZWxzZSBp
ZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgeworICAgICAgICAg
ICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3Jv
bGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgIH0gZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVEb3duOiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKKyAg
ICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mUGFyYWdyYXBoOiIpCisgICAg
ICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93
biwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0Vu
ZE9mRG9jdW1lbnQ6IikgeworICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICAgICAg
ZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3Jv
bGxCeURvY3VtZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZUxlZnQ6
IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBT
Y3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZVdvcmRMZWZ0OiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1f
cGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgZWxzZSBpZiAo
c2VsZWN0b3IgPT0gIm1vdmVSaWdodDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUpOworICAgICAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQorICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFn
ZSk7CisgICAgfQogCi0gICAgaWYgKHNlbGVjdG9yID09ICJtb3ZlVXA6IikKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxp
bmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Ny
b2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnQ6IikgewotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5
RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVEb3duOiIpCi0gICAg
ICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBT
Y3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFn
cmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92
ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxC
eURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlTGVmdDoiKQotICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwg
U2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIp
Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxM
ZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0
RW5kT2ZMaW5lOiIpCisgICAgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIp
CiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdl
LT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2Fy
ZCgpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlUmlnaHQ6IikKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxC
eUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZFJpZ2h0OiIpCi0gICAg
ICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwg
U2Nyb2xsQnlQYWdlKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvUmlnaHRFbmRP
ZkxpbmU6IikKICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1fdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiA9PSBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIg
PyBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCkgOiBtX3BhZ2UtPmJhY2tGb3J3YXJk
KCkuZ29CYWNrKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432423</attachid>
            <date>2021-06-28 14:42:31 -0700</date>
            <delta_ts>2021-06-28 14:55:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210628174230.patch</filename>
            <type>text/plain</type>
            <size>40393</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyZjFhOTYyOGYxOThj
NTc2YTA2MzFmYjg1MzU4MjZhN2I0NGNmOS4uYzQzZjYzNDAyODYyM2I3OTFjNTRjN2M0OTZkZGZh
M2I1MWM1YmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHlldC4KKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHVzYWdlIG9mIHN3aXRjaCBFdmVudERyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nCisgICAg
ICAgIHRoYXQgd2hlbiBlbmFibGVkIHNlbmRzIEtleWJvYXJkRXZlbnQgdG8KKyAgICAgICAgSGFu
ZGxlS2V5Ym9hcmRTY3JvbGxpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpzY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKToKKyAgICAgICAgCisgICAgICAgIE1ha2VzIEtleWJv
YXJkU2Nyb2xsIGFuZCBjYWxscyBzY3JvbGxSZWN1cnNpdmVseS4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAg
ICAgIAorICAgICAgICBBZGRlZCB1c2FnZSBvZiBzd2l0Y2ggRXZlbnREcml2ZW5TbW9vdGhLZXli
b2FyZFNjcm9sbGluZworICAgICAgICB0aGF0IHdoZW4gZW5hYmxlZCBzZW5kcyBLZXlib2FyZEV2
ZW50IHRvCisgICAgICAgIEhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvS2V5Ym9hcmRTY3JvbGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVkLgorCiAy
MDIxLTA2LTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQgZ3VhcmRzIHByb3RlY3QgdW5yZWxhdGVkIGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZmYzOGZlYTUzZDBjNTlkNGZhM2ZjNzkyMTdlNzFjYjE0NDdkZWRjMS4u
ZGFkMTE0MTI0MDcxOGI4NjQ3MTlkYTk2OGUyZDk3YWUwZjgwYjM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wNi0xNCAgRGFuYSBFc3RyYSAgPGRlc3RyYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgTWFjT1Mga2V5Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9h
cmRTY3JvbGwgc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjY5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIEluIGFkZGl0aW9uIHRvIG5vdGVzIHVuZGVybmVhdGgsIGNoYW5nZWQg
dXNhZ2Ugb2YgV2ViS2l0OjpLZXlib2FyZFNjcm9sbCwgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1l
bnQsIGFuZCBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiB0bworICAgICAgICBXZWJDb3JlOjpL
ZXlib2FyZFNjcm9sbCwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHksIGFuZCBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb24sIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvciBwYXJhbWV0ZXJzXSk6CisgICAgICAgIAorICAgICAgICBEZWxldGVkLiBO
b3cgbGl2ZXMgaW4gV2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oLgorICAgICAgICAKKyAgICAgICAg
KHVuaXRWZWN0b3IpOgorICAgICAgICAKKyAgICAgICAgRGVsZXRlZC4gTm93IGxpdmVzIGluIFdl
YkNvcmUvS2V5Ym9hcmRTY3JvbGwuaC4KKyAgICAgICAgCisgICAgICAgIChwZXJwZW5kaWN1bGFy
QWJzb2x1dGVVbml0VmVjdG9yKToKKyAgICAgICAgKGJveFNpZGUpOgorICAgICAgICAoLVtXS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iga2V5Ym9hcmRTY3JvbGxGb3JFdmVudDpdKToKKyAgICAg
ICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJlZ2luV2l0aEV2ZW50Ol0pOgorICAg
ICAgICAoZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDppbkRpcmVjdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKToKKyAg
ICAgICAgCisgICAgICAgIEFkZGVkIHN3aXRjaCB0aGF0IHJlbW92ZXMgc2VsZWN0b3JzIHRoYXQg
YXJlIG5vdyBoYW5kbGVkIGJ5CisgICAgICAgIEV2ZW50SGFuZGxlciB3aGVuIEV2ZW50SGFuZGxl
ckRyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nCisgICAgICAgIGlzIGVuYWJsZWQuCisKIDIw
MjEtMDYtMjUgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBBZGQgbWlzc2luZyBtZXRob2RzIHRvIElPS2l0IGZpbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1Nv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
aW5kZXggNjZlYmE3OTdiMzc1OTA0ZGJhNTBiNDFmMTc5M2MyYzYyNzY0NDg3NC4uMGZiYjA2NTgz
ZGNhOWI4MWQ1NTViYTk2NTZkNTc3ZWU5MDEwMzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBA
IC0yMjAsNiArMjIwLDE4IEBAIEVudGVyS2V5SGludEVuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAg
ICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0V2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJkU2Ny
b2xsaW5nRW5hYmxlZDoKKyB0eXBlOiBib29sCisgaHVtYW5SZWFkYWJsZU5hbWU6ICJFdmVudEhh
bmRsZXIgZHJpdmVuIHNtb290aCBrZXlib2FyZCBzY3JvbGxpbmciCisgaHVtYW5SZWFkYWJsZURl
c2NyaXB0aW9uOiAiRW5hYmxlIEV2ZW50SGFuZGxlciBkcml2ZW4gc21vb3RoIGtleWJvYXJkIHNj
cm9sbGluZyIKKyBkZWZhdWx0VmFsdWU6CisgIFdlYktpdExlZ2FjeToKKyAgIGRlZmF1bHQ6IGZh
bHNlCisgIFdlYktpdDoKKyAgIGRlZmF1bHQ6IGZhbHNlCisgIFdlYkNvcmU6CisgICBkZWZhdWx0
OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2ViS2l0TGVnYWN5
LCBzbyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBFeHBl
cmltZW50YWxQbHVnSW5TYW5kYm94UHJvZmlsZXNFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCA2YWRmZjBkZGI0ZDYwNmZlMTdmYzQzNzZjOGMyZTkxZDEzM2VkZDA2
Li4xZTdhN2IyYmNiZmE2NTU3OGFkYTAzMWE5MzM0YzRmMTY1ZDczYmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTg5OCw2ICs4OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKICAgICBwYWdlL0dsb2Jh
bEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKKyAg
ICBwYWdlL0tleWJvYXJkU2Nyb2xsLmgKICAgICBwYWdlL0xheW91dE1pbGVzdG9uZS5oCiAgICAg
cGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAgIHBhZ2UvTWVkaWFDb250cm9sc0NvbnRl
eHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJhNWIxNzA0MmU0ODgzZGU2NzE2NzA5ZTBi
OTE1NWIwMWNlNDQxMzUuLjJlYmMyNzllNTFhYzAwOTcwN2EyYTcyY2JiNTgzZjNlYWZjMzQ5MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNzExLDYgKzE3MTEsNyBAQCBwYWdlL0ZyYW1lVmlldy5jcHAK
IHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKIHBhZ2UvSGlzdG9yeS5jcHAKIHBhZ2Uv
SW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKK3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwCiBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
LmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNWIwMmMyNjQ5NzE3MGE5NThjMjQxM2JmOTdm
MjIyMGNjMWY1YTkwLi41NmYzZjdkNzE1MmZmZWRhNDM4Njc4YTdkMjk0ZWJhYmIyYTZjZmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02NjcsNiArNjY3LDcgQEAKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3
RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQw
MENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5QSAv
KiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUYzNkVBOUMx
RTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzNkVBOUExRTIxQkExNzAw
NjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGNzJCRjBCMTg3RkQ0NUMwMDA5QkNC
MyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3NTZCMTFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTcwNjEsOCArNzA2MiwxMCBAQAogCQkxREVGMDZEQzIzM0QyRTFD
MDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkREMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1
bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFERUYwNkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudCtQaWN0dXJlSW5QaWN0dXJlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiRG9jdW1lbnQrUGljdHVyZUluUGljdHVyZS5pZGwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEg
LyogS2V5Ym9hcmRTY3JvbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5
Ym9hcmRTY3JvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUExRTIx
QkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUIxRTIxQkExNzAwNjIxRTI1IC8qIFdl
YkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUY1MzAzOUEyNjg1NEU2NjAwMjM2MzAzIC8qIEtleWJvYXJkU2Ny
b2xsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxRjg3NTZCMDFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjI1MDgsNiArMjI1MTEsOCBAQAogCQkJCTBGNDcxMEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcCAqLywKIAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAy
RENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oICovLAogCQkJCTBGNDcxMERBMURC
NkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbCAqLywKKwkJCQkx
RjUzMDM5QTI2ODU0RTY2MDAyMzYzMDMgLyogS2V5Ym9hcmRTY3JvbGwuY3BwICovLAorCQkJCTFG
MDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oICovLAogCQkJCTkzMUQ3
MkY1MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAqLywKIAkJCQlCQ0UxQzQx
QTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLAogCQkJCUJDRTFDNDE5MEQ5ODI5
ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLApAQCAtMzQxNDUsNiArMzQxNTAsNyBAQAogCQkJ
CUJDRUZFMUVCMERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtl
eWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5
QSAvKiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENTkxODJEQUM4
RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNTFC
NzQzMThGMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
N0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZDg5MjE0NDI1MDRhNjliMzYw
YzlmZDc2MWQ4OTYzOThlMmM0ODRmYy4uMTY4MzdlMTE1MjQ0MjBiZGIwMzY0ZmVlMzNkM2YwZGI3
ZDQ1MDVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjgsNiArNjgs
NyBAQAogI2luY2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5j
bHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIK
QEAgLTQyMDAsNyArNDIwMSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0U3BhY2VFdmVu
dEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAodmlldy0+bG9naWNhbFNjcm9sbChkaXJlY3Rpb24sIFNjcm9sbEJ5
UGFnZSkpCisgICAgYm9vbCBkZWZhdWx0SGFuZGxlZCA9IG1fZnJhbWUuc2V0dGluZ3MoKS5ldmVu
dEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQoKSA/IGhhbmRsZUtl
eWJvYXJkU2Nyb2xsaW5nKGV2ZW50KSA6IHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBT
Y3JvbGxCeVBhZ2UpOworICAgIGlmIChkZWZhdWx0SGFuZGxlZCkKICAgICAgICAgZXZlbnQuc2V0
RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApAQCAtNDIzMiwxMSArNDIzNCw5MSBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVu
dCkKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAorZmxvYXQgRXZlbnRI
YW5kbGVyOjpzY3JvbGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSkKK3sKKyAgICBhdXRvIHNjcm9sbGJhciA9IFsmXSB7Cisg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCB8fCBkaXJl
Y3Rpb24gPT0gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duKQorICAgICAgICAgICAgcmV0dXJu
IG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgICAgICByZXR1cm4gbV9m
cmFtZS52aWV3KCktPmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICB9KCk7CisgICAgCisgICAg
c3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5TGluZToKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+bGluZVN0ZXAoKTsKKyAgICBjYXNl
IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6CisgICAgICAgIHJldHVybiBzY3JvbGxi
YXItPnBhZ2VTdGVwKCk7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1
bWVudDoKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgY2FzZSBT
Y3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+cGl4ZWxTdGVwKCk7CisgICAgfQorfQorCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5
Ym9hcmRTY3JvbGxpbmcoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgLy8gRklYTUUgKGJ1
ZyAyMjc0NTkpOiBUaGlzIGxvZ2ljIGRvZXMgbm90IGFjY291bnQgZm9yIHdyaXRpbmctbW9kZS4K
KworICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhfdCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywg
VXBBcnJvdywgRG93bkFycm93LCBTcGFjZSB9OworCisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZl
bnQua2V5SWRlbnRpZmllcigpID09ICJMZWZ0IikKKyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJy
b3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJSaWdodCIpCisgICAg
ICAgIGtleSA9IEtleTo6UmlnaHRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlm
aWVyKCkgPT0gIlVwIikKKyAgICAgICAga2V5ID0gS2V5OjpVcEFycm93OworICAgIGVsc2UgaWYg
KGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiRG93biIpCisgICAgICAgIGtleSA9IEtleTo6RG93
bkFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmNoYXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBr
ZXkgPSBLZXk6OlNwYWNlOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBncmFudWxhcml0eSA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAg
IGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAg
ICAgICAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5UGFnZSA6IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2Ug
S2V5OjpVcEFycm93OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAg
aWYgKGV2ZW50Lm1ldGFLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVs
YXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7
CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAg
ICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIH07CisgICAgfSgpOworCisgICAgYXV0byBkaXJl
Y3Rpb24gPSBbJl0geworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBjYXNlIEtleTo6
TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVm
dDsKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2Fz
ZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbERvd247CisgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBl
dmVudC5zaGlmdEtleSgpID8gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVj
dGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAgfQorICAgIH0oKTsKKworICAgIHJldHVybiBFdmVu
dEhhbmRsZXI6OnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG51bGxw
dHIpOworfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZv
Y3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAg
ICBBU1NFUlQoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpOwogCisg
ICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpIHsKKyAgICAgICAg
aWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5ldmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNj
cm9sbGluZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKGV2
ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChldmVudC5jdHJsS2V5KCkg
fHwgZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkgfHwgZXZlbnQuc2hpZnRL
ZXkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjQ0LDkgKzQzMjYsNiBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGly
ZWN0aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUgZGlyZWN0aW9uYWwgbmF2aWdhdGlv
biBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8vIG1vZGUgZWRpdGluZy4KICAgICBp
ZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCmluZGV4IDJiNjM1ODk2NDg3NmQxNTFjMDk3MThiZGVmODlkOGVkNDJkMTRhZWYu
LmE1YWY0MDQ2MTRlNmNmODZkMGJjNWNjNjUwMjQ1NTMwMzJmOGJiNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYWdBY3Rpb25z
LmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVz
dC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKQEAgLTM3NSw2ICszNzYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlTW91c2VQ
cmVzc0V2ZW50RG91YmxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYp
OwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCisgICAgZmxvYXQgc2Nyb2xsRGlzdGFuY2UoU2Ny
b2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CisgICAgYm9vbCBoYW5kbGVLZXlib2Fy
ZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50Jik7CisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIGJvb2wgaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMgPSBTaG91bGRDaGVja0RyYWdIeXN0ZXJl
c2lzKTsKICAgICBib29sIHNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWcoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE1NzEyZTJm
YjJiMmRhNGU0N2E4MDdjN2NlMDdkYjE3YTBkMjU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGbG9hdFNpemUgdW5pdFZlY3RvckZvclNjcm9sbERp
cmVjdGlvbihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgorICAgICAgICByZXR1
cm4geyAwLCAtMSB9OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgorICAg
ICAgICByZXR1cm4geyAwLCAxIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExl
ZnQ6CisgICAgICAgIHJldHVybiB7IC0xLCAwIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbFJpZ2h0OgorICAgICAgICByZXR1cm4geyAxLCAwIH07CisgICAgfQorfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkMzBhMDQxNTRmN2Fk
ZTcxOTA5NDM1N2IxYTFhMmE5ZmRmNTNkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSB1bml0VmVjdG9yRm9yU2Nyb2xsRGly
ZWN0aW9uKFNjcm9sbERpcmVjdGlvbik7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAg
RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgRmxvYXRTaXpl
IG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisgICAgRmxvYXRTaXplIGZv
cmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CisgICAgU2Nyb2xsRGly
ZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
eworICAgIGZsb2F0IHNwcmluZ01hc3MgeyAxIH07CisgICAgZmxvYXQgc3ByaW5nU3RpZmZuZXNz
IHsgMTA5IH07CisgICAgZmxvYXQgc3ByaW5nRGFtcGluZyB7IDIwIH07CisKKyAgICBmbG9hdCBt
YXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyIHsgMjUgfTsKKyAgICBmbG9hdCB0aW1lVG9NYXhpbXVt
VmVsb2NpdHkgeyAxIH07CisKKyAgICBmbG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07CisK
KyAgICBzdGF0aWMgY29uc3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkK
KyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5kZXggNGVkNGQ5NzVhN2VhNDUw
MDk3ZmNiYjRkZTlhMmUwMzIxYzZhNjc3Yi4uNDY3Y2M1ZjIxOGZlODgzNTM2NjU4N2ZmZDA2ODQ0
NGM1ZTc4YjcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYg
RU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFi
bGVBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggZjc1NzU4NzUxMjIyNGFmZWRkNzRkNGQ3MTgzNTljMWQ2M2RiNjE0Ni4uMGYzODFkNTY2
NTgxM2QwNGY2MDExYTc4NjY1OGY4NGVlM2U3MGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMDgs
NiArMTA4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29k
ZXNJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRTY3JvbGwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lz
dHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTYsNiArMTE3
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVEYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgpAQCAtNTkxMCwyMSAr
NTkxMiwyMyBAQCBzdGF0aWMgTlNTdHJpbmcgKmNvbnRlbnRUeXBlRnJvbUZpZWxkTmFtZShXZWJD
b3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBmaWVsZE5hbWUpCiAgICAgcmV0dXJuIFlFUzsKIH0KIAot
LSAoQ0dGbG9hdClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjooV0tLZXlib2FyZFNjcm9sbFZp
ZXdBbmltYXRvciAqKWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9s
bGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9hdClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjoo
V0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVt
ZW50OihXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KIHsKLSAgICBCT09MIGRpcmVjdGlvbklz
SG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVm
dCB8fCBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OworICAg
IEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsTGVmdCB8fCBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxSaWdodDsKIAogICAgIHN3aXRjaCAoaW5jcmVtZW50KSB7Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6IHsKKyAgICBjYXNlIFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50OiB7CiAgICAgICAgIENHU2l6
ZSBkb2N1bWVudFNpemUgPSBbc2VsZiBjb252ZXJ0UmVjdDpzZWxmLmJvdW5kcyB0b1ZpZXc6c2Vs
Zi53ZWJWaWV3XS5zaXplOwogICAgICAgICByZXR1cm4gZGlyZWN0aW9uSXNIb3Jpem9udGFsID8g
ZG9jdW1lbnRTaXplLndpZHRoIDogZG9jdW1lbnRTaXplLmhlaWdodDsKICAgICB9Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTogeworICAgIGNhc2UgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTogewogICAgICAgICBDR1NpemUgcGFnZVNp
emUgPSBbc2VsZiBjb252ZXJ0U2l6ZTpDR1NpemVNYWtlKDAsIFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFnZVN0ZXAoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpLCBzZWxmLmJv
dW5kcy5zaXplLmhlaWdodCkpIHRvVmlldzpzZWxmLndlYlZpZXddOwogICAgICAgICByZXR1cm4g
ZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gcGFnZVNpemUud2lkdGggOiBwYWdlU2l6ZS5oZWlnaHQ7
CiAgICAgfQotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU6CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOgogICAgICAgICBy
ZXR1cm4gW3NlbGYgY29udmVydFNpemU6Q0dTaXplTWFrZSgwLCBXZWJDb3JlOjpTY3JvbGxiYXI6
OnBpeGVsc1BlckxpbmVTdGVwKCkpIHRvVmlldzpzZWxmLndlYlZpZXddLmhlaWdodDsKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBpeGVsOgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmgKaW5kZXggM2ZmODNiNjU1YWNjMGRlN2NhYjgyNGU5Y2EzMzVhMjRl
Mjc1ZTJkOC4uMmVmOTM4ZWNlYmQ1MjljNWRiNGEzZDY1Y2Y1NzE4ZTNiMDk2NTk3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaApAQCAtMjMsMjggKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxv
YXRQb2ludDsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xhc3MgU2Nyb2xsaW5n
SW5jcmVtZW50IDogdWludDhfdCB7Ci0gICAgRG9jdW1lbnQsCi0gICAgUGFnZSwKLSAgICBMaW5l
Ci19OwotCi1lbnVtIGNsYXNzIFNjcm9sbGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3QgewotICAgIFVw
LAotICAgIERvd24sCi0gICAgTGVmdCwKLSAgICBSaWdodAotfTsKLQotfQogCiBAY2xhc3MgVUlT
Y3JvbGxWaWV3OwogQGNsYXNzIFdlYkV2ZW50OwpAQCAtNzEsNyArNTcsNyBAQCBlbnVtIGNsYXNz
IFNjcm9sbGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3QgewogQHByb3RvY29sIFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3JEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIC0gKEJPT0wpaXNT
Y3JvbGxhYmxlRm9yS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxW
aWV3QW5pbWF0b3IgKilhbmltYXRvcjsKLS0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5p
bWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZv
ckluY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0
aW9uOihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb247CistIChDR0Zsb2F0KWtl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICop
YW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5
KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlv
bjsKIC0gKHZvaWQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3JXaWxsU2Nyb2xsOihXS0tleWJv
YXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3I7CiAtICh2b2lkKWtleWJvYXJkU2Nyb2xs
Vmlld0FuaW1hdG9yRGlkRmluaXNoU2Nyb2xsaW5nOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1h
dG9yICopYW5pbWF0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5MjdlMmNjZDFjYTEx
NWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLjIyMzQwYzYyY2U4N2YyNmNiOTRjZmUzOWExNzU3
YTM0YmZkMmNmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0
UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWN0RWRnZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktpdC9VSUtpdFNQSS5o
PgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBLZXli
b2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBl
ciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8g
UG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOwotCi0gICAg
V2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdlYktpdDo6U2Nyb2xs
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFt
ZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBDR0Zsb2F0IHNwcmlu
Z1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGluZyB7IDIwIH07Ci0K
LSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9OwotICAgIENHRmxv
YXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9hdCBydWJiZXJCYW5k
Rm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJvYXJkU2Nyb2xsYWJs
ZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tleWJvYXJkU2Nyb2xs
YWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5n
SW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb24pZGlyZWN0aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNv
cmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClz
Y3JvbGxXaXRoU2Nyb2xsVG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChD
R1BvaW50KWNvbnRlbnRPZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNj
cm9sbFBhcmFtZXRlcnMgewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBf
c2Nyb2xsYWJsZTsKICAgICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwog
Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9s
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNj
cm9sbDsKIAogICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEy
NCw5ICsxMDIsOSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
JilwYXJhbWV0ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
JilwYXJhbWV0ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJk
U2Nyb2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQog
CkBAIC0xMzcsNDcgKzExNSwzMyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsK
ICAgICBfc2Nyb2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1
bml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBX
ZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihXZWJDb3Jl
OjpTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgICAgIHJldHVy
biB7IDAsIC0xIH07Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoK
LSAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkxlZnQ6Ci0gICAgICAgIHJldHVybiB7IC0xLCAwIH07Ci0gICAgY2FzZSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbFVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxEb3duOgogICAgICAgICByZXR1cm4geyAxLCAwIH07Ci0gICAgfQotfQotCi1zdGF0aWMgV2Vi
Q29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKLSAgICAgICAgcmV0dXJuIHsgMSwgMCB9Owot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbExlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbFJpZ2h0OgogICAgICAgICByZXR1cm4geyAwLCAxIH07CiAgICAgfQogfQogCi1zdGF0
aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6
OlRvcDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgorICAgIGNh
c2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Qm94U2lkZTo6Qm90dG9tOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExl
ZnQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpMZWZ0OwotICAgIGNhc2UgV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6
OlJpZ2h0OwogICAgIH0KIH0KIAotLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Ny
b2xsPilrZXlib2FyZFNjcm9sbEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKKy0gKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6
KDo6V2ViRXZlbnQgKilldmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3Bh
Y2VLZXkgPSAweDIwOwogCkBAIC0yNTUsNTAgKzIxOSw1MiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94
U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAg
ICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CiAg
ICAgICAgICAgICBpZiAoYWx0UHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0
OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpT
Y3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6
OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAgICAgICAgICAgICBpZiAo
YWx0UHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNy
ZW1lbnQ6OlBhZ2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CiAgICAgICAgICAgICBpZiAoY21kUHJlc3NlZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50Owot
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlE
b2N1bWVudDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6
U2Nyb2xsQnlMaW5lOwogICAgICAgICBjYXNlIEtleTo6UGFnZVVwOgogICAgICAgICBjYXNlIEtl
eTo6UGFnZURvd246CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAgICBjYXNlIEtl
eTo6T3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOwogICAgICAgICB9
OwogICAgIH0oKTsKIAogICAgIGF1dG8gZGlyZWN0aW9uID0gXigpIHsKICAgICAgICAgc3dpdGNo
IChrZXkpIHsKICAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ7CiAgICAgICAgIGNhc2UgS2V5OjpS
aWdodEFycm93OgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpSaWdodDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbFJpZ2h0OwogICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6
OlBhZ2VVcDoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
VXA7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxV
cDsKICAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VE
b3duOgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3du
OworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93
bjsKICAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgotICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJl
c3NlZCA/IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFdlYktpdDo6U2Nyb2xsaW5n
RGlyZWN0aW9uOjpEb3duOworICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgOiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpPdGhlcjoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpEb3duOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlv
bjo6U2Nyb2xsRG93bjsKICAgICAgICAgfTsKICAgICB9KCk7CiAKKyAgICAvL0ZJWE1FICgyMjc0
NjEpOiBSZXBsYWNlIHdpdGggY2FsbCB0byBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbCBjb25zdHJ1
Y3Rvci4KKwogICAgIENHRmxvYXQgc2Nyb2xsRGlzdGFuY2UgPSBbX3Njcm9sbGFibGUgZGlzdGFu
Y2VGb3JJbmNyZW1lbnQ6aW5jcmVtZW50IGluRGlyZWN0aW9uOmRpcmVjdGlvbl07CiAKLSAgICBX
ZWJLaXQ6OktleWJvYXJkU2Nyb2xsIHNjcm9sbDsKLSAgICBzY3JvbGwub2Zmc2V0ID0gdW5pdFZl
Y3RvcihkaXJlY3Rpb24pLnNjYWxlZChzY3JvbGxEaXN0YW5jZSk7Ci0gICAgc2Nyb2xsLmluY3Jl
bWVudCA9IGluY3JlbWVudDsKKyAgICBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbCBzY3JvbGw7Cisg
ICAgc2Nyb2xsLm9mZnNldCA9IFdlYkNvcmU6OnVuaXRWZWN0b3JGb3JTY3JvbGxEaXJlY3Rpb24o
ZGlyZWN0aW9uKS5zY2FsZWQoc2Nyb2xsRGlzdGFuY2UpOworICAgIHNjcm9sbC5ncmFudWxhcml0
eSA9IGluY3JlbWVudDsKICAgICBzY3JvbGwuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogICAgIHNj
cm9sbC5tYXhpbXVtVmVsb2NpdHkgPSBzY3JvbGwub2Zmc2V0LnNjYWxlZChzZWxmLnBhcmFtZXRl
cnMubWF4aW11bVZlbG9jaXR5TXVsdGlwbGllcik7CiAKQEAgLTMyNyw3ICsyOTMsNyBAQCBzdGF0
aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikKICAgICBfc2Nyb2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZCA9IFlFUzsKICAgICBf
Y3VycmVudFNjcm9sbCA9IHNjcm9sbDsKIAotICAgIGlmIChzY3JvbGwtPmluY3JlbWVudCA9PSBX
ZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQpIHsKKyAgICBpZiAoc2Nyb2xsLT5n
cmFudWxhcml0eSA9PSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1bWVu
dCkgewogICAgICAgICBfdmVsb2NpdHkgPSB7IH07CiAgICAgICAgIFtzZWxmIHN0b3BBbmltYXRl
ZFNjcm9sbF07CiAgICAgICAgIFtzZWxmIHN0b3BEaXNwbGF5TGlua107CkBAIC0zNjAsMTYgKzMy
NiwxNiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5n
RGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpGbG9hdFBv
aW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgYiwgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQor
c3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNv
cmU6OkZsb2F0UG9pbnQgYSwgV2ViQ29yZTo6RmxvYXRQb2ludCBiLCBXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb246OlNjcm9sbFVwOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2lu
dChhLngoKSwgc3RkOjptaW4oYS55KCksIGIueSgpKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6
U2Nyb2xsRG93bjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQoYS54KCksIHN0
ZDo6bWF4KGEueSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWluKGEueCgpLCBiLngo
KSksIGEueSgpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpSaWdodDoK
KyAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsUmlnaHQ6CiAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHN0ZDo6bWF4KGEueCgpLCBiLngoKSksIGEueSgp
KTsKICAgICB9CiAKQEAgLTQ0Niw3ICs0MTIsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2lu
dCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJDbwog
ICAgICAgICAgICAgLy8gVGhlIHNjcm9sbCB2aWV3IGNhbm5vdCBzY3JvbGwgaW4gdGhpcyBkaXJl
Y3Rpb24sIGFuZCBpcyBydWJiZXItYmFuZGluZy4KICAgICAgICAgICAgIC8vIEFwcGx5IGEgY29u
c3RhbnQgYW5kIHNpZ25pZmljYW50IGZvcmNlOyBvdGhlcndpc2UsIHRoZSBmb3JjZSBmb3IgYQog
ICAgICAgICAgICAgLy8gc2luZ2xlLWxpbmUgaW5jcmVtZW50IGlzIG5vdCBzdHJvbmcgZW5vdWdo
IHRvIHJ1YmJlci1iYW5kIHBlcmNlcHRpYmx5LgotICAgICAgICAgICAgZm9yY2UgPSB1bml0VmVj
dG9yKGRpcmVjdGlvbikuc2NhbGVkKHNlbGYucGFyYW1ldGVycy5ydWJiZXJCYW5kRm9yY2UpOwor
ICAgICAgICAgICAgZm9yY2UgPSBXZWJDb3JlOjp1bml0VmVjdG9yRm9yU2Nyb2xsRGlyZWN0aW9u
KGRpcmVjdGlvbikuc2NhbGVkKHNlbGYucGFyYW1ldGVycy5ydWJiZXJCYW5kRm9yY2UpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCBvciBleGNlZWRlZCB0aGUgbWF4
aW11bSB2ZWxvY2l0eSwgc3RvcCBhcHBseWluZyBhbnkgZm9yY2UuCkBAIC01NjYsNyArNTMyLDcg
QEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdl
YkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28KICAgICByZXR1cm4gW19kZWxlZ2F0ZSBpc1Njcm9s
bGFibGVGb3JLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjpzZWxmXTsKIH0KIAotLSAoQ0dGbG9h
dClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVt
ZW50IGluRGlyZWN0aW9uOihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb24KKy0g
KENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5
KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlv
bgogewogICAgIGF1dG8gc2Nyb2xsVmlldyA9IF9zY3JvbGxWaWV3LmdldEF1dG9yZWxlYXNlZCgp
OwogICAgIGlmICghc2Nyb2xsVmlldykKQEAgLTU3NSwxNiArNTQxLDE4IEBAIHN0YXRpYyBXZWJD
b3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJDb3JlOjpGbG9hdFBv
aW50IGEsIFdlYkNvCiAgICAgY29uc3QgQ0dGbG9hdCBkZWZhdWx0UGFnZVNjcm9sbEZyYWN0aW9u
ID0gMC44OwogICAgIGNvbnN0IENHRmxvYXQgZGVmYXVsdExpbmVTY3JvbGxIZWlnaHQgPSA0MDsK
IAotICAgIEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09IFdlYktpdDo6
U2Nyb2xsaW5nRGlyZWN0aW9uOjpMZWZ0IHx8IGRpcmVjdGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbjo6UmlnaHQ7CisgICAgQk9PTCBkaXJlY3Rpb25Jc0hvcml6b250YWwgPSBkaXJl
Y3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0IHx8IGRpcmVjdGlv
biA9PSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OwogCiAgICAgaWYgKCFf
ZGVsZWdhdGVSZXNwb25kc1RvRGlzdGFuY2VGb3JJbmNyZW1lbnQpIHsKICAgICAgICAgc3dpdGNo
IChpbmNyZW1lbnQpIHsKLSAgICAgICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6
RG9jdW1lbnQ6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5RG9jdW1lbnQ6CiAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uSXNIb3Jpem9udGFsID8g
c2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCA6IHNjcm9sbFZpZXcuY29udGVudFNpemUuaGVp
Z2h0OwotICAgICAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOgorICAg
ICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6CiAgICAg
ICAgICAgICByZXR1cm4gKGRpcmVjdGlvbklzSG9yaXpvbnRhbCA/IHNjcm9sbFZpZXcuZnJhbWUu
c2l6ZS53aWR0aCA6IHNjcm9sbFZpZXcuZnJhbWUuc2l6ZS5oZWlnaHQpICogZGVmYXVsdFBhZ2VT
Y3JvbGxGcmFjdGlvbjsKLSAgICAgICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6
TGluZToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlM
aW5lOgogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRMaW5lU2Nyb2xsSGVpZ2h0ICogc2Nyb2xs
Vmlldy56b29tU2NhbGU7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6
OlNjcm9sbEJ5UGl4ZWw6CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDJhYjEw
ODRjNWNkYzRiM2ZhOGU0ZWI3MjU1NDFiNjg2MDUwMjQ4NGUuLjljZDMyZGY2NTZmNTczZjNhMmUz
OGJiMDg5YzVjYzMwNGNkNzA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC00NjMsMzEgKzQ2MywzNCBAQCBib29sIFdl
YlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcm
IHNlbGVjdG9yLCBLZXlibwogICAgIC8vIFNob3VsZCBzdWNoIG5vbi1lZGl0aW5nIGJlaGF2aW9y
cyBiZSBpbXBsZW1lbnRlZCBpbiBFZGl0b3Igb3IgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dF
dmVudEhhbmRsZXIoKSBwZXJoYXBzPwogICAgIAogICAgIGJvb2wgZGlkUGVyZm9ybUFjdGlvbiA9
IGZhbHNlOworICAgIAorICAgIGlmICghZnJhbWUtPnNldHRpbmdzKCkuZXZlbnRIYW5kbGVyRHJp
dmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKHNlbGVj
dG9yID09ICJtb3ZlVXA6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAo
c2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOiIpCisgICAgICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5
UGFnZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRv
Y3VtZW50OiIpIHsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdl
LmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgICAgICBkaWRQZXJm
b3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9j
dW1lbnQpOworICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlRG93bjoiKQorICAg
ICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERv
d24sIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlVG9F
bmRPZlBhcmFncmFwaDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlVG9FbmRPZkRvY3VtZW50OiIpIHsKKyAgICAgICAgICAgIGRpZFBl
cmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURv
Y3VtZW50KTsKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgIH0gZWxzZSBpZiAo
c2VsZWN0b3IgPT0gIm1vdmVMZWZ0OiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0g
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQorICAgICAgICAgICAgZGlkUGVy
Zm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5UGFn
ZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlUmlnaHQ6IikKKyAgICAgICAg
ICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwg
U2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkUmln
aHQ6IikKKyAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2UpOworICAgIH0KIAotICAgIGlmIChzZWxlY3RvciA9PSAi
bW92ZVVwOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92
ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKLSAgICAgICAgZGlk
UGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURv
Y3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlRG93bjoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3Rv
ciA9PSAibW92ZVRvRW5kT2ZQYXJhZ3JhcGg6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0VuZE9mRG9jdW1lbnQ6IikgewotICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlE
b2N1bWVudCk7Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gfD0gc2Nyb2xsKG1fcGFnZS5nZXQo
KSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgfSBlbHNlIGlmIChzZWxlY3Rv
ciA9PSAibW92ZUxlZnQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7Ci0gICAgZWxzZSBpZiAoc2VsZWN0
b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQorICAgIGlmIChzZWxlY3RvciA9PSAi
bW92ZVRvTGVmdEVuZE9mTGluZToiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKSA6IG1fcGFnZS0+
YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92
ZVJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAi
bW92ZVdvcmRSaWdodDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0
b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24g
PSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgp
IDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432426</attachid>
            <date>2021-06-28 14:55:43 -0700</date>
            <delta_ts>2021-06-28 17:39:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226986-20210628175542.patch</filename>
            <type>text/plain</type>
            <size>40398</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyZjFhOTYyOGYxOThj
NTc2YTA2MzFmYjg1MzU4MjZhN2I0NGNmOS4uYzQzZjYzNDAyODYyM2I3OTFjNTRjN2M0OTZkZGZh
M2I1MWM1YmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTA2LTE0ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBNYWNPUyBrZXli
b2FyZCBzY3JvbGxpbmcgYW5kIHVzZSBLZXlib2FyZFNjcm9sbCBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjk4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIHlldC4KKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHVzYWdlIG9mIHN3aXRjaCBFdmVudERyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nCisgICAg
ICAgIHRoYXQgd2hlbiBlbmFibGVkIHNlbmRzIEtleWJvYXJkRXZlbnQgdG8KKyAgICAgICAgSGFu
ZGxlS2V5Ym9hcmRTY3JvbGxpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpzY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKToKKyAgICAgICAgCisgICAgICAgIE1ha2VzIEtleWJv
YXJkU2Nyb2xsIGFuZCBjYWxscyBzY3JvbGxSZWN1cnNpdmVseS4KKyAgICAgICAgCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcik6CisgICAg
ICAgIAorICAgICAgICBBZGRlZCB1c2FnZSBvZiBzd2l0Y2ggRXZlbnREcml2ZW5TbW9vdGhLZXli
b2FyZFNjcm9sbGluZworICAgICAgICB0aGF0IHdoZW4gZW5hYmxlZCBzZW5kcyBLZXlib2FyZEV2
ZW50IHRvCisgICAgICAgIEhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvS2V5Ym9hcmRTY3JvbGwu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0tleWJvYXJkU2Nyb2xsLmg6IEFkZGVkLgorCiAy
MDIxLTA2LTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQgZ3VhcmRzIHByb3RlY3QgdW5yZWxhdGVkIGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZmYzOGZlYTUzZDBjNTlkNGZhM2ZjNzkyMTdlNzFjYjE0NDdkZWRjMS4u
ZGFkMTE0MTI0MDcxOGI4NjQ3MTlkYTk2OGUyZDk3YWUwZjgwYjM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wNi0xNCAgRGFuYSBFc3RyYSAgPGRlc3RyYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgTWFjT1Mga2V5Ym9hcmQgc2Nyb2xsaW5nIGFuZCB1c2UgS2V5Ym9h
cmRTY3JvbGwgc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjY5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIEluIGFkZGl0aW9uIHRvIG5vdGVzIHVuZGVybmVhdGgsIGNoYW5nZWQg
dXNhZ2Ugb2YgV2ViS2l0OjpLZXlib2FyZFNjcm9sbCwgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1l
bnQsIGFuZCBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiB0bworICAgICAgICBXZWJDb3JlOjpL
ZXlib2FyZFNjcm9sbCwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHksIGFuZCBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb24sIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW06CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvciBwYXJhbWV0ZXJzXSk6CisgICAgICAgIAorICAgICAgICBEZWxldGVkLiBO
b3cgbGl2ZXMgaW4gV2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oLgorICAgICAgICAKKyAgICAgICAg
KHVuaXRWZWN0b3IpOgorICAgICAgICAKKyAgICAgICAgRGVsZXRlZC4gTm93IGxpdmVzIGluIFdl
YkNvcmUvS2V5Ym9hcmRTY3JvbGwuaC4KKyAgICAgICAgCisgICAgICAgIChwZXJwZW5kaWN1bGFy
QWJzb2x1dGVVbml0VmVjdG9yKToKKyAgICAgICAgKGJveFNpZGUpOgorICAgICAgICAoLVtXS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iga2V5Ym9hcmRTY3JvbGxGb3JFdmVudDpdKToKKyAgICAg
ICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJlZ2luV2l0aEV2ZW50Ol0pOgorICAg
ICAgICAoZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNj
cm9sbFZpZXdBbmltYXRvciBkaXN0YW5jZUZvckluY3JlbWVudDppbkRpcmVjdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKToKKyAg
ICAgICAgCisgICAgICAgIEFkZGVkIHN3aXRjaCB0aGF0IHJlbW92ZXMgc2VsZWN0b3JzIHRoYXQg
YXJlIG5vdyBoYW5kbGVkIGJ5CisgICAgICAgIEV2ZW50SGFuZGxlciB3aGVuIEV2ZW50SGFuZGxl
ckRyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nCisgICAgICAgIGlzIGVuYWJsZWQuCisKIDIw
MjEtMDYtMjUgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBBZGQgbWlzc2luZyBtZXRob2RzIHRvIElPS2l0IGZpbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1Nv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
aW5kZXggNjZlYmE3OTdiMzc1OTA0ZGJhNTBiNDFmMTc5M2MyYzYyNzY0NDg3NC4uMGZiYjA2NTgz
ZGNhOWI4MWQ1NTViYTk2NTZkNTc3ZWU5MDEwMzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBA
IC0yMjAsNiArMjIwLDE4IEBAIEVudGVyS2V5SGludEVuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAg
ICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0V2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJkU2Ny
b2xsaW5nRW5hYmxlZDoKKyB0eXBlOiBib29sCisgaHVtYW5SZWFkYWJsZU5hbWU6ICJFdmVudEhh
bmRsZXIgZHJpdmVuIHNtb290aCBrZXlib2FyZCBzY3JvbGxpbmciCisgaHVtYW5SZWFkYWJsZURl
c2NyaXB0aW9uOiAiRW5hYmxlIEV2ZW50SGFuZGxlciBkcml2ZW4gc21vb3RoIGtleWJvYXJkIHNj
cm9sbGluZyIKKyBkZWZhdWx0VmFsdWU6CisgIFdlYktpdExlZ2FjeToKKyAgIGRlZmF1bHQ6IGZh
bHNlCisgIFdlYktpdDoKKyAgIGRlZmF1bHQ6IGZhbHNlCisgIFdlYkNvcmU6CisgICBkZWZhdWx0
OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIG5vdCByZWxldmVudCBmb3IgV2ViS2l0TGVnYWN5
LCBzbyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBFeHBl
cmltZW50YWxQbHVnSW5TYW5kYm94UHJvZmlsZXNFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCA2YWRmZjBkZGI0ZDYwNmZlMTdmYzQzNzZjOGMyZTkxZDEzM2VkZDA2
Li4xZTdhN2IyYmNiZmE2NTU3OGFkYTAzMWE5MzM0YzRmMTY1ZDczYmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTg5OCw2ICs4OTgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKICAgICBwYWdlL0dsb2Jh
bEZyYW1lSWRlbnRpZmllci5oCiAgICAgcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKKyAg
ICBwYWdlL0tleWJvYXJkU2Nyb2xsLmgKICAgICBwYWdlL0xheW91dE1pbGVzdG9uZS5oCiAgICAg
cGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAgIHBhZ2UvTWVkaWFDb250cm9sc0NvbnRl
eHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJhNWIxNzA0MmU0ODgzZGU2NzE2NzA5ZTBi
OTE1NWIwMWNlNDQxMzUuLjJlYmMyNzllNTFhYzAwOTcwN2EyYTcyY2JiNTgzZjNlYWZjMzQ5MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNzExLDYgKzE3MTEsNyBAQCBwYWdlL0ZyYW1lVmlldy5jcHAK
IHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKIHBhZ2UvSGlzdG9yeS5jcHAKIHBhZ2Uv
SW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKK3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwCiBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
LmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNWIwMmMyNjQ5NzE3MGE5NThjMjQxM2JmOTdm
MjIyMGNjMWY1YTkwLi41NmYzZjdkNzE1MmZmZWRhNDM4Njc4YTdkMjk0ZWJhYmIyYTZjZmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02NjcsNiArNjY3LDcgQEAKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3
RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQw
MENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5QSAv
KiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUYwMjBBRUQyNjc4MEZDRTAwMDA4MDlBIC8qIEtleWJvYXJkU2Nyb2xsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUYzNkVBOUMx
RTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzNkVBOUExRTIxQkExNzAw
NjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGNzJCRjBCMTg3RkQ0NUMwMDA5QkNC
MyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3NTZCMTFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTcwNjEsOCArNzA2MiwxMCBAQAogCQkxREVGMDZEQzIzM0QyRTFD
MDBFRTIyOEQgLyogRG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFERUYwNkREMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1
bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RG9jdW1lbnRQaWN0dXJlSW5QaWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFERUYwNkRFMjMzRDJFMUMwMEVFMjI4RCAvKiBEb2N1bWVudCtQaWN0dXJlSW5QaWN0dXJlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiRG9jdW1lbnQrUGljdHVyZUluUGljdHVyZS5pZGwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAyMEFFRDI2NzgwRkNFMDAwMDgwOUEg
LyogS2V5Ym9hcmRTY3JvbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5
Ym9hcmRTY3JvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUExRTIx
QkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzNkVBOUIxRTIxQkExNzAwNjIxRTI1IC8qIFdl
YkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUY1MzAzOUEyNjg1NEU2NjAwMjM2MzAzIC8qIEtleWJvYXJkU2Ny
b2xsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtleWJvYXJkU2Nyb2xsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxRjg3NTZCMDFFMjJCRUVGMDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjI1MDgsNiArMjI1MTEsOCBAQAogCQkJCTBGNDcxMEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcCAqLywKIAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAy
RENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oICovLAogCQkJCTBGNDcxMERBMURC
NkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbCAqLywKKwkJCQkx
RjUzMDM5QTI2ODU0RTY2MDAyMzYzMDMgLyogS2V5Ym9hcmRTY3JvbGwuY3BwICovLAorCQkJCTFG
MDIwQUVEMjY3ODBGQ0UwMDAwODA5QSAvKiBLZXlib2FyZFNjcm9sbC5oICovLAogCQkJCTkzMUQ3
MkY1MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAqLywKIAkJCQlCQ0UxQzQx
QTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLAogCQkJCUJDRTFDNDE5MEQ5ODI5
ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLApAQCAtMzQxNDUsNiArMzQxNTAsNyBAQAogCQkJ
CUJDRUZFMUVCMERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtl
eWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFGMDIwQUVGMjY3ODBGQ0UwMDAwODA5
QSAvKiBLZXlib2FyZFNjcm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENTkxODJEQUM4
RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNTFC
NzQzMThGMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
N0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZDg5MjE0NDI1MDRhNjliMzYw
YzlmZDc2MWQ4OTYzOThlMmM0ODRmYy4uMTY4MzdlMTE1MjQ0MjBiZGIwMzY0ZmVlMzNkM2YwZGI3
ZDQ1MDVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjgsNiArNjgs
NyBAQAogI2luY2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5j
bHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIK
QEAgLTQyMDAsNyArNDIwMSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0U3BhY2VFdmVu
dEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAodmlldy0+bG9naWNhbFNjcm9sbChkaXJlY3Rpb24sIFNjcm9sbEJ5
UGFnZSkpCisgICAgYm9vbCBkZWZhdWx0SGFuZGxlZCA9IG1fZnJhbWUuc2V0dGluZ3MoKS5ldmVu
dEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQoKSA/IGhhbmRsZUtl
eWJvYXJkU2Nyb2xsaW5nKGV2ZW50KSA6IHZpZXctPmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBT
Y3JvbGxCeVBhZ2UpOworICAgIGlmIChkZWZhdWx0SGFuZGxlZCkKICAgICAgICAgZXZlbnQuc2V0
RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApAQCAtNDIzMiwxMSArNDIzNCw5MSBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50JiBldmVu
dCkKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAorZmxvYXQgRXZlbnRI
YW5kbGVyOjpzY3JvbGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSkKK3sKKyAgICBhdXRvIHNjcm9sbGJhciA9IFsmXSB7Cisg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCB8fCBkaXJl
Y3Rpb24gPT0gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duKQorICAgICAgICAgICAgcmV0dXJu
IG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgICAgICByZXR1cm4gbV9m
cmFtZS52aWV3KCktPmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICB9KCk7CisgICAgCisgICAg
c3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5TGluZToKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+bGluZVN0ZXAoKTsKKyAgICBjYXNl
IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U6CisgICAgICAgIHJldHVybiBzY3JvbGxi
YXItPnBhZ2VTdGVwKCk7CisgICAgY2FzZSBTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlEb2N1
bWVudDoKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAgY2FzZSBT
Y3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbDoKKyAgICAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+cGl4ZWxTdGVwKCk7CisgICAgfQorfQorCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5
Ym9hcmRTY3JvbGxpbmcoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgLy8gRklYTUUgKGJ1
ZyAyMjc0NTkpOiBUaGlzIGxvZ2ljIGRvZXMgbm90IGFjY291bnQgZm9yIHdyaXRpbmctbW9kZS4K
KworICAgIGVudW0gY2xhc3MgS2V5IDogdWludDhfdCB7IExlZnRBcnJvdywgUmlnaHRBcnJvdywg
VXBBcnJvdywgRG93bkFycm93LCBTcGFjZSB9OworCisgICAgS2V5IGtleTsKKyAgICBpZiAoZXZl
bnQua2V5SWRlbnRpZmllcigpID09ICJMZWZ0IikKKyAgICAgICAga2V5ID0gS2V5OjpMZWZ0QXJy
b3c7CisgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllcigpID09ICJSaWdodCIpCisgICAg
ICAgIGtleSA9IEtleTo6UmlnaHRBcnJvdzsKKyAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlm
aWVyKCkgPT0gIlVwIikKKyAgICAgICAga2V5ID0gS2V5OjpVcEFycm93OworICAgIGVsc2UgaWYg
KGV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiRG93biIpCisgICAgICAgIGtleSA9IEtleTo6RG93
bkFycm93OworICAgIGVsc2UgaWYgKGV2ZW50LmNoYXJDb2RlKCkgPT0gJyAnKQorICAgICAgICBr
ZXkgPSBLZXk6OlNwYWNlOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBncmFudWxhcml0eSA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAg
IGNhc2UgS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpSaWdodEFycm93OgorICAg
ICAgICAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpID8gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9s
bEJ5UGFnZSA6IFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeUxpbmU7CisgICAgICAgIGNhc2Ug
S2V5OjpVcEFycm93OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAg
aWYgKGV2ZW50Lm1ldGFLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVs
YXJpdHk6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7
CisgICAgICAgICAgICByZXR1cm4gU2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKKyAg
ICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEdyYW51bGFy
aXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgIH07CisgICAgfSgpOworCisgICAgYXV0byBkaXJl
Y3Rpb24gPSBbJl0geworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBjYXNlIEtleTo6
TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJuIFNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVm
dDsKKyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gU2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6Cisg
ICAgICAgICAgICByZXR1cm4gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcDsKKyAgICAgICAgY2Fz
ZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgICAgIHJldHVybiBTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbERvd247CisgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKKyAgICAgICAgICAgIHJldHVybiBl
dmVudC5zaGlmdEtleSgpID8gU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxVcCA6IFNjcm9sbERpcmVj
dGlvbjo6U2Nyb2xsRG93bjsKKyAgICAgICAgfQorICAgIH0oKTsKKworICAgIHJldHVybiBFdmVu
dEhhbmRsZXI6OnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG51bGxw
dHIpOworfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZv
Y3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAg
ICBBU1NFUlQoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpOwogCisg
ICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpIHsKKyAgICAgICAg
aWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5ldmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNj
cm9sbGluZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2Nyb2xsaW5nKGV2
ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChldmVudC5jdHJsS2V5KCkg
fHwgZXZlbnQubWV0YUtleSgpIHx8IGV2ZW50LmFsdEdyYXBoS2V5KCkgfHwgZXZlbnQuc2hpZnRL
ZXkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjQ0LDkgKzQzMjYsNiBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGly
ZWN0aW9uLCBLZXlibwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgmbV9mcmFtZSkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUgZGlyZWN0aW9uYWwgbmF2aWdhdGlv
biBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8vIG1vZGUgZWRpdGluZy4KICAgICBp
ZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCmluZGV4IDJiNjM1ODk2NDg3NmQxNTFjMDk3MThiZGVmODlkOGVkNDJkMTRhZWYu
LmE1YWY0MDQ2MTRlNmNmODZkMGJjNWNjNjUwMjQ1NTMwMzJmOGJiNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYWdBY3Rpb25z
LmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVz
dC5oIgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKQEAgLTM3NSw2ICszNzYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlTW91c2VQ
cmVzc0V2ZW50RG91YmxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYp
OwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCisgICAgZmxvYXQgc2Nyb2xsRGlzdGFuY2UoU2Ny
b2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CisgICAgYm9vbCBoYW5kbGVLZXlib2Fy
ZFNjcm9sbGluZyhLZXlib2FyZEV2ZW50Jik7CisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIGJvb2wgaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMgPSBTaG91bGRDaGVja0RyYWdIeXN0ZXJl
c2lzKTsKICAgICBib29sIHNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWcoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9LZXlib2FyZFNjcm9sbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE1NzEyZTJm
YjJiMmRhNGU0N2E4MDdjN2NlMDdkYjE3YTBkMjU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGbG9hdFNpemUgdW5pdFZlY3RvckZvclNjcm9sbERp
cmVjdGlvbihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFVwOgorICAgICAgICByZXR1
cm4geyAwLCAtMSB9OworICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgorICAg
ICAgICByZXR1cm4geyAwLCAxIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExl
ZnQ6CisgICAgICAgIHJldHVybiB7IC0xLCAwIH07CisgICAgY2FzZSBTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbFJpZ2h0OgorICAgICAgICByZXR1cm4geyAxLCAwIH07CisgICAgfQorfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0tleWJvYXJkU2Nyb2xsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkMzBhMDQxNTRmN2Fk
ZTcxOTA5NDM1N2IxYTFhMmE5ZmRmNTNkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvS2V5Ym9hcmRTY3JvbGwuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSB1bml0VmVjdG9yRm9yU2Nyb2xsRGly
ZWN0aW9uKFNjcm9sbERpcmVjdGlvbik7CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbCB7CisgICAg
RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBlciBpbmNyZW1lbnQuCisgICAgRmxvYXRTaXpl
IG1heGltdW1WZWxvY2l0eTsgLy8gUG9pbnRzIHBlciBzZWNvbmQuCisgICAgRmxvYXRTaXplIGZv
cmNlOworCisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CisgICAgU2Nyb2xsRGly
ZWN0aW9uIGRpcmVjdGlvbjsKK307CisKK3N0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
eworICAgIGZsb2F0IHNwcmluZ01hc3MgeyAxIH07CisgICAgZmxvYXQgc3ByaW5nU3RpZmZuZXNz
IHsgMTA5IH07CisgICAgZmxvYXQgc3ByaW5nRGFtcGluZyB7IDIwIH07CisKKyAgICBmbG9hdCBt
YXhpbXVtVmVsb2NpdHlNdWx0aXBsaWVyIHsgMjUgfTsKKyAgICBmbG9hdCB0aW1lVG9NYXhpbXVt
VmVsb2NpdHkgeyAxIH07CisKKyAgICBmbG9hdCBydWJiZXJCYW5kRm9yY2UgeyA1MDAwIH07CisK
KyAgICBzdGF0aWMgY29uc3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkK
KyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5kZXggNGVkNGQ5NzVhN2VhNDUw
MDk3ZmNiYjRkZTlhMmUwMzIxYzZhNjc3Yi4uNDY3Y2M1ZjIxOGZlODgzNTM2NjU4N2ZmZDA2ODQ0
NGM1ZTc4YjcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYg
RU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbGFi
bGVBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggZjc1NzU4NzUxMjIyNGFmZWRkNzRkNGQ3MTgzNTljMWQ2M2RiNjE0Ni4uMGYzODFkNTY2
NTgxM2QwNGY2MDExYTc4NjY1OGY4NGVlM2U3MGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMDgs
NiArMTA4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29k
ZXNJT1MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRTY3JvbGwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lz
dHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTYsNiArMTE3
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVEYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgpAQCAtNTkxMCwyMSAr
NTkxMiwyMyBAQCBzdGF0aWMgTlNTdHJpbmcgKmNvbnRlbnRUeXBlRnJvbUZpZWxkTmFtZShXZWJD
b3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBmaWVsZE5hbWUpCiAgICAgcmV0dXJuIFlFUzsKIH0KIAot
LSAoQ0dGbG9hdClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjooV0tLZXlib2FyZFNjcm9sbFZp
ZXdBbmltYXRvciAqKWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJLaXQ6OlNjcm9s
bGluZ0luY3JlbWVudClpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uKWRpcmVjdGlvbgorLSAoQ0dGbG9hdClrZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvcjoo
V0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvciAqKWFuaW1hdG9yIGRpc3RhbmNlRm9ySW5jcmVt
ZW50OihXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KIHsKLSAgICBCT09MIGRpcmVjdGlvbklz
SG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVm
dCB8fCBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OworICAg
IEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09IFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbjo6U2Nyb2xsTGVmdCB8fCBkaXJlY3Rpb24gPT0gV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uOjpTY3JvbGxSaWdodDsKIAogICAgIHN3aXRjaCAoaW5jcmVtZW50KSB7Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6IHsKKyAgICBjYXNlIFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeURvY3VtZW50OiB7CiAgICAgICAgIENHU2l6
ZSBkb2N1bWVudFNpemUgPSBbc2VsZiBjb252ZXJ0UmVjdDpzZWxmLmJvdW5kcyB0b1ZpZXc6c2Vs
Zi53ZWJWaWV3XS5zaXplOwogICAgICAgICByZXR1cm4gZGlyZWN0aW9uSXNIb3Jpem9udGFsID8g
ZG9jdW1lbnRTaXplLndpZHRoIDogZG9jdW1lbnRTaXplLmhlaWdodDsKICAgICB9Ci0gICAgY2Fz
ZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTogeworICAgIGNhc2UgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGFnZTogewogICAgICAgICBDR1NpemUgcGFnZVNp
emUgPSBbc2VsZiBjb252ZXJ0U2l6ZTpDR1NpemVNYWtlKDAsIFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFnZVN0ZXAoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpLCBzZWxmLmJv
dW5kcy5zaXplLmhlaWdodCkpIHRvVmlldzpzZWxmLndlYlZpZXddOwogICAgICAgICByZXR1cm4g
ZGlyZWN0aW9uSXNIb3Jpem9udGFsID8gcGFnZVNpemUud2lkdGggOiBwYWdlU2l6ZS5oZWlnaHQ7
CiAgICAgfQotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU6CisgICAg
Y2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOgogICAgICAgICBy
ZXR1cm4gW3NlbGYgY29udmVydFNpemU6Q0dTaXplTWFrZSgwLCBXZWJDb3JlOjpTY3JvbGxiYXI6
OnBpeGVsc1BlckxpbmVTdGVwKCkpIHRvVmlldzpzZWxmLndlYlZpZXddLmhlaWdodDsKKyAgICBj
YXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBpeGVsOgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmgKaW5kZXggM2ZmODNiNjU1YWNjMGRlN2NhYjgyNGU5Y2EzMzVhMjRl
Mjc1ZTJkOC4uMmVmOTM4ZWNlYmQ1MjljNWRiNGEzZDY1Y2Y1NzE4ZTNiMDk2NTk3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaApAQCAtMjMsMjggKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxv
YXRQb2ludDsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xhc3MgU2Nyb2xsaW5n
SW5jcmVtZW50IDogdWludDhfdCB7Ci0gICAgRG9jdW1lbnQsCi0gICAgUGFnZSwKLSAgICBMaW5l
Ci19OwotCi1lbnVtIGNsYXNzIFNjcm9sbGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3QgewotICAgIFVw
LAotICAgIERvd24sCi0gICAgTGVmdCwKLSAgICBSaWdodAotfTsKLQotfQogCiBAY2xhc3MgVUlT
Y3JvbGxWaWV3OwogQGNsYXNzIFdlYkV2ZW50OwpAQCAtNzEsNyArNTcsNyBAQCBlbnVtIGNsYXNz
IFNjcm9sbGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3QgewogQHByb3RvY29sIFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3JEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIC0gKEJPT0wpaXNT
Y3JvbGxhYmxlRm9yS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxW
aWV3QW5pbWF0b3IgKilhbmltYXRvcjsKLS0gKENHRmxvYXQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5p
bWF0b3I6KFdLS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3IgKilhbmltYXRvciBkaXN0YW5jZUZv
ckluY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50IGluRGlyZWN0
aW9uOihXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbilkaXJlY3Rpb247CistIChDR0Zsb2F0KWtl
eWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yICop
YW5pbWF0b3IgZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5
KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlv
bjsKIC0gKHZvaWQpa2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3JXaWxsU2Nyb2xsOihXS0tleWJv
YXJkU2Nyb2xsVmlld0FuaW1hdG9yICopYW5pbWF0b3I7CiAtICh2b2lkKWtleWJvYXJkU2Nyb2xs
Vmlld0FuaW1hdG9yRGlkRmluaXNoU2Nyb2xsaW5nOihXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1h
dG9yICopYW5pbWF0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IDM5MjdlMmNjZDFjYTEx
NWIwMDZlNjYxMjU0MzAxMWRiZTZkODc4NjkuLmMzMTIzODM0ZTdmYTkzYzI5N2Q3OTdiZTZhOWQ3
ZGVjNWIzOWY3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQURpc3BsYXlMaW5rLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0
UG9pbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZFNjcm9sbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWN0RWRnZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBvcnQgPFdlYktpdC9VSUtpdFNQSS5o
PgpAQCAtNDAsMzQgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBLZXli
b2FyZFNjcm9sbCB7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldDsgLy8gUG9pbnRzIHBl
ciBpbmNyZW1lbnQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1WZWxvY2l0eTsgLy8g
UG9pbnRzIHBlciBzZWNvbmQuCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGZvcmNlOwotCi0gICAg
V2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50OwotICAgIFdlYktpdDo6U2Nyb2xs
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKLX07Ci0KLXN0cnVjdCBLZXlib2FyZFNjcm9sbFBhcmFt
ZXRlcnMgewotICAgIENHRmxvYXQgc3ByaW5nTWFzcyB7IDEgfTsKLSAgICBDR0Zsb2F0IHNwcmlu
Z1N0aWZmbmVzcyB7IDEwOSB9OwotICAgIENHRmxvYXQgc3ByaW5nRGFtcGluZyB7IDIwIH07Ci0K
LSAgICBDR0Zsb2F0IG1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIgeyAyNSB9OwotICAgIENHRmxv
YXQgdGltZVRvTWF4aW11bVZlbG9jaXR5IHsgMSB9OwotCi0gICAgQ0dGbG9hdCBydWJiZXJCYW5k
Rm9yY2UgeyA1MDAwIH07Ci19OwotCi19CiAKIEBwcm90b2NvbCBXS0tleWJvYXJkU2Nyb2xsYWJs
ZUludGVybmFsIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoQk9PTClpc0tleWJvYXJkU2Nyb2xs
YWJsZTsKLS0gKENHRmxvYXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5n
SW5jcmVtZW50KWluY3JlbWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rp
b24pZGlyZWN0aW9uOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvckluY3JlbWVudDooV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHkpaW5jcmVtZW50IGluRGlyZWN0aW9uOihXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb24pZGlyZWN0aW9uOwogLSAodm9pZClzY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNv
cmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwogLSAodm9pZClz
Y3JvbGxXaXRoU2Nyb2xsVG9FeHRlbnRBbmltYXRpb25UbzooQ0dQb2ludClvZmZzZXQ7CiAtIChD
R1BvaW50KWNvbnRlbnRPZmZzZXQ7CkBAIC05Nyw3ICs3NSw3IEBAIHN0cnVjdCBLZXlib2FyZFNj
cm9sbFBhcmFtZXRlcnMgewogICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZUludGVybmFsPiBf
c2Nyb2xsYWJsZTsKICAgICBSZXRhaW5QdHI8Q0FEaXNwbGF5TGluaz4gX2Rpc3BsYXlMaW5rOwog
Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9s
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNj
cm9sbDsKIAogICAgIEJPT0wgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQ7CiAKQEAgLTEy
NCw5ICsxMDIsOSBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAoY29uc3QgV2ViS2l0OjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
JilwYXJhbWV0ZXJzCistIChjb25zdCBXZWJDb3JlOjpLZXlib2FyZFNjcm9sbFBhcmFtZXRlcnMg
JilwYXJhbWV0ZXJzCiB7Ci0gICAgc3RhdGljIGNvbnN0IFdlYktpdDo6S2V5Ym9hcmRTY3JvbGxQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktleWJvYXJk
U2Nyb2xsUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQog
CkBAIC0xMzcsNDcgKzExNSwzMyBAQCBzdHJ1Y3QgS2V5Ym9hcmRTY3JvbGxQYXJhbWV0ZXJzIHsK
ICAgICBfc2Nyb2xsYWJsZSA9IG5pbDsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSB1
bml0VmVjdG9yKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBX
ZWJDb3JlOjpGbG9hdFNpemUgcGVycGVuZGljdWxhckFic29sdXRlVW5pdFZlY3RvcihXZWJDb3Jl
OjpTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgICAgIHJldHVy
biB7IDAsIC0xIH07Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoK
LSAgICAgICAgcmV0dXJuIHsgMCwgMSB9OwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkxlZnQ6Ci0gICAgICAgIHJldHVybiB7IC0xLCAwIH07Ci0gICAgY2FzZSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb246OlNjcm9sbFVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3Jv
bGxEb3duOgogICAgICAgICByZXR1cm4geyAxLCAwIH07Ci0gICAgfQotfQotCi1zdGF0aWMgV2Vi
Q29yZTo6RmxvYXRTaXplIHBlcnBlbmRpY3VsYXJBYnNvbHV0ZVVuaXRWZWN0b3IoV2ViS2l0OjpT
Y3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6VXA6Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6RG93bjoKLSAgICAgICAgcmV0dXJuIHsgMSwgMCB9Owot
ICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OkxlZnQ6Ci0gICAgY2FzZSBXZWJL
aXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb246OlNjcm9sbExlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbFJpZ2h0OgogICAgICAgICByZXR1cm4geyAwLCAxIH07CiAgICAgfQogfQogCi1zdGF0
aWMgV2ViQ29yZTo6Qm94U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikKK3N0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6
OlRvcDsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duOgorICAgIGNh
c2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxEb3duOgogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Qm94U2lkZTo6Qm90dG9tOwotICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJl
Y3Rpb246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExl
ZnQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpCb3hTaWRlOjpMZWZ0OwotICAgIGNhc2UgV2Vi
S2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uOjpTY3JvbGxSaWdodDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkJveFNpZGU6
OlJpZ2h0OwogICAgIH0KIH0KIAotLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Ny
b2xsPilrZXlib2FyZFNjcm9sbEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKKy0gKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6
KDo6V2ViRXZlbnQgKilldmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3Bh
Y2VLZXkgPSAweDIwOwogCkBAIC0yNTUsNTAgKzIxOSw1MiBAQCBzdGF0aWMgV2ViQ29yZTo6Qm94
U2lkZSBib3hTaWRlKFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAg
ICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CiAg
ICAgICAgICAgICBpZiAoYWx0UHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0
OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2U7Ci0gICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpT
Y3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CisgICAgICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgY2FzZSBLZXk6
OlVwQXJyb3c6CiAgICAgICAgIGNhc2UgS2V5OjpEb3duQXJyb3c6CiAgICAgICAgICAgICBpZiAo
YWx0UHJlc3NlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNy
ZW1lbnQ6OlBhZ2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5OjpTY3JvbGxCeVBhZ2U7CiAgICAgICAgICAgICBpZiAoY21kUHJlc3NlZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50Owot
ICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlE
b2N1bWVudDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6
U2Nyb2xsQnlMaW5lOwogICAgICAgICBjYXNlIEtleTo6UGFnZVVwOgogICAgICAgICBjYXNlIEtl
eTo6UGFnZURvd246CiAgICAgICAgIGNhc2UgS2V5OjpTcGFjZToKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOwogICAgICAgICBjYXNlIEtl
eTo6T3RoZXI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlMaW5lOwogICAgICAgICB9
OwogICAgIH0oKTsKIAogICAgIGF1dG8gZGlyZWN0aW9uID0gXigpIHsKICAgICAgICAgc3dpdGNo
IChrZXkpIHsKICAgICAgICAgY2FzZSBLZXk6OkxlZnRBcnJvdzoKLSAgICAgICAgICAgIHJldHVy
biBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbExlZnQ7CiAgICAgICAgIGNhc2UgS2V5OjpS
aWdodEFycm93OgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9u
OjpSaWdodDsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNj
cm9sbFJpZ2h0OwogICAgICAgICBjYXNlIEtleTo6VXBBcnJvdzoKICAgICAgICAgY2FzZSBLZXk6
OlBhZ2VVcDoKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6
VXA7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxV
cDsKICAgICAgICAgY2FzZSBLZXk6OkRvd25BcnJvdzoKICAgICAgICAgY2FzZSBLZXk6OlBhZ2VE
b3duOgotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3du
OworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsRG93
bjsKICAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgotICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJl
c3NlZCA/IFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFdlYktpdDo6U2Nyb2xsaW5n
RGlyZWN0aW9uOjpEb3duOworICAgICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsVXAgOiBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbERvd247CiAgICAgICAgIGNhc2UgS2V5OjpPdGhlcjoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdlYktpdDo6U2Nyb2xsaW5nRGly
ZWN0aW9uOjpEb3duOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlv
bjo6U2Nyb2xsRG93bjsKICAgICAgICAgfTsKICAgICB9KCk7CiAKKyAgICAvLyBGSVhNRSAoMjI3
NDYxKTogUmVwbGFjZSB3aXRoIGNhbGwgdG8gV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwgY29uc3Ry
dWN0b3IuCisKICAgICBDR0Zsb2F0IHNjcm9sbERpc3RhbmNlID0gW19zY3JvbGxhYmxlIGRpc3Rh
bmNlRm9ySW5jcmVtZW50OmluY3JlbWVudCBpbkRpcmVjdGlvbjpkaXJlY3Rpb25dOwogCi0gICAg
V2ViS2l0OjpLZXlib2FyZFNjcm9sbCBzY3JvbGw7Ci0gICAgc2Nyb2xsLm9mZnNldCA9IHVuaXRW
ZWN0b3IoZGlyZWN0aW9uKS5zY2FsZWQoc2Nyb2xsRGlzdGFuY2UpOwotICAgIHNjcm9sbC5pbmNy
ZW1lbnQgPSBpbmNyZW1lbnQ7CisgICAgV2ViQ29yZTo6S2V5Ym9hcmRTY3JvbGwgc2Nyb2xsOwor
ICAgIHNjcm9sbC5vZmZzZXQgPSBXZWJDb3JlOjp1bml0VmVjdG9yRm9yU2Nyb2xsRGlyZWN0aW9u
KGRpcmVjdGlvbikuc2NhbGVkKHNjcm9sbERpc3RhbmNlKTsKKyAgICBzY3JvbGwuZ3JhbnVsYXJp
dHkgPSBpbmNyZW1lbnQ7CiAgICAgc2Nyb2xsLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKICAgICBz
Y3JvbGwubWF4aW11bVZlbG9jaXR5ID0gc2Nyb2xsLm9mZnNldC5zY2FsZWQoc2VsZi5wYXJhbWV0
ZXJzLm1heGltdW1WZWxvY2l0eU11bHRpcGxpZXIpOwogCkBAIC0zMjcsNyArMjkzLDcgQEAgc3Rh
dGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiAgICAgX3Njcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQgPSBZRVM7CiAgICAg
X2N1cnJlbnRTY3JvbGwgPSBzY3JvbGw7CiAKLSAgICBpZiAoc2Nyb2xsLT5pbmNyZW1lbnQgPT0g
V2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50KSB7CisgICAgaWYgKHNjcm9sbC0+
Z3JhbnVsYXJpdHkgPT0gV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5RG9jdW1l
bnQpIHsKICAgICAgICAgX3ZlbG9jaXR5ID0geyB9OwogICAgICAgICBbc2VsZiBzdG9wQW5pbWF0
ZWRTY3JvbGxdOwogICAgICAgICBbc2VsZiBzdG9wRGlzcGxheUxpbmtdOwpAQCAtMzYwLDE2ICsz
MjYsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkJveFNpZGUgYm94U2lkZShXZWJLaXQ6OlNjcm9sbGlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogfQogCi1zdGF0aWMgV2ViQ29yZTo6RmxvYXRQ
b2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBhLCBXZWJD
b3JlOjpGbG9hdFBvaW50IGIsIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0aW9uIGRpcmVjdGlvbikK
K3N0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihXZWJD
b3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvcmU6OkZsb2F0UG9pbnQgYiwgV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNh
c2UgV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uOjpTY3JvbGxVcDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9p
bnQoYS54KCksIHN0ZDo6bWluKGEueSgpLCBiLnkoKSkpOwotICAgIGNhc2UgV2ViS2l0OjpTY3Jv
bGxpbmdEaXJlY3Rpb246OkRvd246CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246
OlNjcm9sbERvd246CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KGEueCgpLCBz
dGQ6Om1heChhLnkoKSwgYi55KCkpKTsKLSAgICBjYXNlIFdlYktpdDo6U2Nyb2xsaW5nRGlyZWN0
aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxMZWZ0
OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChzdGQ6Om1pbihhLngoKSwgYi54
KCkpLCBhLnkoKSk7Ci0gICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0RpcmVjdGlvbjo6UmlnaHQ6
CisgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb246OlNjcm9sbFJpZ2h0OgogICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludChzdGQ6Om1heChhLngoKSwgYi54KCkpLCBhLnko
KSk7CiAgICAgfQogCkBAIC00NDYsNyArNDEyLDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9p
bnQgZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgYSwgV2ViQ28K
ICAgICAgICAgICAgIC8vIFRoZSBzY3JvbGwgdmlldyBjYW5ub3Qgc2Nyb2xsIGluIHRoaXMgZGly
ZWN0aW9uLCBhbmQgaXMgcnViYmVyLWJhbmRpbmcuCiAgICAgICAgICAgICAvLyBBcHBseSBhIGNv
bnN0YW50IGFuZCBzaWduaWZpY2FudCBmb3JjZTsgb3RoZXJ3aXNlLCB0aGUgZm9yY2UgZm9yIGEK
ICAgICAgICAgICAgIC8vIHNpbmdsZS1saW5lIGluY3JlbWVudCBpcyBub3Qgc3Ryb25nIGVub3Vn
aCB0byBydWJiZXItYmFuZCBwZXJjZXB0aWJseS4KLSAgICAgICAgICAgIGZvcmNlID0gdW5pdFZl
Y3RvcihkaXJlY3Rpb24pLnNjYWxlZChzZWxmLnBhcmFtZXRlcnMucnViYmVyQmFuZEZvcmNlKTsK
KyAgICAgICAgICAgIGZvcmNlID0gV2ViQ29yZTo6dW5pdFZlY3RvckZvclNjcm9sbERpcmVjdGlv
bihkaXJlY3Rpb24pLnNjYWxlZChzZWxmLnBhcmFtZXRlcnMucnViYmVyQmFuZEZvcmNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgb3IgZXhjZWVkZWQgdGhlIG1h
eGltdW0gdmVsb2NpdHksIHN0b3AgYXBwbHlpbmcgYW55IGZvcmNlLgpAQCAtNTY2LDcgKzUzMiw3
IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGZhcnRoZXN0UG9pbnRJbkRpcmVjdGlvbihX
ZWJDb3JlOjpGbG9hdFBvaW50IGEsIFdlYkNvCiAgICAgcmV0dXJuIFtfZGVsZWdhdGUgaXNTY3Jv
bGxhYmxlRm9yS2V5Ym9hcmRTY3JvbGxWaWV3QW5pbWF0b3I6c2VsZl07CiB9CiAKLS0gKENHRmxv
YXQpZGlzdGFuY2VGb3JJbmNyZW1lbnQ6KFdlYktpdDo6U2Nyb2xsaW5nSW5jcmVtZW50KWluY3Jl
bWVudCBpbkRpcmVjdGlvbjooV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24pZGlyZWN0aW9uCist
IChDR0Zsb2F0KWRpc3RhbmNlRm9ySW5jcmVtZW50OihXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0
eSlpbmNyZW1lbnQgaW5EaXJlY3Rpb246KFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbilkaXJlY3Rp
b24KIHsKICAgICBhdXRvIHNjcm9sbFZpZXcgPSBfc2Nyb2xsVmlldy5nZXRBdXRvcmVsZWFzZWQo
KTsKICAgICBpZiAoIXNjcm9sbFZpZXcpCkBAIC01NzUsMTYgKzU0MSwxOCBAQCBzdGF0aWMgV2Vi
Q29yZTo6RmxvYXRQb2ludCBmYXJ0aGVzdFBvaW50SW5EaXJlY3Rpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBhLCBXZWJDbwogICAgIGNvbnN0IENHRmxvYXQgZGVmYXVsdFBhZ2VTY3JvbGxGcmFjdGlv
biA9IDAuODsKICAgICBjb25zdCBDR0Zsb2F0IGRlZmF1bHRMaW5lU2Nyb2xsSGVpZ2h0ID0gNDA7
CiAKLSAgICBCT09MIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBXZWJLaXQ6
OlNjcm9sbGluZ0RpcmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0gV2ViS2l0OjpTY3JvbGxp
bmdEaXJlY3Rpb246OlJpZ2h0OworICAgIEJPT0wgZGlyZWN0aW9uSXNIb3Jpem9udGFsID0gZGly
ZWN0aW9uID09IFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbjo6U2Nyb2xsTGVmdCB8fCBkaXJlY3Rp
b24gPT0gV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uOjpTY3JvbGxSaWdodDsKIAogICAgIGlmICgh
X2RlbGVnYXRlUmVzcG9uZHNUb0Rpc3RhbmNlRm9ySW5jcmVtZW50KSB7CiAgICAgICAgIHN3aXRj
aCAoaW5jcmVtZW50KSB7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6
OkRvY3VtZW50OgorICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5OjpTY3Jv
bGxCeURvY3VtZW50OgogICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbklzSG9yaXpvbnRhbCA/
IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lkdGggOiBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhl
aWdodDsKLSAgICAgICAgY2FzZSBXZWJLaXQ6OlNjcm9sbGluZ0luY3JlbWVudDo6UGFnZToKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eTo6U2Nyb2xsQnlQYWdlOgogICAg
ICAgICAgICAgcmV0dXJuIChkaXJlY3Rpb25Jc0hvcml6b250YWwgPyBzY3JvbGxWaWV3LmZyYW1l
LnNpemUud2lkdGggOiBzY3JvbGxWaWV3LmZyYW1lLnNpemUuaGVpZ2h0KSAqIGRlZmF1bHRQYWdl
U2Nyb2xsRnJhY3Rpb247Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQ6
OkxpbmU6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHk6OlNjcm9sbEJ5
TGluZToKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TGluZVNjcm9sbEhlaWdodCAqIHNjcm9s
bFZpZXcuem9vbVNjYWxlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5
OjpTY3JvbGxCeVBpeGVsOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAyYWIx
MDg0YzVjZGM0YjNmYThlNGViNzI1NTQxYjY4NjA1MDI0ODRlLi4zNzVlNWU5NzM3MGQ3M2VkY2Ux
YWZlMWRjNzA0YTg1MTkyMTQyN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNDYzLDMxICs0NjMsMzQgQEAgYm9vbCBX
ZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5n
JiBzZWxlY3RvciwgS2V5Ym8KICAgICAvLyBTaG91bGQgc3VjaCBub24tZWRpdGluZyBiZWhhdmlv
cnMgYmUgaW1wbGVtZW50ZWQgaW4gRWRpdG9yIG9yIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93
RXZlbnRIYW5kbGVyKCkgcGVyaGFwcz8KICAgICAKICAgICBib29sIGRpZFBlcmZvcm1BY3Rpb24g
PSBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWZyYW1lLT5zZXR0aW5ncygpLmV2ZW50SGFuZGxlckRy
aXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChzZWxl
Y3RvciA9PSAibW92ZVVwOiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDoiKQorICAgICAgICAgICAg
ZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxC
eVBhZ2UpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudDoiKSB7CisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICAgICAgZGlkUGVy
Zm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURv
Y3VtZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZURvd246IikKKyAg
ICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxE
b3duLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRv
RW5kT2ZQYXJhZ3JhcGg6IikKKyAgICAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7CisgICAgICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlE
b2N1bWVudCk7CisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICB9IGVsc2UgaWYg
KHNlbGVjdG9yID09ICJtb3ZlTGVmdDoiKQorICAgICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAg
IGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZExlZnQ6IikKKyAgICAgICAgICAgIGRpZFBl
cmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBh
Z2UpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCisgICAgICAg
ICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQs
IFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3ZlV29yZFJp
Z2h0OiIpCisgICAgICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQo
KSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CisgICAgfQogCi0gICAgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVXA6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7Ci0gICAgZWxz
ZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6IikgewotICAgICAg
ICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9s
bEJ5RG9jdW1lbnQpOwotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uIHw9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwotICAgIH0gZWxzZSBpZiAoc2Vs
ZWN0b3IgPT0gIm1vdmVEb3duOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlVG9FbmRPZlBhcmFncmFwaDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0
aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7Ci0gICAgICAg
IGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3Jv
bGxCeURvY3VtZW50KTsKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiB8PSBzY3JvbGwobV9wYWdl
LmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICB9IGVsc2UgaWYgKHNl
bGVjdG9yID09ICJtb3ZlTGVmdDoiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKLSAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVdvcmRMZWZ0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeVBhZ2UpOwotICAgIGVsc2Ug
aWYgKHNlbGVjdG9yID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCisgICAgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlVG9MZWZ0RW5kT2ZMaW5lOiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBt
X3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpIDogbV9w
YWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlUmlnaHQ6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2Uu
Z2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUpOwotICAgIGVsc2UgaWYgKHNlbGVjdG9y
ID09ICJtb3ZlV29yZFJpZ2h0OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlQYWdlKTsKICAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVRvUmlnaHRFbmRPZkxpbmU6IikKICAgICAgICAgZGlkUGVyZm9ybUFj
dGlvbiA9IG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBXZWJDb3JlOjpVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3
YXJkKCkgOiBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29CYWNrKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>