<?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>244128</bug_id>
          
          <creation_ts>2022-08-19 10:03:15 -0700</creation_ts>
          <short_desc>Add experimental feature to control image animation play/pause state</short_desc>
          <delta_ts>2022-09-20 15:46:07 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=245232</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>245399</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Hoffman">jhoffman23</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1892441</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-19 10:03:15 -0700</bug_when>
    <thetext>Provide a setting to disable image animations, while also adding some new interfaces to control different animations at an individual and page-level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892442</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-19 10:03:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/98887677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892494</commentid>
    <comment_count>2</comment_count>
      <attachid>461738</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-19 14:08:28 -0700</bug_when>
    <thetext>Created attachment 461738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892496</commentid>
    <comment_count>3</comment_count>
      <attachid>461738</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-08-19 14:13:47 -0700</bug_when>
    <thetext>Comment on attachment 461738
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:787
&gt; +    if (auto* cachedImage = this-&gt;cachedImage()) {

looks like a lot of duplicated code here - can you condense into helper methods

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:382
&gt; +    if (!rootElement || !rootElement-&gt;animationsPaused() || m_page-&gt;settings().animatedImagesDisabled())

do we need to check m_page for not nil?

&gt; Source/WebCore/testing/Internals.cpp:1061
&gt; +    Document* document = contextDocument();

auto*

&gt; Source/WebCore/testing/Internals.cpp:1065
&gt; +    Page* page = document-&gt;page();

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892498</commentid>
    <comment_count>4</comment_count>
      <attachid>461738</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-08-19 14:28:53 -0700</bug_when>
    <thetext>Comment on attachment 461738
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:509
&gt; +        m_modelPlayer-&gt;setAnimationIsPlaying(false, [] (bool success) mutable {

Not 100% sure this will compile, but can you do this:

m_modelPlayer-&gt;setAnimationIsPlaying(false, [] (bool) mutable { }

(i.e. not assigning a name to the bool, and therefore not needing UNUSED_PARAM)?

&gt; Source/WebCore/html/HTMLImageElement.cpp:68
&gt; +#include &quot;UserAgentStyleSheets.h&quot;

You added a bunch of new includes in this file -- are they all necessary in this patch? (I know you&apos;ve split your original patch up intentionally, so maybe artifacts of that?)

&gt; Source/WebCore/html/HTMLImageElement.cpp:425
&gt; +            if (is&lt;BitmapImage&gt;(*image)) {

This can be:

if (auto* bitmapImage = dynamicDowncast&lt;BitmapImage&gt;(image))
    bitmapImage-&gt;updateDocumentOnRender(document());

dynamicDowncast will return a nullptr if the object isn&apos;t the expected type.

&gt; Source/WebCore/page/Page.cpp:4037
&gt; +            if (is&lt;HTMLImageElement&gt;(element)) {

I think you can use dynamicDowncasts here too.

&gt; Source/WebCore/page/Page.cpp:4057
&gt; +                    if (auto cachedBackgroundImage = renderer-&gt;style().backgroundLayers().image()-&gt;cachedImage()) {

I believe:

renderer-&gt;style().backgroundLayers().image()-&gt;cachedImage()

Returns a CachedImage*, so you should use auto* instead of auto.

&gt; Source/WebCore/page/Page.cpp:4058
&gt; +                        if (auto backgroundImage = cachedBackgroundImage-&gt;image()) {

I think cachedBackgroundImage-&gt;image() also returns a pointer type, so this should also be auto*.

(If any of these return a RefPtr&lt;T&gt; rather than T*, then I believe just `auto` is fine)

&gt; Source/WebCore/page/Page.cpp:4059
&gt; +                            if (backgroundImage &amp;&amp; is&lt;BitmapImage&gt;(backgroundImage)) {

I think is&lt;T&gt; returns false for nullptr objects, so the null check is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892503</commentid>
    <comment_count>5</comment_count>
      <attachid>461738</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-08-19 14:37:19 -0700</bug_when>
    <thetext>Comment on attachment 461738
Patch

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

&gt; COMMIT_MESSAGE:3
&gt; +

It has been requested that the Radar number be included underneath the bugzilla URL. If you rerun `git webkit setup`, this will be part of the commit message template.

&gt; Source/WebCore/platform/graphics/Image.h:147
&gt; +    WEBCORE_EXPORT virtual bool isAnimating() const;

Looks like you added an implementation to Image.cpp of this:

bool Image::isAnimating() const
{
    return false;
}

Is that necessary, or can we just keep what exists today but with the WEBCORE_EXPORT added? i.e.:

WEBCORE_EXPORT virtual bool isAnimating() const { return false };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892507</commentid>
    <comment_count>6</comment_count>
      <attachid>461738</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-08-19 14:40:48 -0700</bug_when>
    <thetext>Comment on attachment 461738
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:77
&gt; +    m_disableImageAnimation = document.settings().animatedImagesDisabled();

Should be part of the static initializer list. Also, per coding style, since this is a boolean variable, it needs a prefix, for e.g. `m_shouldDisableImageAnimation`.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:509
&gt; +        m_modelPlayer-&gt;setAnimationIsPlaying(false, [] (bool success) mutable {

Why is the lambda mutable?

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:535
&gt; +    m_allowIndividualAnimation = true;

Missing prefix for boolean variables (per coding style).

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:541
&gt; +    m_modelPlayer-&gt;setAnimationIsPlaying(false, [] (bool success) mutable {

Why mutable?

&gt; Source/WebCore/html/HTMLImageElement.cpp:424
&gt; +        if (auto* image = cachedImage-&gt;image()) {

if (auto* image = dynamicDowncast&lt;BitmapImage&gt;(cachedImage-&gt;image()))
    image-&gt;updateDocumentOnRender(document());

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:787
&gt;&gt; +    if (auto* cachedImage = this-&gt;cachedImage()) {
&gt; 
&gt; looks like a lot of duplicated code here - can you condense into helper methods

I agree it would be nice to add something like a cachedBitmapImage() getter on HTMLImageElement.

&gt; Source/WebCore/html/HTMLImageElement.cpp:789
&gt; +            if (is&lt;BitmapImage&gt;(*image)) {

Should use dynamicDowncast like above.

&gt; Source/WebCore/html/HTMLImageElement.cpp:802
&gt; +            if (is&lt;BitmapImage&gt;(*image)) {

ditto.

&gt; Source/WebCore/html/HTMLImageElement.cpp:815
&gt; +        if (auto* image = cachedImage-&gt;image()) {

ditto.

&gt; Source/WebCore/html/HTMLImageElement.cpp:1020
&gt; +            if (is&lt;BitmapImage&gt;(*image)) {

ditto

&gt; Source/WebCore/html/HTMLImageElement.h:160
&gt; +    bool isAnimating();

Can this be const?

&gt; Source/WebCore/html/HTMLImageElement.h:161
&gt; +    bool isAnimatedImage();

ditto

&gt; Source/WebCore/page/Page.cpp:4036
&gt; +        for (auto&amp; element : descendantsOfType&lt;Element&gt;(const_cast&lt;ContainerNode&amp;&gt;(document.rootNode()))) {

I think that document.rootNode() is always the document itself.

&gt; Source/WebCore/page/Page.cpp:4037
&gt; +            if (is&lt;HTMLImageElement&gt;(element)) {

Could use dynamicDowncast.

&gt; Source/WebCore/page/Page.cpp:4043
&gt; +            if (is&lt;SVGSMILElement&gt;(element)) {

else if ?

Could use dynamicDowncast.

&gt; Source/WebCore/page/Page.cpp:4049
&gt; +            if (is&lt;HTMLModelElement&gt;(element)) {

else if ?

Could use dynamicDowncast.

&gt; Source/WebCore/page/Page.cpp:4059
&gt; +                            if (backgroundImage &amp;&amp; is&lt;BitmapImage&gt;(backgroundImage)) {

is&lt;&gt; already does the null check for you. Also, can probably use dynamicDowncast()

&gt; Source/WebCore/page/Page.cpp:4079
&gt; +        for (auto&amp; element : descendantsOfType&lt;Element&gt;(const_cast&lt;ContainerNode&amp;&gt;(document.rootNode()))) {

document.rootNode() is the document AFAIK

&gt; Source/WebCore/page/Page.cpp:4109
&gt; +bool Page::isAllAnimationPaused()

Should probably be inlined in the header given how trivial it is.

Also isAllAnimationPaused -&gt; areAllAnimationsPaused?

&gt; Source/WebCore/page/Page.h:1349
&gt; +    bool m_pageAnimationsUnpaused { false };

m_hasUnpausedAnimation? The name is a bit confusing at the moment.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:166
&gt; +    bool isAnimationFinished() { return m_animationFinished; };

Should be const:
`bool isAnimationFinished() const { return m_animationFinished; };`

&gt; Source/WebCore/platform/graphics/BitmapImage.h:256
&gt; +    bool m_disableImageAnimation { false };

Missing prefix.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:257
&gt; +    bool m_allowIndividualAnimation { false };

Missing prefix.

&gt; Source/WebCore/svg/SVGElement.cpp:163
&gt; +    , m_allowIndividualAnimation(false)

Please use inline initialization in the header.

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:1245
&gt; +    m_allowIndividualAnimation = !m_allowIndividualAnimation;

= true; would be clearer I think.

&gt; Source/WebCore/svg/animation/SVGSMILElement.cpp:1253
&gt; +    m_allowIndividualAnimation = !m_allowIndividualAnimation;

= false; would be clearer I think.

&gt; LayoutTests/accessibility/mac/disable-animations-enabled.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

&lt;!DOCTYPE html&gt;

&gt; LayoutTests/accessibility/mac/disable-animations-enabled.html:7
&gt; +&lt;body id=&quot;body&quot;&gt;

id seems unnecessary.

&gt; LayoutTests/accessibility/mac/disable-animations-enabled.html:9
&gt; +    jsTestIsAsync = true;

Please add a `description(&quot;This tests that animations are disabled when the disable animated images setting is turned on.&quot;);` call before this.

&gt; LayoutTests/accessibility/mac/disable-animations-enabled.html:13
&gt; +        debug(&quot;This tests that animations are disabled when the disable animated images setting is turned on.&quot;);		

And drop this.

&gt; LayoutTests/accessibility/mac/disable-animations-play-individual-animation.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

&lt;!DOCTYPE html&gt;

&gt; LayoutTests/accessibility/mac/disable-animations-play-individual-animation.html:7
&gt; +&lt;body id=&quot;body&quot;&gt;

id seems unnecessary?

&gt; LayoutTests/accessibility/mac/disable-animations-play-individual-animation.html:14
&gt; +        debug(&quot;This tests that when image animation is disabled, they can be toggled on and off individually.&quot;);		

Same comment about using description() instead of debug for this.

&gt; LayoutTests/accessibility/mac/disable-animations-play-individual-animation.html:27
&gt; +&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;

Not needed.

&gt; LayoutTests/accessibility/mac/disable-animations-toggle-page-animations.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

&lt;!DOCTYPE html&gt;

&gt; LayoutTests/accessibility/mac/disable-animations-toggle-page-animations.html:7
&gt; +&lt;body id=&quot;body&quot;&gt;

unnecessary id?

&gt; LayoutTests/accessibility/mac/disable-animations-toggle-page-animations.html:15
&gt; +        debug(&quot;This tests that when image animation is disabled, all animations on a page can be toggled on and off.&quot;);		

Please use description()

&gt; LayoutTests/accessibility/mac/disable-animations-toggle-page-animations.html:29
&gt; +&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;

Not needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892553</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-19 16:45:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 461738 [details]
&gt; Patch

Thanks for all of the comments!

&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:4109
&gt; &gt; +bool Page::isAllAnimationPaused()
&gt; 
&gt; Should probably be inlined in the header given how trivial it is.
&gt; 

The style checker gave me an error earlier when trying to WEBCORE_EXPORT an inline method. Is this expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892554</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-08-19 16:46:22 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #7)
&gt; (In reply to Chris Dumez from comment #6)
&gt; &gt; Comment on attachment 461738 [details]
&gt; &gt; Patch
&gt; 
&gt; Thanks for all of the comments!
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/Page.cpp:4109
&gt; &gt; &gt; +bool Page::isAllAnimationPaused()
&gt; &gt; 
&gt; &gt; Should probably be inlined in the header given how trivial it is.
&gt; &gt; 
&gt; 
&gt; The style checker gave me an error earlier when trying to WEBCORE_EXPORT an
&gt; inline method. Is this expected?

Just make it inline and DON&apos;T add WEBCORE_EXPORT. There is no need to export an inline function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892575</commentid>
    <comment_count>9</comment_count>
      <attachid>461746</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-19 18:02:36 -0700</bug_when>
    <thetext>Created attachment 461746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892985</commentid>
    <comment_count>10</comment_count>
      <attachid>461798</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-22 09:53:56 -0700</bug_when>
    <thetext>Created attachment 461798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893010</commentid>
    <comment_count>11</comment_count>
      <attachid>461746</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-08-22 11:00:33 -0700</bug_when>
    <thetext>Comment on attachment 461746
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:781
&gt; +    if (auto* cachedImage = this-&gt;cachedImage()) {
&gt; +        if (auto* image = cachedImage-&gt;image()) {
&gt; +            if (auto* bitmapImage = dynamicDowncast&lt;BitmapImage&gt;(*image))
&gt; +                return bitmapImage;
&gt; +        }
&gt; +    }
&gt; +    return nullptr;

Can this be:

if (auto* cachedImage = this-&gt;cachedImage())
    return dynamicDowncast&lt;BitmapImage&gt;(cachedImage-&gt;image());
return nullptr;

&gt; Source/WebCore/html/HTMLImageElement.cpp:1004
&gt; +    if (auto* cachedImage = this-&gt;cachedImage()) {
&gt; +        if (auto* bitmapImage = cachedBitmapImage())
&gt; +            return cachedImage-&gt;image()-&gt;isAnimated() || !bitmapImage-&gt;isAnimationFinished();
&gt; +    }
&gt; +    return false;

Can cachedImage-&gt;image()-&gt;isAnimated() return true without a non-null bitmap image? If so, maybe that shouldn&apos;t be gated by the presence of a cachedBitmapImage(). Maybe something like this:

bool HTMLImageElement::isAnimatedImage() const
{
    if (auto* cachedImage = this-&gt;cachedImage()) {
        if (cachedImage-&gt;image()-&gt;isAnimated())
            return true;
    }

    if (auto* bitmapImage = cachedBitmapImage())
        return !bitmapImage-&gt;isAnimationFinished();

    return false;
}

&gt; Source/WebCore/page/Page.cpp:4056
&gt; +                        if (auto* backgroundImage = cachedBackgroundImage-&gt;image()) {
&gt; +                            if (backgroundImage) {

Is this `if (backgroundImage)` unnecessary when you have `if (auto* backgroundImage = cachedBackgroundImage-&gt;image())` directly above?

&gt; Source/WebCore/page/Page.cpp:4057
&gt; +                                BitmapImage&amp; bitmapImage = downcast&lt;BitmapImage&gt;(*backgroundImage);

Does auto&amp; rather than BitmapImage&amp; work here?

&gt; Source/WebCore/page/Page.cpp:4078
&gt; +                foundAnimatedImage = true;

Can we break out of this loop when we set `foundAnimatedImage = true;`?

&gt; Source/WebCore/page/Page.cpp:4087
&gt; +                        if (auto* backgroundImage = cachedBackgroundImage-&gt;image()) {
&gt; +                            if (backgroundImage &amp;&amp; backgroundImage-&gt;isAnimated())

Is the `backgroundImage` null check necessary here when we have` if (auto* backgroundImage = cachedBackgroundImage-&gt;image())` directly above?

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:382
&gt; +    if (!rootElement || !rootElement-&gt;animationsPaused() || m_page-&gt;settings().animatedImagesDisabled() || !m_page)

Here we added:

|| m_page-&gt;settings().animatedImagesDisabled() || !m_page

Seems like we null check after dereferencing m_page via -&gt; — should these be flipped?

&gt; Source/WebCore/testing/Internals.cpp:1069
&gt; +    auto* page = document-&gt;page();
&gt; +    if (!page)
&gt; +        return;
&gt; +
&gt; +    return page-&gt;toggleAllAnimations();

This is a void method, so we probably only need `page-&gt;toggleAllAnimations();` rather than `return page-&gt;toggleAllAnimations();`, right?

Also, I wonder if this could be:

if (auto* page = document-&gt;page())
   page-&gt;toggleAllAnimations();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893017</commentid>
    <comment_count>12</comment_count>
      <attachid>461799</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-22 11:59:05 -0700</bug_when>
    <thetext>Created attachment 461799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893385</commentid>
    <comment_count>13</comment_count>
      <attachid>461834</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-23 17:05:28 -0700</bug_when>
    <thetext>Created attachment 461834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893389</commentid>
    <comment_count>14</comment_count>
      <attachid>461834</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-08-23 17:26:23 -0700</bug_when>
    <thetext>Comment on attachment 461834
Patch

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

&gt; Source/WebCore/page/Page.cpp:4059
&gt; +                    if (auto* cachedBackgroundImage = renderer-&gt;style().backgroundLayers().image()-&gt;cachedImage()) {

Is it possible for:

renderer-&gt;style().backgroundLayers().image()

To be null when we deref it for -&gt;cachedImage() here?

&gt; Source/WebCore/page/Page.cpp:4096
&gt; +                    if (auto* cachedBackgroundImage = renderer-&gt;style().backgroundLayers().image()-&gt;cachedImage()) {

Is it possible for:

renderer-&gt;style().backgroundLayers().image()

To be null when we deref it for -&gt;cachedImage() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893391</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-23 17:32:26 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #14)
&gt; Is it possible for:
&gt; 
&gt; renderer-&gt;style().backgroundLayers().image()
&gt; 
&gt; To be null when we deref it for -&gt;cachedImage() here?

Yeah, I think it can be—good call out. I can guard for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893393</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-23 17:35:27 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #14)
&gt; Is it possible for:
&gt; 
&gt; renderer-&gt;style().backgroundLayers().image()
&gt; 
&gt; To be null when we deref it for -&gt;cachedImage() here?

Looking at this more, I think the condition on the line above: `if (renderer-&gt;style().hasBackgroundImage())` will do that null check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893511</commentid>
    <comment_count>17</comment_count>
      <attachid>461844</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-24 10:42:19 -0700</bug_when>
    <thetext>Created attachment 461844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893599</commentid>
    <comment_count>18</comment_count>
      <attachid>461844</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-08-24 16:49:10 -0700</bug_when>
    <thetext>Comment on attachment 461844
Patch

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

&gt; COMMIT_MESSAGE:7
&gt; +This patch adds a new experimental AX feature, which when enabled, disables image animations. This includes regular bitmap images, background images, SVG animations, and support for the &lt;model&gt; element. Additionally, we provide new interfaces to control animations at the page and individual image level.

Can you split this patch into three patches: one for BitmapImage, another for the SVG image and the third for the &lt;model&gt; element?

&gt; Source/WebCore/html/HTMLImageElement.cpp:777
&gt; +void HTMLImageElement::playAnimation()

What does playAnimation() mean? Does it mean resume or restart?

&gt; Source/WebCore/html/HTMLImageElement.cpp:779
&gt; +    if (auto* image = cachedBitmapImage()) {

Why do we care about BitmapImage only here? The image can be SVGImage which may have animated elements.

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:70
&gt; +void BitmapImage::updateFromDocument(const Document&amp; document)

This is layering violation. We should not be accessing Document in the platform directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893612</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-24 17:04:28 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #18)

&gt; Can you split this patch into three patches: one for BitmapImage, another
&gt; for the SVG image and the third for the &lt;model&gt; element?
&gt; 

Yes! I will update this one to just do BitmapImages, and have those other two follow. 

&gt; &gt; Source/WebCore/html/HTMLImageElement.cpp:777
&gt; &gt; +void HTMLImageElement::playAnimation()
&gt; 
&gt; What does playAnimation() mean? Does it mean resume or restart?

It means resume—I&apos;ll be more explicit and rename it. 

&gt; &gt; Source/WebCore/html/HTMLImageElement.cpp:779
&gt; &gt; +    if (auto* image = cachedBitmapImage()) {
&gt; 
&gt; Why do we care about BitmapImage only here? The image can be SVGImage which
&gt; may have animated elements.

Understood. In the SVG patch this will handle SVGImages. 

&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:70
&gt; &gt; +void BitmapImage::updateFromDocument(const Document&amp; document)
&gt; 
&gt; This is layering violation. We should not be accessing Document in the
&gt; platform directory.

Gotcha. I&apos;ll revert this back to updateFromSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893745</commentid>
    <comment_count>20</comment_count>
      <attachid>461861</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-25 10:52:28 -0700</bug_when>
    <thetext>Created attachment 461861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893755</commentid>
    <comment_count>21</comment_count>
      <attachid>461861</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-25 11:00:42 -0700</bug_when>
    <thetext>Comment on attachment 461861
Patch

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

&gt; Source/WebCore/page/Page.h:982
&gt; +    bool areAllAnimationsPaused() { return !m_hasUnpausedAnimations; }
&gt; +    WEBCORE_EXPORT void toggleAllAnimations();
&gt; +    bool containsAnimatedImages();

If these are just for testing (and I think they are), please name them `toggleAllAnimationsForTesting()`, `containsAnimatedImagesForTesting()` etc, since they are expensive and we don&apos;t want to start calling them in production code.

Also containsAnimatedImages() should be `const`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893780</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-25 12:25:36 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #21)
&gt; 
&gt; If these are just for testing (and I think they are), please name them
&gt; `toggleAllAnimationsForTesting()`, `containsAnimatedImagesForTesting()` etc,
&gt; since they are expensive and we don&apos;t want to start calling them in
&gt; production code.

In a follow up patch, the intention is that both `toggleAllAnimations` and `containsAnimatedImages` will be used to control page animations. However, they are called very infrequently and only ever when the AnimatedImagesDisabled setting is enabled. Would renaming them to something like `toggleAllAnimationsWhenDisabled` make that more clear? I can also add a check in them to ensure the setting is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893788</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-25 12:42:00 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #22)
&gt; (In reply to Simon Fraser (smfr) from comment #21)
&gt; &gt; 
&gt; &gt; If these are just for testing (and I think they are), please name them
&gt; &gt; `toggleAllAnimationsForTesting()`, `containsAnimatedImagesForTesting()` etc,
&gt; &gt; since they are expensive and we don&apos;t want to start calling them in
&gt; &gt; production code.
&gt; 
&gt; In a follow up patch, the intention is that both `toggleAllAnimations` and
&gt; `containsAnimatedImages` will be used to control page animations. However,
&gt; they are called very infrequently and only ever when the
&gt; AnimatedImagesDisabled setting is enabled. Would renaming them to something
&gt; like `toggleAllAnimationsWhenDisabled` make that more clear? I can also add
&gt; a check in them to ensure the setting is enabled.

That&apos;s probably OK then.

Can you share code with FrameView::resumeVisibleImageAnimations()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893790</commentid>
    <comment_count>24</comment_count>
      <attachid>461861</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-25 12:44:46 -0700</bug_when>
    <thetext>Comment on attachment 461861
Patch

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

&gt; Source/WebCore/page/Page.cpp:4032
&gt; +    m_hasUnpausedAnimations = !m_hasUnpausedAnimations;

You&apos;re trying to maintain a flag here that reflects the state of all the images in all the subframes. That seems pretty hard: subframes can be created or destroyed, and in each subframe, images can be dynamically added or removed. How can you trust the state of this flag?

&gt; Source/WebCore/page/Page.cpp:4042
&gt; +                    if (auto* cachedBackgroundImage = renderer-&gt;style().backgroundLayers().image()-&gt;cachedImage()) {

This is only getting the first background layer; CSS backgrounds can have multiple images, so you need to walk the list here. But that list walking code shouldn&apos;t live here in Page (put it on a Renderer class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893822</commentid>
    <comment_count>25</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-25 13:47:21 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #23)

&gt; Can you share code with FrameView::resumeVisibleImageAnimations()?

I&apos;ll take a look!

(In reply to Simon Fraser (smfr) from comment #24)
 
&gt; You&apos;re trying to maintain a flag here that reflects the state of all the
&gt; images in all the subframes. That seems pretty hard: subframes can be
&gt; created or destroyed, and in each subframe, images can be dynamically added
&gt; or removed. How can you trust the state of this flag?

That&apos;s true. I&apos;ll remove this variable, and instead pass a boolean parameter into toggleAllAnimations to dictate the desired state of all animations so it&apos;s not tied to the state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893884</commentid>
    <comment_count>26</comment_count>
      <attachid>461871</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-25 18:13:28 -0700</bug_when>
    <thetext>Created attachment 461871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894025</commentid>
    <comment_count>27</comment_count>
      <attachid>461892</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-26 11:59:19 -0700</bug_when>
    <thetext>Created attachment 461892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894045</commentid>
    <comment_count>28</comment_count>
      <attachid>461892</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-26 12:40:42 -0700</bug_when>
    <thetext>Comment on attachment 461892
Patch

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

&gt; Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:71
&gt; +  humanReadableName: &quot;Control animated images&quot;

It&apos;s a bit odd for the Experimental Feature to actually do the disabling. I&apos;d expect the feature to be &quot;allow image animation to be disabled&quot;, and then have some other affordance to actually control whether animation is on or off.

The title needs to reflect what the feature really does (and &quot;control&quot; is a bit vague). I&apos;d also suggest choosing a name that starts with &quot;image&quot; or &quot;animate&quot; to make it easy to find in the UI.

&gt; Source/WebCore/page/Page.cpp:4030
&gt; +void Page::toggleAllAnimationsWhenDisabled(bool shouldAnimate)

The &quot;when disabled&quot; is hard to understand from a caller perspective. When what is disabled?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:73
&gt; +    m_disableImageAnimation = settings.animatedImagesDisabled();

We&apos;re on Image here, so m_disableAnimation is fine. Or flip it and call this m_allowsAnimation

&gt; Source/WebCore/platform/graphics/BitmapImage.h:254
&gt; +    bool m_shouldAllowIndividualAnimation { false };

It&apos;s not clear what &quot;individual&quot; means here.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:255
&gt; +    bool m_isPageAnimationEnabled { false };

This is unused.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:456
&gt; +void RenderStyle::setBackgroundImageAnimationState(bool shouldAnimate)

I&apos;m not really a fan of poking state into Images inside styles. Can we instead add a way for the Image to ask whether it should animate via ImageObserver/CachedImageClient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894096</commentid>
    <comment_count>29</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-26 15:01:27 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #28)
&gt; Comment on attachment 461892 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=461892&amp;action=review
&gt; 
&gt; &gt; Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:71
&gt; &gt; +  humanReadableName: &quot;Control animated images&quot;
&gt; 
&gt; It&apos;s a bit odd for the Experimental Feature to actually do the disabling.
&gt; I&apos;d expect the feature to be &quot;allow image animation to be disabled&quot;, and
&gt; then have some other affordance to actually control whether animation is on
&gt; or off.

This will eventually use a currently unavailable system setting to control the animation state, so at present, we&apos;re using this setting to toggle for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894864</commentid>
    <comment_count>30</comment_count>
      <attachid>462012</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-30 10:21:07 -0700</bug_when>
    <thetext>Created attachment 462012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894881</commentid>
    <comment_count>31</comment_count>
      <attachid>462012</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-30 11:34:52 -0700</bug_when>
    <thetext>Comment on attachment 462012
Patch

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

&gt; Source/WebCore/html/ImageBitmap.cpp:639
&gt; +    bool hasPageResumedAnimationWhenSettingEnabled() override { return false; }

This is a bit of a brain teaser. Why isn&apos;t it just called allowsAnimation() ?

&gt; Source/WebCore/loader/cache/CachedImage.cpp:714
&gt; +    return m_skippingRevalidationDocument &amp;&amp; m_skippingRevalidationDocument-&gt;page() &amp;&amp; m_skippingRevalidationDocument-&gt;page()-&gt;shouldPageAnimationPlayIfSettingEnabled();

m_skippingRevalidationDocument sounds like something special and I&apos;m not sure it&apos;s OK to use to get to Page. I think you need to hop out again through CachedImageClient.

&gt; Source/WebCore/loader/cache/CachedImage.h:161
&gt; +        bool hasPageResumedAnimationWhenSettingEnabled() final;

allowsAnimation() ?

&gt; Source/WebCore/page/Page.h:1349
&gt; +    bool m_shouldPageAnimationPlayIfSettingEnabled { false };

This &quot;if setting enabled&quot; is cumbersome (partly because you can&apos;t tell which setting it&apos;s referring to). An enum would be better:

enum class ImageAnimationState : uint8_t {
  Allowed,
  Disabled,
  Reenabled
};

but I&apos;m not sure why you need the &quot;animations disabled by re-enabled by the user&quot; state. Why not just have a `bool m_allowsImagesAnimations` that defaults to true, is set to false if the Setting is set, then goes back to true if the user re-enables animations?

BTW, what&apos;s the lifetime of the &quot;re-enabled by user&quot; state? Does it live across page loads?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:378
&gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; (imageObserver()-&gt;hasPageResumedAnimationWhenSettingEnabled() || !m_disableAnimation || m_allowAnimationWhenSettingEnabled );

Why doesn&apos;t the call out to imageObserver do the job of consulting the setting and whether animations have been re-enabled? It would be better if BitmapImage didn&apos;t have to store m_disableAnimation and m_allowAnimationWhenSettingEnabled

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:680
&gt; +void BitmapImage::resumeAnimation()

It&apos;s not good for a generically named function like &quot;resumeAnimation&quot; to store state which mirrors some settings-related state elsewhere (i.e. don&apos;t store m_allowAnimationWhenSettingEnabled here).

&gt; Source/WebCore/platform/graphics/ImageObserver.h:56
&gt; +    virtual bool hasPageResumedAnimationWhenSettingEnabled() = 0;

allowsAnimation() ?

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:471
&gt; +bool RenderStyle::backgroundImagesCanAnimate() const

You could have animated images in masks, in border-image, in list-style-image and probably other places too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894923</commentid>
    <comment_count>32</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-30 14:14:26 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #31)

thanks! I&apos;ll make these adjustments.

&gt; BTW, what&apos;s the lifetime of the &quot;re-enabled by user&quot; state? Does it live across page loads?

It lives across page loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894930</commentid>
    <comment_count>33</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-30 14:50:11 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #31)

&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:378
&gt; &gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; (imageObserver()-&gt;hasPageResumedAnimationWhenSettingEnabled() || !m_disableAnimation || m_allowAnimationWhenSettingEnabled );
&gt; 
&gt; Why doesn&apos;t the call out to imageObserver do the job of consulting the
&gt; setting and whether animations have been re-enabled? It would be better if
&gt; BitmapImage didn&apos;t have to store m_disableAnimation and
&gt; m_allowAnimationWhenSettingEnabled
&gt; 

This will work for m_disableAnimation &amp; for checking if page-wide animations are resumed (I&apos;ll move those there), but m_allowAnimationWhenSettingEnabled is used if just one image needs to animate, and not the whole page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894936</commentid>
    <comment_count>34</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-30 14:57:00 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #33)
&gt; (In reply to Simon Fraser (smfr) from comment #31)
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:378
&gt; &gt; &gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; (imageObserver()-&gt;hasPageResumedAnimationWhenSettingEnabled() || !m_disableAnimation || m_allowAnimationWhenSettingEnabled );
&gt; &gt; 
&gt; &gt; Why doesn&apos;t the call out to imageObserver do the job of consulting the
&gt; &gt; setting and whether animations have been re-enabled? It would be better if
&gt; &gt; BitmapImage didn&apos;t have to store m_disableAnimation and
&gt; &gt; m_allowAnimationWhenSettingEnabled
&gt; &gt; 
&gt; 
&gt; This will work for m_disableAnimation &amp; for checking if page-wide animations
&gt; are resumed (I&apos;ll move those there), but m_allowAnimationWhenSettingEnabled
&gt; is used if just one image needs to animate, and not the whole page.

Ah, I didn&apos;t realize there was a per-image override.

One issue here is that multiple copies of the same image animate &quot;in sync&quot;; 10 image elements with the same GIF all render the same frame at the same time.

If the user is able to stop and start just some of these, it means that we&apos;ll be rendering different frames of the same GIF in different places which can get very slow (since decoding a frame may have to decode all the previous frames, if you&apos;re not showing the frame that was previously cached).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894937</commentid>
    <comment_count>35</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-30 15:01:55 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #34)
&gt; (In reply to Joshua Hoffman from comment #33)
&gt; &gt; (In reply to Simon Fraser (smfr) from comment #31)
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:378
&gt; &gt; &gt; &gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; (imageObserver()-&gt;hasPageResumedAnimationWhenSettingEnabled() || !m_disableAnimation || m_allowAnimationWhenSettingEnabled );
&gt; &gt; &gt; 
&gt; &gt; &gt; Why doesn&apos;t the call out to imageObserver do the job of consulting the
&gt; &gt; &gt; setting and whether animations have been re-enabled? It would be better if
&gt; &gt; &gt; BitmapImage didn&apos;t have to store m_disableAnimation and
&gt; &gt; &gt; m_allowAnimationWhenSettingEnabled
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; This will work for m_disableAnimation &amp; for checking if page-wide animations
&gt; &gt; are resumed (I&apos;ll move those there), but m_allowAnimationWhenSettingEnabled
&gt; &gt; is used if just one image needs to animate, and not the whole page.
&gt; 
&gt; Ah, I didn&apos;t realize there was a per-image override.
&gt; 
&gt; One issue here is that multiple copies of the same image animate &quot;in sync&quot;;
&gt; 10 image elements with the same GIF all render the same frame at the same
&gt; time.
&gt; 
&gt; If the user is able to stop and start just some of these, it means that
&gt; we&apos;ll be rendering different frames of the same GIF in different places
&gt; which can get very slow (since decoding a frame may have to decode all the
&gt; previous frames, if you&apos;re not showing the frame that was previously cached).

The concession with this patch is that individually playing one image, if there are copies, will play all of the duplicates as well. This should prevent the issue you raised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894969</commentid>
    <comment_count>36</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-08-30 15:53:09 -0700</bug_when>
    <thetext>Perhaps Document could store a HashSet of URLs for images whose animations have been re-enabled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895010</commentid>
    <comment_count>37</comment_count>
      <attachid>462012</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-08-30 18:03:04 -0700</bug_when>
    <thetext>Comment on attachment 462012
Patch

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

&gt; Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:69
&gt; +AnimatedImagesDisabled:

I think this naming is not right. AnimatedImages means the images which can be animated. So I think you meant &quot;ImageAnimationDisabled&quot; as the description below says.

Also should not we use Enabled instead of Disabled and have the default set to true; something like ImageAnimationEnabled() or ImagesAnimationEnabled()?

&gt; Source/WebCore/html/HTMLImageElement.cpp:775
&gt; +BitmapImage* HTMLImageElement::cachedBitmapImage() const
&gt; +{
&gt; +    if (auto* cachedImage = this-&gt;cachedImage())
&gt; +        return dynamicDowncast&lt;BitmapImage&gt;(cachedImage-&gt;image());
&gt; +    return nullptr;
&gt; +}

I do not think this is a right approach. Please do not make explicit casting to BitmapImage inside HTMLImageElement unless it is really needed. Please reference the Image instead of referencing the BitmapImage. This function can look like this

Image* HTMLImageElement::image() const
{
    if (auto* cachedImage = this-&gt;cachedImage())
        return cachedImage-&gt;image();
    return nullptr;
}

&gt; Source/WebCore/html/HTMLImageElement.cpp:781
&gt; +void HTMLImageElement::resumeAnimation()
&gt; +{
&gt; +    if (auto* image = cachedBitmapImage())
&gt; +        image-&gt;resumeAnimation();
&gt; +}

Please use this-&gt;image() instead and add this virtual function to the Image class

virtual void resumeAnimation() { }

&gt; Source/WebCore/html/HTMLImageElement.cpp:787
&gt; +void HTMLImageElement::pauseAnimation()
&gt; +{
&gt; +    if (auto* image = cachedBitmapImage())
&gt; +        image-&gt;pauseAnimation();
&gt; +}

Please use this-&gt;image() instead and add this virtual function to the Image class

virtual void pauseAnimation() { }

&gt; Source/WebCore/html/HTMLImageElement.cpp:794
&gt; +bool HTMLImageElement::isAnimating() const
&gt; +{
&gt; +    if (auto* image = cachedBitmapImage())
&gt; +        return image-&gt;isAnimating();
&gt; +    return false;
&gt; +}

Please use this-&gt;image() instead and add this virtual function to the Image class

virtual bool isAnimating() { return false; }

&gt; Source/WebCore/html/HTMLImageElement.cpp:995
&gt; +    if (auto* cachedImage = this-&gt;cachedImage()) {
&gt; +        if (cachedImage-&gt;image()-&gt;isAnimated())
&gt; +            return true;
&gt; +    }
&gt; +
&gt; +    if (auto* bitmapImage = cachedBitmapImage())
&gt; +        return !bitmapImage-&gt;isAnimationFinished();

Please notice that isAnimated() and isAnimationFinished() have different meanings. isAnimated() means it can animate. For example, for BitmapImage, it is true if frameCount() &gt; 1. But isAnimationFinished() means it is not animating right now. And this can be true when isAnimated() is false or isAnimated () is true but the image has been already animated the specified repetitionCount(). So I am not sure what your function is answering: Is the image animatable? Or is it animating right now?

&gt; Source/WebCore/loader/cache/CachedImage.cpp:457
&gt; +bool CachedImage::CachedImageObserver::hasPageResumedAnimationWhenSettingEnabled()
&gt; +{
&gt; +    for (auto cachedImage : m_cachedImages) {
&gt; +        if (cachedImage-&gt;hasPageResumedAnimationWhenSettingEnabled())
&gt; +            return true;
&gt; +    }
&gt; +    return false;
&gt; +}

What is this function for? Why does every CachedImage::Observer need to deal with page settings? Should not we have this function/setting the same for all images?

&gt;&gt; Source/WebCore/loader/cache/CachedImage.cpp:714
&gt;&gt; +    return m_skippingRevalidationDocument &amp;&amp; m_skippingRevalidationDocument-&gt;page() &amp;&amp; m_skippingRevalidationDocument-&gt;page()-&gt;shouldPageAnimationPlayIfSettingEnabled();
&gt; 
&gt; m_skippingRevalidationDocument sounds like something special and I&apos;m not sure it&apos;s OK to use to get to Page. I think you need to hop out again through CachedImageClient.

Yes I think this is incorrect. CachedImage can be shared among multiple documents. When loading the image, the m_loader is set and it has a document() getter. But once the loading is finished, SubresourceLoader::didFinishLoading() calls CachedResource::clearLoader() via its releaseResources(). So we should not be assuming the CachedImage is attached to any document except while loading it.

&gt; Source/WebCore/page/Page.cpp:4048
&gt; +void Page::toggleAllAnimationsWhenAnimationSettingEnabled(bool shouldAnimate)
&gt; +{
&gt; +    if (!settings().animatedImagesDisabled())
&gt; +        return;
&gt; +    
&gt; +    m_shouldPageAnimationPlayIfSettingEnabled = shouldAnimate;
&gt; +    forEachDocument([] (Document&amp; document) {
&gt; +        for (auto&amp; element : descendantsOfType&lt;Element&gt;(document.rootNode())) {
&gt; +            if (auto* renderer = element.renderer()) {
&gt; +                if (auto* imageElement = dynamicDowncast&lt;HTMLImageElement&gt;(element))
&gt; +                    renderer-&gt;repaint();
&gt; +                if (renderer-&gt;style().hasBackgroundImage()) {
&gt; +                    if (renderer-&gt;style().backgroundImagesCanAnimate())
&gt; +                        renderer-&gt;repaint();
&gt; +                }
&gt; +            }
&gt; +        }
&gt; +    });
&gt; +}

Why do not we use Page::resumeAnimatingImages() instead of adding a new function? I think Page::resumeAnimatingImages() is called when animated images brought back in the current viewport like you scroll the window for example.

&gt; Source/WebCore/page/Page.cpp:4070
&gt; +bool Page::containsAnimatedImages() const
&gt; +{
&gt; +    bool foundAnimatedImage = false;
&gt; +    forEachDocument([&amp;foundAnimatedImage] (Document&amp; document) {
&gt; +        for (auto&amp; element : descendantsOfType&lt;Element&gt;(document.rootNode())) {
&gt; +            if (auto* imageElement = dynamicDowncast&lt;HTMLImageElement&gt;(element)) {
&gt; +                foundAnimatedImage = true;
&gt; +                break;
&gt; +            }
&gt; +            if (auto* renderer = element.renderer()) {
&gt; +                if (renderer-&gt;style().hasBackgroundImage()) {
&gt; +                    if (renderer-&gt;style().backgroundImagesCanAnimate()) {
&gt; +                        foundAnimatedImage = true;
&gt; +                        break;
&gt; +                    }
&gt; +                }
&gt; +            }
&gt; +        }
&gt; +    });
&gt; +    return foundAnimatedImage;
&gt; +}

I do not see this function is used in this patch. Please remove it. 

Also this function and toggleAllAnimationsWhenAnimationSettingEnabled() are expensive since they enumerate all sub-documents in the page and in each document they enumerate all the descendant elements. We usually care about the current view port when invalidating renderers.

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:73
&gt; +    m_disableAnimation = settings.animatedImagesDisabled();

I think renaming m_disableAnimation -&gt; m_animationPaused will make reading the code easier since setting it true will pause the animation.

But This setting is different from the other ones above. It has to be toggled while the image is animating when the Settings changes. The other ones are set only once and will not be changed even if the Settings has changed until the page is reloaded. So I would suggest moving it to the ImageObserver and CachedImageClient. You can follow the pattern of canDestroyDecodedData() and add similar functions like isImageAnimationEnabled(). In RenderElement::isImageAnimationEnabled() you can access the Document, Page and the Settings and answer this question.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:378
&gt;&gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; (imageObserver()-&gt;hasPageResumedAnimationWhenSettingEnabled() || !m_disableAnimation || m_allowAnimationWhenSettingEnabled );
&gt; 
&gt; Why doesn&apos;t the call out to imageObserver do the job of consulting the setting and whether animations have been re-enabled? It would be better if BitmapImage didn&apos;t have to store m_disableAnimation and m_allowAnimationWhenSettingEnabled

I agree. See my comment above. This new code can be replaced by &quot;&amp;&amp; imageObserver()-&gt;isImageAnimationEnabled()&quot;

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:680
&gt;&gt; +void BitmapImage::resumeAnimation()
&gt; 
&gt; It&apos;s not good for a generically named function like &quot;resumeAnimation&quot; to store state which mirrors some settings-related state elsewhere (i.e. don&apos;t store m_allowAnimationWhenSettingEnabled here).

I do not think you need this function. If the Settings changed and you invalidate the renderers of this BitmapImage, the BitmapImage will be redrawn. And in this time shouldAnimate() will be true because imageObserver()-&gt;isImageAnimationEnabled() will be true.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:469
&gt; +void RenderStyle::setBackgroundImageAnimationState(bool shouldAnimate)
&gt; +{
&gt; +    for (auto fillLayer = &amp;backgroundLayers(); fillLayer; fillLayer = fillLayer-&gt;next()) {
&gt; +        if (auto* cachedBackgroundImage = fillLayer-&gt;image()-&gt;cachedImage()) {
&gt; +            if (auto* backgroundImage = cachedBackgroundImage-&gt;image()) {
&gt; +                auto&amp; backgroundBitmapImage = downcast&lt;BitmapImage&gt;(*backgroundImage);
&gt; +                if (shouldAnimate)
&gt; +                    backgroundBitmapImage.resumeAnimation();
&gt; +                else
&gt; +                    backgroundBitmapImage.pauseAnimation();
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +}

Where is function is used? Please remove it if it is not used.

&gt; Source/WebCore/testing/Internals.cpp:1067
&gt; +void Internals::resumeImageAnimation(HTMLImageElement&amp; element)
&gt; +{
&gt; +    element.resumeAnimation();
&gt; +}
&gt; +
&gt; +void Internals::pauseImageAnimation(HTMLImageElement&amp; element)
&gt; +{
&gt; +    element.pauseAnimation();
&gt; +}
&gt; +
&gt; +void Internals::togglePageAnimation(bool shouldAnimate)
&gt; +{
&gt; +    auto* document = contextDocument();
&gt; +    if (!document || !document-&gt;frame())
&gt; +        return;
&gt; +
&gt; +    if (auto* page = document-&gt;page())
&gt; +        page-&gt;toggleAllAnimationsWhenAnimationSettingEnabled(shouldAnimate);
&gt; +}

I am confused here. Is this setting per image or per page? Do we need to pause/resume for a certain HTMLImageElement? Or should not we do that for all images? If we should do it for all images, then I think you can use something like this in your JavaScript:

internals.settings.setImageAnimationEnabled(false);

&gt; LayoutTests/accessibility/mac/disable-animations-play-individual-animation.html:13
&gt; +    if (window.accessibilityController) {

Why do we test this code only through window.accessibilityController? I think this feature should be tested for general use.

Also we need to test that the timing of toggling the flag will work as expected. For example if we disable the animation while painting the frame 5 of the image, and then resume the animation it should be resumed at frame 6.

Look at LayoutTests/fast/images/animated-heics-draw.html to see how we can control the timing of the animated image.

&gt; LayoutTests/platform/mac-wk1/TestExpectations:436
&gt; +# Image animation disabled (experimental feature)
&gt; +accessibility/mac/disable-animations-toggle-page-animations.html [ Skip ]
&gt; +accessibility/mac/disable-animations-enabled.html [ Skip ]
&gt; +accessibility/mac/disable-animations-play-individual-animation.html [ Skip ]

Are these tests skipped for WK1 because window.accessibilityController is available for WK2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895335</commentid>
    <comment_count>38</comment_count>
      <attachid>462061</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-31 16:39:25 -0700</bug_when>
    <thetext>Created attachment 462061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895336</commentid>
    <comment_count>39</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-08-31 16:40:11 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #37)

Thanks for all of the comments! I addressed the feedback in most-recently uploaded patch.

&gt; &gt; Source/WebCore/page/Page.cpp:4048
&gt; &gt; +void Page::toggleAllAnimationsWhenAnimationSettingEnabled(bool shouldAnimate)
&gt; &gt; +{
&gt; &gt; +    if (!settings().animatedImagesDisabled())
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    m_shouldPageAnimationPlayIfSettingEnabled = shouldAnimate;
&gt; &gt; +    forEachDocument([] (Document&amp; document) {
&gt; &gt; +        for (auto&amp; element : descendantsOfType&lt;Element&gt;(document.rootNode())) {
&gt; &gt; +            if (auto* renderer = element.renderer()) {
&gt; &gt; +                if (auto* imageElement = dynamicDowncast&lt;HTMLImageElement&gt;(element))
&gt; &gt; +                    renderer-&gt;repaint();
&gt; &gt; +                if (renderer-&gt;style().hasBackgroundImage()) {
&gt; &gt; +                    if (renderer-&gt;style().backgroundImagesCanAnimate())
&gt; &gt; +                        renderer-&gt;repaint();
&gt; &gt; +                }
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt; +    });
&gt; &gt; +}
&gt; 
&gt; Why do not we use Page::resumeAnimatingImages() instead of adding a new
&gt; function? I think Page::resumeAnimatingImages() is called when animated
&gt; images brought back in the current viewport like you scroll the window for
&gt; example.
&gt;
&gt; ... 
&gt;
&gt; Also this function and toggleAllAnimationsWhenAnimationSettingEnabled() are
&gt; expensive since they enumerate all sub-documents in the page and in each
&gt; document they enumerate all the descendant elements. We usually care about
&gt; the current view port when invalidating renderers.

In a subsequent patch, this method allows us to expand toggling all animations to &lt;svg&gt; &amp; &lt;model&gt; elements as we walk the tree and resume/pause. `resumeAnimatingImages` was not repainting my bitmap images as expected. 

&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:378
&gt; &gt;&gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; (imageObserver()-&gt;hasPageResumedAnimationWhenSettingEnabled() || !m_disableAnimation || m_allowAnimationWhenSettingEnabled );
&gt; &gt; 
&gt; &gt; Why doesn&apos;t the call out to imageObserver do the job of consulting the setting and whether animations have been re-enabled? It would be better if BitmapImage didn&apos;t have to store m_disableAnimation and m_allowAnimationWhenSettingEnabled
&gt; 
&gt; I agree. See my comment above. This new code can be replaced by &quot;&amp;&amp;
&gt; imageObserver()-&gt;isImageAnimationEnabled()&quot;

I&apos;ve addressed this and have moved all of the image&apos;s animation state to the CachedImageClient.

&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:680
&gt; &gt;&gt; +void BitmapImage::resumeAnimation()
&gt; &gt; 
&gt; &gt; It&apos;s not good for a generically named function like &quot;resumeAnimation&quot; to store state which mirrors some settings-related state elsewhere (i.e. don&apos;t store m_allowAnimationWhenSettingEnabled here).
&gt; 
&gt; I do not think you need this function. If the Settings changed and you
&gt; invalidate the renderers of this BitmapImage, the BitmapImage will be
&gt; redrawn. And in this time shouldAnimate() will be true because
&gt; imageObserver()-&gt;isImageAnimationEnabled() will be true.

This patch allows image animation (when ImageAnimationEnabled is not turned on) to be resumed/paused at the page and at the individual image level. The resumeAnimation and pauseAnimation methods allow a single image to be controlled, while the setting is there to simply stop animations by default. But, in my updated patch, I&apos;ve limited these methods to just HTMLImageElements, and removed these methods/state from BitmapImage. 

&gt; 
&gt; &gt; LayoutTests/accessibility/mac/disable-animations-play-individual-animation.html:13
&gt; &gt; +    if (window.accessibilityController) {
&gt; 
&gt; Why do we test this code only through window.accessibilityController? I
&gt; think this feature should be tested for general use.
&gt; 
&gt; Also we need to test that the timing of toggling the flag will work as
&gt; expected. For example if we disable the animation while painting the frame 5
&gt; of the image, and then resume the animation it should be resumed at frame 6.
&gt; 
&gt; Look at LayoutTests/fast/images/animated-heics-draw.html to see how we can
&gt; control the timing of the animated image.
&gt; 

I included a test for this in the new patch, which tests the frames are in order even if paused/resumed.

&gt; &gt; LayoutTests/platform/mac-wk1/TestExpectations:436
&gt; &gt; +# Image animation disabled (experimental feature)
&gt; &gt; +accessibility/mac/disable-animations-toggle-page-animations.html [ Skip ]
&gt; &gt; +accessibility/mac/disable-animations-enabled.html [ Skip ]
&gt; &gt; +accessibility/mac/disable-animations-play-individual-animation.html [ Skip ]
&gt; 
&gt; Are these tests skipped for WK1 because window.accessibilityController is
&gt; available for WK2?

There is not a plan to support this feature on WK1 at the moment, so the test scope is limited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895356</commentid>
    <comment_count>40</comment_count>
      <attachid>462061</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-08-31 17:14:40 -0700</bug_when>
    <thetext>Comment on attachment 462061
Patch

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

&gt; COMMIT_MESSAGE:7
&gt; +This patch adds a new experimental AX preference, which when disabled, prevents BitmapImage animations. Additionally, we provide new interfaces to control animations at the page and individual image level.

re: Additionally, we provide new interfaces to control animations at the page and individual image level.

1) What is the use case of controlling the animation on individual image?
2) What is the interface for using this feature? In this patch I see resumeAnimation()/pauseAnimation() are used by Internals only. Is the plan to use it for testing only?
3) What should happen if two HTMLImageElements are accessing the same image?

&lt;img id=&quot;image1&quot; src=&quot;animated_image.gif&quot;&gt;
&lt;img id=&quot;image2&quot; src=&quot;animated_image.gif&quot;&gt;
&lt;script&gt;
    internals.resumeImageAnimation(image1);
&lt;/script&gt;

Do you expect the animation will be resumed in both elements (image1  and image2) or only the first one (image1)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895516</commentid>
    <comment_count>41</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-01 10:00:16 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #40)

&gt; &gt; +This patch adds a new experimental AX preference, which when disabled, prevents BitmapImage animations. Additionally, we provide new interfaces to control animations at the page and individual image level.
&gt; 
&gt; re: Additionally, we provide new interfaces to control animations at the
&gt; page and individual image level.
&gt; 
&gt; 1) What is the use case of controlling the animation on individual image?
&gt; 2) What is the interface for using this feature? In this patch I see
&gt; resumeAnimation()/pauseAnimation() are used by Internals only. Is the plan
&gt; to use it for testing only?
&gt; 3) What should happen if two HTMLImageElements are accessing the same image
Users who have animations disabled globally may want to see a particular animation that contains important content, without having to resume all animations. Several sites &amp; social media platforms implement this type of control in their own settings already.

A context menu item to resume/pause these animations would provide users an interface to control this.

For #3, see below. 
 
&gt; &lt;img id=&quot;image1&quot; src=&quot;animated_image.gif&quot;&gt;
&gt; &lt;img id=&quot;image2&quot; src=&quot;animated_image.gif&quot;&gt;
&gt; &lt;script&gt;
&gt;     internals.resumeImageAnimation(image1);
&gt; &lt;/script&gt;
&gt; 
&gt; Do you expect the animation will be resumed in both elements (image1  and
&gt; image2) or only the first one (image1)?

If it&apos;s the same source, both images will resume animation. This assumes a user who wants to see a particular image animate will want to see that image animate in all occurrences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895524</commentid>
    <comment_count>42</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-01 10:29:25 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #41)
&gt; (In reply to Said Abou-Hallawa from comment #40)
&gt; 
&gt; &gt; &gt; +This patch adds a new experimental AX preference, which when disabled, prevents BitmapImage animations. Additionally, we provide new interfaces to control animations at the page and individual image level.
&gt; &gt; 
&gt; &gt; re: Additionally, we provide new interfaces to control animations at the
&gt; &gt; page and individual image level.
&gt; &gt; 
&gt; &gt; 1) What is the use case of controlling the animation on individual image?
&gt; &gt; 2) What is the interface for using this feature? In this patch I see
&gt; &gt; resumeAnimation()/pauseAnimation() are used by Internals only. Is the plan
&gt; &gt; to use it for testing only?
&gt; &gt; 3) What should happen if two HTMLImageElements are accessing the same image
&gt; Users who have animations disabled globally may want to see a particular
&gt; animation that contains important content, without having to resume all
&gt; animations. Several sites &amp; social media platforms implement this type of
&gt; control in their own settings already.
&gt; 
&gt; A context menu item to resume/pause these animations would provide users an
&gt; interface to control this.
&gt; 

I am not aware there&apos;s something like this in the web. Can you please guide me to the specs&apos; link and where I can see this feature in Chrome and FireFox or sites &amp; social media platforms?

If there is no specs&apos; for this, then we need to file a GitHub issue for it. We have to provide an interface that all browsers agree on.

But if this is the plan, how can this be implemented by your patch given the only interface is through Internals?

&gt; For #3, see below. 
&gt;  
&gt; &gt; &lt;img id=&quot;image1&quot; src=&quot;animated_image.gif&quot;&gt;
&gt; &gt; &lt;img id=&quot;image2&quot; src=&quot;animated_image.gif&quot;&gt;
&gt; &gt; &lt;script&gt;
&gt; &gt;     internals.resumeImageAnimation(image1);
&gt; &gt; &lt;/script&gt;
&gt; &gt; 
&gt; &gt; Do you expect the animation will be resumed in both elements (image1  and
&gt; &gt; image2) or only the first one (image1)?
&gt; 
&gt; If it&apos;s the same source, both images will resume animation. This assumes a
&gt; user who wants to see a particular image animate will want to see that image
&gt; animate in all occurrences.

I do not think this is correct. This flag should be set per HTMLImageElement as the Internal API says. I think having it per CachedImage (or per URL as you implemented it) is a technical details that the user should not deal with. 

Maybe I am wrong and this is why a specs&apos; link or a GitHub issue can answer this question clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895548</commentid>
    <comment_count>43</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2022-09-01 11:26:38 -0700</bug_when>
    <thetext>Said wrote:  

&gt; If there is no spec for this, then we need to file a GitHub issue for it. We have to provide an interface that all browsers agree on.

prefers-reduced-motion is implemented by all major browsers. 
https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion

I&apos;m not aware whether any of them link it to GIF animations, but IMO that&apos;s within the current realm innovation/differentiation on behalf of the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895569</commentid>
    <comment_count>44</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2022-09-01 12:27:32 -0700</bug_when>
    <thetext>Chris also mentioned offline this may be more analogous to the auto-play media setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895573</commentid>
    <comment_count>45</comment_count>
      <attachid>462061</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-01 12:44:56 -0700</bug_when>
    <thetext>Comment on attachment 462061
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:995
&gt; +    if (auto* cachedImage = this-&gt;cachedImage()) {
&gt; +        if (cachedImage-&gt;image()-&gt;isAnimated())
&gt; +            return true;
&gt; +    }

if (auto* image = this-&gt;image())
    return image-&gt;isAnimated();
return false;

&gt; Source/WebCore/loader/cache/CachedImage.cpp:453
&gt; +        if (cachedImage-&gt;allowsAnimation(sourceUrl()))

Why do we pass sourceUrl() to the CachedImage? We get the sourceUrl() from the CachedImage. I think this should be 

if (cachedImage-&gt;allowsAnimation())

&gt; Source/WebCore/loader/cache/CachedImage.cpp:712
&gt; +bool CachedImage::allowsAnimation(const URL&amp; sourceURL)

You do not have to pass a sourceURL. You can use url() which is defined in the base class CachedResource.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:716
&gt; +        if (client-&gt;allowsAnimation(sourceURL))

I would suggest passing *this instead of the sourceURL. This will be consistent with other calls to CachedImageClient in this file.

&gt; Source/WebCore/loader/cache/CachedImageClient.h:56
&gt; +    virtual bool allowsAnimation(const URL&amp;) { return false; }

Please make this function take a CachedImage&amp; instead. So it looks similar to the other functions above.

&gt; Source/WebCore/page/Page.cpp:4035
&gt; +    if (settings().imageAnimationEnabled())
&gt; +        return;
&gt; +    
&gt; +    m_allowsImageAnimations = shouldAnimate;

Why do we have to options to enable the animations? You even check the settings() member but you set the Page member. I think we can rely on the Settings only:

    if (settings().imageAnimationEnabled())
        return;

    settings().setImageAnimationEnabled(true);

Another approach is to add a webcoreOnChange to your setting. See CoreMathMLEnabled in WebPreferencesExperimental.yaml as an example.

&gt; Source/WebCore/page/Page.cpp:4049
&gt; +    forEachDocument([] (Document&amp; document) {
&gt; +        for (auto&amp; element : descendantsOfType&lt;Element&gt;(document.rootNode())) {
&gt; +            if (auto* renderer = element.renderer()) {
&gt; +                if (auto* imageElement = dynamicDowncast&lt;HTMLImageElement&gt;(element))
&gt; +                    renderer-&gt;repaint();
&gt; +                if (renderer-&gt;style().hasBackgroundImage()
&gt; +                    || renderer-&gt;style().hasBorderImage()
&gt; +                    || renderer-&gt;style().hasMask()
&gt; +                    || renderer-&gt;style().listStyleImage()) {
&gt; +                    renderer-&gt;repaint();
&gt; +                }
&gt; +            }
&gt; +        }
&gt; +    });

This code is expensive. And you do not need to invalidate the renderers outside the viewport. Please consider refactoring or rewriting this code similar to Page::resumeAnimatingImages(). In other words, you need to work only within the visible rectangle.

&gt; Source/WebCore/rendering/RenderElement.cpp:2499
&gt; +    return settings().imageAnimationEnabled() || document().page()-&gt;allowsImageAnimation() || document().isImageURLAllowedToAnimate(sourceURL);

I think we should use document().page()-&gt;allowsImageAnimation() only to read the global setting.

&gt; Source/WebCore/testing/Internals.cpp:1059
&gt; +void Internals::togglePageAnimation(bool shouldAnimate)

I think this function should be removed. internals.settings.setImageAnimationEnabled() can be used instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895574</commentid>
    <comment_count>46</comment_count>
      <attachid>462061</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-01 12:52:15 -0700</bug_when>
    <thetext>Comment on attachment 462061
Patch

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

&gt;&gt; Source/WebCore/page/Page.cpp:4035
&gt;&gt; +    m_allowsImageAnimations = shouldAnimate;
&gt; 
&gt; Why do we have to options to enable the animations? You even check the settings() member but you set the Page member. I think we can rely on the Settings only:
&gt; 
&gt;     if (settings().imageAnimationEnabled())
&gt;         return;
&gt; 
&gt;     settings().setImageAnimationEnabled(true);
&gt; 
&gt; Another approach is to add a webcoreOnChange to your setting. See CoreMathMLEnabled in WebPreferencesExperimental.yaml as an example.

A better example to follow for webcoreOnChange may be ScrollingPerformanceTestingEnabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895807</commentid>
    <comment_count>47</comment_count>
      <attachid>462100</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-02 10:46:35 -0700</bug_when>
    <thetext>Created attachment 462100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895900</commentid>
    <comment_count>48</comment_count>
      <attachid>462100</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-02 15:44:18 -0700</bug_when>
    <thetext>Comment on attachment 462100
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:790
&gt; +void HTMLImageElement::resumeAnimation()
&gt; +{
&gt; +    if (auto* image = this-&gt;image()) {
&gt; +        document().addAllowedAnimatedImageURL(image-&gt;sourceURL());
&gt; +        image-&gt;startAnimation();
&gt; +    }
&gt; +}
&gt; +
&gt; +void HTMLImageElement::pauseAnimation()
&gt; +{
&gt; +    if (auto* image = this-&gt;image()) {
&gt; +        document().removeAllowedAnimatedImageURL(image-&gt;sourceURL());
&gt; +        image-&gt;stopAnimation();
&gt; +    }
&gt; +}

This interface is a little bit troublesome because we have a global setting and a local overriding. And they both need to interact clearly. How about this suggestion?

Image.h:

class Image {
public:
    std::optional&lt;bool&gt; allowsAnimation() const { return m_allowsAnimation; }
    void setAllowsAnimation(std::optional&lt;bool&gt; allowsAnimation) { m_allowsAnimation = allowsAnimation; }

private:
    // This is a tri-state flag:
    // std::nullopt (means follow the global setting)
    // false (means do not allow animation regardless of the global setting)
    // true (means allow animation regardless of the global setting)
    std::optional&lt;bool&gt; m_allowsAnimation;
}

HTMLImageElement:

class HTMLImageElement {
public:
    bool allowsAnimation() const;
    void setAllowsAnimation(bool);
    void resetAllowsAnimation(); // This will set Image::m_allowsAnimation to std::nullopt.
}

bool HTMLImageElement::allowsAnimation() const
{
    if (auto* image = this-&gt;image())
        return image-&gt;allowsAnimation().value_or(document().settings().imageAnimationEnabled());
    return false; 
}

Internal.cpp

void Internals::resumeImageAnimation(HTMLImageElement&amp; element)
{
    element.setAllowsAnimation(true);
}

RenderImage.cpp

bool RenderImage::allowsAnimation(CachedImage&amp; image) const
{
    if (is&lt;HTMLImageElement&gt;(element()))
        return downcast&lt;HTMLImageElement&gt;(*element()).allowsAnimation();
    return RenderReplaced::allowsAnimation(image);
}

&gt; Source/WebCore/testing/Internals.cpp:1060
&gt; +void Internals::resumeImageAnimation(HTMLImageElement&amp; element)
&gt; +{
&gt; +    element.resumeAnimation();
&gt; +}
&gt; +
&gt; +void Internals::pauseImageAnimation(HTMLImageElement&amp; element)
&gt; +{
&gt; +    element.pauseAnimation();
&gt; +}

This interface works only for HTMLImageElement but it does not work for css images 

&lt;style&gt;
    .box-with-animation {
        background-image: url(&quot;animated.gif&quot;);
    }
&lt;/style&gt;

But this patch will disable the css animation if the same src is used by an HTMLImageElement:

&lt;img id=&quot;image1&quot; src=&quot;animated.gif&quot;&gt;
&lt;script&gt;
    internals.pauseImageAnimation(image1);
&lt;script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895918</commentid>
    <comment_count>49</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-02 16:07:36 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #48)
&gt; 
&gt; This interface is a little bit troublesome because we have a global setting
&gt; and a local overriding. And they both need to interact clearly. How about
&gt; this suggestion?

I like that suggestion! I’ll swap out the URL methods for this.

&gt; But this patch will disable the css animation if the same src is used by an
&gt; HTMLImageElement:

Will having a flag now set on the `Image`, not the src, resolve this behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1896560</commentid>
    <comment_count>50</comment_count>
      <attachid>462169</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-06 14:33:08 -0700</bug_when>
    <thetext>Created attachment 462169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1896846</commentid>
    <comment_count>51</comment_count>
      <attachid>462169</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-07 10:22:50 -0700</bug_when>
    <thetext>Comment on attachment 462169
Patch

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

&gt; Source/WebCore/dom/Document.cpp:9285
&gt; +bool Document::isImageURLAllowedToAnimate(const URL&amp; url) const
&gt; +{
&gt; +    return m_imageURLsAllowedToAnimate.contains(url);
&gt; +}
&gt; +
&gt; +void Document::addAllowedAnimatedImageURL(const URL&amp; url)
&gt; +{
&gt; +    m_imageURLsAllowedToAnimate.add(url);
&gt; +}
&gt; +
&gt; +void Document::removeAllowedAnimatedImageURL(const URL&amp; url)
&gt; +{
&gt; +    m_imageURLsAllowedToAnimate.remove(url);
&gt; +}

This code is not needed. Please remove.

&gt; Source/WebCore/dom/Document.h:1704
&gt; +    bool isImageURLAllowedToAnimate(const URL&amp;) const;
&gt; +    void addAllowedAnimatedImageURL(const URL&amp;);
&gt; +    void removeAllowedAnimatedImageURL(const URL&amp;);

Ditto.

&gt; Source/WebCore/dom/Document.h:2312
&gt; +    ListHashSet&lt;URL&gt; m_imageURLsAllowedToAnimate;

Ditto.

&gt; Source/WebCore/html/HTMLImageElement.cpp:800
&gt; +bool HTMLImageElement::isAnimating() const
&gt; +{
&gt; +    if (auto* image = this-&gt;image())
&gt; +        return image-&gt;isAnimating();
&gt; +    return false;
&gt; +}

This function is not used. Please remove.

&gt; Source/WebCore/html/HTMLImageElement.cpp:998
&gt; +bool HTMLImageElement::isAnimatedImage() const
&gt; +{
&gt; +    if (auto* image = this-&gt;image())
&gt; +        return image-&gt;isAnimated();
&gt; +    return false;
&gt; +}

This function is not used. Please remove.

&gt; Source/WebCore/html/HTMLImageElement.h:163
&gt; +    bool isAnimating() const;
&gt; +    bool isAnimatedImage() const;

Please remove.

&gt; Source/WebCore/html/ImageBitmap.cpp:639
&gt; +    bool allowsAnimation() override { return true; }

This can be removed if ImageObserver::allowsAnimation() returns true.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:450
&gt; +bool CachedImage::CachedImageObserver::allowsAnimation()

This function should take an Image as an input. See CachedImage::CachedImageObserver::canDestroyDecodedData() as an example.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:712
&gt; +bool CachedImage::allowsAnimation()

This function should take an Image as an input. See CachedImage::canDestroyDecodedData() as an example.

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:377
&gt; +    return repetitionCount() &amp;&amp; !m_animationFinished &amp;&amp; imageObserver() &amp;&amp; imageObserver()-&gt;allowsAnimation();

*this should be passed to allowsAnimation() here.

&gt; Source/WebCore/platform/graphics/ImageObserver.h:56
&gt; +    virtual bool allowsAnimation() = 0;

I think this should return true instead of having it a pure virtual function. I think all images should allow animation by default.

Also this function should take an Image as an input. See canDestroyDecodedData() above as an example.

&gt; Source/WebCore/rendering/RenderImage.cpp:451
&gt; +}

How about this?

    if (auto* image = cachedImage() ? cachedImage()-&gt;image() : nullptr)
        return image-&gt;isAnimated();
    return false;

Also I think isAnimatedImage() is not a correct name. I think it should be hasAnimatedImage() or something else. RenderImage is not an &quot;image&quot; per se. It just holds an &quot;image&quot;.

&gt; Source/WebCore/rendering/RenderView.cpp:879
&gt; +    for (auto&amp; element : descendantsOfType&lt;RenderImage&gt;(*this)) {

Getting the RenderImage only will not repaint elements with CSS background images.

&gt; Tools/TestWebKitAPI/Tests/WebCore/SVGImageCasts.cpp:81
&gt; +    bool allowsAnimation() final
&gt; +    {
&gt; +        return true;
&gt; +    }

This can be removed if ImageObserver::allowsAnimation() returns true.

&gt; LayoutTests/accessibility/mac/disable-animations-enabled-expected.txt:1
&gt; +This tests that animations are disabled when the disable animated images setting is turned on.

I think these tests should be moved to fast/images directory.

&gt; LayoutTests/platform/mac-wk1/TestExpectations:459
&gt; +# Image animation disabled (experimental feature)
&gt; +accessibility/mac/disable-animations-enabled.html [ Skip ]
&gt; +accessibility/mac/disable-animations-play-individual-animation.html [ Skip ]
&gt; +accessibility/mac/disable-animations-resuming-frame.html [ Skip ]

I think these tests should work for WK1 as well. Please remove these skip lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897044</commentid>
    <comment_count>52</comment_count>
      <attachid>462205</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-08 08:58:37 -0700</bug_when>
    <thetext>Created attachment 462205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897130</commentid>
    <comment_count>53</comment_count>
      <attachid>462205</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-08 15:54:23 -0700</bug_when>
    <thetext>Comment on attachment 462205
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:783
&gt; +void HTMLImageElement::setAllowsAnimation(bool shouldAnimate)

shouldAnimate -&gt; allowsAnimation.

&gt; Source/WebCore/rendering/RenderView.cpp:881
&gt; +            return;

Should not we &quot;continue&quot; instead of &quot;return&quot;?

&gt; Source/WebCore/rendering/RenderView.cpp:884
&gt; +            element.repaint();

Should we check whether the background image is animated or not? Also I think we should &quot;continue&quot; if we repaint the element.

&gt; LayoutTests/fast/images/disable-animations-resuming-frame.html:22
&gt; +                debug(&quot;Image frame: &quot; + imageFrame + &quot; was displayed.&quot;);
&gt; +                image.removeEventListener(&quot;webkitImageFrameReady&quot;, listener, true);
&gt; +                resolve(frame + 1);

Can something like this work?

debug(&quot;Image frame: &quot; + imageFrame + &quot; was displayed.&quot;);
image.removeEventListener(&quot;webkitImageFrameReady&quot;, listener, true);
internals.pauseImageAnimation(image);
setTimeout((image, imageFrame) =&gt; {
    shouldBeTrue(&quot;internals.imageFrameIndex(image) == imageFrame&quot;);
    internals.resumeImageAnimation(image);
    resolve(frame + 1);
}, 50, image, imageFrame);

&gt; LayoutTests/fast/images/disable-animations-resuming-frame.html:37
&gt; +            if (i == 2) {
&gt; +                internals.pauseImageAnimation(image);
&gt; +                internals.resumeImageAnimation(image);
&gt; +            }

I think this does not test anything. Pausing and resuming the animation happens in the same frame. We should allow the page to render after pausing the animation before checking whether the animation is paused or not. See my suggestion above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897279</commentid>
    <comment_count>54</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-09 10:06:28 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #53)
 
&gt; &gt; Source/WebCore/rendering/RenderView.cpp:884
&gt; &gt; +            element.repaint();
&gt; 
&gt; Should we check whether the background image is animated or not? Also I
&gt; think we should &quot;continue&quot; if we repaint the element.

I totally agree that we should continue after repainting. In terms of checking the background images, which would be less expensive: repainting anything with a background image or iterating through all of the fill layers and asking each image if it is animated? The later was why I held off on checking isAnimated.

 
&gt; &gt; LayoutTests/fast/images/disable-animations-resuming-frame.html:22
&gt; &gt; +                debug(&quot;Image frame: &quot; + imageFrame + &quot; was displayed.&quot;);
&gt; &gt; +                image.removeEventListener(&quot;webkitImageFrameReady&quot;, listener, true);
&gt; &gt; +                resolve(frame + 1);
&gt; 
&gt; Can something like this work?
&gt; 
&gt; debug(&quot;Image frame: &quot; + imageFrame + &quot; was displayed.&quot;);
&gt; image.removeEventListener(&quot;webkitImageFrameReady&quot;, listener, true);
&gt; internals.pauseImageAnimation(image);
&gt; setTimeout((image, imageFrame) =&gt; {
&gt;     shouldBeTrue(&quot;internals.imageFrameIndex(image) == imageFrame&quot;);
&gt;     internals.resumeImageAnimation(image);
&gt;     resolve(frame + 1);
&gt; }, 50, image, imageFrame);

I tried this out (with both the ImageAnimationEnabled setting and without), and I haven&apos;t got this logic working. `WebkitImageFrameReady` is firing after the the frame advances, so the internals.imageFrameIndex call inside the listener is always returning a frame one more than imageFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897325</commentid>
    <comment_count>55</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-09 11:35:00 -0700</bug_when>
    <thetext>&gt; I tried this out (with both the ImageAnimationEnabled setting and without), and I haven&apos;t got this logic working. `WebkitImageFrameReady` is firing after the the frame advances, so the internals.imageFrameIndex call inside the listener is always returning a frame one more than imageFrame

Okay let&apos;s check 

shouldBeTrue(&quot;internals.imageFrameIndex(image) == imageFrame + 1&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897373</commentid>
    <comment_count>56</comment_count>
      <attachid>462242</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2022-09-09 13:48:14 -0700</bug_when>
    <thetext>Created attachment 462242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897591</commentid>
    <comment_count>57</comment_count>
      <attachid>462256</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-10 14:09:33 -0700</bug_when>
    <thetext>Created attachment 462256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897944</commentid>
    <comment_count>58</comment_count>
      <attachid>462256</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-12 11:16:13 -0700</bug_when>
    <thetext>Comment on attachment 462256
Patch

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

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:387
&gt; +    return !shouldAnimate() &amp;&amp; m_source-&gt;canUseAsyncDecoding() &amp;&amp; !(frameCount() &gt; 1);

I do not think this change is needed for this patch. Also I think it is okay to treat &quot;non-animating animated&quot; images like static images. So I think we should return true for images which are (frameCount() == 1 || !shouldAnimate()). And this is equivalent to !canAnimate().

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:640
&gt; +    if (imageObserver() &amp;&amp; !imageObserver()-&gt;allowsAnimation(*this))
&gt; +        return;

Why do we have this early return? We do a few bookkeeping and callbacks after this new if-statement. I do not see why disallowing the animation make us skip all this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1898022</commentid>
    <comment_count>59</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-12 14:52:57 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #58)
&gt; Comment on attachment 462256 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=462256&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:387
&gt; &gt; +    return !shouldAnimate() &amp;&amp; m_source-&gt;canUseAsyncDecoding() &amp;&amp; !(frameCount() &gt; 1);
&gt; 
&gt; I do not think this change is needed for this patch. Also I think it is okay
&gt; to treat &quot;non-animating animated&quot; images like static images. So I think we
&gt; should return true for images which are (frameCount() == 1 ||
&gt; !shouldAnimate()). And this is equivalent to !canAnimate().
That makes sense to me. Josh did this because the async decoding codepath has an assert that assumes decoding only happens for bitmap images that:

  1. Can&apos;t animate
  2. Have a m_currentFrame == 0 OR m_animationFinished

With this patch, animations can now be paused and played from any frame, breaking the assumption of (2). So maybe we need to change or remove this assert. What do you think?

https://github.com/WebKit/WebKit/blob/ac0b87b8f24429a12bd4999b5861e0829ca2a7bc/Source/WebCore/platform/graphics/BitmapImage.cpp#L251

Sample crashtrace I triggered locally, plus some logs:

ASSERTION FAILED: m_currentFrame 4, m_animationFinished 0
!m_currentFrame || m_animationFinished
platform/graphics/BitmapImage.cpp(251) : virtual WebCore::ImageDrawResult WebCore::BitmapImage::draw(WebCore::GraphicsContext &amp;, const WebCore::FloatRect &amp;, const WebCore::FloatRect &amp;, const WebCore::ImagePaintingOptions &amp;)
1   0x12cbf49d0 WTFCrash
2   0x14f2e90f4 WebCore::BitmapImage::draw(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
3   0x14f40e828 WebCore::Image::drawTiled(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::FloatSize const&amp;, WebCore::ImagePaintingOptions const&amp;)
4   0x14f3e58cc WebCore::GraphicsContext::drawTiledImage(WebCore::Image&amp;, WebCore::FloatRect const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::FloatSize const&amp;, WebCore::ImagePaintingOptions const&amp;)
5   0x14f899fd4 WebCore::BackgroundPainter::paintFillLayer(WebCore::Color const&amp;, WebCore::FillLayer const&amp;, WebCore::LayoutRect const&amp;, WebCore::BackgroundBleedAvoidance, WebCore::InlineIterator::InlineBoxIterator const&amp;, WebCore::LayoutRect const&amp;, WebCore::CompositeOperator, WebCore::RenderElement*, WebCore::BaseBackgroundColorUsage)
 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:640
&gt; &gt; +    if (imageObserver() &amp;&amp; !imageObserver()-&gt;allowsAnimation(*this))
&gt; &gt; +        return;
&gt; 
&gt; Why do we have this early return? We do a few bookkeeping and callbacks
&gt; after this new if-statement. I do not see why disallowing the animation make
&gt; us skip all this code.
This avoids a similar ASSERT to the one above:

ASSERT(index == m_currentFrame &amp;&amp; !m_currentFrame);

https://github.com/WebKit/WebKit/blob/ac0b87b8f24429a12bd4999b5861e0829ca2a7bc/Source/WebCore/platform/graphics/BitmapImage.cpp#L639

ASSERTION FAILED: index 32, m_currentFrame 31
index == m_currentFrame &amp;&amp; !m_currentFrame
platform/graphics/BitmapImage.cpp(643) : void WebCore::BitmapImage::imageFrameAvailableAtIndex(size_t)
1   0x12ff709d0 WTFCrash
2   0x2847afed4 WebCore::BitmapImage::imageFrameAvailableAtIndex(unsigned long)
3   0x2848e9e78 WebCore::ImageSource::cachePlatformImageAtIndexAsync(WTF::RetainPtr&lt;CGImage*&gt;&amp;&amp;, unsigned long, WebCore::SubsamplingLevel, WebCore::DecodingOptions const&amp;, WebCore::DecodingStatus)
4   0x2848f6028 WebCore::ImageSource::startAsyncDecodingQueue()::$_3::operator()()::&apos;lambda&apos;()::operator()()
5   0x2848f5dbc WTF::Detail::CallableWrapper&lt;WebCore::ImageSource::startAsyncDecodingQueue()::$_3::operator()()::&apos;lambda&apos;(), void&gt;::call()
6   0x12ff99774 WTF::Function&lt;void ()&gt;::operator()() const
7   0x13002b158 WTF::RunLoop::performWork()

If we change both of these ASSERTs, I think we can remove the behavior changes you highlighted in your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1898042</commentid>
    <comment_count>60</comment_count>
      <attachid>462256</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-09-12 15:23:51 -0700</bug_when>
    <thetext>Comment on attachment 462256
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:387
&gt;&gt;&gt; +    return !shouldAnimate() &amp;&amp; m_source-&gt;canUseAsyncDecoding() &amp;&amp; !(frameCount() &gt; 1);
&gt;&gt; 
&gt;&gt; I do not think this change is needed for this patch. Also I think it is okay to treat &quot;non-animating animated&quot; images like static images. So I think we should return true for images which are (frameCount() == 1 || !shouldAnimate()). And this is equivalent to !canAnimate().
&gt; 
&gt; That makes sense to me. Josh did this because the async decoding codepath has an assert that assumes decoding only happens for bitmap images that:
&gt; 
&gt;   1. Can&apos;t animate
&gt;   2. Have a m_currentFrame == 0 OR m_animationFinished
&gt; 
&gt; With this patch, animations can now be paused and played from any frame, breaking the assumption of (2). So maybe we need to change or remove this assert. What do you think?
&gt; 
&gt; https://github.com/WebKit/WebKit/blob/ac0b87b8f24429a12bd4999b5861e0829ca2a7bc/Source/WebCore/platform/graphics/BitmapImage.cpp#L251
&gt; 
&gt; Sample crashtrace I triggered locally, plus some logs:
&gt; 
&gt; ASSERTION FAILED: m_currentFrame 4, m_animationFinished 0
&gt; !m_currentFrame || m_animationFinished
&gt; platform/graphics/BitmapImage.cpp(251) : virtual WebCore::ImageDrawResult WebCore::BitmapImage::draw(WebCore::GraphicsContext &amp;, const WebCore::FloatRect &amp;, const WebCore::FloatRect &amp;, const WebCore::ImagePaintingOptions &amp;)
&gt; 1   0x12cbf49d0 WTFCrash
&gt; 2   0x14f2e90f4 WebCore::BitmapImage::draw(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
&gt; 3   0x14f40e828 WebCore::Image::drawTiled(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::FloatSize const&amp;, WebCore::ImagePaintingOptions const&amp;)
&gt; 4   0x14f3e58cc WebCore::GraphicsContext::drawTiledImage(WebCore::Image&amp;, WebCore::FloatRect const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatSize const&amp;, WebCore::FloatSize const&amp;, WebCore::ImagePaintingOptions const&amp;)
&gt; 5   0x14f899fd4 WebCore::BackgroundPainter::paintFillLayer(WebCore::Color const&amp;, WebCore::FillLayer const&amp;, WebCore::LayoutRect const&amp;, WebCore::BackgroundBleedAvoidance, WebCore::InlineIterator::InlineBoxIterator const&amp;, WebCore::LayoutRect const&amp;, WebCore::CompositeOperator, WebCore::RenderElement*, WebCore::BaseBackgroundColorUsage)

Yes I think we should change the assertion from 

    ASSERT(!canAnimate());
    ASSERT(!m_currentFrame || m_animationFinished);

to

    ASSERT(!m_currentFrame || !canAnimate());

&gt;&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:640
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; Why do we have this early return? We do a few bookkeeping and callbacks after this new if-statement. I do not see why disallowing the animation make us skip all this code.
&gt; 
&gt; This avoids a similar ASSERT to the one above:
&gt; 
&gt; ASSERT(index == m_currentFrame &amp;&amp; !m_currentFrame);
&gt; 
&gt; https://github.com/WebKit/WebKit/blob/ac0b87b8f24429a12bd4999b5861e0829ca2a7bc/Source/WebCore/platform/graphics/BitmapImage.cpp#L639
&gt; 
&gt; ASSERTION FAILED: index 32, m_currentFrame 31
&gt; index == m_currentFrame &amp;&amp; !m_currentFrame
&gt; platform/graphics/BitmapImage.cpp(643) : void WebCore::BitmapImage::imageFrameAvailableAtIndex(size_t)
&gt; 1   0x12ff709d0 WTFCrash
&gt; 2   0x2847afed4 WebCore::BitmapImage::imageFrameAvailableAtIndex(unsigned long)
&gt; 3   0x2848e9e78 WebCore::ImageSource::cachePlatformImageAtIndexAsync(WTF::RetainPtr&lt;CGImage*&gt;&amp;&amp;, unsigned long, WebCore::SubsamplingLevel, WebCore::DecodingOptions const&amp;, WebCore::DecodingStatus)
&gt; 4   0x2848f6028 WebCore::ImageSource::startAsyncDecodingQueue()::$_3::operator()()::&apos;lambda&apos;()::operator()()
&gt; 5   0x2848f5dbc WTF::Detail::CallableWrapper&lt;WebCore::ImageSource::startAsyncDecodingQueue()::$_3::operator()()::&apos;lambda&apos;(), void&gt;::call()
&gt; 6   0x12ff99774 WTF::Function&lt;void ()&gt;::operator()() const
&gt; 7   0x13002b158 WTF::RunLoop::performWork()
&gt; 
&gt; If we change both of these ASSERTs, I think we can remove the behavior changes you highlighted in your comment.

Yes I think we can change the assertion:

    ASSERT(index == m_currentFrame &amp;&amp; !m_currentFrame);

to

    ASSERT((!index &amp;&amp; !m_currentFrame) || !canAnimate());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1898072</commentid>
    <comment_count>61</comment_count>
      <attachid>462299</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-09-12 16:52:47 -0700</bug_when>
    <thetext>Created attachment 462299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1898414</commentid>
    <comment_count>62</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-09-14 01:07:57 -0700</bug_when>
    <thetext>Committed 254469@main (55b3d145b200): &lt;https://commits.webkit.org/254469@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462299.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461738</attachid>
            <date>2022-08-19 14:08:28 -0700</date>
            <delta_ts>2022-08-19 18:02:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220819140827.patch</filename>
            <type>text/plain</type>
            <size>48090</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA2OTQ3ZTc2YmMzYzUzYmMyYWY4Nzk4MzcwMTdlNjI0YjNhMzQ1Y2ZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDE5IEF1ZyAyMDIyIDEwOjQxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgaW1hZ2UgYW5pbWF0aW9ucwogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpUaGlzIHBhdGNoIGFkZHMgYSBuZXcgZXhwZXJpbWVudGFsIEFYIGZlYXR1
cmUsIHdoaWNoIHdoZW4gZW5hYmxlZCwgZGlzYWJsZXMgaW1hZ2UgYW5pbWF0aW9ucy4gVGhpcyBp
bmNsdWRlcyByZWd1bGFyIGJpdG1hcCBpbWFnZXMsIGJhY2tncm91bmQgaW1hZ2VzLCBTVkcgYW5p
bWF0aW9ucywgYW5kIHN1cHBvcnQgZm9yIHRoZSA8bW9kZWw+IGVsZW1lbnQuIEFkZGl0aW9uYWxs
eSwgd2UgcHJvdmlkZSBuZXcgaW50ZXJmYWNlcyB0byBjb250cm9sIGFuaW1hdGlvbnMgYXQgdGhl
IHBhZ2UgYW5kIGluZGl2aWR1YWwgaW1hZ2UgbGV2ZWwuCgoqIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJs
ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1p
bmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5p
bWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmOiBBZGRlZC4KKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZjogQWRkZWQu
CgpUZXN0cyB0b2dnbGluZyB0aGUgc2V0dGluZywgdG9nZ2xpbmcgYW5pbWF0aW9ucyBvbiBhbiBl
bnRpcmUgcGFnZSwgYW5kIHRvZ2dsaW5nIGFuIGluZGl2aWR1YWwgYW5pbWF0aW9uLgoKKiBTb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bDoKCkFkZHMgdGhlIG5ldyBleHBlcmltZW50YWwgZmVhdHVyZSBhbmQgc2V0cyBpdCBvZmYgYnkg
ZGVmYXVsdC4KCiogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwOgooV2ViQ29yZTo6bV9hbGxvd0luZGl2aWR1YWxBbmltYXRpb24pOgooV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0QW5pbWF0aW9uSXNQbGF5aW5nKToKCkVuc3VyZSB0
aGF0IHdoZW4gdGhlIHNldHRpbmcgaXMgZW5hYmxlZCwgdGhlIGNsaWVudCBjYW5ub3Qgc3RhcnQg
dGhlIGFuaW1hdGlvbi4KCihXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF5QW5pbWF0aW9u
V2hlbkRpc2FibGVkKToKKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9u
V2hlbkRpc2FibGVkKToKCk5ldyBtZXRob2RzIHRvIGFsbG93IHdlYmtpdCB0byBjb250cm9sIG1v
ZGVsIGFuaW1hdGlvbnMgd2hlbiB0aGUgcGFnZS13aWRlIGFuaW1hdGlvbnMgYXJlIG9mZi4KCiog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoK
KiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgooV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKClVwZGF0ZXMgdGhlIHNldHRpbmdz
IHdoZW4gYW4gaW1hZ2UgaXMgcmVuZGVyZWQsIGluIGNhc2UgaXQgaGFkIG5vdCB5ZXQgYmVlbiBy
ZW5kZXJlZCB3aGVuIHBhZ2Utd2lkZSBhbmltYXRpb25zIGFyZSB0b2dnbGVkLgoKKFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQ6OnBsYXlBbmltYXRpb24pOgooV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6cGF1c2VBbmltYXRpb24pOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aXNBbmlt
YXRpbmcpOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRlZEltYWdlKToKCk1l
dGhvZHMgdG8gY29udHJvbCBpbWFnZSBhbmltYXRpb25zIGFuZCBjaGVjayB0aGUgc3RhdHVzIG9m
IGFuIGFuaW1hdGlvbi4KCiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6
CiogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHA6CihXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2Up
OgoKQ2hhbmdlIHVwZGF0ZUZyb21TZXR0aW5ncyAtPiB1cGRhdGVGcm9tRG9jdW1lbnQuCgoqIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6CihXZWJDb3JlOjpQYWdlOjp0b2dnbGVBbGxBbmlt
YXRpb25zKToKKFdlYkNvcmU6OlBhZ2U6OmNvbnRhaW5zQW5pbWF0ZWRJbWFnZXMpOgooV2ViQ29y
ZTo6UGFnZTo6aXNBbGxBbmltYXRpb25QYXVzZWQpOgoKTWV0aG9kcyB0byBjb250cm9sIHBhZ2Ut
d2lkZSBhbmltYXRpb25zLgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6dXBkYXRlRnJvbURvY3VtZW50KToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3Mg
dG8gdXBkYXRlRnJvbURvY3VtZW50IGJlY2F1c2UgaXQgbmVlZHMgdG8gY2FsbCBhIG1ldGhvZCBv
biBwYWdlLgoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpzaG91bGRBbmltYXRlIGNvbnN0KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc0FuaW1h
dGluZyBjb25zdCk6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0
SW5kZXgpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnBsYXlBbmltYXRpb24pOgooV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OnBhdXNlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRh
dGVEb2N1bWVudE9uUmVuZGVyKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVGcm9tU2V0
dGluZ3MpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmg6CgpOZXcgbWV0aG9kcyB0byBjb250cm9sIGEgYml0bWFwIGltYWdlJ3MgYW5pbWF0
aW9ucywgYXMgd2VsbCBhcyBjaGVja3MgaW4gZXhpc3RpbmcgbWV0aG9kcyB0byBlbnN1cmUgdGhh
dCBhbiBpbWFnZSBkb2VzIG5vdCBzdGFydCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQuCgoq
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKFdlYkNvcmU6Oklt
YWdlOjppc0FuaW1hdGluZyBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaDoKKFdlYkNvcmU6OkltYWdlOjppc0FuaW1hdGluZyBjb25zdCk6IERlbGV0ZWQu
CgpVcGRhdGVzIHRvIGlzQW5pbWF0aW5nIHRvIGV4cG9ydCBpdCBmcm9tIHdlYmNvcmUuCgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CihXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CgpDaGFuZ2Ug
dXBkYXRlRnJvbVNldHRpbmdzIC0+IHVwZGF0ZUZyb21Eb2N1bWVudC4KCiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dEludG9SZWN0KToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3MgLT4gdXBkYXRlRnJvbURvY3Vt
ZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDoKKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RhcnRBbmltYXRpb24pOgoqIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OlNWR0VsZW1l
bnQpOgooV2ViQ29yZTo6U1ZHRWxlbWVudDo6aXNBbmltYXRlZCBjb25zdCk6CiogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyk6CihX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGxheUFuaW1hdGlvbik6CihXZWJDb3JlOjpTVkdTTUlM
RWxlbWVudDo6cGF1c2VBbmltYXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuaDoKKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojppc0FuaW1hdGVkIGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgooV2ViQ29y
ZTo6U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToKCk1ldGhvZHMgYW5kIGNoZWNrcyB0byBwcmV2
ZW50IFNWRyBhbmltYXRpb25zIGZyb20gc3RhcnRpbmcgd2hlbiB0aGUgc2V0dGluZyBpcyBlbmFi
bGVkLgoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgoqIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKFdlYkNvcmU6OkludGVybmFsczo6
cGxheUltYWdlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6cGF1c2VJbWFnZUFuaW1h
dGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnRvZ2dsZVBhZ2VBbmltYXRpb24pOgoqIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmg6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsOgoqIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwOgoo
V1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMpOgoKTmV3IGludGVybmFsIHRlc3RpbmcgbWV0aG9k
cyB0byB2ZXJpZnkgdGhlIHNldHRpbmcgaXMgb24gJiBpbWFnZXMgYXJlIGluIHRoZSBjb3JyZWN0
IHN0YXRlLgotLS0KIC4uLi9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sICAgICAgICAg
ICB8ICAxMiArKysKIC4uLi9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwICAgICAg
ICB8ICAyNCArKysrKwogLi4uL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmggIHwgICA1ICsKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgICAg
ICB8ICA2OSArKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmggICAgICAgIHwgICA1ICsKIC4uLi9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAg
ICAgICAgICAgIHwgIDg2ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggICAgICAgICAgICAgICAgICAgIHwgICA2ICsrCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgfCAgMzcgKysrKysrLS0KIC4uLi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggICB8ICAxMyArKy0KIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCAgICB8ICAgNSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oICAgICAgfCAgIDIgKy0KIC4uLi9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwICAgICAgICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oICAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAgIHwgIDIyICsrKysrCiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmggfCAgIDMgKwogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcCAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwICAgICAgICAgIHwgIDIzICsrKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oICAgICAgICAgICAgfCAgIDUgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsICAgICAgICAgIHwgICAzICsKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuY3BwICAgICAgICB8ICAgMSArCiAuLi4vZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhw
ZWN0ZWQudHh0ICAgfCAgIDcgKysKIC4uLi9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQu
aHRtbCAgICAgICB8ICAyNCArKysrKwogLi4ub25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24t
ZXhwZWN0ZWQudHh0IHwgICA4ICsrCiAuLi4tYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5p
bWF0aW9uLmh0bWwgfCAgMjkgKysrKysrCiAuLi5hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9u
cy1leHBlY3RlZC50eHQgfCAgIDggKysKIC4uLmJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMuaHRtbCB8ICAzMSArKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3Vy
Y2VzL2FuaW1hdGVkMi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIC4uLi9hY2Nlc3NpYmlsaXR5
L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiB8IEJpbiAwIC0+IDEwNTUgYnl0ZXMKIDMzIGZp
bGVzIGNoYW5nZWQsIDQzOCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtZW5hYmxlZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBs
YXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmlt
YXRpb25zLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0
bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNv
dXJjZXMvYW5pbWF0ZWQyLmdpZgogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbAppbmRleCBlMDg4OWZmOWQwODguLjRlYzI1MzRkNmFlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKQEAgLTY1LDYgKzY1LDE4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RNb2Rl
bEVuYWJsZWQ6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYktpdDoKICAgICAgIGRlZmF1
bHQ6IGZhbHNlCisgICAgICAKK0FuaW1hdGVkSW1hZ2VzRGlzYWJsZWQ6CisgIHR5cGU6IGJvb2wK
KyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDb250cm9sIGFuaW1hdGVkIGltYWdlcyIKKyAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiRGlzYWJsZSBhbmltYXRpb25zIGFuZCB2aWV3IGFuaW1hdGVk
IGltYWdlcyBhcyBzdGF0aWMuIgorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5Ogor
ICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQor
ICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQogCiBBcmlhUmVmbGVjdGlvbkZvckVs
ZW1lbnRSZWZlcmVuY2VzRW5hYmxlZDoKICAgdHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmlu
ZGV4IGExZjRlZDAzNTgyYS4uYjRlMTI4MTdlYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC01
OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgogI2luY2x1
ZGUgIlJlbmRlck1vZGVsLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVwbGFjZWQuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC03Myw2ICs3NCw3IEBA
IEhUTUxNb2RlbEVsZW1lbnQ6OkhUTUxNb2RlbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3JlYWR5UHJvbWlzZSB7IG1ha2VVbmlx
dWVSZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlz
ZVJlc29sdmUpIH0KIHsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsK
KyAgICBtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbiA9IGRvY3VtZW50LnNldHRpbmdzKCkuYW5pbWF0
ZWRJbWFnZXNEaXNhYmxlZCgpOwogfQogCiBIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxl
bWVudCgpCkBAIC01MDEsNiArNTAzLDE0IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0QW5p
bWF0aW9uSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nLCBET01Qcm9taXNlRGVmZXJyZWQ8CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAg
aWYgKG1fZGlzYWJsZUltYWdlQW5pbWF0aW9uICYmICFtX2FsbG93SW5kaXZpZHVhbEFuaW1hdGlv
bikgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICBtX21vZGVsUGxheWVyLT5z
ZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtdIChib29sIHN1Y2Nlc3MpIG11dGFibGUgewor
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHN1Y2Nlc3MpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIG1fbW9kZWxQbGF5ZXItPnNldEFuaW1hdGlvbklzUGxheWlu
Zyhpc1BsYXlpbmcsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChzdWNjZXNzKQpAQCAtNTIwLDYgKzUzMCwyMCBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpCiAgICAgc2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpwbGF5QW5pbWF0aW9uV2hlbkRp
c2FibGVkKCkKK3sKKyAgICBtX2FsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7Cit9CisK
K3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6cGF1c2VBbmltYXRpb25XaGVuRGlzYWJsZWQoKQorewor
ICAgIG1fYWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uID0gZmFsc2U7CisgICAgbV9tb2RlbFBsYXll
ci0+c2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBbXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxl
IHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN1Y2Nlc3MpOworICAgIH0pOworfQorCisKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6aXNMb29waW5nQW5pbWF0aW9uKElzTG9vcGluZ0FuaW1hdGlvblBy
b21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghbV9tb2RlbFBsYXllcikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKaW5kZXggYzgwNTBlM2Y1YmRiLi44MTAyYjM5Y2MxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAt
OTIsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhbmltYXRpb25DdXJyZW50VGltZShDdXJy
ZW50VGltZVByb21pc2UmJik7CiAgICAgdm9pZCBzZXRBbmltYXRpb25DdXJyZW50VGltZShkb3Vi
bGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAorICAgIHZvaWQgcGxheUFuaW1hdGlv
bldoZW5EaXNhYmxlZCgpOworICAgIHZvaWQgcGF1c2VBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsK
KwogICAgIHVzaW5nIEhhc0F1ZGlvUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29s
ZWFuPjsKICAgICB2b2lkIGhhc0F1ZGlvKEhhc0F1ZGlvUHJvbWlzZSYmKTsKICAgICB1c2luZyBJ
c011dGVkUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPjsKQEAgLTE2Miw2
ICsxNjUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc0RyYWdnaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkQ3JlYXRl
TW9kZWxQbGF5ZXJVcG9uUmVuZGVyZXJBdHRhY2htZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1f
ZGlzYWJsZUltYWdlQW5pbWF0aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYWxsb3dJbmRpdmlk
dWFsQW5pbWF0aW9uIHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxNb2RlbFBsYXllcj4gbV9tb2Rl
bFBsYXllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCBhYjY3MzY4MzA4YjkuLmNiNWVlZTMyNTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCkBAIC0zNyw2ICszOCw4IEBACiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVy
LmgiCkBAIC00NSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3Jjc2V0UGFyc2Vy
LmgiCisjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxhenlMb2FkSW1h
Z2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCkBAIC01MywxMiArNTcsMTUgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5o
IgorI2luY2x1ZGUgIlJlbmRlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCIK
KyNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC00
MTIsNiArNDE5LDE1IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJz
KCkKICAgICAvLyBpbWFnZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVh
ZC4KICAgICBpZiAoIW1faW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIXJlbmRlckltYWdlUmVzb3Vy
Y2UuY2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmVuZGVySW1hZ2Uuc2V0SW1hZ2VTaXplRm9yQWx0
VGV4dCgpOworCisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2Uo
KSkgeworICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgewor
ICAgICAgICAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2UpKSB7CisgICAgICAgICAgICAg
ICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFn
ZSk7CisgICAgICAgICAgICAgICAgYml0bWFwSW1hZ2UudXBkYXRlRG9jdW1lbnRPblJlbmRlcihk
b2N1bWVudCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAogTm9kZTo6
SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJl
bnRPZkluc2VydGVkVHJlZSkKQEAgLTc2Niw2ICs3ODIsNDYgQEAgYm9vbCBIVE1MSW1hZ2VFbGVt
ZW50OjphbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29uc3QKICAgICByZXR1cm4gIWltYWdl
IHx8IGltYWdlLT5zb3VyY2VVUkwoKS5wcm90b2NvbElzRGF0YSgpIHx8IGNhY2hlZEltYWdlLT5p
c0NPUlNTYW1lT3JpZ2luKCk7CiB9CiAKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGxheUFuaW1h
dGlvbigpCit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2Uo
KSkgeworICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgewor
ICAgICAgICAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2UpKSB7CisgICAgICAgICAgICAg
ICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFn
ZSk7CisgICAgICAgICAgICAgICAgYml0bWFwSW1hZ2UudXBkYXRlRnJvbURvY3VtZW50KGRvY3Vt
ZW50KCkpOworICAgICAgICAgICAgICAgIGJpdG1hcEltYWdlLnBsYXlBbmltYXRpb24oKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50
OjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+
Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+
aW1hZ2UoKSkgeworICAgICAgICAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2UpKSB7Cisg
ICAgICAgICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFw
SW1hZ2U+KCppbWFnZSk7CisgICAgICAgICAgICAgICAgYml0bWFwSW1hZ2UudXBkYXRlRnJvbURv
Y3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgIGJpdG1hcEltYWdlLnBhdXNlQW5p
bWF0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgSFRN
TEltYWdlRWxlbWVudDo6aXNBbmltYXRpbmcoKQoreworICAgIAorICAgIGlmIChhdXRvKiBjYWNo
ZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChpczxCaXRtYXBJbWFn
ZT4oKmltYWdlKSkgeworICAgICAgICAgICAgICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9
IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOworICAgICAgICAgICAgICAgIHJldHVybiBi
aXRtYXBJbWFnZS5pc0FuaW1hdGluZygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldEF0dGFjaG1lbnRFbGVtZW50KFJlZjxI
VE1MQXR0YWNobWVudEVsZW1lbnQ+JiYgYXR0YWNobWVudCkKQEAgLTk1Nyw0ICsxMDEzLDE3IEBA
IFJlZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmli
dXRlc0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAgcmV0dXJuIGNsb25lOwogfQogCitib29sIEhU
TUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFnZSgpCit7CisgICAgaWYgKGF1dG8qIGNhY2hl
ZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICBpZiAoYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkgeworICAgICAgICAgICAgaWYgKGlzPEJpdG1hcEltYWdl
PigqaW1hZ2UpKSB7CisgICAgICAgICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0g
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlt
YWdlLT5pc0FuaW1hdGVkKCkgfHwgIWJpdG1hcEltYWdlLmlzQW5pbWF0aW9uRmluaXNoZWQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggNmQ1NWUxODdjYjI0
Li4zNGFiZGEyZTFiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBA
IC0xNTQsNiArMTU0LDExIEBAIHB1YmxpYzoKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSgpIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29u
c3Q7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5QW5pbWF0aW9uKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZUFuaW1hdGlvbigpOworICAgIGJvb2wgaXNBbmltYXRp
bmcoKTsKKyAgICBib29sIGlzQW5pbWF0ZWRJbWFnZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgSFRN
TEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVs
ZW1lbnQqID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDliYmNjNTVlNTMy
OS4uNjI4NWQ4M2JhN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTU2Miw3ICsxNTYy
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJh
d0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBkb3duY2FzdDxC
aXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3MoZG9jdW1lbnQuc2V0dGluZ3Mo
KSk7CisgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21Eb2N1
bWVudChkb2N1bWVudCk7CiAgICAgfQogCiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9u
cyA9IHsgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGQ2MzM3NjBlOTFiNC4uYjk3NDdkODM5ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0Zv
cndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKQEAgLTc3LDYgKzc4LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUg
Ikhpc3RvcnlDb250cm9sbGVyLmgiCkBAIC0xMjksNiArMTMxLDcgQEAKICNpbmNsdWRlICJSZXNv
dXJjZVVzYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgog
I2luY2x1ZGUgIlNWR0ltYWdlLmgiCisjaW5jbHVkZSAiU1ZHU01JTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVyLmgiCkBAIC0xNTIsNiArMTU1LDcgQEAKICNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UmVjb2duaXRpb25SZXN1bHQuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRlci5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJbnB1dEJy
aWRnZS5oIgpAQCAtNDAyNSw0ICs0MDI5LDg2IEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxs
RnJhbWVzKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucygpCit7
CisgICAgbV9wYWdlQW5pbWF0aW9uc1VucGF1c2VkID0gIW1fcGFnZUFuaW1hdGlvbnNVbnBhdXNl
ZDsKKyAgICBmb3JFYWNoRG9jdW1lbnQoW3RoaXNdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4oZG9jdW1lbnQucm9vdE5vZGUoKSkpKSB7CisgICAgICAg
ICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobV9wYWdlQW5pbWF0aW9uc1VucGF1c2VkKQorICAgICAgICAgICAgICAgICAgICBkb3du
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5wbGF5QW5pbWF0aW9uKCk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50PihlbGVtZW50KS5wYXVzZUFuaW1hdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGlzPFNWR1NNSUxFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGlm
IChtX3BhZ2VBbmltYXRpb25zVW5wYXVzZWQpCisgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0
PFNWR1NNSUxFbGVtZW50PihlbGVtZW50KS5wbGF5QW5pbWF0aW9uKCk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oZWxl
bWVudCkucGF1c2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChp
czxIVE1MTW9kZWxFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChtX3Bh
Z2VBbmltYXRpb25zVW5wYXVzZWQpCisgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxN
b2RlbEVsZW1lbnQ+KGVsZW1lbnQpLnBsYXlBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxNb2RlbEVs
ZW1lbnQ+KGVsZW1lbnQpLnBhdXNlQW5pbWF0aW9uV2hlbkRpc2FibGVkKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3VuZElt
YWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gY2FjaGVkQmFja2dyb3VuZElt
YWdlID0gcmVuZGVyZXItPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLmltYWdlKCktPmNhY2hl
ZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIGJhY2tncm91bmRJ
bWFnZSA9IGNhY2hlZEJhY2tncm91bmRJbWFnZS0+aW1hZ2UoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kSW1hZ2UgJiYgaXM8Qml0bWFwSW1hZ2U+KGJhY2tn
cm91bmRJbWFnZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0bWFwSW1h
Z2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCpiYWNrZ3JvdW5kSW1hZ2Up
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBJbWFnZS51cGRhdGVGcm9t
RG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9wYWdlQW5pbWF0aW9uc1VucGF1c2VkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYml0bWFwSW1hZ2UucGxheUFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRt
YXBJbWFnZS5wYXVzZUFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworfQorCitib29s
IFBhZ2U6OmNvbnRhaW5zQW5pbWF0ZWRJbWFnZXMoKQoreworICAgIGJvb2wgZm91bmRBbmltYXRl
ZEltYWdlID0gZmFsc2U7CisgICAgZm9yRWFjaERvY3VtZW50KFsmZm91bmRBbmltYXRlZEltYWdl
XSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRl
c2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KGRvY3Vt
ZW50LnJvb3ROb2RlKCkpKSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmlzQW5pbWF0
ZWRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChp
czxTVkdTTUlMRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8U1ZHU01JTEVsZW1lbnQ+KGVs
ZW1lbnQpLmlzQW5pbWF0ZWQoKSkgeworICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFn
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoaXM8SFRNTE1vZGVsRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAg
ICBmb3VuZEFuaW1hdGVkSW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5k
ZXJlcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0JhY2tn
cm91bmRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIGNhY2hlZEJhY2tn
cm91bmRJbWFnZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgp
LT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBiYWNr
Z3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UtPmltYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZEltYWdlICYmIGlzPEJpdG1hcEltYWdl
PihiYWNrZ3JvdW5kSW1hZ2UpICYmIGJhY2tncm91bmRJbWFnZS0+aXNBbmltYXRlZCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0pOworICAgIHJldHVybiBmb3VuZEFuaW1hdGVkSW1hZ2U7Cit9CisKK2Jvb2wgUGFnZTo6aXNB
bGxBbmltYXRpb25QYXVzZWQoKQoreworICAgIHJldHVybiAhbV9wYWdlQW5pbWF0aW9uc1VucGF1
c2VkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGZjYjFi
NjUxMDMzOC4uZjcyNjkyOTRiYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtOTc2LDYgKzk3NiwxMCBA
QCBwdWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbiBjb250
ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uOyB9CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZvcmNlUmVwYWludEFsbEZyYW1lcygpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNBbGxBbmltYXRpb25QYXVzZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRv
Z2dsZUFsbEFuaW1hdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zQW5p
bWF0ZWRJbWFnZXMoKTsKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFuYWx5emVJbWFnZXNGb3JGaW5kSW5QYWdlKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjayk7CkBAIC0xMzQxLDYgKzEzNDUsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uIG1fY29udGVudFNlY3VyaXR5
UG9saWN5TW9kZUZvckV4dGVuc2lvbiB7IENvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRl
bnNpb246Ok5vbmUgfTsKKyAgICAKKyAgICBib29sIG1fcGFnZUFuaW1hdGlvbnNVbnBhdXNlZCB7
IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTg3
YWM2OTBiMmVjLi41NThiODE1YzkyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjUsMTEgKzY3LDEzIEBA
IEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQogICAgIG1fc291cmNlLT5zdG9wQXN5bmNEZWNv
ZGluZ1F1ZXVlKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhj
b25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVGcm9tRG9j
dW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIG1fYWxsb3dTdWJzYW1wbGlu
ZyA9IHNldHRpbmdzLmltYWdlU3Vic2FtcGxpbmdFbmFibGVkKCk7Ci0gICAgbV9hbGxvd0FuaW1h
dGVkSW1hZ2VBc3luY0RlY29kaW5nID0gc2V0dGluZ3MuYW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2Rp
bmdFbmFibGVkKCk7Ci0gICAgbV9zaG93RGVidWdCYWNrZ3JvdW5kID0gc2V0dGluZ3Muc2hvd0Rl
YnVnQm9yZGVycygpOworICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9IGRvY3VtZW50LnNldHRpbmdz
KCkuaW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQoKTsKKyAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFz
eW5jRGVjb2RpbmcgPSBkb2N1bWVudC5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZCgpOworICAgIG1fc2hvd0RlYnVnQmFja2dyb3VuZCA9IGRvY3VtZW50LnNldHRp
bmdzKCkuc2hvd0RlYnVnQm9yZGVycygpOworICAgIG1fZGlzYWJsZUltYWdlQW5pbWF0aW9uID0g
ZG9jdW1lbnQuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCk7CisgICAgbV9pc1Bh
Z2VBbmltYXRpb25FbmFibGVkID0gIWRvY3VtZW50LnBhZ2UoKS0+aXNBbGxBbmltYXRpb25QYXVz
ZWQoKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVz
dHJveUFsbCkKQEAgLTI0Niw3ICsyNTAsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAg
IExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1YnNhbXBsaW5n
TGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40ZildIiwgX19GVU5D
VElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3RvckZvckRyYXdp
bmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAogICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gaW1hZ2U7Ci0gICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0g
RGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKKyAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01v
ZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cyAmJiAhbV9kaXNhYmxlSW1hZ2VBbmlt
YXRpb24pIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQo
IW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0zNzQsNyArMzc4
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRB
bmltYXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5p
bWF0aW9uRmluaXNoZWQgJiYgaW1hZ2VPYnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9u
Q291bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgKCFt
X2Rpc2FibGVJbWFnZUFuaW1hdGlvbiB8fCBtX2FsbG93SW5kaXZpZHVhbEFuaW1hdGlvbik7CiB9
CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKSBjb25zdApAQCAtNjc2LDQgKzY4MCwy
NSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgIG1f
c291cmNlLT5kdW1wKHRzKTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6cGxheUFuaW1hdGlvbigp
Cit7CisgICAgaWYgKG1fYWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47
CisgICAgbV9hbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSB0cnVlOworICAgIGludGVybmFsU3Rh
cnRBbmltYXRpb24oKTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6cGF1c2VBbmltYXRpb24oKQor
eworICAgIGlmICghbV9hbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAgICAgIHJldHVybjsK
KyAgICBzdG9wQW5pbWF0aW9uKCk7CisgICAgbV9hbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBm
YWxzZTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcihEb2N1
bWVudCYgZG9jdW1lbnQpCit7CisgICAgbV9hbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSAhZG9j
dW1lbnQucGFnZSgpLT5pc0FsbEFuaW1hdGlvblBhdXNlZCgpOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCBkM2Y0ZmViZDA4
MDQuLmM0YjJjYjJmYzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCkBAIC00OSw2ICs0OSw3IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBf
XyAqSEJJVE1BUDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2V0dGluZ3M7CitjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIFRpbWVyOwogCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1
YmxpYyBJbWFnZSB7CkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1
YWwgfkJpdG1hcEltYWdlKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBT
ZXR0aW5ncyYpOworICAgIHZvaWQgdXBkYXRlRnJvbURvY3VtZW50KGNvbnN0IERvY3VtZW50Jik7
CiAKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCkBAIC0xNTgsNiArMTU5LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KTsKICAgICB2b2lkIGRlY29kZShGdW5j
dGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcGxheUFuaW1hdGlvbigpOworICAgIHZvaWQgcGF1
c2VBbmltYXRpb24oKTsKKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBhbGxvd3NJbmRpdmlkdWFsQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGlvbkZp
bmlzaGVkKCkgeyByZXR1cm4gbV9hbmltYXRpb25GaW5pc2hlZDsgfTsKKyAgICB2b2lkIHVwZGF0
ZURvY3VtZW50T25SZW5kZXIoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VY
UE9SVCBCaXRtYXBJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYpOwpAQCAtMTk1LDcgKzIwMiw2IEBA
IHByaXZhdGU6CiAgICAgU3RhcnRBbmltYXRpb25TdGF0dXMgaW50ZXJuYWxTdGFydEFuaW1hdGlv
bigpOwogICAgIHZvaWQgYWR2YW5jZUFuaW1hdGlvbigpOwogICAgIHZvaWQgaW50ZXJuYWxBZHZh
bmNlQW5pbWF0aW9uKCk7Ci0gICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gSXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0IHRoZXJlIGlzIG5vIHN0YXJ0IGFuaW1hdGlv
biBjYWxsIGFzIHB1YmxpYyBBUEkuIFRoaXMgaXMgYmVjYXVzZQogICAgIC8vIHdlIHN0YXJ0IGFu
ZCBzdG9wIGFuaW1hdGluZyBsYXppbHkuIEFuaW1hdGlvbiBiZWdpbnMgd2hlbmV2ZXIgc29tZW9u
ZSBkcmF3cyB0aGUgaW1hZ2UuIEl0IHdpbGwKQEAgLTI0Nyw2ICsyNTMsOSBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgYm9vbCBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmcgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9zaG93RGVidWdCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZGlzYWJsZUltYWdlQW5pbWF0aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYWxsb3dJbmRp
dmlkdWFsQW5pbWF0aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNQYWdlQW5pbWF0aW9uRW5h
YmxlZCB7IGZhbHNlIH07CiAKICAgICBib29sIG1fY2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1l
UmVxdWVzdEZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9sYXJnZUltYWdlQXN5bmNE
ZWNvZGluZ0VuYWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA4Y2QxNTAyMTY2MzcuLjNkYjU5MzVhNTgxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzU1LDYg
KzM1NSwxMSBAQCB2b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KCkKICAg
ICBtX2FuaW1hdGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCitib29sIElt
YWdlOjppc0FuaW1hdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgSW1hZ2U6OmNvbG9yU3BhY2UoKQogewogICAgIHJldHVybiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCmluZGV4IDgzODIzNzJkNTJhYi4uZWI1ZTVmZjhhYzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KCk7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BBbmltYXRpb24oKSB7fQogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigp
IHt9Ci0gICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdDsK
ICAgICBib29sIGFuaW1hdGlvblBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0
YXJ0VGltZXIgJiYgbV9hbmltYXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpOyB9CiAKICAgICAv
LyBUeXBpY2FsbHkgdGhlIENhY2hlZEltYWdlIHRoYXQgb3ducyB1cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGVjMDI3MDU0
ODdlMi4uMDAzMDQ4MmNjMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgICAgICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xh
eWVyLm1hc2tNb2RlKCkgPT0gTWFza01vZGU6Okx1bWluYW5jZSk7CiAKICAgICAgICAgICAgIGlm
IChpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEJpdG1h
cEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygpKTsKKyAgICAgICAg
ICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tRG9jdW1lbnQo
ZG9jdW1lbnQoKSk7CiAKICAgICAgICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMg
PSB7CiAgICAgICAgICAgICAgICAgb3AgPT0gQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIg
PyBiZ0xheWVyLmNvbXBvc2l0ZUZvclBhaW50aW5nKCkgOiBvcCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDg3MzU0YTM0ZDdlMy4uYTQwZGY5YjQwN2I4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTY4NCw3ICs2ODQs
NyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogI2VuZGlmCiAKICAgICBpZiAoaXM8Qml0bWFw
SW1hZ2U+KGltYWdlKSkKLSAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBk
YXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOworICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFn
ZT4oKmltYWdlKS51cGRhdGVGcm9tRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAKICAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zID0gewogICAgICAgICBpbWFnZUVsZW1lbnQgPyBpbWFnZUVs
ZW1lbnQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkgOiBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zl
ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKaW5kZXgg
ZjZmZjk0YjNiZDhjLi4xYmQ2ODE1YmE5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgiCiAKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1
dGVBbmltYXRvci5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTE1MCw2ICsxNTEsOSBA
QCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RhcnRBbmltYXRpb24oKQogewogICAgIGlm
ICghdGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCkgJiYgIW1fYWxsb3dJbmRp
dmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVmUHRyIHByb3Rl
Y3RlZEFuaW1hdG9yID0gdGhpcy0+YW5pbWF0b3IoKSkKICAgICAgICAgcHJvdGVjdGVkQW5pbWF0
b3ItPnN0YXJ0KCp0YXJnZXRFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IDliMDIyNjcxNTU3NC4uZTUzODIxZThlZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC0xNjAsNiArMTYwLDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQ1NTUHJvcGUKIAogU1ZHRWxl
bWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKICAgICA6IFN0eWxl
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCisgICAgLCBtX2Fs
bG93SW5kaXZpZHVhbEFuaW1hdGlvbihmYWxzZSkKICAgICAsIG1fcHJvcGVydHlBbmltYXRvckZh
Y3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKIHsKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xMDg2LDQgKzEwODcsOSBAQCB2b2lk
IFNWR0VsZW1lbnQ6OmludmFsaWRhdGVJbnN0YW5jZXMoKQogICAgIH0KIH0KIAorYm9vbCBTVkdF
bGVtZW50Ojppc0FuaW1hdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTTUlMRWxlbWVudCgp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA1MjY2NDAxNWQ2ODQuLmU0ZjMx
NWExZGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xNTcsNiArMTU3LDggQEAgcHVi
bGljOgogICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRoZSBSZW5kZXJUcmVlLCBhbmltYXRp
b24gYW5kIERPTS4KICAgICBBdG9tU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIEF0
b21TdHJpbmcgeyBtX2NsYXNzTmFtZS0+Y3VycmVudFZhbHVlKCkgfTsgfQogICAgIFNWR0FuaW1h
dGVkU3RyaW5nJiBjbGFzc05hbWVBbmltYXRlZCgpIHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9Cisg
ICAgCisgICAgYm9vbCBpc0FuaW1hdGVkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBTVkdF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUg
PSBDcmVhdGVTVkdFbGVtZW50KTsKQEAgLTE4NSw2ICsxODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVu
Z3RocywgU1ZHRWxlbWVudCYpOwogCiAgICAgdm9pZCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNo
YW5nZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBtX2FsbG93SW5kaXZpZHVhbEFuaW1hdGlvbjsKIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggMTg5MjQyNDhj
OTE0Li4wNWVkM2MyYjI2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0xMDk5LDYgKzEwOTksMTEgQEAgYm9vbCBTVkdTTUlMRWxl
bWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQmIGZpcnN0QW5p
bWF0aW9uLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKGRvY3VtZW50
KCkuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCkgJiYgIW1fYWxsb3dJbmRpdmlk
dWFsQW5pbWF0aW9uKSB7CisgICAgICAgIHN0b3BBbmltYXRpb24obV90YXJnZXRFbGVtZW50KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIG1fcHJldmlvdXNJbnRlcnZhbEJl
Z2luID0gbV9pbnRlcnZhbEJlZ2luOwogCiAgICAgaWYgKG1faXNXYWl0aW5nRm9yRmlyc3RJbnRl
cnZhbCkgewpAQCAtMTIzMyw0ICsxMjM4LDIxIEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmRpc3Bh
dGNoUGVuZGluZ0V2ZW50KFNNSUxFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCiAgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKK3ZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBsYXlB
bmltYXRpb24oKQoreworICAgIGlmIChtX2FsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fYWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uID0gIW1fYWxsb3dJbmRp
dmlkdWFsQW5pbWF0aW9uOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgU1ZHU01J
TEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fYWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9hbGxvd0luZGl2aWR1YWxBbmltYXRp
b24gPSAhbV9hbGxvd0luZGl2aWR1YWxBbmltYXRpb247CisgICAgc3RvcEFuaW1hdGlvbihtX3Rh
cmdldEVsZW1lbnQpOworfQorCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuaAppbmRleCA0ZmU3YWVhMjAxOGUuLmU1ZTM1OTQ4MGU1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaApAQCAtMTAxLDEx
ICsxMDEsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkgPSAwOwor
ICAgIHZvaWQgcGxheUFuaW1hdGlvbigpOworICAgIHZvaWQgcGF1c2VBbmltYXRpb24oKTsKIAog
ICAgIHZvaWQgY29ubmVjdENvbmRpdGlvbnMoKTsKICAgICBib29sIGhhc0NvbmRpdGlvbnNDb25u
ZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvbnNDb25uZWN0ZWQ7IH0KICAgICAKICAg
ICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KFNNSUxFdmVudFNlbmRlciopOworICAgIGJvb2wg
aXNBbmltYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgYWRkQmVnaW5UaW1lKFNNSUxUaW1lIGV2ZW50VGltZSwgU01JTFRpbWUgZW5kVGltZSwgU01J
TFRpbWVXaXRoT3JpZ2luOjpPcmlnaW4gPSBTTUlMVGltZVdpdGhPcmlnaW46OlBhcnNlck9yaWdp
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAxY2Y4ZTE5
YTU2OTUuLjJjOGFkM2QxODhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBTVkdJbWFnZTo6c2NoZWR1bGVTdGFydEFu
aW1hdGlvbigpCiB2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAgYXV0byBy
b290RWxlbWVudCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7Ci0gICAgaWYgKCFyb290RWxlbWVudCB8
fCAhcm9vdEVsZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQoKSkKKyAgICBpZiAoIXJvb3RFbGVtZW50
IHx8ICFyb290RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgpIHx8IG1fcGFnZS0+c2V0dGluZ3Mo
KS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICByb290RWxl
bWVudC0+dW5wYXVzZUFuaW1hdGlvbnMoKTsKICAgICByb290RWxlbWVudC0+c2V0Q3VycmVudFRp
bWUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRl
eCBiNmJhYmUxODJlM2YuLmJhNGUyZGMwYTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC05OCw0ICs5OCw2IEBAIGVudW0gVXNlckludGVyZmFj
ZURpcmVjdGlvblBvbGljeSB7ICJDb250ZW50IiwgIlN5c3RlbSIgfTsKICAgICB1bmRlZmluZWQg
c2V0QWxsb3dlZE1lZGlhVmlkZW9Db2RlY0lEcyhET01TdHJpbmc/IHR5cGVzKTsKICAgICB1bmRl
ZmluZWQgc2V0QWxsb3dlZE1lZGlhQXVkaW9Db2RlY0lEcyhET01TdHJpbmc/IHR5cGVzKTsKICAg
ICB1bmRlZmluZWQgc2V0QWxsb3dlZE1lZGlhQ2FwdGlvbkZvcm1hdFR5cGVzKERPTVN0cmluZz8g
dHlwZXMpOworICAgIAorICAgIHVuZGVmaW5lZCBzZXRBbmltYXRlZEltYWdlc0Rpc2FibGVkKGJv
b2xlYW4gZW5hYmxlZCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IGRjNjQyYzU1YmM5ZC4uYWNlYWNiZjIxNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0xMDQ2LDYgKzEwNDYsMjkgQEAgYm9vbCBJbnRlcm5hbHM6OmlzSW1hZ2VBbmlt
YXRpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaW1hZ2UgJiYgKGlt
YWdlLT5pc0FuaW1hdGluZygpIHx8IGltYWdlLT5hbmltYXRpb25QZW5kaW5nKCkpOwogfQogCit2
b2lkIEludGVybmFsczo6cGxheUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgZWxlbWVudC5wbGF5QW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxz
OjpwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAg
ZWxlbWVudC5wYXVzZUFuaW1hdGlvbigpOworfQorCit2b2lkIEludGVybmFsczo6dG9nZ2xlUGFn
ZUFuaW1hdGlvbigpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIHBhZ2UtPnRvZ2dsZUFsbEFuaW1hdGlv
bnMoKTsKK30KKwogdW5zaWduZWQgSW50ZXJuYWxzOjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNl
c0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVy
biBlbGVtZW50LnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNTE1ZGFiMzdhYWNmLi5lNGYzNDIxMmQ2NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTE3LDYgKzExNyw4IEBAIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFNvdXJjZUJ1ZmZlcjsKIGNsYXNzIFN0cmluZ0NhbGxiYWNrOwog
Y2xhc3MgU3R5bGVTaGVldDsKK2NsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdTTUlMRWxlbWVu
dDsKIGNsYXNzIFRleHRJdGVyYXRvcjsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRpbWVSYW5n
ZXM7CkBAIC0yMTksNiArMjIxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW1hZ2VGcmFtZURl
Y29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0IGR1cmF0aW9uKTsKICAgICB2
b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAgIGJvb2wgaXNJ
bWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCBwbGF5SW1hZ2VBbmlt
YXRpb24oSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcGF1c2VJbWFnZUFuaW1hdGlvbihI
VE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7CiAgICAg
dW5zaWduZWQgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTElt
YWdlRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVx
dWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYsIGJvb2wgZW5hYmxlZCk7CiAgICAgdW5z
aWduZWQgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggYTJhZjI1MmIyMGZkLi4wOWEzYWIyYTk4OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2ICs1NTQsOSBAQCB0eXBlZGVm
IChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZp
bmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVu
dCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1bmRlZmluZWQgcmVzZXRJbWFn
ZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNJbWFn
ZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCBwbGF5
SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQg
cGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVm
aW5lZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7CiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZVBlbmRp
bmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQp
OwogICAgIHVuZGVmaW5lZCBzZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9y
VGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gZW5hYmxlZCk7CiAgICAg
dW5zaWduZWQgbG9uZyBpbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCmluZGV4IDUxZjY1ZjMwOWViMy4u
MmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcApAQCAt
NjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygp
CiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UgfSwKICNl
bmRpZgogICAgICAgICAgICAgeyAiQWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgdHJ1ZSB9
LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAg
ICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAogICAgICAg
ICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCB0cnVlIH0sCiAgICAg
ICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrIiwgdHJ1ZSB9LApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJs
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYTYyZWI4ODY0YjBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0cyB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2Fi
bGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0ZWQgaW1hZ2VzIHNldHRpbmcgaXMgdHVybmVkIG9u
LgorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSB0cnVl
CitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSkgYmVjYW1lIGZhbHNl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5p
bWF0aW9ucy1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4wNmJiYTgwYzc1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsMjQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4g
IkRpc2FibGUgQW5pbWF0ZWQgSW1hZ2VzIGlzIHR1cm5lZCBvbjwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
aWQ9ImJvZHkiPgorPHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHdp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEltYWdlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0cyB0
aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0ZWQgaW1h
Z2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLiIpOwkJCisgICAgICAgIHNob3VsZEJlY29tZUVxdWFs
KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgInRydWUiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QW5pbWF0ZWRJbWFnZXNE
aXNhYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsgCisg
ICAgICAgIH0pOworICAgIH0JCisKKzwvc2NyaXB0PgorCis8aW1nIHNyYz0icmVzb3VyY2VzL2Fu
aW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxh
eS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjQ3
ZDRiY2Y3NzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24g
aXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHku
CitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSkgYmVjYW1lIGZhbHNl
CitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSkgYmVjYW1lIHRydWUK
K1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
cGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRhMmYwNjlmMDU1MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5p
bWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKQEAgLTAsMCArMSwyOSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5UZXN0IHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiBEaXNh
YmxlIEFuaW1hdGVkIEltYWdlcyBpcyB0dXJuZWQgb248L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJi
b2R5Ij4KKzxzY3JpcHQ+CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQodHJ1ZSk7CisJCisgICAgd2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0SW1hZ2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3RzIHRoYXQg
d2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJlIHRvZ2dsZWQgb24g
YW5kIG9mZiBpbmRpdmlkdWFsbHkuIik7CQkKKyAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImlu
dGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBpbnRlcm5hbHMucGxheUltYWdlQW5pbWF0aW9uKHRlc3RJbWFnZSk7
CisgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRp
bmcodGVzdEltYWdlKSIsICJ0cnVlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlu
dGVybmFscy5wYXVzZUltYWdlQW5pbWF0aW9uKHRlc3RJbWFnZSk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSki
LCAiZmFsc2UiLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgfSk7IAorICAgICAgICB9KTsK
KyAgICB9CQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lm
IiBpZD0idGVzdEltYWdlIiAvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDE4YjVmNzM1NjgzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAor
VGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCBhbGwgYW5p
bWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZi4KK1BBU1MgaW50ZXJu
YWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmlt
YXRpbmcodGVzdEltYWdlMikgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5p
bWF0aW5nKHRlc3RJbWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFn
ZTIpIGJlY2FtZSB0cnVlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFn
ZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjNmOTk1NTE0MGU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPlRlc3QgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIERpc2FibGUgQW5p
bWF0ZWQgSW1hZ2VzIGlzIHR1cm5lZCBvbjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgor
PHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCh0cnVlKTsKKwkKKyAgICB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RJbWFnZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB0ZXN0SW1hZ2UyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3RJbWFnZTEiKTsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdHMgdGhhdCB3
aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdl
IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuIik7CQkKKyAgICAgICAgc2hvdWxkQmVjb21lRXF1
YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5p
c0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UxKSAm
JiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UyKSIsICJ0cnVlIiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy50b2dnbGVQYWdlQW5pbWF0aW9uKCk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5p
bWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFn
ZTIpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgIH0pOyAKKyAgICAgICAg
fSk7CisgICAgfQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24u
Z2lmIiBpZD0idGVzdEltYWdlMSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZiIgaWQ9InRlc3RJbWFnZTIiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZiBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI5OWIxZmY2NTkyZDJkODFmNTc5OGVhNzZiY2UxYWI0YTE3OGMyOTYKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDkwMQp6Y21aP3diaEVIYjZrcmZ3X3xDeGFmOTZjJXw3aUBQVV5FMHFXQyRx
IT1re3xBMzNoZjJhNWQ2MVV9Z2pjZzVwbVcKejdFb0J8ZkN4fUZWYz9LdVZDSW5WKnMkUFdHbCNI
TiUhdiZQNTRRXl9kKEg5S3hhZXBqQk9gVmxqUURnfDB8NCRtCkJCbWUqYQoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVz
b3VyY2VzL2FuaW1hdGlvbi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNv
dXJjZXMvYW5pbWF0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM0YjE3ZjNlYzliYWJjY2M0OWRiYWMx
OTBlNjNhOWJhNGM5OWNkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMDU1CnpjbVo/d2JoOXV8
UkFDVGRjKlh6KmRLQzwyUlNmcEUzfnUhZEs2TU59TyQ+cWMzP1ZJQ1ZORFhATyQtdDN5cGU2OQp6
ayE+PU9FITxIWiVGIShoRn08UU9UfmFZITQ2emZIPEdNOEJ5SHBaO2ImYDVhbERsUDZyWWZnUShN
cD9ZbURhMUQKekcwaTVVLSE1fmFWYGlVYy1YITBgc2NPWm00VTNvaW0mXnolbldqXl4jOzl5ZlNv
ekZ8QCk/b2spMXhiPG5ebXJsCnpzK15AP3diaShLaSlIT3JsZSU1V2IjcWMxPTl4Q2B2Mk5VeCl2
Xz9CV3hpJEdrJUcxYj1JekpMK2ZTSHg5NT9TYwp6VmNsYHVxVSZeVipPSlA8PHlITUY+THhDKW8z
eWZKK1VtOSRZa1RMYz56VFc4QH1qTT9tVCNaRWFfNiMqYDxIRHgKenV4YTx2WlRuQnxLNzk3cm5h
bHRHfEF6Iz8wRnNKN1N5K3UyTEskPkdaVURzejFOOzk1YD0leTRkeipIZj1CfkRPCnp5VXpCT3Ax
ekk9e21vTm1ib08rI3diP2UhPzRMRUkkI0wxLWcqXipxRlBeWjwhT1h6V1oxSWB9PnQ7e2lWUSha
WQp6JSpWPHJYSnFmVmJOajQkUUBkOyZIUUQpdU91VXVaU1QkRmxabml6eS1SNVk+dUowfFlVQDVP
fSU0Jkc7P1ltaHIKejk0MDAjOUJqPFd6T3NUPWJLa0Elb15gZj5WRyRGUHFQYCE4cHk5KE49Q1lI
IVVNQFBxOF5mcS0oJkFDNWx6TkpqCnokM2tXU01eb3FRVyZSOX5qbWB+PW48cj1sRUhaSzJAVGh9
SE5Uc2xMUXBMO0xKelBSK0dDNzVabmleUn08KW82UQp6MzVEdihOPXMtNkRqaGcqUU9aTGc9RVpp
TTVMTGdrTmVUZlJsYTRWZm57ZSRvcTU1anRyZnY4QWdIIyo+OShvOUoKemFffik9VjhYZFRCWWNr
NihGWHd3OVU4ZjBaZncqbD5BQzdCcj9MT3ozYE9ULUohISY8LW1nfm5NbE0+cU9sajR0CnpWe2gt
VGwyPkU/WlR3YjBeMnljZDBuXi1NZjRlSSVVPThFWXJZOEk1Q2NDIWcpPS07e3dwTHBeZDs3bGpX
fURFZAp6b3oxaEZaRl4/VVVidntnWTV0TkclYSlpTWhNR0hzSXhndjY4TT9nNVA+UExIZktfRGUl
SSU/Qm1JejM/PT9nbjYKemFXIXBQYWlyfiMwR3BQKDYySDN9MmpBOTNHdWotYkIlT3FxTC18OEYp
SXg8aUFNfGAhJD5IUzU8YFN3TEQoVVJTCnp5N0FIO1VnOytmbmktVj89U2VKYl5vclohJWpAUTJh
SFBldG0wS1g3TSVjeyVnYj1mOU05K3pVKURzaXh4N31PJAp6Q3lkcChtekQ4fjxiKHBIbWZnUGdS
WCQhVkZCRENzeXhsP3Fme3IjY2khZVR3VDs7TXhwb1BvSEZYNl8tZ3x9NUoKeldKQ3FNTE5iX3tT
T2YlZTFoJjNkeE9UM1V7SEN0TFdVKGM0ciVTTj47fUNrWEBYYChAJEVVdUxyPjwkck1ZaTUkCktv
dWVWWlU9MDlEI0JHdVEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461746</attachid>
            <date>2022-08-19 18:02:36 -0700</date>
            <delta_ts>2022-08-22 09:53:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220819180235.patch</filename>
            <type>text/plain</type>
            <size>45027</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA0MWNjNGZhMThmYjljMzExOWQzNGQ1MTU3ZmU1MjQwYWZiODlmZmE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDE5IEF1ZyAyMDIyIDEwOjQxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgaW1hZ2UgYW5pbWF0aW9ucwogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCnJkYXI6Ly85ODg4NzY3NwoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGV4cGVy
aW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIGltYWdlIGFu
aW1hdGlvbnMuIFRoaXMgaW5jbHVkZXMgcmVndWxhciBiaXRtYXAgaW1hZ2VzLCBiYWNrZ3JvdW5k
IGltYWdlcywgU1ZHIGFuaW1hdGlvbnMsIGFuZCBzdXBwb3J0IGZvciB0aGUgPG1vZGVsPiBlbGVt
ZW50LiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGludGVyZmFjZXMgdG8gY29udHJvbCBh
bmltYXRpb25zIGF0IHRoZSBwYWdlIGFuZCBpbmRpdmlkdWFsIGltYWdlIGxldmVsLgoKKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
aW1hdGlvbnMgb24gYW4gZW50aXJlIHBhZ2UsIGFuZCB0b2dnbGluZyBhbiBpbmRpdmlkdWFsIGFu
aW1hdGlvbi4KCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CgpBZGRzIHRoZSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5k
IHNldHMgaXQgb2ZmIGJ5IGRlZmF1bHQuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKFdlYkNvcmU6Om1fYWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldEFuaW1hdGlvbklzUGxh
eWluZyk6CgpFbnN1cmUgdGhhdCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIHRoZSBjbGll
bnQgY2Fubm90IHN0YXJ0IHRoZSBhbmltYXRpb24uCgooV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6cGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CihXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CgpOZXcgbWV0aG9kcyB0byBhbGxvdyB3ZWJr
aXQgdG8gY29udHJvbCBtb2RlbCBhbmltYXRpb25zIHdoZW4gdGhlIHBhZ2Utd2lkZSBhbmltYXRp
b25zIGFyZSBvZmYuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CgpVcGRh
dGVzIHRoZSBzZXR0aW5ncyB3aGVuIGFuIGltYWdlIGlzIHJlbmRlcmVkLCBpbiBjYXNlIGl0IGhh
ZCBub3QgeWV0IGJlZW4gcmVuZGVyZWQgd2hlbiBwYWdlLXdpZGUgYW5pbWF0aW9ucyBhcmUgdG9n
Z2xlZC4KCihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwbGF5QW5pbWF0aW9uKToKKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmlzQW5pbWF0aW5nKToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5p
bWF0ZWRJbWFnZSk6CgpNZXRob2RzIHRvIGNvbnRyb2wgaW1hZ2UgYW5pbWF0aW9ucyBhbmQgY2hl
Y2sgdGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwOgooV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd0ltYWdlKToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3MgLT4gdXBkYXRlRnJv
bURvY3VtZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFn
ZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpjb250YWluc0FuaW1hdGVk
SW1hZ2VzKToKKFdlYkNvcmU6OlBhZ2U6OmlzQWxsQW5pbWF0aW9uUGF1c2VkKToKCk1ldGhvZHMg
dG8gY29udHJvbCBwYWdlLXdpZGUgYW5pbWF0aW9ucy4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21Eb2N1bWVudCk6CgpDaGFuZ2UgdXBk
YXRlRnJvbVNldHRpbmdzIHRvIHVwZGF0ZUZyb21Eb2N1bWVudCBiZWNhdXNlIGl0IG5lZWRzIHRv
IGNhbGwgYSBtZXRob2Qgb24gcGFnZS4KCihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CihX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdl
RnJhbWVBdmFpbGFibGVBdEluZGV4KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwbGF5QW5pbWF0
aW9uKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbik6CihXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcik6CihXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6dXBkYXRlRnJvbVNldHRpbmdzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgoKTmV3IG1ldGhvZHMgdG8gY29udHJvbCBhIGJpdG1h
cCBpbWFnZSdzIGFuaW1hdGlvbnMsIGFzIHdlbGwgYXMgY2hlY2tzIGluIGV4aXN0aW5nIG1ldGhv
ZHMgdG8gZW5zdXJlIHRoYXQgYW4gaW1hZ2UgZG9lcyBub3Qgc3RhcnQgd2hlbiB0aGUgc2V0dGlu
ZyBpcyBlbmFibGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcg
Y29uc3QpOiBEZWxldGVkLgoKVXBkYXRlcyB0byBpc0FuaW1hdGluZyB0byBleHBvcnQgaXQgZnJv
bSB3ZWJjb3JlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgoKQ2hhbmdlIHVwZGF0ZUZyb21TZXR0aW5ncyAtPiB1cGRhdGVGcm9tRG9jdW1lbnQu
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CgpDaGFuZ2UgdXBkYXRlRnJvbVNldHRpbmdzIC0+
IHVwZGF0ZUZyb21Eb2N1bWVudC4KCiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHA6CihXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0
aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdF
bGVtZW50OjpTVkdFbGVtZW50KToKKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzQW5pbWF0ZWQgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6cHJvZ3Jlc3MpOgooV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBsYXlBbmltYXRpb24pOgoo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6aXNBbmltYXRlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CgpNZXRob2RzIGFu
ZCBjaGVja3MgdG8gcHJldmVudCBTVkcgYW5pbWF0aW9ucyBmcm9tIHN0YXJ0aW5nIHdoZW4gdGhl
IHNldHRpbmcgaXMgZW5hYmxlZC4KCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJD
b3JlOjpJbnRlcm5hbHM6OnBsYXlJbWFnZUFuaW1hdGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhdXNlSW1hZ2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVQYWdlQW5p
bWF0aW9uKToKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcDoKKFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKToKCk5ldyBpbnRlcm5h
bCB0ZXN0aW5nIG1ldGhvZHMgdG8gdmVyaWZ5IHRoZSBzZXR0aW5nIGlzIG9uICYgaW1hZ2VzIGFy
ZSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAgICAgICAgICAgfCAgMTIgKysrCiAuLi4vbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCAgICAgICAgfCAgMjAgKysrKysKIC4uLi9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oICB8ICAgNiArKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCAgICAgIHwgIDQ3ICsrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmggICAgICAgIHwgICA4ICsrCiAuLi4vY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICA3MCArKysrKysrKysrKysrKysrKysKIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAgICB8ICAgNyArKwogLi4uL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIHwgIDM3ICsrKysrKystLQog
Li4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgIHwgIDEzICsrKy0K
IC4uLi9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwICAgICAgICB8ICAgMiArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCAgICAgIHwgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAgfCAgIDQgKwogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwICAgICAgICAgICAgIHwgICA1ICsrCiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oICAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgIHwgIDIyICsrKysrKwogU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIHwgICAzICsKIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgICAgICB8ICAgMiArLQogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCAgIHwgICAyICsKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICB8ICAyMyArKysrKysKIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgNSArKwogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsKIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwICAgICAgICB8ICAgMSArCiAuLi4vZGlzYWJs
ZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0ICAgfCAgMTEgKysrCiAuLi4vbWFjL2Rp
c2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgICAgICAgfCAgMjQgKysrKysrCiAuLi5vbnMt
cGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAuLi4tYW5p
bWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAgMjggKysrKysrKwogLi4u
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IHwgIDEyICsrKwogLi4u
YmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sIHwgIDMwICsrKysrKysr
CiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGVkMi5naWYgfCBCaW4gMCAt
PiA5MDEgYnl0ZXMKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdp
ZiB8IEJpbiAwIC0+IDEwNTUgYnl0ZXMKIDMxIGZpbGVzIGNoYW5nZWQsIDQwNCBpbnNlcnRpb25z
KCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtZW5hYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRp
b24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2Fi
bGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZgogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmlt
YXRpb24uZ2lmCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBlMDg4OWZmOWQwODgu
LjRlYzI1MzRkNmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTY1LDYgKzY1
LDE4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RNb2RlbEVuYWJsZWQ6CiAgICAgICBkZWZhdWx0OiBm
YWxzZQogICAgIFdlYktpdDoKICAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgICAKK0FuaW1hdGVk
SW1hZ2VzRGlzYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDb250
cm9sIGFuaW1hdGVkIGltYWdlcyIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRGlzYWJs
ZSBhbmltYXRpb25zIGFuZCB2aWV3IGFuaW1hdGVkIGltYWdlcyBhcyBzdGF0aWMuIgorICBkZWZh
dWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBX
ZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0
OiBmYWxzZQogCiBBcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZDoKICAg
dHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGExZjRlZDAzNTgyYS4uZGZiNzFhZGRh
MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlck1vZGVsLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUmVwbGFjZWQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRl
IDx3dGYvVVJMLmg+CkBAIC03MCw2ICs3MSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChIVE1MTW9kZWxFbGVtZW50KTsKIEhUTUxNb2RlbEVsZW1lbnQ6OkhUTUxNb2RlbEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9j
dW1lbnQpCisgICAgLCBtX3Nob3VsZERpc2FibGVJbWFnZUFuaW1hdGlvbihkb2N1bWVudC5zZXR0
aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSkKICAgICAsIG1fcmVhZHlQcm9taXNlIHsg
bWFrZVVuaXF1ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVh
ZHlQcm9taXNlUmVzb2x2ZSkgfQogewogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxi
YWNrcygpOwpAQCAtNTAxLDYgKzUwMywxMiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldEFu
aW1hdGlvbklzUGxheWluZyhib29sIGlzUGxheWluZywgRE9NUHJvbWlzZURlZmVycmVkPAogICAg
ICAgICBwcm9taXNlLnJlamVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAg
IGlmIChtX3Nob3VsZERpc2FibGVJbWFnZUFuaW1hdGlvbiAmJiAhbV9zaG91bGRBbGxvd0luZGl2
aWR1YWxBbmltYXRpb24pIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgbV9t
b2RlbFBsYXllci0+c2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBbXSAoYm9vbCkgeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fbW9kZWxQbGF5ZXItPnNldEFuaW1hdGlv
bklzUGxheWluZyhpc1BsYXlpbmcsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wg
c3VjY2VzcykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChzdWNjZXNzKQpAQCAtNTIwLDYgKzUyOCwx
OCBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgc2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBX
VEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpwbGF5QW5pbWF0
aW9uV2hlbkRpc2FibGVkKCkKK3sKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlv
biA9IHRydWU7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6cGF1c2VBbmltYXRpb25XaGVu
RGlzYWJsZWQoKQoreworICAgIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uID0gZmFs
c2U7CisgICAgbV9tb2RlbFBsYXllci0+c2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBbXSAo
Ym9vbCkgeyB9KTsKK30KKworCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlzTG9vcGluZ0FuaW1h
dGlvbihJc0xvb3BpbmdBbmltYXRpb25Qcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIW1f
bW9kZWxQbGF5ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IGM4MDUwZTNmNWJkYi4uMTEzNGNjM2Y2
NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
YW5pbWF0aW9uQ3VycmVudFRpbWUoQ3VycmVudFRpbWVQcm9taXNlJiYpOwogICAgIHZvaWQgc2V0
QW5pbWF0aW9uQ3VycmVudFRpbWUoZG91YmxlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7
CiAKKyAgICB2b2lkIHBsYXlBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKyAgICB2b2lkIHBhdXNl
QW5pbWF0aW9uV2hlbkRpc2FibGVkKCk7CisKICAgICB1c2luZyBIYXNBdWRpb1Byb21pc2UgPSBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj47CiAgICAgdm9pZCBoYXNBdWRpbyhIYXNBdWRp
b1Byb21pc2UmJik7CiAgICAgdXNpbmcgSXNNdXRlZFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMQm9vbGVhbj47CkBAIC0xNTQsNiArMTU3LDkgQEAgcHJpdmF0ZToKIAogICAgIExheW91
dFNpemUgY29udGVudFNpemUoKSBjb25zdDsKIAorICAgIGJvb2wgbV9zaG91bGREaXNhYmxlSW1h
Z2VBbmltYXRpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxB
bmltYXRpb24geyBmYWxzZSB9OworICAgIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGFiNjczNjgzMDhiOS4uYjlkMGVjMjBlNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKQEAgLTQxMiw2ICs0MTMs
OSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgLy8g
aW1hZ2UgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhlIGFsdCB0ZXh0IGluc3RlYWQuCiAgICAgaWYg
KCFtX2ltYWdlTG9hZGVyLT5pbWFnZSgpICYmICFyZW5kZXJJbWFnZVJlc291cmNlLmNhY2hlZElt
YWdlKCkpCiAgICAgICAgIHJlbmRlckltYWdlLnNldEltYWdlU2l6ZUZvckFsdFRleHQoKTsKKwor
ICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAgIGltYWdl
LT51cGRhdGVEb2N1bWVudE9uUmVuZGVyKGRvY3VtZW50KCkpOwogfQogCiBOb2RlOjpJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rv
cihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5z
ZXJ0ZWRUcmVlKQpAQCAtNzY2LDYgKzc3MCw0MCBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFs
bG93c09yaWVudGF0aW9uT3ZlcnJpZGUoKSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1h
Z2UtPnNvdXJjZVVSTCgpLnByb3RvY29sSXNEYXRhKCkgfHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1Nh
bWVPcmlnaW4oKTsKIH0KIAorQml0bWFwSW1hZ2UqIEhUTUxJbWFnZUVsZW1lbnQ6OmNhY2hlZEJp
dG1hcEltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5j
YWNoZWRJbWFnZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5p
bWFnZSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYml0bWFwSW1hZ2UgPSBkeW5hbWljRG93
bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJpdG1h
cEltYWdlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IEhUTUxJbWFnZUVsZW1lbnQ6OnBsYXlBbmltYXRpb24oKQoreworICAgIGlmIChhdXRvKiBpbWFn
ZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpIHsKKyAgICAgICAgaW1hZ2UtPnVwZGF0ZUZyb21Eb2N1
bWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgaW1hZ2UtPnBsYXlBbmltYXRpb24oKTsKKyAgICB9
Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGF1c2VBbmltYXRpb24oKQoreworICAgIGlm
IChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpIHsKKyAgICAgICAgaW1hZ2UtPnVw
ZGF0ZUZyb21Eb2N1bWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgaW1hZ2UtPnBhdXNlQW5pbWF0
aW9uKCk7CisgICAgfQorfQorCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0aW5nKCkg
Y29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSBjYWNoZWRCaXRtYXBJbWFnZSgpKQorICAg
ICAgICByZXR1cm4gaW1hZ2UtPmlzQW5pbWF0aW5nKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
ICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHZvaWQgSFRNTEltYWdlRWxl
bWVudDo6c2V0QXR0YWNobWVudEVsZW1lbnQoUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4mJiBh
dHRhY2htZW50KQpAQCAtOTU3LDQgKzk5NSwxMyBAQCBSZWY8RWxlbWVudD4gSFRNTEltYWdlRWxl
bWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudAog
ICAgIHJldHVybiBjbG9uZTsKIH0KIAorYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGVk
SW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hl
ZEltYWdlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGJpdG1hcEltYWdlID0gY2FjaGVkQml0bWFw
SW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNBbmlt
YXRlZCgpIHx8ICFiaXRtYXBJbWFnZS0+aXNBbmltYXRpb25GaW5pc2hlZCgpOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKaW5kZXggNmQ1NWUxODdjYjI0Li4wNDEwMzFmOTMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIERlZmVy
cmVkUHJvbWlzZTsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudDsKQEAgLTE1NCw2ICsxNTUs
MTEgQEAgcHVibGljOgogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Q7
CiAKICAgICBib29sIGFsbG93c09yaWVudGF0aW9uT3ZlcnJpZGUoKSBjb25zdDsKKyAgICAKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXlBbmltYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0Owor
ICAgIGJvb2wgaXNBbmltYXRlZEltYWdlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBIVE1M
SW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxl
bWVudCogPSBudWxscHRyKTsKQEAgLTIzNiw2ICsyNDIsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgU3RyaW5nIG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1l
bnRJRDsKICNlbmRpZgorICAgIAorICAgIEJpdG1hcEltYWdlKiBjYWNoZWRCaXRtYXBJbWFnZSgp
IGNvbnN0OwogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxQaWN0dXJlRWxlbWVudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCmluZGV4IDliYmNjNTVlNTMyOS4uNjI4NWQ4M2JhN2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcApAQCAtMTU2Miw3ICsxNTYyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBkb2N1bWVu
dCwgQ2EKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQotICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRh
dGVGcm9tU2V0dGluZ3MoZG9jdW1lbnQuc2V0dGluZ3MoKSk7CisgICAgICAgIGRvd25jYXN0PEJp
dG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21Eb2N1bWVudChkb2N1bWVudCk7CiAgICAgfQog
CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyA9IHsgb3AsIGJsZW5kTW9kZSwgb3Jp
ZW50YXRpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGQ2MzM3NjBlOTFiNC4uMGJiYzAxMWU1
ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCYWNr
Rm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRl
ICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2lu
Y2x1ZGUgIkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKQEAgLTc3LDYgKzc4LDcgQEAK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCkBA
IC0xMjksNiArMTMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVVzYWdlT3ZlcmxheS5oIgogI2lu
Y2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisj
aW5jbHVkZSAiU1ZHU01JTEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVu
bmVyLmgiCkBAIC0xNTIsNiArMTU1LDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJUZXh0UmVjb2duaXRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCisjaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJM
UGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgpAQCAtNDAyNSw0ICs0MDI5
LDcwIEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKK3Zv
aWQgUGFnZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucygpCit7CisgICAgbV9oYXNVbnBhdXNlZEFuaW1h
dGlvbnMgPSAhbV9oYXNVbnBhdXNlZEFuaW1hdGlvbnM7CisgICAgZm9yRWFjaERvY3VtZW50KFt0
aGlzXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGRvY3VtZW50LnJvb3ROb2RlKCkpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogaW1hZ2VFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1faGFzVW5wYXVzZWRB
bmltYXRpb25zKQorICAgICAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnBsYXlBbmltYXRp
b24oKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGltYWdlRWxl
bWVudC0+cGF1c2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogc3Zn
U21pbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8U1ZHU01JTEVsZW1lbnQ+KGVsZW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgaWYgKG1faGFzVW5wYXVzZWRBbmltYXRpb25zKQorICAgICAgICAg
ICAgICAgICAgICBzdmdTbWlsRWxlbWVudC0+cGxheUFuaW1hdGlvbigpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3ZnU21pbEVsZW1lbnQtPnBhdXNlQW5pbWF0
aW9uKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGh0bWxNb2RlbEVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9oYXNVbnBhdXNlZEFuaW1hdGlvbnMpCisgICAgICAgICAgICAgICAgICAgIGh0
bWxNb2RlbEVsZW1lbnQtPnBsYXlBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGh0bWxNb2RlbEVsZW1lbnQtPnBhdXNlQW5p
bWF0aW9uV2hlbkRpc2FibGVkKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHJlbmRl
cmVyID0gZWxlbWVudC5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVy
LT5zdHlsZSgpLmhhc0JhY2tncm91bmRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UgPSByZW5kZXJlci0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCkuaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGJhY2tncm91bmRJbWFnZSA9IGNhY2hlZEJhY2tncm91bmRJbWFnZS0+
aW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kSW1h
Z2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1h
cEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCpiYWNrZ3JvdW5kSW1hZ2UpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBJbWFnZS51cGRhdGVGcm9tRG9jdW1lbnQo
ZG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBh
dXNlZEFuaW1hdGlvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRt
YXBJbWFnZS5wbGF5QW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcEltYWdlLnBh
dXNlQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7Cit9CisKK2Jvb2wgUGFnZTo6Y29u
dGFpbnNBbmltYXRlZEltYWdlcygpCit7CisgICAgYm9vbCBmb3VuZEFuaW1hdGVkSW1hZ2UgPSBm
YWxzZTsKKyAgICBmb3JFYWNoRG9jdW1lbnQoWyZmb3VuZEFuaW1hdGVkSW1hZ2VdIChEb2N1bWVu
dCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1hZ2UgPSB0cnVlOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBzdmdTbWlsRWxlbWVudCA9IGR5bmFtaWNEb3duY2Fz
dDxTVkdTTUlMRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEFuaW1h
dGVkSW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBodG1sTW9kZWxF
bGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxNb2RlbEVsZW1lbnQ+KGVsZW1lbnQpKSB7Cisg
ICAgICAgICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFnZSA9IHJlbmRl
cmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gY2Fj
aGVkQmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJhY2tncm91bmRJbWFnZSAmJiBiYWNrZ3JvdW5kSW1hZ2UtPmlzQW5pbWF0ZWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworICAgIHJl
dHVybiBmb3VuZEFuaW1hdGVkSW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKaW5kZXggZmNiMWI2NTEwMzM4Li43OWY0MDk4YzBjMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC0xMjUsNiArMTI1LDcgQEAgY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxFbGVtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIEhUTUxNb2RlbEVs
ZW1lbnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlQW5hbHlzaXNRdWV1ZTsKIGNs
YXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI7CkBAIC05NzYsNiArOTc3LDEwIEBAIHB1YmxpYzoK
ICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0
eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeU1vZGVGb3JFeHRlbnNpb247IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9y
Y2VSZXBhaW50QWxsRnJhbWVzKCk7CisgICAgCisgICAgYm9vbCBhcmVBbGxBbmltYXRpb25zUGF1
c2VkKCkgeyByZXR1cm4gIW1faGFzVW5wYXVzZWRBbmltYXRpb25zOyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB0b2dnbGVBbGxBbmltYXRpb25zKCk7CisgICAgYm9vbCBjb250YWluc0FuaW1h
dGVkSW1hZ2VzKCk7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhbmFseXplSW1hZ2VzRm9yRmluZEluUGFnZShGdW5jdGlvbjx2b2lkKCk+JiYg
Y2FsbGJhY2spOwpAQCAtMTM0MSw2ICsxMzQ2LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbiBtX2NvbnRlbnRTZWN1cml0eVBv
bGljeU1vZGVGb3JFeHRlbnNpb24geyBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5z
aW9uOjpOb25lIH07CisgICAgCisgICAgYm9vbCBtX2hhc1VucGF1c2VkQW5pbWF0aW9ucyB7IGZh
bHNlIH07CiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTg3YWM2
OTBiMmVjLi5kMzc0NGNkNWY4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjUsMTEgKzY3LDEzIEBAIEJp
dG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQogICAgIG1fc291cmNlLT5zdG9wQXN5bmNEZWNvZGlu
Z1F1ZXVlKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVGcm9tRG9jdW1l
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9
IHNldHRpbmdzLmltYWdlU3Vic2FtcGxpbmdFbmFibGVkKCk7Ci0gICAgbV9hbGxvd0FuaW1hdGVk
SW1hZ2VBc3luY0RlY29kaW5nID0gc2V0dGluZ3MuYW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdF
bmFibGVkKCk7Ci0gICAgbV9zaG93RGVidWdCYWNrZ3JvdW5kID0gc2V0dGluZ3Muc2hvd0RlYnVn
Qm9yZGVycygpOworICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9IGRvY3VtZW50LnNldHRpbmdzKCku
aW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQoKTsKKyAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5j
RGVjb2RpbmcgPSBkb2N1bWVudC5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5n
RW5hYmxlZCgpOworICAgIG1fc2hvd0RlYnVnQmFja2dyb3VuZCA9IGRvY3VtZW50LnNldHRpbmdz
KCkuc2hvd0RlYnVnQm9yZGVycygpOworICAgIG1fZGlzYWJsZUltYWdlQW5pbWF0aW9uID0gZG9j
dW1lbnQuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCk7CisgICAgbV9pc1BhZ2VB
bmltYXRpb25FbmFibGVkID0gIWRvY3VtZW50LnBhZ2UoKS0+YXJlQWxsQW5pbWF0aW9uc1BhdXNl
ZCgpOwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQpAQCAtMjQ2LDcgKzI1MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdM
ZXZlbCA9ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNU
SU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19j
YXN0PGludD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2lu
Zy53aWR0aCgpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBpbWFnZTsKLSAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBE
ZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgeworICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9k
ZSgpID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzICYmICFtX2Rpc2FibGVJbWFnZUFuaW1h
dGlvbikgewogICAgICAgICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCgh
bV9jdXJyZW50RnJhbWUgfHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CiAKQEAgLTM3NCw3ICszNzgs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKIGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZEFu
aW1hdGUoKSBjb25zdAogewotICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmlt
YXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCk7CisgICAgcmV0dXJuIHJlcGV0aXRpb25D
b3VudCgpICYmICFtX2FuaW1hdGlvbkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2ZXIoKSAmJiAoIW1f
ZGlzYWJsZUltYWdlQW5pbWF0aW9uIHx8IG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9u
KTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CkBAIC02NzYsNCAr
NjgwLDI1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAg
ICAgbV9zb3VyY2UtPmR1bXAodHMpOwogfQogCit2b2lkIEJpdG1hcEltYWdlOjpwbGF5QW5pbWF0
aW9uKCkKK3sKKyAgICBpZiAobV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7
CisgICAgaW50ZXJuYWxTdGFydEFuaW1hdGlvbigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpw
YXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1h
dGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BBbmltYXRpb24oKTsKKyAgICBtX3Nob3Vs
ZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IGZhbHNlOworfQorCit2b2lkIEJpdG1hcEltYWdl
Ojp1cGRhdGVEb2N1bWVudE9uUmVuZGVyKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBtX3No
b3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9ICFkb2N1bWVudC5wYWdlKCktPmFyZUFsbEFu
aW1hdGlvbnNQYXVzZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggZDNmNGZlYmQwODA0Li5iZDE2NDZhNjY4ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAt
NDksNiArNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNldHRpbmdzOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBU
aW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewpAQCAtNzYs
NyArNzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIH5CaXRtYXBJbWFnZSgpOwog
Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2V0dGluZ3MoY29uc3QgU2V0dGluZ3MmKTsKKyAgICB2b2lk
IHVwZGF0ZUZyb21Eb2N1bWVudChjb25zdCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAt
MTU4LDYgKzE1OSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVB
dEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNvZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHBsYXlBbmltYXRpb24oKTsKKyAgICB2b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAg
Ym9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgYWxsb3dzSW5kaXZpZHVh
bEFuaW1hdGlvbigpOworICAgIGJvb2wgaXNBbmltYXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYW5pbWF0aW9uRmluaXNoZWQ7IH07CisgICAgdm9pZCB1cGRhdGVEb2N1bWVudE9uUmVu
ZGVyKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1h
Z2UoUmVmPE5hdGl2ZUltYWdlPiYmKTsKQEAgLTE5NSw3ICsyMDIsNiBAQCBwcml2YXRlOgogICAg
IFN0YXJ0QW5pbWF0aW9uU3RhdHVzIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lk
IGFkdmFuY2VBbmltYXRpb24oKTsKICAgICB2b2lkIGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigp
OwotICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBs
b29rIHVudXN1YWwgdGhhdCB0aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJs
aWMgQVBJLiBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRp
bmcgbGF6aWx5LiBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGlt
YWdlLiBJdCB3aWxsCkBAIC0yNDcsNiArMjUzLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJv
b2wgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvd0RlYnVnQmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rpc2FibGVJbWFn
ZUFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFu
aW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGFnZUFuaW1hdGlvbkVuYWJsZWQgeyBm
YWxzZSB9OwogCiAgICAgYm9vbCBtX2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RG
b3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdF
bmFibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBlYzAyNzA1NDg3ZTIuLjAwMzA0ODJj
YzI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCkBAIC05NzIsNyArOTcyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci5tYXNrTW9kZSgp
ID09IE1hc2tNb2RlOjpMdW1pbmFuY2UpOwogCiAgICAgICAgICAgICBpZiAoaXM8Qml0bWFwSW1h
Z2U+KGltYWdlKSkKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdl
KS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CisgICAgICAgICAgICAgICAgZG93bmNh
c3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwog
CiAgICAgICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zID0gewogICAgICAgICAg
ICAgICAgIG9wID09IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyID8gYmdMYXllci5jb21w
b3NpdGVGb3JQYWludGluZygpIDogb3AsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAppbmRleCA4NzM1NGEzNGQ3ZTMuLmE0MGRmOWI0MDdiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC02ODQsNyArNjg0LDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBGbG9hdFJlY3QKICNlbmRpZgogCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPihpbWFnZSkp
Ci0gICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5n
cyhzZXR0aW5ncygpKTsKKyAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBk
YXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwogCiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMg
b3B0aW9ucyA9IHsKICAgICAgICAgaW1hZ2VFbGVtZW50ID8gaW1hZ2VFbGVtZW50LT5jb21wb3Np
dGVPcGVyYXRvcigpIDogQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4u
NzZlMmM4NTZjMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCIK
ICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBAIC0xNTAsNiArMTUxLDkgQEAgdm9pZCBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdz
KCkuYW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpICYmICFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFu
aW1hdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlZlB0ciBwcm90ZWN0ZWRBbmlt
YXRvciA9IHRoaXMtPmFuaW1hdG9yKCkpCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFy
dCgqdGFyZ2V0RWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA5YjAy
MjY3MTU1NzQuLjViNjBmMWI1NDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAt
MTA4Niw0ICsxMDg2LDkgQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKCkK
ICAgICB9CiB9CiAKK2Jvb2wgU1ZHRWxlbWVudDo6aXNBbmltYXRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzU01JTEVsZW1lbnQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5k
ZXggNTI2NjQwMTVkNjg0Li5jNDYxODZjZjlkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApA
QCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBhcmUgbmVlZGVkIGZvciB0
aGUgUmVuZGVyVHJlZSwgYW5pbWF0aW9uIGFuZCBET00uCiAgICAgQXRvbVN0cmluZyBjbGFzc05h
bWUoKSBjb25zdCB7IHJldHVybiBBdG9tU3RyaW5nIHsgbV9jbGFzc05hbWUtPmN1cnJlbnRWYWx1
ZSgpIH07IH0KICAgICBTVkdBbmltYXRlZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJl
dHVybiBtX2NsYXNzTmFtZTsgfQorICAgIAorICAgIGJvb2wgaXNBbmltYXRlZCgpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlU1ZHRWxlbWVudCk7CkBAIC0xODUsNiArMTg3
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRp
b24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsZW1lbnQmKTsKIAogICAgIHZvaWQgd2ls
bFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOworICAgIGJvb2wgbV9zaG91bGRB
bGxvd0luZGl2aWR1YWxBbmltYXRpb24geyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclRhcmdldCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCAxODkyNDI0OGM5MTQuLjI0M2Y1NjAyMjMwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAK
QEAgLTEwOTksNiArMTA5OSwxMSBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlM
VGltZSBlbGFwc2VkLCBTVkdTTUlMRWxlbWVudCYgZmlyc3RBbmltYXRpb24sCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFuaW1h
dGVkSW1hZ2VzRGlzYWJsZWQoKSAmJiAhbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24p
IHsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgbV9wcmV2aW91c0ludGVydmFsQmVnaW4gPSBtX2ludGVy
dmFsQmVnaW47CiAKICAgICBpZiAobV9pc1dhaXRpbmdGb3JGaXJzdEludGVydmFsKSB7CkBAIC0x
MjMzLDQgKzEyMzgsMjEgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnQoU01JTEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKIH0KIAordm9pZCBTVkdTTUlMRWxlbWVudDo6cGxheUFuaW1hdGlvbigpCit7
CisgICAgaWYgKG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSB0cnVlOworICAgIHN0
YXJ0QW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9u
KCkKK3sKKyAgICBpZiAoIW1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAg
ICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsK
KyAgICBzdG9wQW5pbWF0aW9uKG1fdGFyZ2V0RWxlbWVudCk7Cit9CisKKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmluZGV4IDRmZTdhZWEyMDE4
ZS4uZTVlMzU5NDgwZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5oCkBAIC0xMDEsMTEgKzEwMSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0QW5pbWF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9u
KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlS
ZXN1bHRzVG9UYXJnZXQoKSA9IDA7CisgICAgdm9pZCBwbGF5QW5pbWF0aW9uKCk7CisgICAgdm9p
ZCBwYXVzZUFuaW1hdGlvbigpOwogCiAgICAgdm9pZCBjb25uZWN0Q29uZGl0aW9ucygpOwogICAg
IGJvb2wgaGFzQ29uZGl0aW9uc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9u
c0Nvbm5lY3RlZDsgfQogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU01JTEV2
ZW50U2VuZGVyKik7CisgICAgYm9vbCBpc0FuaW1hdGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRCZWdpblRpbWUoU01JTFRpbWUgZXZlbnRUaW1l
LCBTTUlMVGltZSBlbmRUaW1lLCBTTUlMVGltZVdpdGhPcmlnaW46Ok9yaWdpbiA9IFNNSUxUaW1l
V2l0aE9yaWdpbjo6UGFyc2VyT3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCmluZGV4IDFjZjhlMTlhNTY5NS4uMjRhNWJlNDU3NTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFNW
R0ltYWdlOjpzY2hlZHVsZVN0YXJ0QW5pbWF0aW9uKCkKIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5p
bWF0aW9uKCkKIHsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsK
LSAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgp
KQorICAgIGlmICghcm9vdEVsZW1lbnQgfHwgIXJvb3RFbGVtZW50LT5hbmltYXRpb25zUGF1c2Vk
KCkgfHwgbV9wYWdlLT5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSB8fCAhbV9w
YWdlKQogICAgICAgICByZXR1cm47CiAgICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25z
KCk7CiAgICAgcm9vdEVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggYjZiYWJlMTgyZTNmLi5iYTRlMmRj
MGE2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApA
QCAtOTgsNCArOTgsNiBAQCBlbnVtIFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgeyAiQ29u
dGVudCIsICJTeXN0ZW0iIH07CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYVZpZGVvQ29k
ZWNJRHMoRE9NU3RyaW5nPyB0eXBlcyk7CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYUF1
ZGlvQ29kZWNJRHMoRE9NU3RyaW5nPyB0eXBlcyk7CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRN
ZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyhET01TdHJpbmc/IHR5cGVzKTsKKyAgICAKKyAgICB1bmRl
ZmluZWQgc2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxlZChib29sZWFuIGVuYWJsZWQpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkYzY0MmM1NWJjOWQuLjZkNTVlM2M1
YzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2
LDI5IEBAIGJvb2wgSW50ZXJuYWxzOjppc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYmIChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBp
bWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnBsYXlJbWFn
ZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGVsZW1lbnQucGxh
eUFuaW1hdGlvbigpOworfQorCit2b2lkIEludGVybmFsczo6cGF1c2VJbWFnZUFuaW1hdGlvbihI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGVsZW1lbnQucGF1c2VBbmltYXRpb24o
KTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnRvZ2dsZVBhZ2VBbmltYXRpb24oKQoreworICAgIGF1
dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cmV0dXJuIHBhZ2UtPnRvZ2dsZUFsbEFuaW1hdGlvbnMoKTsKK30KKwogdW5zaWduZWQgSW50ZXJu
YWxzOjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdEZWNvZGVQcm9t
aXNlc0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
NTE1ZGFiMzdhYWNmLi5lNGYzNDIxMmQ2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMTE3LDYgKzExNyw4IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvdXJjZUJ1
ZmZlcjsKIGNsYXNzIFN0cmluZ0NhbGxiYWNrOwogY2xhc3MgU3R5bGVTaGVldDsKK2NsYXNzIFNW
R0VsZW1lbnQ7CitjbGFzcyBTVkdTTUlMRWxlbWVudDsKIGNsYXNzIFRleHRJdGVyYXRvcjsKIGNs
YXNzIFRleHRUcmFjazsKIGNsYXNzIFRpbWVSYW5nZXM7CkBAIC0yMTksNiArMjIxLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxl
bWVudCYsIGZsb2F0IGR1cmF0aW9uKTsKICAgICB2b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRN
TEltYWdlRWxlbWVudCYpOwogICAgIGJvb2wgaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVt
ZW50Jik7CisgICAgdm9pZCBwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwor
ICAgIHZvaWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9p
ZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7CiAgICAgdW5zaWduZWQgaW1hZ2VQZW5kaW5nRGVjb2Rl
UHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgc2V0
Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxl
bWVudCYsIGJvb2wgZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgaW1hZ2VEZWNvZGVDb3VudChIVE1M
SW1hZ2VFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYTJh
ZjI1MmIyMGZkLi4wOWEzYWIyYTk4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTU1NCw2ICs1NTQsOSBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNw
b25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1
cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0
aW9uKTsKICAgICB1bmRlZmluZWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50
IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50
IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCBwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxl
bWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1h
Z2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7
CiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVz
dGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBzZXRDbGVhckRl
Y29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVs
ZW1lbnQsIGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZURlY29kZUNv
dW50KEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9w
dGlvbnMuY3BwCmluZGV4IDUxZjY1ZjMwOWViMy4uMmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcApAQCAtNjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVh
dHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRl
ZERyYXdpbmdFbmFibGVkIiwgZmFsc2UgfSwKICNlbmRpZgogICAgICAgICAgICAgeyAiQWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJ
bWFnZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRp
b25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrIiwgdHJ1ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDU2MjY3YzJhZTRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJs
ZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMg
dGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1h
dGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNh
bWUgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2Ft
ZSBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5p
bWF0aW9ucy1lbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZTRkOGYyNmEzNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApAQCAtMCww
ICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0
aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gIkRpc2FibGUgQW5pbWF0ZWQgSW1hZ2Vz
IGlzIHR1cm5lZCBvbjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgZGlz
YWJsZSBhbmltYXRlZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uIik7CQkKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdGVzdEltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOwor
ICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVz
dEltYWdlKSIsICJ0cnVlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzaG91
bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJm
YWxzZSIsIGZpbmlzaEpTVGVzdCk7IAorICAgICAgICB9KTsKKyAgICB9CQorCis8L3NjcmlwdD4K
KworPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBs
YXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZDc4ZTE0MDBhODQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZp
ZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMg
dGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xl
ZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgZmFs
c2UKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgdHJ1
ZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDdjYzkzOWJkYWQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDI4IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1h
dGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVk
IG9uPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUg
dG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS4iKTsJCQorICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBbmltYXRlZEltYWdlc0Rpc2FibGVk
KHRydWUpOworCQorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVz
dEltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBz
aG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIs
ICJmYWxzZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGludGVybmFscy5wbGF5SW1hZ2VB
bmltYXRpb24odGVzdEltYWdlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRl
cm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgInRydWUiLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VBbmltYXRpb24odGVzdEltYWdl
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcodGVzdEltYWdlKSIsICJmYWxzZSIsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAg
ICB9KTsgCisgICAgICAgIH0pOworICAgIH0JCisKKzwvc2NyaXB0PgorCis8aW1nIHNyYz0icmVz
b3VyY2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1h
dGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41
YzRhNzk5ODRjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9u
IGlzIGRpc2FibGVkLCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24g
YW5kIG9mZi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxz
LmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRp
bmcodGVzdEltYWdlMikgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKHRlc3RJbWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIp
IGJlY2FtZSB0cnVlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEp
IHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10
b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2UwMzQwYTY3YmY5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJlIGRp
c2FibGVkIHdoZW4gRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVkIG9uPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3
aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdl
IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCh0cnVl
KTsKKwkKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RJbWFn
ZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB0ZXN0
SW1hZ2UyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZTEiKTsKKyAgICAgICAg
c2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEp
IHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24oKTsK
KyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGlu
Zyh0ZXN0SW1hZ2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UyKSIs
ICJ0cnVlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy50b2dnbGVQ
YWdlQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5p
bWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAg
IH0pOyAKKyAgICAgICAgfSk7CisgICAgfQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9InJlc291
cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlMSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJj
ZXMvYW5pbWF0ZWQyLmdpZiIgaWQ9InRlc3RJbWFnZTIiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0
ZWQyLmdpZiBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRl
ZDIuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI5OWIxZmY2NTkyZDJkODFmNTc5OGVhNzZiY2UxYWI0YTE3OGMy
OTYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6Y21aP3diaEVIYjZrcmZ3X3xDeGFmOTZj
JXw3aUBQVV5FMHFXQyRxIT1re3xBMzNoZjJhNWQ2MVV9Z2pjZzVwbVcKejdFb0J8ZkN4fUZWYz9L
dVZDSW5WKnMkUFdHbCNITiUhdiZQNTRRXl9kKEg5S3hhZXBqQk9gVmxqUURnfDB8NCRtCkJCbWUq
YQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM0YjE3ZjNl
YzliYWJjY2M0OWRiYWMxOTBlNjNhOWJhNGM5OWNkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx
MDU1CnpjbVo/d2JoOXV8UkFDVGRjKlh6KmRLQzwyUlNmcEUzfnUhZEs2TU59TyQ+cWMzP1ZJQ1ZO
RFhATyQtdDN5cGU2OQp6ayE+PU9FITxIWiVGIShoRn08UU9UfmFZITQ2emZIPEdNOEJ5SHBaO2Im
YDVhbERsUDZyWWZnUShNcD9ZbURhMUQKekcwaTVVLSE1fmFWYGlVYy1YITBgc2NPWm00VTNvaW0m
XnolbldqXl4jOzl5ZlNvekZ8QCk/b2spMXhiPG5ebXJsCnpzK15AP3diaShLaSlIT3JsZSU1V2Ij
cWMxPTl4Q2B2Mk5VeCl2Xz9CV3hpJEdrJUcxYj1JekpMK2ZTSHg5NT9TYwp6VmNsYHVxVSZeVipP
SlA8PHlITUY+THhDKW8zeWZKK1VtOSRZa1RMYz56VFc4QH1qTT9tVCNaRWFfNiMqYDxIRHgKenV4
YTx2WlRuQnxLNzk3cm5hbHRHfEF6Iz8wRnNKN1N5K3UyTEskPkdaVURzejFOOzk1YD0leTRkeipI
Zj1CfkRPCnp5VXpCT3Axekk9e21vTm1ib08rI3diP2UhPzRMRUkkI0wxLWcqXipxRlBeWjwhT1h6
V1oxSWB9PnQ7e2lWUShaWQp6JSpWPHJYSnFmVmJOajQkUUBkOyZIUUQpdU91VXVaU1QkRmxabml6
eS1SNVk+dUowfFlVQDVPfSU0Jkc7P1ltaHIKejk0MDAjOUJqPFd6T3NUPWJLa0Elb15gZj5WRyRG
UHFQYCE4cHk5KE49Q1lIIVVNQFBxOF5mcS0oJkFDNWx6TkpqCnokM2tXU01eb3FRVyZSOX5qbWB+
PW48cj1sRUhaSzJAVGh9SE5Uc2xMUXBMO0xKelBSK0dDNzVabmleUn08KW82UQp6MzVEdihOPXMt
NkRqaGcqUU9aTGc9RVppTTVMTGdrTmVUZlJsYTRWZm57ZSRvcTU1anRyZnY4QWdIIyo+OShvOUoK
emFffik9VjhYZFRCWWNrNihGWHd3OVU4ZjBaZncqbD5BQzdCcj9MT3ozYE9ULUohISY8LW1nfm5N
bE0+cU9sajR0CnpWe2gtVGwyPkU/WlR3YjBeMnljZDBuXi1NZjRlSSVVPThFWXJZOEk1Q2NDIWcp
PS07e3dwTHBeZDs3bGpXfURFZAp6b3oxaEZaRl4/VVVidntnWTV0TkclYSlpTWhNR0hzSXhndjY4
TT9nNVA+UExIZktfRGUlSSU/Qm1JejM/PT9nbjYKemFXIXBQYWlyfiMwR3BQKDYySDN9MmpBOTNH
dWotYkIlT3FxTC18OEYpSXg8aUFNfGAhJD5IUzU8YFN3TEQoVVJTCnp5N0FIO1VnOytmbmktVj89
U2VKYl5vclohJWpAUTJhSFBldG0wS1g3TSVjeyVnYj1mOU05K3pVKURzaXh4N31PJAp6Q3lkcCht
ekQ4fjxiKHBIbWZnUGdSWCQhVkZCRENzeXhsP3Fme3IjY2khZVR3VDs7TXhwb1BvSEZYNl8tZ3x9
NUoKeldKQ3FNTE5iX3tTT2YlZTFoJjNkeE9UM1V7SEN0TFdVKGM0ciVTTj47fUNrWEBYYChAJEVV
dUxyPjwkck1ZaTUkCktvdWVWWlU9MDlEI0JHdVEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461798</attachid>
            <date>2022-08-22 09:53:56 -0700</date>
            <delta_ts>2022-08-22 11:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220822095355.patch</filename>
            <type>text/plain</type>
            <size>44844</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBjYzhkMTEyZDM3ZDQwM2Q5MzZlZDc2NDBmYjZhZjdlNjMwNzg1MjMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDE5IEF1ZyAyMDIyIDEwOjQxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgaW1hZ2UgYW5pbWF0aW9ucwogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCnJkYXI6Ly85ODg4NzY3NwoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGV4cGVy
aW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIGltYWdlIGFu
aW1hdGlvbnMuIFRoaXMgaW5jbHVkZXMgcmVndWxhciBiaXRtYXAgaW1hZ2VzLCBiYWNrZ3JvdW5k
IGltYWdlcywgU1ZHIGFuaW1hdGlvbnMsIGFuZCBzdXBwb3J0IGZvciB0aGUgPG1vZGVsPiBlbGVt
ZW50LiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGludGVyZmFjZXMgdG8gY29udHJvbCBh
bmltYXRpb25zIGF0IHRoZSBwYWdlIGFuZCBpbmRpdmlkdWFsIGltYWdlIGxldmVsLgoKKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
aW1hdGlvbnMgb24gYW4gZW50aXJlIHBhZ2UsIGFuZCB0b2dnbGluZyBhbiBpbmRpdmlkdWFsIGFu
aW1hdGlvbi4KCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CgpBZGRzIHRoZSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5k
IHNldHMgaXQgb2ZmIGJ5IGRlZmF1bHQuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKFdlYkNvcmU6Om1fYWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldEFuaW1hdGlvbklzUGxh
eWluZyk6CgpFbnN1cmUgdGhhdCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIHRoZSBjbGll
bnQgY2Fubm90IHN0YXJ0IHRoZSBhbmltYXRpb24uCgooV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6cGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CihXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CgpOZXcgbWV0aG9kcyB0byBhbGxvdyB3ZWJr
aXQgdG8gY29udHJvbCBtb2RlbCBhbmltYXRpb25zIHdoZW4gdGhlIHBhZ2Utd2lkZSBhbmltYXRp
b25zIGFyZSBvZmYuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CgpVcGRh
dGVzIHRoZSBzZXR0aW5ncyB3aGVuIGFuIGltYWdlIGlzIHJlbmRlcmVkLCBpbiBjYXNlIGl0IGhh
ZCBub3QgeWV0IGJlZW4gcmVuZGVyZWQgd2hlbiBwYWdlLXdpZGUgYW5pbWF0aW9ucyBhcmUgdG9n
Z2xlZC4KCihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwbGF5QW5pbWF0aW9uKToKKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmlzQW5pbWF0aW5nKToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5p
bWF0ZWRJbWFnZSk6CgpNZXRob2RzIHRvIGNvbnRyb2wgaW1hZ2UgYW5pbWF0aW9ucyBhbmQgY2hl
Y2sgdGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwOgooV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd0ltYWdlKToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3MgLT4gdXBkYXRlRnJv
bURvY3VtZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFn
ZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpjb250YWluc0FuaW1hdGVk
SW1hZ2VzKToKKFdlYkNvcmU6OlBhZ2U6OmlzQWxsQW5pbWF0aW9uUGF1c2VkKToKCk1ldGhvZHMg
dG8gY29udHJvbCBwYWdlLXdpZGUgYW5pbWF0aW9ucy4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21Eb2N1bWVudCk6CgpDaGFuZ2UgdXBk
YXRlRnJvbVNldHRpbmdzIHRvIHVwZGF0ZUZyb21Eb2N1bWVudCBiZWNhdXNlIGl0IG5lZWRzIHRv
IGNhbGwgYSBtZXRob2Qgb24gcGFnZS4KCihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CihX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdl
RnJhbWVBdmFpbGFibGVBdEluZGV4KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwbGF5QW5pbWF0
aW9uKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbik6CihXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcik6CihXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6dXBkYXRlRnJvbVNldHRpbmdzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgoKTmV3IG1ldGhvZHMgdG8gY29udHJvbCBhIGJpdG1h
cCBpbWFnZSdzIGFuaW1hdGlvbnMsIGFzIHdlbGwgYXMgY2hlY2tzIGluIGV4aXN0aW5nIG1ldGhv
ZHMgdG8gZW5zdXJlIHRoYXQgYW4gaW1hZ2UgZG9lcyBub3Qgc3RhcnQgd2hlbiB0aGUgc2V0dGlu
ZyBpcyBlbmFibGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcg
Y29uc3QpOiBEZWxldGVkLgoKVXBkYXRlcyB0byBpc0FuaW1hdGluZyB0byBleHBvcnQgaXQgZnJv
bSB3ZWJjb3JlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgoKQ2hhbmdlIHVwZGF0ZUZyb21TZXR0aW5ncyAtPiB1cGRhdGVGcm9tRG9jdW1lbnQu
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CgpDaGFuZ2UgdXBkYXRlRnJvbVNldHRpbmdzIC0+
IHVwZGF0ZUZyb21Eb2N1bWVudC4KCiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHA6CihXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0
aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdF
bGVtZW50OjpTVkdFbGVtZW50KToKKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzQW5pbWF0ZWQgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6cHJvZ3Jlc3MpOgooV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBsYXlBbmltYXRpb24pOgoo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6aXNBbmltYXRlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CgpNZXRob2RzIGFu
ZCBjaGVja3MgdG8gcHJldmVudCBTVkcgYW5pbWF0aW9ucyBmcm9tIHN0YXJ0aW5nIHdoZW4gdGhl
IHNldHRpbmcgaXMgZW5hYmxlZC4KCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJD
b3JlOjpJbnRlcm5hbHM6OnBsYXlJbWFnZUFuaW1hdGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhdXNlSW1hZ2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVQYWdlQW5p
bWF0aW9uKToKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcDoKKFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKToKCk5ldyBpbnRlcm5h
bCB0ZXN0aW5nIG1ldGhvZHMgdG8gdmVyaWZ5IHRoZSBzZXR0aW5nIGlzIG9uICYgaW1hZ2VzIGFy
ZSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAgICAgICAgICAgfCAgMTIgKysrCiAuLi4vbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCAgICAgICAgfCAgMjAgKysrKysKIC4uLi9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oICB8ICAgNiArKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCAgICAgIHwgIDQ3ICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuaCAgICAgICAgfCAgIDggKysKIC4uLi9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDc3ICsrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAgICAgICAgICAgIHwgICA2ICsrCiAuLi4vV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgfCAgMzcgKysrKysrKy0tCiAu
Li4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oICAgfCAgMTMgKystCiAu
Li4vcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCAgICAgICAgfCAgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICAgMiArLQogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgIHwgICA0ICsKIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCAgICAgICAgICAgICB8ICAgNSArKwogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwICB8ICAyMiArKysrKwogU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIHwgICAzICsKIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgICAgICB8ICAgMiArLQogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCAgIHwgICAyICsKIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICB8ICAyMyArKysrKysKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgNSArKwogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsKIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwICAgICAgICB8ICAgMSArCiAuLi4vZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0ICAgfCAgMTEgKysrCiAuLi4vbWFjL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgICAgICAgfCAgMjQgKysrKysrCiAuLi5vbnMtcGxh
eS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAuLi4tYW5pbWF0
aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAgMjggKysrKysrKwogLi4uYXRp
b25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IHwgIDEyICsrKwogLi4uYmxl
LWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sIHwgIDMwICsrKysrKysKIC4u
Li9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZiB8IEJpbiAwIC0+IDkw
MSBieXRlcwogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmIHwg
QmluIDAgLT4gMTA1NSBieXRlcwogMzEgZmlsZXMgY2hhbmdlZCwgNDEwIGluc2VydGlvbnMoKyks
IDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1lbmFibGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1l
eHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlv
bi5naWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGUwODg5ZmY5ZDA4OC4uNGVj
MjUzNGQ2YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtNjUsNiArNjUsMTgg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZDoKICAgICAgIGRlZmF1bHQ6IGZhbHNl
CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIAorQW5pbWF0ZWRJbWFn
ZXNEaXNhYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNvbnRyb2wg
YW5pbWF0ZWQgaW1hZ2VzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJEaXNhYmxlIGFu
aW1hdGlvbnMgYW5kIHZpZXcgYW5pbWF0ZWQgaW1hZ2VzIGFzIHN0YXRpYy4iCisgIGRlZmF1bHRW
YWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktp
dDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZh
bHNlCiAKIEFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkOgogICB0eXBl
OiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYTFmNGVkMDM1ODJhLi5kZmI3MWFkZGExNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlICJS
ZW5kZXJSZXBsYWNlZC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KQEAgLTcwLDYgKzcxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEhU
TUxNb2RlbEVsZW1lbnQpOwogSFRNTE1vZGVsRWxlbWVudDo6SFRNTE1vZGVsRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICAsIG1fc2hvdWxkRGlzYWJsZUltYWdlQW5pbWF0aW9uKGRvY3VtZW50LnNldHRpbmdz
KCkuYW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpKQogICAgICwgbV9yZWFkeVByb21pc2UgeyBtYWtl
VW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4oKnRoaXMsICZIVE1MTW9kZWxFbGVtZW50OjpyZWFkeVBy
b21pc2VSZXNvbHZlKSB9CiB7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tz
KCk7CkBAIC01MDEsNiArNTAzLDEyIEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0QW5pbWF0
aW9uSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nLCBET01Qcm9taXNlRGVmZXJyZWQ8CiAgICAgICAg
IHByb21pc2UucmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYg
KG1fc2hvdWxkRGlzYWJsZUltYWdlQW5pbWF0aW9uICYmICFtX3Nob3VsZEFsbG93SW5kaXZpZHVh
bEFuaW1hdGlvbikgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICBtX21vZGVs
UGxheWVyLT5zZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtdIChib29sKSB7IH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9tb2RlbFBsYXllci0+c2V0QW5pbWF0aW9uSXNQ
bGF5aW5nKGlzUGxheWluZywgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzdWNj
ZXNzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCkBAIC01MjAsNiArNTI4LDE4IEBA
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6cGF1c2VBbmltYXRpb24oRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHJvbWlzZSkKICAgICBzZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFdURk1v
dmUocHJvbWlzZSkpOwogfQogCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXlBbmltYXRpb25X
aGVuRGlzYWJsZWQoKQoreworICAgIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uID0g
dHJ1ZTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNh
YmxlZCgpCit7CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsK
KyAgICBtX21vZGVsUGxheWVyLT5zZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtdIChib29s
KSB7IH0pOworfQorCisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aXNMb29waW5nQW5pbWF0aW9u
KElzTG9vcGluZ0FuaW1hdGlvblByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghbV9tb2Rl
bFBsYXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggYzgwNTBlM2Y1YmRiLi4xMTM0Y2MzZjY0YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhbmlt
YXRpb25DdXJyZW50VGltZShDdXJyZW50VGltZVByb21pc2UmJik7CiAgICAgdm9pZCBzZXRBbmlt
YXRpb25DdXJyZW50VGltZShkb3VibGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAor
ICAgIHZvaWQgcGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCgpOworICAgIHZvaWQgcGF1c2VBbmlt
YXRpb25XaGVuRGlzYWJsZWQoKTsKKwogICAgIHVzaW5nIEhhc0F1ZGlvUHJvbWlzZSA9IERPTVBy
b21pc2VEZWZlcnJlZDxJRExCb29sZWFuPjsKICAgICB2b2lkIGhhc0F1ZGlvKEhhc0F1ZGlvUHJv
bWlzZSYmKTsKICAgICB1c2luZyBJc011dGVkUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPjsKQEAgLTE1NCw2ICsxNTcsOSBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0U2l6
ZSBjb250ZW50U2l6ZSgpIGNvbnN0OwogCisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVJbWFnZUFu
aW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1h
dGlvbiB7IGZhbHNlIH07CisgICAgCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKaW5kZXggYWI2NzM2ODMwOGI5Li5iOWQwZWMyMGU1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkJpdG1hcElt
YWdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtNDEyLDYgKzQxMyw5IEBA
IHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICAvLyBpbWFn
ZSBoZWlnaHQgYW5kIHdpZHRoIGZvciB0aGUgYWx0IHRleHQgaW5zdGVhZC4KICAgICBpZiAoIW1f
aW1hZ2VMb2FkZXItPmltYWdlKCkgJiYgIXJlbmRlckltYWdlUmVzb3VyY2UuY2FjaGVkSW1hZ2Uo
KSkKICAgICAgICAgcmVuZGVySW1hZ2Uuc2V0SW1hZ2VTaXplRm9yQWx0VGV4dCgpOworCisgICAg
aWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgaW1hZ2UtPnVw
ZGF0ZURvY3VtZW50T25SZW5kZXIoZG9jdW1lbnQoKSk7CiB9CiAKIE5vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRl
ZFRyZWUpCkBAIC03NjYsNiArNzcwLDQwIEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YWxsb3dz
T3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpbWFnZSB8fCBpbWFnZS0+
c291cmNlVVJMKCkucHJvdG9jb2xJc0RhdGEoKSB8fCBjYWNoZWRJbWFnZS0+aXNDT1JTU2FtZU9y
aWdpbigpOwogfQogCitCaXRtYXBJbWFnZSogSFRNTEltYWdlRWxlbWVudDo6Y2FjaGVkQml0bWFw
SW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hl
ZEltYWdlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdl
KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiaXRtYXBJbWFnZSA9IGR5bmFtaWNEb3duY2Fz
dDxCaXRtYXBJbWFnZT4oKmltYWdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYml0bWFwSW1h
Z2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgSFRN
TEltYWdlRWxlbWVudDo6cGxheUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0g
Y2FjaGVkQml0bWFwSW1hZ2UoKSkgeworICAgICAgICBpbWFnZS0+dXBkYXRlRnJvbURvY3VtZW50
KGRvY3VtZW50KCkpOworICAgICAgICBpbWFnZS0+cGxheUFuaW1hdGlvbigpOworICAgIH0KK30K
Kwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1
dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkgeworICAgICAgICBpbWFnZS0+dXBkYXRl
RnJvbURvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBpbWFnZS0+cGF1c2VBbmltYXRpb24o
KTsKKyAgICB9Cit9CisKK2Jvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRpbmcoKSBjb25z
dAoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAg
IHJldHVybiBpbWFnZS0+aXNBbmltYXRpbmcoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAg
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50
OjpzZXRBdHRhY2htZW50RWxlbWVudChSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiYmIGF0dGFj
aG1lbnQpCkBAIC05NTcsNCArOTk1LDEzIEBAIFJlZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50
OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAg
cmV0dXJuIGNsb25lOwogfQogCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFn
ZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1h
Z2UoKSkgeworICAgICAgICBpZiAoYXV0byogYml0bWFwSW1hZ2UgPSBjYWNoZWRCaXRtYXBJbWFn
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFnZSgpLT5pc0FuaW1hdGVk
KCkgfHwgIWJpdG1hcEltYWdlLT5pc0FuaW1hdGlvbkZpbmlzaGVkKCk7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApp
bmRleCA2ZDU1ZTE4N2NiMjQuLjA0MTAzMWY5MzJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwpAQCAtMTU0LDYgKzE1NSwxMSBA
QCBwdWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsKIAog
ICAgIGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0OworICAgIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGxheUFuaW1hdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcGF1c2VBbmltYXRpb24oKTsKKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3Q7CisgICAg
Ym9vbCBpc0FuaW1hdGVkSW1hZ2UoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFn
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50
KiA9IG51bGxwdHIpOwpAQCAtMjM2LDYgKzI0Miw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKICAgICBTdHJpbmcgbV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVudElE
OwogI2VuZGlmCisgICAgCisgICAgQml0bWFwSW1hZ2UqIGNhY2hlZEJpdG1hcEltYWdlKCkgY29u
c3Q7CiAKICAgICBmcmllbmQgY2xhc3MgSFRNTFBpY3R1cmVFbGVtZW50OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKaW5kZXggOWJiY2M1NWU1MzI5Li42Mjg1ZDgzYmE3ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwCkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBD
YQogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9Ci0gICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZy
b21TZXR0aW5ncyhkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICAgICAgZG93bmNhc3Q8Qml0bWFw
SW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KTsKICAgICB9CiAKICAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zID0geyBvcCwgYmxlbmRNb2RlLCBvcmllbnRh
dGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZDYzMzc2MGU5MWI0Li43MDhlNTk4OTE0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3
YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJh
Y2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVk
ZSAiQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtMTI5LDYgKzEzMCw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VVc2FnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4
dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgorI2luY2x1ZGUgIlNWR1NNSUxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERp
c2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgpAQCAtMTUyLDYgKzE1
NCw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJlY29nbml0
aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUg
IlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNsdWRl
ICJVc2VySW5wdXRCcmlkZ2UuaCIKQEAgLTIwMSw2ICsyMDQsMTAgQEAKICNpbmNsdWRlICJOYXZp
Z2F0b3JNZWRpYVNlc3Npb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQp
CisjaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+JiBhbGxQYWdlcygpCkBAIC00MDI1LDQgKzQw
MzIsNzQgQEAgdm9pZCBQYWdlOjpmb3JjZVJlcGFpbnRBbGxGcmFtZXMoKQogICAgIH0KIH0KIAor
dm9pZCBQYWdlOjp0b2dnbGVBbGxBbmltYXRpb25zKCkKK3sKKyAgICBtX2hhc1VucGF1c2VkQW5p
bWF0aW9ucyA9ICFtX2hhc1VucGF1c2VkQW5pbWF0aW9uczsKKyAgICBmb3JFYWNoRG9jdW1lbnQo
W3RoaXNdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBhdXNl
ZEFuaW1hdGlvbnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cGxheUFuaW1h
dGlvbigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VF
bGVtZW50LT5wYXVzZUFuaW1hdGlvbigpOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBz
dmdTbWlsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oZWxlbWVudCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBhdXNlZEFuaW1hdGlvbnMpCisgICAgICAg
ICAgICAgICAgICAgIHN2Z1NtaWxFbGVtZW50LT5wbGF5QW5pbWF0aW9uKCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdmdTbWlsRWxlbWVudC0+cGF1c2VBbmlt
YXRpb24oKTsKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoYXV0byogaHRtbE1vZGVsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MTW9kZWxFbGVt
ZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChtX2hhc1VucGF1c2VkQW5pbWF0
aW9ucykKKyAgICAgICAgICAgICAgICAgICAgaHRtbE1vZGVsRWxlbWVudC0+cGxheUFuaW1hdGlv
bldoZW5EaXNhYmxlZCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgaHRtbE1vZGVsRWxlbWVudC0+cGF1c2VBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKyNlbmRp
ZgorICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVy
ZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNCYWNrZ3Jv
dW5kSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkQmFja2dy
b3VuZEltYWdlID0gcmVuZGVyZXItPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLmltYWdlKCkt
PmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBiYWNr
Z3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UtPmltYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZEltYWdlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJp
dG1hcEltYWdlPigqYmFja2dyb3VuZEltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYml0bWFwSW1hZ2UudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1faGFzVW5wYXVzZWRBbmltYXRpb25zKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwSW1hZ2UucGxheUFuaW1hdGlv
bigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBJbWFnZS5wYXVzZUFuaW1hdGlvbigpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0pOworfQorCitib29sIFBhZ2U6OmNvbnRhaW5zQW5pbWF0ZWRJbWFnZXMo
KQoreworICAgIGJvb2wgZm91bmRBbmltYXRlZEltYWdlID0gZmFsc2U7CisgICAgZm9yRWFjaERv
Y3VtZW50KFsmZm91bmRBbmltYXRlZEltYWdlXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGRvY3Vt
ZW50LnJvb3ROb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW1hZ2VFbGVtZW50ID0g
ZHluYW1pY0Rvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAg
ICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
YXV0byogc3ZnU21pbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8U1ZHU01JTEVsZW1lbnQ+KGVs
ZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsKKyNp
ZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogaHRt
bE1vZGVsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MTW9kZWxFbGVtZW50PihlbGVtZW50
KSkgeworICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisjZW5kaWYK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3Vu
ZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91
bmRJbWFnZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgpLT5j
YWNoZWRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dy
b3VuZEltYWdlID0gY2FjaGVkQmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJbWFnZSAmJiBiYWNrZ3JvdW5kSW1hZ2Ut
PmlzQW5pbWF0ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRBbmlt
YXRlZEltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0pOworICAgIHJldHVybiBmb3VuZEFuaW1hdGVkSW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZmNiMWI2NTEwMzM4Li4zMGE5MWIzMjI5OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC05NzYsNiArOTc2LDEwIEBAIHB1YmxpYzoKICAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVG
b3JFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVG
b3JFeHRlbnNpb247IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxs
RnJhbWVzKCk7CisgICAgCisgICAgYm9vbCBhcmVBbGxBbmltYXRpb25zUGF1c2VkKCkgeyByZXR1
cm4gIW1faGFzVW5wYXVzZWRBbmltYXRpb25zOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
b2dnbGVBbGxBbmltYXRpb25zKCk7CisgICAgYm9vbCBjb250YWluc0FuaW1hdGVkSW1hZ2VzKCk7
CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
bmFseXplSW1hZ2VzRm9yRmluZEluUGFnZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spOwpA
QCAtMTM0MSw2ICsxMzQ1LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb24geyBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uOjpOb25lIH07
CisgICAgCisgICAgYm9vbCBtX2hhc1VucGF1c2VkQW5pbWF0aW9ucyB7IGZhbHNlIH07CiB9Owog
CiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTg3YWM2OTBiMmVjLi5kMzc0
NGNkNWY4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjUsMTEgKzY3LDEzIEBAIEJpdG1hcEltYWdlOjp+
Qml0bWFwSW1hZ2UoKQogICAgIG1fc291cmNlLT5zdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MpCit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVGcm9tRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQogewotICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9IHNldHRpbmdzLmlt
YWdlU3Vic2FtcGxpbmdFbmFibGVkKCk7Ci0gICAgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0Rl
Y29kaW5nID0gc2V0dGluZ3MuYW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKCk7Ci0g
ICAgbV9zaG93RGVidWdCYWNrZ3JvdW5kID0gc2V0dGluZ3Muc2hvd0RlYnVnQm9yZGVycygpOwor
ICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9IGRvY3VtZW50LnNldHRpbmdzKCkuaW1hZ2VTdWJzYW1w
bGluZ0VuYWJsZWQoKTsKKyAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmcgPSBk
b2N1bWVudC5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpOwor
ICAgIG1fc2hvd0RlYnVnQmFja2dyb3VuZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc2hvd0RlYnVn
Qm9yZGVycygpOworICAgIG1fZGlzYWJsZUltYWdlQW5pbWF0aW9uID0gZG9jdW1lbnQuc2V0dGlu
Z3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCk7CisgICAgbV9pc1BhZ2VBbmltYXRpb25FbmFi
bGVkID0gIWRvY3VtZW50LnBhZ2UoKS0+YXJlQWxsQW5pbWF0aW9uc1BhdXNlZCgpOwogfQogCiB2
b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQpAQCAt
MjQ2LDcgKzI1MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgTE9HKEltYWdlcywg
IkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNj
YWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMs
IHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9j
dXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBz
Y2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBpbWFnZTsKLSAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6
OkFzeW5jaHJvbm91cykgeworICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29k
aW5nTW9kZTo6QXN5bmNocm9ub3VzICYmICFtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbikgewogICAg
ICAgICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJh
bWUgfHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CiAKQEAgLTM3NCw3ICszNzgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsCiAKIGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUoKSBjb25z
dAogewotICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hl
ZCAmJiBpbWFnZU9ic2VydmVyKCk7CisgICAgcmV0dXJuIHJlcGV0aXRpb25Db3VudCgpICYmICFt
X2FuaW1hdGlvbkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2ZXIoKSAmJiAoIW1fZGlzYWJsZUltYWdl
QW5pbWF0aW9uIHx8IG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKTsKIH0KIAogYm9v
bCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CkBAIC02NzYsNCArNjgwLDI1IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgbV9zb3VyY2Ut
PmR1bXAodHMpOwogfQogCit2b2lkIEJpdG1hcEltYWdlOjpwbGF5QW5pbWF0aW9uKCkKK3sKKyAg
ICBpZiAobV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAgICAgIHJldHVybjsK
KyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7CisgICAgaW50ZXJu
YWxTdGFydEFuaW1hdGlvbigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlv
bigpCit7CisgICAgaWYgKCFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAgICAg
ICAgcmV0dXJuOworICAgIHN0b3BBbmltYXRpb24oKTsKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZp
ZHVhbEFuaW1hdGlvbiA9IGZhbHNlOworfQorCit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVEb2N1
bWVudE9uUmVuZGVyKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBtX3Nob3VsZEFsbG93SW5k
aXZpZHVhbEFuaW1hdGlvbiA9ICFkb2N1bWVudC5wYWdlKCktPmFyZUFsbEFuaW1hdGlvbnNQYXVz
ZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKaW5kZXggZDNmNGZlYmQwODA0Li5iZDE2NDZhNjY4ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNDksNiArNDksNyBA
QCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNldHRpbmdzOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBUaW1lcjsKIAogY2xh
c3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewpAQCAtNzYsNyArNzcsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIH5CaXRtYXBJbWFnZSgpOwogCi0gICAgdm9pZCB1
cGRhdGVGcm9tU2V0dGluZ3MoY29uc3QgU2V0dGluZ3MmKTsKKyAgICB2b2lkIHVwZGF0ZUZyb21E
b2N1bWVudChjb25zdCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTU4LDYgKzE1OSwx
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVf
dCk7CiAgICAgdm9pZCBkZWNvZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHBsYXlB
bmltYXRpb24oKTsKKyAgICB2b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1h
dGluZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgYWxsb3dzSW5kaXZpZHVhbEFuaW1hdGlvbigp
OworICAgIGJvb2wgaXNBbmltYXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9uRmluaXNoZWQ7IH07CisgICAgdm9pZCB1cGRhdGVEb2N1bWVudE9uUmVuZGVyKERvY3VtZW50
Jik7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmPE5hdGl2
ZUltYWdlPiYmKTsKQEAgLTE5NSw3ICsyMDIsNiBAQCBwcml2YXRlOgogICAgIFN0YXJ0QW5pbWF0
aW9uU3RhdHVzIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lkIGFkdmFuY2VBbmlt
YXRpb24oKTsKICAgICB2b2lkIGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpOwotICAgIGJvb2wg
aXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBsb29rIHVudXN1YWwg
dGhhdCB0aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJsaWMgQVBJLiBUaGlz
IGlzIGJlY2F1c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5LiBB
bmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGltYWdlLiBJdCB3aWxs
CkBAIC0yNDcsNiArMjUzLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9hbGxvd0Fu
aW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvd0RlYnVn
QmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbiB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzUGFnZUFuaW1hdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogCiAg
ICAgYm9vbCBtX2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVz
dGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAppbmRleCBlYzAyNzA1NDg3ZTIuLjAwMzA0ODJjYzI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBA
IC05NzIsNyArOTcyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIGNv
bnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci5tYXNrTW9kZSgpID09IE1hc2tNb2Rl
OjpMdW1pbmFuY2UpOwogCiAgICAgICAgICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KGltYWdlKSkK
LSAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9t
U2V0dGluZ3Moc2V0dGluZ3MoKSk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1h
Z2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwogCiAgICAgICAgICAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zID0gewogICAgICAgICAgICAgICAgIG9wID09
IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGVGb3JQYWlu
dGluZygpIDogb3AsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCA4NzM1NGEzNGQ3ZTMuLmE0MGRmOWI0MDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC02ODQsNyArNjg0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRl
ckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJl
Y3QKICNlbmRpZgogCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPihpbWFnZSkpCi0gICAgICAgIGRv
d25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygp
KTsKKyAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3Vt
ZW50KGRvY3VtZW50KCkpOwogCiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyA9IHsK
ICAgICAgICAgaW1hZ2VFbGVtZW50ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigp
IDogQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uNzZlMmM4NTZjMzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAt
MjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVF
bGVtZW50QmFzZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCIKICNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCkBAIC0xNTAsNiArMTUxLDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJh
c2U6OnN0YXJ0QW5pbWF0aW9uKCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkuYW5pbWF0ZWRJ
bWFnZXNEaXNhYmxlZCgpICYmICFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlZlB0ciBwcm90ZWN0ZWRBbmltYXRvciA9IHRoaXMt
PmFuaW1hdG9yKCkpCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFydCgqdGFyZ2V0RWxl
bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA5YjAyMjY3MTU1NzQuLjVi
NjBmMWI1NDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTA4Niw0ICsxMDg2
LDkgQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKCkKICAgICB9CiB9CiAK
K2Jvb2wgU1ZHRWxlbWVudDo6aXNBbmltYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU01J
TEVsZW1lbnQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNTI2NjQwMTVk
Njg0Li5jNDYxODZjZjlkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTU3LDYgKzE1
Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBhcmUgbmVlZGVkIGZvciB0aGUgUmVuZGVyVHJl
ZSwgYW5pbWF0aW9uIGFuZCBET00uCiAgICAgQXRvbVN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7
IHJldHVybiBBdG9tU3RyaW5nIHsgbV9jbGFzc05hbWUtPmN1cnJlbnRWYWx1ZSgpIH07IH0KICAg
ICBTVkdBbmltYXRlZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsYXNz
TmFtZTsgfQorICAgIAorICAgIGJvb2wgaXNBbmltYXRlZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBDb25zdHJ1
Y3Rpb25UeXBlID0gQ3JlYXRlU1ZHRWxlbWVudCk7CkBAIC0xODUsNiArMTg3LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNS
ZWxhdGl2ZUxlbmd0aHMsIFNWR0VsZW1lbnQmKTsKIAogICAgIHZvaWQgd2lsbFJlY2FsY1N0eWxl
KFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOworICAgIGJvb2wgbV9zaG91bGRBbGxvd0luZGl2aWR1
YWxBbmltYXRpb24geyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjbGVh
clRhcmdldCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmNwcAppbmRleCAxODkyNDI0OGM5MTQuLjI0M2Y1NjAyMjMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTEwOTksNiAr
MTA5OSwxMSBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBlbGFwc2Vk
LCBTVkdTTUlMRWxlbWVudCYgZmlyc3RBbmltYXRpb24sCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlz
YWJsZWQoKSAmJiAhbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pIHsKKyAgICAgICAg
c3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCiAgICAgbV9wcmV2aW91c0ludGVydmFsQmVnaW4gPSBtX2ludGVydmFsQmVnaW47CiAK
ICAgICBpZiAobV9pc1dhaXRpbmdGb3JGaXJzdEludGVydmFsKSB7CkBAIC0xMjMzLDQgKzEyMzgs
MjEgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU01JTEV2ZW50
U2VuZGVyKiBldmVudFNlbmRlcikKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
IH0KIAordm9pZCBTVkdTTUlMRWxlbWVudDo6cGxheUFuaW1hdGlvbigpCit7CisgICAgaWYgKG1f
c2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9z
aG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSB0cnVlOworICAgIHN0YXJ0QW5pbWF0aW9u
KCk7Cit9CisKK3ZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKCkKK3sKKyAgICBp
ZiAoIW1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsKKyAgICBzdG9wQW5p
bWF0aW9uKG1fdGFyZ2V0RWxlbWVudCk7Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmluZGV4IDRmZTdhZWEyMDE4ZS4uZTVlMzU5NDgw
ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5o
CkBAIC0xMDEsMTEgKzEwMSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5p
bWF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJn
ZXQoKSA9IDA7CisgICAgdm9pZCBwbGF5QW5pbWF0aW9uKCk7CisgICAgdm9pZCBwYXVzZUFuaW1h
dGlvbigpOwogCiAgICAgdm9pZCBjb25uZWN0Q29uZGl0aW9ucygpOwogICAgIGJvb2wgaGFzQ29u
ZGl0aW9uc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9uc0Nvbm5lY3RlZDsg
fQogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU01JTEV2ZW50U2VuZGVyKik7
CisgICAgYm9vbCBpc0FuaW1hdGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBhZGRCZWdpblRpbWUoU01JTFRpbWUgZXZlbnRUaW1lLCBTTUlMVGltZSBl
bmRUaW1lLCBTTUlMVGltZVdpdGhPcmlnaW46Ok9yaWdpbiA9IFNNSUxUaW1lV2l0aE9yaWdpbjo6
UGFyc2VyT3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IDFjZjhlMTlhNTY5NS4uMjRhNWJlNDU3NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFNWR0ltYWdlOjpzY2hl
ZHVsZVN0YXJ0QW5pbWF0aW9uKCkKIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKIHsK
ICAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKLSAgICBpZiAoIXJv
b3RFbGVtZW50IHx8ICFyb290RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgpKQorICAgIGlmICgh
cm9vdEVsZW1lbnQgfHwgIXJvb3RFbGVtZW50LT5hbmltYXRpb25zUGF1c2VkKCkgfHwgbV9wYWdl
LT5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSB8fCAhbV9wYWdlKQogICAgICAg
ICByZXR1cm47CiAgICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7CiAgICAgcm9v
dEVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggYjZiYWJlMTgyZTNmLi5iYTRlMmRjMGE2NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtOTgsNCArOTgs
NiBAQCBlbnVtIFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3kgeyAiQ29udGVudCIsICJTeXN0
ZW0iIH07CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoRE9NU3Ry
aW5nPyB0eXBlcyk7CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMo
RE9NU3RyaW5nPyB0eXBlcyk7CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYUNhcHRpb25G
b3JtYXRUeXBlcyhET01TdHJpbmc/IHR5cGVzKTsKKyAgICAKKyAgICB1bmRlZmluZWQgc2V0QW5p
bWF0ZWRJbWFnZXNEaXNhYmxlZChib29sZWFuIGVuYWJsZWQpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBkYzY0MmM1NWJjOWQuLjZkNTVlM2M1YzdlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2LDI5IEBAIGJvb2wg
SW50ZXJuYWxzOjppc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgcmV0dXJuIGltYWdlICYmIChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0
aW9uUGVuZGluZygpKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnBsYXlJbWFnZUFuaW1hdGlvbihI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGVsZW1lbnQucGxheUFuaW1hdGlvbigp
OworfQorCit2b2lkIEludGVybmFsczo6cGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVt
ZW50JiBlbGVtZW50KQoreworICAgIGVsZW1lbnQucGF1c2VBbmltYXRpb24oKTsKK30KKwordm9p
ZCBJbnRlcm5hbHM6OnRvZ2dsZVBhZ2VBbmltYXRpb24oKQoreworICAgIGF1dG8qIGRvY3VtZW50
ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZy
YW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIHBhZ2Ut
PnRvZ2dsZUFsbEFuaW1hdGlvbnMoKTsKK30KKwogdW5zaWduZWQgSW50ZXJuYWxzOjppbWFnZVBl
bmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9y
VGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNTE1ZGFiMzdhYWNm
Li5lNGYzNDIxMmQ2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTE3LDYg
KzExNyw4IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvdXJjZUJ1ZmZlcjsKIGNsYXNz
IFN0cmluZ0NhbGxiYWNrOwogY2xhc3MgU3R5bGVTaGVldDsKK2NsYXNzIFNWR0VsZW1lbnQ7Citj
bGFzcyBTVkdTTUlMRWxlbWVudDsKIGNsYXNzIFRleHRJdGVyYXRvcjsKIGNsYXNzIFRleHRUcmFj
azsKIGNsYXNzIFRpbWVSYW5nZXM7CkBAIC0yMTksNiArMjIxLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0
IGR1cmF0aW9uKTsKICAgICB2b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVu
dCYpOwogICAgIGJvb2wgaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAg
dm9pZCBwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcGF1
c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCB0b2dnbGVQYWdl
QW5pbWF0aW9uKCk7CiAgICAgdW5zaWduZWQgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3Vu
dEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2xlYXJEZWNvZGVy
QWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYsIGJvb2wg
ZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYTJhZjI1MmIyMGZkLi4w
OWEzYWIyYTk4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2
ICs1NTQsOSBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hP
YmplY3Q7CiAgICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJ
bWFnZUVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1
bmRlZmluZWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwog
ICAgIGJvb2xlYW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwor
ICAgIHVuZGVmaW5lZCBwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50
KTsKKyAgICB1bmRlZmluZWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVs
ZW1lbnQpOworICAgIHVuZGVmaW5lZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7CiAgICAgdW5zaWdu
ZWQgbG9uZyBpbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1h
Z2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBzZXRDbGVhckRlY29kZXJBZnRlckFz
eW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIGJvb2xl
YW4gZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZURlY29kZUNvdW50KEhUTUxJbWFn
ZUVsZW1lbnQgZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCmlu
ZGV4IDUxZjY1ZjMwOWViMy4uMmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcApAQCAtNjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RP
cHRpb25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERyYXdpbmdFbmFi
bGVkIiwgZmFsc2UgfSwKICNlbmRpZgogICAgICAgICAgICAgeyAiQWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJbWFnZXNEaXNhYmxl
ZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxz
IiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
THMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrIiwg
dHJ1ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJs
ZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDU2MjY3YzJhZTRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBh
bmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdlcyBz
ZXR0aW5nIGlzIHR1cm5lZCBvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgdHJ1ZQorUEFT
UyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFi
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZTRkOGYyNmEzNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlv
bnMgYXJlIGRpc2FibGVkIHdoZW4gIkRpc2FibGUgQW5pbWF0ZWQgSW1hZ2VzIGlzIHR1cm5lZCBv
bjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgZGlzYWJsZSBhbmltYXRl
ZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdElt
YWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBzaG91
bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJ0
cnVlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFu
aW1hdGVkSW1hZ2VzRGlzYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVh
bCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJmYWxzZSIsIGZpbmlz
aEpTVGVzdCk7IAorICAgICAgICB9KTsKKyAgICB9CQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9
InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZDc4ZTE0MDBhODQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRp
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGlt
YWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2Zm
IGluZGl2aWR1YWxseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50
ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgdHJ1ZQorUEFTUyBpbnRl
cm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2
aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDdjYzkzOWJkYWQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBs
YXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJlIGRp
c2FibGVkIHdoZW4gRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVkIG9uPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3
aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBvbiBh
bmQgb2ZmIGluZGl2aWR1YWxseS4iKTsJCQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRBbmltYXRlZEltYWdlc0Rpc2FibGVkKHRydWUpOworCQor
ICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEltYWdlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBzaG91bGRCZWNvbWVF
cXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJmYWxzZSIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGludGVybmFscy5wbGF5SW1hZ2VBbmltYXRpb24odGVz
dEltYWdlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFn
ZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgInRydWUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VBbmltYXRpb24odGVzdEltYWdlKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVz
dEltYWdlKSIsICJmYWxzZSIsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICB9KTsgCisgICAg
ICAgIH0pOworICAgIH0JCisKKzwvc2NyaXB0PgorCis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1h
dGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xl
LXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YzRhNzk5ODRjZDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxl
LWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVk
LCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZi4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmlt
YXRpbmcodGVzdEltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdl
MikgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFn
ZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSB0cnVl
CitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFs
cy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSBmYWxzZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1h
bmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uM2UwMzQwYTY3YmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdl
LWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4g
RGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVkIG9uPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFu
aW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0b2dn
bGVkIG9uIGFuZCBvZmYuIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCh0cnVlKTsKKwkKKyAgICB3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RJbWFnZTEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB0ZXN0SW1hZ2UyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZTEiKTsKKyAgICAgICAgc2hvdWxkQmVjb21l
RXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFs
cy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKKyAgICAgICAgICAg
IHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2Ux
KSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UyKSIsICJ0cnVlIiwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy50b2dnbGVQYWdlQW5pbWF0aW9u
KCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdl
QW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJ
bWFnZTIpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgIH0pOyAKKyAgICAg
ICAgfSk7CisgICAgfQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRp
b24uZ2lmIiBpZD0idGVzdEltYWdlMSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQy
LmdpZiIgaWQ9InRlc3RJbWFnZTIiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZiBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI5OWIxZmY2NTkyZDJkODFmNTc5OGVhNzZiY2UxYWI0YTE3OGMyOTYKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDkwMQp6Y21aP3diaEVIYjZrcmZ3X3xDeGFmOTZjJXw3aUBQVV5FMHFX
QyRxIT1re3xBMzNoZjJhNWQ2MVV9Z2pjZzVwbVcKejdFb0J8ZkN4fUZWYz9LdVZDSW5WKnMkUFdH
bCNITiUhdiZQNTRRXl9kKEg5S3hhZXBqQk9gVmxqUURnfDB8NCRtCkJCbWUqYQoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
cmVzb3VyY2VzL2FuaW1hdGlvbi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM0YjE3ZjNlYzliYWJjY2M0OWRi
YWMxOTBlNjNhOWJhNGM5OWNkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMDU1CnpjbVo/d2Jo
OXV8UkFDVGRjKlh6KmRLQzwyUlNmcEUzfnUhZEs2TU59TyQ+cWMzP1ZJQ1ZORFhATyQtdDN5cGU2
OQp6ayE+PU9FITxIWiVGIShoRn08UU9UfmFZITQ2emZIPEdNOEJ5SHBaO2ImYDVhbERsUDZyWWZn
UShNcD9ZbURhMUQKekcwaTVVLSE1fmFWYGlVYy1YITBgc2NPWm00VTNvaW0mXnolbldqXl4jOzl5
ZlNvekZ8QCk/b2spMXhiPG5ebXJsCnpzK15AP3diaShLaSlIT3JsZSU1V2IjcWMxPTl4Q2B2Mk5V
eCl2Xz9CV3hpJEdrJUcxYj1JekpMK2ZTSHg5NT9TYwp6VmNsYHVxVSZeVipPSlA8PHlITUY+THhD
KW8zeWZKK1VtOSRZa1RMYz56VFc4QH1qTT9tVCNaRWFfNiMqYDxIRHgKenV4YTx2WlRuQnxLNzk3
cm5hbHRHfEF6Iz8wRnNKN1N5K3UyTEskPkdaVURzejFOOzk1YD0leTRkeipIZj1CfkRPCnp5VXpC
T3Axekk9e21vTm1ib08rI3diP2UhPzRMRUkkI0wxLWcqXipxRlBeWjwhT1h6V1oxSWB9PnQ7e2lW
UShaWQp6JSpWPHJYSnFmVmJOajQkUUBkOyZIUUQpdU91VXVaU1QkRmxabml6eS1SNVk+dUowfFlV
QDVPfSU0Jkc7P1ltaHIKejk0MDAjOUJqPFd6T3NUPWJLa0Elb15gZj5WRyRGUHFQYCE4cHk5KE49
Q1lIIVVNQFBxOF5mcS0oJkFDNWx6TkpqCnokM2tXU01eb3FRVyZSOX5qbWB+PW48cj1sRUhaSzJA
VGh9SE5Uc2xMUXBMO0xKelBSK0dDNzVabmleUn08KW82UQp6MzVEdihOPXMtNkRqaGcqUU9aTGc9
RVppTTVMTGdrTmVUZlJsYTRWZm57ZSRvcTU1anRyZnY4QWdIIyo+OShvOUoKemFffik9VjhYZFRC
WWNrNihGWHd3OVU4ZjBaZncqbD5BQzdCcj9MT3ozYE9ULUohISY8LW1nfm5NbE0+cU9sajR0CnpW
e2gtVGwyPkU/WlR3YjBeMnljZDBuXi1NZjRlSSVVPThFWXJZOEk1Q2NDIWcpPS07e3dwTHBeZDs3
bGpXfURFZAp6b3oxaEZaRl4/VVVidntnWTV0TkclYSlpTWhNR0hzSXhndjY4TT9nNVA+UExIZktf
RGUlSSU/Qm1JejM/PT9nbjYKemFXIXBQYWlyfiMwR3BQKDYySDN9MmpBOTNHdWotYkIlT3FxTC18
OEYpSXg8aUFNfGAhJD5IUzU8YFN3TEQoVVJTCnp5N0FIO1VnOytmbmktVj89U2VKYl5vclohJWpA
UTJhSFBldG0wS1g3TSVjeyVnYj1mOU05K3pVKURzaXh4N31PJAp6Q3lkcChtekQ4fjxiKHBIbWZn
UGdSWCQhVkZCRENzeXhsP3Fme3IjY2khZVR3VDs7TXhwb1BvSEZYNl8tZ3x9NUoKeldKQ3FNTE5i
X3tTT2YlZTFoJjNkeE9UM1V7SEN0TFdVKGM0ciVTTj47fUNrWEBYYChAJEVVdUxyPjwkck1ZaTUk
CktvdWVWWlU9MDlEI0JHdVEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461799</attachid>
            <date>2022-08-22 11:59:05 -0700</date>
            <delta_ts>2022-08-23 17:05:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220822115904.patch</filename>
            <type>text/plain</type>
            <size>44277</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBmNDQ1ZDk3MDQxMmFmMzQxNzJkZTgwZGRlYzU1Y2VlNTBkOTY3OTRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDE5IEF1ZyAyMDIyIDEwOjQxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgaW1hZ2UgYW5pbWF0aW9ucwogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCnJkYXI6Ly85ODg4NzY3NwoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGV4cGVy
aW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIGltYWdlIGFu
aW1hdGlvbnMuIFRoaXMgaW5jbHVkZXMgcmVndWxhciBiaXRtYXAgaW1hZ2VzLCBiYWNrZ3JvdW5k
IGltYWdlcywgU1ZHIGFuaW1hdGlvbnMsIGFuZCBzdXBwb3J0IGZvciB0aGUgPG1vZGVsPiBlbGVt
ZW50LiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGludGVyZmFjZXMgdG8gY29udHJvbCBh
bmltYXRpb25zIGF0IHRoZSBwYWdlIGFuZCBpbmRpdmlkdWFsIGltYWdlIGxldmVsLgoKKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
aW1hdGlvbnMgb24gYW4gZW50aXJlIHBhZ2UsIGFuZCB0b2dnbGluZyBhbiBpbmRpdmlkdWFsIGFu
aW1hdGlvbi4KCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CgpBZGRzIHRoZSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5k
IHNldHMgaXQgb2ZmIGJ5IGRlZmF1bHQuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKFdlYkNvcmU6Om1fYWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldEFuaW1hdGlvbklzUGxh
eWluZyk6CgpFbnN1cmUgdGhhdCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIHRoZSBjbGll
bnQgY2Fubm90IHN0YXJ0IHRoZSBhbmltYXRpb24uCgooV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6cGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CihXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CgpOZXcgbWV0aG9kcyB0byBhbGxvdyB3ZWJr
aXQgdG8gY29udHJvbCBtb2RlbCBhbmltYXRpb25zIHdoZW4gdGhlIHBhZ2Utd2lkZSBhbmltYXRp
b25zIGFyZSBvZmYuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CgpVcGRh
dGVzIHRoZSBzZXR0aW5ncyB3aGVuIGFuIGltYWdlIGlzIHJlbmRlcmVkLCBpbiBjYXNlIGl0IGhh
ZCBub3QgeWV0IGJlZW4gcmVuZGVyZWQgd2hlbiBwYWdlLXdpZGUgYW5pbWF0aW9ucyBhcmUgdG9n
Z2xlZC4KCihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwbGF5QW5pbWF0aW9uKToKKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmlzQW5pbWF0aW5nKToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5p
bWF0ZWRJbWFnZSk6CgpNZXRob2RzIHRvIGNvbnRyb2wgaW1hZ2UgYW5pbWF0aW9ucyBhbmQgY2hl
Y2sgdGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwOgooV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd0ltYWdlKToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3MgLT4gdXBkYXRlRnJv
bURvY3VtZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFn
ZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpjb250YWluc0FuaW1hdGVk
SW1hZ2VzKToKKFdlYkNvcmU6OlBhZ2U6OmlzQWxsQW5pbWF0aW9uUGF1c2VkKToKCk1ldGhvZHMg
dG8gY29udHJvbCBwYWdlLXdpZGUgYW5pbWF0aW9ucy4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21Eb2N1bWVudCk6CgpDaGFuZ2UgdXBk
YXRlRnJvbVNldHRpbmdzIHRvIHVwZGF0ZUZyb21Eb2N1bWVudCBiZWNhdXNlIGl0IG5lZWRzIHRv
IGNhbGwgYSBtZXRob2Qgb24gcGFnZS4KCihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CihX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdl
RnJhbWVBdmFpbGFibGVBdEluZGV4KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwbGF5QW5pbWF0
aW9uKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbik6CihXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcik6CihXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6dXBkYXRlRnJvbVNldHRpbmdzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgoKTmV3IG1ldGhvZHMgdG8gY29udHJvbCBhIGJpdG1h
cCBpbWFnZSdzIGFuaW1hdGlvbnMsIGFzIHdlbGwgYXMgY2hlY2tzIGluIGV4aXN0aW5nIG1ldGhv
ZHMgdG8gZW5zdXJlIHRoYXQgYW4gaW1hZ2UgZG9lcyBub3Qgc3RhcnQgd2hlbiB0aGUgc2V0dGlu
ZyBpcyBlbmFibGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcg
Y29uc3QpOiBEZWxldGVkLgoKVXBkYXRlcyB0byBpc0FuaW1hdGluZyB0byBleHBvcnQgaXQgZnJv
bSB3ZWJjb3JlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgoKQ2hhbmdlIHVwZGF0ZUZyb21TZXR0aW5ncyAtPiB1cGRhdGVGcm9tRG9jdW1lbnQu
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CgpDaGFuZ2UgdXBkYXRlRnJvbVNldHRpbmdzIC0+
IHVwZGF0ZUZyb21Eb2N1bWVudC4KCiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHA6CihXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0
aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdF
bGVtZW50OjpTVkdFbGVtZW50KToKKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzQW5pbWF0ZWQgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6cHJvZ3Jlc3MpOgooV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBsYXlBbmltYXRpb24pOgoo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6aXNBbmltYXRlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CgpNZXRob2RzIGFu
ZCBjaGVja3MgdG8gcHJldmVudCBTVkcgYW5pbWF0aW9ucyBmcm9tIHN0YXJ0aW5nIHdoZW4gdGhl
IHNldHRpbmcgaXMgZW5hYmxlZC4KCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJD
b3JlOjpJbnRlcm5hbHM6OnBsYXlJbWFnZUFuaW1hdGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhdXNlSW1hZ2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVQYWdlQW5p
bWF0aW9uKToKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcDoKKFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKToKCk5ldyBpbnRlcm5h
bCB0ZXN0aW5nIG1ldGhvZHMgdG8gdmVyaWZ5IHRoZSBzZXR0aW5nIGlzIG9uICYgaW1hZ2VzIGFy
ZSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAgICAgICAgICAgfCAgMTIgKysrCiAuLi4vbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCAgICAgICAgfCAgMjAgKysrKysKIC4uLi9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oICB8ICAgNiArKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCAgICAgIHwgIDQ0ICsrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oICAgICAgICB8ICAgOCArKwogLi4uL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwICAgICAgICAgICAgICAgICAgfCAgODMgKysrKysrKysrKysrKysrKysrCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKIC4uLi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCB8ICAzNyArKysrKystLQogLi4u
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgIHwgIDEzICsrLQogLi4u
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgICAgICAgIHwgICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgfCAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICB8ICAgNCArCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgICAgICAgICAgICAgfCAgIDUgKysKIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCAgfCAgMjIgKysrKysKIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCB8ICAgMyArCiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMjAgKysrKysKIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgNSArKwogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsKIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwICAgICAgICB8ICAgMSArCiAuLi4vZGlzYWJsZS1hbmlt
YXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0ICAgfCAgMTEgKysrCiAuLi4vbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgICAgICAgfCAgMjQgKysrKysKIC4uLm9ucy1wbGF5LWlu
ZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAxMiArKysKIC4uLi1hbmltYXRpb25z
LXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbCB8ICAyOCArKysrKysKIC4uLmF0aW9ucy10
b2dnbGUtcGFnZS1hbmltYXRpb25zLWV4cGVjdGVkLnR4dCB8ICAxMiArKysKIC4uLmJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbCB8ICAzMCArKysrKysrCiAuLi4vYWNj
ZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGVkMi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0
ZXMKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiB8IEJpbiAw
IC0+IDEwNTUgYnl0ZXMKIDMxIGZpbGVzIGNoYW5nZWQsIDQxMCBpbnNlcnRpb25zKCspLCAxMiBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
ZW5hYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dn
bGUtcGFnZS1hbmltYXRpb25zLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZgogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lm
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBlMDg4OWZmOWQwODguLjRlYzI1MzRk
NmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTY1LDYgKzY1LDE4IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3RNb2RlbEVuYWJsZWQ6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAg
IFdlYktpdDoKICAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgICAKK0FuaW1hdGVkSW1hZ2VzRGlz
YWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDb250cm9sIGFuaW1h
dGVkIGltYWdlcyIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRGlzYWJsZSBhbmltYXRp
b25zIGFuZCB2aWV3IGFuaW1hdGVkIGltYWdlcyBhcyBzdGF0aWMuIgorICBkZWZhdWx0VmFsdWU6
CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6Cisg
ICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQog
CiBBcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZDoKICAgdHlwZTogYm9v
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGExZjRlZDAzNTgyYS4uZGZiNzFhZGRhMTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlck1vZGVsLmgiCiAjaW5jbHVkZSAiUmVuZGVy
UmVwbGFjZWQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC03MCw2ICs3MSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1MTW9k
ZWxFbGVtZW50KTsKIEhUTUxNb2RlbEVsZW1lbnQ6OkhUTUxNb2RlbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisg
ICAgLCBtX3Nob3VsZERpc2FibGVJbWFnZUFuaW1hdGlvbihkb2N1bWVudC5zZXR0aW5ncygpLmFu
aW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSkKICAgICAsIG1fcmVhZHlQcm9taXNlIHsgbWFrZVVuaXF1
ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNl
UmVzb2x2ZSkgfQogewogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwpA
QCAtNTAxLDYgKzUwMywxMiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldEFuaW1hdGlvbklz
UGxheWluZyhib29sIGlzUGxheWluZywgRE9NUHJvbWlzZURlZmVycmVkPAogICAgICAgICBwcm9t
aXNlLnJlamVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChtX3No
b3VsZERpc2FibGVJbWFnZUFuaW1hdGlvbiAmJiAhbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmlt
YXRpb24pIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgbV9tb2RlbFBsYXll
ci0+c2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBbXSAoYm9vbCkgeyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIG1fbW9kZWxQbGF5ZXItPnNldEFuaW1hdGlvbklzUGxheWlu
Zyhpc1BsYXlpbmcsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChzdWNjZXNzKQpAQCAtNTIwLDYgKzUyOCwxOCBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpCiAgICAgc2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpwbGF5QW5pbWF0aW9uV2hlbkRp
c2FibGVkKCkKK3sKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7
Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6cGF1c2VBbmltYXRpb25XaGVuRGlzYWJsZWQo
KQoreworICAgIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uID0gZmFsc2U7CisgICAg
bV9tb2RlbFBsYXllci0+c2V0QW5pbWF0aW9uSXNQbGF5aW5nKGZhbHNlLCBbXSAoYm9vbCkgeyB9
KTsKK30KKworCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlzTG9vcGluZ0FuaW1hdGlvbihJc0xv
b3BpbmdBbmltYXRpb25Qcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIW1fbW9kZWxQbGF5
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IGM4MDUwZTNmNWJkYi4uMTEzNGNjM2Y2NGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmgKQEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQgYW5pbWF0aW9u
Q3VycmVudFRpbWUoQ3VycmVudFRpbWVQcm9taXNlJiYpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9u
Q3VycmVudFRpbWUoZG91YmxlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKKyAgICB2
b2lkIHBsYXlBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKyAgICB2b2lkIHBhdXNlQW5pbWF0aW9u
V2hlbkRpc2FibGVkKCk7CisKICAgICB1c2luZyBIYXNBdWRpb1Byb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8SURMQm9vbGVhbj47CiAgICAgdm9pZCBoYXNBdWRpbyhIYXNBdWRpb1Byb21pc2Um
Jik7CiAgICAgdXNpbmcgSXNNdXRlZFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9v
bGVhbj47CkBAIC0xNTQsNiArMTU3LDkgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFNpemUgY29u
dGVudFNpemUoKSBjb25zdDsKIAorICAgIGJvb2wgbV9zaG91bGREaXNhYmxlSW1hZ2VBbmltYXRp
b24geyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24g
eyBmYWxzZSB9OworICAgIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IGFiNjczNjgzMDhiOS4uYmEyOTA5OTA4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKQEAgLTc2Niw2ICs3NjcsMzYgQEAgYm9v
bCBIVE1MSW1hZ2VFbGVtZW50OjphbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29uc3QKICAg
ICByZXR1cm4gIWltYWdlIHx8IGltYWdlLT5zb3VyY2VVUkwoKS5wcm90b2NvbElzRGF0YSgpIHx8
IGNhY2hlZEltYWdlLT5pc0NPUlNTYW1lT3JpZ2luKCk7CiB9CiAKK0JpdG1hcEltYWdlKiBIVE1M
SW1hZ2VFbGVtZW50OjpjYWNoZWRCaXRtYXBJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8q
IGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGR5bmFt
aWNEb3duY2FzdDxCaXRtYXBJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBsYXlBbmltYXRpb24oKQor
eworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpIHsKKyAgICAgICAg
aW1hZ2UtPnVwZGF0ZUZyb21Eb2N1bWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgaW1hZ2UtPnBs
YXlBbmltYXRpb24oKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGF1c2VB
bmltYXRpb24oKQoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkp
IHsKKyAgICAgICAgaW1hZ2UtPnVwZGF0ZUZyb21Eb2N1bWVudChkb2N1bWVudCgpKTsKKyAgICAg
ICAgaW1hZ2UtPnBhdXNlQW5pbWF0aW9uKCk7CisgICAgfQorfQorCitib29sIEhUTUxJbWFnZUVs
ZW1lbnQ6OmlzQW5pbWF0aW5nKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSBjYWNo
ZWRCaXRtYXBJbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmlzQW5pbWF0aW5nKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QXR0YWNobWVudEVsZW1lbnQoUmVmPEhUTUxB
dHRhY2htZW50RWxlbWVudD4mJiBhdHRhY2htZW50KQpAQCAtOTU3LDQgKzk4OCwxNyBAQCBSZWY8
RWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbihEb2N1bWVudAogICAgIHJldHVybiBjbG9uZTsKIH0KIAorYm9vbCBIVE1MSW1h
Z2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBjYWNo
ZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgaWYgKGNhY2hlZEltYWdl
LT5pbWFnZSgpLT5pc0FuaW1hdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAoYXV0byogYml0bWFwSW1hZ2UgPSBjYWNoZWRCaXRtYXBJbWFnZSgpKQorICAg
ICAgICByZXR1cm4gIWJpdG1hcEltYWdlLT5pc0FuaW1hdGlvbkZpbmlzaGVkKCk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgK
aW5kZXggNmQ1NWUxODdjYjI0Li4wNDEwMzFmOTMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIERlZmVycmVk
UHJvbWlzZTsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudDsKQEAgLTE1NCw2ICsxNTUsMTEg
QEAgcHVibGljOgogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Q7CiAK
ICAgICBib29sIGFsbG93c09yaWVudGF0aW9uT3ZlcnJpZGUoKSBjb25zdDsKKyAgICAKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBsYXlBbmltYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0OworICAg
IGJvb2wgaXNBbmltYXRlZEltYWdlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBIVE1MSW1h
Z2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVu
dCogPSBudWxscHRyKTsKQEAgLTIzNiw2ICsyNDIsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgU3RyaW5nIG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJ
RDsKICNlbmRpZgorICAgIAorICAgIEJpdG1hcEltYWdlKiBjYWNoZWRCaXRtYXBJbWFnZSgpIGNv
bnN0OwogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxQaWN0dXJlRWxlbWVudDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwCmluZGV4IDliYmNjNTVlNTMyOS4uNjI4NWQ4M2JhN2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcApAQCAtMTU2Miw3ICsxNTYyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwg
Q2EKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQotICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVG
cm9tU2V0dGluZ3MoZG9jdW1lbnQuc2V0dGluZ3MoKSk7CisgICAgICAgIGRvd25jYXN0PEJpdG1h
cEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21Eb2N1bWVudChkb2N1bWVudCk7CiAgICAgfQogCiAg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyA9IHsgb3AsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGQ2MzM3NjBlOTFiNC4uNDQ0MzY5ZWZhZjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJC
YWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1
ZGUgIkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKQEAgLTEyOSw2ICsxMzAsNyBAQAog
I2luY2x1ZGUgIlJlc291cmNlVXNhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdTTUlMRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRE
aXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKQEAgLTE1Miw2ICsx
NTQsNyBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRSZWNvZ25p
dGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRl
ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJVc2VyQ29udGVu
dFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAjaW5jbHVk
ZSAiVXNlcklucHV0QnJpZGdlLmgiCkBAIC0yMDEsNiArMjA0LDEwIEBACiAjaW5jbHVkZSAiTmF2
aWdhdG9yTWVkaWFTZXNzaW9uLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiYgYWxsUGFnZXMoKQpAQCAtNDAyNSw0ICs0
MDMyLDgwIEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAK
K3ZvaWQgUGFnZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucygpCit7CisgICAgbV9oYXNVbnBhdXNlZEFu
aW1hdGlvbnMgPSAhbV9oYXNVbnBhdXNlZEFuaW1hdGlvbnM7CisgICAgZm9yRWFjaERvY3VtZW50
KFt0aGlzXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGRvY3VtZW50LnJvb3ROb2RlKCkpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogaW1hZ2VFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1faGFzVW5wYXVz
ZWRBbmltYXRpb25zKQorICAgICAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnBsYXlBbmlt
YXRpb24oKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGltYWdl
RWxlbWVudC0+cGF1c2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byog
c3ZnU21pbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8U1ZHU01JTEVsZW1lbnQ+KGVsZW1lbnQp
KSB7CisgICAgICAgICAgICAgICAgaWYgKG1faGFzVW5wYXVzZWRBbmltYXRpb25zKQorICAgICAg
ICAgICAgICAgICAgICBzdmdTbWlsRWxlbWVudC0+cGxheUFuaW1hdGlvbigpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3ZnU21pbEVsZW1lbnQtPnBhdXNlQW5p
bWF0aW9uKCk7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGF1dG8qIGh0bWxNb2RlbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTE1vZGVsRWxl
bWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBhdXNlZEFuaW1h
dGlvbnMpCisgICAgICAgICAgICAgICAgICAgIGh0bWxNb2RlbEVsZW1lbnQtPnBsYXlBbmltYXRp
b25XaGVuRGlzYWJsZWQoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGh0bWxNb2RlbEVsZW1lbnQtPnBhdXNlQW5pbWF0aW9uV2hlbkRpc2FibGVkKCk7CisjZW5k
aWYKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRl
cmVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dy
b3VuZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tn
cm91bmRJbWFnZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgp
LT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFj
a2dyb3VuZEltYWdlID0gY2FjaGVkQmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byYgYml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmJhY2tncm91bmRJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0
bWFwSW1hZ2UudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9oYXNVbnBhdXNlZEFuaW1hdGlvbnMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJpdG1hcEltYWdlLnBsYXlBbmltYXRpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp
dG1hcEltYWdlLnBhdXNlQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9KTsKK30KKworYm9vbCBQYWdlOjpjb250YWluc0FuaW1hdGVkSW1hZ2Vz
KCkKK3sKKyAgICBib29sIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IGZhbHNlOworICAgIGZvckVhY2hE
b2N1bWVudChbJmZvdW5kQW5pbWF0ZWRJbWFnZV0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihkb2N1
bWVudC5yb290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGltYWdlRWxlbWVudCA9
IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAg
ICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogc3ZnU21pbEVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8U1ZHU01JTEVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICAg
ICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICAgICAgICAgIGlmIChh
dXRvKiBodG1sTW9kZWxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxNb2RlbEVsZW1lbnQ+
KGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0JhY2tncm91bmRJbWFnZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UgPSByZW5kZXJl
ci0+c3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCkuaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tncm91bmRJbWFnZSA9IGNhY2hl
ZEJhY2tncm91bmRJbWFnZS0+aW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChiYWNrZ3JvdW5kSW1hZ2UtPmlzQW5pbWF0ZWQoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4g
Zm91bmRBbmltYXRlZEltYWdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCmluZGV4IGZjYjFiNjUxMDMzOC4uMzBhOTFiMzIyOTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
OTc2LDYgKzk3NiwxMCBAQCBwdWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZv
ckV4dGVuc2lvbiBjb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvcmNlUmVwYWludEFsbEZyYW1lcygpOworICAgIAorICAg
IGJvb2wgYXJlQWxsQW5pbWF0aW9uc1BhdXNlZCgpIHsgcmV0dXJuICFtX2hhc1VucGF1c2VkQW5p
bWF0aW9uczsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlQWxsQW5pbWF0aW9ucygp
OworICAgIGJvb2wgY29udGFpbnNBbmltYXRlZEltYWdlcygpOwogCiAjaWYgRU5BQkxFKElNQUdF
X0FOQUxZU0lTKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYW5hbHl6ZUltYWdlc0ZvckZpbmRJ
blBhZ2UoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKTsKQEAgLTEzNDEsNiArMTM0NSw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRl
bnNpb24gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uIHsgQ29udGVudFNl
Y3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbjo6Tm9uZSB9OworICAgIAorICAgIGJvb2wgbV9o
YXNVbnBhdXNlZEFuaW1hdGlvbnMgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYg
UGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCmluZGV4IGE4N2FjNjkwYjJlYy4uZDM3NDRjZDVmODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIK
IAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAg
LTM0LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTY1LDExICs2NywxMyBAQCBCaXRtYXBJbWFnZTo6fkJpdG1hcEltYWdlKCkKICAgICBt
X3NvdXJjZS0+c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpOwogfQogCi12b2lkIEJpdG1hcEltYWdl
Ojp1cGRhdGVGcm9tU2V0dGluZ3MoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQordm9pZCBCaXRt
YXBJbWFnZTo6dXBkYXRlRnJvbURvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBtX2FsbG93U3Vic2FtcGxpbmcgPSBzZXR0aW5ncy5pbWFnZVN1YnNhbXBsaW5nRW5hYmxl
ZCgpOwotICAgIG1fYWxsb3dBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZyA9IHNldHRpbmdzLmFu
aW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpOwotICAgIG1fc2hvd0RlYnVnQmFja2dy
b3VuZCA9IHNldHRpbmdzLnNob3dEZWJ1Z0JvcmRlcnMoKTsKKyAgICBtX2FsbG93U3Vic2FtcGxp
bmcgPSBkb2N1bWVudC5zZXR0aW5ncygpLmltYWdlU3Vic2FtcGxpbmdFbmFibGVkKCk7CisgICAg
bV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5h
bmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoKTsKKyAgICBtX3Nob3dEZWJ1Z0JhY2tn
cm91bmQgPSBkb2N1bWVudC5zZXR0aW5ncygpLnNob3dEZWJ1Z0JvcmRlcnMoKTsKKyAgICBtX2Rp
c2FibGVJbWFnZUFuaW1hdGlvbiA9IGRvY3VtZW50LnNldHRpbmdzKCkuYW5pbWF0ZWRJbWFnZXNE
aXNhYmxlZCgpOworICAgIG1faXNQYWdlQW5pbWF0aW9uRW5hYmxlZCA9ICFkb2N1bWVudC5wYWdl
KCktPmFyZUFsbEFuaW1hdGlvbnNQYXVzZWQoKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVz
dHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCkKQEAgLTI0Niw3ICsyNTAsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlcwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAl
cCAtIHVybDogJXMgW3N1YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcg
PSAoJS40ZiwgJS40ZildIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2
ZWwpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5n
LmhlaWdodCgpKTsKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7Ci0gICAgaWYgKG9w
dGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKKyAg
ICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91
cyAmJiAhbV9kaXNhYmxlSW1hZ2VBbmltYXRpb24pIHsKICAgICAgICAgQVNTRVJUKCFjYW5Bbmlt
YXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmlu
aXNoZWQpOwogCkBAIC0zNzQsNyArMzc4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiBi
b29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVw
ZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQgJiYgaW1hZ2VPYnNlcnZlcigp
OworICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAm
JiBpbWFnZU9ic2VydmVyKCkgJiYgKCFtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbiB8fCBtX3Nob3Vs
ZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbik7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFu
aW1hdGUoKSBjb25zdApAQCAtNjc2LDQgKzY4MCwyNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgIG1fc291cmNlLT5kdW1wKHRzKTsKIH0KIAordm9p
ZCBCaXRtYXBJbWFnZTo6cGxheUFuaW1hdGlvbigpCit7CisgICAgaWYgKG1fc2hvdWxkQWxsb3dJ
bmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0lu
ZGl2aWR1YWxBbmltYXRpb24gPSB0cnVlOworICAgIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsK
K30KKwordm9pZCBCaXRtYXBJbWFnZTo6cGF1c2VBbmltYXRpb24oKQoreworICAgIGlmICghbV9z
aG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBzdG9w
QW5pbWF0aW9uKCk7CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxz
ZTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcihEb2N1bWVu
dCYgZG9jdW1lbnQpCit7CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSAh
ZG9jdW1lbnQucGFnZSgpLT5hcmVBbGxBbmltYXRpb25zUGF1c2VkKCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGQzZjRm
ZWJkMDgwNC4uYmQxNjQ2YTY2OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJ
VE1BUF9fICpIQklUTUFQOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZXR0aW5nczsK
K2NsYXNzIERvY3VtZW50OwogY2xhc3MgVGltZXI7CiAKIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFs
IDogcHVibGljIEltYWdlIHsKQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
dmlydHVhbCB+Qml0bWFwSW1hZ2UoKTsKIAotICAgIHZvaWQgdXBkYXRlRnJvbVNldHRpbmdzKGNv
bnN0IFNldHRpbmdzJik7CisgICAgdm9pZCB1cGRhdGVGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1l
bnQmKTsKIAogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTE1OCw2ICsxNTksMTIgQEAgcHVibGljOgogCiAgICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2Rl
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwbGF5QW5pbWF0aW9uKCk7CisgICAgdm9p
ZCBwYXVzZUFuaW1hdGlvbigpOworICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGFsbG93c0luZGl2aWR1YWxBbmltYXRpb24oKTsKKyAgICBib29sIGlzQW5pbWF0
aW9uRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkZpbmlzaGVkOyB9OworICAg
IHZvaWQgdXBkYXRlRG9jdW1lbnRPblJlbmRlcihEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJik7CkBAIC0xOTUs
NyArMjAyLDYgQEAgcHJpdmF0ZToKICAgICBTdGFydEFuaW1hdGlvblN0YXR1cyBpbnRlcm5hbFN0
YXJ0QW5pbWF0aW9uKCk7CiAgICAgdm9pZCBhZHZhbmNlQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBp
bnRlcm5hbEFkdmFuY2VBbmltYXRpb24oKTsKLSAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3Qg
ZmluYWw7CiAKICAgICAvLyBJdCBtYXkgbG9vayB1bnVzdWFsIHRoYXQgdGhlcmUgaXMgbm8gc3Rh
cnQgYW5pbWF0aW9uIGNhbGwgYXMgcHVibGljIEFQSS4gVGhpcyBpcyBiZWNhdXNlCiAgICAgLy8g
d2Ugc3RhcnQgYW5kIHN0b3AgYW5pbWF0aW5nIGxhemlseS4gQW5pbWF0aW9uIGJlZ2lucyB3aGVu
ZXZlciBzb21lb25lIGRyYXdzIHRoZSBpbWFnZS4gSXQgd2lsbApAQCAtMjQ3LDYgKzI1Myw5IEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICBib29sIG1fYWxsb3dBbmltYXRlZEltYWdlQXN5bmNEZWNv
ZGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3dEZWJ1Z0JhY2tncm91bmQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9kaXNhYmxlSW1hZ2VBbmltYXRpb24geyBmYWxzZSB9OworICAgIGJvb2wg
bV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c1BhZ2VBbmltYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9jbGVhckRlY29k
ZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2xhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZEZvclRlc3RpbmcgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5k
ZXggZWMwMjcwNTQ4N2UyLi4wMDMwNDgyY2MyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtOTcyLDcgKzk3Miw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFu
Y2VNYXNrKGJnTGF5ZXIubWFza01vZGUoKSA9PSBNYXNrTW9kZTo6THVtaW5hbmNlKTsKIAogICAg
ICAgICAgICAgaWYgKGlzPEJpdG1hcEltYWdlPihpbWFnZSkpCi0gICAgICAgICAgICAgICAgZG93
bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkp
OworICAgICAgICAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZy
b21Eb2N1bWVudChkb2N1bWVudCgpKTsKIAogICAgICAgICAgICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgb3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgICBvcCA9PSBDb21wb3NpdGVPcGVyYXRvcjo6
U291cmNlT3ZlciA/IGJnTGF5ZXIuY29tcG9zaXRlRm9yUGFpbnRpbmcoKSA6IG9wLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODczNTRhMzRkN2UzLi5hNDBk
ZjliNDA3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
Njg0LDcgKzY4NCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVj
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0CiAjZW5kaWYKIAogICAgIGlm
IChpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQotICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4o
KmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CisgICAgICAgIGRvd25jYXN0
PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21Eb2N1bWVudChkb2N1bWVudCgpKTsKIAog
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMgPSB7CiAgICAgICAgIGltYWdlRWxlbWVu
dCA/IGltYWdlRWxlbWVudC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmNwcAppbmRleCBmNmZmOTRiM2JkOGMuLjc2ZTJjODU2YzMwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKIAorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUg
IlNWR0F0dHJpYnV0ZUFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtMTUw
LDYgKzE1MSw5IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpzdGFydEFuaW1hdGlvbigp
CiB7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSAmJiAh
bV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChSZWZQdHIgcHJvdGVjdGVkQW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQogICAgICAg
ICBwcm90ZWN0ZWRBbmltYXRvci0+c3RhcnQoKnRhcmdldEVsZW1lbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKaW5kZXggOWIwMjI2NzE1NTc0Li41YjYwZjFiNTQ0MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwODYsNCArMTA4Niw5IEBAIHZvaWQgU1ZHRWxlbWVu
dDo6aW52YWxpZGF0ZUluc3RhbmNlcygpCiAgICAgfQogfQogCitib29sIFNWR0VsZW1lbnQ6Omlz
QW5pbWF0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBpc1NNSUxFbGVtZW50KCk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDUyNjY0MDE1ZDY4NC4uYzQ2MTg2Y2Y5ZGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTE1Nyw2ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGhlIFJlbmRlclRyZWUsIGFuaW1hdGlvbiBhbmQgRE9N
LgogICAgIEF0b21TdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gQXRvbVN0cmluZyB7
IG1fY2xhc3NOYW1lLT5jdXJyZW50VmFsdWUoKSB9OyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcm
IGNsYXNzTmFtZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9jbGFzc05hbWU7IH0KKyAgICAKKyAgICBi
b29sIGlzQW5pbWF0ZWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFNWR0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZVNW
R0VsZW1lbnQpOwpAQCAtMTg1LDYgKzE4Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdF
bGVtZW50Jik7CiAKICAgICB2b2lkIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVy
cmlkZTsKKyAgICBib29sIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uIHsgZmFsc2Ug
fTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggMTg5
MjQyNDhjOTE0Li4yNDNmNTYwMjIzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0xMDk5LDYgKzEwOTksMTEgQEAgYm9vbCBTVkdT
TUlMRWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQmIGZp
cnN0QW5pbWF0aW9uLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKGRv
Y3VtZW50KCkuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCkgJiYgIW1fc2hvdWxk
QWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKSB7CisgICAgICAgIHN0b3BBbmltYXRpb24obV90YXJn
ZXRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIG1fcHJldmlv
dXNJbnRlcnZhbEJlZ2luID0gbV9pbnRlcnZhbEJlZ2luOwogCiAgICAgaWYgKG1faXNXYWl0aW5n
Rm9yRmlyc3RJbnRlcnZhbCkgewpAQCAtMTIzMyw0ICsxMjM4LDIxIEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KFNNSUxFdmVudFNlbmRlciogZXZlbnRTZW5kZXIp
CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKK3ZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OnBsYXlBbmltYXRpb24oKQoreworICAgIGlmIChtX3Nob3VsZEFsbG93SW5kaXZpZHVh
bEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uID0gdHJ1ZTsKKyAgICBzdGFydEFuaW1hdGlvbigpOworfQorCit2b2lkIFNWR1NN
SUxFbGVtZW50OjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX3Nob3VsZEFsbG93SW5k
aXZpZHVhbEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hvdWxkQWxsb3dJbmRp
dmlkdWFsQW5pbWF0aW9uID0gZmFsc2U7CisgICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1l
bnQpOworfQorCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuaAppbmRleCA0ZmU3YWVhMjAxOGUuLmU1ZTM1OTQ4MGU1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaApAQCAtMTAxLDExICsxMDEsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkgPSAwOworICAgIHZvaWQg
cGxheUFuaW1hdGlvbigpOworICAgIHZvaWQgcGF1c2VBbmltYXRpb24oKTsKIAogICAgIHZvaWQg
Y29ubmVjdENvbmRpdGlvbnMoKTsKICAgICBib29sIGhhc0NvbmRpdGlvbnNDb25uZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2NvbmRpdGlvbnNDb25uZWN0ZWQ7IH0KICAgICAKICAgICB2b2lkIGRp
c3BhdGNoUGVuZGluZ0V2ZW50KFNNSUxFdmVudFNlbmRlciopOworICAgIGJvb2wgaXNBbmltYXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkQmVn
aW5UaW1lKFNNSUxUaW1lIGV2ZW50VGltZSwgU01JTFRpbWUgZW5kVGltZSwgU01JTFRpbWVXaXRo
T3JpZ2luOjpPcmlnaW4gPSBTTUlMVGltZVdpdGhPcmlnaW46OlBhcnNlck9yaWdpbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAxY2Y4ZTE5YTU2OTUuLjYw
YjJlMGFiYTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBA
IC0zNzksNyArMzc5LDcgQEAgdm9pZCBTVkdJbWFnZTo6c2NoZWR1bGVTdGFydEFuaW1hdGlvbigp
CiB2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAgYXV0byByb290RWxlbWVu
dCA9IHRoaXMtPnJvb3RFbGVtZW50KCk7Ci0gICAgaWYgKCFyb290RWxlbWVudCB8fCAhcm9vdEVs
ZW1lbnQtPmFuaW1hdGlvbnNQYXVzZWQoKSkKKyAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290
RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgpIHx8ICFtX3BhZ2UgfHwgbV9wYWdlLT5zZXR0aW5n
cygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJvb3RF
bGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygpOwogICAgIHJvb3RFbGVtZW50LT5zZXRDdXJyZW50
VGltZSgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmlu
ZGV4IGI2YmFiZTE4MmUzZi4uYmE0ZTJkYzBhNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTk4LDQgKzk4LDYgQEAgZW51bSBVc2VySW50ZXJm
YWNlRGlyZWN0aW9uUG9saWN5IHsgIkNvbnRlbnQiLCAiU3lzdGVtIiB9OwogICAgIHVuZGVmaW5l
ZCBzZXRBbGxvd2VkTWVkaWFWaWRlb0NvZGVjSURzKERPTVN0cmluZz8gdHlwZXMpOwogICAgIHVu
ZGVmaW5lZCBzZXRBbGxvd2VkTWVkaWFBdWRpb0NvZGVjSURzKERPTVN0cmluZz8gdHlwZXMpOwog
ICAgIHVuZGVmaW5lZCBzZXRBbGxvd2VkTWVkaWFDYXB0aW9uRm9ybWF0VHlwZXMoRE9NU3RyaW5n
PyB0eXBlcyk7CisgICAgCisgICAgdW5kZWZpbmVkIHNldEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQo
Ym9vbGVhbiBlbmFibGVkKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggZGM2NDJjNTViYzlkLi5iNjg3YThjZTMzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTEwNDYsNiArMTA0NiwyNiBAQCBib29sIEludGVybmFsczo6aXNJbWFnZUFu
aW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBpbWFnZSAmJiAo
aW1hZ2UtPmlzQW5pbWF0aW5nKCkgfHwgaW1hZ2UtPmFuaW1hdGlvblBlbmRpbmcoKSk7CiB9CiAK
K3ZvaWQgSW50ZXJuYWxzOjpwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICBlbGVtZW50LnBsYXlBbmltYXRpb24oKTsKK30KKwordm9pZCBJbnRlcm5h
bHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAg
ICBlbGVtZW50LnBhdXNlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp0b2dnbGVQ
YWdlQW5pbWF0aW9uKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHBh
Z2UtPnRvZ2dsZUFsbEFuaW1hdGlvbnMoKTsKK30KKwogdW5zaWduZWQgSW50ZXJuYWxzOjppbWFn
ZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50
Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNTE1ZGFiMzdh
YWNmLi5lNGYzNDIxMmQ2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTE3
LDYgKzExNyw4IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvdXJjZUJ1ZmZlcjsKIGNs
YXNzIFN0cmluZ0NhbGxiYWNrOwogY2xhc3MgU3R5bGVTaGVldDsKK2NsYXNzIFNWR0VsZW1lbnQ7
CitjbGFzcyBTVkdTTUlMRWxlbWVudDsKIGNsYXNzIFRleHRJdGVyYXRvcjsKIGNsYXNzIFRleHRU
cmFjazsKIGNsYXNzIFRpbWVSYW5nZXM7CkBAIC0yMTksNiArMjIxLDkgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCYsIGZs
b2F0IGR1cmF0aW9uKTsKICAgICB2b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxl
bWVudCYpOwogICAgIGJvb2wgaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7Cisg
ICAgdm9pZCBwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQg
cGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCB0b2dnbGVQ
YWdlQW5pbWF0aW9uKCk7CiAgICAgdW5zaWduZWQgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXND
b3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2xlYXJEZWNv
ZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYsIGJv
b2wgZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVt
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYTJhZjI1MmIyMGZk
Li4wOWEzYWIyYTk4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1
NCw2ICs1NTQsOSBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0
Y2hPYmplY3Q7CiAgICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAg
ICB1bmRlZmluZWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQp
OwogICAgIGJvb2xlYW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQp
OworICAgIHVuZGVmaW5lZCBwbGF5SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVt
ZW50KTsKKyAgICB1bmRlZmluZWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50
IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7CiAgICAgdW5z
aWduZWQgbG9uZyBpbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1M
SW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHVuZGVmaW5lZCBzZXRDbGVhckRlY29kZXJBZnRl
ckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIGJv
b2xlYW4gZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZURlY29kZUNvdW50KEhUTUxJ
bWFnZUVsZW1lbnQgZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3Bw
CmluZGV4IDUxZjY1ZjMwOWViMy4uMmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RPcHRpb25zLmNwcApAQCAtNjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVhdHVyZXMmIFRl
c3RPcHRpb25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERyYXdpbmdF
bmFibGVkIiwgZmFsc2UgfSwKICNlbmRpZgogICAgICAgICAgICAgeyAiQWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJbWFnZXNEaXNh
YmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFV
UkxzIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
IiwgdHJ1ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDU2MjY3YzJhZTRlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhh
dCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdl
cyBzZXR0aW5nIGlzIHR1cm5lZCBvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgdHJ1ZQor
UEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1l
bmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1h
dGlvbnMtZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZTRkOGYyNmEzNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDI0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1h
dGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gIkRpc2FibGUgQW5pbWF0ZWQgSW1hZ2VzIGlzIHR1cm5l
ZCBvbjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgZGlzYWJsZSBhbmlt
YXRlZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVz
dEltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBz
aG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIs
ICJ0cnVlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVF
cXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJmYWxzZSIsIGZp
bmlzaEpTVGVzdCk7IAorICAgICAgICB9KTsKKyAgICB9CQorCis8L3NjcmlwdD4KKworPGltZyBz
cmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJs
ZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZp
ZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZDc4ZTE0MDBhODQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVu
IGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQg
b2ZmIGluZGl2aWR1YWxseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgZmFsc2UKK1BBU1Mg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgdHJ1ZQorUEFTUyBp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWlu
ZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
aXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDdjYzkzOWJkYWQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJl
IGRpc2FibGVkIHdoZW4gRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVkIG9uPC90aXRs
ZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBv
biBhbmQgb2ZmIGluZGl2aWR1YWxseS4iKTsJCQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBbmltYXRlZEltYWdlc0Rpc2FibGVkKHRydWUpOwor
CQorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEltYWdlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBzaG91bGRCZWNv
bWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJmYWxzZSIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGludGVybmFscy5wbGF5SW1hZ2VBbmltYXRpb24o
dGVzdEltYWdlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJ
bWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgInRydWUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VBbmltYXRpb24odGVzdEltYWdlKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
dGVzdEltYWdlKSIsICJmYWxzZSIsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICB9KTsgCisg
ICAgICAgIH0pOworICAgIH0JCisKKzwvc2NyaXB0PgorCis8aW1nIHNyYz0icmVzb3VyY2VzL2Fu
aW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9n
Z2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YzRhNzk5ODRj
ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2Fi
bGVkLCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZi4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcodGVzdEltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdElt
YWdlMikgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJ
bWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSB0
cnVlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFn
ZS1hbmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxl
LWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2UwMzQwYTY3YmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1w
YWdlLWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdo
ZW4gRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVkIG9uPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdl
IGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0
b2dnbGVkIG9uIGFuZCBvZmYuIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCh0cnVlKTsKKwkKKyAg
ICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RJbWFnZTEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB0ZXN0SW1hZ2UyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZTEiKTsKKyAgICAgICAgc2hvdWxkQmVj
b21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1h
Z2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UyKSIsICJ0cnVlIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy50b2dnbGVQYWdlQW5pbWF0
aW9uKCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0lt
YWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRl
c3RJbWFnZTIpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgIH0pOyAKKyAg
ICAgICAgfSk7CisgICAgfQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9InJlc291cmNlcy9hbmlt
YXRpb24uZ2lmIiBpZD0idGVzdEltYWdlMSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0
ZWQyLmdpZiIgaWQ9InRlc3RJbWFnZTIiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZiBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5OWIxZmY2NTkyZDJkODFmNTc5OGVhNzZiY2UxYWI0YTE3OGMyOTYKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6Y21aP3diaEVIYjZrcmZ3X3xDeGFmOTZjJXw3aUBQVV5F
MHFXQyRxIT1re3xBMzNoZjJhNWQ2MVV9Z2pjZzVwbVcKejdFb0J8ZkN4fUZWYz9LdVZDSW5WKnMk
UFdHbCNITiUhdiZQNTRRXl9kKEg5S3hhZXBqQk9gVmxqUURnfDB8NCRtCkJCbWUqYQoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM0YjE3ZjNlYzliYWJjY2M0
OWRiYWMxOTBlNjNhOWJhNGM5OWNkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMDU1CnpjbVo/
d2JoOXV8UkFDVGRjKlh6KmRLQzwyUlNmcEUzfnUhZEs2TU59TyQ+cWMzP1ZJQ1ZORFhATyQtdDN5
cGU2OQp6ayE+PU9FITxIWiVGIShoRn08UU9UfmFZITQ2emZIPEdNOEJ5SHBaO2ImYDVhbERsUDZy
WWZnUShNcD9ZbURhMUQKekcwaTVVLSE1fmFWYGlVYy1YITBgc2NPWm00VTNvaW0mXnolbldqXl4j
Ozl5ZlNvekZ8QCk/b2spMXhiPG5ebXJsCnpzK15AP3diaShLaSlIT3JsZSU1V2IjcWMxPTl4Q2B2
Mk5VeCl2Xz9CV3hpJEdrJUcxYj1JekpMK2ZTSHg5NT9TYwp6VmNsYHVxVSZeVipPSlA8PHlITUY+
THhDKW8zeWZKK1VtOSRZa1RMYz56VFc4QH1qTT9tVCNaRWFfNiMqYDxIRHgKenV4YTx2WlRuQnxL
Nzk3cm5hbHRHfEF6Iz8wRnNKN1N5K3UyTEskPkdaVURzejFOOzk1YD0leTRkeipIZj1CfkRPCnp5
VXpCT3Axekk9e21vTm1ib08rI3diP2UhPzRMRUkkI0wxLWcqXipxRlBeWjwhT1h6V1oxSWB9PnQ7
e2lWUShaWQp6JSpWPHJYSnFmVmJOajQkUUBkOyZIUUQpdU91VXVaU1QkRmxabml6eS1SNVk+dUow
fFlVQDVPfSU0Jkc7P1ltaHIKejk0MDAjOUJqPFd6T3NUPWJLa0Elb15gZj5WRyRGUHFQYCE4cHk5
KE49Q1lIIVVNQFBxOF5mcS0oJkFDNWx6TkpqCnokM2tXU01eb3FRVyZSOX5qbWB+PW48cj1sRUha
SzJAVGh9SE5Uc2xMUXBMO0xKelBSK0dDNzVabmleUn08KW82UQp6MzVEdihOPXMtNkRqaGcqUU9a
TGc9RVppTTVMTGdrTmVUZlJsYTRWZm57ZSRvcTU1anRyZnY4QWdIIyo+OShvOUoKemFffik9VjhY
ZFRCWWNrNihGWHd3OVU4ZjBaZncqbD5BQzdCcj9MT3ozYE9ULUohISY8LW1nfm5NbE0+cU9sajR0
CnpWe2gtVGwyPkU/WlR3YjBeMnljZDBuXi1NZjRlSSVVPThFWXJZOEk1Q2NDIWcpPS07e3dwTHBe
ZDs3bGpXfURFZAp6b3oxaEZaRl4/VVVidntnWTV0TkclYSlpTWhNR0hzSXhndjY4TT9nNVA+UExI
ZktfRGUlSSU/Qm1JejM/PT9nbjYKemFXIXBQYWlyfiMwR3BQKDYySDN9MmpBOTNHdWotYkIlT3Fx
TC18OEYpSXg8aUFNfGAhJD5IUzU8YFN3TEQoVVJTCnp5N0FIO1VnOytmbmktVj89U2VKYl5vcloh
JWpAUTJhSFBldG0wS1g3TSVjeyVnYj1mOU05K3pVKURzaXh4N31PJAp6Q3lkcChtekQ4fjxiKHBI
bWZnUGdSWCQhVkZCRENzeXhsP3Fme3IjY2khZVR3VDs7TXhwb1BvSEZYNl8tZ3x9NUoKeldKQ3FN
TE5iX3tTT2YlZTFoJjNkeE9UM1V7SEN0TFdVKGM0ciVTTj47fUNrWEBYYChAJEVVdUxyPjwkck1Z
aTUkCktvdWVWWlU9MDlEI0JHdVEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461834</attachid>
            <date>2022-08-23 17:05:28 -0700</date>
            <delta_ts>2022-08-24 10:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220823170527.patch</filename>
            <type>text/plain</type>
            <size>45540</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSAyZmYxZTcxMDQ2MmFiOWFhNmE2ZWM0Y2Y5MGJhZGY5MTIxZTdiNmFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDE5IEF1ZyAyMDIyIDEwOjQxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgaW1hZ2UgYW5pbWF0aW9ucwogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCnJkYXI6Ly85ODg4NzY3NwoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGV4cGVy
aW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIGltYWdlIGFu
aW1hdGlvbnMuIFRoaXMgaW5jbHVkZXMgcmVndWxhciBiaXRtYXAgaW1hZ2VzLCBiYWNrZ3JvdW5k
IGltYWdlcywgU1ZHIGFuaW1hdGlvbnMsIGFuZCBzdXBwb3J0IGZvciB0aGUgPG1vZGVsPiBlbGVt
ZW50LiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGludGVyZmFjZXMgdG8gY29udHJvbCBh
bmltYXRpb25zIGF0IHRoZSBwYWdlIGFuZCBpbmRpdmlkdWFsIGltYWdlIGxldmVsLgoKKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
aW1hdGlvbnMgb24gYW4gZW50aXJlIHBhZ2UsIGFuZCB0b2dnbGluZyBhbiBpbmRpdmlkdWFsIGFu
aW1hdGlvbi4KCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CgpBZGRzIHRoZSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5k
IHNldHMgaXQgb2ZmIGJ5IGRlZmF1bHQuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKFdlYkNvcmU6Om1fYWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldEFuaW1hdGlvbklzUGxh
eWluZyk6CgpFbnN1cmUgdGhhdCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIHRoZSBjbGll
bnQgY2Fubm90IHN0YXJ0IHRoZSBhbmltYXRpb24uCgooV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6cGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CihXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CgpOZXcgbWV0aG9kcyB0byBhbGxvdyB3ZWJr
aXQgdG8gY29udHJvbCBtb2RlbCBhbmltYXRpb25zIHdoZW4gdGhlIHBhZ2Utd2lkZSBhbmltYXRp
b25zIGFyZSBvZmYuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CgpVcGRh
dGVzIHRoZSBzZXR0aW5ncyB3aGVuIGFuIGltYWdlIGlzIHJlbmRlcmVkLCBpbiBjYXNlIGl0IGhh
ZCBub3QgeWV0IGJlZW4gcmVuZGVyZWQgd2hlbiBwYWdlLXdpZGUgYW5pbWF0aW9ucyBhcmUgdG9n
Z2xlZC4KCihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwbGF5QW5pbWF0aW9uKToKKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmlzQW5pbWF0aW5nKToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5p
bWF0ZWRJbWFnZSk6CgpNZXRob2RzIHRvIGNvbnRyb2wgaW1hZ2UgYW5pbWF0aW9ucyBhbmQgY2hl
Y2sgdGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwOgooV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd0ltYWdlKToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3MgLT4gdXBkYXRlRnJv
bURvY3VtZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFn
ZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpjb250YWluc0FuaW1hdGVk
SW1hZ2VzKToKKFdlYkNvcmU6OlBhZ2U6OmlzQWxsQW5pbWF0aW9uUGF1c2VkKToKCk1ldGhvZHMg
dG8gY29udHJvbCBwYWdlLXdpZGUgYW5pbWF0aW9ucy4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21Eb2N1bWVudCk6CgpDaGFuZ2UgdXBk
YXRlRnJvbVNldHRpbmdzIHRvIHVwZGF0ZUZyb21Eb2N1bWVudCBiZWNhdXNlIGl0IG5lZWRzIHRv
IGNhbGwgYSBtZXRob2Qgb24gcGFnZS4KCihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CihX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdl
RnJhbWVBdmFpbGFibGVBdEluZGV4KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwbGF5QW5pbWF0
aW9uKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbik6CihXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcik6CihXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6dXBkYXRlRnJvbVNldHRpbmdzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgoKTmV3IG1ldGhvZHMgdG8gY29udHJvbCBhIGJpdG1h
cCBpbWFnZSdzIGFuaW1hdGlvbnMsIGFzIHdlbGwgYXMgY2hlY2tzIGluIGV4aXN0aW5nIG1ldGhv
ZHMgdG8gZW5zdXJlIHRoYXQgYW4gaW1hZ2UgZG9lcyBub3Qgc3RhcnQgd2hlbiB0aGUgc2V0dGlu
ZyBpcyBlbmFibGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcg
Y29uc3QpOiBEZWxldGVkLgoKVXBkYXRlcyB0byBpc0FuaW1hdGluZyB0byBleHBvcnQgaXQgZnJv
bSB3ZWJjb3JlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgoKQ2hhbmdlIHVwZGF0ZUZyb21TZXR0aW5ncyAtPiB1cGRhdGVGcm9tRG9jdW1lbnQu
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CgpDaGFuZ2UgdXBkYXRlRnJvbVNldHRpbmdzIC0+
IHVwZGF0ZUZyb21Eb2N1bWVudC4KCiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHA6CihXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0
aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdF
bGVtZW50OjpTVkdFbGVtZW50KToKKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzQW5pbWF0ZWQgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6cHJvZ3Jlc3MpOgooV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBsYXlBbmltYXRpb24pOgoo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6aXNBbmltYXRlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CgpNZXRob2RzIGFu
ZCBjaGVja3MgdG8gcHJldmVudCBTVkcgYW5pbWF0aW9ucyBmcm9tIHN0YXJ0aW5nIHdoZW4gdGhl
IHNldHRpbmcgaXMgZW5hYmxlZC4KCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJD
b3JlOjpJbnRlcm5hbHM6OnBsYXlJbWFnZUFuaW1hdGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhdXNlSW1hZ2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVQYWdlQW5p
bWF0aW9uKToKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcDoKKFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKToKCk5ldyBpbnRlcm5h
bCB0ZXN0aW5nIG1ldGhvZHMgdG8gdmVyaWZ5IHRoZSBzZXR0aW5nIGlzIG9uICYgaW1hZ2VzIGFy
ZSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAgICAgICAgICAgfCAgMTIgKysrCiAuLi4vbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcCAgICAgICAgfCAgMjAgKysrKysKIC4uLi9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oICB8ICAgNiArKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCAgICAgIHwgIDQ0ICsrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oICAgICAgICB8ICAgOCArKwogLi4uL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwICAgICAgICAgICAgICAgICAgfCAgODMgKysrKysrKysrKysrKysrKysrCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKIC4uLi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCB8ICAzNyArKysrKystLQogLi4u
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgIHwgIDEzICsrLQogLi4u
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgICAgICAgIHwgICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgfCAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICB8ICAgNCArCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgICAgICAgICAgICAgfCAgIDUgKysKIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCAgfCAgMjIgKysrKysKIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCB8ICAgMyArCiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMjAgKysrKysKIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgNSArKwogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsKIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwICAgICAgICB8ICAgMSArCiAuLi4vZGlzYWJsZS1hbmlt
YXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0ICAgfCAgMTEgKysrCiAuLi4vbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgICAgICAgfCAgMjcgKysrKysrCiAuLi5vbnMtcGxheS1p
bmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAuLi4tYW5pbWF0aW9u
cy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAgMjggKysrKysrCiAuLi5hdGlvbnMt
dG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAuLi5ibGUtYW5p
bWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwgfCAgMzAgKysrKysrKwogLi4uL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmIHwgQmluIDAgLT4gOTAxIGJ5
dGVzCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYgfCBCaW4g
MCAtPiA2NzUzMSBieXRlcwogMzEgZmlsZXMgY2hhbmdlZCwgNDEzIGluc2VydGlvbnMoKyksIDEy
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy1lbmFibGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRv
Z2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5n
aWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGUwODg5ZmY5ZDA4OC4uNGVjMjUz
NGQ2YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtNjUsNiArNjUsMTggQEAg
QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZDoKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAg
ICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIAorQW5pbWF0ZWRJbWFnZXNE
aXNhYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNvbnRyb2wgYW5p
bWF0ZWQgaW1hZ2VzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJEaXNhYmxlIGFuaW1h
dGlvbnMgYW5kIHZpZXcgYW5pbWF0ZWQgaW1hZ2VzIGFzIHN0YXRpYy4iCisgIGRlZmF1bHRWYWx1
ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoK
KyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNl
CiAKIEFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkOgogICB0eXBlOiBi
b29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYTFmNGVkMDM1ODJhLi5kZmI3MWFkZGExNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlICJSZW5k
ZXJSZXBsYWNlZC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTcwLDYgKzcxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEhUTUxN
b2RlbEVsZW1lbnQpOwogSFRNTE1vZGVsRWxlbWVudDo6SFRNTE1vZGVsRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkK
KyAgICAsIG1fc2hvdWxkRGlzYWJsZUltYWdlQW5pbWF0aW9uKGRvY3VtZW50LnNldHRpbmdzKCku
YW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpKQogICAgICwgbV9yZWFkeVByb21pc2UgeyBtYWtlVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4oKnRoaXMsICZIVE1MTW9kZWxFbGVtZW50OjpyZWFkeVByb21p
c2VSZXNvbHZlKSB9CiB7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7
CkBAIC01MDEsNiArNTAzLDEyIEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0QW5pbWF0aW9u
SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nLCBET01Qcm9taXNlRGVmZXJyZWQ8CiAgICAgICAgIHBy
b21pc2UucmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKG1f
c2hvdWxkRGlzYWJsZUltYWdlQW5pbWF0aW9uICYmICFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFu
aW1hdGlvbikgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICBtX21vZGVsUGxh
eWVyLT5zZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtdIChib29sKSB7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgbV9tb2RlbFBsYXllci0+c2V0QW5pbWF0aW9uSXNQbGF5
aW5nKGlzUGxheWluZywgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzdWNjZXNz
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCkBAIC01MjAsNiArNTI4LDE4IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6cGF1c2VBbmltYXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKICAgICBzZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXlBbmltYXRpb25XaGVu
RGlzYWJsZWQoKQoreworICAgIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uID0gdHJ1
ZTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNhYmxl
ZCgpCit7CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsKKyAg
ICBtX21vZGVsUGxheWVyLT5zZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtdIChib29sKSB7
IH0pOworfQorCisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aXNMb29waW5nQW5pbWF0aW9uKElz
TG9vcGluZ0FuaW1hdGlvblByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghbV9tb2RlbFBs
YXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggYzgwNTBlM2Y1YmRiLi4xMTM0Y2MzZjY0YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhbmltYXRp
b25DdXJyZW50VGltZShDdXJyZW50VGltZVByb21pc2UmJik7CiAgICAgdm9pZCBzZXRBbmltYXRp
b25DdXJyZW50VGltZShkb3VibGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAorICAg
IHZvaWQgcGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCgpOworICAgIHZvaWQgcGF1c2VBbmltYXRp
b25XaGVuRGlzYWJsZWQoKTsKKwogICAgIHVzaW5nIEhhc0F1ZGlvUHJvbWlzZSA9IERPTVByb21p
c2VEZWZlcnJlZDxJRExCb29sZWFuPjsKICAgICB2b2lkIGhhc0F1ZGlvKEhhc0F1ZGlvUHJvbWlz
ZSYmKTsKICAgICB1c2luZyBJc011dGVkUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExC
b29sZWFuPjsKQEAgLTE1NCw2ICsxNTcsOSBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0U2l6ZSBj
b250ZW50U2l6ZSgpIGNvbnN0OwogCisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVJbWFnZUFuaW1h
dGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlv
biB7IGZhbHNlIH07CisgICAgCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
aW5kZXggYWI2NzM2ODMwOGI5Li5iYTI5MDk5MDhhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdl
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtNzY2LDYgKzc2NywzNiBAQCBi
b29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c09yaWVudGF0aW9uT3ZlcnJpZGUoKSBjb25zdAog
ICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPnNvdXJjZVVSTCgpLnByb3RvY29sSXNEYXRhKCkg
fHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1NhbWVPcmlnaW4oKTsKIH0KIAorQml0bWFwSW1hZ2UqIEhU
TUxJbWFnZUVsZW1lbnQ6OmNhY2hlZEJpdG1hcEltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0
byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICByZXR1cm4gZHlu
YW1pY0Rvd25jYXN0PEJpdG1hcEltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGxheUFuaW1hdGlvbigp
Cit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkgeworICAgICAg
ICBpbWFnZS0+dXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBpbWFnZS0+
cGxheUFuaW1hdGlvbigpOworICAgIH0KK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXVz
ZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2Uo
KSkgeworICAgICAgICBpbWFnZS0+dXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOworICAg
ICAgICBpbWFnZS0+cGF1c2VBbmltYXRpb24oKTsKKyAgICB9Cit9CisKK2Jvb2wgSFRNTEltYWdl
RWxlbWVudDo6aXNBbmltYXRpbmcoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNh
Y2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+aXNBbmltYXRpbmcoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRBdHRhY2htZW50RWxlbWVudChSZWY8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PiYmIGF0dGFjaG1lbnQpCkBAIC05NTcsNCArOTg4LDE3IEBAIFJl
ZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRl
c0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAgcmV0dXJuIGNsb25lOwogfQogCitib29sIEhUTUxJ
bWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGNh
Y2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICBpZiAoY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmlzQW5pbWF0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGlmIChhdXRvKiBiaXRtYXBJbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpCisg
ICAgICAgIHJldHVybiAhYml0bWFwSW1hZ2UtPmlzQW5pbWF0aW9uRmluaXNoZWQoKTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aAppbmRleCA2ZDU1ZTE4N2NiMjQuLjA0MTAzMWY5MzJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgRGVmZXJy
ZWRQcm9taXNlOwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwpAQCAtMTU0LDYgKzE1NSwx
MSBAQCBwdWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsK
IAogICAgIGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0OworICAgIAorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheUFuaW1hdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGF1c2VBbmltYXRpb24oKTsKKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0FuaW1hdGVkSW1hZ2UoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxJ
bWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVt
ZW50KiA9IG51bGxwdHIpOwpAQCAtMjM2LDYgKzI0Miw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBTdHJpbmcgbV9wZW5kaW5nQ2xvbmVkQXR0YWNobWVu
dElEOwogI2VuZGlmCisgICAgCisgICAgQml0bWFwSW1hZ2UqIGNhY2hlZEJpdG1hcEltYWdlKCkg
Y29uc3Q7CiAKICAgICBmcmllbmQgY2xhc3MgSFRNTFBpY3R1cmVFbGVtZW50OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggOWJiY2M1NWU1MzI5Li42Mjg1ZDgzYmE3ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50
LCBDYQogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9Ci0gICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0
ZUZyb21TZXR0aW5ncyhkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICAgICAgZG93bmNhc3Q8Qml0
bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KTsKICAgICB9CiAK
ICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zID0geyBvcCwgYmxlbmRNb2RlLCBvcmll
bnRhdGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZDYzMzc2MGU5MWI0Li40NDQzNjllZmFm
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUg
IkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5j
bHVkZSAiQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtMTI5LDYgKzEzMCw3IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VVc2FnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVu
dEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgorI2luY2x1ZGUgIlNWR1NNSUxF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlw
dERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgpAQCAtMTUyLDYg
KzE1NCw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJlY29n
bml0aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1
ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNs
dWRlICJVc2VySW5wdXRCcmlkZ2UuaCIKQEAgLTIwMSw2ICsyMDQsMTAgQEAKICNpbmNsdWRlICJO
YXZpZ2F0b3JNZWRpYVNlc3Npb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCisjaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+JiBhbGxQYWdlcygpCkBAIC00MDI1LDQg
KzQwMzIsODAgQEAgdm9pZCBQYWdlOjpmb3JjZVJlcGFpbnRBbGxGcmFtZXMoKQogICAgIH0KIH0K
IAordm9pZCBQYWdlOjp0b2dnbGVBbGxBbmltYXRpb25zKCkKK3sKKyAgICBtX2hhc1VucGF1c2Vk
QW5pbWF0aW9ucyA9ICFtX2hhc1VucGF1c2VkQW5pbWF0aW9uczsKKyAgICBmb3JFYWNoRG9jdW1l
bnQoW3RoaXNdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBh
dXNlZEFuaW1hdGlvbnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cGxheUFu
aW1hdGlvbigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW1h
Z2VFbGVtZW50LT5wYXVzZUFuaW1hdGlvbigpOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRv
KiBzdmdTbWlsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oZWxlbWVu
dCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBhdXNlZEFuaW1hdGlvbnMpCisgICAg
ICAgICAgICAgICAgICAgIHN2Z1NtaWxFbGVtZW50LT5wbGF5QW5pbWF0aW9uKCk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdmdTbWlsRWxlbWVudC0+cGF1c2VB
bmltYXRpb24oKTsKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoYXV0byogaHRtbE1vZGVsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MTW9kZWxF
bGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChtX2hhc1VucGF1c2VkQW5p
bWF0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgaHRtbE1vZGVsRWxlbWVudC0+cGxheUFuaW1h
dGlvbldoZW5EaXNhYmxlZCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgaHRtbE1vZGVsRWxlbWVudC0+cGF1c2VBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKyNl
bmRpZgorICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVu
ZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNCYWNr
Z3JvdW5kSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkQmFj
a2dyb3VuZEltYWdlID0gcmVuZGVyZXItPnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLmltYWdl
KCktPmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBi
YWNrZ3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UtPmltYWdlKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1h
cEltYWdlPigqYmFja2dyb3VuZEltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aXRtYXBJbWFnZS51cGRhdGVGcm9tRG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2hhc1VucGF1c2VkQW5pbWF0aW9ucykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYml0bWFwSW1hZ2UucGxheUFuaW1hdGlvbigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Yml0bWFwSW1hZ2UucGF1c2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0pOworfQorCitib29sIFBhZ2U6OmNvbnRhaW5zQW5pbWF0ZWRJbWFn
ZXMoKQoreworICAgIGJvb2wgZm91bmRBbmltYXRlZEltYWdlID0gZmFsc2U7CisgICAgZm9yRWFj
aERvY3VtZW50KFsmZm91bmRBbmltYXRlZEltYWdlXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGRv
Y3VtZW50LnJvb3ROb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW1hZ2VFbGVtZW50
ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAg
ICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBzdmdTbWlsRWxlbWVudCA9
IGR5bmFtaWNEb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAg
ICAgICBmb3VuZEFuaW1hdGVkSW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgICAgICAgICAgaWYg
KGF1dG8qIGh0bWxNb2RlbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVu
dD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1hZ2UgPSB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFnZSA9IHJlbmRl
cmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gY2Fj
aGVkQmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJhY2tncm91bmRJbWFnZS0+aXNBbmltYXRlZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVy
biBmb3VuZEFuaW1hdGVkSW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggZmNiMWI2NTEwMzM4Li4zMGE5MWIzMjI5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC05NzYsNiArOTc2LDEwIEBAIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2Rl
Rm9yRXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb247IH0KIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxsRnJhbWVzKCk7CisgICAgCisg
ICAgYm9vbCBhcmVBbGxBbmltYXRpb25zUGF1c2VkKCkgeyByZXR1cm4gIW1faGFzVW5wYXVzZWRB
bmltYXRpb25zOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBbGxBbmltYXRpb25z
KCk7CisgICAgYm9vbCBjb250YWluc0FuaW1hdGVkSW1hZ2VzKCk7CiAKICNpZiBFTkFCTEUoSU1B
R0VfQU5BTFlTSVMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhbmFseXplSW1hZ2VzRm9yRmlu
ZEluUGFnZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spOwpAQCAtMTM0MSw2ICsxMzQ1LDgg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4
dGVuc2lvbiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24geyBDb250ZW50
U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uOjpOb25lIH07CisgICAgCisgICAgYm9vbCBt
X2hhc1VucGF1c2VkQW5pbWF0aW9ucyB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgUGFnZUdyb3Vw
JiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKaW5kZXggYTg3YWM2OTBiMmVjLi5kMzc0NGNkNWY4ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5o
IgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpA
QCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpAQCAtNjUsMTEgKzY3LDEzIEBAIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQogICAg
IG1fc291cmNlLT5zdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1h
Z2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIEJp
dG1hcEltYWdlOjp1cGRhdGVGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9IHNldHRpbmdzLmltYWdlU3Vic2FtcGxpbmdFbmFi
bGVkKCk7Ci0gICAgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nID0gc2V0dGluZ3Mu
YW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKCk7Ci0gICAgbV9zaG93RGVidWdCYWNr
Z3JvdW5kID0gc2V0dGluZ3Muc2hvd0RlYnVnQm9yZGVycygpOworICAgIG1fYWxsb3dTdWJzYW1w
bGluZyA9IGRvY3VtZW50LnNldHRpbmdzKCkuaW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQoKTsKKyAg
ICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmcgPSBkb2N1bWVudC5zZXR0aW5ncygp
LmFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpOworICAgIG1fc2hvd0RlYnVnQmFj
a2dyb3VuZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc2hvd0RlYnVnQm9yZGVycygpOworICAgIG1f
ZGlzYWJsZUltYWdlQW5pbWF0aW9uID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdl
c0Rpc2FibGVkKCk7CisgICAgbV9pc1BhZ2VBbmltYXRpb25FbmFibGVkID0gIWRvY3VtZW50LnBh
Z2UoKS0+YXJlQWxsQW5pbWF0aW9uc1BhdXNlZCgpOwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQpAQCAtMjQ2LDcgKzI1MCw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAt
ICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2lu
ZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U3Vic2FtcGxpbmdM
ZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBzY2FsZUZhY3RvckZvckRyYXdp
bmcuaGVpZ2h0KCkpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKLSAgICBpZiAo
b3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewor
ICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzICYmICFtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbikgewogICAgICAgICBBU1NFUlQoIWNhbkFu
aW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUgfHwgbV9hbmltYXRpb25G
aW5pc2hlZCk7CiAKQEAgLTM3NCw3ICszNzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAK
IGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUoKSBjb25zdAogewotICAgIHJldHVybiBy
ZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVy
KCk7CisgICAgcmV0dXJuIHJlcGV0aXRpb25Db3VudCgpICYmICFtX2FuaW1hdGlvbkZpbmlzaGVk
ICYmIGltYWdlT2JzZXJ2ZXIoKSAmJiAoIW1fZGlzYWJsZUltYWdlQW5pbWF0aW9uIHx8IG1fc2hv
dWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2Fu
QW5pbWF0ZSgpIGNvbnN0CkBAIC02NzYsNCArNjgwLDI1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmR1
bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgbV9zb3VyY2UtPmR1bXAodHMpOwogfQogCit2
b2lkIEJpdG1hcEltYWdlOjpwbGF5QW5pbWF0aW9uKCkKK3sKKyAgICBpZiAobV9zaG91bGRBbGxv
d0luZGl2aWR1YWxBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBtX3Nob3VsZEFsbG93
SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7CisgICAgaW50ZXJuYWxTdGFydEFuaW1hdGlvbigp
OworfQorCit2b2lkIEJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKCFt
X3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIHN0
b3BBbmltYXRpb24oKTsKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IGZh
bHNlOworfQorCit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVEb2N1bWVudE9uUmVuZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9
ICFkb2N1bWVudC5wYWdlKCktPmFyZUFsbEFuaW1hdGlvbnNQYXVzZWQoKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggZDNm
NGZlYmQwODA0Li5iZDE2NDZhNjY4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNDksNiArNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBI
QklUTUFQX18gKkhCSVRNQVA7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNldHRpbmdz
OworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2UgewpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIH5CaXRtYXBJbWFnZSgpOwogCi0gICAgdm9pZCB1cGRhdGVGcm9tU2V0dGluZ3Mo
Y29uc3QgU2V0dGluZ3MmKTsKKyAgICB2b2lkIHVwZGF0ZUZyb21Eb2N1bWVudChjb25zdCBEb2N1
bWVudCYpOwogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTU4LDYgKzE1OSwxMiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHBsYXlBbmltYXRpb24oKTsKKyAgICB2
b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgYWxsb3dzSW5kaXZpZHVhbEFuaW1hdGlvbigpOworICAgIGJvb2wgaXNBbmlt
YXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRmluaXNoZWQ7IH07Cisg
ICAgdm9pZCB1cGRhdGVEb2N1bWVudE9uUmVuZGVyKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmKTsKQEAgLTE5
NSw3ICsyMDIsNiBAQCBwcml2YXRlOgogICAgIFN0YXJ0QW5pbWF0aW9uU3RhdHVzIGludGVybmFs
U3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lkIGFkdmFuY2VBbmltYXRpb24oKTsKICAgICB2b2lk
IGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpOwotICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25z
dCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBsb29rIHVudXN1YWwgdGhhdCB0aGVyZSBpcyBubyBz
dGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJsaWMgQVBJLiBUaGlzIGlzIGJlY2F1c2UKICAgICAv
LyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5LiBBbmltYXRpb24gYmVnaW5zIHdo
ZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGltYWdlLiBJdCB3aWxsCkBAIC0yNDcsNiArMjUzLDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0Rl
Y29kaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvd0RlYnVnQmFja2dyb3VuZCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9v
bCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2lzUGFnZUFuaW1hdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2NsZWFyRGVj
b2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApp
bmRleCBlYzAyNzA1NDg3ZTIuLjAwMzA0ODJjYzI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC05NzIsNyArOTcyLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWlu
YW5jZU1hc2soYmdMYXllci5tYXNrTW9kZSgpID09IE1hc2tNb2RlOjpMdW1pbmFuY2UpOwogCiAg
ICAgICAgICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KGltYWdlKSkKLSAgICAgICAgICAgICAgICBk
b3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3Mo
KSk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwogCiAgICAgICAgICAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBvcHRpb25zID0gewogICAgICAgICAgICAgICAgIG9wID09IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGVGb3JQYWludGluZygpIDogb3AsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4NzM1NGEzNGQ3ZTMuLmE0
MGRmOWI0MDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC02ODQsNyArNjg0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9S
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QKICNlbmRpZgogCiAgICAg
aWYgKGlzPEJpdG1hcEltYWdlPihpbWFnZSkpCi0gICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdl
PigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygpKTsKKyAgICAgICAgZG93bmNh
c3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwog
CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyA9IHsKICAgICAgICAgaW1hZ2VFbGVt
ZW50ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlT3BlcmF0
b3I6OlNvdXJjZU92ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJh
c2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uNzZlMmM4NTZjMzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBAIC0x
NTAsNiArMTUxLDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9u
KCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkuYW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpICYm
ICFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKFJlZlB0ciBwcm90ZWN0ZWRBbmltYXRvciA9IHRoaXMtPmFuaW1hdG9yKCkpCiAgICAg
ICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFydCgqdGFyZ2V0RWxlbWVudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAppbmRleCA5YjAyMjY3MTU1NzQuLjViNjBmMWI1NDQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTA4Niw0ICsxMDg2LDkgQEAgdm9pZCBTVkdFbGVt
ZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKCkKICAgICB9CiB9CiAKK2Jvb2wgU1ZHRWxlbWVudDo6
aXNBbmltYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU01JTEVsZW1lbnQoKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNTI2NjQwMTVkNjg0Li5jNDYxODZjZjlkYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGVzZSBhcmUgbmVlZGVkIGZvciB0aGUgUmVuZGVyVHJlZSwgYW5pbWF0aW9uIGFuZCBE
T00uCiAgICAgQXRvbVN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiBBdG9tU3RyaW5n
IHsgbV9jbGFzc05hbWUtPmN1cnJlbnRWYWx1ZSgpIH07IH0KICAgICBTVkdBbmltYXRlZFN0cmlu
ZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsYXNzTmFtZTsgfQorICAgIAorICAg
IGJvb2wgaXNBbmltYXRlZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRl
U1ZHRWxlbWVudCk7CkBAIC0xODUsNiArMTg3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBk
YXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNW
R0VsZW1lbnQmKTsKIAogICAgIHZvaWQgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92
ZXJyaWRlOworICAgIGJvb2wgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24geyBmYWxz
ZSB9OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRhcmdldCgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCAx
ODkyNDI0OGM5MTQuLjI0M2Y1NjAyMjMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTEwOTksNiArMTA5OSwxMSBAQCBib29sIFNW
R1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBlbGFwc2VkLCBTVkdTTUlMRWxlbWVudCYg
Zmlyc3RBbmltYXRpb24sCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAo
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSAmJiAhbV9zaG91
bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pIHsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3Rh
cmdldEVsZW1lbnQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgbV9wcmV2
aW91c0ludGVydmFsQmVnaW4gPSBtX2ludGVydmFsQmVnaW47CiAKICAgICBpZiAobV9pc1dhaXRp
bmdGb3JGaXJzdEludGVydmFsKSB7CkBAIC0xMjMzLDQgKzEyMzgsMjEgQEAgdm9pZCBTVkdTTUlM
RWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU01JTEV2ZW50U2VuZGVyKiBldmVudFNlbmRl
cikKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAordm9pZCBTVkdTTUlM
RWxlbWVudDo6cGxheUFuaW1hdGlvbigpCit7CisgICAgaWYgKG1fc2hvdWxkQWxsb3dJbmRpdmlk
dWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1
YWxBbmltYXRpb24gPSB0cnVlOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgU1ZH
U01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hvdWxkQWxsb3dJ
bmRpdmlkdWFsQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0lu
ZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsKKyAgICBzdG9wQW5pbWF0aW9uKG1fdGFyZ2V0RWxl
bWVudCk7Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5oCmluZGV4IDRmZTdhZWEyMDE4ZS4uZTVlMzU5NDgwZTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCkBAIC0xMDEsMTEgKzEwMSwx
NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKSA9IDA7CisgICAgdm9p
ZCBwbGF5QW5pbWF0aW9uKCk7CisgICAgdm9pZCBwYXVzZUFuaW1hdGlvbigpOwogCiAgICAgdm9p
ZCBjb25uZWN0Q29uZGl0aW9ucygpOwogICAgIGJvb2wgaGFzQ29uZGl0aW9uc0Nvbm5lY3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9uc0Nvbm5lY3RlZDsgfQogICAgIAogICAgIHZvaWQg
ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU01JTEV2ZW50U2VuZGVyKik7CisgICAgYm9vbCBpc0FuaW1h
dGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRC
ZWdpblRpbWUoU01JTFRpbWUgZXZlbnRUaW1lLCBTTUlMVGltZSBlbmRUaW1lLCBTTUlMVGltZVdp
dGhPcmlnaW46Ok9yaWdpbiA9IFNNSUxUaW1lV2l0aE9yaWdpbjo6UGFyc2VyT3JpZ2luKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDFjZjhlMTlhNTY5NS4u
NjBiMmUwYWJhMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
QEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFNWR0ltYWdlOjpzY2hlZHVsZVN0YXJ0QW5pbWF0aW9u
KCkKIHZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKIHsKICAgICBhdXRvIHJvb3RFbGVt
ZW50ID0gdGhpcy0+cm9vdEVsZW1lbnQoKTsKLSAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290
RWxlbWVudC0+YW5pbWF0aW9uc1BhdXNlZCgpKQorICAgIGlmICghcm9vdEVsZW1lbnQgfHwgIXJv
b3RFbGVtZW50LT5hbmltYXRpb25zUGF1c2VkKCkgfHwgIW1fcGFnZSB8fCBtX3BhZ2UtPnNldHRp
bmdzKCkuYW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgcm9v
dEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7CiAgICAgcm9vdEVsZW1lbnQtPnNldEN1cnJl
bnRUaW1lKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
aW5kZXggYjZiYWJlMTgyZTNmLi5iYTRlMmRjMGE2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtOTgsNCArOTgsNiBAQCBlbnVtIFVzZXJJbnRl
cmZhY2VEaXJlY3Rpb25Qb2xpY3kgeyAiQ29udGVudCIsICJTeXN0ZW0iIH07CiAgICAgdW5kZWZp
bmVkIHNldEFsbG93ZWRNZWRpYVZpZGVvQ29kZWNJRHMoRE9NU3RyaW5nPyB0eXBlcyk7CiAgICAg
dW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYUF1ZGlvQ29kZWNJRHMoRE9NU3RyaW5nPyB0eXBlcyk7
CiAgICAgdW5kZWZpbmVkIHNldEFsbG93ZWRNZWRpYUNhcHRpb25Gb3JtYXRUeXBlcyhET01TdHJp
bmc/IHR5cGVzKTsKKyAgICAKKyAgICB1bmRlZmluZWQgc2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxl
ZChib29sZWFuIGVuYWJsZWQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBkYzY0MmM1NWJjOWQuLmI2ODdhOGNlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2LDI2IEBAIGJvb2wgSW50ZXJuYWxzOjppc0ltYWdl
QW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYm
IChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsKIH0K
IAordm9pZCBJbnRlcm5hbHM6OnBsYXlJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGVsZW1lbnQucGxheUFuaW1hdGlvbigpOworfQorCit2b2lkIEludGVy
bmFsczo6cGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQorewor
ICAgIGVsZW1lbnQucGF1c2VBbmltYXRpb24oKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnRvZ2ds
ZVBhZ2VBbmltYXRpb24oKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAg
cGFnZS0+dG9nZ2xlQWxsQW5pbWF0aW9ucygpOworfQorCiB1bnNpZ25lZCBJbnRlcm5hbHM6Omlt
YWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGVsZW1lbnQucGVuZGluZ0RlY29kZVByb21pc2VzQ291
bnRGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1MTVkYWIz
N2FhY2YuLmU0ZjM0MjEyZDY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0x
MTcsNiArMTE3LDggQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU291cmNlQnVmZmVyOwog
Y2xhc3MgU3RyaW5nQ2FsbGJhY2s7CiBjbGFzcyBTdHlsZVNoZWV0OworY2xhc3MgU1ZHRWxlbWVu
dDsKK2NsYXNzIFNWR1NNSUxFbGVtZW50OwogY2xhc3MgVGV4dEl0ZXJhdG9yOwogY2xhc3MgVGV4
dFRyYWNrOwogY2xhc3MgVGltZVJhbmdlczsKQEAgLTIxOSw2ICsyMjEsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50Jiwg
ZmxvYXQgZHVyYXRpb24pOwogICAgIHZvaWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VF
bGVtZW50Jik7CiAgICAgYm9vbCBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsK
KyAgICB2b2lkIHBsYXlJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9p
ZCBwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHRvZ2ds
ZVBhZ2VBbmltYXRpb24oKTsKICAgICB1bnNpZ25lZCBpbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNl
c0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRDbGVhckRl
Y29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jiwg
Ym9vbCBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBpbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVs
ZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhMmFmMjUyYjIw
ZmQuLjA5YTNhYjJhOTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
NTU0LDYgKzU1NCw5IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBG
ZXRjaE9iamVjdDsKICAgICB1bmRlZmluZWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24o
SFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHVyYXRpb24pOwog
ICAgIHVuZGVmaW5lZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVu
dCk7CiAgICAgYm9vbGVhbiBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVu
dCk7CisgICAgdW5kZWZpbmVkIHBsYXlJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVs
ZW1lbnQpOworICAgIHVuZGVmaW5lZCBwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1l
bnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKICAgICB1
bnNpZ25lZCBsb25nIGltYWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgdW5kZWZpbmVkIHNldENsZWFyRGVjb2RlckFm
dGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwg
Ym9vbGVhbiBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBsb25nIGltYWdlRGVjb2RlQ291bnQoSFRN
TEltYWdlRWxlbWVudCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5j
cHAKaW5kZXggNTFmNjVmMzA5ZWIzLi4yZGZhODlkY2E4NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYg
VGVzdE9wdGlvbnM6OmRlZmF1bHRzKCkKICAgICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQiLCBmYWxzZSB9LAogI2VuZGlmCiAgICAgICAgICAgICB7ICJBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJBbmltYXRlZEltYWdlc0Rp
c2FibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0
YVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyIsIHRydWUgfSwKICAgICAgICAgICAgIHsgIkFsbG93c0lubGluZU1lZGlhUGxheWJh
Y2siLCB0cnVlIH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
aXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNTYyNjdjMmFlNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1h
dGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyB0
aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0ZWQgaW1h
Z2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSB0cnVl
CitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSkgYmVjYW1lIGZhbHNl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5p
bWF0aW9ucy1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5hZWNlYjhmYWFjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsMjcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IHRoYXQgYW5p
bWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiAiRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVy
bmVkIG9uPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFu
aW1hdGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi4iKTsJCQorICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0
ZXN0SW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgICAg
IHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2Up
IiwgInRydWUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0QW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29t
ZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgImZhbHNlIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFuaW1h
dGVkSW1hZ2VzRGlzYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgfSk7IAorICAgICAgICB9KTsKKyAgICB9CQorCis8L3NjcmlwdD4KKwor
PGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXkt
aW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZDc4ZTE0MDBhODQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhh
dCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBv
biBhbmQgb2ZmIGluZGl2aWR1YWxseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgZmFsc2UK
K1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgdHJ1ZQor
UEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1w
bGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTNmOTZmOWRhZGNiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDI4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQW5pbWF0ZWRJbWFnZXNE
aXNhYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgdGhhdCBhbmlt
YXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIERpc2FibGUgQW5pbWF0ZWQgSW1hZ2VzIGlzIHR1cm5l
ZCBvbjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJl
IHRvZ2dsZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHkuIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKwkKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRl
c3RJbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UiKTsKKyAgICAgICAg
c2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSki
LCAiZmFsc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMucGxheUltYWdl
QW5pbWF0aW9uKHRlc3RJbWFnZSk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50
ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJ0cnVlIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGludGVybmFscy5wYXVzZUltYWdlQW5pbWF0aW9uKHRlc3RJbWFn
ZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdl
QW5pbWF0aW5nKHRlc3RJbWFnZSkiLCAiZmFsc2UiLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAg
ICAgfSk7IAorICAgICAgICB9KTsKKyAgICB9CQorCis8L3NjcmlwdD4KKworPGltZyBzcmM9InJl
c291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlv
bnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NWM0YTc5OTg0Y2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlv
biBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0b2dnbGVkIG9u
IGFuZCBvZmYuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFs
cy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyh0ZXN0SW1hZ2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2Uy
KSBiZWNhbWUgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2Ux
KSB8fCBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UyKSBiZWNhbWUgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
dG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMzODE4MjJjZjFlMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IHRoYXQgYW5pbWF0aW9ucyBh
cmUgZGlzYWJsZWQgd2hlbiBEaXNhYmxlIEFuaW1hdGVkIEltYWdlcyBpcyB0dXJuZWQgb248L3Rp
dGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0i
dGVzdEltYWdlMSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZiIgaWQ9InRl
c3RJbWFnZTIiIC8+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBw
YWdlIGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuIik7CQkKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKwkKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RJ
bWFnZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB0
ZXN0SW1hZ2UyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZTIiKTsKKyAgICAg
ICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFn
ZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24o
KTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyh0ZXN0SW1hZ2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2Uy
KSIsICJ0cnVlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy50b2dn
bGVQYWdlQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImlu
dGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdl
QW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAg
ICAgIH0pOyAKKyAgICAgICAgfSk7CisgICAgfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9h
bmltYXRlZDIuZ2lmIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGVkMi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk5YjFmZjY1OTJkMmQ4MWY1Nzk4ZWE3NmJjZTFhYjRh
MTc4YzI5NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN4
YWY5NmMlfDdpQFBVXkUwcVdDJHEhPWt7fEEzM2hmMmE1ZDYxVX1namNnNXBtVwp6N0VvQnxmQ3h9
RlZjP0t1VkNJblYqcyRQV0dsI0hOJSF2JlA1NFFeX2QoSDlLeGFlcGpCT2BWbGpRRGd8MHw0JG0K
QkJtZSphCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YjBj
NDNmOGY0MjU1YWQ0MGIxNTc2Y2IyMzNmOGUyMzk5OTg4NDIKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDY3NTMxCnpjbWVJM1BpUzM1NnZtJDxPPHc8NHRCQk42cSFDPDF2QH1KKl95PkhpSDtPQHx2
fFl0NkQjPTJLM24zej1ETURYZAp6eFFPN1FMS2p1eSFlVyQpRS1KY0UlcUY7c0xDRGpVVyoydVV4
VWkrKmJZeytzNH5LVVRUPCs/ZWBMWTtKbjBwNikKel9uIUlZSkxlYFp6VnlPVjxGQ3kkVypVRHQr
PmlPIVk7SkNAdGdPdD4mJHJ2eyoyYWJRKSRAKEZpfXROQTgjbXRfCnp1O2EkVWlDQDFzZjRlKHpk
dm5DPmVQIWF6PUBZRyE2VVVEcDhAUzhmS1hQa3VfbndBbkptd2EyJVFnbmgjPSteTwp6dXtBcWZi
YzJpYkpyU2QyS1ZnU340YFRFPlR8Qm4tZTdKM0Y9dW5JI0VAYzklVVAyeV9fK2BJQ3AzdSpoMHlf
U3oKejU8WW9ZbVM1WUpQNiZCRz1wVSYqXnA4JEJpRHlgKWdpaXBXZjZ6YnBLZ3x4OFJ8b2glXyY7
U085aVEtaXdwUnxvCnp8SDF6KTNHWlE0Tl9oQWAtPiE9RjQoaXt+XitXJEpZQEB1fEFARzBqZkFE
ezk+Kng5WHFvYHZaPzdnO2tlITFFQQp6IV90aV9iTC0+VmNEVSNVN3d2eUdNcTdUdTRnPGYwPTxx
dnFAJVoqbjtrTlBOUGh1by1ESEItcjY3cW49RlomKHgKemducVVaKEQ3JUxAWDVuNit2PkotTGRY
TGVpSzExQmtPemVSeGxeeEg5QE1KP15iaCg2fEVKbUVAYG5aZEFOLSVQCnpsOCNTIUtpZk8rO3My
PVdOQnY3MzQmRShTTi1Zc2YhVC1WayFULVZrTiQlbStRRHh7S15lPD1xRTl6Xz5kI34lQQp6X3k0
ZVRWQzIwNj9XUD8lWnR6aE5xYSolVEl9RnwlcXhiMk9jQyFeT1pae3V9aztKNztWQVZePTB8dEs0
P35vXj8KeiopbC1TcEhzcG81Nmtqdit0TFhrNGA/S2NSd1k2bjVjPW0meSl0PWxQZz1EKUs+d2hC
QFBDPmVFYEx9QXtmR1lmCnpPXmB2c2xjV1J1VSN4bU47bUlnSkBEb1Bee3xFbzQrdTxlJjVCK29Q
eThxNjUpVzQrdj0+SmlObSt1eE5ufT1fJAp6aColMnNGWTRjJT4pK1Zpcy1iX01fVyFWUz82WFUh
Q1AoZWlhZjZIUWRwU251e0RkNl9QbHhEeyVYSVBOPXhWcmEKemFgKTkzTm5GWVZSPXRFZ0FvMHQ3
aGRpTzVFZF9NXlN0V2UodSp8NXNFdTllWmZKVU5kUlUrZzhwP35od0UwcVdKCno+SHooTns9eHJn
Y0RWZHUwc2phOHI+dnlvNlctN0UmVV5TanNgXnA/UWlwP2clYXV8fiM4VThvQFBGYHNAUENxZgp6
eE9HJCtgVW1+WFNedFZVbzUkWWtkZ3VLPUVTKEgxVStUb0tOY1ckSyhRKyZ+YzZ9NzEmIVltaCFl
XipjZG1mRkUKeiNIQ0ROKWwwfCY2MkkocyRQQGI2UWI1T19SbCs5XiVrcGQ2KGdgNkNYZTVlT0J8
O3QkYHNkRVNRaDg5WDQkd2Q3CnpBNll2MUtYU3IoOWZ6ZDwmX0FrU0dBTVd3PypSWFlgcSR8ez5S
OytgQE5QTlRKYlk7KFZrITdQXyZAa1I9JTNecwp6WlhII0l7ejNuOCoxd3w4PUNTd00tdVgpWjRA
Ky1leVdYOWV3TGB9WkVfJmM+akpFdVE5ZGBXfHFRfTNaaT5HRSsKeiEpO1Qwemx4RT5yQSVQZU9V
TUhmendDRiY2WitYd0sqeWd8IVkyPlElJk9iYzJfWCs/QiNLcmdMTEx6TT1UNXkrCnpjfkd3byZf
QyFPe0dWb3IlTzRpLWZBRHxHTjsqRV97Y1B7Tmh5U0NoQU40UEZJQyFeUURZWmxfMV4pO0MybWM1
RQp6QyVLMVBOMHAmfSg3JkFadWMpKG0/N2dtYy12N2hXaGh1OThyPGQlbz1tc0NuI09SM3MpZWJg
cyNeYDZkV099STsKekV9cV9aSlZwfGlHSiNidUFyRENXdmZtKzM9eDBqLUolM0lLcEZBd2Z1V2Re
d2dnbF47Q3xaPldjfGhvJkpNfktDCnohOThpIT5IeihOez14cmdjRFZkdUxIWkI8cVolZklmK3RB
X19gZ3s3RWB9JGd7Sj44ZjRnNFNjcEtnYm5Cc30hKgp6ZkF0UlBVKCRje3xFUjt1Y01Gb3UhPyN2
TUVRUl9QXj41RGdaJjgwc2Y3QWNOKCUxMUBePHd5a3JTNzNPVnN0S2kKeiZibUpJWUtXZnZKXm1C
WllXekY1eVQ2VCojSENETilsMHwmNjJJKHMkUEBiNlFiNU9fUmwrOV4lVW5+cHI0dkZQCnomYDE9
bU5geVFoXnZ8N3RyU2hPJjlpVl5FS2VCWjJmOEdnYW1KYVpMQFBFb214PVFXe3sqVVReKVc2aT47
TjViaQp6KURwMjJ7OWs0VnpFOXleeSN4SiZ7LU9SMnk1N3k4O2hoe3w9Pk82Rj9Acn1le314RjtA
WkhrPm1adHhRckglM0oKekR8NzMxU2FnR240ITskbldqfHF1O2c0aFY3aE9FSi1VXyRQP1NERSg1
fD1XOFJXQmhBTmNeKGpBeTRSTU85MzUhCnpSdGNYeEVYJUtMT0RCWHBwcGh0QWw/WnUyPSR8fEZP
NjVWbEl6YSFSZkFEe3I5V0gtWmtwNHNlc0R7YSk7N1FUfQp6e3R4eDkofF4+eilaeVVXYTxYfiYo
bjc+aUBQRmBzQFBFKWgkdnhhVXN0bzt1e15oS0hNVi14S0AzcD0yQEI0cFAKenk3OXc1ZT1PfFNW
YktqUGRnd3hvdyl9KTBoV2B4RmIyc1ZZZ2BMJUsrcm05UiN6XjgpQ2F+JXk8Tj05YV9CLVNXCnp7
Y0lfcTxJZ0pMbFpSej8pTlNkNmtPd3BwTVhNNGE0KyNCcHIoVVQlczg8SypBTV85WVBxVn0yNC01
RHxfJjtTTwp6OWlRLWl3cytwY3w1NFNDYGo8SyF5aiFsNlN8WE4kfEFZVTd8QVlVTit7M00tJUZz
WFBVKFdoaClZJn10VWVgTnMKSEhsRGN5eDArX1kKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461844</attachid>
            <date>2022-08-24 10:42:19 -0700</date>
            <delta_ts>2022-08-25 10:52:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220824104217.patch</filename>
            <type>text/plain</type>
            <size>45929</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBjN2UzZjMyZTYzODU2Mjc4ZDJlOTA3ODA3OTBmMzY0YzEzY2VkYjhkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBGcmksIDE5IEF1ZyAyMDIyIDEwOjQxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgaW1hZ2UgYW5pbWF0aW9ucwogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCnJkYXI6Ly85ODg4NzY3NwoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGV4cGVy
aW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIGltYWdlIGFu
aW1hdGlvbnMuIFRoaXMgaW5jbHVkZXMgcmVndWxhciBiaXRtYXAgaW1hZ2VzLCBiYWNrZ3JvdW5k
IGltYWdlcywgU1ZHIGFuaW1hdGlvbnMsIGFuZCBzdXBwb3J0IGZvciB0aGUgPG1vZGVsPiBlbGVt
ZW50LiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGludGVyZmFjZXMgdG8gY29udHJvbCBh
bmltYXRpb25zIGF0IHRoZSBwYWdlIGFuZCBpbmRpdmlkdWFsIGltYWdlIGxldmVsLgoKKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
aW1hdGlvbnMgb24gYW4gZW50aXJlIHBhZ2UsIGFuZCB0b2dnbGluZyBhbiBpbmRpdmlkdWFsIGFu
aW1hdGlvbi4KCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CgpBZGRzIHRoZSBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5k
IHNldHMgaXQgb2ZmIGJ5IGRlZmF1bHQuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKFdlYkNvcmU6Om1fYWxsb3dJbmRpdmlkdWFs
QW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldEFuaW1hdGlvbklzUGxh
eWluZyk6CgpFbnN1cmUgdGhhdCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIHRoZSBjbGll
bnQgY2Fubm90IHN0YXJ0IHRoZSBhbmltYXRpb24uCgooV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6cGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CihXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
OjpwYXVzZUFuaW1hdGlvbldoZW5EaXNhYmxlZCk6CgpOZXcgbWV0aG9kcyB0byBhbGxvdyB3ZWJr
aXQgdG8gY29udHJvbCBtb2RlbCBhbmltYXRpb25zIHdoZW4gdGhlIHBhZ2Utd2lkZSBhbmltYXRp
b25zIGFyZSBvZmYuCgoqIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CgpVcGRh
dGVzIHRoZSBzZXR0aW5ncyB3aGVuIGFuIGltYWdlIGlzIHJlbmRlcmVkLCBpbiBjYXNlIGl0IGhh
ZCBub3QgeWV0IGJlZW4gcmVuZGVyZWQgd2hlbiBwYWdlLXdpZGUgYW5pbWF0aW9ucyBhcmUgdG9n
Z2xlZC4KCihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwbGF5QW5pbWF0aW9uKToKKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmlzQW5pbWF0aW5nKToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5p
bWF0ZWRJbWFnZSk6CgpNZXRob2RzIHRvIGNvbnRyb2wgaW1hZ2UgYW5pbWF0aW9ucyBhbmQgY2hl
Y2sgdGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwOgooV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd0ltYWdlKToKCkNoYW5nZSB1cGRhdGVGcm9tU2V0dGluZ3MgLT4gdXBkYXRlRnJv
bURvY3VtZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFn
ZTo6dG9nZ2xlQWxsQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpjb250YWluc0FuaW1hdGVk
SW1hZ2VzKToKKFdlYkNvcmU6OlBhZ2U6OmlzQWxsQW5pbWF0aW9uUGF1c2VkKToKCk1ldGhvZHMg
dG8gY29udHJvbCBwYWdlLXdpZGUgYW5pbWF0aW9ucy4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21Eb2N1bWVudCk6CgpDaGFuZ2UgdXBk
YXRlRnJvbVNldHRpbmdzIHRvIHVwZGF0ZUZyb21Eb2N1bWVudCBiZWNhdXNlIGl0IG5lZWRzIHRv
IGNhbGwgYSBtZXRob2Qgb24gcGFnZS4KCihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CihX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdl
RnJhbWVBdmFpbGFibGVBdEluZGV4KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwbGF5QW5pbWF0
aW9uKToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbik6CihXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6dXBkYXRlRG9jdW1lbnRPblJlbmRlcik6CihXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6dXBkYXRlRnJvbVNldHRpbmdzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgoKTmV3IG1ldGhvZHMgdG8gY29udHJvbCBhIGJpdG1h
cCBpbWFnZSdzIGFuaW1hdGlvbnMsIGFzIHdlbGwgYXMgY2hlY2tzIGluIGV4aXN0aW5nIG1ldGhv
ZHMgdG8gZW5zdXJlIHRoYXQgYW4gaW1hZ2UgZG9lcyBub3Qgc3RhcnQgd2hlbiB0aGUgc2V0dGlu
ZyBpcyBlbmFibGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CihXZWJDb3JlOjpJbWFnZTo6aXNBbmltYXRpbmcg
Y29uc3QpOiBEZWxldGVkLgoKVXBkYXRlcyB0byBpc0FuaW1hdGluZyB0byBleHBvcnQgaXQgZnJv
bSB3ZWJjb3JlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgoKQ2hhbmdlIHVwZGF0ZUZyb21TZXR0aW5ncyAtPiB1cGRhdGVGcm9tRG9jdW1lbnQu
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CgpDaGFuZ2UgdXBkYXRlRnJvbVNldHRpbmdzIC0+
IHVwZGF0ZUZyb21Eb2N1bWVudC4KCiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHA6CihXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0
aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdF
bGVtZW50OjpTVkdFbGVtZW50KToKKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzQW5pbWF0ZWQgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6cHJvZ3Jlc3MpOgooV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBsYXlBbmltYXRpb24pOgoo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50Lmg6CihXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6aXNBbmltYXRlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CgpNZXRob2RzIGFu
ZCBjaGVja3MgdG8gcHJldmVudCBTVkcgYW5pbWF0aW9ucyBmcm9tIHN0YXJ0aW5nIHdoZW4gdGhl
IHNldHRpbmcgaXMgZW5hYmxlZC4KCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpwbGF5SW1hZ2VBbmltYXRpb24pOgooV2ViQ29yZTo6
SW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6dG9n
Z2xlUGFnZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoK
KiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6CiogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5jcHA6CihXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CgpO
ZXcgaW50ZXJuYWwgdGVzdGluZyBtZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGluZyBpcyBvbiAm
IGltYWdlcyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3RhdGUuCi0tLQogLi4uL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWwgICAgICAgICAgIHwgIDEyICsrKwogLi4uL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAgICAgICAgIHwgIDIwICsrKysrCiAuLi4vTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCAgfCAgIDYgKysKIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgICAgICB8ICA0NCArKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCAgICAgICAgfCAgIDggKysKIC4uLi9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgICB8ICAgMiArLQogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDgzICsrKysrKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAgICAgICAgICAgIHwgICA2ICsr
CiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgfCAgMzcgKysr
KysrLS0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggICB8ICAx
MyArKy0KIC4uLi9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwICAgICAgICB8ICAg
MiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCAgICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAgfCAgIDQg
KwogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwICAgICAgICAgICAgIHwgICA2ICsr
CiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oICAgICAgICAgICAgICAgfCAgIDQgKwog
Li4uL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgIHwgIDIyICsrKysr
CiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmggfCAgIDMgKwog
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCAgICAgIHwgICAyICstCiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMjAgKysrKysK
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgNSArKwog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsKIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgICB8ICAgMSArCiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgfCAgIDEgKwogLi4uL2Rp
c2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dCAgIHwgIDEwICsrKwogLi4uL21h
Yy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sICAgICAgIHwgIDIyICsrKysrCiAuLi5v
bnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAuLi4t
YW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAgMjggKysrKysrCiAu
Li5hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAu
Li5ibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwgfCAgMzAgKysrKysr
KwogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmIHwgQmluIDAg
LT4gOTAxIGJ5dGVzCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5n
aWYgfCBCaW4gMCAtPiA2NzUzMSBieXRlcwogMzEgZmlsZXMgY2hhbmdlZCwgNDA4IGluc2VydGlv
bnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1h
dGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGlvbi5naWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGUwODg5ZmY5ZDA4
OC4uNGVjMjUzNGQ2YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtNjUsNiAr
NjUsMTggQEAgQWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZDoKICAgICAgIGRlZmF1bHQ6
IGZhbHNlCiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIAorQW5pbWF0
ZWRJbWFnZXNEaXNhYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNv
bnRyb2wgYW5pbWF0ZWQgaW1hZ2VzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJEaXNh
YmxlIGFuaW1hdGlvbnMgYW5kIHZpZXcgYW5pbWF0ZWQgaW1hZ2VzIGFzIHN0YXRpYy4iCisgIGRl
ZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAg
IFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1
bHQ6IGZhbHNlCiAKIEFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkOgog
ICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYTFmNGVkMDM1ODJhLi5kZmI3MWFk
ZGExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNs
dWRlICJSZW5kZXJSZXBsYWNlZC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KQEAgLTcwLDYgKzcxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEhUTUxNb2RlbEVsZW1lbnQpOwogSFRNTE1vZGVsRWxlbWVudDo6SFRNTE1vZGVsRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
OiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdChk
b2N1bWVudCkKKyAgICAsIG1fc2hvdWxkRGlzYWJsZUltYWdlQW5pbWF0aW9uKGRvY3VtZW50LnNl
dHRpbmdzKCkuYW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpKQogICAgICwgbV9yZWFkeVByb21pc2Ug
eyBtYWtlVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4oKnRoaXMsICZIVE1MTW9kZWxFbGVtZW50Ojpy
ZWFkeVByb21pc2VSZXNvbHZlKSB9CiB7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2Fs
bGJhY2tzKCk7CkBAIC01MDEsNiArNTAzLDEyIEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
QW5pbWF0aW9uSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nLCBET01Qcm9taXNlRGVmZXJyZWQ8CiAg
ICAgICAgIHByb21pc2UucmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKG1fc2hvdWxkRGlzYWJsZUltYWdlQW5pbWF0aW9uICYmICFtX3Nob3VsZEFsbG93SW5k
aXZpZHVhbEFuaW1hdGlvbikgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICBt
X21vZGVsUGxheWVyLT5zZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtdIChib29sKSB7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9tb2RlbFBsYXllci0+c2V0QW5pbWF0
aW9uSXNQbGF5aW5nKGlzUGxheWluZywgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9v
bCBzdWNjZXNzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCkBAIC01MjAsNiArNTI4
LDE4IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6cGF1c2VBbmltYXRpb24oRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBzZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2Us
IFdURk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXlBbmlt
YXRpb25XaGVuRGlzYWJsZWQoKQoreworICAgIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0
aW9uID0gdHJ1ZTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpwYXVzZUFuaW1hdGlvbldo
ZW5EaXNhYmxlZCgpCit7CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBm
YWxzZTsKKyAgICBtX21vZGVsUGxheWVyLT5zZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFtd
IChib29sKSB7IH0pOworfQorCisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aXNMb29waW5nQW5p
bWF0aW9uKElzTG9vcGluZ0FuaW1hdGlvblByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICgh
bV9tb2RlbFBsYXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggYzgwNTBlM2Y1YmRiLi4xMTM0Y2Mz
ZjY0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhbmltYXRpb25DdXJyZW50VGltZShDdXJyZW50VGltZVByb21pc2UmJik7CiAgICAgdm9pZCBz
ZXRBbmltYXRpb25DdXJyZW50VGltZShkb3VibGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAorICAgIHZvaWQgcGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCgpOworICAgIHZvaWQgcGF1
c2VBbmltYXRpb25XaGVuRGlzYWJsZWQoKTsKKwogICAgIHVzaW5nIEhhc0F1ZGlvUHJvbWlzZSA9
IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPjsKICAgICB2b2lkIGhhc0F1ZGlvKEhhc0F1
ZGlvUHJvbWlzZSYmKTsKICAgICB1c2luZyBJc011dGVkUHJvbWlzZSA9IERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPjsKQEAgLTE1NCw2ICsxNTcsOSBAQCBwcml2YXRlOgogCiAgICAgTGF5
b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0OwogCisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVJ
bWFnZUFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVh
bEFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKaW5kZXggYWI2NzM2ODMwOGI5Li5iYTI5MDk5MDhhN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkJp
dG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtNzY2LDYgKzc2
NywzNiBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c09yaWVudGF0aW9uT3ZlcnJpZGUo
KSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPnNvdXJjZVVSTCgpLnByb3RvY29s
SXNEYXRhKCkgfHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1NhbWVPcmlnaW4oKTsKIH0KIAorQml0bWFw
SW1hZ2UqIEhUTUxJbWFnZUVsZW1lbnQ6OmNhY2hlZEJpdG1hcEltYWdlKCkgY29uc3QKK3sKKyAg
ICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICBy
ZXR1cm4gZHluYW1pY0Rvd25jYXN0PEJpdG1hcEltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGxheUFu
aW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkg
eworICAgICAgICBpbWFnZS0+dXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAg
ICBpbWFnZS0+cGxheUFuaW1hdGlvbigpOworICAgIH0KK30KKwordm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0
bWFwSW1hZ2UoKSkgeworICAgICAgICBpbWFnZS0+dXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50
KCkpOworICAgICAgICBpbWFnZS0+cGF1c2VBbmltYXRpb24oKTsKKyAgICB9Cit9CisKK2Jvb2wg
SFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRpbmcoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBp
bWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+aXNBbmlt
YXRpbmcoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRBdHRhY2htZW50RWxlbWVu
dChSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiYmIGF0dGFjaG1lbnQpCkBAIC05NTcsNCArOTg4
LDE3IEBAIFJlZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAgcmV0dXJuIGNsb25lOwogfQogCiti
b29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICBpZiAo
Y2FjaGVkSW1hZ2UtPmltYWdlKCktPmlzQW5pbWF0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmIChhdXRvKiBiaXRtYXBJbWFnZSA9IGNhY2hlZEJpdG1hcElt
YWdlKCkpCisgICAgICAgIHJldHVybiAhYml0bWFwSW1hZ2UtPmlzQW5pbWF0aW9uRmluaXNoZWQo
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAppbmRleCA2ZDU1ZTE4N2NiMjQuLjA0MTAzMWY5MzJlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xh
c3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwpAQCAtMTU0
LDYgKzE1NSwxMSBAQCBwdWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0Owor
ICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheUFuaW1hdGlvbigpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGF1c2VBbmltYXRpb24oKTsKKyAgICBib29sIGlzQW5pbWF0aW5nKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0FuaW1hdGVkSW1hZ2UoKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwpAQCAtMjM2LDYgKzI0Miw4IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBTdHJpbmcgbV9wZW5kaW5nQ2xvbmVk
QXR0YWNobWVudElEOwogI2VuZGlmCisgICAgCisgICAgQml0bWFwSW1hZ2UqIGNhY2hlZEJpdG1h
cEltYWdlKCkgY29uc3Q7CiAKICAgICBmcmllbmQgY2xhc3MgSFRNTFBpY3R1cmVFbGVtZW50Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggOWJiY2M1NWU1MzI5Li42Mjg1ZDgzYmE3Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBDYQogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1h
Z2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICAgICAgZG93
bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KTsK
ICAgICB9CiAKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zID0geyBvcCwgYmxlbmRN
b2RlLCBvcmllbnRhdGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZDYzMzc2MGU5MWI0Li40
NDQzNjllZmFmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgog
I2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdl
LmgiCiAjaW5jbHVkZSAiQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtMTI5LDYg
KzEzMCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VVc2FnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJT
VkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgorI2luY2x1ZGUg
IlNWR1NNSUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgpA
QCAtMTUyLDYgKzE1NCw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VGV4dFJlY29nbml0aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgorI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IlVzZXJDb250ZW50UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCIKICNpbmNsdWRlICJVc2VySW5wdXRCcmlkZ2UuaCIKQEAgLTIwMSw2ICsyMDQsMTAgQEAKICNp
bmNsdWRlICJOYXZpZ2F0b3JNZWRpYVNlc3Npb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCisjaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+JiBhbGxQYWdlcygpCkBA
IC00MDI1LDQgKzQwMzIsODAgQEAgdm9pZCBQYWdlOjpmb3JjZVJlcGFpbnRBbGxGcmFtZXMoKQog
ICAgIH0KIH0KIAordm9pZCBQYWdlOjp0b2dnbGVBbGxBbmltYXRpb25zKCkKK3sKKyAgICBtX2hh
c1VucGF1c2VkQW5pbWF0aW9ucyA9ICFtX2hhc1VucGF1c2VkQW5pbWF0aW9uczsKKyAgICBmb3JF
YWNoRG9jdW1lbnQoW3RoaXNdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5v
ZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bV9oYXNVbnBhdXNlZEFuaW1hdGlvbnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlRWxlbWVu
dC0+cGxheUFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VFbGVtZW50LT5wYXVzZUFuaW1hdGlvbigpOworICAgICAgICAgICAgfSBlbHNl
IGlmIChhdXRvKiBzdmdTbWlsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxTVkdTTUlMRWxlbWVu
dD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9oYXNVbnBhdXNlZEFuaW1hdGlv
bnMpCisgICAgICAgICAgICAgICAgICAgIHN2Z1NtaWxFbGVtZW50LT5wbGF5QW5pbWF0aW9uKCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdmdTbWlsRWxlbWVu
dC0+cGF1c2VBbmltYXRpb24oKTsKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogaHRtbE1vZGVsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxI
VE1MTW9kZWxFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChtX2hhc1Vu
cGF1c2VkQW5pbWF0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgaHRtbE1vZGVsRWxlbWVudC0+
cGxheUFuaW1hdGlvbldoZW5EaXNhYmxlZCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgaHRtbE1vZGVsRWxlbWVudC0+cGF1c2VBbmltYXRpb25XaGVuRGlzYWJs
ZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiByZW5kZXJlciA9IGVs
ZW1lbnQucmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUo
KS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y2FjaGVkQmFja2dyb3VuZEltYWdlID0gcmVuZGVyZXItPnN0eWxlKCkuYmFja2dyb3VuZExheWVy
cygpLmltYWdlKCktPmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBiYWNrZ3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UtPmltYWdlKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBiaXRtYXBJbWFnZSA9IGRvd25j
YXN0PEJpdG1hcEltYWdlPigqYmFja2dyb3VuZEltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiaXRtYXBJbWFnZS51cGRhdGVGcm9tRG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2hhc1VucGF1c2VkQW5pbWF0aW9ucykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwSW1hZ2UucGxheUFuaW1hdGlvbigpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYml0bWFwSW1hZ2UucGF1c2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworfQorCitib29sIFBhZ2U6OmNvbnRhaW5zQW5p
bWF0ZWRJbWFnZXMoKQoreworICAgIGJvb2wgZm91bmRBbmltYXRlZEltYWdlID0gZmFsc2U7Cisg
ICAgZm9yRWFjaERvY3VtZW50KFsmZm91bmRBbmltYXRlZEltYWdlXSAoRG9jdW1lbnQmIGRvY3Vt
ZW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnQ+KGRvY3VtZW50LnJvb3ROb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW1h
Z2VFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgZm91bmRBbmltYXRlZEltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBzdmdTbWls
RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxTVkdTTUlMRWxlbWVudD4oZWxlbWVudCkpIHsKKyAg
ICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgICAg
ICAgICAgaWYgKGF1dG8qIGh0bWxNb2RlbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTE1v
ZGVsRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1h
Z2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlm
CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdl
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFn
ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgpLT5jYWNoZWRJ
bWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZElt
YWdlID0gY2FjaGVkQmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJbWFnZS0+aXNBbmltYXRlZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOwor
ICAgIHJldHVybiBmb3VuZEFuaW1hdGVkSW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggZmNiMWI2NTEwMzM4Li4zMGE5MWIzMjI5OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCkBAIC05NzYsNiArOTc2LDEwIEBAIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3lNb2RlRm9yRXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNp
b247IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxsRnJhbWVzKCk7
CisgICAgCisgICAgYm9vbCBhcmVBbGxBbmltYXRpb25zUGF1c2VkKCkgeyByZXR1cm4gIW1faGFz
VW5wYXVzZWRBbmltYXRpb25zOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBbGxB
bmltYXRpb25zKCk7CisgICAgYm9vbCBjb250YWluc0FuaW1hdGVkSW1hZ2VzKCk7CiAKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhbmFseXplSW1h
Z2VzRm9yRmluZEluUGFnZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spOwpAQCAtMTM0MSw2
ICsxMzQ1LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
TW9kZUZvckV4dGVuc2lvbiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24g
eyBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uOjpOb25lIH07CisgICAgCisg
ICAgYm9vbCBtX2hhc1VucGF1c2VkQW5pbWF0aW9ucyB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUg
UGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTg3YWM2OTBiMmVjLi5kMzc0NGNkNWY4ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNjUsMTEgKzY3LDEzIEBAIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1h
Z2UoKQogICAgIG1fc291cmNlLT5zdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCk7CiB9CiAKLXZvaWQg
Qml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3Mp
Cit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewotICAgIG1fYWxsb3dTdWJzYW1wbGluZyA9IHNldHRpbmdzLmltYWdlU3Vic2Ft
cGxpbmdFbmFibGVkKCk7Ci0gICAgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nID0g
c2V0dGluZ3MuYW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKCk7Ci0gICAgbV9zaG93
RGVidWdCYWNrZ3JvdW5kID0gc2V0dGluZ3Muc2hvd0RlYnVnQm9yZGVycygpOworICAgIG1fYWxs
b3dTdWJzYW1wbGluZyA9IGRvY3VtZW50LnNldHRpbmdzKCkuaW1hZ2VTdWJzYW1wbGluZ0VuYWJs
ZWQoKTsKKyAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmcgPSBkb2N1bWVudC5z
ZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpOworICAgIG1fc2hv
d0RlYnVnQmFja2dyb3VuZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc2hvd0RlYnVnQm9yZGVycygp
OworICAgIG1fZGlzYWJsZUltYWdlQW5pbWF0aW9uID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5hbmlt
YXRlZEltYWdlc0Rpc2FibGVkKCk7CisgICAgbV9pc1BhZ2VBbmltYXRpb25FbmFibGVkID0gIWRv
Y3VtZW50LnBhZ2UoKS0+YXJlQWxsQW5pbWF0aW9uc1BhdXNlZCgpOwogfQogCiB2b2lkIEJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQpAQCAtMjQ2LDcgKzI1
MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgTE9HKEltYWdlcywgIkJpdG1hcElt
YWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNjYWxlRmFjdG9y
Rm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U3Vi
c2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBzY2FsZUZhY3Rv
ckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsK
LSAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJv
bm91cykgeworICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzICYmICFtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbikgewogICAgICAgICBBU1NF
UlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUgfHwgbV9h
bmltYXRpb25GaW5pc2hlZCk7CiAKQEAgLTM3NCw3ICszNzgsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsCiAKIGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUoKSBjb25zdAogewotICAg
IHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFn
ZU9ic2VydmVyKCk7CisgICAgcmV0dXJuIHJlcGV0aXRpb25Db3VudCgpICYmICFtX2FuaW1hdGlv
bkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2ZXIoKSAmJiAoIW1fZGlzYWJsZUltYWdlQW5pbWF0aW9u
IHx8IG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKTsKIH0KIAogYm9vbCBCaXRtYXBJ
bWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CkBAIC02NzYsNCArNjgwLDI1IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgbV9zb3VyY2UtPmR1bXAodHMp
OwogfQogCit2b2lkIEJpdG1hcEltYWdlOjpwbGF5QW5pbWF0aW9uKCkKK3sKKyAgICBpZiAobV9z
aG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBtX3No
b3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7CisgICAgaW50ZXJuYWxTdGFydEFu
aW1hdGlvbigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpwYXVzZUFuaW1hdGlvbigpCit7Cisg
ICAgaWYgKCFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJu
OworICAgIHN0b3BBbmltYXRpb24oKTsKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1h
dGlvbiA9IGZhbHNlOworfQorCit2b2lkIEJpdG1hcEltYWdlOjp1cGRhdGVEb2N1bWVudE9uUmVu
ZGVyKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFu
aW1hdGlvbiA9ICFkb2N1bWVudC5wYWdlKCktPmFyZUFsbEFuaW1hdGlvbnNQYXVzZWQoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggZDNmNGZlYmQwODA0Li5iZDE2NDZhNjY4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNDksNiArNDksNyBAQCB0eXBlZGVm
IHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNldHRpbmdzOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBUaW1lcjsKIAogY2xhc3MgQml0bWFw
SW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB2aXJ0dWFsIH5CaXRtYXBJbWFnZSgpOwogCi0gICAgdm9pZCB1cGRhdGVGcm9t
U2V0dGluZ3MoY29uc3QgU2V0dGluZ3MmKTsKKyAgICB2b2lkIHVwZGF0ZUZyb21Eb2N1bWVudChj
b25zdCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTU4LDYgKzE1OSwxMiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAg
dm9pZCBkZWNvZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHBsYXlBbmltYXRpb24o
KTsKKyAgICB2b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgYWxsb3dzSW5kaXZpZHVhbEFuaW1hdGlvbigpOworICAgIGJv
b2wgaXNBbmltYXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRmluaXNo
ZWQ7IH07CisgICAgdm9pZCB1cGRhdGVEb2N1bWVudE9uUmVuZGVyKERvY3VtZW50Jik7CiAKIHBy
aXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYm
KTsKQEAgLTE5NSw3ICsyMDIsNiBAQCBwcml2YXRlOgogICAgIFN0YXJ0QW5pbWF0aW9uU3RhdHVz
IGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lkIGFkdmFuY2VBbmltYXRpb24oKTsK
ICAgICB2b2lkIGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpOwotICAgIGJvb2wgaXNBbmltYXRp
bmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBsb29rIHVudXN1YWwgdGhhdCB0aGVy
ZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJsaWMgQVBJLiBUaGlzIGlzIGJlY2F1
c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5LiBBbmltYXRpb24g
YmVnaW5zIHdoZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGltYWdlLiBJdCB3aWxsCkBAIC0yNDcs
NiArMjUzLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9hbGxvd0FuaW1hdGVkSW1h
Z2VBc3luY0RlY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvd0RlYnVnQmFja2dyb3Vu
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rpc2FibGVJbWFnZUFuaW1hdGlvbiB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzUGFnZUFuaW1hdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBt
X2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZyB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCBlYzAyNzA1NDg3ZTIuLjAwMzA0ODJjYzI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC05NzIsNyAr
OTcyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIGNvbnRleHQuc2V0
RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci5tYXNrTW9kZSgpID09IE1hc2tNb2RlOjpMdW1pbmFu
Y2UpOwogCiAgICAgICAgICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KGltYWdlKSkKLSAgICAgICAg
ICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Mo
c2V0dGluZ3MoKSk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFn
ZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwogCiAgICAgICAgICAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zID0gewogICAgICAgICAgICAgICAgIG9wID09IENvbXBvc2l0
ZU9wZXJhdG9yOjpTb3VyY2VPdmVyID8gYmdMYXllci5jb21wb3NpdGVGb3JQYWludGluZygpIDog
b3AsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4NzM1NGEz
NGQ3ZTMuLmE0MGRmOWI0MDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCkBAIC02ODQsNyArNjg0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpw
YWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QKICNlbmRp
ZgogCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPihpbWFnZSkpCi0gICAgICAgIGRvd25jYXN0PEJp
dG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygpKTsKKyAgICAg
ICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbURvY3VtZW50KGRvY3Vt
ZW50KCkpOwogCiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyA9IHsKICAgICAgICAg
aW1hZ2VFbGVtZW50ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9z
aXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudEJhc2UuY3BwCmluZGV4IGY2ZmY5NGIzYmQ4Yy4uNzZlMmM4NTZjMzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFz
ZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgi
CiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCkBAIC0xNTAsNiArMTUxLDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0
QW5pbWF0aW9uKCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkuYW5pbWF0ZWRJbWFnZXNEaXNh
YmxlZCgpICYmICFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbikKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKFJlZlB0ciBwcm90ZWN0ZWRBbmltYXRvciA9IHRoaXMtPmFuaW1hdG9y
KCkpCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFydCgqdGFyZ2V0RWxlbWVudCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA5YjAyMjY3MTU1NzQuLmYyMmY3MDg1Y2Ix
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYwLDYgKzE2MCw3IEBAIHN0YXRp
YyBORVZFUl9JTkxJTkUgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0
b21TdHJpbmcsIENTU1Byb3BlCiAKIFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNv
bnN0cnVjdGlvblR5cGUpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBj
b25zdHJ1Y3Rpb25UeXBlKQorICAgICwgbV9zaG91bGREaXNhYmxlSW1hZ2VBbmltYXRpb24oZG9j
dW1lbnQuc2V0dGluZ3MoKS5hbmltYXRlZEltYWdlc0Rpc2FibGVkKCkpCiAgICAgLCBtX3Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+
KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTA4Niw0ICsx
MDg3LDkgQEAgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzKCkKICAgICB9CiB9
CiAKK2Jvb2wgU1ZHRWxlbWVudDo6aXNBbmltYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
U01JTEVsZW1lbnQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNTI2NjQw
MTVkNjg0Li4zNGNmMGExYWU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTU3LDYg
KzE1Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBhcmUgbmVlZGVkIGZvciB0aGUgUmVuZGVy
VHJlZSwgYW5pbWF0aW9uIGFuZCBET00uCiAgICAgQXRvbVN0cmluZyBjbGFzc05hbWUoKSBjb25z
dCB7IHJldHVybiBBdG9tU3RyaW5nIHsgbV9jbGFzc05hbWUtPmN1cnJlbnRWYWx1ZSgpIH07IH0K
ICAgICBTVkdBbmltYXRlZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Ns
YXNzTmFtZTsgfQorICAgIAorICAgIGJvb2wgaXNBbmltYXRlZCgpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBDb25z
dHJ1Y3Rpb25UeXBlID0gQ3JlYXRlU1ZHRWxlbWVudCk7CkBAIC0xODUsNiArMTg3LDggQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBo
YXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsZW1lbnQmKTsKIAogICAgIHZvaWQgd2lsbFJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOworICAgIGJvb2wgbV9zaG91bGREaXNhYmxlSW1h
Z2VBbmltYXRpb247CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiB7
IGZhbHNlIH07CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmlu
ZGV4IDE4OTI0MjQ4YzkxNC4uMWVhMjAzMGUwNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMTA5OSw2ICsxMDk5LDExIEBAIGJv
b2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVt
ZW50JiBmaXJzdEFuaW1hdGlvbiwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAg
IGlmIChtX3Nob3VsZERpc2FibGVJbWFnZUFuaW1hdGlvbiAmJiAhbV9zaG91bGRBbGxvd0luZGl2
aWR1YWxBbmltYXRpb24pIHsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgbV9wcmV2aW91c0ludGVydmFs
QmVnaW4gPSBtX2ludGVydmFsQmVnaW47CiAKICAgICBpZiAobV9pc1dhaXRpbmdGb3JGaXJzdElu
dGVydmFsKSB7CkBAIC0xMjMzLDQgKzEyMzgsMjEgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlz
cGF0Y2hQZW5kaW5nRXZlbnQoU01JTEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAordm9pZCBTVkdTTUlMRWxlbWVudDo6cGxh
eUFuaW1hdGlvbigpCit7CisgICAgaWYgKG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9u
KQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24g
PSB0cnVlOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgU1ZHU01JTEVsZW1lbnQ6
OnBhdXNlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5p
bWF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmlt
YXRpb24gPSBmYWxzZTsKKyAgICBzdG9wQW5pbWF0aW9uKG1fdGFyZ2V0RWxlbWVudCk7Cit9CisK
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCmlu
ZGV4IDRmZTdhZWEyMDE4ZS4uZTVlMzU5NDgwZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCkBAIC0xMDEsMTEgKzEwMSwxNCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKSA9IDA7CisgICAgdm9pZCBwbGF5QW5pbWF0
aW9uKCk7CisgICAgdm9pZCBwYXVzZUFuaW1hdGlvbigpOwogCiAgICAgdm9pZCBjb25uZWN0Q29u
ZGl0aW9ucygpOwogICAgIGJvb2wgaGFzQ29uZGl0aW9uc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29uZGl0aW9uc0Nvbm5lY3RlZDsgfQogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hQZW5k
aW5nRXZlbnQoU01JTEV2ZW50U2VuZGVyKik7CisgICAgYm9vbCBpc0FuaW1hdGVkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRCZWdpblRpbWUoU01J
TFRpbWUgZXZlbnRUaW1lLCBTTUlMVGltZSBlbmRUaW1lLCBTTUlMVGltZVdpdGhPcmlnaW46Ok9y
aWdpbiA9IFNNSUxUaW1lV2l0aE9yaWdpbjo6UGFyc2VyT3JpZ2luKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDFjZjhlMTlhNTY5NS4uNjBiMmUwYWJhMDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTM3OSw3ICsz
NzksNyBAQCB2b2lkIFNWR0ltYWdlOjpzY2hlZHVsZVN0YXJ0QW5pbWF0aW9uKCkKIHZvaWQgU1ZH
SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKIHsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gdGhpcy0+
cm9vdEVsZW1lbnQoKTsKLSAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290RWxlbWVudC0+YW5p
bWF0aW9uc1BhdXNlZCgpKQorICAgIGlmICghcm9vdEVsZW1lbnQgfHwgIXJvb3RFbGVtZW50LT5h
bmltYXRpb25zUGF1c2VkKCkgfHwgIW1fcGFnZSB8fCBtX3BhZ2UtPnNldHRpbmdzKCkuYW5pbWF0
ZWRJbWFnZXNEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgcm9vdEVsZW1lbnQtPnVu
cGF1c2VBbmltYXRpb25zKCk7CiAgICAgcm9vdEVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGRjNjQyYzU1YmM5ZC4uYjY4N2E4
Y2UzMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMDQ2LDYgKzEw
NDYsMjYgQEAgYm9vbCBJbnRlcm5hbHM6OmlzSW1hZ2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVu
dCYgZWxlbWVudCkKICAgICByZXR1cm4gaW1hZ2UgJiYgKGltYWdlLT5pc0FuaW1hdGluZygpIHx8
IGltYWdlLT5hbmltYXRpb25QZW5kaW5nKCkpOwogfQogCit2b2lkIEludGVybmFsczo6cGxheUlt
YWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5w
bGF5QW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9u
KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5wYXVzZUFuaW1hdGlv
bigpOworfQorCit2b2lkIEludGVybmFsczo6dG9nZ2xlUGFnZUFuaW1hdGlvbigpCit7CisgICAg
YXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICBwYWdlLT50b2dnbGVBbGxBbmltYXRpb25z
KCk7Cit9CisKIHVuc2lnbmVkIEludGVybmFsczo6aW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXND
b3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4g
ZWxlbWVudC5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDUxNWRhYjM3YWFjZi4uZTRmMzQyMTJkNjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsOCBAQCBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiBjbGFzcyBTdHJpbmdDYWxsYmFjazsKIGNs
YXNzIFN0eWxlU2hlZXQ7CitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHU01JTEVsZW1lbnQ7
CiBjbGFzcyBUZXh0SXRlcmF0b3I7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUaW1lUmFuZ2Vz
OwpAQCAtMjE5LDYgKzIyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdlRnJhbWVEZWNv
ZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBkdXJhdGlvbik7CiAgICAgdm9p
ZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBib29sIGlzSW1h
Z2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcGxheUltYWdlQW5pbWF0
aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRN
TEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgdG9nZ2xlUGFnZUFuaW1hdGlvbigpOwogICAgIHVu
c2lnbmVkIGltYWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFn
ZUVsZW1lbnQmKTsKICAgICB2b2lkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVl
c3RGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHVuc2ln
bmVkIGltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdlRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IGEyYWYyNTJiMjBmZC4uMDlhM2FiMmE5ODlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01NTQsNiArNTU0LDkgQEAgdHlwZWRlZiAo
RmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIHVuZGVmaW5l
ZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQs
IHVucmVzdHJpY3RlZCBmbG9hdCBkdXJhdGlvbik7CiAgICAgdW5kZWZpbmVkIHJlc2V0SW1hZ2VB
bmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICBib29sZWFuIGlzSW1hZ2VB
bmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgcGxheUlt
YWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHBh
dXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmlu
ZWQgdG9nZ2xlUGFnZUFuaW1hdGlvbigpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VQZW5kaW5n
RGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsK
ICAgICB1bmRlZmluZWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRl
c3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHVu
c2lnbmVkIGxvbmcgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IDYzOTU3NWY4ZGU1My4uNDZhNzBi
ODMzOGEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBAIC0xMDYsNiArMTA2
LDcgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQogICAgICAg
ICAgICAgLy8gRklYTUU6IFRoZXNlIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBhcmUgY3VycmVudGx5
IHRoZSBvbmx5IG9uZXMgbm90IGVuYWJsZWQgZm9yIFdlYktpdExlZ2FjeSwgd2UKICAgICAgICAg
ICAgIC8vIHNob3VsZCBlaXRoZXIgZW5hYmxlIHRoZW0gb3Igc3RvcCBleHBvc2luZyB0aGVtIChh
cyB3ZSBkbyB3aXRoIHdpdGggcHJlZmVyZW5jZXMpLgogICAgICAgICAgICAgLy8gQWxsIG90aGVy
IGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBhcmUgYXV0b21hdGljYWxseSBlbmFibGVkIHJlZ2FyZGxl
c3Mgb2YgdGhlaXIgc3BlY2lmaWVkIGRlZmF1bHRzLgorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJ
bWFnZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQ
SUVuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xs
aW5nRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5h
YmxlZCIsIGZhbHNlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RP
cHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCmluZGV4
IDUxZjY1ZjMwOWViMy4uMmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RP
cHRpb25zLmNwcApAQCAtNjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRp
b25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
IiwgZmFsc2UgfSwKICNlbmRpZgogICAgICAgICAgICAgeyAiQWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCIs
IGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwg
dHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMi
LCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrIiwgdHJ1
ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmE2MjNhYmYzNDJmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVu
YWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCBhbmlt
YXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdlcyBzZXR0
aW5nIGlzIHR1cm5lZCBvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSBiZWNhbWUgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZm
ZjMyMWIzNWVmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFuaW1hdGVkSW1hZ2VzRGlz
YWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IHRoYXQgYW5pbWF0
aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiAiRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVk
IG9uPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1h
dGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi4iKTsJCQorICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0
SW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgICAgIHNo
b3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwg
ImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKKyAgICB9CisKKzwvc2NyaXB0PgorCis8aW1nIHNyYz0i
cmVzb3VyY2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFs
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5kNzhlMTQwMGE4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1h
Z2UgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCB0aGV5IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYg
aW5kaXZpZHVhbGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRl
cm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBpbnRl
cm5hbHMuaXNJbWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIGJlY2FtZSB0cnVlCitQQVNTIGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZp
ZHVhbC1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xM2Y5NmY5ZGFkY2IKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxh
eS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBbmltYXRlZEltYWdlc0Rpc2FibGVkPXRy
dWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCB0aGF0IGFuaW1hdGlvbnMgYXJl
IGRpc2FibGVkIHdoZW4gRGlzYWJsZSBBbmltYXRlZCBJbWFnZXMgaXMgdHVybmVkIG9uPC90aXRs
ZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBv
biBhbmQgb2ZmIGluZGl2aWR1YWxseS4iKTsJCQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CQorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEltYWdlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBzaG91bGRCZWNv
bWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlKSIsICJmYWxzZSIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGludGVybmFscy5wbGF5SW1hZ2VBbmltYXRpb24o
dGVzdEltYWdlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJ
bWFnZUFuaW1hdGluZyh0ZXN0SW1hZ2UpIiwgInRydWUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VBbmltYXRpb24odGVzdEltYWdlKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
dGVzdEltYWdlKSIsICJmYWxzZSIsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICB9KTsgCisg
ICAgICAgIH0pOworICAgIH0JCisKKzwvc2NyaXB0PgorCis8aW1nIHNyYz0icmVzb3VyY2VzL2Fu
aW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9n
Z2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YzRhNzk5ODRj
ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2Fi
bGVkLCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZi4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcodGVzdEltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdElt
YWdlMikgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJ
bWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSB0
cnVlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTEpIHx8IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIGJlY2FtZSBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFn
ZS1hbmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxl
LWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzM4MTgyMmNmMWUyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1w
YWdlLWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZD10cnVlIF0gLS0+
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxl
ZCB3aGVuIERpc2FibGUgQW5pbWF0ZWQgSW1hZ2VzIGlzIHR1cm5lZCBvbjwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2Ux
IiAvPgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRlZDIuZ2lmIiBpZD0idGVzdEltYWdlMiIg
Lz4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1h
Z2UgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJl
IHRvZ2dsZWQgb24gYW5kIG9mZi4iKTsJCQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCQor
ICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEltYWdlMSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UxIik7CisgICAgICAgIHRlc3RJbWFnZTIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMiIpOworICAgICAgICBzaG91bGRC
ZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlMSkgfHwgaW50
ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcodGVzdEltYWdlMikiLCAiZmFsc2UiLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBpbnRlcm5hbHMudG9nZ2xlUGFnZUFuaW1hdGlvbigpOworICAgICAg
ICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJ
bWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKHRlc3RJbWFnZTIpIiwgInRydWUi
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmlt
YXRpb24oKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlz
SW1hZ2VBbmltYXRpbmcodGVzdEltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
dGVzdEltYWdlMikiLCAiZmFsc2UiLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgfSk7IAor
ICAgICAgICB9KTsKKyAgICB9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGVkMi5n
aWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdp
ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOTliMWZmNjU5MmQyZDgxZjU3OThlYTc2YmNlMWFiNGExNzhjMjk2CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MDEKemNtWj93YmhFSGI2a3Jmd198Q3hhZjk2YyV8N2lA
UFVeRTBxV0MkcSE9a3t8QTMzaGYyYTVkNjFVfWdqY2c1cG1XCno3RW9CfGZDeH1GVmM/S3VWQ0lu
VipzJFBXR2wjSE4lIXYmUDU0UV5fZChIOUt4YWVwakJPYFZsalFEZ3wwfDQkbQpCQm1lKmEKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRiMGM0M2Y4ZjQyNTVh
ZDQwYjE1NzZjYjIzM2Y4ZTIzOTk5ODg0MgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjc1MzEK
emNtZUkzUGlTMzU2dm0kPE88dzw0dEJCTjZxIUM8MXZAfUoqX3k+SGlIO09AfHZ8WXQ2RCM9Mksz
bjN6PURNRFhkCnp4UU83UUxLanV5IWVXJClFLUpjRSVxRjtzTENEalVXKjJ1VXhVaSsqYll7K3M0
fktVVFQ8Kz9lYExZO0puMHA2KQp6X24hSVlKTGVgWnpWeU9WPEZDeSRXKlVEdCs+aU8hWTtKQ0B0
Z090PiYkcnZ7KjJhYlEpJEAoRml9dE5BOCNtdF8KenU7YSRVaUNAMXNmNGUoemR2bkM+ZVAhYXo9
QFlHITZVVURwOEBTOGZLWFBrdV9ud0FuSm13YTIlUWduaCM9K15PCnp1e0FxZmJjMmliSnJTZDJL
VmdTfjRgVEU+VHxCbi1lN0ozRj11bkkjRUBjOSVVUDJ5X18rYElDcDN1KmgweV9Tegp6NTxZb1lt
UzVZSlA2JkJHPXBVJipecDgkQmlEeWApZ2lpcFdmNnpicEtnfHg4UnxvaCVfJjtTTzlpUS1pd3BS
fG8KenxIMXopM0daUTROX2hBYC0+IT1GNChpe35eK1ckSllAQHV8QUBHMGpmQUR7OT4qeDlYcW9g
dlo/N2c7a2UhMUVBCnohX3RpX2JMLT5WY0RVI1U3d3Z5R01xN1R1NGc8ZjA9PHF2cUAlWipuO2tO
UE5QaHVvLURIQi1yNjdxbj1GWiYoeAp6Z25xVVooRDclTEBYNW42K3Y+Si1MZFhMZWlLMTFCa096
ZVJ4bF54SDlATUo/XmJoKDZ8RUptRUBgblpkQU4tJVAKemw4I1MhS2lmTys7czI9V05CdjczNCZF
KFNOLVlzZiFULVZrIVQtVmtOJCVtK1FEeHtLXmU8PXFFOXpfPmQjfiVBCnpfeTRlVFZDMjA2P1dQ
PyVadHpoTnFhKiVUSX1GfCVxeGIyT2NDIV5PWlp7dX1rO0o3O1ZBVl49MHx0SzQ/fm9ePwp6Kils
LVNwSHNwbzU2a2p2K3RMWGs0YD9LY1J3WTZuNWM9bSZ5KXQ9bFBnPUQpSz53aEJAUEM+ZUVgTH1B
e2ZHWWYKek9eYHZzbGNXUnVVI3htTjttSWdKQERvUF57fEVvNCt1PGUmNUIrb1B5OHE2NSlXNCt2
PT5KaU5tK3V4Tm59PV8kCnpoKiUyc0ZZNGMlPikrVmlzLWJfTV9XIVZTPzZYVSFDUChlaWFmNkhR
ZHBTbnV7RGQ2X1BseER7JVhJUE49eFZyYQp6YWApOTNObkZZVlI9dEVnQW8wdDdoZGlPNUVkX01e
U3RXZSh1Knw1c0V1OWVaZkpVTmRSVStnOHA/fmh3RTBxV0oKej5IeihOez14cmdjRFZkdTBzamE4
cj52eW82Vy03RSZVXlNqc2BecD9RaXA/ZyVhdXx+IzhVOG9AUEZgc0BQQ3FmCnp4T0ckK2BVbX5Y
U150VlVvNSRZa2RndUs9RVMoSDFVK1RvS05jVyRLKFErJn5jNn03MSYhWW1oIWVeKmNkbWZGRQp6
I0hDRE4pbDB8JjYySShzJFBAYjZRYjVPX1JsKzleJWtwZDYoZ2A2Q1hlNWVPQnw7dCRgc2RFU1Fo
ODlYNCR3ZDcKekE2WXYxS1hTcig5ZnpkPCZfQWtTR0FNV3c/KlJYWWBxJHx7PlI7K2BATlBOVEpi
WTsoVmshN1BfJkBrUj0lM15zCnpaWEgjSXt6M244KjF3fDg9Q1N3TS11WClaNEArLWV5V1g5ZXdM
YH1aRV8mYz5qSkV1UTlkYFd8cVF9M1ppPkdFKwp6ISk7VDB6bHhFPnJBJVBlT1VNSGZ6d0NGJjZa
K1h3Syp5Z3whWTI+USUmT2JjMl9YKz9CI0tyZ0xMTHpNPVQ1eSsKemN+R3dvJl9DIU97R1ZvciVP
NGktZkFEfEdOOypFX3tjUHtOaHlTQ2hBTjRQRklDIV5RRFlabF8xXik7QzJtYzVFCnpDJUsxUE4w
cCZ9KDcmQVp1YykobT83Z21jLXY3aFdoaHU5OHI8ZCVvPW1zQ24jT1IzcyllYmBzI15gNmRXT31J
Owp6RX1xX1pKVnB8aUdKI2J1QXJEQ1d2Zm0rMz14MGotSiUzSUtwRkF3ZnVXZF53Z2dsXjtDfFo+
V2N8aG8mSk1+S0MKeiE5OGkhPkh6KE57PXhyZ2NEVmR1TEhaQjxxWiVmSWYrdEFfX2BnezdFYH0k
Z3tKPjhmNGc0U2NwS2dibkJzfSEqCnpmQXRSUFUoJGN7fEVSO3VjTUZvdSE/I3ZNRVFSX1BePjVE
Z1omODBzZjdBY04oJTExQF48d3lrclM3M09Wc3RLaQp6JmJtSklZS1dmdkpebUJaWVd6RjV5VDZU
KiNIQ0ROKWwwfCY2MkkocyRQQGI2UWI1T19SbCs5XiVVbn5wcjR2RlAKeiZgMT1tTmB5UWhednw3
dHJTaE8mOWlWXkVLZUJaMmY4R2dhbUphWkxAUEVvbXg9UVd7eypVVF4pVzZpPjtONWJpCnopRHAy
Mns5azRWekU5eV55I3hKJnstT1IyeTU3eTg7aGh7fD0+TzZGP0ByfWV7fXhGO0BaSGs+bVp0eFFy
SCUzSgp6RHw3MzFTYWdHbjQhOyRuV2p8cXU7ZzRoVjdoT0VKLVVfJFA/U0RFKDV8PVc4UldCaEFO
Y14oakF5NFJNTzkzNSEKelJ0Y1h4RVglS0xPREJYcHBwaHRBbD9adTI9JHx8Rk82NVZsSXphIVJm
QUR7cjlXSC1aa3A0c2VzRHthKTs3UVR9Cnp7dHh4OSh8Xj56KVp5VVdhPFh+JihuNz5pQFBGYHNA
UEUpaCR2eGFVc3RvO3V7XmhLSE1WLXhLQDNwPTJAQjRwUAp6eTc5dzVlPU98U1ZiS2pQZGd3eG93
KX0pMGhXYHhGYjJzVllnYEwlSytybTlSI3peOClDYX4leTxOPTlhX0ItU1cKentjSV9xPElnSkxs
WlJ6PylOU2Q2a093cHBNWE00YTQrI0JwcihVVCVzODxLKkFNXzlZUHFWfTI0LTVEfF8mO1NPCno5
aVEtaXdzK3BjfDU0U0NgajxLIXlqIWw2U3xYTiR8QVlVN3xBWVVOK3szTS0lRnNYUFUoV2hoKVkm
fXRVZWBOcwpISGxEY3l4MCtfWQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461861</attachid>
            <date>2022-08-25 10:52:28 -0700</date>
            <delta_ts>2022-08-25 18:13:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220825105226.patch</filename>
            <type>text/plain</type>
            <size>27988</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA0NDI1ZjJiOTFlNDU4ODE0NDUwY2ZlODUyMTE0YzAwYTUzOGQ1ZjkxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIEJp
dG1hcEltYWdlIGFuaW1hdGlvbnMuIEFkZGl0aW9uYWxseSwgd2UgcHJvdmlkZSBuZXcgaW50ZXJm
YWNlcyB0byBjb250cm9sIGFuaW1hdGlvbnMgYXQgdGhlIHBhZ2UgYW5kIGluZGl2aWR1YWwgaW1h
Z2UgbGV2ZWwuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1s
OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmlt
YXRpb25zLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291
cmNlcy9hbmltYXRlZDIuZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZjogQWRkZWQuCgpUZXN0cyB0b2dnbGluZyB0aGUgc2V0
dGluZywgdG9nZ2xpbmcgYW5pbWF0aW9ucyBvbiBhbiBlbnRpcmUgcGFnZSwgYW5kIHRvZ2dsaW5n
IGFuIGluZGl2aWR1YWwgYW5pbWF0aW9uLgoKKiBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKCkFkZHMgdGhlIG5ldyBleHBlcmlt
ZW50YWwgZmVhdHVyZSBhbmQgc2V0cyBpdCBvZmYgYnkgZGVmYXVsdC4KCiogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJl
c3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlv
bik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZyBjb25zdCk6CihXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdl
IGFuaW1hdGlvbnMgYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0aW9uLgoKKiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6UGFnZTo6dG9nZ2xlQWxsQW5pbWF0
aW9ucyk6CihXZWJDb3JlOjpQYWdlOjpjb250YWluc0FuaW1hdGVkSW1hZ2VzKToKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaDoKKFdlYkNvcmU6OlBhZ2U6OmFyZUFsbEFuaW1hdGlvbnNQYXVz
ZWQpOgoKTWV0aG9kcyB0byBjb250cm9sIHBhZ2Utd2lkZSBhbmltYXRpb25zLgoKKiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CihXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6dXBkYXRlRnJvbVNldHRpbmdzKToKCkdldHMgQW5pbWF0ZWRJbWFnZXNEaXNhYmxl
ZCBzZXR0aW5nIGZyb20gU2V0dGluZ3Mgb2JqZWN0LgoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3KToKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlIGNvbnN0KToKKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpyZXN1bWVBbmltYXRpb24pOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OnBhdXNlQW5pbWF0aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oOgoKTmV3IG1ldGhvZHMgdG8gY29udHJvbCBhIGJpdG1hcCBpbWFnZSdzIGFuaW1h
dGlvbnMsIGFzIHdlbGwgYXMgY2hlY2tzIGluIGV4aXN0aW5nIG1ldGhvZHMgdG8gZW5zdXJlIHRo
YXQgYW4gaW1hZ2UgZG9lcyBub3Qgc3RhcnQgd2hlbiB0aGUgc2V0dGluZyBpcyBlbmFibGVkLgoK
KiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6cGF1c2VJbWFn
ZUFuaW1hdGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnRvZ2dsZVBhZ2VBbmltYXRpb24pOgoq
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmg6CiogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsOgoKTmV3IGludGVybmFsIHRlc3RpbmcgbWV0aG9kcyB0byB2ZXJp
ZnkgdGhlIHNldHRpbmcgaXMgb24gJiBpbWFnZXMgYXJlIGluIHRoZSBjb3JyZWN0IHN0YXRlCgoq
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKFdUUjo6VGVzdE9wdGlvbnM6
OmRlZmF1bHRzKToKKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcDoKKFdU
Ujo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKToKClR1cm5zIEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQg
b2ZmIGZvciBhbGwgdGVzdHMgKHRoaXMgZ2V0cyBlbmFibGVkIGluIHRoZSByZWxldmFudCB0ZXN0
cyBhYm92ZSkuCi0tLQogLi4uL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgICAgICAg
ICAgIHwgIDEyICsrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAg
ICAgICB8ICA0MCArKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuaCAgICAgICAgfCAgIDggKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAg
ICAgICAgICAgICAgICAgfCAgNTUgKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaCAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKIC4uLi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCB8ICAyMyArKysrKysrLQogLi4uL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgIHwgICA4ICsrLQogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgIHwgIDIwICsrKysrKysKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgMyArCiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAgIDMgKwogVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwICAgICAgICAgIHwgICAxICsKIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwICAgICAgICB8ICAgMSArCiAuLi4vZGlzYWJsZS1hbmlt
YXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0ICAgfCAgIDggKysrCiAuLi4vbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgICAgICAgfCAgMjcgKysrKysrKysrCiAuLi5vbnMtcGxh
eS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTAgKysrKwogLi4uLWFuaW1h
dGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sIHwgIDMzICsrKysrKysrKysrCiAu
Li5hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgfCAgMTAgKysrKwog
Li4uYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sIHwgIDM3ICsrKysr
KysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmIHwg
QmluIDAgLT4gOTAxIGJ5dGVzCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIDIwIGZpbGVzIGNoYW5nZWQsIDMwMiBpbnNl
cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4
dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFu
aW1hdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlv
bi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2Vz
L2FuaW1hdGlvbi5naWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGUwODg5ZmY5
ZDA4OC4uNGVjMjUzNGQ2YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtNjUs
NiArNjUsMTggQEAgQWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZDoKICAgICAgIGRlZmF1
bHQ6IGZhbHNlCiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIAorQW5p
bWF0ZWRJbWFnZXNEaXNhYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTog
IkNvbnRyb2wgYW5pbWF0ZWQgaW1hZ2VzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJE
aXNhYmxlIGFuaW1hdGlvbnMgYW5kIHZpZXcgYW5pbWF0ZWQgaW1hZ2VzIGFzIHN0YXRpYy4iCisg
IGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQor
ICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRl
ZmF1bHQ6IGZhbHNlCiAKIEFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVk
OgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBhYjY3MzY4MzA4YjkuLjk1MzkxMWIyZGQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2Uu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCkBAIC03NjYsNiArNzY3LDMyIEBAIGJv
b2wgSFRNTEltYWdlRWxlbWVudDo6YWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0CiAg
ICAgcmV0dXJuICFpbWFnZSB8fCBpbWFnZS0+c291cmNlVVJMKCkucHJvdG9jb2xJc0RhdGEoKSB8
fCBjYWNoZWRJbWFnZS0+aXNDT1JTU2FtZU9yaWdpbigpOwogfQogCitCaXRtYXBJbWFnZSogSFRN
TEltYWdlRWxlbWVudDo6Y2FjaGVkQml0bWFwSW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRv
KiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkpCisgICAgICAgIHJldHVybiBkeW5h
bWljRG93bmNhc3Q8Qml0bWFwSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpyZXN1bWVBbmltYXRpb24o
KQoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAg
IGltYWdlLT5yZXN1bWVBbmltYXRpb24oKTsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpw
YXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1h
Z2UoKSkKKyAgICAgICAgaW1hZ2UtPnBhdXNlQW5pbWF0aW9uKCk7Cit9CisKK2Jvb2wgSFRNTElt
YWdlRWxlbWVudDo6aXNBbmltYXRpbmcoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZSA9
IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+aXNBbmltYXRpbmco
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRBdHRhY2htZW50RWxlbWVudChSZWY8
SFRNTEF0dGFjaG1lbnRFbGVtZW50PiYmIGF0dGFjaG1lbnQpCkBAIC05NTcsNCArOTg0LDE3IEBA
IFJlZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmli
dXRlc0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAgcmV0dXJuIGNsb25lOwogfQogCitib29sIEhU
TUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8q
IGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICBpZiAoY2FjaGVk
SW1hZ2UtPmltYWdlKCktPmlzQW5pbWF0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChhdXRvKiBiaXRtYXBJbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkp
CisgICAgICAgIHJldHVybiAhYml0bWFwSW1hZ2UtPmlzQW5pbWF0aW9uRmluaXNoZWQoKTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAppbmRleCA2ZDU1ZTE4N2NiMjQuLmY5MGViZmU1MjI3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgRGVm
ZXJyZWRQcm9taXNlOwogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwpAQCAtMTU0LDYgKzE1
NSwxMSBAQCBwdWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25z
dDsKIAogICAgIGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0OworICAgIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9uKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwYXVzZUFuaW1hdGlvbigpOworICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25z
dDsKKyAgICBib29sIGlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAg
SFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9y
bUVsZW1lbnQqID0gbnVsbHB0cik7CkBAIC0yMzYsNiArMjQyLDggQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9uZWRBdHRh
Y2htZW50SUQ7CiAjZW5kaWYKKyAgICAKKyAgICBCaXRtYXBJbWFnZSogY2FjaGVkQml0bWFwSW1h
Z2UoKSBjb25zdDsKIAogICAgIGZyaWVuZCBjbGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggZDYzMzc2MGU5MWI0Li5hMTk2ZmQ1MjlhOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2FjaGUu
aCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJk
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtMTUyLDYgKzE1Myw3IEBACiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uUmVzdWx0LmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIKICNpbmNs
dWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNsdWRlICJVc2VySW5wdXRCcmlkZ2Uu
aCIKQEAgLTQwMjUsNCArNDAyNyw1NyBAQCB2b2lkIFBhZ2U6OmZvcmNlUmVwYWludEFsbEZyYW1l
cygpCiAgICAgfQogfQogCit2b2lkIFBhZ2U6OnRvZ2dsZUFsbEFuaW1hdGlvbnMoKQoreworICAg
IG1faGFzVW5wYXVzZWRBbmltYXRpb25zID0gIW1faGFzVW5wYXVzZWRBbmltYXRpb25zOworICAg
IGZvckVhY2hEb2N1bWVudChbdGhpc10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihkb2N1bWVudC5y
b290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGltYWdlRWxlbWVudCA9IGR5bmFt
aWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2hhc1VucGF1c2VkQW5pbWF0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VF
bGVtZW50LT5yZXN1bWVBbmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cGF1c2VBbmltYXRpb24oKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFnZSA9IHJl
bmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgpLT5jYWNoZWRJbWFnZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0g
Y2FjaGVkQmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byYgYml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmJhY2tncm91
bmRJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1faGFzVW5wYXVzZWRB
bmltYXRpb25zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBJbWFnZS5y
ZXN1bWVBbmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcEltYWdlLnBhdXNlQW5pbWF0aW9uKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKK30KKworYm9v
bCBQYWdlOjpjb250YWluc0FuaW1hdGVkSW1hZ2VzKCkKK3sKKyAgICBib29sIGZvdW5kQW5pbWF0
ZWRJbWFnZSA9IGZhbHNlOworICAgIGZvckVhY2hEb2N1bWVudChbJmZvdW5kQW5pbWF0ZWRJbWFn
ZV0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihkb2N1bWVudC5yb290Tm9kZSgpKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIGltYWdlRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VF
bGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFnZSA9IHJlbmRlcmVy
LT5zdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKS5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gY2FjaGVk
QmFja2dyb3VuZEltYWdlLT5pbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGJhY2tncm91bmRJbWFnZS0+aXNBbmltYXRlZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVybiBm
b3VuZEFuaW1hdGVkSW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKaW5kZXggZmNiMWI2NTEwMzM4Li4zMGE5MWIzMjI5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC05
NzYsNiArOTc2LDEwIEBAIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9y
RXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb247IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxsRnJhbWVzKCk7CisgICAgCisgICAg
Ym9vbCBhcmVBbGxBbmltYXRpb25zUGF1c2VkKCkgeyByZXR1cm4gIW1faGFzVW5wYXVzZWRBbmlt
YXRpb25zOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBbGxBbmltYXRpb25zKCk7
CisgICAgYm9vbCBjb250YWluc0FuaW1hdGVkSW1hZ2VzKCk7CiAKICNpZiBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhbmFseXplSW1hZ2VzRm9yRmluZElu
UGFnZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spOwpAQCAtMTM0MSw2ICsxMzQ1LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVu
c2lvbiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24geyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uOjpOb25lIH07CisgICAgCisgICAgYm9vbCBtX2hh
c1VucGF1c2VkQW5pbWF0aW9ucyB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQ
YWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKaW5kZXggYTg3YWM2OTBiMmVjLi4zOTU3MTM1ZjQxMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTcwLDYg
KzcwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6dXBkYXRlRnJvbVNldHRpbmdzKGNvbnN0IFNldHRp
bmdzJiBzZXR0aW5ncykKICAgICBtX2FsbG93U3Vic2FtcGxpbmcgPSBzZXR0aW5ncy5pbWFnZVN1
YnNhbXBsaW5nRW5hYmxlZCgpOwogICAgIG1fYWxsb3dBbmltYXRlZEltYWdlQXN5bmNEZWNvZGlu
ZyA9IHNldHRpbmdzLmFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpOwogICAgIG1f
c2hvd0RlYnVnQmFja2dyb3VuZCA9IHNldHRpbmdzLnNob3dEZWJ1Z0JvcmRlcnMoKTsKKyAgICBt
X2Rpc2FibGVJbWFnZUFuaW1hdGlvbiA9IHNldHRpbmdzLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQo
KTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJv
eUFsbCkKQEAgLTI0Niw3ICsyNDcsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIExP
RyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1YnNhbXBsaW5nTGV2
ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40ZildIiwgX19GVU5DVElP
Tl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcu
d2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAogICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gaW1hZ2U7Ci0gICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVj
b2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKKyAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUo
KSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cyAmJiAhbV9kaXNhYmxlSW1hZ2VBbmltYXRp
b24pIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1f
Y3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0zNzQsNyArMzc1LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmlt
YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0
aW9uRmluaXNoZWQgJiYgaW1hZ2VPYnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9uQ291
bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgKCFtX2Rp
c2FibGVJbWFnZUFuaW1hdGlvbiB8fCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbik7
CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKSBjb25zdApAQCAtNjc2LDQgKzY3
NywyMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAg
IG1fc291cmNlLT5kdW1wKHRzKTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6cmVzdW1lQW5pbWF0
aW9uKCkKK3sKKyAgICBpZiAobV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24pCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IHRydWU7
CisgICAgaW50ZXJuYWxTdGFydEFuaW1hdGlvbigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpw
YXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFuaW1h
dGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BBbmltYXRpb24oKTsKKyAgICBtX3Nob3Vs
ZEFsbG93SW5kaXZpZHVhbEFuaW1hdGlvbiA9IGZhbHNlOworfQorCisKKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggZDNmNGZlYmQw
ODA0Li4yMThjMmJhNTk4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaApAQCAtMTU4LDYgKzE1OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNvZGUoRnVu
Y3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbigpOworICAgIHZvaWQg
cGF1c2VBbmltYXRpb24oKTsKKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBpc0FuaW1hdGlvbkZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25G
aW5pc2hlZDsgfTsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShS
ZWY8TmF0aXZlSW1hZ2U+JiYpOwpAQCAtMTk1LDcgKzE5OSw2IEBAIHByaXZhdGU6CiAgICAgU3Rh
cnRBbmltYXRpb25TdGF0dXMgaW50ZXJuYWxTdGFydEFuaW1hdGlvbigpOwogICAgIHZvaWQgYWR2
YW5jZUFuaW1hdGlvbigpOwogICAgIHZvaWQgaW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCk7Ci0g
ICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gSXQgbWF5IGxvb2sg
dW51c3VhbCB0aGF0IHRoZXJlIGlzIG5vIHN0YXJ0IGFuaW1hdGlvbiBjYWxsIGFzIHB1YmxpYyBB
UEkuIFRoaXMgaXMgYmVjYXVzZQogICAgIC8vIHdlIHN0YXJ0IGFuZCBzdG9wIGFuaW1hdGluZyBs
YXppbHkuIEFuaW1hdGlvbiBiZWdpbnMgd2hlbmV2ZXIgc29tZW9uZSBkcmF3cyB0aGUgaW1hZ2Uu
IEl0IHdpbGwKQEAgLTI0Nyw2ICsyNTAsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgYm9vbCBt
X2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
aG93RGVidWdCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlzYWJsZUltYWdlQW5p
bWF0aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0
aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNQYWdlQW5pbWF0aW9uRW5hYmxlZCB7IGZhbHNl
IH07CiAKICAgICBib29sIG1fY2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRl
c3RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9sYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJs
ZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBkYzY0MmM1NWJjOWQuLjEwMjk1ZDRjNGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2LDI2IEBAIGJvb2wgSW50ZXJuYWxzOjppc0ltYWdl
QW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYm
IChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsKIH0K
IAordm9pZCBJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5yZXN1bWVBbmltYXRpb24oKTsKK30KKwordm9pZCBJ
bnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICBlbGVtZW50LnBhdXNlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp0
b2dnbGVQYWdlQW5pbWF0aW9uKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1
bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpCisgICAg
ICAgIHBhZ2UtPnRvZ2dsZUFsbEFuaW1hdGlvbnMoKTsKK30KKwogdW5zaWduZWQgSW50ZXJuYWxz
OjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdEZWNvZGVQcm9taXNl
c0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNTE1
ZGFiMzdhYWNmLi4zMzk4YjdiNzViYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApA
QCAtMjE5LDYgKzIxOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdlRnJhbWVEZWNvZGlu
Z0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBkdXJhdGlvbik7CiAgICAgdm9pZCBy
ZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBib29sIGlzSW1hZ2VB
bmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcmVzdW1lSW1hZ2VBbmltYXRp
b24oSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1M
SW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCB0b2dnbGVQYWdlQW5pbWF0aW9uKCk7CiAgICAgdW5z
aWduZWQgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdl
RWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVz
dEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYsIGJvb2wgZW5hYmxlZCk7CiAgICAgdW5zaWdu
ZWQgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKaW5kZXggYTJhZjI1MmIyMGZkLi43MjBmMTEzNmM3ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2ICs1NTQsOSBAQCB0eXBlZGVmIChG
ZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZpbmVk
IHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwg
dW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1bmRlZmluZWQgcmVzZXRJbWFnZUFu
aW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNJbWFnZUFu
aW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCByZXN1bWVJ
bWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCBw
YXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZp
bmVkIHRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKICAgICB1bnNpZ25lZCBsb25nIGltYWdlUGVuZGlu
Z0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7
CiAgICAgdW5kZWZpbmVkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JU
ZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBlbmFibGVkKTsKICAgICB1
bnNpZ25lZCBsb25nIGltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAppbmRleCA2Mzk1NzVmOGRlNTMuLjQ2YTcw
YjgzMzhhMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcApAQCAtMTA2LDYgKzEw
Niw3IEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1bHRzKCkKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGVzZSBleHBlcmltZW50YWwgZmVhdHVyZXMgYXJlIGN1cnJlbnRs
eSB0aGUgb25seSBvbmVzIG5vdCBlbmFibGVkIGZvciBXZWJLaXRMZWdhY3ksIHdlCiAgICAgICAg
ICAgICAvLyBzaG91bGQgZWl0aGVyIGVuYWJsZSB0aGVtIG9yIHN0b3AgZXhwb3NpbmcgdGhlbSAo
YXMgd2UgZG8gd2l0aCB3aXRoIHByZWZlcmVuY2VzKS4KICAgICAgICAgICAgIC8vIEFsbCBvdGhl
ciBleHBlcmltZW50YWwgZmVhdHVyZXMgYXJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCByZWdhcmRs
ZXNzIG9mIHRoZWlyIHNwZWNpZmllZCBkZWZhdWx0cy4KKyAgICAgICAgICAgIHsgIkFuaW1hdGVk
SW1hZ2VzRGlzYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQXN5bmNDbGlwYm9hcmRB
UElFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9s
bGluZ0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQ29udGFjdFBpY2tlckFQSUVu
YWJsZWQiLCBmYWxzZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
T3B0aW9ucy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAppbmRl
eCA1MWY2NWYzMDllYjMuLjJkZmE4OWRjYTg0NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
T3B0aW9ucy5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0
aW9uczo6ZGVmYXVsdHMoKQogICAgICAgICAgICAgeyAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCIsIGZhbHNlIH0sCiAjZW5kaWYKICAgICAgICAgICAgIHsgIkFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMcyIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQi
LCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIs
IHRydWUgfSwKICAgICAgICAgICAgIHsgIkFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
IiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayIsIHRy
dWUgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVlNWU1MTRmYjA0MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1l
bmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdHMgdGhhdCBhbmlt
YXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdlcyBzZXR0
aW5nIGlzIHR1cm5lZCBvbi4KKworUEFTUzogaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1h
Z2UpID09PSBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi41ODBmYWEyYWY3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1s
CkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBBbmltYXRlZEltYWdlc0Rpc2FibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiIgaWQ9
InRlc3RJbWFnZSIgLz4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9ICJUaGlzIHRl
c3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgZGlzYWJsZSBhbmltYXRl
ZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uXG5cbiIKKwkKKyAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJ
bWFnZSIpOworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2Up
KTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFu
aW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRlYnVnKHRlc3RPdXRwdXQp
OworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOworICAgIH0KKzwv
c2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MmE3OWE1MTM0N2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
cGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCB0aGV5IGNh
biBiZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5kaXZpZHVhbGx5LgorCitQQVNTOiBpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgPT09IGZhbHNlCitQQVNTOiBpbnRlcm5hbHMuaXNJbWFn
ZUFuaW1hdGluZyhpbWFnZSkgPT09IHRydWUKK1BBU1M6IGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKGltYWdlKSA9PT0gZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRp
dmlkdWFsLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZmQ5M2EyOTVkZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24u
aHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5naWYi
IGlkPSJ0ZXN0SW1hZ2UiIC8+CisKKzxzY3JpcHQ+CisgICAgdmFyIHRlc3RPdXRwdXQgPSAiVGhp
cyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCB0aGV5IGNhbiBi
ZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5kaXZpZHVhbGx5LlxuXG4iCisgICAgCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0SW1hZ2UiKTsKKyAgICAgICAgc2V0VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gIWludGVybmFscy5pc0ltYWdlQW5pbWF0aW5n
KGltYWdlKSk7CisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiaW50ZXJuYWxzLmlz
SW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgImZhbHNlIik7CisgICAgICAgICAgICBpbnRlcm5hbHMu
cmVzdW1lSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigo
KSA9PiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkpOworICAgICAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJ0
cnVlIik7CisgICAgICAgICAgICBpbnRlcm5hbHMucGF1c2VJbWFnZUFuaW1hdGlvbihpbWFnZSk7
CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyhpbWFnZSkpOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImludGVybmFs
cy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIpOworICAgICAgICAgICAgZGVidWco
dGVzdE91dHB1dCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7
CisgICAgfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1h
bmltYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rp
c2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJlODFkYzMwOTBjZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUaGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIGFsbCBh
bmltYXRpb25zIG9uIGEgcGFnZSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmLgorCitQQVNTOiBp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5p
bWF0aW5nKGltYWdlMikgPT09IGZhbHNlCitQQVNTOiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGlu
ZyhpbWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikgPT09IHRydWUK
K1BBU1M6IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwgaW50ZXJuYWxzLmlz
SW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSA9PT0gZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25z
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
dG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uM2I5ZTBhYjY5NzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlv
bnMuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5n
aWYiIGlkPSJ0ZXN0SW1hZ2UxIiAvPgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRlZDIuZ2lm
IiBpZD0idGVzdEltYWdlMiIgLz4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9ICJU
aGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIGFsbCBhbmlt
YXRpb25zIG9uIGEgcGFnZSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmLlxuXG4iOworICAgIAor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgaW1hZ2UxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RJbWFnZTEiKTsKKyAgICAgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UyIik7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkg
PT4gIWludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikpOworICAgICAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSIsICJmYWxzZSIpOworICAgICAgICAg
ICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgIGF3YWl0IHdh
aXRGb3IoKCkgPT4gaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSAmJiBpbnRlcm5h
bHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0g
ZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpICYmIGludGVybmFscy5p
c0ltYWdlQW5pbWF0aW5nKGltYWdlMikiLCAidHJ1ZSIpOworICAgICAgICAgICAgaW50ZXJuYWxz
LnRvZ2dsZVBhZ2VBbmltYXRpb24oKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4g
IWludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkpOworICAgICAgICAgICAgYXdhaXQg
d2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSk7CisgICAg
ICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
aW1hZ2UxKSB8fCBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpIiwgImZhbHNlIik7
CisgICAgICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGVkMi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5p
bWF0ZWQyLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTliMWZmNjU5MmQyZDgxZjU3OThlYTc2YmNlMWFiNGEx
NzhjMjk2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MDEKemNtWj93YmhFSGI2a3Jmd198Q3hh
Zjk2YyV8N2lAUFVeRTBxV0MkcSE9a3t8QTMzaGYyYTVkNjFVfWdqY2c1cG1XCno3RW9CfGZDeH1G
VmM/S3VWQ0luVipzJFBXR2wjSE4lIXYmUDU0UV5fZChIOUt4YWVwakJPYFZsalFEZ3wwfDQkbQpC
Qm1lKmEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1ZTcx
NGY1N2NiZmIzMmE0NmY0MmMyMTdiMjYzMDhhNjhmZDE4ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN3PGtkfTZhVko0NnMxKjBKXzB6KkxZS2V3TjJOVSpi
R2ZVQSs3MFcle28ybyEmXgp6dXoqNUIyU2s5ZjI/S3tMMTJjej0kQSQkNW4+bUVGVm9xI1djKGAz
YSo9dnIrI3pqWFA4NXl6YlY4b314OFVTZDEKQkI0X3tyCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461871</attachid>
            <date>2022-08-25 18:13:28 -0700</date>
            <delta_ts>2022-08-26 11:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220825181326.patch</filename>
            <type>text/plain</type>
            <size>29832</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA3NmQ1YzhjYTBjYjYxMmI5NjBhMmRiN2Y4NmViODdhNTNlYWY1ZjAwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIEJp
dG1hcEltYWdlIGFuaW1hdGlvbnMuIEFkZGl0aW9uYWxseSwgd2UgcHJvdmlkZSBuZXcgaW50ZXJm
YWNlcyB0byBjb250cm9sIGFuaW1hdGlvbnMgYXQgdGhlIHBhZ2UgYW5kIGluZGl2aWR1YWwgaW1h
Z2UgbGV2ZWwuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1s
OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmlt
YXRpb25zLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291
cmNlcy9hbmltYXRlZDIuZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZjogQWRkZWQuCgpUZXN0cyB0b2dnbGluZyB0aGUgc2V0
dGluZywgdG9nZ2xpbmcgYW5pbWF0aW9ucyBvbiBhbiBlbnRpcmUgcGFnZSwgYW5kIHRvZ2dsaW5n
IGFuIGluZGl2aWR1YWwgYW5pbWF0aW9uLgoKKiBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKCkFkZHMgdGhlIG5ldyBleHBlcmlt
ZW50YWwgZmVhdHVyZSBhbmQgc2V0cyBpdCBvZmYgYnkgZGVmYXVsdC4KCiogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJl
c3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlv
bik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZyBjb25zdCk6CihXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdl
IGFuaW1hdGlvbnMgYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0aW9uLgoKTWV0aG9k
cyB0byBjb250cm9sIHBhZ2Utd2lkZSBhbmltYXRpb25zLiBPbmx5IGZvciB1c2Ugd2hlbiBBbmlt
YXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgaXMgb24uCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRh
dGVGcm9tU2V0dGluZ3MpOgoKR2V0cyBBbmltYXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgZnJv
bSBTZXR0aW5ncyBvYmplY3QuCgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgooV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OnJlc3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cGF1c2VBbmltYXRp
b24pOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CgpO
ZXcgbWV0aG9kcyB0byBjb250cm9sIGEgYml0bWFwIGltYWdlJ3MgYW5pbWF0aW9ucywgYXMgd2Vs
bCBhcyBjaGVja3MgaW4gZXhpc3RpbmcgbWV0aG9kcyB0byBlbnN1cmUgdGhhdCBhbiBpbWFnZSBk
b2VzIG5vdCBzdGFydCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQuCgoqIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKFdlYkNvcmU6OkludGVybmFsczo6cmVzdW1lSW1h
Z2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKToK
KFdlYkNvcmU6OkludGVybmFsczo6dG9nZ2xlUGFnZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGw6CgpOZXcgaW50ZXJuYWwgdGVzdGluZyBtZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGlu
ZyBpcyBvbiAmIGltYWdlcyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3RhdGUKCiogVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOgooV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMpOgoq
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwOgooV1RSOjpUZXN0T3B0aW9u
czo6ZGVmYXVsdHMpOgoKVHVybnMgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCBvZmYgZm9yIGFsbCB0
ZXN0cyAodGhpcyBnZXRzIGVuYWJsZWQgaW4gdGhlIHJlbGV2YW50IHRlc3RzIGFib3ZlKS4KCk1l
dGhvZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiBiYWNrZ3JvdW5kIGltYWdlIGFuaW1hdGlvbnMs
IGFuZCBjaGVjayB3aGV0aGVyIHNvbWV0aGluZyBoYXMgYmFja2dyb3VuZCBpbWFnZXMgdGhhdCBj
YW4gYW5pbWF0ZS4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAgICAg
ICAgICAgfCAgMTIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAgICAgICB8ICA0MCArKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oICAgICAgICB8ICAgOCArKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgICAgICAgICAgICAgICAgICB8ICA0NyArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAgICB8ICAgMyArKwogLi4uL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIHwgIDIzICsrKysrKysrLQogLi4uL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgIHwgICA4ICsrLQogLi4uL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCAgIHwgIDMwICsrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCAgfCAgIDMgKysK
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICB8ICAyMCArKysr
KysrKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAz
ICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAgIDMg
KysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgICB8ICAgMSAr
CiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgfCAgIDEgKwog
Li4uL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dCAgIHwgICA4ICsrKwog
Li4uL21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sICAgICAgIHwgIDI3ICsrKysr
KysrKysKIC4uLm9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAx
MCArKysrCiAuLi4tYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAg
MzMgKysrKysrKysrKysrCiAuLi5hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3Rl
ZC50eHQgfCAgMTAgKysrKwogLi4uYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9u
cy5odG1sIHwgIDM3ICsrKysrKysrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3Vy
Y2VzL2FuaW1hdGVkMi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIC4uLi9hY2Nlc3NpYmlsaXR5
L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiB8IEJpbiAwIC0+IDkwMSBieXRlcwogMjIgZmls
ZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5
LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0
aW9ucy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1s
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3Vy
Y2VzL2FuaW1hdGVkMi5naWYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFs
LnlhbWwKaW5kZXggZTA4ODlmZjlkMDg4Li40ZWMyNTM0ZDZhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
CisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCkBAIC02NSw2ICs2NSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxF
bmFibGVkOgogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0
OiBmYWxzZQorICAgICAgCitBbmltYXRlZEltYWdlc0Rpc2FibGVkOgorICB0eXBlOiBib29sCisg
IGh1bWFuUmVhZGFibGVOYW1lOiAiQ29udHJvbCBhbmltYXRlZCBpbWFnZXMiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkRpc2FibGUgYW5pbWF0aW9ucyBhbmQgdmlldyBhbmltYXRlZCBp
bWFnZXMgYXMgc3RhdGljLiIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAg
ICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKIAogQXJpYVJlZmxlY3Rpb25Gb3JFbGVt
ZW50UmVmZXJlbmNlc0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGFiNjczNjgzMDhiOS4uOTUzOTExYjJkZDcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAKKyNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKQEAg
LTc2Niw2ICs3NjcsMzIgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjphbGxvd3NPcmllbnRhdGlv
bk92ZXJyaWRlKCkgY29uc3QKICAgICByZXR1cm4gIWltYWdlIHx8IGltYWdlLT5zb3VyY2VVUkwo
KS5wcm90b2NvbElzRGF0YSgpIHx8IGNhY2hlZEltYWdlLT5pc0NPUlNTYW1lT3JpZ2luKCk7CiB9
CiAKK0JpdG1hcEltYWdlKiBIVE1MSW1hZ2VFbGVtZW50OjpjYWNoZWRCaXRtYXBJbWFnZSgpIGNv
bnN0Cit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxCaXRtYXBJbWFnZT4oY2FjaGVkSW1hZ2Ut
PmltYWdlKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1l
bnQ6OnJlc3VtZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0
bWFwSW1hZ2UoKSkKKyAgICAgICAgaW1hZ2UtPnJlc3VtZUFuaW1hdGlvbigpOworfQorCit2b2lk
IEhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoYXV0byogaW1h
Z2UgPSBjYWNoZWRCaXRtYXBJbWFnZSgpKQorICAgICAgICBpbWFnZS0+cGF1c2VBbmltYXRpb24o
KTsKK30KKworYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGltYWdlLT5pc0FuaW1hdGluZygpOworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldEF0
dGFjaG1lbnRFbGVtZW50KFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+JiYgYXR0YWNobWVudCkK
QEAgLTk1Nyw0ICs5ODQsMTcgQEAgUmVmPEVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNsb25l
RWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQKICAgICByZXR1cm4g
Y2xvbmU7CiB9CiAKK2Jvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRlZEltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKSB7
CisgICAgICAgIGlmIChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNBbmltYXRlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGF1dG8qIGJpdG1hcEltYWdlID0g
Y2FjaGVkQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuICFiaXRtYXBJbWFnZS0+aXNBbmlt
YXRpb25GaW5pc2hlZCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDZkNTVlMTg3Y2IyNC4uZjkwZWJmZTUyMjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgQ2Fj
aGVkSW1hZ2U7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ7CkBAIC0xNTQsNiArMTU1LDExIEBAIHB1YmxpYzoKICAgICBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSgpIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd3NPcmllbnRhdGlvbk92ZXJy
aWRlKCkgY29uc3Q7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRp
b24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9v
bCBpc0FuaW1hdGluZygpIGNvbnN0OworICAgIGJvb2wgaXNBbmltYXRlZEltYWdlKCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyKTsKQEAgLTIzNiw2ICsyNDIs
OCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgU3RyaW5n
IG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJRDsKICNlbmRpZgorICAgIAorICAgIEJpdG1hcElt
YWdlKiBjYWNoZWRCaXRtYXBJbWFnZSgpIGNvbnN0OwogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxQ
aWN0dXJlRWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkNjMzNzYwZTkxYjQuLmM1
YzU0ODllNzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2Uu
aCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCkBAIC0xNTIsNiAr
MTUzLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UmVjb2du
aXRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1
ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgpAQCAtNDAyNSw0ICs0MDI3LDQ5IEBAIHZvaWQgUGFnZTo6
Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6dG9nZ2xlQWxs
QW5pbWF0aW9uc1doZW5EaXNhYmxlZChib29sIHNob3VsZEFuaW1hdGUpCit7CisgICAgaWYgKCFz
ZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGZvckVhY2hEb2N1bWVudChbc2hvdWxkQW5pbWF0ZV0gKERvY3VtZW50JiBkb2N1bWVu
dCkgeworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVt
ZW50Pihkb2N1bWVudC5yb290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGltYWdl
RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgewor
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRBbmltYXRlKQorICAgICAgICAgICAgICAgICAgICBp
bWFnZUVsZW1lbnQtPnJlc3VtZUFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50LT5wYXVzZUFuaW1hdGlvbigpOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNCYWNrZ3JvdW5kSW1hZ2Uo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGUuc2V0
QmFja2dyb3VuZEltYWdlQW5pbWF0aW9uU3RhdGUoc2hvdWxkQW5pbWF0ZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7Cit9CisKK2Jvb2wg
UGFnZTo6Y29udGFpbnNBbmltYXRlZEltYWdlcygpIGNvbnN0Cit7CisgICAgYm9vbCBmb3VuZEFu
aW1hdGVkSW1hZ2UgPSBmYWxzZTsKKyAgICBmb3JFYWNoRG9jdW1lbnQoWyZmb3VuZEFuaW1hdGVk
SW1hZ2VdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1h
Z2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0JhY2tncm91bmRJbWFnZSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5iYWNrZ3JvdW5kSW1hZ2Vz
Q2FuQW5pbWF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1h
Z2UgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICByZXR1cm4gZm91bmRBbmltYXRlZEltYWdlOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGZjYjFiNjUxMDMzOC4uYjBkNjE4NjhmZDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtOTc2LDYgKzk3Niw5IEBAIHB1YmxpYzoKICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb247IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxsRnJh
bWVzKCk7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBbGxBbmltYXRpb25z
V2hlbkRpc2FibGVkKGJvb2wgc2hvdWxkQW5pbWF0ZSk7CisgICAgYm9vbCBjb250YWluc0FuaW1h
dGVkSW1hZ2VzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhbmFseXplSW1hZ2VzRm9yRmluZEluUGFnZShGdW5jdGlvbjx2b2lk
KCk+JiYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IGE4N2FjNjkwYjJlYy4uMzk1NzEzNWY0MTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03
MCw2ICs3MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBT
ZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgbV9hbGxvd1N1YnNhbXBsaW5nID0gc2V0dGluZ3MuaW1h
Z2VTdWJzYW1wbGluZ0VuYWJsZWQoKTsKICAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVj
b2RpbmcgPSBzZXR0aW5ncy5hbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoKTsKICAg
ICBtX3Nob3dEZWJ1Z0JhY2tncm91bmQgPSBzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJzKCk7Cisg
ICAgbV9kaXNhYmxlSW1hZ2VBbmltYXRpb24gPSBzZXR0aW5ncy5hbmltYXRlZEltYWdlc0Rpc2Fi
bGVkKCk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRl
c3Ryb3lBbGwpCkBAIC0yNDYsNyArMjQ3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVO
Q1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3
aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09
IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdN
b2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMgJiYgIW1fZGlzYWJsZUltYWdlQW5p
bWF0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAgQVNTRVJU
KCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKIApAQCAtMzc0LDcgKzM3
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogYm9vbCBCaXRtYXBJbWFnZTo6c2hvdWxk
QW5pbWF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlcGV0aXRpb25Db3VudCgpICYmICFtX2Fu
aW1hdGlvbkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2ZXIoKTsKKyAgICByZXR1cm4gcmVwZXRpdGlv
bkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQgJiYgaW1hZ2VPYnNlcnZlcigpICYmICgh
bV9kaXNhYmxlSW1hZ2VBbmltYXRpb24gfHwgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRp
b24pOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkgY29uc3QKQEAgLTY3Niw0
ICs2NzcsMjIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QK
ICAgICBtX3NvdXJjZS0+ZHVtcCh0cyk7CiB9CiAKK3ZvaWQgQml0bWFwSW1hZ2U6OnJlc3VtZUFu
aW1hdGlvbigpCit7CisgICAgaWYgKG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQor
ICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSB0
cnVlOworICAgIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKK30KKwordm9pZCBCaXRtYXBJbWFn
ZTo6cGF1c2VBbmltYXRpb24oKQoreworICAgIGlmICghbV9zaG91bGRBbGxvd0luZGl2aWR1YWxB
bmltYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBzdG9wQW5pbWF0aW9uKCk7CisgICAgbV9z
aG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsKK30KKworCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGQzZjRm
ZWJkMDgwNC4uMjE4YzJiYTU5OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE1OCw2ICsxNTgsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2Rl
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb24oKTsKKyAgICB2
b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgaXNBbmltYXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9uRmluaXNoZWQ7IH07CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1h
Z2UoUmVmPE5hdGl2ZUltYWdlPiYmKTsKQEAgLTE5NSw3ICsxOTksNiBAQCBwcml2YXRlOgogICAg
IFN0YXJ0QW5pbWF0aW9uU3RhdHVzIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lk
IGFkdmFuY2VBbmltYXRpb24oKTsKICAgICB2b2lkIGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigp
OwotICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBs
b29rIHVudXN1YWwgdGhhdCB0aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJs
aWMgQVBJLiBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRp
bmcgbGF6aWx5LiBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGlt
YWdlLiBJdCB3aWxsCkBAIC0yNDcsNiArMjUwLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJv
b2wgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvd0RlYnVnQmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rpc2FibGVJbWFn
ZUFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFu
aW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGFnZUFuaW1hdGlvbkVuYWJsZWQgeyBm
YWxzZSB9OwogCiAgICAgYm9vbCBtX2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RG
b3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdF
bmFibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjZGIxOTdkNTNjNTMuLjE0NjE2YTVkZGJlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBA
IC0yMywxMSArMjMsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZS5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJDb250ZW50RGF0YS5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNs
dWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCkBAIC00NTEsNiArNDUzLDM0IEBAIFJlbmRlclN0eWxl
KiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBwc2V1CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6
c2V0QmFja2dyb3VuZEltYWdlQW5pbWF0aW9uU3RhdGUoYm9vbCBzaG91bGRBbmltYXRlKQorewor
ICAgIGZvciAoYXV0byBmaWxsTGF5ZXIgPSAmYmFja2dyb3VuZExheWVycygpOyBmaWxsTGF5ZXI7
IGZpbGxMYXllciA9IGZpbGxMYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBjYWNo
ZWRCYWNrZ3JvdW5kSW1hZ2UgPSBmaWxsTGF5ZXItPmltYWdlKCktPmNhY2hlZEltYWdlKCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZ3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5k
SW1hZ2UtPmltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBiYWNrZ3JvdW5kQml0bWFw
SW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmJhY2tncm91bmRJbWFnZSk7CisgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEFuaW1hdGUpCisgICAgICAgICAgICAgICAgICAgIGJhY2tncm91
bmRCaXRtYXBJbWFnZS5yZXN1bWVBbmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRCaXRtYXBJbWFnZS5wYXVzZUFuaW1hdGlvbigp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitib29sIFJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kSW1hZ2VzQ2FuQW5pbWF0ZSgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvIGZp
bGxMYXllciA9ICZiYWNrZ3JvdW5kTGF5ZXJzKCk7IGZpbGxMYXllcjsgZmlsbExheWVyID0gZmls
bExheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFn
ZSA9IGZpbGxMYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIGJhY2tncm91bmRJbWFnZSA9IGNhY2hlZEJhY2tncm91bmRJbWFnZS0+aW1hZ2UoKSkg
eworICAgICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kSW1hZ2UtPmlzQW5pbWF0ZWQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0
ZWRFcXVhbChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
aW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwN2Q1MTE4ZWJiOTAuLjc1M2Y5
NmNmYzFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTI0Myw2ICsyNDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQ
c2V1ZG9JZCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQp
OwogICAgIGJvb2wgaGFzVW5pcXVlUHNldWRvU3R5bGUoKSBjb25zdDsKKyAgICAKKyAgICB2b2lk
IHNldEJhY2tncm91bmRJbWFnZUFuaW1hdGlvblN0YXRlKGJvb2wgc2hvdWxkQW5pbWF0ZSk7Cisg
ICAgYm9vbCBiYWNrZ3JvdW5kSW1hZ2VzQ2FuQW5pbWF0ZSgpIGNvbnN0OwogCiAgICAgLy8gYXR0
cmlidXRlIGdldHRlciBtZXRob2RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBkYzY0MmM1NWJjOWQuLjY5ZGVlZDYwMWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2LDI2IEBAIGJvb2wgSW50ZXJuYWxzOjppc0ltYWdl
QW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYm
IChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsKIH0K
IAordm9pZCBJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5yZXN1bWVBbmltYXRpb24oKTsKK30KKwordm9pZCBJ
bnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICBlbGVtZW50LnBhdXNlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp0
b2dnbGVQYWdlQW5pbWF0aW9uKGJvb2wgc2hvdWxkQW5pbWF0ZSkKK3sKKyAgICBhdXRvKiBkb2N1
bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50
LT5mcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50LT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnRvZ2dsZUFsbEFuaW1hdGlvbnNXaGVuRGlzYWJs
ZWQoc2hvdWxkQW5pbWF0ZSk7Cit9CisKIHVuc2lnbmVkIEludGVybmFsczo6aW1hZ2VQZW5kaW5n
RGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICByZXR1cm4gZWxlbWVudC5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3Rp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDUxNWRhYjM3YWFjZi4uNGEw
ZDdmODA5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIxOSw2ICsyMTks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1M
SW1hZ2VFbGVtZW50JiwgZmxvYXQgZHVyYXRpb24pOwogICAgIHZvaWQgcmVzZXRJbWFnZUFuaW1h
dGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgYm9vbCBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJ
bWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVs
ZW1lbnQmKTsKKyAgICB2b2lkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYp
OworICAgIHZvaWQgdG9nZ2xlUGFnZUFuaW1hdGlvbihib29sKTsKICAgICB1bnNpZ25lZCBpbWFn
ZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7
CiAgICAgdm9pZCBzZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGlu
ZyhIVE1MSW1hZ2VFbGVtZW50JiwgYm9vbCBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBpbWFnZURl
Y29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBhMmFmMjUyYjIwZmQuLmQ0NDM4NzQ3YmVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtNTU0LDYgKzU1NCw5IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVz
dCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKICAgICB1bmRlZmluZWQgc2V0SW1hZ2VG
cmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0
ZWQgZmxvYXQgZHVyYXRpb24pOwogICAgIHVuZGVmaW5lZCByZXNldEltYWdlQW5pbWF0aW9uKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc0ltYWdlQW5pbWF0aW5nKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHJlc3VtZUltYWdlQW5pbWF0
aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHBhdXNlSW1hZ2VB
bmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgdG9nZ2xl
UGFnZUFuaW1hdGlvbihib29sZWFuIHNob3VsZEFuaW1hdGUpOwogICAgIHVuc2lnbmVkIGxvbmcg
aW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVu
dCBlbGVtZW50KTsKICAgICB1bmRlZmluZWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1l
UmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGVuYWJs
ZWQpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50
IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IDYzOTU3NWY4
ZGU1My4uNDZhNzBiODMzOGEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9ucy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBA
IC0xMDYsNiArMTA2LDcgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVs
dHMoKQogICAgICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBh
cmUgY3VycmVudGx5IHRoZSBvbmx5IG9uZXMgbm90IGVuYWJsZWQgZm9yIFdlYktpdExlZ2FjeSwg
d2UKICAgICAgICAgICAgIC8vIHNob3VsZCBlaXRoZXIgZW5hYmxlIHRoZW0gb3Igc3RvcCBleHBv
c2luZyB0aGVtIChhcyB3ZSBkbyB3aXRoIHdpdGggcHJlZmVyZW5jZXMpLgogICAgICAgICAgICAg
Ly8gQWxsIG90aGVyIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBhcmUgYXV0b21hdGljYWxseSBlbmFi
bGVkIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgc3BlY2lmaWVkIGRlZmF1bHRzLgorICAgICAgICAgICAg
eyAiQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBc3lu
Y0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQ1NTT01WaWV3
U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJDb250YWN0
UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuY3BwCmluZGV4IDUxZjY1ZjMwOWViMy4uMmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmNwcApAQCAtNjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVhdHVy
ZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkIiwgZmFsc2UgfSwKICNlbmRpZgogICAgICAgICAgICAgeyAiQWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJbWFn
ZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRpYVBs
YXliYWNrIiwgdHJ1ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWU1ZTUxNGZiMDQxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0
cyB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0ZWQg
aW1hZ2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLgorCitQQVNTOiBpbnRlcm5hbHMuaXNJbWFnZUFu
aW1hdGluZyhpbWFnZSkgPT09IGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU4MGZhYTJhZjcwZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1l
bmFibGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRp
b24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorCis8c2NyaXB0PgorICAgIHZhciB0ZXN0T3V0cHV0
ID0gIlRoaXMgdGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNh
YmxlIGFuaW1hdGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi5cblxuIgorCQorICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdEltYWdlIik7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyhpbWFnZSkpOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImludGVybmFs
cy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIpOworICAgICAgICAgICAgZGVidWco
dGVzdE91dHB1dCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7
CisgICAgfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1
YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQyYTc5YTUxMzQ3Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJs
ZWQsIHRoZXkgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHkuCisKK1BBU1M6
IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSA9PT0gZmFsc2UKK1BBU1M6IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSA9PT0gdHJ1ZQorUEFTUzogaW50ZXJuYWxzLmlz
SW1hZ2VBbmltYXRpbmcoaW1hZ2UpID09PSBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5mZDkzYTI5NWRkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFs
LWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBBbmltYXRlZEltYWdlc0Rpc2FibGVkPXRydWUgXSAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5p
bWF0aW9uLmdpZiIgaWQ9InRlc3RJbWFnZSIgLz4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91
dHB1dCA9ICJUaGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQs
IHRoZXkgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHkuXG5cbiIKKyAgICAK
KyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1h
Z2VBbmltYXRpbmcoaW1hZ2UpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiKTsKKyAgICAgICAgICAg
IGludGVybmFscy5yZXN1bWVJbWFnZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAgICBhd2Fp
dCB3YWl0Rm9yKCgpID0+IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSk7CisgICAg
ICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
aW1hZ2UpIiwgInRydWUiKTsKKyAgICAgICAgICAgIGludGVybmFscy5wYXVzZUltYWdlQW5pbWF0
aW9uKGltYWdlKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gIWludGVybmFscy5p
c0ltYWdlQW5pbWF0aW5nKGltYWdlKSk7CisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVj
dCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgImZhbHNlIik7CisgICAgICAg
ICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRv
Z2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmU4MWRjMzA5
MGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNh
YmxlZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYu
CisKK1BBU1M6IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwgaW50ZXJuYWxz
LmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSA9PT0gZmFsc2UKK1BBU1M6IGludGVybmFscy5pc0lt
YWdlQW5pbWF0aW5nKGltYWdlMSkgJiYgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2Uy
KSA9PT0gdHJ1ZQorUEFTUzogaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSB8fCBp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpID09PSBmYWxzZQorCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdl
LWFuaW1hdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYzBmOTZiZjBkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBh
Z2UtYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBbmltYXRlZEltYWdlc0Rpc2FibGVkPXRydWUgXSAtLT4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMv
YW5pbWF0aW9uLmdpZiIgaWQ9InRlc3RJbWFnZTEiIC8+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2Fu
aW1hdGVkMi5naWYiIGlkPSJ0ZXN0SW1hZ2UyIiAvPgorCis8c2NyaXB0PgorICAgIHZhciB0ZXN0
T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxl
ZCwgYWxsIGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuXG5c
biI7CisgICAgCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHZhciBpbWFnZTEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB2YXIgaW1hZ2Uy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZTIiKTsKKyAgICAgICAgc2V0VGlt
ZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4g
IWludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkpOworICAgICAgICAgICAgYXdhaXQg
d2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSk7CisgICAg
ICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
aW1hZ2UxKSB8fCBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpIiwgImZhbHNlIik7
CisgICAgICAgICAgICBpbnRlcm5hbHMudG9nZ2xlUGFnZUFuaW1hdGlvbih0cnVlKTsKKyAgICAg
ICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1h
Z2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpKTsKKyAgICAgICAgICAg
IHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEp
ICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikiLCAidHJ1ZSIpOworICAgICAg
ICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24oZmFsc2UpOworICAgICAgICAgICAg
YXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSk7
CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyhpbWFnZTIpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5h
bHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpIHx8IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5n
KGltYWdlMikiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRlYnVnKHRlc3RPdXRwdXQpOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZiBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5OWIxZmY2NTkyZDJk
ODFmNTc5OGVhNzZiY2UxYWI0YTE3OGMyOTYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6
Y21aP3diaEVIYjZrcmZ3X3xDeGFmOTZjJXw3aUBQVV5FMHFXQyRxIT1re3xBMzNoZjJhNWQ2MVV9
Z2pjZzVwbVcKejdFb0J8ZkN4fUZWYz9LdVZDSW5WKnMkUFdHbCNITiUhdiZQNTRRXl9kKEg5S3hh
ZXBqQk9gVmxqUURnfDB8NCRtCkJCbWUqYQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5n
aWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdp
ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZDVlNzE0ZjU3Y2JmYjMyYTQ2ZjQyYzIxN2IyNjMwOGE2OGZkMThlCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MDEKemNtWj93YmhFSGI2a3Jmd198Q3c8a2R9NmFWSjQ2
czEqMEpfMHoqTFlLZXdOMk5VKmJHZlVBKzcwVyV7bzJvISZeCnp1eio1QjJTazlmMj9Le0wxMmN6
PSRBJCQ1bj5tRUZWb3EjV2MoYDNhKj12cisjempYUDg1eXpiVjhvfXg4VVNkMQpCQjRfe3IKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461892</attachid>
            <date>2022-08-26 11:59:19 -0700</date>
            <delta_ts>2022-08-30 10:21:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220826115917.patch</filename>
            <type>text/plain</type>
            <size>29858</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBkZTQ2OTcyODZmOWQyMjg2Yzc4ZWMyNDYzYmEzNWFlYTNhOTAwYTE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIEJp
dG1hcEltYWdlIGFuaW1hdGlvbnMuIEFkZGl0aW9uYWxseSwgd2UgcHJvdmlkZSBuZXcgaW50ZXJm
YWNlcyB0byBjb250cm9sIGFuaW1hdGlvbnMgYXQgdGhlIHBhZ2UgYW5kIGluZGl2aWR1YWwgaW1h
Z2UgbGV2ZWwuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1s
OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmlt
YXRpb25zLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291
cmNlcy9hbmltYXRlZDIuZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZjogQWRkZWQuCgpUZXN0cyB0b2dnbGluZyB0aGUgc2V0
dGluZywgdG9nZ2xpbmcgYW5pbWF0aW9ucyBvbiBhbiBlbnRpcmUgcGFnZSwgYW5kIHRvZ2dsaW5n
IGFuIGluZGl2aWR1YWwgYW5pbWF0aW9uLgoKKiBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKCkFkZHMgdGhlIG5ldyBleHBlcmlt
ZW50YWwgZmVhdHVyZSBhbmQgc2V0cyBpdCBvZmYgYnkgZGVmYXVsdC4KCiogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJl
c3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlv
bik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZyBjb25zdCk6CihXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdl
IGFuaW1hdGlvbnMgYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0aW9uLgoKTWV0aG9k
cyB0byBjb250cm9sIHBhZ2Utd2lkZSBhbmltYXRpb25zLiBPbmx5IGZvciB1c2Ugd2hlbiBBbmlt
YXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgaXMgb24uCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRh
dGVGcm9tU2V0dGluZ3MpOgoKR2V0cyBBbmltYXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgZnJv
bSBTZXR0aW5ncyBvYmplY3QuCgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgooV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OnJlc3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cGF1c2VBbmltYXRp
b24pOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CgpO
ZXcgbWV0aG9kcyB0byBjb250cm9sIGEgYml0bWFwIGltYWdlJ3MgYW5pbWF0aW9ucywgYXMgd2Vs
bCBhcyBjaGVja3MgaW4gZXhpc3RpbmcgbWV0aG9kcyB0byBlbnN1cmUgdGhhdCBhbiBpbWFnZSBk
b2VzIG5vdCBzdGFydCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQuCgoqIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKFdlYkNvcmU6OkludGVybmFsczo6cmVzdW1lSW1h
Z2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKToK
KFdlYkNvcmU6OkludGVybmFsczo6dG9nZ2xlUGFnZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGw6CgpOZXcgaW50ZXJuYWwgdGVzdGluZyBtZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGlu
ZyBpcyBvbiAmIGltYWdlcyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3RhdGUKCiogVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOgooV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMpOgoq
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwOgooV1RSOjpUZXN0T3B0aW9u
czo6ZGVmYXVsdHMpOgoKVHVybnMgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCBvZmYgZm9yIGFsbCB0
ZXN0cyAodGhpcyBnZXRzIGVuYWJsZWQgaW4gdGhlIHJlbGV2YW50IHRlc3RzIGFib3ZlKS4KCk1l
dGhvZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiBiYWNrZ3JvdW5kIGltYWdlIGFuaW1hdGlvbnMs
IGFuZCBjaGVjayB3aGV0aGVyIHNvbWV0aGluZyBoYXMgYmFja2dyb3VuZCBpbWFnZXMgdGhhdCBj
YW4gYW5pbWF0ZS4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAgICAg
ICAgICAgfCAgMTIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAgICAgICB8ICA0MCArKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oICAgICAgICB8ICAgOCArKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgICAgICAgICAgICAgICAgICB8ICA0NyArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAgICB8ICAgMyArKwogLi4uL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIHwgIDIzICsrKysrKysrLQogLi4uL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgIHwgICA4ICsrLQogLi4uL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCAgIHwgIDMwICsrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCAgfCAgIDMgKysK
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICB8ICAyMCArKysr
KysrKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAz
ICsrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAgIDMg
KysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgICB8ICAgMSAr
CiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgfCAgIDEgKwog
Li4uL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dCAgIHwgICA4ICsrKwog
Li4uL21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sICAgICAgIHwgIDI2ICsrKysr
KysrKysKIC4uLm9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAx
MCArKysrCiAuLi4tYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAg
MzIgKysrKysrKysrKysrCiAuLi5hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3Rl
ZC50eHQgfCAgMTAgKysrKwogLi4uYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9u
cy5odG1sIHwgIDM3ICsrKysrKysrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3Vy
Y2VzL2FuaW1hdGVkMi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIC4uLi9hY2Nlc3NpYmlsaXR5
L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiB8IEJpbiAwIC0+IDkwMSBieXRlcwogMjIgZmls
ZXMgY2hhbmdlZCwgMzIyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5
LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0
aW9ucy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1s
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3Vy
Y2VzL2FuaW1hdGVkMi5naWYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFs
LnlhbWwKaW5kZXggZTA4ODlmZjlkMDg4Li40ZWMyNTM0ZDZhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
CisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCkBAIC02NSw2ICs2NSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxF
bmFibGVkOgogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0
OiBmYWxzZQorICAgICAgCitBbmltYXRlZEltYWdlc0Rpc2FibGVkOgorICB0eXBlOiBib29sCisg
IGh1bWFuUmVhZGFibGVOYW1lOiAiQ29udHJvbCBhbmltYXRlZCBpbWFnZXMiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkRpc2FibGUgYW5pbWF0aW9ucyBhbmQgdmlldyBhbmltYXRlZCBp
bWFnZXMgYXMgc3RhdGljLiIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAg
ICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKIAogQXJpYVJlZmxlY3Rpb25Gb3JFbGVt
ZW50UmVmZXJlbmNlc0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGFiNjczNjgzMDhiOS4uOTUzOTExYjJkZDcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAKKyNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKQEAg
LTc2Niw2ICs3NjcsMzIgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjphbGxvd3NPcmllbnRhdGlv
bk92ZXJyaWRlKCkgY29uc3QKICAgICByZXR1cm4gIWltYWdlIHx8IGltYWdlLT5zb3VyY2VVUkwo
KS5wcm90b2NvbElzRGF0YSgpIHx8IGNhY2hlZEltYWdlLT5pc0NPUlNTYW1lT3JpZ2luKCk7CiB9
CiAKK0JpdG1hcEltYWdlKiBIVE1MSW1hZ2VFbGVtZW50OjpjYWNoZWRCaXRtYXBJbWFnZSgpIGNv
bnN0Cit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxCaXRtYXBJbWFnZT4oY2FjaGVkSW1hZ2Ut
PmltYWdlKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1l
bnQ6OnJlc3VtZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0
bWFwSW1hZ2UoKSkKKyAgICAgICAgaW1hZ2UtPnJlc3VtZUFuaW1hdGlvbigpOworfQorCit2b2lk
IEhUTUxJbWFnZUVsZW1lbnQ6OnBhdXNlQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoYXV0byogaW1h
Z2UgPSBjYWNoZWRCaXRtYXBJbWFnZSgpKQorICAgICAgICBpbWFnZS0+cGF1c2VBbmltYXRpb24o
KTsKK30KKworYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGltYWdlLT5pc0FuaW1hdGluZygpOworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldEF0
dGFjaG1lbnRFbGVtZW50KFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+JiYgYXR0YWNobWVudCkK
QEAgLTk1Nyw0ICs5ODQsMTcgQEAgUmVmPEVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNsb25l
RWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQKICAgICByZXR1cm4g
Y2xvbmU7CiB9CiAKK2Jvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRlZEltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKSB7
CisgICAgICAgIGlmIChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNBbmltYXRlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGF1dG8qIGJpdG1hcEltYWdlID0g
Y2FjaGVkQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuICFiaXRtYXBJbWFnZS0+aXNBbmlt
YXRpb25GaW5pc2hlZCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDZkNTVlMTg3Y2IyNC4uZjkwZWJmZTUyMjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgQ2Fj
aGVkSW1hZ2U7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ7CkBAIC0xNTQsNiArMTU1LDExIEBAIHB1YmxpYzoKICAgICBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSgpIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd3NPcmllbnRhdGlvbk92ZXJy
aWRlKCkgY29uc3Q7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRp
b24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9v
bCBpc0FuaW1hdGluZygpIGNvbnN0OworICAgIGJvb2wgaXNBbmltYXRlZEltYWdlKCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyKTsKQEAgLTIzNiw2ICsyNDIs
OCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgU3RyaW5n
IG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJRDsKICNlbmRpZgorICAgIAorICAgIEJpdG1hcElt
YWdlKiBjYWNoZWRCaXRtYXBJbWFnZSgpIGNvbnN0OwogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxQ
aWN0dXJlRWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkNjMzNzYwZTkxYjQuLmM1
YzU0ODllNzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2Uu
aCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCkBAIC0xNTIsNiAr
MTUzLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UmVjb2du
aXRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1
ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgpAQCAtNDAyNSw0ICs0MDI3LDQ5IEBAIHZvaWQgUGFnZTo6
Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6dG9nZ2xlQWxs
QW5pbWF0aW9uc1doZW5EaXNhYmxlZChib29sIHNob3VsZEFuaW1hdGUpCit7CisgICAgaWYgKCFz
ZXR0aW5ncygpLmFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGZvckVhY2hEb2N1bWVudChbc2hvdWxkQW5pbWF0ZV0gKERvY3VtZW50JiBkb2N1bWVu
dCkgeworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVt
ZW50Pihkb2N1bWVudC5yb290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGltYWdl
RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgewor
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRBbmltYXRlKQorICAgICAgICAgICAgICAgICAgICBp
bWFnZUVsZW1lbnQtPnJlc3VtZUFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50LT5wYXVzZUFuaW1hdGlvbigpOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNCYWNrZ3JvdW5kSW1hZ2Uo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGUuc2V0
QmFja2dyb3VuZEltYWdlQW5pbWF0aW9uU3RhdGUoc2hvdWxkQW5pbWF0ZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7Cit9CisKK2Jvb2wg
UGFnZTo6Y29udGFpbnNBbmltYXRlZEltYWdlcygpIGNvbnN0Cit7CisgICAgYm9vbCBmb3VuZEFu
aW1hdGVkSW1hZ2UgPSBmYWxzZTsKKyAgICBmb3JFYWNoRG9jdW1lbnQoWyZmb3VuZEFuaW1hdGVk
SW1hZ2VdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1h
Z2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0JhY2tncm91bmRJbWFnZSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5iYWNrZ3JvdW5kSW1hZ2Vz
Q2FuQW5pbWF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEFuaW1hdGVkSW1h
Z2UgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICByZXR1cm4gZm91bmRBbmltYXRlZEltYWdlOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGZjYjFiNjUxMDMzOC4uYjBkNjE4NjhmZDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtOTc2LDYgKzk3Niw5IEBAIHB1YmxpYzoKICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb247IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxsRnJh
bWVzKCk7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBbGxBbmltYXRpb25z
V2hlbkRpc2FibGVkKGJvb2wgc2hvdWxkQW5pbWF0ZSk7CisgICAgYm9vbCBjb250YWluc0FuaW1h
dGVkSW1hZ2VzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhbmFseXplSW1hZ2VzRm9yRmluZEluUGFnZShGdW5jdGlvbjx2b2lk
KCk+JiYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IGE4N2FjNjkwYjJlYy4uMzk1NzEzNWY0MTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03
MCw2ICs3MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBT
ZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgbV9hbGxvd1N1YnNhbXBsaW5nID0gc2V0dGluZ3MuaW1h
Z2VTdWJzYW1wbGluZ0VuYWJsZWQoKTsKICAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVj
b2RpbmcgPSBzZXR0aW5ncy5hbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoKTsKICAg
ICBtX3Nob3dEZWJ1Z0JhY2tncm91bmQgPSBzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJzKCk7Cisg
ICAgbV9kaXNhYmxlSW1hZ2VBbmltYXRpb24gPSBzZXR0aW5ncy5hbmltYXRlZEltYWdlc0Rpc2Fi
bGVkKCk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRl
c3Ryb3lBbGwpCkBAIC0yNDYsNyArMjQ3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVO
Q1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3
aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IGltYWdlOwotICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09
IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdN
b2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMgJiYgIW1fZGlzYWJsZUltYWdlQW5p
bWF0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAgQVNTRVJU
KCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKIApAQCAtMzc0LDcgKzM3
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogYm9vbCBCaXRtYXBJbWFnZTo6c2hvdWxk
QW5pbWF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlcGV0aXRpb25Db3VudCgpICYmICFtX2Fu
aW1hdGlvbkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2ZXIoKTsKKyAgICByZXR1cm4gcmVwZXRpdGlv
bkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQgJiYgaW1hZ2VPYnNlcnZlcigpICYmICgh
bV9kaXNhYmxlSW1hZ2VBbmltYXRpb24gfHwgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRp
b24pOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkgY29uc3QKQEAgLTY3Niw0
ICs2NzcsMjIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QK
ICAgICBtX3NvdXJjZS0+ZHVtcCh0cyk7CiB9CiAKK3ZvaWQgQml0bWFwSW1hZ2U6OnJlc3VtZUFu
aW1hdGlvbigpCit7CisgICAgaWYgKG1fc2hvdWxkQWxsb3dJbmRpdmlkdWFsQW5pbWF0aW9uKQor
ICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSB0
cnVlOworICAgIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKK30KKwordm9pZCBCaXRtYXBJbWFn
ZTo6cGF1c2VBbmltYXRpb24oKQoreworICAgIGlmICghbV9zaG91bGRBbGxvd0luZGl2aWR1YWxB
bmltYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBzdG9wQW5pbWF0aW9uKCk7CisgICAgbV9z
aG91bGRBbGxvd0luZGl2aWR1YWxBbmltYXRpb24gPSBmYWxzZTsKK30KKworCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGQzZjRm
ZWJkMDgwNC4uMjE4YzJiYTU5OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE1OCw2ICsxNTgsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2Rl
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb24oKTsKKyAgICB2
b2lkIHBhdXNlQW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgaXNBbmltYXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9uRmluaXNoZWQ7IH07CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1h
Z2UoUmVmPE5hdGl2ZUltYWdlPiYmKTsKQEAgLTE5NSw3ICsxOTksNiBAQCBwcml2YXRlOgogICAg
IFN0YXJ0QW5pbWF0aW9uU3RhdHVzIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lk
IGFkdmFuY2VBbmltYXRpb24oKTsKICAgICB2b2lkIGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigp
OwotICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBs
b29rIHVudXN1YWwgdGhhdCB0aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJs
aWMgQVBJLiBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRp
bmcgbGF6aWx5LiBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGlt
YWdlLiBJdCB3aWxsCkBAIC0yNDcsNiArMjUwLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJv
b2wgbV9hbGxvd0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvd0RlYnVnQmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rpc2FibGVJbWFn
ZUFuaW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZEFsbG93SW5kaXZpZHVhbEFu
aW1hdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGFnZUFuaW1hdGlvbkVuYWJsZWQgeyBm
YWxzZSB9OwogCiAgICAgYm9vbCBtX2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RG
b3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdF
bmFibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjZGIxOTdkNTNjNTMuLjE0NjE2YTVkZGJlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBA
IC0yMywxMSArMjMsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZS5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJDb250ZW50RGF0YS5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNs
dWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCkBAIC00NTEsNiArNDUzLDM0IEBAIFJlbmRlclN0eWxl
KiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBwc2V1CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6
c2V0QmFja2dyb3VuZEltYWdlQW5pbWF0aW9uU3RhdGUoYm9vbCBzaG91bGRBbmltYXRlKQorewor
ICAgIGZvciAoYXV0byBmaWxsTGF5ZXIgPSAmYmFja2dyb3VuZExheWVycygpOyBmaWxsTGF5ZXI7
IGZpbGxMYXllciA9IGZpbGxMYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBjYWNo
ZWRCYWNrZ3JvdW5kSW1hZ2UgPSBmaWxsTGF5ZXItPmltYWdlKCktPmNhY2hlZEltYWdlKCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZ3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5k
SW1hZ2UtPmltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBiYWNrZ3JvdW5kQml0bWFw
SW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmJhY2tncm91bmRJbWFnZSk7CisgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEFuaW1hdGUpCisgICAgICAgICAgICAgICAgICAgIGJhY2tncm91
bmRCaXRtYXBJbWFnZS5yZXN1bWVBbmltYXRpb24oKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRCaXRtYXBJbWFnZS5wYXVzZUFuaW1hdGlvbigp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitib29sIFJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kSW1hZ2VzQ2FuQW5pbWF0ZSgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvIGZp
bGxMYXllciA9ICZiYWNrZ3JvdW5kTGF5ZXJzKCk7IGZpbGxMYXllcjsgZmlsbExheWVyID0gZmls
bExheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEJhY2tncm91bmRJbWFn
ZSA9IGZpbGxMYXllci0+aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIGJhY2tncm91bmRJbWFnZSA9IGNhY2hlZEJhY2tncm91bmRJbWFnZS0+aW1hZ2UoKSkg
eworICAgICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kSW1hZ2UtPmlzQW5pbWF0ZWQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0
ZWRFcXVhbChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
aW5oZXJpdGVkRmxhZ3MgPT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwN2Q1MTE4ZWJiOTAuLjc1M2Y5
NmNmYzFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTI0Myw2ICsyNDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQ
c2V1ZG9JZCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQp
OwogICAgIGJvb2wgaGFzVW5pcXVlUHNldWRvU3R5bGUoKSBjb25zdDsKKyAgICAKKyAgICB2b2lk
IHNldEJhY2tncm91bmRJbWFnZUFuaW1hdGlvblN0YXRlKGJvb2wgc2hvdWxkQW5pbWF0ZSk7Cisg
ICAgYm9vbCBiYWNrZ3JvdW5kSW1hZ2VzQ2FuQW5pbWF0ZSgpIGNvbnN0OwogCiAgICAgLy8gYXR0
cmlidXRlIGdldHRlciBtZXRob2RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBkYzY0MmM1NWJjOWQuLjY5ZGVlZDYwMWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2LDI2IEBAIGJvb2wgSW50ZXJuYWxzOjppc0ltYWdl
QW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYm
IChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsKIH0K
IAordm9pZCBJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5yZXN1bWVBbmltYXRpb24oKTsKK30KKwordm9pZCBJ
bnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICBlbGVtZW50LnBhdXNlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp0
b2dnbGVQYWdlQW5pbWF0aW9uKGJvb2wgc2hvdWxkQW5pbWF0ZSkKK3sKKyAgICBhdXRvKiBkb2N1
bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50
LT5mcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50LT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnRvZ2dsZUFsbEFuaW1hdGlvbnNXaGVuRGlzYWJs
ZWQoc2hvdWxkQW5pbWF0ZSk7Cit9CisKIHVuc2lnbmVkIEludGVybmFsczo6aW1hZ2VQZW5kaW5n
RGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICByZXR1cm4gZWxlbWVudC5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3Rp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDUxNWRhYjM3YWFjZi4uNGEw
ZDdmODA5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIxOSw2ICsyMTks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1M
SW1hZ2VFbGVtZW50JiwgZmxvYXQgZHVyYXRpb24pOwogICAgIHZvaWQgcmVzZXRJbWFnZUFuaW1h
dGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgYm9vbCBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJ
bWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVs
ZW1lbnQmKTsKKyAgICB2b2lkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYp
OworICAgIHZvaWQgdG9nZ2xlUGFnZUFuaW1hdGlvbihib29sKTsKICAgICB1bnNpZ25lZCBpbWFn
ZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7
CiAgICAgdm9pZCBzZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGlu
ZyhIVE1MSW1hZ2VFbGVtZW50JiwgYm9vbCBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBpbWFnZURl
Y29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBhMmFmMjUyYjIwZmQuLmQ0NDM4NzQ3YmVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtNTU0LDYgKzU1NCw5IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVz
dCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKICAgICB1bmRlZmluZWQgc2V0SW1hZ2VG
cmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0
ZWQgZmxvYXQgZHVyYXRpb24pOwogICAgIHVuZGVmaW5lZCByZXNldEltYWdlQW5pbWF0aW9uKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc0ltYWdlQW5pbWF0aW5nKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHJlc3VtZUltYWdlQW5pbWF0
aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHBhdXNlSW1hZ2VB
bmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgdG9nZ2xl
UGFnZUFuaW1hdGlvbihib29sZWFuIHNob3VsZEFuaW1hdGUpOwogICAgIHVuc2lnbmVkIGxvbmcg
aW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVu
dCBlbGVtZW50KTsKICAgICB1bmRlZmluZWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1l
UmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGVuYWJs
ZWQpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50
IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IDYzOTU3NWY4
ZGU1My4uNDZhNzBiODMzOGEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9ucy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBA
IC0xMDYsNiArMTA2LDcgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVs
dHMoKQogICAgICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBh
cmUgY3VycmVudGx5IHRoZSBvbmx5IG9uZXMgbm90IGVuYWJsZWQgZm9yIFdlYktpdExlZ2FjeSwg
d2UKICAgICAgICAgICAgIC8vIHNob3VsZCBlaXRoZXIgZW5hYmxlIHRoZW0gb3Igc3RvcCBleHBv
c2luZyB0aGVtIChhcyB3ZSBkbyB3aXRoIHdpdGggcHJlZmVyZW5jZXMpLgogICAgICAgICAgICAg
Ly8gQWxsIG90aGVyIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBhcmUgYXV0b21hdGljYWxseSBlbmFi
bGVkIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgc3BlY2lmaWVkIGRlZmF1bHRzLgorICAgICAgICAgICAg
eyAiQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBc3lu
Y0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQ1NTT01WaWV3
U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJDb250YWN0
UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuY3BwCmluZGV4IDUxZjY1ZjMwOWViMy4uMmRmYTg5ZGNhODQ0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmNwcApAQCAtNjcsNiArNjcsNyBAQCBjb25zdCBUZXN0RmVhdHVy
ZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCiAgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkIiwgZmFsc2UgfSwKICNlbmRpZgogICAgICAgICAgICAgeyAiQWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiQW5pbWF0ZWRJbWFn
ZXNEaXNhYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRpYVBs
YXliYWNrIiwgdHJ1ZSB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWU1ZTUxNGZiMDQxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0
cyB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0ZWQg
aW1hZ2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLgorCitQQVNTOiBpbnRlcm5hbHMuaXNJbWFnZUFu
aW1hdGluZyhpbWFnZSkgPT09IGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNhZjA3OTQ3NWY4ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1l
bmFibGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBBbmltYXRlZEltYWdlc0Rpc2FibGVkPXRydWUgXSAtLT4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9u
LmdpZiIgaWQ9InRlc3RJbWFnZSIgLz4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9
ICJUaGlzIHRlc3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgZGlzYWJs
ZSBhbmltYXRlZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uXG5cbiIKKwkKKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3RJbWFnZSIpOworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRp
bmcoaW1hZ2UpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRlYnVnKHRl
c3RPdXRwdXQpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOwor
ICAgIH0KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFs
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
aXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MmE3OWE1MTM0N2MKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVk
LCB0aGV5IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5kaXZpZHVhbGx5LgorCitQQVNTOiBp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgPT09IGZhbHNlCitQQVNTOiBpbnRlcm5h
bHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgPT09IHRydWUKK1BBU1M6IGludGVybmFscy5pc0lt
YWdlQW5pbWF0aW5nKGltYWdlKSA9PT0gZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
cGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNjk1ODhkMjJjODkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1h
bmltYXRpb24uaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRp
b24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorCis8c2NyaXB0PgorICAgIHZhciB0ZXN0T3V0cHV0
ID0gIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhl
eSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS5cblxuIgorICAgIAorICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMuaXNJbWFnZUFu
aW1hdGluZyhpbWFnZSkpOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIpOworICAgICAgICAgICAgaW50
ZXJuYWxzLnJlc3VtZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAgIGF3YWl0IHdh
aXRGb3IoKCkgPT4gaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpKTsKKyAgICAgICAg
ICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFn
ZSkiLCAidHJ1ZSIpOworICAgICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VBbmltYXRpb24o
aW1hZ2UpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1h
Z2VBbmltYXRpbmcoaW1hZ2UpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiKTsKKyAgICAgICAgICAg
IGRlYnVnKHRlc3RPdXRwdXQpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xl
LXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZTgxZGMzMDkwY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxl
LWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVk
LCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZi4KKwor
UEFTUzogaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSB8fCBpbnRlcm5hbHMuaXNJ
bWFnZUFuaW1hdGluZyhpbWFnZTIpID09PSBmYWxzZQorUEFTUzogaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcoaW1hZ2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpID09
PSB0cnVlCitQQVNTOiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpIHx8IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikgPT09IGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5p
bWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjhhNmYxYTNmZTc3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1h
bmltYXRpb25zLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBBbmltYXRlZEltYWdlc0Rpc2FibGVkPXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0
aW9uLmdpZiIgaWQ9InRlc3RJbWFnZTEiIC8+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGVk
Mi5naWYiIGlkPSJ0ZXN0SW1hZ2UyIiAvPgorCis8c2NyaXB0PgorICAgIHZhciB0ZXN0T3V0cHV0
ID0gIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxs
IGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuXG5cbiI7Cisg
ICAgCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHZhciBpbWFnZTEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlMSIpOworICAgICAgICB2YXIgaW1hZ2UyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZTIiKTsKKyAgICAgICAgc2V0VGltZW91dChh
c3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gIWludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZv
cigoKSA9PiAhaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSk7CisgICAgICAgICAg
ICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2Ux
KSB8fCBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpIiwgImZhbHNlIik7CisgICAg
ICAgICAgICBpbnRlcm5hbHMudG9nZ2xlUGFnZUFuaW1hdGlvbih0cnVlKTsKKyAgICAgICAgICAg
IGF3YWl0IHdhaXRGb3IoKCkgPT4gaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSk7
CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKGltYWdlMikpOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImludGVybmFs
cy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgJiYgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
aW1hZ2UyKSIsICJ0cnVlIik7CisgICAgICAgICAgICBpbnRlcm5hbHMudG9nZ2xlUGFnZUFuaW1h
dGlvbihmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkg
PT4gIWludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikpOworICAgICAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSIsICJmYWxzZSIpOworICAgICAgICAg
ICAgZGVidWcodGVzdE91dHB1dCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZDIuZ2lm
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGVkMi5naWYK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjk5YjFmZjY1OTJkMmQ4MWY1Nzk4ZWE3NmJjZTFhYjRhMTc4YzI5NgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN4YWY5NmMlfDdpQFBV
XkUwcVdDJHEhPWt7fEEzM2hmMmE1ZDYxVX1namNnNXBtVwp6N0VvQnxmQ3h9RlZjP0t1VkNJblYq
cyRQV0dsI0hOJSF2JlA1NFFeX2QoSDlLeGFlcGpCT2BWbGpRRGd8MHw0JG0KQkJtZSphCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWU3MTRmNTdjYmZiMzJh
NDZmNDJjMjE3YjI2MzA4YTY4ZmQxOGUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6Y21a
P3diaEVIYjZrcmZ3X3xDdzxrZH02YVZKNDZzMSowSl8weipMWUtld04yTlUqYkdmVUErNzBXJXtv
Mm8hJl4KenV6KjVCMlNrOWYyP0t7TDEyY3o9JEEkJDVuPm1FRlZvcSNXYyhgM2EqPXZyKyN6alhQ
ODV5emJWOG99eDhVU2QxCkJCNF97cgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462012</attachid>
            <date>2022-08-30 10:21:07 -0700</date>
            <delta_ts>2022-08-31 16:39:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220830102104.patch</filename>
            <type>text/plain</type>
            <size>36153</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA3MTRkMGZkMWY2MWUyYmIwODU5MmFlMGMzYWNkNGM1OGNmMzM5NDQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBmZWF0dXJlLCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIEJp
dG1hcEltYWdlIGFuaW1hdGlvbnMuIEFkZGl0aW9uYWxseSwgd2UgcHJvdmlkZSBuZXcgaW50ZXJm
YWNlcyB0byBjb250cm9sIGFuaW1hdGlvbnMgYXQgdGhlIHBhZ2UgYW5kIGluZGl2aWR1YWwgaW1h
Z2UgbGV2ZWwuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1s
OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy10b2dnbGUtcGFnZS1hbmlt
YXRpb25zLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291
cmNlcy9hbmltYXRlZDIuZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZjogQWRkZWQuCgpUZXN0cyB0b2dnbGluZyB0aGUgc2V0
dGluZywgdG9nZ2xpbmcgYW5pbWF0aW9ucyBvbiBhbiBlbnRpcmUgcGFnZSwgYW5kIHRvZ2dsaW5n
IGFuIGluZGl2aWR1YWwgYW5pbWF0aW9uLgoKKiBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbDoKCkFkZHMgdGhlIG5ldyBleHBlcmlt
ZW50YWwgZmVhdHVyZSBhbmQgc2V0cyBpdCBvZmYgYnkgZGVmYXVsdC4KCiogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJl
c3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlv
bik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZyBjb25zdCk6CihXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdl
IGFuaW1hdGlvbnMgYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0aW9uLgoKTWV0aG9k
cyB0byBjb250cm9sIHBhZ2Utd2lkZSBhbmltYXRpb25zLiBPbmx5IGZvciB1c2Ugd2hlbiBBbmlt
YXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgaXMgb24uCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRh
dGVGcm9tU2V0dGluZ3MpOgoKR2V0cyBBbmltYXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgZnJv
bSBTZXR0aW5ncyBvYmplY3QuCgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgooV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OnJlc3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cGF1c2VBbmltYXRp
b24pOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CgpO
ZXcgbWV0aG9kcyB0byBjb250cm9sIGEgYml0bWFwIGltYWdlJ3MgYW5pbWF0aW9ucywgYXMgd2Vs
bCBhcyBjaGVja3MgaW4gZXhpc3RpbmcgbWV0aG9kcyB0byBlbnN1cmUgdGhhdCBhbiBpbWFnZSBk
b2VzIG5vdCBzdGFydCB3aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQuCgoqIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKFdlYkNvcmU6OkludGVybmFsczo6cmVzdW1lSW1h
Z2VBbmltYXRpb24pOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKToK
KFdlYkNvcmU6OkludGVybmFsczo6dG9nZ2xlUGFnZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGw6CgpOZXcgaW50ZXJuYWwgdGVzdGluZyBtZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGlu
ZyBpcyBvbiAmIGltYWdlcyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3RhdGUKCiogVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOgooV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMpOgoq
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwOgooV1RSOjpUZXN0T3B0aW9u
czo6ZGVmYXVsdHMpOgoKVHVybnMgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCBvZmYgZm9yIGFsbCB0
ZXN0cyAodGhpcyBnZXRzIGVuYWJsZWQgaW4gdGhlIHJlbGV2YW50IHRlc3RzIGFib3ZlKS4KCk1l
dGhvZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiBiYWNrZ3JvdW5kIGltYWdlIGFuaW1hdGlvbnMs
IGFuZCBjaGVjayB3aGV0aGVyIHNvbWV0aGluZyBoYXMgYmFja2dyb3VuZCBpbWFnZXMgdGhhdCBj
YW4gYW5pbWF0ZS4KCiogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zClNraXBwZWQgdGVzdHMgb24gV0sxIChub3Qgc3VwcG9ydGVkKQoKKiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCiogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKKiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VD
YXN0cy5jcHAKKiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAoKQWRkIG5ldyBJ
bWFnZU9ic2VydmVyIG1ldGhvZCB0byBnZXQgcGFnZSdzIGRlc2lyZWQgYW5pbWF0aW9uIHN0YXRl
LgotLS0KIC4uLi9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sICAgICAgICAgICB8ICAx
MiArKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCAgICAgIHwg
IDQwICsrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oICAgICAgICB8ICAgOCArKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNw
cCAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcCAgIHwgIDE0ICsrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmggICAgIHwgICAzICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAg
ICAgICAgICAgICAgfCAgNDQgKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaCAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysrCiAuLi4vV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgfCAgMjMgKysrKysrKystCiAuLi4vV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oICAgfCAgIDcgKystCiAuLi4vV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggfCAgIDIgKwogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCAgIHwgIDMwICsrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggIHwgICAzICsrCiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMjAgKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgMyArKwogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsrCiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAgICAgICAgICAgfCAgIDEgKwogLi4uL1Rl
c3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAgICAgICAgICAgIHwgICA0ICsrCiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCAgICAgICAgfCAgIDEgKwogLi4uL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dCAgIHwgICA4ICsrKysKIC4uLi9tYWMv
ZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCAgICAgICB8ICAyNyArKysrKysrKysrKwog
Li4ub25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IHwgIDEwICsrKysK
IC4uLi1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbCB8ICAzMyArKysr
KysrKysrKysrCiAuLi5hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQg
fCAgMTAgKysrKwogLi4uYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1s
IHwgIDM4ICsrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9h
bmltYXRlZDIuZ2lmIHwgQmluIDAgLT4gOTAxIGJ5dGVzCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMv
cmVzb3VyY2VzL2FuaW1hdGlvbi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyB8ICAgNSArKwogMjggZmlsZXMgY2hh
bmdlZCwgMzU0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJs
ZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5
LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2
aWR1YWwtYW5pbWF0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy1l
eHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGVkMi5naWYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwK
aW5kZXggZTA4ODlmZjlkMDg4Li42YTQ4OTUyOTE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBi
L1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRh
bC55YW1sCkBAIC02NSw2ICs2NSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVk
OgogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQorICAgICAgCitBbmltYXRlZEltYWdlc0Rpc2FibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFu
UmVhZGFibGVOYW1lOiAiSW1hZ2UgQW5pbWF0aW9uIERpc2FibGVkIgorICBodW1hblJlYWRhYmxl
RGVzY3JpcHRpb246ICJEaXNhYmxlIGltYWdlIGFuaW1hdGlvbnMgYW5kIHZpZXcgYW5pbWF0ZWQg
aW1hZ2VzIGFzIHN0YXRpYy4iCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6Cisg
ICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisg
ICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKIEFyaWFSZWZsZWN0aW9uRm9yRWxl
bWVudFJlZmVyZW5jZXNFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhYjY3MzY4MzA4YjkuLjk1MzkxMWIyZGQ3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogCisj
aW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCkBA
IC03NjYsNiArNzY3LDMyIEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YWxsb3dzT3JpZW50YXRp
b25PdmVycmlkZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpbWFnZSB8fCBpbWFnZS0+c291cmNlVVJM
KCkucHJvdG9jb2xJc0RhdGEoKSB8fCBjYWNoZWRJbWFnZS0+aXNDT1JTU2FtZU9yaWdpbigpOwog
fQogCitCaXRtYXBJbWFnZSogSFRNTEltYWdlRWxlbWVudDo6Y2FjaGVkQml0bWFwSW1hZ2UoKSBj
b25zdAoreworICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkp
CisgICAgICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8Qml0bWFwSW1hZ2U+KGNhY2hlZEltYWdl
LT5pbWFnZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjpyZXN1bWVBbmltYXRpb24oKQoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJp
dG1hcEltYWdlKCkpCisgICAgICAgIGltYWdlLT5yZXN1bWVBbmltYXRpb24oKTsKK30KKwordm9p
ZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGlt
YWdlID0gY2FjaGVkQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgaW1hZ2UtPnBhdXNlQW5pbWF0aW9u
KCk7Cit9CisKK2Jvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRpbmcoKSBjb25zdAorewor
ICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAgIHJldHVy
biBpbWFnZS0+aXNBbmltYXRpbmcoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRB
dHRhY2htZW50RWxlbWVudChSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiYmIGF0dGFjaG1lbnQp
CkBAIC05NTcsNCArOTg0LDE3IEBAIFJlZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjbG9u
ZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAgcmV0dXJu
IGNsb25lOwogfQogCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFnZSgpIGNv
bnN0Cit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+Y2FjaGVkSW1hZ2UoKSkg
eworICAgICAgICBpZiAoY2FjaGVkSW1hZ2UtPmltYWdlKCktPmlzQW5pbWF0ZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChhdXRvKiBiaXRtYXBJbWFnZSA9
IGNhY2hlZEJpdG1hcEltYWdlKCkpCisgICAgICAgIHJldHVybiAhYml0bWFwSW1hZ2UtPmlzQW5p
bWF0aW9uRmluaXNoZWQoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA2ZDU1ZTE4N2NiMjQuLmY5MGViZmU1MjI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIENh
Y2hlZEltYWdlOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgSFRNTEF0dGFjaG1lbnRF
bGVtZW50OwpAQCAtMTU0LDYgKzE1NSwxMSBAQCBwdWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3koKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVy
cmlkZSgpIGNvbnN0OworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0
aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZUFuaW1hdGlvbigpOworICAgIGJv
b2wgaXNBbmltYXRpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0cik7CkBAIC0yMzYsNiArMjQy
LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFN0cmlu
ZyBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQ7CiAjZW5kaWYKKyAgICAKKyAgICBCaXRtYXBJ
bWFnZSogY2FjaGVkQml0bWFwSW1hZ2UoKSBjb25zdDsKIAogICAgIGZyaWVuZCBjbGFzcyBIVE1M
UGljdHVyZUVsZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCA5
NjhlY2ZkMjRiMGQuLmJhMjZkOWVmMjg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKQEAgLTYzNSw2ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogPSBu
dWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVycmlk
ZSB7IH0KICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0
KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KKyAgICAKKyAgICBib29sIGhhc1BhZ2VSZXN1
bWVkQW5pbWF0aW9uV2hlblNldHRpbmdFbmFibGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIAogcHJpdmF0ZToKICAgICBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2ZXIoU3RyaW5nIG1pbWVU
eXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmIHNvdXJjZVVy
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDhi
MTZjMDAxNTZhOC4uZmM0NDM5NDM1ZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ0Nyw2ICs0NDcsMTUgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2Um
IGltYWcKICAgICAgICAgY2FjaGVkSW1hZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGltYWdl
KTsKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aGFzUGFnZVJl
c3VtZWRBbmltYXRpb25XaGVuU2V0dGluZ0VuYWJsZWQoKQoreworICAgIGZvciAoYXV0byBjYWNo
ZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKSB7CisgICAgICAgIGlmIChjYWNoZWRJbWFnZS0+aGFz
UGFnZVJlc3VtZWRBbmltYXRpb25XaGVuU2V0dGluZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGlubGluZSB2b2lkIENh
Y2hlZEltYWdlOjpjbGVhckltYWdlKCkKIHsKICAgICBpZiAoIW1faW1hZ2UpCkBAIC03MDAsNiAr
NzA5LDExIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0
IEltYWdlJiBpbWFnZSkKICAgICAgICAgY2xpZW50LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZv
ckltYWdlKCp0aGlzKTsKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6aGFzUGFnZVJlc3VtZWRBbmlt
YXRpb25XaGVuU2V0dGluZ0VuYWJsZWQoKQoreworICAgIHJldHVybiBtX3NraXBwaW5nUmV2YWxp
ZGF0aW9uRG9jdW1lbnQgJiYgbV9za2lwcGluZ1JldmFsaWRhdGlvbkRvY3VtZW50LT5wYWdlKCkg
JiYgbV9za2lwcGluZ1JldmFsaWRhdGlvbkRvY3VtZW50LT5wYWdlKCktPnNob3VsZFBhZ2VBbmlt
YXRpb25QbGF5SWZTZXR0aW5nRW5hYmxlZCgpOworfQorCiBib29sIENhY2hlZEltYWdlOjpjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7
CiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDYyMDk0YzFkODk3MC4uNTlj
NjA4MmFlNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApA
QCAtMTU3LDYgKzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWls
YWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNo
YW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29u
c3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJikgZmluYWw7CisgICAgICAgIAorICAgICAgICBib29sIGhhc1BhZ2VSZXN1
bWVkQW5pbWF0aW9uV2hlblNldHRpbmdFbmFibGVkKCkgZmluYWw7CiAKICAgICAgICAgSGFzaFNl
dDxDYWNoZWRJbWFnZSo+IG1fY2FjaGVkSW1hZ2VzOwogICAgIH07CkBAIC0xNjgsNiArMTcwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJ
bWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwg
RGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CiAgICAgdm9pZCBjaGFu
Z2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKKyAgICBib29sIGhhc1BhZ2VSZXN1bWVk
QW5pbWF0aW9uV2hlblNldHRpbmdFbmFibGVkKCk7CiAKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggZDYzMzc2MGU5MWI0Li5kNzU3ZWY5ZDQ5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJC
YWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgpAQCAtMTUyLDYgKzE1Myw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaCIKICNpbmNsdWRlICJVc2VySW5wdXRCcmlkZ2UuaCIKQEAgLTQwMjUsNCAr
NDAyNyw0NiBAQCB2b2lkIFBhZ2U6OmZvcmNlUmVwYWludEFsbEZyYW1lcygpCiAgICAgfQogfQog
Cit2b2lkIFBhZ2U6OnRvZ2dsZUFsbEFuaW1hdGlvbnNXaGVuQW5pbWF0aW9uU2V0dGluZ0VuYWJs
ZWQoYm9vbCBzaG91bGRBbmltYXRlKQoreworICAgIGlmICghc2V0dGluZ3MoKS5hbmltYXRlZElt
YWdlc0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3Nob3VsZFBhZ2VB
bmltYXRpb25QbGF5SWZTZXR0aW5nRW5hYmxlZCA9IHNob3VsZEFuaW1hdGU7CisgICAgZm9yRWFj
aERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkg
eworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNh
c3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAgICAgIHJlbmRl
cmVyLT5yZXBhaW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhh
c0JhY2tncm91bmRJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS5iYWNrZ3JvdW5kSW1hZ2VzQ2FuQW5pbWF0ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyZXItPnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9KTsKK30KKworYm9vbCBQYWdlOjpjb250YWluc0FuaW1hdGVk
SW1hZ2VzKCkgY29uc3QKK3sKKyAgICBib29sIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IGZhbHNlOwor
ICAgIGZvckVhY2hEb2N1bWVudChbJmZvdW5kQW5pbWF0ZWRJbWFnZV0gKERvY3VtZW50JiBkb2N1
bWVudCkgeworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxF
bGVtZW50Pihkb2N1bWVudC5yb290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGlt
YWdlRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkg
eworICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIt
PnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlcmVyLT5zdHlsZSgpLmJhY2tncm91bmRJbWFnZXNDYW5BbmltYXRlKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kQW5pbWF0ZWRJbWFnZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVybiBmb3Vu
ZEFuaW1hdGVkSW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggZmNiMWI2NTEwMzM4Li4xNGZhNjY5MDc4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC05NzYs
NiArOTc2LDEwIEBAIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0
ZW5zaW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb247IH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VSZXBhaW50QWxsRnJhbWVzKCk7CisgICAgCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB0b2dnbGVBbGxBbmltYXRpb25zV2hlbkFuaW1hdGlvblNldHRpbmdF
bmFibGVkKGJvb2wgc2hvdWxkQW5pbWF0ZSk7CisgICAgYm9vbCBjb250YWluc0FuaW1hdGVkSW1h
Z2VzKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRQYWdlQW5pbWF0aW9uUGxheUlmU2V0dGluZ0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFBhZ2VBbmltYXRpb25QbGF5SWZTZXR0aW5n
RW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYW5hbHl6ZUltYWdlc0ZvckZpbmRJblBhZ2UoRnVuY3Rpb248dm9pZCgpPiYmIGNh
bGxiYWNrKTsKQEAgLTEzNDEsNiArMTM0NSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24gbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3lNb2RlRm9yRXh0ZW5zaW9uIHsgQ29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lv
bjo6Tm9uZSB9OworICAgIAorICAgIGJvb2wgbV9zaG91bGRQYWdlQW5pbWF0aW9uUGxheUlmU2V0
dGluZ0VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3Jv
dXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCmluZGV4IGE4N2FjNjkwYjJlYy4uZTU1ZmMxN2E4NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03MCw2ICs3MCw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZUZyb21TZXR0aW5ncyhjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCiAgICAgbV9hbGxvd1N1YnNhbXBsaW5nID0gc2V0dGluZ3MuaW1hZ2VTdWJzYW1wbGlu
Z0VuYWJsZWQoKTsKICAgICBtX2FsbG93QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmcgPSBzZXR0
aW5ncy5hbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoKTsKICAgICBtX3Nob3dEZWJ1
Z0JhY2tncm91bmQgPSBzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJzKCk7CisgICAgbV9kaXNhYmxl
QW5pbWF0aW9uID0gc2V0dGluZ3MuYW5pbWF0ZWRJbWFnZXNEaXNhYmxlZCgpOwogfQogCiB2b2lk
IEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQpAQCAtMjQ2
LDcgKzI0Nyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgTE9HKEltYWdlcywgIkJp
dG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNjYWxl
RmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNv
dXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9jdXJy
ZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBzY2Fs
ZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBp
bWFnZTsKLSAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFz
eW5jaHJvbm91cykgeworICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5n
TW9kZTo6QXN5bmNocm9ub3VzICYmICFtX2Rpc2FibGVBbmltYXRpb24pIHsKICAgICAgICAgQVNT
RVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZyYW1lIHx8IG1f
YW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0zNzQsNyArMzc1LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQgJiYgaW1h
Z2VPYnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRp
b25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgKGltYWdlT2JzZXJ2ZXIoKS0+aGFzUGFn
ZVJlc3VtZWRBbmltYXRpb25XaGVuU2V0dGluZ0VuYWJsZWQoKSB8fCAhbV9kaXNhYmxlQW5pbWF0
aW9uIHx8IG1fYWxsb3dBbmltYXRpb25XaGVuU2V0dGluZ0VuYWJsZWQgKTsKIH0KIAogYm9vbCBC
aXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CkBAIC02NzYsNCArNjc3LDIyIEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgbV9zb3VyY2UtPmR1
bXAodHMpOwogfQogCit2b2lkIEJpdG1hcEltYWdlOjpyZXN1bWVBbmltYXRpb24oKQoreworICAg
IGlmIChtX2FsbG93QW5pbWF0aW9uV2hlblNldHRpbmdFbmFibGVkKQorICAgICAgICByZXR1cm47
CisgICAgbV9hbGxvd0FuaW1hdGlvbldoZW5TZXR0aW5nRW5hYmxlZCA9IHRydWU7CisgICAgaW50
ZXJuYWxTdGFydEFuaW1hdGlvbigpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpwYXVzZUFuaW1h
dGlvbigpCit7CisgICAgaWYgKCFtX2FsbG93QW5pbWF0aW9uV2hlblNldHRpbmdFbmFibGVkKQor
ICAgICAgICByZXR1cm47CisgICAgc3RvcEFuaW1hdGlvbigpOworICAgIG1fYWxsb3dBbmltYXRp
b25XaGVuU2V0dGluZ0VuYWJsZWQgPSBmYWxzZTsKK30KKworCisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGQzZjRmZWJkMDgwNC4u
MGI1NDM2ZWVjYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKQEAgLTE1OCw2ICsxNTgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbWFn
ZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2RlKEZ1bmN0aW9u
PHZvaWQoKT4mJik7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb24oKTsKKyAgICB2b2lkIHBhdXNl
QW5pbWF0aW9uKCk7CisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgaXNBbmltYXRpb25GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRmluaXNo
ZWQ7IH07CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmPE5h
dGl2ZUltYWdlPiYmKTsKQEAgLTE5NSw3ICsxOTksNiBAQCBwcml2YXRlOgogICAgIFN0YXJ0QW5p
bWF0aW9uU3RhdHVzIGludGVybmFsU3RhcnRBbmltYXRpb24oKTsKICAgICB2b2lkIGFkdmFuY2VB
bmltYXRpb24oKTsKICAgICB2b2lkIGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpOwotICAgIGJv
b2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEl0IG1heSBsb29rIHVudXN1
YWwgdGhhdCB0aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJsaWMgQVBJLiBU
aGlzIGlzIGJlY2F1c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5
LiBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNvbWVvbmUgZHJhd3MgdGhlIGltYWdlLiBJdCB3
aWxsCkBAIC0yNDcsNiArMjUwLDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9hbGxv
d0FuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvd0Rl
YnVnQmFja2dyb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Rpc2FibGVBbmltYXRpb24geyBm
YWxzZSB9OworICAgIGJvb2wgbV9hbGxvd0FuaW1hdGlvbldoZW5TZXR0aW5nRW5hYmxlZCB7IGZh
bHNlIH07CiAKICAgICBib29sIG1fY2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZv
clRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9sYXJnZUltYWdlQXN5bmNEZWNvZGluZ0Vu
YWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAppbmRleCAwNDI3MGM4M2QzMzcuLmYwNjQwZGM0ZTY1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJh
bWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRS
ZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1
czo6SW52YWxpZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IElt
YWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSA9IDA7CisgICAg
CisgICAgdmlydHVhbCBib29sIGhhc1BhZ2VSZXN1bWVkQW5pbWF0aW9uV2hlblNldHRpbmdFbmFi
bGVkKCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKaW5kZXggY2RiMTk3ZDUzYzUzLi4xNDYxNmE1ZGRiZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMjMsMTEg
KzIzLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
IAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVk
ZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxv
YXRSb3VuZGVkUmVjdC5oIgpAQCAtNDUxLDYgKzQ1MywzNCBAQCBSZW5kZXJTdHlsZSogUmVuZGVy
U3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
cHNldQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJhY2tn
cm91bmRJbWFnZUFuaW1hdGlvblN0YXRlKGJvb2wgc2hvdWxkQW5pbWF0ZSkKK3sKKyAgICBmb3Ig
KGF1dG8gZmlsbExheWVyID0gJmJhY2tncm91bmRMYXllcnMoKTsgZmlsbExheWVyOyBmaWxsTGF5
ZXIgPSBmaWxsTGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAoYXV0byogY2FjaGVkQmFja2dy
b3VuZEltYWdlID0gZmlsbExheWVyLT5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogYmFja2dyb3VuZEltYWdlID0gY2FjaGVkQmFja2dyb3VuZEltYWdlLT5p
bWFnZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byYgYmFja2dyb3VuZEJpdG1hcEltYWdlID0g
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCpiYWNrZ3JvdW5kSW1hZ2UpOworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRBbmltYXRlKQorICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQml0bWFw
SW1hZ2UucmVzdW1lQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBiYWNrZ3JvdW5kQml0bWFwSW1hZ2UucGF1c2VBbmltYXRpb24oKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBSZW5kZXJTdHlsZTo6YmFja2dy
b3VuZEltYWdlc0NhbkFuaW1hdGUoKSBjb25zdAoreworICAgIGZvciAoYXV0byBmaWxsTGF5ZXIg
PSAmYmFja2dyb3VuZExheWVycygpOyBmaWxsTGF5ZXI7IGZpbGxMYXllciA9IGZpbGxMYXllci0+
bmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UgPSBmaWxs
TGF5ZXItPmltYWdlKCktPmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBi
YWNrZ3JvdW5kSW1hZ2UgPSBjYWNoZWRCYWNrZ3JvdW5kSW1hZ2UtPmltYWdlKCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYmFja2dyb3VuZEltYWdlLT5pc0FuaW1hdGVkKCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBSZW5kZXJTdHlsZTo6aW5oZXJpdGVkRXF1YWwo
Y29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2luaGVyaXRl
ZEZsYWdzID09IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMDdkNTExOGViYjkwLi43NTNmOTZjZmMxYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0y
NDMsNiArMjQzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHNldWRvU3R5bGUoUHNldWRvSWQp
IGNvbnN0OwogICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0KTsKICAgICBi
b29sIGhhc1VuaXF1ZVBzZXVkb1N0eWxlKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kSW1hZ2VBbmltYXRpb25TdGF0ZShib29sIHNob3VsZEFuaW1hdGUpOworICAgIGJvb2wg
YmFja2dyb3VuZEltYWdlc0NhbkFuaW1hdGUoKSBjb25zdDsKIAogICAgIC8vIGF0dHJpYnV0ZSBn
ZXR0ZXIgbWV0aG9kcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZGM2
NDJjNTViYzlkLi4yNjgzMjQ4Y2Q2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTEwNDYsNiArMTA0NiwyNiBAQCBib29sIEludGVybmFsczo6aXNJbWFnZUFuaW1hdGlu
ZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBpbWFnZSAmJiAoaW1hZ2Ut
PmlzQW5pbWF0aW5nKCkgfHwgaW1hZ2UtPmFuaW1hdGlvblBlbmRpbmcoKSk7CiB9CiAKK3ZvaWQg
SW50ZXJuYWxzOjpyZXN1bWVJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50
KQoreworICAgIGVsZW1lbnQucmVzdW1lQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxz
OjpwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAg
ZWxlbWVudC5wYXVzZUFuaW1hdGlvbigpOworfQorCit2b2lkIEludGVybmFsczo6dG9nZ2xlUGFn
ZUFuaW1hdGlvbihib29sIHNob3VsZEFuaW1hdGUpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBj
b250ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpKQorICAgICAgICBwYWdlLT50b2dnbGVBbGxBbmltYXRpb25zV2hlbkFuaW1hdGlvblNldHRp
bmdFbmFibGVkKHNob3VsZEFuaW1hdGUpOworfQorCiB1bnNpZ25lZCBJbnRlcm5hbHM6OmltYWdl
UGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgcmV0dXJuIGVsZW1lbnQucGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRG
b3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1MTVkYWIzN2Fh
Y2YuLjRhMGQ3ZjgwOWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMTks
NiArMjE5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRp
b24oSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0IGR1cmF0aW9uKTsKICAgICB2b2lkIHJlc2V0SW1h
Z2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAgIGJvb2wgaXNJbWFnZUFuaW1hdGlu
ZyhIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCByZXN1bWVJbWFnZUFuaW1hdGlvbihIVE1M
SW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCBwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVs
ZW1lbnQmKTsKKyAgICB2b2lkIHRvZ2dsZVBhZ2VBbmltYXRpb24oYm9vbCk7CiAgICAgdW5zaWdu
ZWQgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxl
bWVudCYpOwogICAgIHZvaWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZv
clRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYsIGJvb2wgZW5hYmxlZCk7CiAgICAgdW5zaWduZWQg
aW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggYTJhZjI1MmIyMGZkLi5kNDQzODc0N2JlYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2ICs1NTQsOSBAQCB0eXBlZGVmIChGZXRj
aFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZpbmVkIHNl
dEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgdW5y
ZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1bmRlZmluZWQgcmVzZXRJbWFnZUFuaW1h
dGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNJbWFnZUFuaW1h
dGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCByZXN1bWVJbWFn
ZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCBwYXVz
ZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVk
IHRvZ2dsZVBhZ2VBbmltYXRpb24oYm9vbGVhbiBzaG91bGRBbmltYXRlKTsKICAgICB1bnNpZ25l
ZCBsb25nIGltYWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFn
ZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgdW5kZWZpbmVkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5
bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgYm9vbGVh
biBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBsb25nIGltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdl
RWxlbWVudCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RP
cHRpb25zLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAppbmRleCA2
Mzk1NzVmOGRlNTMuLjQ2YTcwYjgzMzhhMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6
OmRlZmF1bHRzKCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBleHBlcmltZW50YWwgZmVh
dHVyZXMgYXJlIGN1cnJlbnRseSB0aGUgb25seSBvbmVzIG5vdCBlbmFibGVkIGZvciBXZWJLaXRM
ZWdhY3ksIHdlCiAgICAgICAgICAgICAvLyBzaG91bGQgZWl0aGVyIGVuYWJsZSB0aGVtIG9yIHN0
b3AgZXhwb3NpbmcgdGhlbSAoYXMgd2UgZG8gd2l0aCB3aXRoIHByZWZlcmVuY2VzKS4KICAgICAg
ICAgICAgIC8vIEFsbCBvdGhlciBleHBlcmltZW50YWwgZmVhdHVyZXMgYXJlIGF1dG9tYXRpY2Fs
bHkgZW5hYmxlZCByZWdhcmRsZXNzIG9mIHRoZWlyIHNwZWNpZmllZCBkZWZhdWx0cy4KKyAgICAg
ICAgICAgIHsgIkFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAg
eyAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIkNT
U09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAi
Q29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwCmluZGV4IDJkYWExMzIxNGM2
My4uNjQwODRiNzNmM2JlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwCkBAIC03NSw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZpbmFsCiAgICAgewog
ICAgIH0KKyAgICBib29sIGhhc1BhZ2VSZXN1bWVkQW5pbWF0aW9uV2hlblNldHRpbmdFbmFibGVk
KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9OwogCiBURVNU
KFNWR0ltYWdlQ2FzdHMsIFNWR0ltYWdlRm9yQ29udGFpbmVySXNOb3RTVkdJbWFnZSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKaW5kZXggNTFmNjVmMzA5ZWIzLi4yZGZhODlk
Y2E4NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCkBAIC02Nyw2ICs2
Nyw3IEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1bHRzKCkKICAgICAg
ICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCBmYWxzZSB9LAogI2VuZGlmCiAg
ICAgICAgICAgICB7ICJBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMiLCB0cnVlIH0sCisgICAg
ICAgICAgICB7ICJBbmltYXRlZEltYWdlc0Rpc2FibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAg
IHsgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7
ICJBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIsIHRydWUgfSwKICAgICAgICAgICAg
IHsgIkFsbG93c0lubGluZU1lZGlhUGxheWJhY2siLCB0cnVlIH0sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi41ZTVlNTE0ZmIwNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUaGlzIHRlc3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hl
biB0aGUgZGlzYWJsZSBhbmltYXRlZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uCisKK1BB
U1M6IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSA9PT0gZmFsc2UKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
ZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWRm
ZjQ0NDBjNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFuaW1hdGVkSW1hZ2VzRGlzYWJs
ZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBz
cmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorCis8c2NyaXB0
PgorICAgIHZhciB0ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBk
aXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5l
ZCBvbi5cblxuIgorCQorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgaW1hZ2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgICAgIHNldFRpbWVv
dXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkpOworICAgICAgICAgICAgdGVzdE91dHB1
dCArPSBleHBlY3QoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIp
OworICAgICAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CisgICAgICAgICAgICBpbnRlcm5hbHMu
Y2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1p
bmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MmE3OWE1
MTM0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
aXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlz
IGRpc2FibGVkLCB0aGV5IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5kaXZpZHVhbGx5Lgor
CitQQVNTOiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgPT09IGZhbHNlCitQQVNT
OiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgPT09IHRydWUKK1BBU1M6IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSA9PT0gZmFsc2UKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwt
YW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDA4ZTIxNWIzZDI2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5k
aXZpZHVhbC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFuaW1hdGVkSW1hZ2VzRGlzYWJsZWQ9dHJ1ZSBdIC0t
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNl
cy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorCis8c2NyaXB0PgorICAgIHZhciB0
ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNh
YmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS5cblxuIgor
ICAgIAorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZSkpOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSBleHBl
Y3QoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIpOworICAgICAg
ICAgICAgaW50ZXJuYWxzLnJlc3VtZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAg
IGF3YWl0IHdhaXRGb3IoKCkgPT4gaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpKTsK
KyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyhpbWFnZSkiLCAidHJ1ZSIpOworICAgICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VB
bmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJu
YWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0g
ZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiKTsKKyAg
ICAgICAgICAgIGRlYnVnKHRlc3RPdXRwdXQpOworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFy
TWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAw
KTsKKyAgICB9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdl
LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmU4MWRjMzA5MGNlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxs
IGFuaW1hdGlvbnMgb24gYSBwYWdlIGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuCisKK1BBU1M6
IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcoaW1hZ2UyKSA9PT0gZmFsc2UKK1BBU1M6IGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKGltYWdlMSkgJiYgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSA9PT0gdHJ1
ZQorUEFTUzogaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSB8fCBpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpID09PSBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlv
bnMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi45NjhjNGRhYmM4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2UtYW5pbWF0
aW9ucy5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgQW5pbWF0ZWRJbWFnZXNEaXNhYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5n
aWYiIGlkPSJ0ZXN0SW1hZ2UxIiAvPgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRlZDIuZ2lm
IiBpZD0idGVzdEltYWdlMiIgLz4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9ICJU
aGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIGFsbCBhbmlt
YXRpb25zIG9uIGEgcGFnZSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmLlxuXG4iOworICAgIAor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgaW1hZ2UxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RJbWFnZTEiKTsKKyAgICAgICAgdmFyIGltYWdlMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UyIik7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpKTsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkg
PT4gIWludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikpOworICAgICAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSIsICJmYWxzZSIpOworICAgICAgICAg
ICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24odHJ1ZSk7CisgICAgICAgICAgICBhd2Fp
dCB3YWl0Rm9yKCgpID0+IGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkpOworICAg
ICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhp
bWFnZTIpKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMuaXNJ
bWFnZUFuaW1hdGluZyhpbWFnZTEpICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdl
MikiLCAidHJ1ZSIpOworICAgICAgICAgICAgaW50ZXJuYWxzLnRvZ2dsZVBhZ2VBbmltYXRpb24o
ZmFsc2UpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhaW50ZXJuYWxzLmlzSW1h
Z2VBbmltYXRpbmcoaW1hZ2UxKSk7CisgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+ICFp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpKTsKKyAgICAgICAgICAgIHRlc3RPdXRw
dXQgKz0gZXhwZWN0KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEpIHx8IGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRl
YnVnKHRlc3RPdXRwdXQpOworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUo
KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAwKTsKKyAgICB9Cis8
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGVkMi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTliMWZm
NjU5MmQyZDgxZjU3OThlYTc2YmNlMWFiNGExNzhjMjk2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA5MDEKemNtWj93YmhFSGI2a3Jmd198Q3hhZjk2YyV8N2lAUFVeRTBxV0MkcSE9a3t8QTMzaGYy
YTVkNjFVfWdqY2c1cG1XCno3RW9CfGZDeH1GVmM/S3VWQ0luVipzJFBXR2wjSE4lIXYmUDU0UV5f
ZChIOUt4YWVwakJPYFZsalFEZ3wwfDQkbQpCQm1lKmEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmlt
YXRpb24uZ2lmIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1ZTcxNGY1N2NiZmIzMmE0NmY0MmMyMTdiMjYzMDhhNjhm
ZDE4ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN3PGtk
fTZhVko0NnMxKjBKXzB6KkxZS2V3TjJOVSpiR2ZVQSs3MFcle28ybyEmXgp6dXoqNUIyU2s5ZjI/
S3tMMTJjej0kQSQkNW4+bUVGVm9xI1djKGAzYSo9dnIrI3pqWFA4NXl6YlY4b314OFVTZDEKQkI0
X3tyCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmE0YjU3ZmM5NjhhLi41YmEzODYxZWI5Y2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQz
MCw2ICs0MzAsMTEgQEAgbWVkaWEvbm93LXBsYXlpbmctc3RhdHVzLXdpdGhvdXQtbWVkaWEuaHRt
bCBbIFNraXAgXQogIyBXZWJNIG5vdCBzdXBwb3J0ZWQgaW4gV0sxIG9uIG1hY09TLgogaHR0cC90
ZXN0cy9tZWRpYS92aWRlby13ZWJtLXN0YWxsLmh0bWwKIAorIyBJbWFnZSBhbmltYXRpb24gZGlz
YWJsZWQgKGV4cGVyaW1lbnRhbCBmZWF0dXJlKQorYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbCBbIFNraXAgXQorYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCBbIFNraXAgXQorYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24u
aHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVu
ZCBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIGluIFdlYktpdDEKICMvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462061</attachid>
            <date>2022-08-31 16:39:25 -0700</date>
            <delta_ts>2022-09-02 10:46:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220831163924.patch</filename>
            <type>text/plain</type>
            <size>34500</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA2MWRjZjUyMjEwYjRjOWJiMWUxN2M5ODQyZGNmYWZkODFhODZkYjc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBwcmVmZXJlbmNlLCB3aGljaCB3aGVuIGRpc2FibGVkLCBwcmV2ZW50
cyBCaXRtYXBJbWFnZSBhbmltYXRpb25zLiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGlu
dGVyZmFjZXMgdG8gY29udHJvbCBhbmltYXRpb25zIGF0IHRoZSBwYWdlIGFuZCBpbmRpdmlkdWFs
IGltYWdlIGxldmVsLgoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWw6IEFkZGVkLgoqIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2
aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24u
aHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtdG9nZ2xlLXBhZ2Ut
YW5pbWF0aW9ucy5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9k
aXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmct
ZnJhbWUuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3Vy
Y2VzL2FuaW1hdGVkMi5naWY6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3Jlc291cmNlcy9hbmltYXRpb24uZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMuZ2lmOiBBZGRlZC4KClRlc3RzIHRv
Z2dsaW5nIHRoZSBzZXR0aW5nLCB0b2dnbGluZyBhbmltYXRpb25zIG9uIGFuIGVudGlyZSBwYWdl
LCBhbmQgdG9nZ2xpbmcgYW4gaW5kaXZpZHVhbCBhbmltYXRpb24uCgoqIFNvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOgoKQWRkcyB0
aGUgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBzZXRzIGl0IGVuYWJsZWQgYnkgZGVmYXVs
dCAoSW1hZ2VBbmltYXRpb25FbmFibGVkKS4KCiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNhY2hlZEJpdG1hcElt
YWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJlc3VtZUFuaW1hdGlvbik6
CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlvbik6CihXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZyBjb25zdCk6CihXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdlIGFuaW1hdGlvbnMgYW5k
IGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0aW9uLgoKTWV0aG9kcyB0byBjb250cm9sIHBh
Z2Utd2lkZSBhbmltYXRpb25zLiBPbmx5IGZvciB1c2Ugd2hlbiBBbmltYXRlZEltYWdlc0Rpc2Fi
bGVkIHNldHRpbmcgaXMgb24uCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcDoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVGcm9tU2V0dGluZ3Mp
OgoKR2V0cyBBbmltYXRlZEltYWdlc0Rpc2FibGVkIHNldHRpbmcgZnJvbSBTZXR0aW5ncyBvYmpl
Y3QuCgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OnNob3VsZEFuaW1hdGUgY29uc3QpOgooV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJlc3VtZUFuaW1h
dGlvbik6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cGF1c2VBbmltYXRpb24pOgoqIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CgpOZXcgbWV0aG9kcyB0byBj
b250cm9sIGEgYml0bWFwIGltYWdlJ3MgYW5pbWF0aW9ucywgYXMgd2VsbCBhcyBjaGVja3MgaW4g
ZXhpc3RpbmcgbWV0aG9kcyB0byBlbnN1cmUgdGhhdCBhbiBpbWFnZSBkb2VzIG5vdCBzdGFydCB3
aGVuIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQuCgoqIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKFdlYkNvcmU6OkludGVybmFsczo6cmVzdW1lSW1hZ2VBbmltYXRpb24pOgoo
V2ViQ29yZTo6SW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVy
bmFsczo6dG9nZ2xlUGFnZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6CgpOZXcgaW50
ZXJuYWwgdGVzdGluZyBtZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGluZyBpcyBvbiAmIGltYWdl
cyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3RhdGUKCiogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCgpTa2lwcGVkIHRlc3RzIG9uIFdLMSAobm90IHN1cHBvcnRlZCkK
CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCiogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAoqIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oClNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZUNsaWVudC5oCiogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NW
R0ltYWdlQ2FzdHMuY3BwCiogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKCkFk
ZCBuZXcgSW1hZ2VPYnNlcnZlciBtZXRob2QgdG8gZ2V0IGFuIGltYWdlcyBkZXNpcmVkIGFuaW1h
dGlvbiBzdGF0ZS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAoKQWRkZWQgYSBtZXRo
b2QgdG8gZ2V0IGlmIGFuIGltYWdlIGlzIGFsbG93ZWQgdG8gYW5pbWF0ZSBiYXNlZCBvbiBzZXR0
aW5ncywgdGhlIHBhZ2UncyBhbmltYXRpb24gc3RhdGUsIGFuZCB0aGUgaW5kaXZpZHVhbCBpbWFn
ZXMgc3RhdGUuCgoqIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAoKTmV3IEhhc2hTZXQgKGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMp
IHRvIHN0b3JlIFVSTHMgb2YgaW1hZ2VzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYW5pbWF0ZS4KLS0t
CiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAgICAgICAgICAgfCAgMTIgKysr
CiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgMTUgKysr
KwogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggICAgICAgICAgICAgICAgIHwgICA2ICsr
CiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwICAgICAgfCAgNDAgKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggICAgICAgIHwg
ICA3ICsrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCAgICAgICAgICAgfCAg
IDIgKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCAgIHwgIDE5
ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCAgICAgfCAg
IDMgKwogLi4uL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmggIHwgICAy
ICsKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAyNCAr
KysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAgICB8ICAg
NSArKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIHwgICAy
ICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggfCAgIDIg
KwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgICA1ICsr
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oICAgICAgfCAgIDIgKwog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgIHwgIDIwICsrKysr
CiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgfCAgIDMgKwog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAzICsKIC4u
Li9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwICAgICAgICAgICB8ICAgNCArCiAuLi4v
ZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0ICAgfCAgMTAgKysrCiAuLi4v
bWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgICAgICAgfCAgMjQgKysrKysrCiAu
Li5vbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTIgKysrCiAu
Li4tYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAgMjkgKysrKysr
KwogLi4uYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0IHwgIDE1ICsr
KysKIC4uLi9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbCAgICB8ICA3MyAr
KysrKysrKysrKysrKysrKysKIC4uLmF0aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLWV4cGVj
dGVkLnR4dCB8ICAxMiArKysKIC4uLmJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlv
bnMuaHRtbCB8ICAzMiArKysrKysrKwogLi4uL21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQtNC1mcmFt
ZXMuZ2lmICAgICAgIHwgQmluIDAgLT4gMjA5IGJ5dGVzCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMv
cmVzb3VyY2VzL2FuaW1hdGVkMi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIC4uLi9hY2Nlc3Np
YmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiB8IEJpbiAwIC0+IDkwMSBieXRlcwog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIHwgICA1ICsrCiAz
MSBmaWxlcyBjaGFuZ2VkLCAzODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1h
dGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
cGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1l
LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25z
LXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1w
YWdlLWFuaW1hdGlvbnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQy
LmdpZgogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jl
c291cmNlcy9hbmltYXRpb24uZ2lmCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBl
MDg4OWZmOWQwODguLmMwMWUwNGI1OTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwK
QEAgLTczMyw2ICs3MzMsMTggQEAgSGlnaGxpZ2h0QVBJRW5hYmxlZDoKICAgICBXZWJLaXQ6CiAg
ICAgICBkZWZhdWx0OiBmYWxzZQogCitJbWFnZUFuaW1hdGlvbkVuYWJsZWQ6CisgIHR5cGU6IGJv
b2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJJbWFnZSBBbmltYXRpb24gRW5hYmxlZCIKKyAgaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIGltYWdlIGFuaW1hdGlvbnMuIgorICBkZWZh
dWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogdHJ1ZQorICAgIFdl
YktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDog
dHJ1ZQorCiBJbWFnZUJpdG1hcEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJs
ZU5hbWU6ICJJbWFnZUJpdG1hcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDVkM2QyMGM4
MjBhMC4uZjQwMDFlOTdmNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkyMjAsNiAr
OTIyMCwyMSBAQCBib29sIERvY3VtZW50Ojppc1NhbWVTaXRlRm9yQ29va2llcyhjb25zdCBVUkwm
IHVybCkgY29uc3QKICAgICByZXR1cm4gZG9tYWluLm1hdGNoZXModXJsKTsKIH0KIAorYm9vbCBE
b2N1bWVudDo6aXNJbWFnZVVSTEFsbG93ZWRUb0FuaW1hdGUoY29uc3QgVVJMJiB1cmwpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW1hZ2VVUkxzQWxsb3dlZFRvQW5pbWF0ZS5jb250YWlucyh1cmwp
OworfQorCit2b2lkIERvY3VtZW50OjphZGRBbGxvd2VkQW5pbWF0ZWRJbWFnZVVSTChjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBtX2ltYWdlVVJMc0FsbG93ZWRUb0FuaW1hdGUuYWRkKHVybCk7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUFsbG93ZWRBbmltYXRlZEltYWdlVVJMKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIG1faW1hZ2VVUkxzQWxsb3dlZFRvQW5pbWF0ZS5yZW1vdmUodXJsKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9M
T0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2IzMzM1MmQ0YmMwLi5lNTdjMWMyMWNlMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjkwLDYgKzE2OTAsMTAgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRWxlbWVudFdpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93
VHJlZVVwZGF0ZShFbGVtZW50Jik7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklE
PiBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKKyAgICAgICAgCisgICAgYm9vbCBpc0ltYWdlVVJM
QWxsb3dlZFRvQW5pbWF0ZShjb25zdCBVUkwmKSBjb25zdDsKKyAgICB2b2lkIGFkZEFsbG93ZWRB
bmltYXRlZEltYWdlVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZEFuaW1h
dGVkSW1hZ2VVUkwoY29uc3QgVVJMJik7CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVj
dGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8
PCAxIH07CkBAIC0yMjg3LDYgKzIyOTEsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxGdW5jdGlv
bjx2b2lkKCk+PiBtX3doZW5Jc1Zpc2libGVIYW5kbGVyczsKIAogICAgIFdlYWtIYXNoU2V0PEVs
ZW1lbnQ+IG1fZWxlbWVudHNXaXRoUGVuZGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVVcGRhdGVzOwor
ICAgICAgICAKKyAgICBMaXN0SGFzaFNldDxVUkw+IG1faW1hZ2VVUkxzQWxsb3dlZFRvQW5pbWF0
ZTsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhYjY3MzY4
MzA4YjkuLjViYTFmODEzOTliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCkBAIC03NjYsNiArNzY2LDM2IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YWxsb3dz
T3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpbWFnZSB8fCBpbWFnZS0+
c291cmNlVVJMKCkucHJvdG9jb2xJc0RhdGEoKSB8fCBjYWNoZWRJbWFnZS0+aXNDT1JTU2FtZU9y
aWdpbigpOwogfQogCitJbWFnZSogSFRNTEltYWdlRWxlbWVudDo6aW1hZ2UoKSBjb25zdAorewor
ICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkpCisgICAgICAg
IHJldHVybiBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpyZXN1bWVBbmltYXRpb24oKQoreworICAgIGlmIChhdXRv
KiBpbWFnZSA9IHRoaXMtPmltYWdlKCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS5hZGRBbGxvd2Vk
QW5pbWF0ZWRJbWFnZVVSTChpbWFnZS0+c291cmNlVVJMKCkpOworICAgICAgICBpbWFnZS0+c3Rh
cnRBbmltYXRpb24oKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGF1c2VB
bmltYXRpb24oKQoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IHRoaXMtPmltYWdlKCkpIHsKKyAg
ICAgICAgZG9jdW1lbnQoKS5yZW1vdmVBbGxvd2VkQW5pbWF0ZWRJbWFnZVVSTChpbWFnZS0+c291
cmNlVVJMKCkpOworICAgICAgICBpbWFnZS0+c3RvcEFuaW1hdGlvbigpOworICAgIH0KK30KKwor
Ym9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZygpIGNvbnN0Cit7CisgICAgaWYgKGF1
dG8qIGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5pc0FuaW1h
dGluZygpOworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldEF0dGFjaG1lbnRFbGVtZW50
KFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+JiYgYXR0YWNobWVudCkKQEAgLTk1Nyw0ICs5ODcs
MTQgQEAgUmVmPEVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKK2Jv
b2wgSFRNTEltYWdlRWxlbWVudDo6aXNBbmltYXRlZEltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAo
YXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAgIGlmIChj
YWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNBbmltYXRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDZkNTVlMTg3Y2IyNC4uOTVlOTk2ZjdmYzE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMTU0LDYgKzE1NCwxMSBAQCBw
dWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsKIAogICAg
IGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0OworICAgIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwYXVzZUFuaW1hdGlvbigpOworICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdDsKKyAgICBi
b29sIGlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQq
ID0gbnVsbHB0cik7CkBAIC0yMzYsNiArMjQxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQ7
CiAjZW5kaWYKKyAgICAKKyAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKIAogICAgIGZyaWVuZCBj
bGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNw
cAppbmRleCA5NjhlY2ZkMjRiMGQuLjAxNjliMTBlZTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKQEAgLTYzNSw2ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlk
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25z
dCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgc2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KKyAgICAKKyAgICBib29sIGFs
bG93c0FuaW1hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAg
ICAgSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyKFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVcmwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4YjE2YzAwMTU2YTguLjM0NjYw
MzhlZGExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CkBAIC00NDcsNiArNDQ3LDE1IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2
ZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnCiAgICAgICAgIGNh
Y2hlZEltYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShpbWFnZSk7CiB9CiAKK2Jvb2wgQ2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmFsbG93c0FuaW1hdGlvbigpCit7CisgICAg
Zm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKGNh
Y2hlZEltYWdlLT5hbGxvd3NBbmltYXRpb24oc291cmNlVXJsKCkpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogaW5saW5lIHZvaWQgQ2Fj
aGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFnZSkKQEAgLTcwMCw2ICs3
MDksMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmIGltYWdlKQogICAgICAgICBjbGllbnQtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9y
SW1hZ2UoKnRoaXMpOwogfQogCitib29sIENhY2hlZEltYWdlOjphbGxvd3NBbmltYXRpb24oY29u
c3QgVVJMJiBzb3VyY2VVUkwpCit7CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkSW1hZ2VDbGllbnQ+IHdhbGtlcigqdGhpcyk7CisgICAgd2hpbGUgKGF1dG8qIGNsaWVudCA9
IHdhbGtlci5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGNsaWVudC0+YWxsb3dzQW5pbWF0aW9uKHNv
dXJjZVVSTCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiBib29sIENhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gaW1h
Z2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IDYyMDk0YzFkODk3MC4uYWY5NzUxNTVjMDA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdl
QW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNv
ZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAg
ICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7Cisg
ICAgICAgIAorICAgICAgICBib29sIGFsbG93c0FuaW1hdGlvbigpIGZpbmFsOwogCiAgICAgICAg
IEhhc2hTZXQ8Q2FjaGVkSW1hZ2UqPiBtX2NhY2hlZEltYWdlczsKICAgICB9OwpAQCAtMTY4LDYg
KzE3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IElt
YWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51
bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOwogICAgIHZv
aWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lk
IHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CisgICAgYm9vbCBhbGxvd3NB
bmltYXRpb24oY29uc3QgVVJMJik7CiAKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAppbmRleCAyODY4OTY5ZGIzN2IuLjMwY2E1YTFm
NTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xp
ZW50LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSB7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQW5pbWF0aW9uKGNvbnN0IFVSTCYpIHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCBkNjMzNzYwZTkxYjQuLmU2ZDM0ZDhhYWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
aCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZElt
YWdlLmgiCkBAIC0xNTIsNiArMTUzLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJUZXh0UmVjb2duaXRpb25SZXN1bHQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCisjaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJM
UGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgpAQCAtNDAyNSw0ICs0MDI3
LDI2IEBAIHZvaWQgUGFnZTo6Zm9yY2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKK3Zv
aWQgUGFnZTo6dG9nZ2xlQWxsQW5pbWF0aW9uc1doZW5BbmltYXRpb25TZXR0aW5nRW5hYmxlZChi
b29sIHNob3VsZEFuaW1hdGUpCit7CisgICAgaWYgKHNldHRpbmdzKCkuaW1hZ2VBbmltYXRpb25F
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2FsbG93c0ltYWdlQW5pbWF0
aW9ucyA9IHNob3VsZEFuaW1hdGU7CisgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYg
ZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4oZG9jdW1lbnQucm9vdE5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCkpCisgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CisgICAgICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0JhY2tncm91bmRJbWFnZSgpCisgICAg
ICAgICAgICAgICAgICAgIHx8IHJlbmRlcmVyLT5zdHlsZSgpLmhhc0JvcmRlckltYWdlKCkKKyAg
ICAgICAgICAgICAgICAgICAgfHwgcmVuZGVyZXItPnN0eWxlKCkuaGFzTWFzaygpCisgICAgICAg
ICAgICAgICAgICAgIHx8IHJlbmRlcmVyLT5zdHlsZSgpLmxpc3RTdHlsZUltYWdlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBmY2IxYjY1MTAzMzguLjI4ZGY1NjJhZmYwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKQEAgLTk3Niw2ICs5NzYsOSBAQCBwdWJsaWM6CiAgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbiBjb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0
ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0
ZW5zaW9uOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvcmNlUmVwYWludEFsbEZyYW1l
cygpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlQWxsQW5pbWF0aW9uc1do
ZW5BbmltYXRpb25TZXR0aW5nRW5hYmxlZChib29sIHNob3VsZEFuaW1hdGUpOworICAgIGJvb2wg
YWxsb3dzSW1hZ2VBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0ltYWdlQW5pbWF0
aW9uczsgfQogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYW5hbHl6ZUltYWdlc0ZvckZpbmRJblBhZ2UoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxi
YWNrKTsKQEAgLTEzNDEsNiArMTM0NCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lN
b2RlRm9yRXh0ZW5zaW9uIHsgQ29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbjo6
Tm9uZSB9OworICAgIAorICAgIGJvb2wgbV9hbGxvd3NJbWFnZUFuaW1hdGlvbnMgeyBmYWxzZSB9
OwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGE4N2FjNjkwYjJl
Yy4uYjA0NGU1ODIyN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQgJiYgaW1hZ2VP
YnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRpb25G
aW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgaW1hZ2VPYnNlcnZlcigpLT5hbGxvd3NBbmlt
YXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKaW5kZXgg
MDQyNzBjODNkMzM3Li5iNjQ2MWRhYmQ3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VB
bmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29k
aW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJikgPSAwOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBbmltYXRp
b24oKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAKaW5kZXggZTBjOTRkOTA1MTlhLi5jNGEyNGYyNTY1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI0OTQsNCArMjQ5NCw5IEBAIEZsb2F0
UmVjdCBSZW5kZXJFbGVtZW50OjpyZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUgYm94VHlwZSkg
Y29uc3QKICAgICByZXR1cm4geyB9OwogfQogCitib29sIFJlbmRlckVsZW1lbnQ6OmFsbG93c0Fu
aW1hdGlvbihjb25zdCBVUkwmIHNvdXJjZVVSTCkKK3sKKyAgICByZXR1cm4gc2V0dGluZ3MoKS5p
bWFnZUFuaW1hdGlvbkVuYWJsZWQoKSB8fCBkb2N1bWVudCgpLnBhZ2UoKS0+YWxsb3dzSW1hZ2VB
bmltYXRpb24oKSB8fCBkb2N1bWVudCgpLmlzSW1hZ2VVUkxBbGxvd2VkVG9BbmltYXRlKHNvdXJj
ZVVSTCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmlu
ZGV4IDVmZjllMjhmNGYzYy4uMzljNzdiODBlOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKQEAgLTI5MSw2ICsyOTEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0RlcHJlY2F0ZWRGbGV4SXRlbSgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPmlz
RGVwcmVjYXRlZEZsZXhpYmxlQm94KCk7IH0KICAgICBib29sIGlzRmxleEl0ZW1JbmNsdWRpbmdE
ZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlzRmxvYXRpbmdPck91
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJv
eEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogCisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oY29u
c3QgVVJMJikgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBlbnVtIEJhc2VUeXBlRmxhZyB7CiAg
ICAgICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFnICA9IDEgPDwgMCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkYzY0MmM1NWJjOWQuLjI2ODMyNDhjZDZmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA0Niw2ICsxMDQ2LDI2IEBAIGJv
b2wgSW50ZXJuYWxzOjppc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgcmV0dXJuIGltYWdlICYmIChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5p
bWF0aW9uUGVuZGluZygpKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5pbWF0
aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5yZXN1bWVBbmlt
YXRpb24oKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTElt
YWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBlbGVtZW50LnBhdXNlQW5pbWF0aW9uKCk7Cit9
CisKK3ZvaWQgSW50ZXJuYWxzOjp0b2dnbGVQYWdlQW5pbWF0aW9uKGJvb2wgc2hvdWxkQW5pbWF0
ZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnRvZ2dsZUFs
bEFuaW1hdGlvbnNXaGVuQW5pbWF0aW9uU2V0dGluZ0VuYWJsZWQoc2hvdWxkQW5pbWF0ZSk7Cit9
CisKIHVuc2lnbmVkIEludGVybmFsczo6aW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZv
clRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gZWxlbWVu
dC5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDUxNWRhYjM3YWFjZi4uNGEwZDdmODA5ZTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIxOSw2ICsyMTksOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQg
ZHVyYXRpb24pOwogICAgIHZvaWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50
Jik7CiAgICAgYm9vbCBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2
b2lkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHBh
dXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgdG9nZ2xlUGFn
ZUFuaW1hdGlvbihib29sKTsKICAgICB1bnNpZ25lZCBpbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNl
c0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRDbGVhckRl
Y29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jiwg
Ym9vbCBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBpbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVs
ZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhMmFmMjUyYjIw
ZmQuLmQ0NDM4NzQ3YmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
NTU0LDYgKzU1NCw5IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBG
ZXRjaE9iamVjdDsKICAgICB1bmRlZmluZWQgc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24o
SFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHVyYXRpb24pOwog
ICAgIHVuZGVmaW5lZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVu
dCk7CiAgICAgYm9vbGVhbiBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVu
dCk7CisgICAgdW5kZWZpbmVkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQg
ZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxl
bWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgdG9nZ2xlUGFnZUFuaW1hdGlvbihib29sZWFu
IHNob3VsZEFuaW1hdGUpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VQZW5kaW5nRGVjb2RlUHJv
bWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICB1bmRl
ZmluZWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRN
TEltYWdlRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHVuc2lnbmVkIGxv
bmcgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwCmluZGV4
IDJkYWExMzIxNGM2My4uMTYxNDljMzliZjFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwCkBAIC03NSw2ICs3NSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZp
bmFsCiAgICAgewogICAgIH0KKyAgICBib29sIGFsbG93c0FuaW1hdGlvbigpIGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsKIAogVEVTVChTVkdJbWFnZUNhc3Rz
LCBTVkdJbWFnZUZvckNvbnRhaW5lcklzTm90U1ZHSW1hZ2UpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
ZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4zMzMxYjc5MWVmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4g
dGhlIGRpc2FibGUgYW5pbWF0ZWQgaW1hZ2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGlu
ZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ODM2MGJkMzIwMjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxl
ZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgSW1hZ2VBbmltYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVz
dEltYWdlIiAvPgorCis8c2NyaXB0PgorCWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYW5p
bWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiB0aGUgZGlzYWJsZSBhbmltYXRlZCBpbWFnZXMgc2V0
dGluZyBpcyB0dXJuZWQgb24uXG5cbiIpOworCQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UiKTsKKyAg
ICAKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgCXNob3VsZEJlY29tZUVx
dWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlv
bigpIHsKKyAgICAJCWludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgCQlmaW5pc2hK
U1Rlc3QoKTsKKyAgICAJfSk7CisgICAgfTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1h
dGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFu
aW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi43MmNhNWJkNWM3ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2Ug
YW5pbWF0aW9uIGlzIGRpc2FibGVkLCB0aGV5IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5k
aXZpZHVhbGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5h
bHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5p
c0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFn
ZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1w
bGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4wMDEzNDRjZGU0ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFu
aW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgSW1hZ2VBbmltYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBp
ZD0idGVzdEltYWdlIiAvPgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJlIHRvZ2ds
ZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHkuXG5cbiIpOworICAgIAorICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
SW1hZ2UiKTsKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgCXNob3VsZEJl
Y29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBm
dW5jdGlvbigpIHsKKyAgICAJCWludGVybmFscy5yZXN1bWVJbWFnZUFuaW1hdGlvbihpbWFnZSk7
CisgICAgCQlzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1h
Z2UpIiwgInRydWUiLCBmdW5jdGlvbigpIHsKKyAgICAJCQlpbnRlcm5hbHMucGF1c2VJbWFnZUFu
aW1hdGlvbihpbWFnZSk7CisgICAgCQkJc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0lt
YWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgeworICAgIAkJCQlpbnRl
cm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgIAkJCQlmaW5pc2hKU1Rlc3QoKTsKKyAgICAJ
CQl9KTsKKyAgICAJCX0pOworICAgIAl9KTsKKyAgICB9OworPC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjU4ZWUwNDY1
NTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1
IEBACitWZXJpZnkgcmVzdW1lZCBhbmltYXRpb25zIHN0YXJ0IGF0IHRoZSBmcmFtZSB0aGV5IHdl
cmUgcGF1c2VkIGF0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW1hZ2Ugd2Fz
IGxvYWRlZCBzdWNjZXNzZnVsbHkuCitJbWFnZSBmcmFtZTogMCB3YXMgZGlzcGxheWVkLgorSW1h
Z2UgZnJhbWU6IDEgd2FzIGRpc3BsYXllZC4KK0ltYWdlIGZyYW1lOiAyIHdhcyBkaXNwbGF5ZWQu
CitJbWFnZSBmcmFtZTogMyB3YXMgZGlzcGxheWVkLgorVGhlIGFuaW1hdGlvbiB3YXMgbG9hZGVk
IGFuZCBwYXVzZWQvcmVzdW1lZCBjb3JyZWN0bHkuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBjMzZiMDJh
MGExMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rp
c2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSIiPgor
Cis8c2NyaXB0PgorCisJZnVuY3Rpb24gZHJhd0ZyYW1lKGltYWdlLCBmcmFtZSkgeworCQlyZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKwkJCWRvY3VtZW50LmJvZHkub2Zmc2V0SGVp
Z2h0OworCQkJdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisJCQlsZXQgaW1hZ2VGcmFtZSA9IGludGVy
bmFscy5pbWFnZUZyYW1lSW5kZXgoaW1hZ2UpOworCisJCQlpbWFnZS5hZGRFdmVudExpc3RlbmVy
KCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbiBsaXN0ZW5lcigpIHsKKwkJCQlkZWJ1
ZygiSW1hZ2UgZnJhbWU6ICIgKyBpbWFnZUZyYW1lICsgIiB3YXMgZGlzcGxheWVkLiIpOworCQkJ
CWltYWdlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIGxpc3Rl
bmVyLCB0cnVlKTsKKwkJCQlyZXNvbHZlKGZyYW1lICsgMSk7CisJCQl9LCB0cnVlKTsKKwkJfSk7
CisJfQorCisJZnVuY3Rpb24gZHJhd0ltYWdlKGltYWdlLCBmcmFtZUNvdW50KSB7CisJCWludGVy
bmFscy5yZXN1bWVJbWFnZUFuaW1hdGlvbihpbWFnZSk7CisJCWxldCBwcm9taXNlID0gZHJhd0Zy
YW1lKGltYWdlLCAwKTsKKwkJZm9yIChsZXQgaSA9IDE7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsK
KwkJCXByb21pc2UgPSBwcm9taXNlLnRoZW4oKGZyYW1lKSA9PiB7CisJCQkJcmV0dXJuIGRyYXdG
cmFtZShpbWFnZSwgZnJhbWUpOworCQkJfSk7CisJCQlpZiAoaSA9PSAyKSB7CisJCQkJaW50ZXJu
YWxzLnBhdXNlSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworCQkJCWludGVybmFscy5yZXN1bWVJbWFn
ZUFuaW1hdGlvbihpbWFnZSk7CisJCQl9CisJCX0KKwkJcmV0dXJuIHByb21pc2U7CisJfQorCisJ
ZnVuY3Rpb24gbG9hZEFuZERyYXdJbWFnZShpbWFnZSwgc3JjLCBmcmFtZUNvdW50KSB7CisJCXJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCQkJaW1hZ2Uub25sb2FkID0gKCgpID0+
IHsKKwkJCQlkZWJ1ZygiSW1hZ2Ugd2FzIGxvYWRlZCBzdWNjZXNzZnVsbHkuIik7CisJCQkJZHJh
d0ltYWdlKGltYWdlLCBmcmFtZUNvdW50KS50aGVuKHJlc29sdmUpOworCQkJfSk7CisJCQlpbWFn
ZS5zcmMgPSBzcmM7CisJCX0pOworCX0KKworCShmdW5jdGlvbigpIHsKKwkJd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisJCWlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisJCQlpbnRlcm5h
bHMuY2xlYXJNZW1vcnlDYWNoZSgpOworCQkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYmtpdElt
YWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisJCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QW5p
bWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKHRydWUpOworCQkJaW50ZXJuYWxzLnNldHRp
bmdzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisJCX0KKwkJCisJCXZhciBpbWFn
ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworCisJCWRlc2NyaXB0aW9uKCJWZXJp
ZnkgcmVzdW1lZCBhbmltYXRpb25zIHN0YXJ0IGF0IHRoZSBmcmFtZSB0aGV5IHdlcmUgcGF1c2Vk
IGF0LiIpOworCisJCWxvYWRBbmREcmF3SW1hZ2UoaW1hZ2UsICJyZXNvdXJjZXMvYW5pbWF0ZWQt
NC1mcmFtZXMuZ2lmIiwgNCkudGhlbigoKSA9PiB7CisJCQlkZWJ1ZygiVGhlIGFuaW1hdGlvbiB3
YXMgbG9hZGVkIGFuZCBwYXVzZWQvcmVzdW1lZCBjb3JyZWN0bHkuIik7CisJCQlpbnRlcm5hbHMu
Y2xlYXJNZW1vcnlDYWNoZSgpOworCQkJZmluaXNoSlNUZXN0KCk7CisJCX0pOworCX0pKCk7Cis8
L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjE5ZWNjNTNlNDcyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2ds
ZS1wYWdlLWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVz
dHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgYWxsIGFuaW1hdGlvbnMg
b24gYSBwYWdlIGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMSkgfHwg
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSBiZWNhbWUgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSAmJiBpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyhpbWFnZTIpIGJlY2FtZSB0cnVlCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5n
KGltYWdlMSkgfHwgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UyKSBiZWNhbWUgZmFs
c2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtdG9nZ2xlLXBhZ2UtYW5pbWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBjNmU0NWYxODc1ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy10b2dnbGUtcGFnZS1hbmltYXRpb25zLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NU
WVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBJbWFnZUFuaW1hdGlvbkVuYWJsZWQ9
ZmFsc2UgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVzb3Vy
Y2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UxIiAvPgorPGltZyBzcmM9InJlc291cmNl
cy9hbmltYXRlZDIuZ2lmIiBpZD0idGVzdEltYWdlMiIgLz4KKworPHNjcmlwdD4KKyAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVk
LCBhbGwgYW5pbWF0aW9ucyBvbiBhIHBhZ2UgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZi5cblxu
Iik7CisgICAgCisgICAgdmFyIGltYWdlMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
SW1hZ2UxIik7CisJdmFyIGltYWdlMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1h
Z2UyIik7CisgICAgCisJanNUZXN0SXNBc3luYyA9IHRydWU7CisJd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworCQlzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRp
bmcoaW1hZ2UxKSB8fCBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpIiwgImZhbHNl
IiwgZnVuY3Rpb24oKSB7CisJCQlpbnRlcm5hbHMudG9nZ2xlUGFnZUFuaW1hdGlvbih0cnVlKTsK
KwkJCXNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTEp
ICYmIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlMikiLCAidHJ1ZSIsIGZ1bmN0aW9u
KCkgeworCQkJCWludGVybmFscy50b2dnbGVQYWdlQW5pbWF0aW9uKGZhbHNlKTsKKwkJCQlzaG91
bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UxKSB8fCBpbnRl
cm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZTIpIiwgImZhbHNlIiwgZnVuY3Rpb24oKSB7CisJ
CQkJCWludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisJCQkJCWZpbmlzaEpTVGVzdCgpOwor
CQkJCX0pOworCQkJfSk7CisJCX0pOworCX07Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGVkLTQtZnJhbWVzLmdpZiBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291
cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVlNDc3MTQyNmViYTZhYmEz
YjE3YzMyMTgwZDI4MzkwNzQzMGNjMQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjA5CnpjbVo/
d2JoRUhiNmshbHlfYHR5TXA4KjZFfDh4N2ZoNkZvMTJEbHBPODg5PH5nbnFJQlJXTEI8ZmFGMW44
SkdsSApyYGQ2TlElZkVRZW1Sc0dNQDlwYCRVS0NTUjE0OUV5MUNlVU0pKVN9cEtpSCslKUxIYG96
TCE0PQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGVkMi5naWYgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQyLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTliMWZm
NjU5MmQyZDgxZjU3OThlYTc2YmNlMWFiNGExNzhjMjk2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA5MDEKemNtWj93YmhFSGI2a3Jmd198Q3hhZjk2YyV8N2lAUFVeRTBxV0MkcSE9a3t8QTMzaGYy
YTVkNjFVfWdqY2c1cG1XCno3RW9CfGZDeH1GVmM/S3VWQ0luVipzJFBXR2wjSE4lIXYmUDU0UV5f
ZChIOUt4YWVwakJPYFZsalFEZ3wwfDQkbQpCQm1lKmEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmlt
YXRpb24uZ2lmIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1ZTcxNGY1N2NiZmIzMmE0NmY0MmMyMTdiMjYzMDhhNjhm
ZDE4ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN3PGtk
fTZhVko0NnMxKjBKXzB6KkxZS2V3TjJOVSpiR2ZVQSs3MFcle28ybyEmXgp6dXoqNUIyU2s5ZjI/
S3tMMTJjej0kQSQkNW4+bUVGVm9xI1djKGAzYSo9dnIrI3pqWFA4NXl6YlY4b314OFVTZDEKQkI0
X3tyCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmE0YjU3ZmM5NjhhLi41YmEzODYxZWI5Y2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQz
MCw2ICs0MzAsMTEgQEAgbWVkaWEvbm93LXBsYXlpbmctc3RhdHVzLXdpdGhvdXQtbWVkaWEuaHRt
bCBbIFNraXAgXQogIyBXZWJNIG5vdCBzdXBwb3J0ZWQgaW4gV0sxIG9uIG1hY09TLgogaHR0cC90
ZXN0cy9tZWRpYS92aWRlby13ZWJtLXN0YWxsLmh0bWwKIAorIyBJbWFnZSBhbmltYXRpb24gZGlz
YWJsZWQgKGV4cGVyaW1lbnRhbCBmZWF0dXJlKQorYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLXRvZ2dsZS1wYWdlLWFuaW1hdGlvbnMuaHRtbCBbIFNraXAgXQorYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCBbIFNraXAgXQorYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24u
aHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVu
ZCBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIGluIFdlYktpdDEKICMvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462100</attachid>
            <date>2022-09-02 10:46:35 -0700</date>
            <delta_ts>2022-09-06 14:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220902104634.patch</filename>
            <type>text/plain</type>
            <size>35947</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBjOTc2M2NlZjkyNDNlNTljNjI3MGU3MWU4NWNiMjUwNzZmZjgyMDgyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBwcmVmZXJlbmNlLCB3aGljaCB3aGVuIGRpc2FibGVkLCBwcmV2ZW50
cyBCaXRtYXBJbWFnZSBhbmltYXRpb25zLiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGlu
dGVyZmFjZXMgdG8gY29udHJvbCBpbmRpdmlkdWFsIGltYWdlIGFuaW1hdGlvbnMuCgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWY6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWY6
IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFuIGluZGl2aWR1
YWwgYW5pbWF0aW9uLCBhbmQgY2hlY2tpbmcgdGhlIGZyYW1lcyBjb250aW51ZSBjb3JyZWN0bHku
CgoqIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sOgoKQWRkcyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBzZXRzIGl0
IGVuYWJsZWQgYnkgZGVmYXVsdCAoSW1hZ2VBbmltYXRpb25FbmFibGVkKS4KCiogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQ6OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OnJlc3VtZUFuaW1hdGlvbik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1h
dGlvbik6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZyBjb25zdCk6CihX
ZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGlt
YWdlIGFuaW1hdGlvbnMgYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0aW9uLgoKKiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CihXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CgpBZGQgYSBjb25kaXRpb24gdG8g
c2hvdWxkQW5pbWF0ZSB0byBjaGVjayBhbGxvd3NBbmltYXRpb24oKSBmcm9tIHRoZSBpbWFnZSBv
YnNlcnZlci4KCiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwOgooV2ViQ29y
ZTo6SW50ZXJuYWxzOjpyZXN1bWVJbWFnZUFuaW1hdGlvbik6CihXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhdXNlSW1hZ2VBbmltYXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
Lmg6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsOgoKTmV3IGludGVybmFs
IHRlc3RpbmcgbWV0aG9kcyB0byB2ZXJpZnkgdGhlIHNldHRpbmcgaXMgb24gJiBpbWFnZXMgYXJl
IGluIHRoZSBjb3JyZWN0IHN0YXRlCgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwoKU2tpcHBlZCB0ZXN0cyBvbiBXSzEgKG5vdCBzdXBwb3J0ZWQpCgoqIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAoqIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2VDbGllbnQuaAoqIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TVkdJbWFn
ZUNhc3RzLmNwcAoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCgpBZGQgbmV3
IEltYWdlT2JzZXJ2ZXIgbWV0aG9kIHRvIGdldCBhbiBpbWFnZXMgZGVzaXJlZCBhbmltYXRpb24g
c3RhdGUuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKCkFkZGVkIGEgbWV0aG9kIHRv
IGdldCBpZiBhbiBpbWFnZSBpcyBhbGxvd2VkIHRvIGFuaW1hdGUgYmFzZWQgb24gc2V0dGluZ3Mg
YW5kIHRoZSBpbmRpdmlkdWFsIGltYWdlcyBzdGF0ZS4KCiogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAoqIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCgpOZXcgSGFzaFNldCAo
YW5kIGFzc29jaWF0ZWQgbWV0aG9kcykgdG8gc3RvcmUgVVJMcyBvZiBpbWFnZXMgdGhhdCBhcmUg
YWxsb3dlZCB0byBhbmltYXRlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCiogU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAoqIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmgKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCiogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKCk5ldyBtZXRob2RzIChpbnZva2VkIGJ5IHRoZSBwcmVm
ZXJlbmNlIGNoYW5nZSkgdGhhdCByZXBhaW50IHZpc2libGUgYW5pbWF0ZWQgaW1hZ2VzLgoKKiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKCk5ldyBtZXRob2QgdG8gY2hlY2sgaWYgYSBSZW5kZXJJ
bWFnZSBpcyBhbmltYXRlZC4KLS0tCiAuLi4vV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bCAgICAgICAgICAgfCAgMTMgKysrKwogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAg
ICAgICAgICAgICAgIHwgIDE1ICsrKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oICAg
ICAgICAgICAgICAgICB8ICAgNiArKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcCAgICAgIHwgIDM3ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmggICAgICAgIHwgICA3ICsrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0
bWFwLmNwcCAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCAgIHwgIDE5ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaCAgICAgfCAgIDMgKwogLi4uL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlQ2xpZW50LmggIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCAgICAgICAgICAgICB8ICAxNiArKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
ICAgICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAg
ICAgICAgICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAg
ICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3Bw
ICAgICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oICAg
ICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwIHwgICA3ICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2Vy
dmVyLmggfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
ICAgIHwgICA1ICsrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oICAg
ICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCAgICAg
IHwgICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAgICAg
fCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAgICAgIHwg
ICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAgICAgICAgfCAg
IDEgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgIHwgIDEw
ICsrKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAy
ICsKIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICB8ICAgMiAr
CiAuLi4vVGVzdHMvV2ViQ29yZS9TVkdJbWFnZUNhc3RzLmNwcCAgICAgICAgICAgfCAgIDQgKwog
Li4uL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dCAgIHwgIDExICsrKwog
Li4uL21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sICAgICAgIHwgIDI2ICsrKysr
KysKIC4uLm9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAxMiAr
KysKIC4uLi1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbCB8ICAyOSAr
KysrKysrCiAuLi5ibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS1leHBlY3RlZC50eHQgfCAg
MTUgKysrKwogLi4uL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sICAgIHwg
IDczICsrKysrKysrKysrKysrKysrKwogLi4uL21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQtNC1mcmFt
ZXMuZ2lmICAgICAgIHwgQmluIDAgLT4gMjA5IGJ5dGVzCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMv
cmVzb3VyY2VzL2FuaW1hdGlvbi5naWYgfCBCaW4gMCAtPiA5MDEgYnl0ZXMKIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyB8ICAgNSArKwogMzYgZmlsZXMgY2hh
bmdlZCwgMzU4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJs
ZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5
LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2
aWR1YWwtYW5pbWF0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMu
Z2lmCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVz
b3VyY2VzL2FuaW1hdGlvbi5naWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGMz
NjIxMDgyYjU0Yi4uMDljYWY5NTg4YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApA
QCAtNzcxLDYgKzc3MSwxOSBAQCBIaWdobGlnaHRBUElFbmFibGVkOgogICAgIFdlYktpdDoKICAg
ICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0ltYWdlQW5pbWF0aW9uRW5hYmxlZDoKKyAgdHlwZTogYm9v
bAorICB3ZWJjb3JlT25DaGFuZ2U6IHNldEltYWdlQW5pbWF0aW9uRW5hYmxlZENoYW5nZWQKKyAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJJbWFnZSBBbmltYXRpb24gRW5hYmxlZCIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIGltYWdlIGFuaW1hdGlvbnMuIgorICBkZWZhdWx0VmFs
dWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogdHJ1ZQorICAgIFdlYktpdDoK
KyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogdHJ1ZQor
CiBJbWFnZUJpdG1hcEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6
ICJJbWFnZUJpdG1hcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUyMzcxMWI0YjkwNS4u
YjEwZWMwMzlhNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkyNjksNiArOTI2OSwy
MSBAQCBTdHJpbmcgRG9jdW1lbnQ6OmVuZHBvaW50VVJJRm9yVG9rZW4oY29uc3QgU3RyaW5nJiB0
b2tlbikgY29uc3QKICAgICByZXR1cm4gcmVwb3J0aW5nU2NvcGUoKS5lbmRwb2ludFVSSUZvclRv
a2VuKHRva2VuKTsKIH0KIAorYm9vbCBEb2N1bWVudDo6aXNJbWFnZVVSTEFsbG93ZWRUb0FuaW1h
dGUoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VVUkxzQWxsb3dl
ZFRvQW5pbWF0ZS5jb250YWlucyh1cmwpOworfQorCit2b2lkIERvY3VtZW50OjphZGRBbGxvd2Vk
QW5pbWF0ZWRJbWFnZVVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBtX2ltYWdlVVJMc0FsbG93
ZWRUb0FuaW1hdGUuYWRkKHVybCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZUFsbG93ZWRB
bmltYXRlZEltYWdlVVJMKGNvbnN0IFVSTCYgdXJsKQoreworICAgIG1faW1hZ2VVUkxzQWxsb3dl
ZFRvQW5pbWF0ZS5yZW1vdmUodXJsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
dW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZTJiZTE4
MmQ5YmI5Li43MGExZWNmN2EwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjk5LDYgKzE2
OTksMTAgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vz
c2lvbklEKCkgY29uc3QgZmluYWw7CiAKKyAgICBib29sIGlzSW1hZ2VVUkxBbGxvd2VkVG9Bbmlt
YXRlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIHZvaWQgYWRkQWxsb3dlZEFuaW1hdGVkSW1hZ2VV
UkwoY29uc3QgVVJMJik7CisgICAgdm9pZCByZW1vdmVBbGxvd2VkQW5pbWF0ZWRJbWFnZVVSTChj
b25zdCBVUkwmKTsKKwogICAgIFJlcG9ydGluZ1Njb3BlJiByZXBvcnRpbmdTY29wZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwb3J0aW5nU2NvcGUuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgpAQCAtMjMw
NCw2ICsyMzA4LDggQEAgcHJpdmF0ZToKICAgICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1l
bnRzV2l0aFBlbmRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlVXBkYXRlczsKIAogICAgIFJlZjxSZXBv
cnRpbmdTY29wZT4gbV9yZXBvcnRpbmdTY29wZTsKKworICAgIExpc3RIYXNoU2V0PFVSTD4gbV9p
bWFnZVVSTHNBbGxvd2VkVG9BbmltYXRlOwogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVt
ZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IGFiNjczNjgzMDhiOS4uNDNlYWIzMjYyNzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTc2Niw2ICs3NjYsMzYgQEAgYm9vbCBI
VE1MSW1hZ2VFbGVtZW50OjphbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29uc3QKICAgICBy
ZXR1cm4gIWltYWdlIHx8IGltYWdlLT5zb3VyY2VVUkwoKS5wcm90b2NvbElzRGF0YSgpIHx8IGNh
Y2hlZEltYWdlLT5pc0NPUlNTYW1lT3JpZ2luKCk7CiB9CiAKK0ltYWdlKiBIVE1MSW1hZ2VFbGVt
ZW50OjppbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gdGhpcy0+
Y2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlc3VtZUFuaW1h
dGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gdGhpcy0+aW1hZ2UoKSkgeworICAgICAg
ICBkb2N1bWVudCgpLmFkZEFsbG93ZWRBbmltYXRlZEltYWdlVVJMKGltYWdlLT5zb3VyY2VVUkwo
KSk7CisgICAgICAgIGltYWdlLT5zdGFydEFuaW1hdGlvbigpOworICAgIH0KK30KKwordm9pZCBI
VE1MSW1hZ2VFbGVtZW50OjpwYXVzZUFuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGltYWdl
ID0gdGhpcy0+aW1hZ2UoKSkgeworICAgICAgICBkb2N1bWVudCgpLnJlbW92ZUFsbG93ZWRBbmlt
YXRlZEltYWdlVVJMKGltYWdlLT5zb3VyY2VVUkwoKSk7CisgICAgICAgIGltYWdlLT5zdG9wQW5p
bWF0aW9uKCk7CisgICAgfQorfQorCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0aW5n
KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSB0aGlzLT5pbWFnZSgpKQorICAgICAg
ICByZXR1cm4gaW1hZ2UtPmlzQW5pbWF0aW5nKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpz
ZXRBdHRhY2htZW50RWxlbWVudChSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiYmIGF0dGFjaG1l
bnQpCkBAIC05NTcsNCArOTg3LDExIEBAIFJlZjxFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50Ojpj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50CiAgICAgcmV0
dXJuIGNsb25lOwogfQogCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0ZWRJbWFnZSgp
IGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuIGltYWdlLT5pc0FuaW1hdGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDZkNTVlMTg3Y2IyNC4uNDM2
OWUxY2FiNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMTU1
LDYgKzE1NSwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93c09yaWVudGF0aW9uT3ZlcnJp
ZGUoKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9uKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZUFuaW1hdGlvbigpOworICAgIGJvb2wgaXNB
bmltYXRpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0OworCiBw
cm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0cik7CiAKQEAgLTIzNyw2ICsyNDIsOCBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQ7CiAjZW5k
aWYKIAorICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OworCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxQ
aWN0dXJlRWxlbWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXgg
OTY4ZWNmZDI0YjBkLi4xZjcyNGZjYTk0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAu
Y3BwCkBAIC02MzYsNiArNjM2LDggQEAgcHVibGljOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CiAgICAg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQog
CisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
CiBwcml2YXRlOgogICAgIEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcihTdHJpbmcgbWltZVR5cGUs
IGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYgc291cmNlVXJsKQog
ICAgICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4YjE2YzAwMTU2YTguLjJkODI5NTI4MTQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NDcsNiAr
NDQ3LDE1IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnCiAgICAgICAgIGNhY2hlZEltYWdlLT5z
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShpbWFnZSk7CiB9CiAKK2Jvb2wgQ2FjaGVkSW1hZ2U6OkNh
Y2hlZEltYWdlT2JzZXJ2ZXI6OmFsbG93c0FuaW1hdGlvbigpCit7CisgICAgZm9yIChhdXRvIGNh
Y2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKGNhY2hlZEltYWdlLT5h
bGxvd3NBbmltYXRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
IHsKICAgICBpZiAoIW1faW1hZ2UpCkBAIC03MDAsNiArNzA5LDE2IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnZSkKICAgICAgICAg
Y2xpZW50LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKCp0aGlzKTsKIH0KIAorYm9v
bCBDYWNoZWRJbWFnZTo6YWxsb3dzQW5pbWF0aW9uKCkKK3sKKyAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gd2Fsa2VyKCp0aGlzKTsKKyAgICB3aGlsZSAo
YXV0byogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkgeworICAgICAgICBpZiAoY2xpZW50LT5hbGxv
d3NBbmltYXRpb24oKnRoaXMpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBp
bWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA2MjA5NGMxZDg5NzAuLjBmMjIxOWUzYWExYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTk4LDYgKzk4LDcg
QEAgcHVibGljOgogICAgIGJvb2wgY2FuU2tpcFJldmFsaWRhdGlvbihjb25zdCBDYWNoZWRSZXNv
dXJjZUxvYWRlciYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc1Zpc2libGVJblZpZXdwb3J0KGNvbnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgYm9v
bCBhbGxvd3NBbmltYXRpb24oKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyKCk7CkBAIC0x
NTgsNiArMTU5LDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKKyAgICAgICAgYm9vbCBhbGxvd3NB
bmltYXRpb24oKSBmaW5hbDsKKwogICAgICAgICBIYXNoU2V0PENhY2hlZEltYWdlKj4gbV9jYWNo
ZWRJbWFnZXM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaAppbmRleCAyODY4OTY5ZGIzN2IuLmQyNGFjNzA4MDdjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAgLTUy
LDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFn
ZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSB7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBhbGxvd3NBbmltYXRpb24oQ2FjaGVkSW1hZ2UmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDIw
MTlmZmY5ZmM0NC4uZjEzODQ5YjA5MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yNzU2LDYgKzI3NTYsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFu
aW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCiAgICAgICAgIHJlbmRlclZpZXct
PnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKHZpc2libGVSZWN0KTsKIH0KIAor
dm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJl
Y3QmIHZpc2libGVSZWN0KQoreworICAgIGlmICh2aXNpYmxlUmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyVmlldy0+cmVwYWludEltYWdlQW5pbWF0aW9uc0lm
TmVlZGVkKHZpc2libGVSZWN0KTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcmlwdGVk
QW5pbWF0aW9uc0FuZFRpbWVyc1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCkKIHsKICAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQpAQCAtMjc5MSw2ICsyODAw
LDEzIEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVk
aW5nU3ViZnJhbWVzKCkKICAgICB9KTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNp
YmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3sKKyAgICBhcHBseVJlY3Vy
c2l2ZWx5V2l0aFZpc2libGVSZWN0KFtdIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QpIHsKKyAgICAgICAgZnJhbWVWaWV3LnJlcGFpbnRWaXNpYmxlSW1h
Z2VBbmltYXRpb25zKHZpc2libGVSZWN0KTsKKyAgICB9KTsKK30KKwogdm9pZCBGcmFtZVZpZXc6
OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKQogewogICAgIC8vIElmIHdlJ3Jl
IHNjcm9sbGluZyBhcyBhIHJlc3VsdCBvZiB1cGRhdGluZyB0aGUgdmlldyBzaXplIGFmdGVyIGxh
eW91dCwgd2UnbGwgdXBkYXRlIHdpZGdldHMgYW5kIGxheWVyIHBvc2l0aW9ucyBzb29uIGFueXdh
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDYyYTllMDc3ODBlMi4uZTQ5OTUyM2MwODkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTMyNSw2ICszMjUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cisg
ICAgdm9pZCByZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygp
OwogCiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwpAQCAtNzc2LDYgKzc3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3QgRnVu
Y3Rpb248dm9pZChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJl
Y3QpPiYpOwogICAgIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCk7CisgICAgdm9pZCByZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9u
cyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVTY3JpcHRlZEFu
aW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5nU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJl
Y3QpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFn
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMGU0MmE2ZGNkNjViLi45NTVjMjZlOWQ5ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNDAxNSw0ICs0MDE1LDEwIEBAIHZvaWQgUGFnZTo6Zm9yY2VS
ZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6cmVwYWludEFuaW1hdGVk
SW1hZ2VzKCkKK3sKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygp
KQorICAgICAgICB2aWV3LT5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1
YmZyYW1lcygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IDY4MGIxMDA4Y2U1Ny4uZWZkZGQ5ZTk1ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjkzLDYgKzY5
Myw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2liaWxpdHlTdGF0ZSB2aXNp
YmlsaXR5U3RhdGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1h
dGluZ0ltYWdlcygpOworICAgIHZvaWQgcmVwYWludEFuaW1hdGVkSW1hZ2VzKCk7CiAKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggMjU4ZmU4MzI5NDYyLi41ZmZh
OTdmOTAxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTQ4NCw0ICs0
ODQsMTAgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZUNo
YW5nZWQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZUFuaW1hdGlv
bkVuYWJsZWRDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnJl
cGFpbnRBbmltYXRlZEltYWdlcygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCAxYjM5YjEzNjljMDkuLjc4Y2U1YzVjZDhlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0xNjUsNiArMTY1LDcgQEAgcHJvdGVj
dGVkOgogI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQogICAgIHZvaWQgbGF5ZXJC
YXNlZFNWR0VuZ2luZUVuYWJsZWRDaGFuZ2VkKCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldEltYWdl
QW5pbWF0aW9uRW5hYmxlZENoYW5nZWQoKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGE4
N2FjNjkwYjJlYy4uOWFjOWFiYjJjMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQg
JiYgaW1hZ2VPYnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAhbV9h
bmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgaW1hZ2VPYnNlcnZlcigpLT5h
bGxvd3NBbmltYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNv
bnN0CkBAIC0zODQsNyArMzg0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNv
bnN0CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhblVzZUFzeW5jRGVjb2RpbmdGb3JMYXJnZUltYWdl
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFjYW5BbmltYXRlKCkgJiYgbV9zb3VyY2UtPmNhblVz
ZUFzeW5jRGVjb2RpbmcoKTsKKyAgICByZXR1cm4gIWNhbkFuaW1hdGUoKSAmJiBtX3NvdXJjZS0+
Y2FuVXNlQXN5bmNEZWNvZGluZygpICYmICEoaW1hZ2VPYnNlcnZlcigpICYmICFpbWFnZU9ic2Vy
dmVyKCktPmFsbG93c0FuaW1hdGlvbigpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6c2hvdWxk
VXNlQXN5bmNEZWNvZGluZ0ZvckFuaW1hdGVkSW1hZ2VzKCkgY29uc3QKQEAgLTYzNSw2ICs2MzUs
OSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3Qg
aW5kZXgpCiAgICAgICAgIEFTU0VSVCghbV9yZXBldGl0aW9uc0NvbXBsZXRlKTsKICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbTW9yZSBkYXRhIG1h
a2VzIGZyYW1lQ291bnQoKSA+IDFdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CisgICAgCisgICAgaWYgKGltYWdlT2JzZXJ2
ZXIoKSAmJiAhaW1hZ2VPYnNlcnZlcigpLT5hbGxvd3NBbmltYXRpb24oKSkKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fY3VycmVudEZyYW1lICYmICFtX2N1cnJlbnRG
cmFtZSk7CiAgICAgaWYgKG1fc291cmNlLT5pc0FzeW5jRGVjb2RpbmdRdWV1ZUlkbGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAppbmRl
eCAwNDI3MGM4M2QzMzcuLjkyNmZlNTdjMTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFn
ZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVj
b2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVj
dCA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQW5pbWF0aW9u
KCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IDVkNTM0OGZiMmMzZC4uNmI3YzBkM2Q0NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0yNTIxLDQgKzI1MjEsOSBAQCBGbG9hdFJl
Y3QgUmVuZGVyRWxlbWVudDo6cmVmZXJlbmNlQm94UmVjdChDU1NCb3hUeXBlIGJveFR5cGUpIGNv
bnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYm9vbCBSZW5kZXJFbGVtZW50OjphbGxvd3NBbmlt
YXRpb24oQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlKQoreworICAgIHJldHVybiBzZXR0aW5ncygp
LmltYWdlQW5pbWF0aW9uRW5hYmxlZCgpIHx8IGRvY3VtZW50KCkuaXNJbWFnZVVSTEFsbG93ZWRU
b0FuaW1hdGUoY2FjaGVkSW1hZ2UudXJsKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAyZmQ3YzZkNTE0ZTMuLjYyOTQ2MDUxYmRiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0yOTEsNiArMjkxLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNEZXByZWNhdGVkRmxleEl0ZW0oKSBjb25zdCB7IHJldHVy
biAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBh
cmVudCgpICYmIHBhcmVudCgpLT5pc0RlcHJlY2F0ZWRGbGV4aWJsZUJveCgpOyB9CiAgICAgYm9v
bCBpc0ZsZXhJdGVtSW5jbHVkaW5nRGVwcmVjYXRlZCgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGlu
ZSgpICYmICFpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYg
cGFyZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCk7IH0KIAorICAgIGJv
b2wgYWxsb3dzQW5pbWF0aW9uKENhY2hlZEltYWdlJikgZmluYWw7CisKIHByb3RlY3RlZDoKICAg
ICBlbnVtIEJhc2VUeXBlRmxhZyB7CiAgICAgICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFn
ICA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4
IGRiZmVmOGU0N2ZjYi4uNWQ4MzlkOTFkOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTQ0Miw2ICs0NDIsMTQgQEAgYm9vbCBSZW5kZXJJbWFnZTo6aGFz
Tm9uQml0bWFwSW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBpbWFnZSAmJiAhaXM8Qml0bWFwSW1h
Z2U+KGltYWdlKTsKIH0KIAorYm9vbCBSZW5kZXJJbWFnZTo6aXNBbmltYXRlZEltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoIXRoaXMtPmNhY2hlZEltYWdlKCkgJiYgIXRoaXMtPmNhY2hlZEltYWdl
KCktPmltYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdGhp
cy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+aXNBbmltYXRlZCgpOworfQorCiB2b2lkIFJlbmRl
ckltYWdlOjpwYWludEluY29tcGxldGVJbWFnZU91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8s
IExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGJvcmRlcldpZHRoKSBjb25zdAog
ewogICAgIGF1dG8gY29udGVudFNpemUgPSB0aGlzLT5jb250ZW50U2l6ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCA0NDI5ZDMwN2Y3YjAuLjAyMzI5MjNjY2I3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTgxLDYgKzgxLDgg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLT5hY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b24oKTsgfQogCisgICAgYm9vbCBpc0FuaW1hdGVkSW1hZ2UoKSBjb25zdDsKKwogcHJvdGVjdGVk
OgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA4NDE3Yzk4NjU2ZWEuLmVhMjY3Mjg5YjRlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtODc0LDYgKzg3NCwx
NCBAQCB2b2lkIFJlbmRlclZpZXc6OnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVk
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogICAgICAgICByZW1vdmVSZW5kZXJlcldpdGhQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMoKnBhaXIuZmlyc3QsICpwYWlyLnNlY29uZCk7CiB9CiAKK3Zv
aWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJl
Y3QmIHZpc2libGVSZWN0KQoreworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPFJlbmRlckltYWdlPigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuaXNWaXNp
YmxlSW5Eb2N1bWVudFJlY3QodmlzaWJsZVJlY3QpICYmIGVsZW1lbnQuaXNBbmltYXRlZEltYWdl
KCkpCisgICAgICAgICAgICBlbGVtZW50LnJlcGFpbnQoKTsKKyAgICB9Cit9CisKIFJlbmRlclZp
ZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJl
bmRlclZpZXcqIHZpZXcpCiB7CiAgICAgaWYgKCF2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKaW5kZXggMDhiM2E3YTJkYjIwLi5kYzFhNWQyNTI3ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJsZUluVmlld3BvcnRDYWxsYmFjayhSZW5kZXJFbGVtZW50
Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlzaWJsZUluVmlld3BvcnRDYWxsYmFjayhSZW5k
ZXJFbGVtZW50Jik7CiAgICAgdm9pZCByZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRl
ZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CisgICAgdm9pZCByZXBhaW50SW1hZ2VBbmlt
YXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIHZvaWQgYWRk
UmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmLCBDYWNoZWRJ
bWFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25z
KFJlbmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdl
QW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCA4ZDBlNzZlMWZjNTYuLmM3YjNjYWY2NzBjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA0OSw2ICsxMDQ5LDE2IEBAIGJvb2wg
SW50ZXJuYWxzOjppc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgcmV0dXJuIGltYWdlICYmIChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0
aW9uUGVuZGluZygpKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5pbWF0aW9u
KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZWxlbWVudC5yZXN1bWVBbmltYXRp
b24oKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdl
RWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBlbGVtZW50LnBhdXNlQW5pbWF0aW9uKCk7Cit9CisK
IHVuc2lnbmVkIEludGVybmFsczo6aW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRl
c3RpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gZWxlbWVudC5w
ZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IGYzOGI2N2M1NGNiYy4uMzhjMzkxZjEyZmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIyMSw2ICsyMjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQgZHVy
YXRpb24pOwogICAgIHZvaWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7
CiAgICAgYm9vbCBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lk
IHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHBhdXNl
SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHVuc2lnbmVkIGltYWdlUGVu
ZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAg
ICB2b2lkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nKEhU
TUxJbWFnZUVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHVuc2lnbmVkIGltYWdlRGVjb2Rl
Q291bnQoSFRNTEltYWdlRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IDI3MTY0OTVmNTA2YS4uNTEwNzczM2Y3ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCkBAIC01NTQsNiArNTU0LDggQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9y
IEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIHVuZGVmaW5lZCBzZXRJbWFnZUZyYW1l
RGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBm
bG9hdCBkdXJhdGlvbik7CiAgICAgdW5kZWZpbmVkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTElt
YWdlRWxlbWVudCBlbGVtZW50KTsKICAgICBib29sZWFuIGlzSW1hZ2VBbmltYXRpbmcoSFRNTElt
YWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgcmVzdW1lSW1hZ2VBbmltYXRpb24o
SFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgcGF1c2VJbWFnZUFuaW1h
dGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VQ
ZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVt
ZW50KTsKICAgICB1bmRlZmluZWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVz
dEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwog
ICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50IGVsZW1l
bnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0lt
YWdlQ2FzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdl
Q2FzdHMuY3BwCmluZGV4IDJkYWExMzIxNGM2My4uMTYxNDljMzliZjFmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NWR0ltYWdlQ2FzdHMuY3BwCkBAIC03
NSw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShj
b25zdCBJbWFnZSYpIGZpbmFsCiAgICAgewogICAgIH0KKyAgICBib29sIGFsbG93c0FuaW1hdGlv
bigpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsKIAogVEVT
VChTVkdJbWFnZUNhc3RzLCBTVkdJbWFnZUZvckNvbnRhaW5lcklzTm90U1ZHSW1hZ2UpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMt
ZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi41OGQwMzVhMTkxODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyB0aGF0IGFuaW1hdGlvbnMgYXJl
IGRpc2FibGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0ZWQgaW1hZ2VzIHNldHRpbmcgaXMgdHVy
bmVkIG9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIGludGVybmFscy5pc0lt
YWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDM2NzdlODhlMjgxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIEltYWdlQW5pbWF0aW9uRW5hYmxlZD1mYWxzZSBdIC0tPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLmdp
ZiIgaWQ9InRlc3RJbWFnZSIgLz4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gdGhlIGRpc2FibGUgYW5pbWF0
ZWQgaW1hZ2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLlxuXG4iKTsKKworICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
SW1hZ2UiKTsKKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hv
dWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxz
ZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdl
QW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAidHJ1ZSIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJs
ZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzJjYTViZDVjN2VkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhl
eSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2Up
IGJlY2FtZSBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVj
YW1lIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSBm
YWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjViYTJlOGE5MjE0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJs
ZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDI5
IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEltYWdlQW5pbWF0
aW9uRW5hYmxlZD1mYWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcg
c3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiIgaWQ9InRlc3RJbWFnZSIgLz4KKworPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9u
IGlzIGRpc2FibGVkLCB0aGV5IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5kaXZpZHVhbGx5
LlxuXG4iKTsKKworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHZhciBpbWFnZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UiKTsKKyAgICB3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFn
ZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlu
dGVybmFscy5yZXN1bWVJbWFnZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAgICBzaG91bGRC
ZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgInRydWUiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMucGF1c2VJbWFnZUFuaW1hdGlv
bihpbWFnZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5p
c0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9OworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9u
cy1yZXN1bWluZy1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjU4ZWUwNDY1NTQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRp
b25zLXJlc3VtaW5nLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitWZXJpZnkg
cmVzdW1lZCBhbmltYXRpb25zIHN0YXJ0IGF0IHRoZSBmcmFtZSB0aGV5IHdlcmUgcGF1c2VkIGF0
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW1hZ2Ugd2FzIGxvYWRlZCBzdWNj
ZXNzZnVsbHkuCitJbWFnZSBmcmFtZTogMCB3YXMgZGlzcGxheWVkLgorSW1hZ2UgZnJhbWU6IDEg
d2FzIGRpc3BsYXllZC4KK0ltYWdlIGZyYW1lOiAyIHdhcyBkaXNwbGF5ZWQuCitJbWFnZSBmcmFt
ZTogMyB3YXMgZGlzcGxheWVkLgorVGhlIGFuaW1hdGlvbiB3YXMgbG9hZGVkIGFuZCBwYXVzZWQv
cmVzdW1lZCBjb3JyZWN0bHkuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZGlzYWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwMGMwNjQ2OWNhMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSIiPgorCis8c2NyaXB0Pgor
CisgICAgZnVuY3Rpb24gZHJhd0ZyYW1lKGltYWdlLCBmcmFtZSkgeworICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0OworICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgICAgICAg
ICBsZXQgaW1hZ2VGcmFtZSA9IGludGVybmFscy5pbWFnZUZyYW1lSW5kZXgoaW1hZ2UpOworCisg
ICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHki
LCBmdW5jdGlvbiBsaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2UgZnJh
bWU6ICIgKyBpbWFnZUZyYW1lICsgIiB3YXMgZGlzcGxheWVkLiIpOworICAgICAgICAgICAgICAg
IGltYWdlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIGxpc3Rl
bmVyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKGZyYW1lICsgMSk7CisgICAgICAg
ICAgICB9LCB0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZHJhd0lt
YWdlKGltYWdlLCBmcmFtZUNvdW50KSB7CisgICAgICAgIGludGVybmFscy5yZXN1bWVJbWFnZUFu
aW1hdGlvbihpbWFnZSk7CisgICAgICAgIGxldCBwcm9taXNlID0gZHJhd0ZyYW1lKGltYWdlLCAw
KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmcmFtZUNvdW50OyArK2kpIHsKKyAgICAg
ICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oKGZyYW1lKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGRyYXdGcmFtZShpbWFnZSwgZnJhbWUpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBpZiAoaSA9PSAyKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1h
Z2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgICAgIGludGVybmFscy5yZXN1bWVJbWFn
ZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHByb21pc2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9hZEFuZERyYXdJbWFnZShpbWFn
ZSwgc3JjLCBmcmFtZUNvdW50KSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSkgPT4geworICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiSW1hZ2Ugd2FzIGxvYWRlZCBzdWNjZXNzZnVsbHkuIik7CisgICAgICAgICAg
ICAgICAgZHJhd0ltYWdlKGltYWdlLCBmcmFtZUNvdW50KS50aGVuKHJlc29sdmUpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBpbWFnZS5zcmMgPSBzcmM7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBpbnRl
cm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFdlYmtpdEltYWdlUmVhZHlFdmVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0QW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKHRydWUp
OworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxl
ZChmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJpbWciKTsKKworICAgICAgICBkZXNjcmlwdGlvbigiVmVyaWZ5IHJlc3VtZWQg
YW5pbWF0aW9ucyBzdGFydCBhdCB0aGUgZnJhbWUgdGhleSB3ZXJlIHBhdXNlZCBhdC4iKTsKKwor
ICAgICAgICBsb2FkQW5kRHJhd0ltYWdlKGltYWdlLCAicmVzb3VyY2VzL2FuaW1hdGVkLTQtZnJh
bWVzLmdpZiIsIDQpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgZGVidWcoIlRoZSBhbmltYXRp
b24gd2FzIGxvYWRlZCBhbmQgcGF1c2VkL3Jlc3VtZWQgY29ycmVjdGx5LiIpOworICAgICAgICAg
ICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9KTsKKyAgICB9KSgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9h
bmltYXRlZC00LWZyYW1lcy5naWYgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNv
dXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZTQ3NzE0MjZlYmE2YWJh
M2IxN2MzMjE4MGQyODM5MDc0MzBjYzEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDIwOQp6Y21a
P3diaEVIYjZrIWx5X2B0eU1wOCo2RXw4eDdmaDZGbzEyRGxwTzg4OTx+Z25xSUJSV0xCPGZhRjFu
OEpHbEgKcmBkNk5RJWZFUWVtUnNHTUA5cGAkVUtDU1IxNDlFeTFDZVVNKSlTfXBLaUgrJSlMSGBv
ekwhND0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1ZTcx
NGY1N2NiZmIzMmE0NmY0MmMyMTdiMjYzMDhhNjhmZDE4ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN3PGtkfTZhVko0NnMxKjBKXzB6KkxZS2V3TjJOVSpi
R2ZVQSs3MFcle28ybyEmXgp6dXoqNUIyU2s5ZjI/S3tMMTJjej0kQSQkNW4+bUVGVm9xI1djKGAz
YSo9dnIrI3pqWFA4NXl6YlY4b314OFVTZDEKQkI0X3tyCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZWYzM2VhODU0YWQ2Li45NzZhMjY1YWE5NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1Myw2ICs0NTMsMTEgQEAgbWVkaWEvbm93LXBs
YXlpbmctc3RhdHVzLXdpdGhvdXQtbWVkaWEuaHRtbCBbIFNraXAgXQogIyBXZWJNIG5vdCBzdXBw
b3J0ZWQgaW4gV0sxIG9uIG1hY09TLgogaHR0cC90ZXN0cy9tZWRpYS92aWRlby13ZWJtLXN0YWxs
Lmh0bWwKIAorIyBJbWFnZSBhbmltYXRpb24gZGlzYWJsZWQgKGV4cGVyaW1lbnRhbCBmZWF0dXJl
KQorYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCBbIFNr
aXAgXQorYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24uaHRtbCBbIFNraXAgXQorYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLXJlc3VtaW5nLWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogIyBFbmQgZmVhdHVyZXMgbm90IHN1cHBvcnRlZCBpbiBXZWJLaXQx
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462169</attachid>
            <date>2022-09-06 14:33:08 -0700</date>
            <delta_ts>2022-09-08 08:58:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220906143308.patch</filename>
            <type>text/plain</type>
            <size>37706</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA0N2VjNjc4NWRkZjQ2NWM2NjU1ZWZiODc0MTJkYTExMTM2YWRiM2U2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBwcmVmZXJlbmNlLCB3aGljaCB3aGVuIGRpc2FibGVkLCBwcmV2ZW50
cyBCaXRtYXBJbWFnZSBhbmltYXRpb25zLiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGlu
dGVyZmFjZXMgdG8gY29udHJvbCBpbmRpdmlkdWFsIGltYWdlIGFuaW1hdGlvbnMuCgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNh
YmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWY6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWY6
IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFuIGluZGl2aWR1
YWwgYW5pbWF0aW9uLCBhbmQgY2hlY2tpbmcgdGhlIGZyYW1lcyBjb250aW51ZSBjb3JyZWN0bHku
CgoqIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sOgoKQWRkcyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBzZXRzIGl0
IGVuYWJsZWQgYnkgZGVmYXVsdCAoSW1hZ2VBbmltYXRpb25FbmFibGVkKS4KCiogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQ6OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmlzQW5pbWF0aW5nIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmlzQW5pbWF0
ZWRJbWFnZSBjb25zdCk6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjphbGxvd3NBbmltYXRp
b24gY29uc3QpOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c2V0QWxsb3dzQW5pbWF0aW9u
KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnJlc2V0QWxsb3dzQW5pbWF0aW9uKToKKiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKCk1ldGhvZHMgdG8gY29udHJv
bCBpbWFnZSBhbmltYXRpb24gc3RhdGUgYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW4gYW5pbWF0
aW9uLgoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6CgpBZGQgYSBjb25k
aXRpb24gdG8gc2hvdWxkQW5pbWF0ZSB0byBjaGVjayBhbGxvd3NBbmltYXRpb24oKSBmcm9tIHRo
ZSBpbWFnZSBvYnNlcnZlci4KCiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKFdlYkNvcmU6OkltYWdlOjphbGxvd3NBbmltYXRpb24gY29uc3QpOgooV2ViQ29yZTo6
SW1hZ2U6OnNldEFsbG93c0FuaW1hdGlvbik6CgpBZGQgbWV0aG9kcyB0byBjb250cm9sIHRoZSBp
bmRpdmlkdWFsIGFsbG93c0FuaW1hdGlvbiBzdGF0ZS4KCiogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXN1bWVJbWFnZUFuaW1hdGlv
bik6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24pOgoqIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmg6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgoKTmV3IGludGVybmFsIHRlc3RpbmcgbWV0aG9kcyB0byB2ZXJpZnkgdGhlIHNl
dHRpbmcgaXMgb24gJiBpbWFnZXMgYXJlIGluIHRoZSBjb3JyZWN0IHN0YXRlCgoqIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwoKU2tpcHBlZCB0ZXN0cyBvbiBX
SzEgKG5vdCBzdXBwb3J0ZWQpCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaAoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAoqIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TVkdJbWFnZUNhc3RzLmNwcAoqIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwCgpBZGQgbmV3IEltYWdlT2JzZXJ2ZXIgbWV0aG9kIHRvIGdldCBhbiBp
bWFnZXMgZGVzaXJlZCBhbmltYXRpb24gc3RhdGUuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKCkFkZGVkIGEgbWV0aG9kIHRvIGdldCBpZiBhbiBpbWFnZSBpcyBhbGxvd2VkIHRvIGFu
aW1hdGUgYmFzZWQgb24gc2V0dGluZ3MgYW5kL29yIHRoZSBpbmRpdmlkdWFsIGltYWdlcyBzdGF0
ZS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFz
ZS5oCiogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAoqIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCgpOZXcgbWV0aG9kcyAoaW52b2tlZCBieSB0aGUgcHJlZmVyZW5jZSBjaGFuZ2UpIHRo
YXQgcmVwYWludCB2aXNpYmxlIGFuaW1hdGVkIGltYWdlcy4KCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCgpOZXcgbWV0aG9kIHRvIGNoZWNrIGlmIGEgUmVuZGVySW1hZ2UgaXMgYW5pbWF0ZWQg
YW5kIGlmIGl0IGFsbG93cyBhbmltYXRpb24uCi0tLQogLi4uL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwgICAgICAgICAgIHwgIDEzICsrKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgICAgICAgICAgICAgICB8ICAxNSArKysrCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCAgICAgICAgICAgICAgICAgfCAgIDYgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAgICAgICB8ICA0MCArKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaCAgICAgICAgfCAgIDkgKysrCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcCAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCAgIHwgIDE5ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCAgICAgfCAgIDMgKwogLi4uL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmggIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCAgICAgICAgICAgICB8ICAxNiArKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oICAgICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuY3BwICAgICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzQmFzZS5oICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwIHwgICA3ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oICAgICAgfCAgIDUgKysKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT2JzZXJ2ZXIuaCB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAgICAgfCAgIDUgKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmggICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwICAgICAgfCAgMTUgKysrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmggICAgICAgIHwgICAzICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcCAgICAgICB8ICAgOCArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aCAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAg
ICAgICAgICB8ICAxMCArKysKIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAg
ICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAg
ICAgICAgfCAgIDIgKwogLi4uL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAgICAgICAg
ICAgIHwgICA0ICsKIC4uLi9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQg
ICB8ICAxMSArKysKIC4uLi9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbCAgICAg
ICB8ICAyNiArKysrKysrCiAuLi5vbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3Rl
ZC50eHQgfCAgMTIgKysrCiAuLi4tYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9u
Lmh0bWwgfCAgMjkgKysrKysrKwogLi4uYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhw
ZWN0ZWQudHh0IHwgIDE1ICsrKysKIC4uLi9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJh
bWUuaHRtbCAgICB8ICA3MyArKysrKysrKysrKysrKysrKysKIC4uLi9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGVkLTQtZnJhbWVzLmdpZiAgICAgICB8IEJpbiAwIC0+IDIwOSBieXRlcwogLi4uL2FjY2Vz
c2liaWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmIHwgQmluIDAgLT4gOTAxIGJ5dGVz
CiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgfCAgIDUgKysK
IDM3IGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5p
bWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlv
bnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZy
YW1lLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2FuaW1h
dGVkLTQtZnJhbWVzLmdpZgogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAppbmRleCBjMzYyMTA4MmI1NGIuLjA5Y2FmOTU4OGE0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwK
KysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwKQEAgLTc3MSw2ICs3NzEsMTkgQEAgSGlnaGxpZ2h0QVBJRW5hYmxlZDoKICAg
ICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogCitJbWFnZUFuaW1hdGlvbkVuYWJsZWQ6
CisgIHR5cGU6IGJvb2wKKyAgd2ViY29yZU9uQ2hhbmdlOiBzZXRJbWFnZUFuaW1hdGlvbkVuYWJs
ZWRDaGFuZ2VkCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW1hZ2UgQW5pbWF0aW9uIEVuYWJsZWQi
CisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBpbWFnZSBhbmltYXRpb25zLiIK
KyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IHRydWUK
KyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgV2ViQ29yZToKKyAgICAgIGRl
ZmF1bHQ6IHRydWUKKwogSW1hZ2VCaXRtYXBFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGh1bWFu
UmVhZGFibGVOYW1lOiAiSW1hZ2VCaXRtYXAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBl
MjM3MTFiNGI5MDUuLmIxMGVjMDM5YTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05
MjY5LDYgKzkyNjksMjEgQEAgU3RyaW5nIERvY3VtZW50OjplbmRwb2ludFVSSUZvclRva2VuKGNv
bnN0IFN0cmluZyYgdG9rZW4pIGNvbnN0CiAgICAgcmV0dXJuIHJlcG9ydGluZ1Njb3BlKCkuZW5k
cG9pbnRVUklGb3JUb2tlbih0b2tlbik7CiB9CiAKK2Jvb2wgRG9jdW1lbnQ6OmlzSW1hZ2VVUkxB
bGxvd2VkVG9BbmltYXRlKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiBtX2lt
YWdlVVJMc0FsbG93ZWRUb0FuaW1hdGUuY29udGFpbnModXJsKTsKK30KKwordm9pZCBEb2N1bWVu
dDo6YWRkQWxsb3dlZEFuaW1hdGVkSW1hZ2VVUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAgbV9p
bWFnZVVSTHNBbGxvd2VkVG9BbmltYXRlLmFkZCh1cmwpOworfQorCit2b2lkIERvY3VtZW50Ojpy
ZW1vdmVBbGxvd2VkQW5pbWF0ZWRJbWFnZVVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBtX2lt
YWdlVVJMc0FsbG93ZWRUb0FuaW1hdGUucmVtb3ZlKHVybCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IGUyYmUxODJkOWJiOS4uNzBhMWVjZjdhMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMTY5OSw2ICsxNjk5LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpT
ZXNzaW9uSUQ+IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCisgICAgYm9vbCBpc0ltYWdlVVJM
QWxsb3dlZFRvQW5pbWF0ZShjb25zdCBVUkwmKSBjb25zdDsKKyAgICB2b2lkIGFkZEFsbG93ZWRB
bmltYXRlZEltYWdlVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZEFuaW1h
dGVkSW1hZ2VVUkwoY29uc3QgVVJMJik7CisKICAgICBSZXBvcnRpbmdTY29wZSYgcmVwb3J0aW5n
U2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydGluZ1Njb3BlLmdldCgpOyB9CiAKIHByb3Rl
Y3RlZDoKQEAgLTIzMDQsNiArMjMwOCw4IEBAIHByaXZhdGU6CiAgICAgV2Vha0hhc2hTZXQ8RWxl
bWVudD4gbV9lbGVtZW50c1dpdGhQZW5kaW5nVXNlckFnZW50U2hhZG93VHJlZVVwZGF0ZXM7CiAK
ICAgICBSZWY8UmVwb3J0aW5nU2NvcGU+IG1fcmVwb3J0aW5nU2NvcGU7CisKKyAgICBMaXN0SGFz
aFNldDxVUkw+IG1faW1hZ2VVUkxzQWxsb3dlZFRvQW5pbWF0ZTsKIH07CiAKIEVsZW1lbnQqIGV2
ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhYjY3MzY4MzA4YjkuLjNiODBiYTYyYjY3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC03NjYsNiArNzY2
LDM5IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgp
IGNvbnN0CiAgICAgcmV0dXJuICFpbWFnZSB8fCBpbWFnZS0+c291cmNlVVJMKCkucHJvdG9jb2xJ
c0RhdGEoKSB8fCBjYWNoZWRJbWFnZS0+aXNDT1JTU2FtZU9yaWdpbigpOwogfQogCitJbWFnZSog
SFRNTEltYWdlRWxlbWVudDo6aW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBjYWNoZWRJ
bWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCkpCisgICAgICAgIHJldHVybiBjYWNoZWRJbWFnZS0+
aW1hZ2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBIVE1MSW1hZ2VFbGVtZW50
OjphbGxvd3NBbmltYXRpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IHRoaXMt
PmltYWdlKCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+YWxsb3dzQW5pbWF0aW9uKCkudmFsdWVf
b3IoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmltYWdlQW5pbWF0aW9uRW5hYmxlZCgpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QWxsb3dzQW5pbWF0
aW9uKGJvb2wgc2hvdWxkQW5pbWF0ZSkKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSB0aGlzLT5p
bWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPnNldEFsbG93c0FuaW1hdGlvbihzaG91bGRB
bmltYXRlKTsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpyZXNldEFsbG93c0FuaW1hdGlv
bigpCit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIGltYWdlLT5zZXRBbGxvd3NBbmltYXRpb24oc3RkOjpudWxsb3B0KTsKK30KKworYm9vbCBI
VE1MSW1hZ2VFbGVtZW50Ojppc0FuaW1hdGluZygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGlt
YWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5pc0FuaW1hdGluZygp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QXR0YWNobWVudEVsZW1lbnQoUmVmPEhUTUxB
dHRhY2htZW50RWxlbWVudD4mJiBhdHRhY2htZW50KQpAQCAtOTU3LDQgKzk5MCwxMSBAQCBSZWY8
RWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbihEb2N1bWVudAogICAgIHJldHVybiBjbG9uZTsKIH0KIAorYm9vbCBIVE1MSW1h
Z2VFbGVtZW50Ojppc0FuaW1hdGVkSW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFn
ZSA9IHRoaXMtPmltYWdlKCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+aXNBbmltYXRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAppbmRleCA2ZDU1ZTE4N2NiMjQuLjg4OWU5M2Q0NjQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTE1NSw2ICsxNTUsMTMgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBhbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29uc3Q7CiAKKyAgICBib29sIGFsbG93
c0FuaW1hdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsb3dzQW5p
bWF0aW9uKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBbGxvd3NBbmltYXRp
b24oKTsKKworICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0
ZWRJbWFnZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0cik7
CiAKQEAgLTIzNyw2ICsyNDQsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9u
ZWRBdHRhY2htZW50SUQ7CiAjZW5kaWYKIAorICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OworCiAg
ICAgZnJpZW5kIGNsYXNzIEhUTUxQaWN0dXJlRWxlbWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUJpdG1hcC5jcHAKaW5kZXggOTY4ZWNmZDI0YjBkLi43ZGIyNzRlN2EzZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02MzYsNiArNjM2LDggQEAgcHVibGljOgogICAg
IHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0
cikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpIG92ZXJyaWRlIHsgfQogCisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSW1hZ2VCaXRtYXBJbWFnZU9ic2Vy
dmVyKFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgVVJMJiBzb3VyY2VVcmwpCiAgICAgICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDhiMTZjMDAxNTZh
OC4uOTE5NTg2OTJlMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKQEAgLTQ0Nyw2ICs0NDcsMTUgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWcKICAg
ICAgICAgY2FjaGVkSW1hZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGltYWdlKTsKIH0KIAor
Ym9vbCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6YWxsb3dzQW5pbWF0aW9uKCkK
K3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykgeworICAgICAg
ICBpZiAoY2FjaGVkSW1hZ2UtPmFsbG93c0FuaW1hdGlvbigpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogaW5saW5lIHZvaWQgQ2FjaGVk
SW1hZ2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFnZSkKQEAgLTcwMCw2ICs3MDks
MTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1h
Z2UmIGltYWdlKQogICAgICAgICBjbGllbnQtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1h
Z2UoKnRoaXMpOwogfQogCitib29sIENhY2hlZEltYWdlOjphbGxvd3NBbmltYXRpb24oKQorewor
ICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xpZW50PiB3YWxrZXIo
KnRoaXMpOworICAgIHdoaWxlIChhdXRvKiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKSB7CisgICAg
ICAgIGlmICghY2xpZW50LT5hbGxvd3NBbmltYXRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQ2FjaGVkSW1hZ2U6OmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikK
IHsKICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggNjIwOTRjMWQ4OTcwLi4w
ZjIyMTllM2FhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhblNraXBSZXZhbGlkYXRpb24o
Y29uc3QgQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdDsKIAogICAgIGJvb2wgaXNWaXNpYmxlSW5WaWV3cG9ydChjb25zdCBEb2N1bWVudCYp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dzQW5pbWF0aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhcigpOwpAQCAtMTU4LDYgKzE1OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsKICAgICAgICAg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZpbmFsOwogCisgICAg
ICAgIGJvb2wgYWxsb3dzQW5pbWF0aW9uKCkgZmluYWw7CisKICAgICAgICAgSGFzaFNldDxDYWNo
ZWRJbWFnZSo+IG1fY2FjaGVkSW1hZ2VzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggMjg2ODk2OWRiMzdiLi5kYzI5
ZDEyOTcxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZUNsaWVudC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikgeyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQW5pbWF0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4
IDIwMTlmZmY5ZmM0NC4uZjEzODQ5YjA5MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0yNzU2LDYgKzI3NTYsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFn
ZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCiAgICAgICAgIHJlbmRlclZp
ZXctPnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKHZpc2libGVSZWN0KTsKIH0K
IAordm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IElu
dFJlY3QmIHZpc2libGVSZWN0KQoreworICAgIGlmICh2aXNpYmxlUmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWUoKS5jb250
ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyVmlldy0+cmVwYWludEltYWdlQW5pbWF0aW9u
c0lmTmVlZGVkKHZpc2libGVSZWN0KTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcmlw
dGVkQW5pbWF0aW9uc0FuZFRpbWVyc1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNp
YmxlUmVjdCkKIHsKICAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQpAQCAtMjc5MSw2ICsy
ODAwLDEzIEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5j
bHVkaW5nU3ViZnJhbWVzKCkKICAgICB9KTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRW
aXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3sKKyAgICBhcHBseVJl
Y3Vyc2l2ZWx5V2l0aFZpc2libGVSZWN0KFtdIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3Qg
SW50UmVjdCYgdmlzaWJsZVJlY3QpIHsKKyAgICAgICAgZnJhbWVWaWV3LnJlcGFpbnRWaXNpYmxl
SW1hZ2VBbmltYXRpb25zKHZpc2libGVSZWN0KTsKKyAgICB9KTsKK30KKwogdm9pZCBGcmFtZVZp
ZXc6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKQogewogICAgIC8vIElmIHdl
J3JlIHNjcm9sbGluZyBhcyBhIHJlc3VsdCBvZiB1cGRhdGluZyB0aGUgdmlldyBzaXplIGFmdGVy
IGxheW91dCwgd2UnbGwgdXBkYXRlIHdpZGdldHMgYW5kIGxheWVyIHBvc2l0aW9ucyBzb29uIGFu
eXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDYyYTllMDc3ODBlMi4uZTQ5OTUyM2Mw
ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTMyNSw2ICszMjUsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7
CisgICAgdm9pZCByZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1l
cygpOwogCiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwpAQCAtNzc2LDYgKzc3Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3Qg
RnVuY3Rpb248dm9pZChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QpPiYpOwogICAgIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCk7CisgICAgdm9pZCByZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0
aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVTY3JpcHRl
ZEFuaW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5nU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RUaWxlZEJhY2tpbmdDb3Zl
cmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMGU0MmE2ZGNkNjViLi45NTVjMjZlOWQ5ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDAxNSw0ICs0MDE1LDEwIEBAIHZvaWQgUGFnZTo6Zm9y
Y2VSZXBhaW50QWxsRnJhbWVzKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6cmVwYWludEFuaW1h
dGVkSW1hZ2VzKCkKK3sKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lKCkudmll
dygpKQorICAgICAgICB2aWV3LT5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGlu
Z1N1YmZyYW1lcygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IDY4MGIxMDA4Y2U1Ny4uZWZkZGQ5ZTk1ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjkzLDYg
KzY5Myw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2liaWxpdHlTdGF0ZSB2
aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFu
aW1hdGluZ0ltYWdlcygpOworICAgIHZvaWQgcmVwYWludEFuaW1hdGVkSW1hZ2VzKCk7CiAKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggMjU4ZmU4MzI5NDYyLi41
ZmZhOTdmOTAxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTQ4NCw0
ICs0ODQsMTAgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJs
ZUNoYW5nZWQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZUFuaW1h
dGlvbkVuYWJsZWRDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2Ut
PnJlcGFpbnRBbmltYXRlZEltYWdlcygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCAxYjM5YjEzNjljMDkuLjc4Y2U1YzVjZDhl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0xNjUsNiArMTY1LDcgQEAgcHJv
dGVjdGVkOgogI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQogICAgIHZvaWQgbGF5
ZXJCYXNlZFNWR0VuZ2luZUVuYWJsZWRDaGFuZ2VkKCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldElt
YWdlQW5pbWF0aW9uRW5hYmxlZENoYW5nZWQoKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4
IGE4N2FjNjkwYjJlYy4uMDk1ZDc2ZTMxYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNo
ZWQgJiYgaW1hZ2VPYnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAh
bV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgaW1hZ2VPYnNlcnZlcigp
LT5hbGxvd3NBbmltYXRpb24oKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgp
IGNvbnN0CkBAIC0zODQsNyArMzg0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgp
IGNvbnN0CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhblVzZUFzeW5jRGVjb2RpbmdGb3JMYXJnZUlt
YWdlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFjYW5BbmltYXRlKCkgJiYgbV9zb3VyY2UtPmNh
blVzZUFzeW5jRGVjb2RpbmcoKTsKKyAgICByZXR1cm4gIXNob3VsZEFuaW1hdGUoKSAmJiBtX3Nv
dXJjZS0+Y2FuVXNlQXN5bmNEZWNvZGluZygpICYmICEoZnJhbWVDb3VudCgpID4gMSk7CiB9CiAK
IGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZFVzZUFzeW5jRGVjb2RpbmdGb3JBbmltYXRlZEltYWdl
cygpIGNvbnN0CkBAIC02MzUsNiArNjM1LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW1hZ2VGcmFt
ZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICBBU1NFUlQoIW1fcmVwZXRp
dGlvbnNDb21wbGV0ZSk7CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAl
cCAtIHVybDogJXMgW01vcmUgZGF0YSBtYWtlcyBmcmFtZUNvdW50KCkgPiAxXSIsIF9fRlVOQ1RJ
T05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQor
ICAgIAorICAgIGlmIChpbWFnZU9ic2VydmVyKCkgJiYgIWltYWdlT2JzZXJ2ZXIoKS0+YWxsb3dz
QW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChpbmRleCA9PSBtX2N1
cnJlbnRGcmFtZSAmJiAhbV9jdXJyZW50RnJhbWUpOwogICAgIGlmIChtX3NvdXJjZS0+aXNBc3lu
Y0RlY29kaW5nUXVldWVJZGxlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAppbmRleCA4MzgyMzcyZDUyYWIuLmVhMGQyOTA3NjVjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNDYsNiArMTQ2LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpIHt9CiAgICAgdmlydHVhbCBib29sIGlzQW5p
bWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGFuaW1hdGlvblBlbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXJ0VGltZXIgJiYgbV9hbmltYXRpb25T
dGFydFRpbWVyLT5pc0FjdGl2ZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd3NB
bmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FuaW1hdGlvbjsgfQorICAgIHZvaWQg
c2V0QWxsb3dzQW5pbWF0aW9uKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWxsb3dzQW5pbWF0aW9uKSB7
IG1fYWxsb3dzQW5pbWF0aW9uID0gYWxsb3dzQW5pbWF0aW9uOyB9CiAKICAgICAvLyBUeXBpY2Fs
bHkgdGhlIENhY2hlZEltYWdlIHRoYXQgb3ducyB1cy4KICAgICBJbWFnZU9ic2VydmVyKiBpbWFn
ZU9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CkBAIC0yMTEsNiAr
MjEzLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9l
bmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNlcnZlcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKKyAgICAKKyAg
ICAvLyBBIHZhbHVlIG9mIHRydWUgb3IgZmFsc2Ugd2lsbCBvdmVycmlkZSB0aGUgZ2xvYmFsIElt
YWdlQW5pbWF0aW9uRW5hYmxlZCBzZXR0aW5nLgorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9h
bGxvd3NBbmltYXRpb24geyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbWFnZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDA0MjcwYzgz
ZDMzNy4uOTI2ZmU1N2MxMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5n
U3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1
cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5n
ZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0
cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBbmltYXRpb24oKSA9IDA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXgg
NWQ1MzQ4ZmIyYzNkLi4yOWFhYzBhM2YwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKQEAgLTI1MjEsNCArMjUyMSw5IEBAIEZsb2F0UmVjdCBSZW5kZXJF
bGVtZW50OjpyZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUgYm94VHlwZSkgY29uc3QKICAgICBy
ZXR1cm4geyB9OwogfQogCitib29sIFJlbmRlckVsZW1lbnQ6OmFsbG93c0FuaW1hdGlvbigpCit7
CisgICAgcmV0dXJuIHNldHRpbmdzKCkuaW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDJmZDdjNmQ1MTRl
My4uMjk4NzliZjRmZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgKQEAgLTI5MSw2ICsyOTEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlcHJlY2F0ZWRGbGV4
SXRlbSgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nT3JPdXRPZkZs
b3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPmlzRGVwcmVjYXRlZEZsZXhp
YmxlQm94KCk7IH0KICAgICBib29sIGlzRmxleEl0ZW1JbmNsdWRpbmdEZXByZWNhdGVkKCkgY29u
c3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJl
Y2F0ZWQoKTsgfQogCisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oKSBvdmVycmlkZTsKKwogcHJv
dGVjdGVkOgogICAgIGVudW0gQmFzZVR5cGVGbGFnIHsKICAgICAgICAgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdEZsYWcgID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKaW5kZXggZGJmZWY4ZTQ3ZmNiLi5iMjQyODhkM2U1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDQyLDYgKzQ0MiwxNCBAQCBib29sIFJlbmRl
ckltYWdlOjpoYXNOb25CaXRtYXBJbWFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGltYWdlICYmICFp
czxCaXRtYXBJbWFnZT4oaW1hZ2UpOwogfQogCitib29sIFJlbmRlckltYWdlOjppc0FuaW1hdGVk
SW1hZ2UoKSBjb25zdAoreworICAgIGlmICghdGhpcy0+Y2FjaGVkSW1hZ2UoKSAmJiAhdGhpcy0+
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IHJldHVybiB0aGlzLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5pc0FuaW1hdGVkKCk7Cit9CisK
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW5jb21wbGV0ZUltYWdlT3V0bGluZShQYWludEluZm8m
IHBhaW50SW5mbywgTGF5b3V0UG9pbnQgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgYm9yZGVyV2lk
dGgpIGNvbnN0CiB7CiAgICAgYXV0byBjb250ZW50U2l6ZSA9IHRoaXMtPmNvbnRlbnRTaXplKCk7
CkBAIC05MDAsNCArOTA4LDExIEBAIFJlbmRlckJveCogUmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29u
dGVudEJveCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVySW1h
Z2U6OmFsbG93c0FuaW1hdGlvbigpCit7CisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQoKSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxl
bWVudCgpKS5hbGxvd3NBbmltYXRpb24oKTsKKyAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmFs
bG93c0FuaW1hdGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDQ0MjlkMzA3ZjdiMC4uZDg5MDVjNjNkOGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODEsNiArODEsOSBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qg
eyByZXR1cm4gaW1hZ2VSZXNvdXJjZSgpLmltYWdlKCktPmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpOyB9CiAKKyAgICBib29sIGlzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0OworICAgIGJvb2wgYWxs
b3dzQW5pbWF0aW9uKCkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
aW5kZXggODQxN2M5ODY1NmVhLi5lYTI2NzI4OWI0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTg3NCw2ICs4NzQsMTQgQEAgdm9pZCBSZW5kZXJWaWV3Ojpy
ZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKCpw
YWlyLmZpcnN0LCAqcGFpci5zZWNvbmQpOwogfQogCit2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRJ
bWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKK3sKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxSZW5kZXJJbWFnZT4oKnRo
aXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50LmlzVmlzaWJsZUluRG9jdW1lbnRSZWN0KHZpc2li
bGVSZWN0KSAmJiBlbGVtZW50LmlzQW5pbWF0ZWRJbWFnZSgpKQorICAgICAgICAgICAgZWxlbWVu
dC5yZXBhaW50KCk7CisgICAgfQorfQorCiBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11
bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQogewogICAg
IGlmICghdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDA4YjNh
N2EyZGIyMC4uZGMxYTVkMjUyN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckZvclZpc2li
bGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3Rl
ckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQg
cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QpOworICAgIHZvaWQgcmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IElu
dFJlY3QmIHZpc2libGVSZWN0KTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0aFBhdXNlZEltYWdl
QW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKICAgICB2b2lkIHJlbW92
ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50Jik7CiAgICAg
dm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVu
dCYsIENhY2hlZEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
OGQwZTc2ZTFmYzU2Li5lNzA2YjA0NmMyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTEwNDksNiArMTA0OSwxNiBAQCBib29sIEludGVybmFsczo6aXNJbWFnZUFuaW1h
dGluZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBpbWFnZSAmJiAoaW1h
Z2UtPmlzQW5pbWF0aW5nKCkgfHwgaW1hZ2UtPmFuaW1hdGlvblBlbmRpbmcoKSk7CiB9CiAKK3Zv
aWQgSW50ZXJuYWxzOjpyZXN1bWVJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVt
ZW50KQoreworICAgIGVsZW1lbnQuc2V0QWxsb3dzQW5pbWF0aW9uKHRydWUpOworfQorCit2b2lk
IEludGVybmFsczo6cGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50
KQoreworICAgIGVsZW1lbnQuc2V0QWxsb3dzQW5pbWF0aW9uKGZhbHNlKTsKK30KKwogdW5zaWdu
ZWQgSW50ZXJuYWxzOjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdE
ZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggZjM4YjY3YzU0Y2JjLi4zOGMzOTFmMTJmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMjIxLDYgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdl
RnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBkdXJhdGlvbik7
CiAgICAgdm9pZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBi
b29sIGlzSW1hZ2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcmVzdW1l
SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgcGF1c2VJbWFnZUFu
aW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdW5zaWduZWQgaW1hZ2VQZW5kaW5nRGVj
b2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQg
c2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdl
RWxlbWVudCYsIGJvb2wgZW5hYmxlZCk7CiAgICAgdW5zaWduZWQgaW1hZ2VEZWNvZGVDb3VudChI
VE1MSW1hZ2VFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
MjcxNjQ5NWY1MDZhLi41MTA3NzMzZjdkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKQEAgLTU1NCw2ICs1NTQsOCBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hS
ZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGlu
Z0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1
cmF0aW9uKTsKICAgICB1bmRlZmluZWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVt
ZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVt
ZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCByZXN1bWVJbWFnZUFuaW1hdGlvbihIVE1MSW1h
Z2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVmaW5lZCBwYXVzZUltYWdlQW5pbWF0aW9uKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgdW5zaWduZWQgbG9uZyBpbWFnZVBlbmRpbmdE
ZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwog
ICAgIHVuZGVmaW5lZCBzZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVz
dGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdW5z
aWduZWQgbG9uZyBpbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5j
cHAKaW5kZXggMmRhYTEzMjE0YzYzLi5iOTM3OTY0YzRmMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TVkdJbWFnZUNhc3RzLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU1ZHSW1hZ2VDYXN0cy5jcHAKQEAgLTc1LDYgKzc1
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJikgZmluYWwKICAgICB7CiAgICAgfQorICAgIGJvb2wgYWxsb3dzQW5pbWF0aW9uKCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIH07CiAKIFRFU1QoU1ZHSW1h
Z2VDYXN0cywgU1ZHSW1hZ2VGb3JDb250YWluZXJJc05vdFNWR0ltYWdlKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmlt
YXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNThkMDM1YTE5MTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxl
ZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcoaW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1h
dGluZyhpbWFnZSkgYmVjYW1lIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQzNjc3ZTg4ZTI4MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFi
bGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyBJbWFnZUFuaW1hdGlvbkVuYWJsZWQ9ZmFsc2UgXSAtLT4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0
ZXN0SW1hZ2UiIC8+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdl
cyBzZXR0aW5nIGlzIHR1cm5lZCBvbi5cblxuIik7CisKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7
CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlY29t
ZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1hdGlv
bkVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxz
LmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgInRydWUiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH07Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyY2E1YmQ1YzdlZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5
LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlz
IHRlc3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJl
IHRvZ2dsZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUg
ZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSB0cnVl
CitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgZmFsc2UKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxh
eS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1YmEyZThhOTIxNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0
aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBJbWFnZUFuaW1hdGlvbkVuYWJs
ZWQ9ZmFsc2UgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVz
b3VyY2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+CisKKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNh
YmxlZCwgdGhleSBjYW4gYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS5cblxuIik7
CisKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRp
bmcoaW1hZ2UpIiwgImZhbHNlIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMu
cmVzdW1lSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1
YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJ0cnVlIiwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnBhdXNlSW1hZ2VBbmltYXRpb24oaW1hZ2Up
OworICAgICAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFu
aW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1p
bmctZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZGlz
YWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1OGVlMDQ2NTU0NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1
bWluZy1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVmVyaWZ5IHJlc3VtZWQg
YW5pbWF0aW9ucyBzdGFydCBhdCB0aGUgZnJhbWUgdGhleSB3ZXJlIHBhdXNlZCBhdC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ltYWdlIHdhcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5
LgorSW1hZ2UgZnJhbWU6IDAgd2FzIGRpc3BsYXllZC4KK0ltYWdlIGZyYW1lOiAxIHdhcyBkaXNw
bGF5ZWQuCitJbWFnZSBmcmFtZTogMiB3YXMgZGlzcGxheWVkLgorSW1hZ2UgZnJhbWU6IDMgd2Fz
IGRpc3BsYXllZC4KK1RoZSBhbmltYXRpb24gd2FzIGxvYWRlZCBhbmQgcGF1c2VkL3Jlc3VtZWQg
Y29ycmVjdGx5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUt
YW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZGlzYWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMDBjMDY0NjljYTIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVz
dW1pbmctZnJhbWUuaHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0iIj4KKworPHNjcmlwdD4KKworICAgIGZ1
bmN0aW9uIGRyYXdGcmFtZShpbWFnZSwgZnJhbWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdo
dDsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAgICAgICAgbGV0IGlt
YWdlRnJhbWUgPSBpbnRlcm5hbHMuaW1hZ2VGcmFtZUluZGV4KGltYWdlKTsKKworICAgICAgICAg
ICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgZnVuY3Rp
b24gbGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGZyYW1lOiAiICsg
aW1hZ2VGcmFtZSArICIgd2FzIGRpc3BsYXllZC4iKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5y
ZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBsaXN0ZW5lciwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShmcmFtZSArIDEpOworICAgICAgICAgICAgfSwg
dHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRyYXdJbWFnZShpbWFn
ZSwgZnJhbWVDb3VudCkgeworICAgICAgICBpbnRlcm5hbHMucmVzdW1lSW1hZ2VBbmltYXRpb24o
aW1hZ2UpOworICAgICAgICBsZXQgcHJvbWlzZSA9IGRyYXdGcmFtZShpbWFnZSwgMCk7CisgICAg
ICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZnJhbWVDb3VudDsgKytpKSB7CisgICAgICAgICAgICBw
cm9taXNlID0gcHJvbWlzZS50aGVuKChmcmFtZSkgPT4geworICAgICAgICAgICAgICAgIHJldHVy
biBkcmF3RnJhbWUoaW1hZ2UsIGZyYW1lKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
aWYgKGkgPT0gMikgeworICAgICAgICAgICAgICAgIGludGVybmFscy5wYXVzZUltYWdlQW5pbWF0
aW9uKGltYWdlKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMucmVzdW1lSW1hZ2VBbmltYXRp
b24oaW1hZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBwcm9t
aXNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvYWRBbmREcmF3SW1hZ2UoaW1hZ2UsIHNyYywg
ZnJhbWVDb3VudCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsK
KyAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7CisgICAgICAgICAgICAgICAgZGVi
dWcoIkltYWdlIHdhcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5LiIpOworICAgICAgICAgICAgICAgIGRy
YXdJbWFnZShpbWFnZSwgZnJhbWVDb3VudCkudGhlbihyZXNvbHZlKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICAoZnVuY3Rpb24oKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgaW50ZXJuYWxzLmNs
ZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRXZWJr
aXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoZmFsc2Up
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiaW1nIik7CisKKyAgICAgICAgZGVzY3JpcHRpb24oIlZlcmlmeSByZXN1bWVkIGFuaW1hdGlv
bnMgc3RhcnQgYXQgdGhlIGZyYW1lIHRoZXkgd2VyZSBwYXVzZWQgYXQuIik7CisKKyAgICAgICAg
bG9hZEFuZERyYXdJbWFnZShpbWFnZSwgInJlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYi
LCA0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGRlYnVnKCJUaGUgYW5pbWF0aW9uIHdhcyBs
b2FkZWQgYW5kIHBhdXNlZC9yZXN1bWVkIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIGludGVy
bmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfSk7CisgICAgfSkoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0ZWQt
NC1mcmFtZXMuZ2lmIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVzb3VyY2VzL2Fu
aW1hdGVkLTQtZnJhbWVzLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWU0NzcxNDI2ZWJhNmFiYTNiMTdjMzIx
ODBkMjgzOTA3NDMwY2MxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMDkKemNtWj93YmhFSGI2
ayFseV9gdHlNcDgqNkV8OHg3Zmg2Rm8xMkRscE84ODk8fmducUlCUldMQjxmYUYxbjhKR2xICnJg
ZDZOUSVmRVFlbVJzR01AOXBgJFVLQ1NSMTQ5RXkxQ2VVTSkpU31wS2lIKyUpTEhgb3pMITQ9Cgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWU3MTRmNTdjYmZi
MzJhNDZmNDJjMjE3YjI2MzA4YTY4ZmQxOGUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6
Y21aP3diaEVIYjZrcmZ3X3xDdzxrZH02YVZKNDZzMSowSl8weipMWUtld04yTlUqYkdmVUErNzBX
JXtvMm8hJl4KenV6KjVCMlNrOWYyP0t7TDEyY3o9JEEkJDVuPm1FRlZvcSNXYyhgM2EqPXZyKyN6
alhQODV5emJWOG99eDhVU2QxCkJCNF97cgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVmMzNlYTg1
NGFkNi4uOTc2YTI2NWFhOTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCkBAIC00NTMsNiArNDUzLDExIEBAIG1lZGlhL25vdy1wbGF5aW5nLXN0
YXR1cy13aXRob3V0LW1lZGlhLmh0bWwgWyBTa2lwIF0KICMgV2ViTSBub3Qgc3VwcG9ydGVkIGlu
IFdLMSBvbiBtYWNPUy4KIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8td2VibS1zdGFsbC5odG1sCiAK
KyMgSW1hZ2UgYW5pbWF0aW9uIGRpc2FibGVkIChleHBlcmltZW50YWwgZmVhdHVyZSkKK2FjY2Vz
c2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgWyBTa2lwIF0KK2Fj
Y2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0
aW9uLmh0bWwgWyBTa2lwIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2Rpc2FibGUtYW5pbWF0aW9ucy1y
ZXN1bWluZy1mcmFtZS5odG1sIFsgU2tpcCBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KICMgRW5kIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgaW4gV2ViS2l0MQogIy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462205</attachid>
            <date>2022-09-08 08:58:37 -0700</date>
            <delta_ts>2022-09-09 13:48:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220908085836.patch</filename>
            <type>text/plain</type>
            <size>33563</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA4NTQwY2EzMTM1MjkzOTZlNGM5OTJiYjY5MGY2ODgyMTEyMTgxOTYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBwcmVmZXJlbmNlLCB3aGljaCB3aGVuIGRpc2FibGVkLCBwcmV2ZW50
cyBCaXRtYXBJbWFnZSBhbmltYXRpb25zLiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGlu
dGVyZmFjZXMgdG8gY29udHJvbCBpbmRpdmlkdWFsIGltYWdlIGFuaW1hdGlvbnMuCgoqIExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLWVu
YWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmlt
YXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFs
LWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxl
LWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbDog
QWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLTQtZnJh
bWVzLmdpZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
IGluZGl2aWR1YWwgYW5pbWF0aW9uLCBhbmQgY2hlY2tpbmcgdGhlIGZyYW1lcyBjb250aW51ZSBj
b3JyZWN0bHkuCgoqIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sOgoKQWRkcyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFu
ZCBzZXRzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdCAoSW1hZ2VBbmltYXRpb25FbmFibGVkKS4KCiog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQ6OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmFsbG93c0FuaW1hdGlvbiBjb25zdCk6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50OjpzZXRBbGxvd3NBbmltYXRpb24pOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cmVz
ZXRBbGxvd3NBbmltYXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdlIGFuaW1hdGlvbiBzdGF0ZSBhbmQgY2hlY2sg
dGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaG91bGRBbmlt
YXRlIGNvbnN0KToKCkFkZCBhIGNvbmRpdGlvbiB0byBzaG91bGRBbmltYXRlIHRvIGNoZWNrIGFs
bG93c0FuaW1hdGlvbigpIGZyb20gdGhlIGltYWdlIG9ic2VydmVyLgoKKiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgooV2ViQ29yZTo6SW1hZ2U6OmFsbG93c0FuaW1h
dGlvbiBjb25zdCk6CihXZWJDb3JlOjpJbWFnZTo6c2V0QWxsb3dzQW5pbWF0aW9uKToKCkFkZCBt
ZXRob2RzIHRvIGNvbnRyb2wgdGhlIGluZGl2aWR1YWwgYWxsb3dzQW5pbWF0aW9uIHN0YXRlLgoK
KiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6cGF1c2VJbWFn
ZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6CgpOZXcgaW50ZXJuYWwgdGVzdGluZyBt
ZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGluZyBpcyBvbiAmIGltYWdlcyBhcmUgaW4gdGhlIGNv
cnJlY3Qgc3RhdGUKCiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oCiogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAoqIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCiogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKCkFkZCBuZXcgSW1hZ2VPYnNlcnZlciBt
ZXRob2QgdG8gZ2V0IGFuIGltYWdlcyBkZXNpcmVkIGFuaW1hdGlvbiBzdGF0ZS4KCiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAoKQWRkZWQgYSBtZXRob2QgdG8gZ2V0IGlmIGFuIGltYWdl
IGlzIGFsbG93ZWQgdG8gYW5pbWF0ZSBiYXNlZCBvbiBzZXR0aW5ncyBhbmQvb3IgdGhlIGluZGl2
aWR1YWwgaW1hZ2VzIHN0YXRlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCiogU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAoqIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmgKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCiogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKCk5ldyBtZXRob2RzIChpbnZva2VkIGJ5IHRoZSBwcmVm
ZXJlbmNlIGNoYW5nZSkgdGhhdCByZXBhaW50IHZpc2libGUgYW5pbWF0ZWQgaW1hZ2VzLgoKKiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKCk5ldyBtZXRob2QgdG8gY2hlY2sgaWYgYSBSZW5kZXJJ
bWFnZSBpcyBhbmltYXRlZCBhbmQgaWYgaXQgYWxsb3dzIGFuaW1hdGlvbi4KLS0tCiAuLi4vV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAgICAgICAgICAgfCAgMTMgKysrCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwICAgICAgfCAgMjYgKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCAgICAgICAgfCAgIDYgKysKIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgICB8ICAyMiArKysrKwogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggICAgIHwgICAzICsKIC4uLi9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oICB8ICAgMiArCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAgICAgfCAgMTYgKysrKwogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCAgICAgICAgICAgICAgIHwgICAyICsKIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgNiArKwogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCAgICAgICAgICB8ICAgNiArKwogU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCB8ICAgNyArLQogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCAgICAgIHwgICA1ICsrCiAuLi4vV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgICA1ICsrCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCAgICAgIHwgIDE0ICsrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oICAgICAgICB8ICAgMyArCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAgICAgICAgfCAgMTYgKysrKwogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaCAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCAgICAgICAgICB8ICAxMCArKysKIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgICAgICAgICAgfCAgIDIgKwogLi4uL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFi
bGVkLWV4cGVjdGVkLnR4dCAgIHwgIDEyICsrKwogLi4uL2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlv
bnMtZW5hYmxlZC5odG1sICAgIHwgIDI5ICsrKysrKysKIC4uLm9ucy1wbGF5LWluZGl2aWR1YWwt
YW5pbWF0aW9uLWV4cGVjdGVkLnR4dCB8ICAxMyArKysKIC4uLi1hbmltYXRpb25zLXBsYXktaW5k
aXZpZHVhbC1hbmltYXRpb24uaHRtbCB8ICAzMiArKysrKysrKwogLi4uYmxlLWFuaW1hdGlvbnMt
cmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0IHwgIDE2ICsrKysKIC4uLi9kaXNhYmxlLWFuaW1h
dGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbCAgICB8ICA3NSArKysrKysrKysrKysrKysrKysKIC4u
Li9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLTQtZnJhbWVzLmdpZiAgICB8IEJpbiAwIC0+IDIw
OSBieXRlcwogLi4uL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmICAgICAgIHwg
QmluIDAgLT4gOTAxIGJ5dGVzCiAzMiBmaWxlcyBjaGFuZ2VkLCAzNDggaW5zZXJ0aW9ucygrKSwg
MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXBs
YXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxl
LWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0aW9u
LmdpZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggYzM2MjEwODJiNTRiLi4wOWNh
Zjk1ODhhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC03NzEsNiArNzcxLDE5
IEBAIEhpZ2hsaWdodEFQSUVuYWJsZWQ6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFs
c2UKIAorSW1hZ2VBbmltYXRpb25FbmFibGVkOgorICB0eXBlOiBib29sCisgIHdlYmNvcmVPbkNo
YW5nZTogc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkQ2hhbmdlZAorICBodW1hblJlYWRhYmxlTmFt
ZTogIkltYWdlIEFuaW1hdGlvbiBFbmFibGVkIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJFbmFibGUgaW1hZ2UgYW5pbWF0aW9ucy4iCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRM
ZWdhY3k6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDog
dHJ1ZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiB0cnVlCisKIEltYWdlQml0bWFwRW5h
YmxlZDoKICAgdHlwZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIkltYWdlQml0bWFwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggYWI2NzM2ODMwOGI5
Li5mMWI2M2Y2NWUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtNzY2LDYgKzc2NiwzMiBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c09yaWVu
dGF0aW9uT3ZlcnJpZGUoKSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPnNvdXJj
ZVVSTCgpLnByb3RvY29sSXNEYXRhKCkgfHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1NhbWVPcmlnaW4o
KTsKIH0KIAorSW1hZ2UqIEhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlKCkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICByZXR1
cm4gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wg
SFRNTEltYWdlRWxlbWVudDo6YWxsb3dzQW5pbWF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0
byogaW1hZ2UgPSB0aGlzLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmFsbG93c0Fu
aW1hdGlvbigpLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5pbWFnZUFuaW1hdGlvbkVu
YWJsZWQoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OnNldEFsbG93c0FuaW1hdGlvbihib29sIHNob3VsZEFuaW1hdGUpCit7CisgICAgaWYgKGF1dG8q
IGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5zZXRBbGxvd3NB
bmltYXRpb24oc2hvdWxkQW5pbWF0ZSk7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6cmVz
ZXRBbGxvd3NBbmltYXRpb24oKQoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IHRoaXMtPmltYWdl
KCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+c2V0QWxsb3dzQW5pbWF0aW9uKHN0ZDo6bnVsbG9w
dCk7Cit9CisKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OnNldEF0dGFjaG1lbnRFbGVtZW50KFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
JiYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXgg
NmQ1NWUxODdjYjI0Li43NTA0NzI1MWNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCkBAIC0xNTUsNiArMTU1LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYWxsb3dz
T3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0OwogCisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24o
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbG93c0FuaW1hdGlvbihib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0QWxsb3dzQW5pbWF0aW9uKCk7CisKIHBy
b3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyKTsKIApAQCAtMjM3LDYgKzI0MSw4IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJRDsKICNlbmRp
ZgogCisgICAgSW1hZ2UqIGltYWdlKCkgY29uc3Q7CisKICAgICBmcmllbmQgY2xhc3MgSFRNTFBp
Y3R1cmVFbGVtZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKaW5kZXggOGIxNmMwMDE1NmE4Li5jYTZkYzgxYWQ4MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDQ3LDYgKzQ0NywxNSBAQCB2
b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZShjb25zdCBJbWFnZSYgaW1hZwogICAgICAgICBjYWNoZWRJbWFnZS0+c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoaW1hZ2UpOwogfQogCitib29sIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9i
c2VydmVyOjphbGxvd3NBbmltYXRpb24oY29uc3QgSW1hZ2UmIGltYWdlKQoreworICAgIGZvciAo
YXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKSB7CisgICAgICAgIGlmIChjYWNoZWRJ
bWFnZS0+YWxsb3dzQW5pbWF0aW9uKGltYWdlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpj
bGVhckltYWdlKCkKIHsKICAgICBpZiAoIW1faW1hZ2UpCkBAIC03MDAsNiArNzA5LDE5IEBAIHZv
aWQgQ2FjaGVkSW1hZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFn
ZSkKICAgICAgICAgY2xpZW50LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKCp0aGlz
KTsKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6YWxsb3dzQW5pbWF0aW9uKGNvbnN0IEltYWdlJiBp
bWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVu
dD4gd2Fsa2VyKCp0aGlzKTsKKyAgICB3aGlsZSAoYXV0byogY2xpZW50ID0gd2Fsa2VyLm5leHQo
KSkgeworICAgICAgICBpZiAoIWNsaWVudC0+YWxsb3dzQW5pbWF0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIENhY2hl
ZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDYyMDk0
YzFkODk3MC4uMWZlNTRjZjFmZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5Ta2lwUmV2
YWxpZGF0aW9uKGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICBib29sIGlzVmlzaWJsZUluVmlld3BvcnQoY29uc3Qg
RG9jdW1lbnQmKSBjb25zdDsKKyAgICBib29sIGFsbG93c0FuaW1hdGlvbihjb25zdCBJbWFnZSYp
OwogCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXIoKTsKQEAgLTE1OCw2ICsxNTksOCBAQCBwcml2
YXRlOgogICAgICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRS
ZWN0KikgZmluYWw7CiAgICAgICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmKSBmaW5hbDsKIAorICAgICAgICBib29sIGFsbG93c0FuaW1hdGlvbihjb25zdCBJbWFn
ZSYpIGZpbmFsOworCiAgICAgICAgIEhhc2hTZXQ8Q2FjaGVkSW1hZ2UqPiBtX2NhY2hlZEltYWdl
czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZUNsaWVudC5oCmluZGV4IDI4Njg5NjlkYjM3Yi4uZGMyOWQxMjk3MTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApAQCAtNTIsNiArNTIs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50
KENhY2hlZEltYWdlJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGVGb3JJbWFnZShDYWNoZWRJbWFnZSYpIHsgfQorCisgICAgdmlydHVhbCBib29sIGFsbG93
c0FuaW1hdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyMDE5ZmZmOWZjNDQuLmYxMzg0OWIw
OTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjc1Niw2ICsyNzU2LDE1IEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJl
Y3QmIHZpc2libGVSZWN0KQogICAgICAgICByZW5kZXJWaWV3LT5yZXN1bWVQYXVzZWRJbWFnZUFu
aW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3OjpyZXBh
aW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKK3sK
KyAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgICAg
IHJlbmRlclZpZXctPnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVjdCk7
Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNBbmRUaW1lcnNU
aHJvdHRsaW5nU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCiB7CiAgICAgaWYgKGZy
YW1lKCkuaXNNYWluRnJhbWUoKSkKQEAgLTI3OTEsNiArMjgwMCwxMyBAQCB2b2lkIEZyYW1lVmll
dzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpCiAgICAg
fSk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3OjpyZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9uc0lu
Y2x1ZGluZ1N1YmZyYW1lcygpCit7CisgICAgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVj
dChbXSAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSB7
CisgICAgICAgIGZyYW1lVmlldy5yZXBhaW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxl
UmVjdCk7CisgICAgfSk7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXllclBvc2l0aW9u
c0FmdGVyU2Nyb2xsaW5nKCkKIHsKICAgICAvLyBJZiB3ZSdyZSBzY3JvbGxpbmcgYXMgYSByZXN1
bHQgb2YgdXBkYXRpbmcgdGhlIHZpZXcgc2l6ZSBhZnRlciBsYXlvdXQsIHdlJ2xsIHVwZGF0ZSB3
aWRnZXRzIGFuZCBsYXllciBwb3NpdGlvbnMgc29vbiBhbnl3YXkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCA2MmE5ZTA3NzgwZTIuLmU0OTk1MjNjMDg5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC0zMjUsNiArMzI1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydENv
bnRlbnRzQ2hhbmdlZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lVmlzaWJsZUlt
YWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOworICAgIHZvaWQgcmVwYWludFZpc2li
bGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKIAogICAgIFN0cmluZyBtZWRp
YVR5cGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhVHlwZShjb25z
dCBTdHJpbmcmKTsKQEAgLTc3Niw2ICs3NzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBs
eVJlY3Vyc2l2ZWx5V2l0aFZpc2libGVSZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoRnJhbWVWaWV3
JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KT4mKTsKICAgICB2b2lkIHJl
c3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwor
ICAgIHZvaWQgcmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlz
aWJsZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhy
b3R0bGluZ1N0YXRlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDBlNDJhNmRjZDY1Yi4uOTU1YzI2ZTlkOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTQwMTUsNCArNDAxNSwxMCBAQCB2b2lkIFBhZ2U6OmZvcmNlUmVwYWludEFsbEZyYW1lcygpCiAg
ICAgfQogfQogCit2b2lkIFBhZ2U6OnJlcGFpbnRBbmltYXRlZEltYWdlcygpCit7CisgICAgaWYg
KEZyYW1lVmlldyogdmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKSkKKyAgICAgICAgdmlldy0+cmVw
YWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA2ODBiMTAwOGNlNTcuLmVmZGRk
OWU5NTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTY5Myw2ICs2OTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKKyAgICB2
b2lkIHJlcGFpbnRBbmltYXRlZEltYWdlcygpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
SW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuY3BwCmluZGV4IDI1OGZlODMyOTQ2Mi4uNWZmYTk3ZjkwMTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC00ODQsNCArNDg0LDEwIEBAIHZvaWQgU2V0dGlu
Z3NCYXNlOjpyZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGVDaGFuZ2VkKCkKICNlbmRpZgogfQog
Cit2b2lkIFNldHRpbmdzQmFzZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkQ2hhbmdlZCgpCit7
CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5yZXBhaW50QW5pbWF0ZWRJbWFnZXMo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNl
LmgKaW5kZXggMWIzOWIxMzY5YzA5Li43OGNlNWM1Y2Q4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoTEFZ
RVJfQkFTRURfU1ZHX0VOR0lORSkKICAgICB2b2lkIGxheWVyQmFzZWRTVkdFbmdpbmVFbmFibGVk
Q2hhbmdlZCgpOwogI2VuZGlmCisgICAgdm9pZCBzZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWRDaGFu
Z2VkKCk7CiAKICAgICBQYWdlKiBtX3BhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhODdhYzY5MGIyZWMuLmM1NmE0MmIx
ZTM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogYm9v
bCBCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlcGV0
aXRpb25Db3VudCgpICYmICFtX2FuaW1hdGlvbkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2ZXIoKTsK
KyAgICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNoZWQgJiYg
aW1hZ2VPYnNlcnZlcigpICYmIGltYWdlT2JzZXJ2ZXIoKS0+YWxsb3dzQW5pbWF0aW9uKCp0aGlz
KTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CkBAIC0zODQsNyAr
Mzg0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpIGNvbnN0CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmNhblVzZUFzeW5jRGVjb2RpbmdGb3JMYXJnZUltYWdlcygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuICFjYW5BbmltYXRlKCkgJiYgbV9zb3VyY2UtPmNhblVzZUFzeW5jRGVjb2Rpbmco
KTsKKyAgICByZXR1cm4gIXNob3VsZEFuaW1hdGUoKSAmJiBtX3NvdXJjZS0+Y2FuVXNlQXN5bmNE
ZWNvZGluZygpICYmICEoZnJhbWVDb3VudCgpID4gMSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6
OnNob3VsZFVzZUFzeW5jRGVjb2RpbmdGb3JBbmltYXRlZEltYWdlcygpIGNvbnN0CkBAIC02MzUs
NiArNjM1LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgICAgICBBU1NFUlQoIW1fcmVwZXRpdGlvbnNDb21wbGV0ZSk7CiAg
ICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW01vcmUg
ZGF0YSBtYWtlcyBmcmFtZUNvdW50KCkgPiAxXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNl
VVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQorICAgIAorICAgIGlmIChpbWFn
ZU9ic2VydmVyKCkgJiYgIWltYWdlT2JzZXJ2ZXIoKS0+YWxsb3dzQW5pbWF0aW9uKCp0aGlzKSkK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fY3VycmVudEZyYW1lICYm
ICFtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKG1fc291cmNlLT5pc0FzeW5jRGVjb2RpbmdRdWV1
ZUlkbGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDgz
ODIzNzJkNTJhYi4uZWEwZDI5MDc2NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0QW5pbWF0aW9uKCkge30KICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRpbmcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgYW5pbWF0aW9uUGVuZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fYW5pbWF0aW9uU3RhcnRUaW1lciAmJiBtX2FuaW1hdGlvblN0YXJ0VGltZXItPmlz
QWN0aXZlKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93c0FuaW1hdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzQW5pbWF0aW9uOyB9CisgICAgdm9pZCBzZXRBbGxvd3NBbmlt
YXRpb24oc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd3NBbmltYXRpb24pIHsgbV9hbGxvd3NBbmlt
YXRpb24gPSBhbGxvd3NBbmltYXRpb247IH0KIAogICAgIC8vIFR5cGljYWxseSB0aGUgQ2FjaGVk
SW1hZ2UgdGhhdCBvd25zIHVzLgogICAgIEltYWdlT2JzZXJ2ZXIqIGltYWdlT2JzZXJ2ZXIoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlT2JzZXJ2ZXI7IH0KQEAgLTIxMSw2ICsyMTMsOSBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURh
dGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOworICAgIAorICAgIC8vIEEgdmFsdWUg
b2YgdHJ1ZSBvciBmYWxzZSB3aWxsIG92ZXJyaWRlIHRoZSBnbG9iYWwgSW1hZ2VBbmltYXRpb25F
bmFibGVkIHNldHRpbmcuCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2FsbG93c0FuaW1hdGlv
biB7IHN0ZDo6bnVsbG9wdCB9OwogfTsKIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKaW5kZXggMDQyNzBjODNkMzM3Li4yMTAxYWRh
YzliMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9i
c2VydmVyLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbWFn
ZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3Qg
SW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdT
dGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwor
CisgICAgdmlydHVhbCBib29sIGFsbG93c0FuaW1hdGlvbihjb25zdCBJbWFnZSYpIHsgcmV0dXJu
IHRydWU7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAppbmRleCA1ZDUzNDhmYjJjM2QuLjI5YWFjMGEzZjBjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjUyMSw0ICsyNTIxLDkgQEAgRmxvYXRS
ZWN0IFJlbmRlckVsZW1lbnQ6OnJlZmVyZW5jZUJveFJlY3QoQ1NTQm94VHlwZSBib3hUeXBlKSBj
b25zdAogICAgIHJldHVybiB7IH07CiB9CiAKK2Jvb2wgUmVuZGVyRWxlbWVudDo6YWxsb3dzQW5p
bWF0aW9uKCkKK3sKKyAgICByZXR1cm4gc2V0dGluZ3MoKS5pbWFnZUFuaW1hdGlvbkVuYWJsZWQo
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXgg
MmZkN2M2ZDUxNGUzLi4yOTg3OWJmNGZlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaApAQCAtMjkxLDYgKzI5MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVw
cmVjYXRlZEZsZXhJdGVtKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlzRmxvYXRp
bmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNEZXBy
ZWNhdGVkRmxleGlibGVCb3goKTsgfQogICAgIGJvb2wgaXNGbGV4SXRlbUluY2x1ZGluZ0RlcHJl
Y2F0ZWQoKSBjb25zdCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZ09yT3V0T2ZG
bG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5j
bHVkaW5nRGVwcmVjYXRlZCgpOyB9CiAKKyAgICBib29sIGFsbG93c0FuaW1hdGlvbigpIG92ZXJy
aWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBCYXNlVHlwZUZsYWcgewogICAgICAgICBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0RmxhZyAgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCBkYmZlZjhlNDdmY2IuLjRmMjliMjI1YzY4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NDIsNiArNDQyLDEzIEBA
IGJvb2wgUmVuZGVySW1hZ2U6Omhhc05vbkJpdG1hcEltYWdlKCkgY29uc3QKICAgICByZXR1cm4g
aW1hZ2UgJiYgIWlzPEJpdG1hcEltYWdlPihpbWFnZSk7CiB9CiAKK2Jvb2wgUmVuZGVySW1hZ2U6
Omhhc0FuaW1hdGVkSW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hl
ZEltYWdlKCkgPyBjYWNoZWRJbWFnZSgpLT5pbWFnZSgpIDogbnVsbHB0cikKKyAgICAgICAgcmV0
dXJuIGltYWdlLT5pc0FuaW1hdGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJl
bmRlckltYWdlOjpwYWludEluY29tcGxldGVJbWFnZU91dGxpbmUoUGFpbnRJbmZvJiBwYWludElu
Zm8sIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGJvcmRlcldpZHRoKSBjb25z
dAogewogICAgIGF1dG8gY29udGVudFNpemUgPSB0aGlzLT5jb250ZW50U2l6ZSgpOwpAQCAtOTAw
LDQgKzkwNywxMSBAQCBSZW5kZXJCb3gqIFJlbmRlckltYWdlOjplbWJlZGRlZENvbnRlbnRCb3go
KSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJlbmRlckltYWdlOjphbGxv
d3NBbmltYXRpb24oKQoreworICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQoKSku
YWxsb3dzQW5pbWF0aW9uKCk7CisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjphbGxvd3NBbmlt
YXRpb24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaAppbmRleCA0NDI5ZDMwN2Y3YjAuLmYxMTE4YWM1MDI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTgxLDYgKzgxLDkgQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLT5hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKTsgfQog
CisgICAgYm9vbCBoYXNBbmltYXRlZEltYWdlKCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd3NBbmlt
YXRpb24oKSBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA4
NDE3Yzk4NjU2ZWEuLjA2MzU1YzU1Y2ZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcApAQCAtODc0LDYgKzg3NCwyMiBAQCB2b2lkIFJlbmRlclZpZXc6OnJlc3VtZVBh
dXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQog
ICAgICAgICByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMoKnBhaXIuZmly
c3QsICpwYWlyLnNlY29uZCk7CiB9CiAKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludEltYWdlQW5p
bWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQoreworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSkg
eworICAgICAgICBpZiAoIWVsZW1lbnQuaXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QodmlzaWJsZVJl
Y3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGVsZW1lbnQu
c3R5bGUoKS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkKKyAgICAgICAgICAgIGVsZW1lbnQucmVwYWlu
dCgpOworICAgICAgICAKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlckltYWdlID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlckltYWdlPihlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKHJlbmRlcklt
YWdlLT5oYXNBbmltYXRlZEltYWdlKCkpCisgICAgICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1
bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcpCiB7CiAg
ICAgaWYgKCF2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMDhi
M2E3YTJkYjIwLi5kYzFhNWQyNTI3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRm9yVmlz
aWJsZUluVmlld3BvcnRDYWxsYmFjayhSZW5kZXJFbGVtZW50Jik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyRm9yVmlzaWJsZUluVmlld3BvcnRDYWxsYmFjayhSZW5kZXJFbGVtZW50Jik7CiAgICAgdm9p
ZCByZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNp
YmxlUmVjdCk7CisgICAgdm9pZCByZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3Qg
SW50UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIHZvaWQgYWRkUmVuZGVyZXJXaXRoUGF1c2VkSW1h
Z2VBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmLCBDYWNoZWRJbWFnZSYpOwogICAgIHZvaWQgcmVt
b3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmKTsKICAg
ICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50JiwgQ2FjaGVkSW1hZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCA4ZDBlNzZlMWZjNTYuLmU3MDZiMDQ2YzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTA0OSw2ICsxMDQ5LDE2IEBAIGJvb2wgSW50ZXJuYWxzOjppc0ltYWdlQW5p
bWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYmIChp
bWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsKIH0KIAor
dm9pZCBJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVs
ZW1lbnQpCit7CisgICAgZWxlbWVudC5zZXRBbGxvd3NBbmltYXRpb24odHJ1ZSk7Cit9CisKK3Zv
aWQgSW50ZXJuYWxzOjpwYXVzZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgZWxlbWVudC5zZXRBbGxvd3NBbmltYXRpb24oZmFsc2UpOworfQorCiB1bnNp
Z25lZCBJbnRlcm5hbHM6OmltYWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5n
KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGVsZW1lbnQucGVuZGlu
Z0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCBmMzhiNjdjNTRjYmMuLjM4YzM5MWYxMmZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC0yMjEsNiArMjIxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW1h
Z2VGcmFtZURlY29kaW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0IGR1cmF0aW9u
KTsKICAgICB2b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAg
IGJvb2wgaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCByZXN1
bWVJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CisgICAgdm9pZCBwYXVzZUltYWdl
QW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICB1bnNpZ25lZCBpbWFnZVBlbmRpbmdE
ZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9p
ZCBzZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1h
Z2VFbGVtZW50JiwgYm9vbCBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBpbWFnZURlY29kZUNvdW50
KEhUTUxJbWFnZUVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCAyNzE2NDk1ZjUwNmEuLjUxMDc3MzNmN2Q5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtNTU0LDYgKzU1NCw4IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRj
aFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKICAgICB1bmRlZmluZWQgc2V0SW1hZ2VGcmFtZURlY29k
aW5nRHVyYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZHVyYXRpb24pOwogICAgIHVuZGVmaW5lZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVs
ZW1lbnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVs
ZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJ
bWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHBhdXNlSW1hZ2VBbmltYXRpb24o
SFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICB1bnNpZ25lZCBsb25nIGltYWdlUGVuZGlu
Z0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7
CiAgICAgdW5kZWZpbmVkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JU
ZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBlbmFibGVkKTsKICAgICB1
bnNpZ25lZCBsb25nIGltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1l
bmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5p
bWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjEwZDYzMDkwMzc2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgd2hl
biB0aGUgZGlzYWJsZSBhbmltYXRlZCBpbWFnZXMgc2V0dGluZyBpcyB0dXJuZWQgb24uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0
aW5nKGltYWdlKSBiZWNhbWUgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmco
aW1hZ2UpIGJlY2FtZSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNh
YmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlz
YWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjkzNTVlZDJhNzA3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwKQEAgLTAsMCArMSwy
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBz
cmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVzdEltYWdlIiAvPgorPCEtLSBzZXRB
dXRvZGlzcGxheSBmb3IgV0sxIChyZGFyOi8vNDI2MjU2NTcpIC0tPgorPGRpdiBzdHlsZT0id2ls
bC1jaGFuZ2U6IHRyYW5zZm9ybSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3aGVuIHRoZSBkaXNhYmxl
IGFuaW1hdGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi5cblxuIik7CisKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VBbmltYXRp
b25FbmFibGVkKGZhbHNlKTsKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdEltYWdlIik7CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSki
LCAiZmFsc2UiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVF
cXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgInRydWUiLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH07Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5p
bWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkYTNkYzA4MDQ1MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWlu
ZGl2aWR1YWwtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRl
c3RzIHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJlIHRv
Z2dsZWQgb24gYW5kIG9mZiBpbmRpdmlkdWFsbHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgZmFs
c2UKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSB0cnVlCitQ
QVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1wbGF5LWluZGl2
aWR1YWwtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFu
aW1hdGlvbnMtcGxheS1pbmRpdmlkdWFsLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2RmM2JkZjUzZDRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVh
bC1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5naWYi
IGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8IS0tIHNldEF1dG9kaXNwbGF5IGZvciBXSzEgKHJkYXI6Ly80
MjYyNTY1NykgLS0+Cis8ZGl2IHN0eWxlPSJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtIj48L2Rpdj4K
KworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gaW1hZ2Ug
YW5pbWF0aW9uIGlzIGRpc2FibGVkLCB0aGV5IGNhbiBiZSB0b2dnbGVkIG9uIGFuZCBvZmYgaW5k
aXZpZHVhbGx5LlxuXG4iKTsKKworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpOworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0SW1hZ2UiKTsKKyAgICB3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5h
bHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGludGVybmFscy5yZXN1bWVJbWFnZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAg
ICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwg
InRydWUiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMucGF1c2VJbWFn
ZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImlu
dGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9OworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0
aW9ucy1yZXN1bWluZy1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGQ0MTAxZGM1NjdlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXJlc3Vt
aW5nLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitWZXJpZnkgcmVzdW1lZCBh
bmltYXRpb25zIHN0YXJ0IGF0IHRoZSBmcmFtZSB0aGV5IHdlcmUgcGF1c2VkIGF0LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW1hZ2Ugd2FzIGxvYWRlZCBzdWNjZXNzZnVsbHku
CitJbWFnZSBmcmFtZTogMCB3YXMgZGlzcGxheWVkLgorSW1hZ2UgZnJhbWU6IDEgd2FzIGRpc3Bs
YXllZC4KK0ltYWdlIGZyYW1lOiAyIHdhcyBkaXNwbGF5ZWQuCitJbWFnZSBmcmFtZTogMyB3YXMg
ZGlzcGxheWVkLgorVGhlIGFuaW1hdGlvbiB3YXMgbG9hZGVkIGFuZCBwYXVzZWQvcmVzdW1lZCBj
b3JyZWN0bHkuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1h
dGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2Fi
bGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMGM3NTJhYjYxYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXJlc3VtaW5nLWZyYW1lLmh0bWwK
QEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGltZyBzcmM9IiI+Cis8IS0tIHNldEF1dG9kaXNwbGF5IGZvciBXSzEgKHJkYXI6Ly80
MjYyNTY1NykgLS0+Cis8ZGl2IHN0eWxlPSJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtIj48L2Rpdj4K
KworPHNjcmlwdD4KKworICAgIGZ1bmN0aW9uIGRyYXdGcmFtZShpbWFnZSwgZnJhbWUpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgp
OworICAgICAgICAgICAgbGV0IGltYWdlRnJhbWUgPSBpbnRlcm5hbHMuaW1hZ2VGcmFtZUluZGV4
KGltYWdlKTsKKworICAgICAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0SW1h
Z2VGcmFtZVJlYWR5IiwgZnVuY3Rpb24gbGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgICAgZGVi
dWcoIkltYWdlIGZyYW1lOiAiICsgaW1hZ2VGcmFtZSArICIgd2FzIGRpc3BsYXllZC4iKTsKKyAg
ICAgICAgICAgICAgICBpbWFnZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1l
UmVhZHkiLCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShmcmFtZSAr
IDEpOworICAgICAgICAgICAgfSwgdHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGRyYXdJbWFnZShpbWFnZSwgZnJhbWVDb3VudCkgeworICAgICAgICBpbnRlcm5hbHMu
cmVzdW1lSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICBsZXQgcHJvbWlzZSA9IGRyYXdG
cmFtZShpbWFnZSwgMCk7CisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZnJhbWVDb3VudDsg
KytpKSB7CisgICAgICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKChmcmFtZSkgPT4gewor
ICAgICAgICAgICAgICAgIHJldHVybiBkcmF3RnJhbWUoaW1hZ2UsIGZyYW1lKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgaWYgKGkgPT0gMikgeworICAgICAgICAgICAgICAgIGludGVy
bmFscy5wYXVzZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bHMucmVzdW1lSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvYWRBbmRE
cmF3SW1hZ2UoaW1hZ2UsIHNyYywgZnJhbWVDb3VudCkgeworICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7
CisgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIHdhcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5LiIp
OworICAgICAgICAgICAgICAgIGRyYXdJbWFnZShpbWFnZSwgZnJhbWVDb3VudCkudGhlbihyZXNv
bHZlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAg
ICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkKHRydWUpOworICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5n
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZUFu
aW1hdGlvbkVuYWJsZWQoZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGltYWdlID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisKKyAgICAgICAgZGVzY3JpcHRpb24oIlZl
cmlmeSByZXN1bWVkIGFuaW1hdGlvbnMgc3RhcnQgYXQgdGhlIGZyYW1lIHRoZXkgd2VyZSBwYXVz
ZWQgYXQuIik7CisKKyAgICAgICAgbG9hZEFuZERyYXdJbWFnZShpbWFnZSwgInJlc291cmNlcy9h
bmltYXRlZC00LWZyYW1lcy5naWYiLCA0KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGRlYnVn
KCJUaGUgYW5pbWF0aW9uIHdhcyBsb2FkZWQgYW5kIHBhdXNlZC9yZXN1bWVkIGNvcnJlY3RseS4i
KTsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSkoKTsKKzwvc2NyaXB0PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMuZ2lmIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVz
b3VyY2VzL2FuaW1hdGVkLTQtZnJhbWVzLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWU0NzcxNDI2ZWJhNmFi
YTNiMTdjMzIxODBkMjgzOTA3NDMwY2MxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMDkKemNt
Wj93YmhFSGI2ayFseV9gdHlNcDgqNkV8OHg3Zmg2Rm8xMkRscE84ODk8fmducUlCUldMQjxmYUYx
bjhKR2xICnJgZDZOUSVmRVFlbVJzR01AOXBgJFVLQ1NSMTQ5RXkxQ2VVTSkpU31wS2lIKyUpTEhg
b3pMITQ9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWU3MTRmNTdjYmZiMzJh
NDZmNDJjMjE3YjI2MzA4YTY4ZmQxOGUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6Y21a
P3diaEVIYjZrcmZ3X3xDdzxrZH02YVZKNDZzMSowSl8weipMWUtld04yTlUqYkdmVUErNzBXJXtv
Mm8hJl4KenV6KjVCMlNrOWYyP0t7TDEyY3o9JEEkJDVuPm1FRlZvcSNXYyhgM2EqPXZyKyN6alhQ
ODV5emJWOG99eDhVU2QxCkJCNF97cgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462242</attachid>
            <date>2022-09-09 13:48:14 -0700</date>
            <delta_ts>2022-09-10 14:09:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220909134814.patch</filename>
            <type>text/plain</type>
            <size>34076</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBkODg1NTkwNmE5NzMzMTMzYWE5OTU4YWExYzY0NDE0NzEwNDYxZGU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NoIEhvZmZtYW4gPGpob2ZmbWFuMjNAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI1IEF1ZyAyMDIyIDEwOjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIGRpc2FibGUgQml0bWFwSW1hZ2UgYW5pbWF0aW9ucwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEyOCByZGFyOi8vOTg4
ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3
IGV4cGVyaW1lbnRhbCBBWCBwcmVmZXJlbmNlLCB3aGljaCB3aGVuIGRpc2FibGVkLCBwcmV2ZW50
cyBCaXRtYXBJbWFnZSBhbmltYXRpb25zLiBBZGRpdGlvbmFsbHksIHdlIHByb3ZpZGUgbmV3IGlu
dGVyZmFjZXMgdG8gY29udHJvbCBpbmRpdmlkdWFsIGltYWdlIGFuaW1hdGlvbnMuCgoqIExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLWVu
YWJsZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmlt
YXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlkdWFs
LWFuaW1hdGlvbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxl
LWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbDog
QWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLTQtZnJh
bWVzLmdpZjogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1h
dGlvbi5naWY6IEFkZGVkLgoKVGVzdHMgdG9nZ2xpbmcgdGhlIHNldHRpbmcsIHRvZ2dsaW5nIGFu
IGluZGl2aWR1YWwgYW5pbWF0aW9uLCBhbmQgY2hlY2tpbmcgdGhlIGZyYW1lcyBjb250aW51ZSBj
b3JyZWN0bHkuCgoqIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sOgoKQWRkcyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFu
ZCBzZXRzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdCAoSW1hZ2VBbmltYXRpb25FbmFibGVkKS4KCiog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQ6OmNhY2hlZEJpdG1hcEltYWdlIGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OmFsbG93c0FuaW1hdGlvbiBjb25zdCk6CihXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50OjpzZXRBbGxvd3NBbmltYXRpb24pOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cmVz
ZXRBbGxvd3NBbmltYXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oOgoKTWV0aG9kcyB0byBjb250cm9sIGltYWdlIGFuaW1hdGlvbiBzdGF0ZSBhbmQgY2hlY2sg
dGhlIHN0YXR1cyBvZiBhbiBhbmltYXRpb24uCgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaG91bGRBbmlt
YXRlIGNvbnN0KToKCkFkZCBhIGNvbmRpdGlvbiB0byBzaG91bGRBbmltYXRlIHRvIGNoZWNrIGFs
bG93c0FuaW1hdGlvbigpIGZyb20gdGhlIGltYWdlIG9ic2VydmVyLgoKKiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgooV2ViQ29yZTo6SW1hZ2U6OmFsbG93c0FuaW1h
dGlvbiBjb25zdCk6CihXZWJDb3JlOjpJbWFnZTo6c2V0QWxsb3dzQW5pbWF0aW9uKToKCkFkZCBt
ZXRob2RzIHRvIGNvbnRyb2wgdGhlIGluZGl2aWR1YWwgYWxsb3dzQW5pbWF0aW9uIHN0YXRlLgoK
KiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5h
bHM6OnJlc3VtZUltYWdlQW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6cGF1c2VJbWFn
ZUFuaW1hdGlvbik6CiogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGw6CgpOZXcgaW50ZXJuYWwgdGVzdGluZyBt
ZXRob2RzIHRvIHZlcmlmeSB0aGUgc2V0dGluZyBpcyBvbiAmIGltYWdlcyBhcmUgaW4gdGhlIGNv
cnJlY3Qgc3RhdGUKCiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oCiogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAoqIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCiogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKCkFkZCBuZXcgSW1hZ2VPYnNlcnZlciBt
ZXRob2QgdG8gZ2V0IGFuIGltYWdlcyBkZXNpcmVkIGFuaW1hdGlvbiBzdGF0ZS4KCiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAoKQWRkZWQgYSBtZXRob2QgdG8gZ2V0IGlmIGFuIGltYWdl
IGlzIGFsbG93ZWQgdG8gYW5pbWF0ZSBiYXNlZCBvbiBzZXR0aW5ncyBhbmQvb3IgdGhlIGluZGl2
aWR1YWwgaW1hZ2VzIHN0YXRlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCiogU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCiogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAoqIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmgKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCiogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKCk5ldyBtZXRob2RzIChpbnZva2VkIGJ5IHRoZSBwcmVm
ZXJlbmNlIGNoYW5nZSkgdGhhdCByZXBhaW50IHZpc2libGUgYW5pbWF0ZWQgaW1hZ2VzLgoKKiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKCk5ldyBtZXRob2QgdG8gY2hlY2sgaWYgYSBSZW5kZXJJ
bWFnZSBpcyBhbmltYXRlZCBhbmQgaWYgaXQgYWxsb3dzIGFuaW1hdGlvbi4KLS0tCiAuLi4vV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAgICAgICAgICAgfCAgMTMgKysrCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwICAgICAgfCAgMjYgKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCAgICAgICAgfCAgIDYgKysKIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgICB8ICAyMiArKysrKwogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggICAgIHwgICAzICsKIC4uLi9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oICB8ICAgMiArCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAgICAgfCAgMTYgKysrKwogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCAgICAgICAgICAgICAgIHwgICAyICsKIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgNiArKwogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCAgICAgICAgICB8ICAgNiArKwogU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCB8ICAgNyArLQogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCAgICAgIHwgICA1ICsrCiAuLi4vV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgICA1ICsrCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCAgICAgIHwgIDE0ICsrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oICAgICAgICB8ICAgMyArCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAgICAgICAgfCAgMjEgKysrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmggICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgICAgICAgICAgfCAgMTAgKysrCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsICAgICAgICAgIHwgICAyICsKIC4uLi9kaXNhYmxlLWFuaW1hdGlvbnMtZW5h
YmxlZC1leHBlY3RlZC50eHQgICB8ICAxMiArKysKIC4uLi9pbWFnZXMvZGlzYWJsZS1hbmltYXRp
b25zLWVuYWJsZWQuaHRtbCAgICB8ICAyOSArKysrKysrCiAuLi5vbnMtcGxheS1pbmRpdmlkdWFs
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQgfCAgMTMgKysrCiAuLi4tYW5pbWF0aW9ucy1wbGF5LWlu
ZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwgfCAgMzIgKysrKysrKwogLi4uYmxlLWFuaW1hdGlvbnMt
cmVzdW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0IHwgIDE4ICsrKysKIC4uLi9kaXNhYmxlLWFuaW1h
dGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbCAgICB8ICA3OCArKysrKysrKysrKysrKysrKysKIC4u
Li9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLTQtZnJhbWVzLmdpZiAgICB8IEJpbiAwIC0+IDIw
OSBieXRlcwogLi4uL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmICAgICAgIHwg
QmluIDAgLT4gOTAxIGJ5dGVzCiAzMiBmaWxlcyBjaGFuZ2VkLCAzNTggaW5zZXJ0aW9ucygrKSwg
MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXBs
YXktaW5kaXZpZHVhbC1hbmltYXRpb24uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxl
LWFuaW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0aW9u
LmdpZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggYzM2MjEwODJiNTRiLi4wOWNh
Zjk1ODhhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC03NzEsNiArNzcxLDE5
IEBAIEhpZ2hsaWdodEFQSUVuYWJsZWQ6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFs
c2UKIAorSW1hZ2VBbmltYXRpb25FbmFibGVkOgorICB0eXBlOiBib29sCisgIHdlYmNvcmVPbkNo
YW5nZTogc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkQ2hhbmdlZAorICBodW1hblJlYWRhYmxlTmFt
ZTogIkltYWdlIEFuaW1hdGlvbiBFbmFibGVkIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJFbmFibGUgaW1hZ2UgYW5pbWF0aW9ucy4iCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRM
ZWdhY3k6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDog
dHJ1ZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiB0cnVlCisKIEltYWdlQml0bWFwRW5h
YmxlZDoKICAgdHlwZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIkltYWdlQml0bWFwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggYWI2NzM2ODMwOGI5
Li4yZTdhOTYxMGIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtNzY2LDYgKzc2NiwzMiBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c09yaWVu
dGF0aW9uT3ZlcnJpZGUoKSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPnNvdXJj
ZVVSTCgpLnByb3RvY29sSXNEYXRhKCkgfHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1NhbWVPcmlnaW4o
KTsKIH0KIAorSW1hZ2UqIEhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlKCkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byogY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICByZXR1
cm4gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wg
SFRNTEltYWdlRWxlbWVudDo6YWxsb3dzQW5pbWF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0
byogaW1hZ2UgPSB0aGlzLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmFsbG93c0Fu
aW1hdGlvbigpLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5pbWFnZUFuaW1hdGlvbkVu
YWJsZWQoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OnNldEFsbG93c0FuaW1hdGlvbihib29sIGFsbG93c0FuaW1hdGlvbikKK3sKKyAgICBpZiAoYXV0
byogaW1hZ2UgPSB0aGlzLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPnNldEFsbG93
c0FuaW1hdGlvbihhbGxvd3NBbmltYXRpb24pOworfQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OnJlc2V0QWxsb3dzQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSB0aGlzLT5p
bWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPnNldEFsbG93c0FuaW1hdGlvbihzdGQ6Om51
bGxvcHQpOworfQorCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjpzZXRBdHRhY2htZW50RWxlbWVudChSZWY8SFRNTEF0dGFjaG1lbnRFbGVt
ZW50PiYmIGF0dGFjaG1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmlu
ZGV4IDZkNTVlMTg3Y2IyNC4uNzUwNDcyNTFjYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaApAQCAtMTU1LDYgKzE1NSwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGFs
bG93c09yaWVudGF0aW9uT3ZlcnJpZGUoKSBjb25zdDsKIAorICAgIGJvb2wgYWxsb3dzQW5pbWF0
aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbGxvd3NBbmltYXRpb24o
Ym9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldEFsbG93c0FuaW1hdGlvbigpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0cik7CiAKQEAgLTIzNyw2ICsyNDEs
OCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9uZWRBdHRhY2htZW50SUQ7CiAj
ZW5kaWYKIAorICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OworCiAgICAgZnJpZW5kIGNsYXNzIEhU
TUxQaWN0dXJlRWxlbWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IDhiMTZjMDAxNTZhOC4uY2E2ZGM4MWFkODIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ0Nyw2ICs0NDcsMTUg
QEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWcKICAgICAgICAgY2FjaGVkSW1hZ2UtPnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKGltYWdlKTsKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6YWxsb3dzQW5pbWF0aW9uKGNvbnN0IEltYWdlJiBpbWFnZSkKK3sKKyAgICBm
b3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykgeworICAgICAgICBpZiAoY2Fj
aGVkSW1hZ2UtPmFsbG93c0FuaW1hdGlvbihpbWFnZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBpbmxpbmUgdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXJJbWFnZSgpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQpAQCAtNzAwLDYgKzcwOSwxOSBA
QCB2b2lkIENhY2hlZEltYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYg
aW1hZ2UpCiAgICAgICAgIGNsaWVudC0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFnZSgq
dGhpcyk7CiB9CiAKK2Jvb2wgQ2FjaGVkSW1hZ2U6OmFsbG93c0FuaW1hdGlvbihjb25zdCBJbWFn
ZSYgaW1hZ2UpCit7CisgICAgaWYgKCZpbWFnZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VD
bGllbnQ+IHdhbGtlcigqdGhpcyk7CisgICAgd2hpbGUgKGF1dG8qIGNsaWVudCA9IHdhbGtlci5u
ZXh0KCkpIHsKKyAgICAgICAgaWYgKCFjbGllbnQtPmFsbG93c0FuaW1hdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBD
YWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVu
ZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA2
MjA5NGMxZDg5NzAuLjFmZTU0Y2YxZmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU2tp
cFJldmFsaWRhdGlvbihjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IENhY2hlZFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc1Zpc2libGVJblZpZXdwb3J0KGNv
bnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oY29uc3QgSW1h
Z2UmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyKCk7CkBAIC0xNTgsNiArMTU5LDggQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3Qg
SW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJikgZmluYWw7CiAKKyAgICAgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oY29uc3Qg
SW1hZ2UmKSBmaW5hbDsKKwogICAgICAgICBIYXNoU2V0PENhY2hlZEltYWdlKj4gbV9jYWNoZWRJ
bWFnZXM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2VDbGllbnQuaAppbmRleCAyODY4OTY5ZGIzN2IuLmRjMjlkMTI5NzE2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAgLTUyLDYg
KzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNs
aWVudChDYWNoZWRJbWFnZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBh
bGxvd3NBbmltYXRpb24oKSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjAxOWZmZjlmYzQ0Li5mMTM4
NDliMDkwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTI3NTYsNiArMjc1Niwx
NSBAQCB2b2lkIEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCkKICAgICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1h
Z2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJlY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6
cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3Qp
Cit7CisgICAgaWYgKHZpc2libGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAg
ICAgICByZW5kZXJWaWV3LT5yZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJl
Y3QpOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGlt
ZXJzVGhyb3R0bGluZ1N0YXRlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogewogICAgIGlm
IChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCkBAIC0yNzkxLDYgKzI4MDAsMTMgQEAgdm9pZCBGcmFt
ZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQog
ICAgIH0pOwogfQogCit2b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlv
bnNJbmNsdWRpbmdTdWJmcmFtZXMoKQoreworICAgIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJs
ZVJlY3QoW10gKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCkgeworICAgICAgICBmcmFtZVZpZXcucmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlz
aWJsZVJlY3QpOworICAgIH0pOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnNBZnRlclNjcm9sbGluZygpCiB7CiAgICAgLy8gSWYgd2UncmUgc2Nyb2xsaW5nIGFzIGEg
cmVzdWx0IG9mIHVwZGF0aW5nIHRoZSB2aWV3IHNpemUgYWZ0ZXIgbGF5b3V0LCB3ZSdsbCB1cGRh
dGUgd2lkZ2V0cyBhbmQgbGF5ZXIgcG9zaXRpb25zIHNvb24gYW55d2F5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNjJhOWUwNzc4MGUyLi5lNDk5NTIzYzA4OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaApAQCAtMzI1LDYgKzMyNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlld3Bv
cnRDb250ZW50c0NoYW5nZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVZpc2li
bGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRW
aXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiAKICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7CkBAIC03NzYsNiArNzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc0FuZFRpbWVy
c1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwZTQyYTZkY2Q2NWIuLjk1NWMyNmU5ZDllZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC00MDE1LDQgKzQwMTUsMTAgQEAgdm9pZCBQYWdlOjpmb3JjZVJlcGFpbnRBbGxGcmFtZXMo
KQogICAgIH0KIH0KIAordm9pZCBQYWdlOjpyZXBhaW50QW5pbWF0ZWRJbWFnZXMoKQoreworICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCkpCisgICAgICAgIHZpZXct
PnJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNjgwYjEwMDhjZTU3Li5l
ZmRkZDllOTU4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02OTMsNiArNjkzLDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2VzKCk7Cisg
ICAgdm9pZCByZXBhaW50QW5pbWF0ZWRJbWFnZXMoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3NCYXNlLmNwcAppbmRleCAyNThmZTgzMjk0NjIuLjVmZmE5N2Y5MDEzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNDg0LDQgKzQ4NCwxMCBAQCB2b2lkIFNl
dHRpbmdzQmFzZTo6cmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlQ2hhbmdlZCgpCiAjZW5kaWYK
IH0KIAordm9pZCBTZXR0aW5nc0Jhc2U6OnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZENoYW5nZWQo
KQoreworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+cmVwYWludEFuaW1hdGVkSW1h
Z2VzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
QmFzZS5oCmluZGV4IDFiMzliMTM2OWMwOS4uNzhjZTVjNWNkOGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3NCYXNlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxF
KExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCiAgICAgdm9pZCBsYXllckJhc2VkU1ZHRW5naW5lRW5h
YmxlZENoYW5nZWQoKTsKICNlbmRpZgorICAgIHZvaWQgc2V0SW1hZ2VBbmltYXRpb25FbmFibGVk
Q2hhbmdlZCgpOwogCiAgICAgUGFnZSogbV9wYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTg3YWM2OTBiMmVjLi5jNTZh
NDJiMWUzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAK
IGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUoKSBjb25zdAogewotICAgIHJldHVybiBy
ZXBldGl0aW9uQ291bnQoKSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVy
KCk7CisgICAgcmV0dXJuIHJlcGV0aXRpb25Db3VudCgpICYmICFtX2FuaW1hdGlvbkZpbmlzaGVk
ICYmIGltYWdlT2JzZXJ2ZXIoKSAmJiBpbWFnZU9ic2VydmVyKCktPmFsbG93c0FuaW1hdGlvbigq
dGhpcyk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKSBjb25zdApAQCAtMzg0
LDcgKzM4NCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKSBjb25zdAogCiBib29s
IEJpdG1hcEltYWdlOjpjYW5Vc2VBc3luY0RlY29kaW5nRm9yTGFyZ2VJbWFnZXMoKSBjb25zdAog
ewotICAgIHJldHVybiAhY2FuQW5pbWF0ZSgpICYmIG1fc291cmNlLT5jYW5Vc2VBc3luY0RlY29k
aW5nKCk7CisgICAgcmV0dXJuICFzaG91bGRBbmltYXRlKCkgJiYgbV9zb3VyY2UtPmNhblVzZUFz
eW5jRGVjb2RpbmcoKSAmJiAhKGZyYW1lQ291bnQoKSA+IDEpOwogfQogCiBib29sIEJpdG1hcElt
YWdlOjpzaG91bGRVc2VBc3luY0RlY29kaW5nRm9yQW5pbWF0ZWRJbWFnZXMoKSBjb25zdApAQCAt
NjM1LDYgKzYzNSw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGVBdElu
ZGV4KHNpemVfdCBpbmRleCkKICAgICAgICAgQVNTRVJUKCFtX3JlcGV0aXRpb25zQ29tcGxldGUp
OwogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtN
b3JlIGRhdGEgbWFrZXMgZnJhbWVDb3VudCgpID4gMV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNv
dXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KKyAgICAKKyAgICBpZiAo
aW1hZ2VPYnNlcnZlcigpICYmICFpbWFnZU9ic2VydmVyKCktPmFsbG93c0FuaW1hdGlvbigqdGhp
cykpCisgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChpbmRleCA9PSBtX2N1cnJlbnRGcmFt
ZSAmJiAhbV9jdXJyZW50RnJhbWUpOwogICAgIGlmIChtX3NvdXJjZS0+aXNBc3luY0RlY29kaW5n
UXVldWVJZGxlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRl
eCA4MzgyMzcyZDUyYWIuLmVhMGQyOTA3NjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCkBAIC0xNDYsNiArMTQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXNldEFuaW1hdGlvbigpIHt9CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW5nKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGFuaW1hdGlvblBlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXJ0VGltZXIgJiYgbV9hbmltYXRpb25TdGFydFRpbWVy
LT5pc0FjdGl2ZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd3NBbmltYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FuaW1hdGlvbjsgfQorICAgIHZvaWQgc2V0QWxsb3dz
QW5pbWF0aW9uKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWxsb3dzQW5pbWF0aW9uKSB7IG1fYWxsb3dz
QW5pbWF0aW9uID0gYWxsb3dzQW5pbWF0aW9uOyB9CiAKICAgICAvLyBUeXBpY2FsbHkgdGhlIENh
Y2hlZEltYWdlIHRoYXQgb3ducyB1cy4KICAgICBJbWFnZU9ic2VydmVyKiBpbWFnZU9ic2VydmVy
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CkBAIC0yMTEsNiArMjEzLDkgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1h
Z2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKKyAgICAKKyAgICAvLyBBIHZh
bHVlIG9mIHRydWUgb3IgZmFsc2Ugd2lsbCBvdmVycmlkZSB0aGUgZ2xvYmFsIEltYWdlQW5pbWF0
aW9uRW5hYmxlZCBzZXR0aW5nLgorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9hbGxvd3NBbmlt
YXRpb24geyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbWFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDA0MjcwYzgzZDMzNy4uMjEw
MWFkYWM5YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPYnNlcnZlci5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29k
aW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3Qo
Y29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBbmltYXRpb24oY29uc3QgSW1hZ2UmKSB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKaW5kZXggNWQ1MzQ4ZmIyYzNkLi4yOWFhYzBhM2YwYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI1MjEsNCArMjUyMSw5IEBAIEZs
b2F0UmVjdCBSZW5kZXJFbGVtZW50OjpyZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUgYm94VHlw
ZSkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCitib29sIFJlbmRlckVsZW1lbnQ6OmFsbG93
c0FuaW1hdGlvbigpCit7CisgICAgcmV0dXJuIHNldHRpbmdzKCkuaW1hZ2VBbmltYXRpb25FbmFi
bGVkKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmlu
ZGV4IDJmZDdjNmQ1MTRlMy4uMjk4NzliZjRmZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKQEAgLTI5MSw2ICsyOTEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0RlcHJlY2F0ZWRGbGV4SXRlbSgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPmlz
RGVwcmVjYXRlZEZsZXhpYmxlQm94KCk7IH0KICAgICBib29sIGlzRmxleEl0ZW1JbmNsdWRpbmdE
ZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlzRmxvYXRpbmdPck91
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJv
eEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogCisgICAgYm9vbCBhbGxvd3NBbmltYXRpb24oKSBv
dmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQmFzZVR5cGVGbGFnIHsKICAgICAgICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcgID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZGJmZWY4ZTQ3ZmNiLi40ZjI5YjIyNWM2OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDQyLDYgKzQ0Miwx
MyBAQCBib29sIFJlbmRlckltYWdlOjpoYXNOb25CaXRtYXBJbWFnZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGltYWdlICYmICFpczxCaXRtYXBJbWFnZT4oaW1hZ2UpOwogfQogCitib29sIFJlbmRlcklt
YWdlOjpoYXNBbmltYXRlZEltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSBj
YWNoZWRJbWFnZSgpID8gY2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSA6IG51bGxwdHIpCisgICAgICAg
IHJldHVybiBpbWFnZS0+aXNBbmltYXRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRJbmNvbXBsZXRlSW1hZ2VPdXRsaW5lKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBMYXlvdXRQb2ludCBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCkg
Y29uc3QKIHsKICAgICBhdXRvIGNvbnRlbnRTaXplID0gdGhpcy0+Y29udGVudFNpemUoKTsKQEAg
LTkwMCw0ICs5MDcsMTEgQEAgUmVuZGVyQm94KiBSZW5kZXJJbWFnZTo6ZW1iZWRkZWRDb250ZW50
Qm94KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBSZW5kZXJJbWFnZTo6
YWxsb3dzQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVu
dCgpKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50
KCkpLmFsbG93c0FuaW1hdGlvbigpOworICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6YWxsb3dz
QW5pbWF0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNDQyOWQzMDdmN2IwLi5mMTExOGFjNTAyNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04MSw2ICs4MSw5IEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCB7IHJl
dHVybiBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKS0+YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7
IH0KIAorICAgIGJvb2wgaGFzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0OworICAgIGJvb2wgYWxsb3dz
QW5pbWF0aW9uKCkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5k
ZXggODQxN2M5ODY1NmVhLi43MGM3Nzk2ODEwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKQEAgLTg3NCw2ICs4NzQsMjcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXN1
bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCkKICAgICAgICAgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKCpwYWly
LmZpcnN0LCAqcGFpci5zZWNvbmQpOwogfQogCit2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRJbWFn
ZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKK3sKKyAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxSZW5kZXJFbGVtZW50PigqdGhp
cykpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50LmlzVmlzaWJsZUluRG9jdW1lbnRSZWN0KHZpc2li
bGVSZWN0KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgLy8gRklY
TUU6IGNoZWNrIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UocykgY2FuIGFuaW1hdGUgYmVm
b3JlIHJlcGFpbnRpbmcKKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSkgeworICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcklt
YWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihlbGVtZW50KSkgeworICAgICAgICAg
ICAgaWYgKHJlbmRlckltYWdlLT5oYXNBbmltYXRlZEltYWdlKCkpIHsKKyAgICAgICAgICAgICAg
ICBlbGVtZW50LnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogUmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IoUmVuZGVyVmlldyogdmlldykKIHsK
ICAgICBpZiAoIXZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCAw
OGIzYTdhMmRiMjAuLmRjMWE1ZDI1MjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCkBAIC0xNzIsNiArMTcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJGb3JW
aXNpYmxlSW5WaWV3cG9ydENhbGxiYWNrKFJlbmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJGb3JWaXNpYmxlSW5WaWV3cG9ydENhbGxiYWNrKFJlbmRlckVsZW1lbnQmKTsKICAgICB2
b2lkIHJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZp
c2libGVSZWN0KTsKKyAgICB2b2lkIHJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAgICAgdm9pZCBhZGRSZW5kZXJlcldpdGhQYXVzZWRJ
bWFnZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYsIENhY2hlZEltYWdlJik7CiAgICAgdm9pZCBy
ZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYpOwog
ICAgIHZvaWQgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKFJlbmRlckVs
ZW1lbnQmLCBDYWNoZWRJbWFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDhkMGU3NmUxZmM1Ni4uZTcwNmIwNDZjMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xMDQ5LDYgKzEwNDksMTYgQEAgYm9vbCBJbnRlcm5hbHM6OmlzSW1hZ2VB
bmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaW1hZ2UgJiYg
KGltYWdlLT5pc0FuaW1hdGluZygpIHx8IGltYWdlLT5hbmltYXRpb25QZW5kaW5nKCkpOwogfQog
Cit2b2lkIEludGVybmFsczo6cmVzdW1lSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBlbGVtZW50LnNldEFsbG93c0FuaW1hdGlvbih0cnVlKTsKK30KKwor
dm9pZCBJbnRlcm5hbHM6OnBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICBlbGVtZW50LnNldEFsbG93c0FuaW1hdGlvbihmYWxzZSk7Cit9CisKIHVu
c2lnbmVkIEludGVybmFsczo6aW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3Rp
bmcoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gZWxlbWVudC5wZW5k
aW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IGYzOGI2N2M1NGNiYy4uMzhjMzkxZjEyZmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTIyMSw2ICsyMjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJ
bWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQgZHVyYXRp
b24pOwogICAgIHZvaWQgcmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CiAg
ICAgYm9vbCBpc0ltYWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHJl
c3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHBhdXNlSW1h
Z2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHVuc2lnbmVkIGltYWdlUGVuZGlu
Z0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICB2
b2lkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nKEhUTUxJ
bWFnZUVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHVuc2lnbmVkIGltYWdlRGVjb2RlQ291
bnQoSFRNTEltYWdlRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmlu
ZGV4IDI3MTY0OTVmNTA2YS4uNTEwNzczM2Y3ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC01NTQsNiArNTU0LDggQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZl
dGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIHVuZGVmaW5lZCBzZXRJbWFnZUZyYW1lRGVj
b2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIHVucmVzdHJpY3RlZCBmbG9h
dCBkdXJhdGlvbik7CiAgICAgdW5kZWZpbmVkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdl
RWxlbWVudCBlbGVtZW50KTsKICAgICBib29sZWFuIGlzSW1hZ2VBbmltYXRpbmcoSFRNTEltYWdl
RWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgcmVzdW1lSW1hZ2VBbmltYXRpb24oSFRN
TEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgcGF1c2VJbWFnZUFuaW1hdGlv
bihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VQZW5k
aW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50
KTsKICAgICB1bmRlZmluZWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZv
clRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAg
IHVuc2lnbmVkIGxvbmcgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25z
LWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1h
bmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMTBkNjMwOTAzNzY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhhdCBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCB3
aGVuIHRoZSBkaXNhYmxlIGFuaW1hdGVkIGltYWdlcyBzZXR0aW5nIGlzIHR1cm5lZCBvbi4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmlt
YXRpbmcoaW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGlu
ZyhpbWFnZSkgYmVjYW1lIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rp
c2FibGUtYW5pbWF0aW9ucy1lbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9k
aXNhYmxlLWFuaW1hdGlvbnMtZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uOTM1NWVkMmE3MDc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLWVuYWJsZWQuaHRtbApAQCAtMCwwICsx
LDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1n
IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi5naWYiIGlkPSJ0ZXN0SW1hZ2UiIC8+Cis8IS0tIHNl
dEF1dG9kaXNwbGF5IGZvciBXSzEgKHJkYXI6Ly80MjYyNTY1NykgLS0+Cis8ZGl2IHN0eWxlPSJ3
aWxsLWNoYW5nZTogdHJhbnNmb3JtIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyB0aGF0IGFuaW1hdGlvbnMgYXJlIGRpc2FibGVkIHdoZW4gdGhlIGRpc2Fi
bGUgYW5pbWF0ZWQgaW1hZ2VzIHNldHRpbmcgaXMgdHVybmVkIG9uLlxuXG4iKTsKKworICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1h
dGlvbkVuYWJsZWQoZmFsc2UpOworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0SW1hZ2UiKTsKKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdl
KSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlY29t
ZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAidHJ1ZSIsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Cisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1h
bmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1h
bmltYXRpb25zLXBsYXktaW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWRhM2RjMDgwNDUyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXkt
aW5kaXZpZHVhbC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMg
dGVzdHMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgdGhleSBjYW4gYmUg
dG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2aWR1YWxseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSBm
YWxzZQorUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIHRydWUK
K1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25zLXBsYXktaW5k
aXZpZHVhbC1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Rpc2FibGUt
YW5pbWF0aW9ucy1wbGF5LWluZGl2aWR1YWwtYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZGYzYmRmNTNkNGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtcGxheS1pbmRpdmlk
dWFsLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLmdp
ZiIgaWQ9InRlc3RJbWFnZSIgLz4KKzwhLS0gc2V0QXV0b2Rpc3BsYXkgZm9yIFdLMSAocmRhcjov
LzQyNjI1NjU3KSAtLT4KKzxkaXYgc3R5bGU9IndpbGwtY2hhbmdlOiB0cmFuc2Zvcm0iPjwvZGl2
PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgd2hlbiBpbWFn
ZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIHRoZXkgY2FuIGJlIHRvZ2dsZWQgb24gYW5kIG9mZiBp
bmRpdmlkdWFsbHkuXG5cbiIpOworCisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgdmFy
IGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgaW50ZXJuYWxzLnJlc3VtZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSki
LCAidHJ1ZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy5wYXVzZUlt
YWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgi
aW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgImZhbHNlIiwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH07Cis8L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmlt
YXRpb25zLXJlc3VtaW5nLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYTM5ZjU1YTdlOWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFuaW1hdGlvbnMtcmVz
dW1pbmctZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1ZlcmlmeSByZXN1bWVk
IGFuaW1hdGlvbnMgc3RhcnQgYXQgdGhlIGZyYW1lIHRoZXkgd2VyZSBwYXVzZWQgYXQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbWFnZSB3YXMgbG9hZGVkIHN1Y2Nlc3NmdWxs
eS4KK0ltYWdlIGZyYW1lOiAwIHdhcyBkaXNwbGF5ZWQuCitQQVNTIGludGVybmFscy5pbWFnZUZy
YW1lSW5kZXgoaW1hZ2UpID09IGltYWdlRnJhbWUgKyAxIGlzIHRydWUKK0ltYWdlIGZyYW1lOiAx
IHdhcyBkaXNwbGF5ZWQuCitQQVNTIGludGVybmFscy5pbWFnZUZyYW1lSW5kZXgoaW1hZ2UpID09
IGltYWdlRnJhbWUgKyAxIGlzIHRydWUKK0ltYWdlIGZyYW1lOiAyIHdhcyBkaXNwbGF5ZWQuCitQ
QVNTIGludGVybmFscy5pbWFnZUZyYW1lSW5kZXgoaW1hZ2UpID09IGltYWdlRnJhbWUgKyAxIGlz
IHRydWUKK1RoZSBhbmltYXRpb24gd2FzIGxvYWRlZCBhbmQgcGF1c2VkL3Jlc3VtZWQgY29ycmVj
dGx5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGlzYWJsZS1hbmltYXRpb25z
LXJlc3VtaW5nLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kaXNhYmxlLWFu
aW1hdGlvbnMtcmVzdW1pbmctZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmUzNzMwZTQxOWRkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2Rpc2FibGUtYW5pbWF0aW9ucy1yZXN1bWluZy1mcmFtZS5odG1sCkBAIC0w
LDAgKzEsNzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxpbWcgc3JjPSIiPgorPCEtLSBzZXRBdXRvZGlzcGxheSBmb3IgV0sxIChyZGFyOi8vNDI2MjU2
NTcpIC0tPgorPGRpdiBzdHlsZT0id2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CisJdmFyIGltYWdlOworCXZhciBpbWFnZUZyYW1lOworCQorICAgIGZ1bmN0aW9uIGRy
YXdGcmFtZShpbWFnZSwgZnJhbWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlKSA9PiB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAgICAgICAgaW1hZ2VGcmFtZSA9IGlu
dGVybmFscy5pbWFnZUZyYW1lSW5kZXgoaW1hZ2UpOworCisgICAgICAgICAgICBpbWFnZS5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5jdGlvbiBsaXN0ZW5lcigp
IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2UgZnJhbWU6ICIgKyBpbWFnZUZyYW1lICsg
IiB3YXMgZGlzcGxheWVkLiIpOworICAgICAgICAgICAgICAgIGltYWdlLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICBpbnRlcm5hbHMucGF1c2VJbWFnZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dCgoaW1hZ2UsIGltYWdlRnJhbWUpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMuaW1hZ2VGcmFtZUluZGV4KGltYWdlKSA9PSBp
bWFnZUZyYW1lICsgMSIpOworICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMucmVzdW1lSW1h
Z2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZyYW1lICsg
MSk7CisgICAgICAgICAgICAgICAgfSwgNTAsIGltYWdlLCBpbWFnZUZyYW1lKTsKKyAgICAgICAg
ICAgIH0sIHRydWUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3SW1h
Z2UoaW1hZ2UsIGZyYW1lQ291bnQpIHsKKyAgICAgICAgaW50ZXJuYWxzLnJlc3VtZUltYWdlQW5p
bWF0aW9uKGltYWdlKTsKKyAgICAgICAgbGV0IHByb21pc2UgPSBkcmF3RnJhbWUoaW1hZ2UsIDAp
OworICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZyYW1lQ291bnQ7ICsraSkgeworICAgICAg
ICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbigoZnJhbWUpID0+IHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZHJhd0ZyYW1lKGltYWdlLCBmcmFtZSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2Fk
QW5kRHJhd0ltYWdlKGltYWdlLCBzcmMsIGZyYW1lQ291bnQpIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkg
PT4geworICAgICAgICAgICAgICAgIGRlYnVnKCJJbWFnZSB3YXMgbG9hZGVkIHN1Y2Nlc3NmdWxs
eS4iKTsKKyAgICAgICAgICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGZyYW1lQ291bnQpLnRoZW4o
cmVzb2x2ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGltYWdlLnNyYyA9IHNyYzsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsK
KyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBbmltYXRlZEltYWdlQXN5bmNEZWNv
ZGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1h
Z2VBbmltYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGltYWdlID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIik7CisKKyAgICAgICAgZGVzY3JpcHRpb24oIlZl
cmlmeSByZXN1bWVkIGFuaW1hdGlvbnMgc3RhcnQgYXQgdGhlIGZyYW1lIHRoZXkgd2VyZSBwYXVz
ZWQgYXQuIik7CisKKyAgICAgICAgbG9hZEFuZERyYXdJbWFnZShpbWFnZSwgInJlc291cmNlcy9h
bmltYXRlZC00LWZyYW1lcy5naWYiLCAzKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGRlYnVn
KCJUaGUgYW5pbWF0aW9uIHdhcyBsb2FkZWQgYW5kIHBhdXNlZC9yZXN1bWVkIGNvcnJlY3RseS4i
KTsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSkoKTsKKzwvc2NyaXB0PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMuZ2lmIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVz
b3VyY2VzL2FuaW1hdGVkLTQtZnJhbWVzLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWU0NzcxNDI2ZWJhNmFi
YTNiMTdjMzIxODBkMjgzOTA3NDMwY2MxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMDkKemNt
Wj93YmhFSGI2ayFseV9gdHlNcDgqNkV8OHg3Zmg2Rm8xMkRscE84ODk8fmducUlCUldMQjxmYUYx
bjhKR2xICnJgZDZOUSVmRVFlbVJzR01AOXBgJFVLQ1NSMTQ5RXkxQ2VVTSkpU31wS2lIKyUpTEhg
b3pMITQ9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWU3MTRmNTdjYmZiMzJh
NDZmNDJjMjE3YjI2MzA4YTY4ZmQxOGUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwMQp6Y21a
P3diaEVIYjZrcmZ3X3xDdzxrZH02YVZKNDZzMSowSl8weipMWUtld04yTlUqYkdmVUErNzBXJXtv
Mm8hJl4KenV6KjVCMlNrOWYyP0t7TDEyY3o9JEEkJDVuPm1FRlZvcSNXYyhgM2EqPXZyKyN6alhQ
ODV5emJWOG99eDhVU2QxCkJCNF97cgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462256</attachid>
            <date>2022-09-10 14:09:33 -0700</date>
            <delta_ts>2022-09-12 16:52:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220910140932.patch</filename>
            <type>text/plain</type>
            <size>37011</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBmYjRmODU5ZGRiN2IzNWU1OTMzMzVkNzg4NGQyNmQ2OGJkYjg0OWFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxMCBTZXAgMjAyMiAxNDowMDoyNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBl
eHBlcmltZW50YWwgZmVhdHVyZSB0byBjb250cm9sIGltYWdlIGFuaW1hdGlvbgogcGxheS9wYXVz
ZSBzdGF0ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ0MTI4CiBy
ZGFyOi8vOTg4ODc2NzcKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBwYXRjaCBh
ZGRzIGEgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgZW5hYmxlcyBjb250cm9sIG9mIGlt
YWdlCmFuaW1hdGlvbiBwbGF5IC8gcGF1c2Ugc3RhdGUuIEFuaW1hdGlvbnMgY2FuIGJlIHBhdXNl
ZCBvciBwbGF5ZWQKZ2xvYmFsbHkgYW5kIGluZGl2aWR1YWxseS4KCk5vdGUgdGhlc2UgbmV3IGNv
bnRyb2xzIGFyZSBleHBvc2VkIG9ubHkgdmlhIEludGVybmFscyAoZm9yIHRlc3RpbmcKcHVycG9z
ZXMpIHdpdGggdGhpcyBwYXRjaC4gVGhlcmUgd2lsbCBiZSBmb2xsb3ctdXAgcGF0Y2hlcyB0byBl
eHBvc2UKdGhlc2UgY29udHJvbHMgdmlhIHVzZXIgaW50ZXJmYWNlLgoKUGF0Y2ggYXV0aG9yZWQg
YnkgSm9zaCBIb2ZmbWFuIHdpdGggc2xpZ2h0IG1vZGlmaWNhdGlvbnMgYnkgbWUgKFR5bGVyCldp
bGNvY2spLgoKKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRpb25zLXJlc3VtZS1mcm9t
LWxhc3QtZGlzcGxheWVkLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvYW5pbWF0aW9ucy1yZXN1bWUtZnJvbS1sYXN0LWRpc3BsYXllZC1mcmFtZS5o
dG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1hdGlv
bi10b2dnbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9p
bmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS5odG1s
OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtNC1m
cmFtZXMuZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5p
bWF0aW9uLmdpZjogQWRkZWQuCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWw6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlIGNvbnN0KToK
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c0FuaW1hdGlvbiBjb25zdCk6CihXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRBbGxvd3NBbmltYXRpb24pOgooV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6cmVzZXRBbGxvd3NBbmltYXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6CihXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6
YWxsb3dzQW5pbWF0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkNhY2hlZEltYWdlOjphbGxvd3NBbmlt
YXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
OgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgooV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6OmFsbG93c0FuaW1hdGlvbiBjb25zdCk6CiogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwOgooV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpGcmFtZVZpZXc6OnJlcGFpbnRWaXNp
YmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKToKKiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6CihXZWJDb3Jl
OjpQYWdlOjpzZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQpOgooV2ViQ29yZTo6UGFnZTo6cmVwYWlu
dEFuaW1hdGVkSW1hZ2VzKToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaDoKKFdlYkNvcmU6
OlBhZ2U6OmltYWdlQW5pbWF0aW9uRW5hYmxlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0Jhc2UuY3BwOgooV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRJbWFnZUFuaW1h
dGlvbkNvbnRyb2xFbmFibGVkQ2hhbmdlZCk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
c0Jhc2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6Ck5vdyBhbHNv
IGNoZWNrcyBDYWNoZWRJbWFnZU9ic2VydmVyOjphbGxvd3NBbmltYXRpb24uCihXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Y2FuVXNlQXN5bmNEZWNvZGluZ0ZvckxhcmdlSW1hZ2VzIGNvbnN0KToKKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6CiogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKFdlYkNvcmU6OkltYWdlOjphbGxv
d3NBbmltYXRpb24gY29uc3QpOgooV2ViQ29yZTo6SW1hZ2U6OnNldEFsbG93c0FuaW1hdGlvbik6
CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oOgooV2Vi
Q29yZTo6SW1hZ2VPYnNlcnZlcjo6YWxsb3dzQW5pbWF0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjphbGxvd3NBbmltYXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KFdlYkNvcmU6OlJlbmRlckltYWdlOjpoYXNBbmltYXRlZEltYWdlIGNvbnN0KToKKFdlYkNvcmU6
OlJlbmRlckltYWdlOjphbGxvd3NBbmltYXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcDoKKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJZk5l
ZWRlZCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnNldElt
YWdlQW5pbWF0aW9uRW5hYmxlZCk6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc3VtZUltYWdlQW5p
bWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6cGF1c2VJbWFnZUFuaW1hdGlvbik6CiogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGw6Ci0tLQogLi4uL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwg
ICAgICAgICAgIHwgIDEzICsrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcCAgICAgIHwgIDI2ICsrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmggICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwICAgfCAgMjIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2VDbGllbnQuaCAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwICAg
ICAgICAgICAgIHwgIDE2ICsrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggICAg
ICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAg
ICAgICAgICAgfCAgMTQgKysrKwogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAg
ICAgICAgICAgIHwgICA1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAg
ICAgICAgICAgfCAgIDYgKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmggICAg
ICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgg
ICAgICB8ICAgNSArKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZl
ci5oIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCAg
ICB8ICAgNSArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCAgICAg
IHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8
ICAxNCArKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAgICAg
fCAgIDMgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAgICAgIHwg
IDIxICsrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAgICAgICAg
fCAgIDEgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgIHwg
IDE4ICsrKysKIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8
ICAgMyArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAg
IDMgKwogLi4udW1lLWZyb20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUtZXhwZWN0ZWQudHh0IHwgIDE4
ICsrKysKIC4uLmlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUuaHRtbCB8ICA3
OCArKysrKysrKysrKysrKysrKysKIC4uLi9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUtZXhw
ZWN0ZWQudHh0ICB8ICAxMyArKysKIC4uLi9pbWFnZXMvaW5kaXZpZHVhbC1hbmltYXRpb24tdG9n
Z2xlLmh0bWwgICB8ICAzNCArKysrKysrKwogLi4uL3BhZ2Utd2lkZS1hbmltYXRpb24tdG9nZ2xl
LWV4cGVjdGVkLnR4dCAgIHwgIDEyICsrKwogLi4uL2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9u
LXRvZ2dsZS5odG1sICAgIHwgIDI5ICsrKysrKysKIC4uLi9pbWFnZXMvcmVzb3VyY2VzL2FuaW1h
dGVkLTQtZnJhbWVzLmdpZiAgICB8IEJpbiAwIC0+IDIwOSBieXRlcwogLi4uL2Zhc3QvaW1hZ2Vz
L3Jlc291cmNlcy9hbmltYXRpb24uZ2lmICAgICAgIHwgQmluIDAgLT4gOTAxIGJ5dGVzCiAzMiBm
aWxlcyBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRpb25zLXJlc3VtZS1mcm9t
LWxhc3QtZGlzcGxheWVkLWZyYW1lLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNwbGF5
ZWQtZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2luZGl2aWR1YWwtYW5pbWF0aW9uLXRvZ2dsZS1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUu
aHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2Utd2lk
ZS1hbmltYXRpb24tdG9nZ2xlLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2Utd2lkZS1hbmltYXRpb24tdG9nZ2xlLmh0bWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQt
NC1mcmFtZXMuZ2lmCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
cmVzb3VyY2VzL2FuaW1hdGlvbi5naWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4
IGMzNjIxMDgyYjU0Yi4uZjgzMWQ4ZmQ2NjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bApAQCAtNzcxLDYgKzc3MSwxOSBAQCBIaWdobGlnaHRBUElFbmFibGVkOgogICAgIFdlYktpdDoK
ICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0ltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQ6Cisg
IHR5cGU6IGJvb2wKKyAgd2ViY29yZU9uQ2hhbmdlOiBzZXRJbWFnZUFuaW1hdGlvbkNvbnRyb2xF
bmFibGVkQ2hhbmdlZAorICBodW1hblJlYWRhYmxlTmFtZTogIkltYWdlIEFuaW1hdGlvbiBDb250
cm9sIEVuYWJsZWQiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkNvbnRyb2wgaW1hZ2Ug
YW5pbWF0aW9ucy4iCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBk
ZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2Vi
Q29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisKIEltYWdlQml0bWFwRW5hYmxlZDoKICAgdHlw
ZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIkltYWdlQml0bWFwIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggYWI2NzM2ODMwOGI5Li41OTFlYTQ2ZTIy
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNzY2LDYg
Kzc2NiwzMiBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c09yaWVudGF0aW9uT3ZlcnJp
ZGUoKSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPnNvdXJjZVVSTCgpLnByb3Rv
Y29sSXNEYXRhKCkgfHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1NhbWVPcmlnaW4oKTsKIH0KIAorSW1h
Z2UqIEhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogY2Fj
aGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICByZXR1cm4gY2FjaGVkSW1h
Z2UtPmltYWdlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgSFRNTEltYWdlRWxl
bWVudDo6YWxsb3dzQW5pbWF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2UgPSB0
aGlzLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmFsbG93c0FuaW1hdGlvbigpLnZh
bHVlX29yKGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPmltYWdlQW5pbWF0
aW9uRW5hYmxlZCgpIDogZmFsc2UpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjpzZXRBbGxvd3NBbmltYXRpb24oYm9vbCBhbGxvd3NBbmltYXRpb24pCit7
CisgICAgaWYgKGF1dG8qIGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGlt
YWdlLT5zZXRBbGxvd3NBbmltYXRpb24oYWxsb3dzQW5pbWF0aW9uKTsKK30KKwordm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjpyZXNldEFsbG93c0FuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8qIGlt
YWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5zZXRBbGxvd3NBbmlt
YXRpb24oc3RkOjpudWxsb3B0KTsKK30KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QXR0YWNobWVudEVsZW1lbnQoUmVmPEhUTUxB
dHRhY2htZW50RWxlbWVudD4mJiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAppbmRleCBmZGRjMzIwZWQ1MTUuLjhhNTJmNmI4ZWUyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTE1NSw2ICsxNTUsMTAgQEAgcHVibGljOgog
CiAgICAgYm9vbCBhbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29uc3Q7CiAKKyAgICBib29s
IGFsbG93c0FuaW1hdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxs
b3dzQW5pbWF0aW9uKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBbGxvd3NB
bmltYXRpb24oKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwogCkBA
IC0yMzcsNiArMjQxLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wZW5kaW5nQ2xvbmVkQXR0
YWNobWVudElEOwogI2VuZGlmCiAKKyAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKKwogICAgIGZy
aWVuZCBjbGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4YjE2YzAwMTU2YTguLmJkOTlmMjlmMTJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00
NDcsNiArNDQ3LDE1IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnCiAgICAgICAgIGNhY2hlZElt
YWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShpbWFnZSk7CiB9CiAKK2Jvb2wgQ2FjaGVkSW1h
Z2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmFsbG93c0FuaW1hdGlvbihjb25zdCBJbWFnZSYgaW1h
Z2UpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMp
IHsKKyAgICAgICAgaWYgKGNhY2hlZEltYWdlLT5hbGxvd3NBbmltYXRpb24oaW1hZ2UpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogaW5s
aW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFnZSkK
QEAgLTcwMCw2ICs3MDksMTkgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmIGltYWdlKQogICAgICAgICBjbGllbnQtPnNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlRm9ySW1hZ2UoKnRoaXMpOwogfQogCitib29sIENhY2hlZEltYWdlOjphbGxvd3NB
bmltYXRpb24oY29uc3QgSW1hZ2UmIGltYWdlKSBjb25zdAoreworICAgIGlmICgmaW1hZ2UgIT0g
bV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IHdhbGtlcigqdGhpcyk7CisgICAgd2hpbGUgKGF1
dG8qIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpIHsKKyAgICAgICAgaWYgKCFjbGllbnQtPmFsbG93
c0FuaW1hdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFnZSA9
IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAppbmRleCA0MzhiYjZiYjM4ODkuLmVjYTdkNGJmMzY3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTk5LDYgKzk5LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgY2FuU2tpcFJldmFsaWRhdGlvbihjb25zdCBDYWNoZWRSZXNvdXJjZUxv
YWRlciYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgYm9vbCBp
c1Zpc2libGVJblZpZXdwb3J0KGNvbnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgYm9vbCBhbGxv
d3NBbmltYXRpb24oY29uc3QgSW1hZ2UmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyKCk7CkBAIC0xNTksNiArMTYwLDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lk
IHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKKyAgICAgICAg
Ym9vbCBhbGxvd3NBbmltYXRpb24oY29uc3QgSW1hZ2UmKSBjb25zdCBmaW5hbDsKKwogICAgICAg
ICBIYXNoU2V0PENhY2hlZEltYWdlKj4gbV9jYWNoZWRJbWFnZXM7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAppbmRleCAyODY4
OTY5ZGIzN2IuLjMyYzRhZjc1NGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVk
SW1hZ2UmKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKaW5kZXggNWRmNDIxZDBlZTNhLi41M2RlN2FjZDhlYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTI3NTAsNiArMjc1MCwxNSBAQCB2b2lkIEZyYW1lVmll
dzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCkKICAgICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVk
ZWQodmlzaWJsZVJlY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFn
ZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit7CisgICAgaWYgKHZpc2li
bGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHJlbmRl
clZpZXcgPSBmcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICByZW5kZXJWaWV3LT5y
ZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJlY3QpOworfQorCiB2b2lkIEZy
YW1lVmlldzo6dXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRl
KGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogewogICAgIGlmIChmcmFtZSgpLmlzTWFpbkZy
YW1lKCkpCkBAIC0yNzg1LDYgKzI3OTQsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2li
bGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQogICAgIH0pOwogfQogCit2b2lk
IEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFt
ZXMoKQoreworICAgIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoW10gKEZyYW1lVmll
dyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFt
ZVZpZXcucmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QpOworICAgIH0p
OworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGlu
ZygpCiB7CiAgICAgLy8gSWYgd2UncmUgc2Nyb2xsaW5nIGFzIGEgcmVzdWx0IG9mIHVwZGF0aW5n
IHRoZSB2aWV3IHNpemUgYWZ0ZXIgbGF5b3V0LCB3ZSdsbCB1cGRhdGUgd2lkZ2V0cyBhbmQgbGF5
ZXIgcG9zaXRpb25zIHNvb24gYW55d2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZGJl
MGUxMzY1MmJlLi40Y2YxODc2YTlkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzIx
LDYgKzMyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlld3BvcnRDb250ZW50c0NoYW5nZWQo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJ
bmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRp
b25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiAKICAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CkBA
IC03NzIsNiArNzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwbHlSZWN1cnNpdmVseVdp
dGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBj
b25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9pZCByZXN1bWVWaXNpYmxlSW1h
Z2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHJlcGFp
bnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKICAg
ICB2b2lkIHVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc0FuZFRpbWVyc1Rocm90dGxpbmdTdGF0ZShj
b25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
anVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2YzVjZGZi
MDkyMWMuLmVlMThlMmVmOGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTQ1LDYgKzE5NDUs
MTQgQEAgdm9pZCBQYWdlOjpzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxpbmdNb2Rl
IG1vZGUpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnNldFJl
c291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKCp0aGlzLCBtX2xvYWRTY2hlZHVsaW5nTW9kZSk7CiB9
CiAKK3ZvaWQgUGFnZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1faW1hZ2VBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsKKyAgICByZXBhaW50
QW5pbWF0ZWRJbWFnZXMoKTsKK30KKwogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmltYXRp
b25zKCkKIHsKICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7CkBAIC00
MDExLDQgKzQwMTksMTAgQEAgdm9pZCBQYWdlOjpmb3JjZVJlcGFpbnRBbGxGcmFtZXMoKQogICAg
IH0KIH0KIAordm9pZCBQYWdlOjpyZXBhaW50QW5pbWF0ZWRJbWFnZXMoKQoreworICAgIGlmIChh
dXRvKiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpKQorICAgICAgICB2aWV3LT5yZXBhaW50Vmlz
aWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGU3MDc3YjgzZGRlYy4uMmJlODk2OTExZGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtNjU0LDYgKzY1NCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwogICAgIGJvb2wgc2NyaXB0
ZWRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlv
bnNTdXNwZW5kZWQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VBbmltYXRp
b25FbmFibGVkKGJvb2wpOworICAgIGJvb2wgaW1hZ2VBbmltYXRpb25FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQ7IH0KKwogICAgIHZvaWQgdXNlclN0eWxl
U2hlZXRMb2NhdGlvbkNoYW5nZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIHVzZXJTdHlsZVNoZWV0
KCkgY29uc3Q7CiAKQEAgLTY5Myw2ICs2OTYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRB
bmltYXRlZEltYWdlcygpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVt
ZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApAQCAtMTE0MCw2ICsxMTQ0LDcgQEAgcHJpdmF0ZToK
ICAgICBKU0M6OkRlYnVnZ2VyKiBtX2RlYnVnZ2VyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBt
X2NhblN0YXJ0TWVkaWEgeyB0cnVlIH07CisgICAgYm9vbCBtX2ltYWdlQW5pbWF0aW9uRW5hYmxl
ZCB7IHRydWUgfTsKIAogICAgIFRpbWVyVGhyb3R0bGluZ1N0YXRlIG1fdGltZXJUaHJvdHRsaW5n
U3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlzYWJsZWQgfTsKICAgICBNb25vdG9uaWNU
aW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0Q2hhbmdlZFRpbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzQmFzZS5jcHAKaW5kZXggMjU4ZmU4MzI5NDYyLi45MGRhOTBiMzMyYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTQ4NCw0ICs0ODQsMTAgQEAgdm9pZCBT
ZXR0aW5nc0Jhc2U6OnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZUNoYW5nZWQoKQogI2VuZGlm
CiB9CiAKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZUFuaW1hdGlvbkNvbnRyb2xFbmFibGVk
Q2hhbmdlZCgpCit7CisgICAgaWYgKG1fcGFnZSAmJiAhbV9wYWdlLT5zZXR0aW5ncygpLmltYWdl
QW5pbWF0aW9uQ29udHJvbEVuYWJsZWQoKSkKKyAgICAgICAgbV9wYWdlLT5zZXRJbWFnZUFuaW1h
dGlvbkVuYWJsZWQodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzQmFzZS5oCmluZGV4IDFiMzliMTM2OWMwOS4uOTZkNWE4OGM0YmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBwcm90ZWN0ZWQ6
CiAjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCiAgICAgdm9pZCBsYXllckJhc2Vk
U1ZHRW5naW5lRW5hYmxlZENoYW5nZWQoKTsKICNlbmRpZgorICAgIHZvaWQgc2V0SW1hZ2VBbmlt
YXRpb25Db250cm9sRW5hYmxlZENoYW5nZWQoKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4
IGE4N2FjNjkwYjJlYy4uYjllMWQxMzQ3NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LAogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcmVwZXRpdGlvbkNvdW50KCkgJiYgIW1fYW5pbWF0aW9uRmluaXNo
ZWQgJiYgaW1hZ2VPYnNlcnZlcigpOworICAgIHJldHVybiByZXBldGl0aW9uQ291bnQoKSAmJiAh
bV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCkgJiYgaW1hZ2VPYnNlcnZlcigp
LT5hbGxvd3NBbmltYXRpb24oKnRoaXMpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpjYW5Bbmlt
YXRlKCkgY29uc3QKQEAgLTM4NCw3ICszODQsNyBAQCBib29sIEJpdG1hcEltYWdlOjpjYW5Bbmlt
YXRlKCkgY29uc3QKIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuVXNlQXN5bmNEZWNvZGluZ0Zvckxh
cmdlSW1hZ2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWNhbkFuaW1hdGUoKSAmJiBtX3NvdXJj
ZS0+Y2FuVXNlQXN5bmNEZWNvZGluZygpOworICAgIHJldHVybiAhc2hvdWxkQW5pbWF0ZSgpICYm
IG1fc291cmNlLT5jYW5Vc2VBc3luY0RlY29kaW5nKCkgJiYgIShmcmFtZUNvdW50KCkgPiAxKTsK
IH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6c2hvdWxkVXNlQXN5bmNEZWNvZGluZ0ZvckFuaW1hdGVk
SW1hZ2VzKCkgY29uc3QKQEAgLTYzNiw2ICs2MzYsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbWFn
ZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgIExPRyhJbWFnZXMs
ICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW01vcmUgZGF0YSBtYWtlcyBmcmFtZUNv
dW50KCkgPiAxXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSAmJiAhaW1hZ2VP
YnNlcnZlcigpLT5hbGxvd3NBbmltYXRpb24oKnRoaXMpKQorICAgICAgICByZXR1cm47CisKICAg
ICBBU1NFUlQoaW5kZXggPT0gbV9jdXJyZW50RnJhbWUgJiYgIW1fY3VycmVudEZyYW1lKTsKICAg
ICBpZiAobV9zb3VyY2UtPmlzQXN5bmNEZWNvZGluZ1F1ZXVlSWRsZSgpKQogICAgICAgICBtX3Nv
dXJjZS0+c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKaW5kZXggODM4MjM3MmQ1MmFiLi4xNjJiNTA4ZTJkMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTQ2LDYgKzE0Niw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKSB7fQogICAgIHZpcnR1YWwg
Ym9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBhbmlt
YXRpb25QZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGFydFRpbWVyICYmIG1f
YW5pbWF0aW9uU3RhcnRUaW1lci0+aXNBY3RpdmUoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gYWxsb3dzQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbmltYXRpb247IH0K
KyAgICB2b2lkIHNldEFsbG93c0FuaW1hdGlvbihzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93c0Fu
aW1hdGlvbikgeyBtX2FsbG93c0FuaW1hdGlvbiA9IGFsbG93c0FuaW1hdGlvbjsgfQogCiAgICAg
Ly8gVHlwaWNhbGx5IHRoZSBDYWNoZWRJbWFnZSB0aGF0IG93bnMgdXMuCiAgICAgSW1hZ2VPYnNl
cnZlciogaW1hZ2VPYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VPYnNlcnZlcjsgfQpA
QCAtMjExLDYgKzIxMyw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2Jz
ZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7
CisKKyAgICAvLyBBIHZhbHVlIG9mIHRydWUgb3IgZmFsc2Ugd2lsbCBvdmVycmlkZSB0aGUgZGVm
YXVsdCBQYWdlOjppbWFnZUFuaW1hdGlvbkVuYWJsZWQgc3RhdGUuCisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBtX2FsbG93c0FuaW1hdGlvbiB7IHN0ZDo6bnVsbG9wdCB9OwogfTsKIAogV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKaW5k
ZXggMDQyNzBjODNkMzM3Li45NjM1NzkzZWUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1h
Z2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERl
Y29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QgPSBudWxscHRyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKGNvbnN0IEltYWdlJikgPSAwOworCisgICAgdmlydHVhbCBib29sIGFsbG93c0FuaW1hdGlv
bihjb25zdCBJbWFnZSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA1ZDUzNDhmYjJjM2QuLjI2
Y2FkYTJlYmI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cApAQCAtMTQ0OSw2ICsxNDQ5LDExIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1lCiAgICAgZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLm5vdGlmeUZpbmlzaGVkKHJlc291cmNlKTsK
IH0KIAorYm9vbCBSZW5kZXJFbGVtZW50OjphbGxvd3NBbmltYXRpb24oKSBjb25zdAoreworICAg
IHJldHVybiBwYWdlKCkuaW1hZ2VBbmltYXRpb25FbmFibGVkKCk7Cit9CisKIHZvaWQgUmVuZGVy
RWxlbWVudDo6ZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmIGNhY2hlZElt
YWdlKQogewogICAgIGlmIChoYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnMoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDJmZDdjNmQ1MTRlMy4uZmMxMjgxOGNj
NGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTIyNiw2
ICsyMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRDb250aWJ1dGVUb1Zpc3VhbGx5Tm9uRW1w
dHlQaXhlbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDb250cmlidXRlVG9WaXN1YWxseU5v
bkVtcHR5UGl4ZWxDb3VudDsgfQogICAgIHZvaWQgc2V0RGlkQ29udGlidXRlVG9WaXN1YWxseU5v
bkVtcHR5UGl4ZWxDb3VudCgpIHsgbV9kaWRDb250cmlidXRlVG9WaXN1YWxseU5vbkVtcHR5UGl4
ZWxDb3VudCA9IHRydWU7IH0KIAorICAgIGJvb2wgYWxsb3dzQW5pbWF0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdlJik7CiAgICAgYm9vbCBoYXNQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2hhc1BhdXNlZEltYWdlQW5p
bWF0aW9uczsgfQogICAgIHZvaWQgc2V0SGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zKGJvb2wgYikg
eyBtX2hhc1BhdXNlZEltYWdlQW5pbWF0aW9ucyA9IGI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGRiZmVmOGU0N2ZjYi4uMWQxNDczNWY3M2FlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ0Miw2ICs0NDIsMTMg
QEAgYm9vbCBSZW5kZXJJbWFnZTo6aGFzTm9uQml0bWFwSW1hZ2UoKSBjb25zdAogICAgIHJldHVy
biBpbWFnZSAmJiAhaXM8Qml0bWFwSW1hZ2U+KGltYWdlKTsKIH0KIAorYm9vbCBSZW5kZXJJbWFn
ZTo6aGFzQW5pbWF0ZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gY2Fj
aGVkSW1hZ2UoKSA/IGNhY2hlZEltYWdlKCktPmltYWdlKCkgOiBudWxscHRyKQorICAgICAgICBy
ZXR1cm4gaW1hZ2UtPmlzQW5pbWF0ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
UmVuZGVySW1hZ2U6OnBhaW50SW5jb21wbGV0ZUltYWdlT3V0bGluZShQYWludEluZm8mIHBhaW50
SW5mbywgTGF5b3V0UG9pbnQgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgYm9yZGVyV2lkdGgpIGNv
bnN0CiB7CiAgICAgYXV0byBjb250ZW50U2l6ZSA9IHRoaXMtPmNvbnRlbnRTaXplKCk7CkBAIC05
MDAsNCArOTA3LDExIEBAIFJlbmRlckJveCogUmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJv
eCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVuZGVySW1hZ2U6OmFs
bG93c0FuaW1hdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGltYWdlRWxlbWVudCA9IGR5
bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKQorICAgICAgICByZXR1
cm4gaW1hZ2VFbGVtZW50LT5hbGxvd3NBbmltYXRpb24oKTsKKyAgICByZXR1cm4gUmVuZGVyUmVw
bGFjZWQ6OmFsbG93c0FuaW1hdGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDQ0MjlkMzA3ZjdiMC4uMmNi
N2JmZmM2NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODEs
NiArODEsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gaW1hZ2VSZXNvdXJjZSgpLmltYWdlKCktPmFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbigpOyB9CiAKKyAgICBib29sIGhhc0FuaW1hdGVkSW1hZ2UoKSBjb25zdDsKKyAg
ICBib29sIGFsbG93c0FuaW1hdGlvbigpIGNvbnN0IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCmluZGV4IDg0MTdjOTg2NTZlYS4uNzBjYjZiNTQwNWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04NzQsNiArODc0LDI3IEBAIHZv
aWQgUmVuZGVyVmlldzo6cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3Qg
SW50UmVjdCYgdmlzaWJsZVJlY3QpCiAgICAgICAgIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZElt
YWdlQW5pbWF0aW9ucygqcGFpci5maXJzdCwgKnBhaXIuc2Vjb25kKTsKIH0KIAordm9pZCBSZW5k
ZXJWaWV3OjpyZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlz
aWJsZVJlY3QpCit7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
UmVuZGVyRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmICghZWxlbWVudC5pc1Zpc2libGVJ
bkRvY3VtZW50UmVjdCh2aXNpYmxlUmVjdCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAvLyBGSVhNRTogQ2hlY2sgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSBjYW4g
YW5pbWF0ZSBiZWZvcmUgcmVwYWludGluZy4KKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGUoKS5o
YXNCYWNrZ3JvdW5kSW1hZ2UoKSkgeworICAgICAgICAgICAgZWxlbWVudC5yZXBhaW50KCk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvKiByZW5k
ZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4oZWxlbWVudCkpIHsKKyAgICAg
ICAgICAgIGlmIChyZW5kZXJJbWFnZS0+aGFzQW5pbWF0ZWRJbWFnZSgpKSB7CisgICAgICAgICAg
ICAgICAgZWxlbWVudC5yZXBhaW50KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdp
b25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcp
CiB7CiAgICAgaWYgKCF2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5k
ZXggMDhiM2E3YTJkYjIwLi5kYzFhNWQyNTI3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
Rm9yVmlzaWJsZUluVmlld3BvcnRDYWxsYmFjayhSZW5kZXJFbGVtZW50Jik7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyRm9yVmlzaWJsZUluVmlld3BvcnRDYWxsYmFjayhSZW5kZXJFbGVtZW50Jik7CiAg
ICAgdm9pZCByZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0
JiB2aXNpYmxlUmVjdCk7CisgICAgdm9pZCByZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIHZvaWQgYWRkUmVuZGVyZXJXaXRoUGF1
c2VkSW1hZ2VBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmLCBDYWNoZWRJbWFnZSYpOwogICAgIHZv
aWQgcmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKFJlbmRlckVsZW1lbnQm
KTsKICAgICB2b2lkIHJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5k
ZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCA4ZDBlNzZlMWZjNTYuLmNlNWQ0MjcwZTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMTA0OSw2ICsxMDQ5LDI0IEBAIGJvb2wgSW50ZXJuYWxzOjppc0lt
YWdlQW5pbWF0aW5nKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdl
ICYmIChpbWFnZS0+aXNBbmltYXRpbmcoKSB8fCBpbWFnZS0+YW5pbWF0aW9uUGVuZGluZygpKTsK
IH0KIAordm9pZCBJbnRlcm5hbHM6OnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKSA/IGNvbnRleHRE
b2N1bWVudCgpLT5wYWdlKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChwYWdlLT5zZXR0aW5n
cygpLmltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQoKSkKKyAgICAgICAgICAgIHBhZ2UtPnNl
dEltYWdlQW5pbWF0aW9uRW5hYmxlZChlbmFibGVkKTsKKyAgICB9Cit9CisKK3ZvaWQgSW50ZXJu
YWxzOjpyZXN1bWVJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQorewor
ICAgIGVsZW1lbnQuc2V0QWxsb3dzQW5pbWF0aW9uKHRydWUpOworfQorCit2b2lkIEludGVybmFs
czo6cGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQoreworICAg
IGVsZW1lbnQuc2V0QWxsb3dzQW5pbWF0aW9uKGZhbHNlKTsKK30KKwogdW5zaWduZWQgSW50ZXJu
YWxzOjppbWFnZVBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZyhIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBlbGVtZW50LnBlbmRpbmdEZWNvZGVQcm9t
aXNlc0NvdW50Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZjM4YjY3YzU0Y2JjLi4yMzY4MGNhNmU1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMjIxLDYgKzIyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdlRnJhbWVEZWNv
ZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBkdXJhdGlvbik7CiAgICAgdm9p
ZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBib29sIGlzSW1h
Z2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCYpOworICAgIHZvaWQgc2V0SW1hZ2VBbmltYXRp
b25FbmFibGVkKGJvb2wpOworICAgIHZvaWQgcmVzdW1lSW1hZ2VBbmltYXRpb24oSFRNTEltYWdl
RWxlbWVudCYpOworICAgIHZvaWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50
Jik7CiAgICAgdW5zaWduZWQgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3Rp
bmcoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3lu
Y0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYsIGJvb2wgZW5hYmxlZCk7
CiAgICAgdW5zaWduZWQgaW1hZ2VEZWNvZGVDb3VudChIVE1MSW1hZ2VFbGVtZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjcxNjQ5NWY1MDZhLi4zYzViMDk4MzZk
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1NCw2ICs1NTQsOSBA
QCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAg
ICAgdW5kZWZpbmVkIHNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKEhUTUxJbWFnZUVsZW1l
bnQgZWxlbWVudCwgdW5yZXN0cmljdGVkIGZsb2F0IGR1cmF0aW9uKTsKICAgICB1bmRlZmluZWQg
cmVzZXRJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xl
YW4gaXNJbWFnZUFuaW1hdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOworICAgIHVuZGVm
aW5lZCBzZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKyAgICB1bmRl
ZmluZWQgcmVzdW1lSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAg
ICB1bmRlZmluZWQgcGF1c2VJbWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQp
OwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRl
c3RpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICB1bmRlZmluZWQgc2V0Q2xlYXJE
ZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCBl
bGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwogICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VEZWNvZGVD
b3VudChIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvYW5pbWF0aW9ucy1yZXN1bWUtZnJvbS1sYXN0LWRpc3BsYXllZC1mcmFtZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRpb25zLXJlc3VtZS1m
cm9tLWxhc3QtZGlzcGxheWVkLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2MGI1YmIyMjkwYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNwbGF5
ZWQtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyByZXN1bWVkIGFuaW1hdGlvbnMgc3RhcnQgYXQgdGhlIGZyYW1lIHRoZXkgd2VyZSBwYXVzZWQg
YXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbWFnZSB3YXMgbG9hZGVkIHN1
Y2Nlc3NmdWxseS4KK0ltYWdlIGZyYW1lIDAgd2FzIGRpc3BsYXllZC4KK1BBU1MgaW50ZXJuYWxz
LmltYWdlRnJhbWVJbmRleChpbWFnZSkgPT09IGN1cnJlbnRseURpc3BsYXllZEZyYW1lSW5kZXgg
KyAxIGlzIHRydWUKK0ltYWdlIGZyYW1lIDEgd2FzIGRpc3BsYXllZC4KK1BBU1MgaW50ZXJuYWxz
LmltYWdlRnJhbWVJbmRleChpbWFnZSkgPT09IGN1cnJlbnRseURpc3BsYXllZEZyYW1lSW5kZXgg
KyAxIGlzIHRydWUKK0ltYWdlIGZyYW1lIDIgd2FzIGRpc3BsYXllZC4KK1BBU1MgaW50ZXJuYWxz
LmltYWdlRnJhbWVJbmRleChpbWFnZSkgPT09IGN1cnJlbnRseURpc3BsYXllZEZyYW1lSW5kZXgg
KyAxIGlzIHRydWUKK1RoZSBhbmltYXRpb24gd2FzIGxvYWRlZCBhbmQgcGF1c2VkL3Jlc3VtZWQg
Y29ycmVjdGx5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0aW9ucy1y
ZXN1bWUtZnJvbS1sYXN0LWRpc3BsYXllZC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvYW5pbWF0aW9ucy1yZXN1bWUtZnJvbS1sYXN0LWRpc3BsYXllZC1mcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDc4YzliN2YzZmY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0aW9ucy1yZXN1bWUt
ZnJvbS1sYXN0LWRpc3BsYXllZC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgaWQ9ImltZyIgc3JjPSIi
PgorPCEtLSBUbyBtYWtlIHRoaXMgdGVzdCBhYmxlIHRvIHBhc3MgaW4gV0sxLCB1c2UgdGhpcyA8
ZGl2IHN0eWxlPSIuLi4iPiB0byBzZXRBdXRvZGlzcGxheTpZRVMgKHJkYXI6Ly80MjYyNTY1NyBo
YXMgbW9yZSBkZXRhaWxzKS4gLS0+Cis8ZGl2IHN0eWxlPSJ3aWxsLWNoYW5nZTogdHJhbnNmb3Jt
Ij48L2Rpdj4KKworPHNjcmlwdD4KKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaW1nIik7CisKKyAgICB2YXIgY3VycmVudGx5RGlzcGxheWVkRnJhbWVJbmRleDsKKyAg
ICBmdW5jdGlvbiBkcmF3TmV4dEZyYW1lKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0Owor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgICAgICAgICBjdXJyZW50bHlE
aXNwbGF5ZWRGcmFtZUluZGV4ID0gaW50ZXJuYWxzLmltYWdlRnJhbWVJbmRleChpbWFnZSk7CisK
KyAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFk
eSIsIGZ1bmN0aW9uIGxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKGBJbWFnZSBm
cmFtZSAke2N1cnJlbnRseURpc3BsYXllZEZyYW1lSW5kZXh9IHdhcyBkaXNwbGF5ZWQuYCk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0SW1hZ2VGcmFt
ZVJlYWR5IiwgbGlzdGVuZXIsIHRydWUpOworICAgICAgICAgICAgICAgIGludGVybmFscy5wYXVz
ZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKGN1
cnJlbnRseURpc3BsYXllZEZyYW1lSW5kZXgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmVUcnVlKCJpbnRlcm5hbHMuaW1hZ2VGcmFtZUluZGV4KGltYWdlKSA9PT0gY3VycmVudGx5
RGlzcGxheWVkRnJhbWVJbmRleCArIDEiKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxz
LnJlc3VtZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgICAgIH0sIHRydWUpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3SW1hZ2UoZnJhbWVDb3VudCkgewor
ICAgICAgICBpbnRlcm5hbHMucmVzdW1lSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICBs
ZXQgcHJvbWlzZSA9IGRyYXdOZXh0RnJhbWUoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkg
PCBmcmFtZUNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBkcmF3TmV4dEZyYW1lKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBsb2FkQW5kRHJhd0ltYWdlKHNyYywgZnJhbWVDb3VudCkgeworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIGltYWdlLm9ubG9h
ZCA9ICgoKSA9PiB7CisgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIHdhcyBsb2FkZWQgc3Vj
Y2Vzc2Z1bGx5LiIpOworICAgICAgICAgICAgICAgIGRyYXdJbWFnZShmcmFtZUNvdW50KS50aGVu
KHJlc29sdmUpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpbWFnZS5zcmMgPSBzcmM7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewor
ICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRXZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkKHRydWUpOwor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFn
ZUFuaW1hdGlvbkNvbnRyb2xFbmFibGVkKHRydWUpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dEltYWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHJlc3VtZWQgYW5pbWF0aW9ucyBzdGFydCBhdCB0
aGUgZnJhbWUgdGhleSB3ZXJlIHBhdXNlZCBhdC4iKTsKKworICAgICAgICBsb2FkQW5kRHJhd0lt
YWdlKCJyZXNvdXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMuZ2lmIiwgMykudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGhlIGFuaW1hdGlvbiB3YXMgbG9hZGVkIGFuZCBwYXVzZWQvcmVz
dW1lZCBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0SW1hZ2VBbmltYXRp
b25FbmFibGVkKHRydWUpOworICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUo
KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9KSgpOwor
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2luZGl2aWR1YWwtYW5pbWF0aW9uLXRvZ2dsZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWY2NWZmYTQwNDll
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW5kaXZpZHVhbC1h
bmltYXRpb24tdG9nZ2xlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IHdoZW4gaW1hZ2UgYW5pbWF0aW9uIGlzIGRpc2FibGVkIHBhZ2Utd2lkZSwg
aW5kaXZpZHVhbCBpbWFnZSBhbmltYXRpb25zIGNhbiBzdGlsbCBiZSB0b2dnbGVkIG9uIGFuZCBv
ZmYgaW5kaXZpZHVhbGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBp
bnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIGludGVy
bmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgdHJ1ZQorUEFTUyBpbnRlcm5hbHMu
aXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2luZGl2aWR1YWwtYW5pbWF0aW9uLXRvZ2dsZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzViM2YxOGFiMjAxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW5kaXZpZHVhbC1hbmltYXRpb24tdG9n
Z2xlLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmltYXRpb24uZ2lmIiBpZD0idGVz
dEltYWdlIiAvPgorPCEtLSBUbyBtYWtlIHRoaXMgdGVzdCBhYmxlIHRvIHBhc3MgaW4gV0sxLCB1
c2UgdGhpcyA8ZGl2IHN0eWxlPSIuLi4iPiB0byBzZXRBdXRvZGlzcGxheTpZRVMgKHJkYXI6Ly80
MjYyNTY1NyBoYXMgbW9yZSBkZXRhaWxzKS4gLS0+Cis8ZGl2IHN0eWxlPSJ3aWxsLWNoYW5nZTog
dHJhbnNmb3JtIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGVuc3VyZXMgdGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCBwYWdlLXdpZGUs
IGluZGl2aWR1YWwgaW1hZ2UgYW5pbWF0aW9ucyBjYW4gc3RpbGwgYmUgdG9nZ2xlZCBvbiBhbmQg
b2ZmIGluZGl2aWR1YWxseS5cblxuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQodHJ1ZSk7
CisKKyAgICBpbnRlcm5hbHMuc2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICB2
YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEltYWdlIik7CisgICAgd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50
ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgImZhbHNlIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpbnRlcm5hbHMucmVzdW1lSW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAg
ICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdl
KSIsICJ0cnVlIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnBhdXNl
SW1hZ2VBbmltYXRpb24oaW1hZ2UpOworICAgICAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFs
KCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfTsKKzwvc2NyaXB0PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdl
LXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MWQzYWRlOWU4ZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhbmlt
YXRpb24gcGxheSAvIHBhdXNlIHN0YXRlIGlzIHVwZGF0ZWQgd2hlbiB0aGUgcGFnZS13aWRlICdh
bmltYXRpb25zIGRpc2FibGVkJyBmbGFnIGNoYW5nZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUg
ZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRv
Z2dsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10
b2dnbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc5Yzlm
MGU3OWQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2Ut
d2lkZS1hbmltYXRpb24tdG9nZ2xlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9InJlc291cmNlcy9hbmlt
YXRpb24uZ2lmIiBpZD0iaW1nIiAvPgorPCEtLSBUbyBtYWtlIHRoaXMgdGVzdCBhYmxlIHRvIHBh
c3MgaW4gV0sxLCB1c2UgdGhpcyA8ZGl2IHN0eWxlPSIuLi4iPiB0byBzZXRBdXRvZGlzcGxheTpZ
RVMgKHJkYXI6Ly80MjYyNTY1NyBoYXMgbW9yZSBkZXRhaWxzKS4gLS0+Cis8ZGl2IHN0eWxlPSJ3
aWxsLWNoYW5nZTogdHJhbnNmb3JtIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhbmltYXRpb24gcGxheSAvIHBhdXNlIHN0YXRlIGlz
IHVwZGF0ZWQgd2hlbiB0aGUgcGFnZS13aWRlICdhbmltYXRpb25zIGRpc2FibGVkJyBmbGFnIGNo
YW5nZXMuXG5cbiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRJbWFnZUFuaW1hdGlvbkNvbnRyb2xFbmFibGVkKHRydWUpOworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciKTsKKworICAgIGludGVybmFscy5z
ZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpOworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5pc0ltYWdlQW5p
bWF0aW5nKGltYWdlKSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW50ZXJu
YWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJl
Y29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAidHJ1ZSIsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLTQtZnJhbWVzLmdpZiBi
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjVlNDc3MTQyNmViYTZhYmEzYjE3YzMyMTgwZDI4MzkwNzQzMGNjMQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjA5CnpjbVo/d2JoRUhiNmshbHlfYHR5TXA4KjZFfDh4N2Zo
NkZvMTJEbHBPODg5PH5nbnFJQlJXTEI8ZmFGMW44SkdsSApyYGQ2TlElZkVRZW1Sc0dNQDlwYCRV
S0NTUjE0OUV5MUNlVU0pKVN9cEtpSCslKUxIYG96TCE0PQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGlv
bi5naWYgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0aW9uLmdpZgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZDVlNzE0ZjU3Y2JmYjMyYTQ2ZjQyYzIxN2IyNjMwOGE2OGZkMThlCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MDEKemNtWj93YmhFSGI2a3Jmd198Q3c8a2R9NmFWSjQ2czEq
MEpfMHoqTFlLZXdOMk5VKmJHZlVBKzcwVyV7bzJvISZeCnp1eio1QjJTazlmMj9Le0wxMmN6PSRB
JCQ1bj5tRUZWb3EjV2MoYDNhKj12cisjempYUDg1eXpiVjhvfXg4VVNkMQpCQjRfe3IKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462299</attachid>
            <date>2022-09-12 16:52:47 -0700</date>
            <delta_ts>2022-09-14 01:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-244128-20220912165246.patch</filename>
            <type>text/plain</type>
            <size>37288</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA1MTdmNmNhMjQ5NzZmNjg3YjE5MDk2YWU3YmViNmYxZTcyZjJmM2VkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxMCBTZXAgMjAyMiAxNDowMDoyNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBl
eHBlcmltZW50YWwgZmVhdHVyZSB0byBjb250cm9sIGltYWdlIGFuaW1hdGlvbgogcGxheS9wYXVz
ZSBzdGF0ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ0MTI4CiBy
ZGFyOi8vOTg4ODc2NzcKClJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgoKVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgZW5hYmxlcyBjb250cm9sIG9m
IGltYWdlCmFuaW1hdGlvbiBwbGF5IC8gcGF1c2Ugc3RhdGUuIEFuaW1hdGlvbnMgY2FuIGJlIHBh
dXNlZCBvciBwbGF5ZWQKZ2xvYmFsbHkgYW5kIGluZGl2aWR1YWxseS4KCk5vdGUgdGhlc2UgbmV3
IGNvbnRyb2xzIGFyZSBleHBvc2VkIG9ubHkgdmlhIEludGVybmFscyAoZm9yIHRlc3RpbmcKcHVy
cG9zZXMpIHdpdGggdGhpcyBwYXRjaC4gVGhlcmUgd2lsbCBiZSBmb2xsb3ctdXAgcGF0Y2hlcyB0
byBleHBvc2UKdGhlc2UgY29udHJvbHMgdmlhIHVzZXIgaW50ZXJmYWNlLgoKUGF0Y2ggYXV0aG9y
ZWQgYnkgSm9zaCBIb2ZmbWFuIHdpdGggc2xpZ2h0IG1vZGlmaWNhdGlvbnMgYnkgbWUgKFR5bGVy
CldpbGNvY2spLgoKKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRpb25zLXJlc3VtZS1m
cm9tLWxhc3QtZGlzcGxheWVkLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvYW5pbWF0aW9ucy1yZXN1bWUtZnJvbS1sYXN0LWRpc3BsYXllZC1mcmFt
ZS5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1h
dGlvbi10b2dnbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS5o
dG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQt
NC1mcmFtZXMuZ2lmOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMv
YW5pbWF0aW9uLmdpZjogQWRkZWQuCiogU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWw6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlIGNvbnN0
KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c0FuaW1hdGlvbiBjb25zdCk6CihX
ZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRBbGxvd3NBbmltYXRpb24pOgooV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6cmVzZXRBbGxvd3NBbmltYXRpb24pOgoqIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CihXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6YWxsb3dzQW5pbWF0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkNhY2hlZEltYWdlOjphbGxvd3NB
bmltYXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgoo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6OmFsbG93c0FuaW1hdGlvbiBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwOgooV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXBh
aW50VmlzaWJsZUltYWdlQW5pbWF0aW9ucyk6CihXZWJDb3JlOjpGcmFtZVZpZXc6OnJlcGFpbnRW
aXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKToKKiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6CihXZWJD
b3JlOjpQYWdlOjpzZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQpOgooV2ViQ29yZTo6UGFnZTo6cmVw
YWludEFuaW1hdGVkSW1hZ2VzKToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaDoKKFdlYkNv
cmU6OlBhZ2U6OmltYWdlQW5pbWF0aW9uRW5hYmxlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgooV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRJbWFnZUFu
aW1hdGlvbkNvbnRyb2xFbmFibGVkQ2hhbmdlZCk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHA6CihXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSBjb25zdCk6Ck5vdyBh
bHNvIGNoZWNrcyBDYWNoZWRJbWFnZU9ic2VydmVyOjphbGxvd3NBbmltYXRpb24uCihXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Y2FuVXNlQXN5bmNEZWNvZGluZ0ZvckxhcmdlSW1hZ2VzIGNvbnN0KToK
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6CiogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKFdlYkNvcmU6OkltYWdlOjph
bGxvd3NBbmltYXRpb24gY29uc3QpOgooV2ViQ29yZTo6SW1hZ2U6OnNldEFsbG93c0FuaW1hdGlv
bik6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oOgoo
V2ViQ29yZTo6SW1hZ2VPYnNlcnZlcjo6YWxsb3dzQW5pbWF0aW9uIGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjphbGxvd3NBbmltYXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpoYXNBbmltYXRlZEltYWdlIGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckltYWdlOjphbGxvd3NBbmltYXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcDoKKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRJbWFnZUFuaW1hdGlvbnNJ
Zk5lZWRlZCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHA6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
dEltYWdlQW5pbWF0aW9uRW5hYmxlZCk6CihXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc3VtZUltYWdl
QW5pbWF0aW9uKToKKFdlYkNvcmU6OkludGVybmFsczo6cGF1c2VJbWFnZUFuaW1hdGlvbik6Ciog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaDoKKiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGw6Ci0tLQogLi4uL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwgICAgICAgICAgIHwgIDEzICsrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcCAgICAgIHwgIDI2ICsrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmggICAgICAgIHwgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwICAgfCAgMjIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2VDbGllbnQuaCAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
ICAgICAgICAgICAgIHwgIDE2ICsrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3Lmgg
ICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAg
ICAgICAgICAgICAgfCAgMTQgKysrKwogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggICAgICAg
ICAgICAgICAgICAgIHwgICA1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5j
cHAgICAgICAgICAgfCAgIDYgKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgg
ICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggICAgICB8ICAgNSArKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cCAgICB8ICAgNSArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCAg
ICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAg
ICB8ICAxNCArKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAg
ICAgfCAgIDMgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAgICAg
IHwgIDIxICsrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAgICAg
ICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAg
IHwgIDE4ICsrKysKIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAg
ICB8ICAgMyArCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAg
fCAgIDMgKwogLi4udW1lLWZyb20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUtZXhwZWN0ZWQudHh0IHwg
IDE4ICsrKysKIC4uLmlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUuaHRtbCB8
ICA3OCArKysrKysrKysrKysrKysrKysKIC4uLi9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUt
ZXhwZWN0ZWQudHh0ICB8ICAxMyArKysKIC4uLi9pbWFnZXMvaW5kaXZpZHVhbC1hbmltYXRpb24t
dG9nZ2xlLmh0bWwgICB8ICAzNCArKysrKysrKwogLi4uL3BhZ2Utd2lkZS1hbmltYXRpb24tdG9n
Z2xlLWV4cGVjdGVkLnR4dCAgIHwgIDEyICsrKwogLi4uL2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0
aW9uLXRvZ2dsZS5odG1sICAgIHwgIDI5ICsrKysrKysKIC4uLi9pbWFnZXMvcmVzb3VyY2VzL2Fu
aW1hdGVkLTQtZnJhbWVzLmdpZiAgICB8IEJpbiAwIC0+IDIwOSBieXRlcwogLi4uL2Zhc3QvaW1h
Z2VzL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmICAgICAgIHwgQmluIDAgLT4gOTAxIGJ5dGVzCiAz
MiBmaWxlcyBjaGFuZ2VkLCAzNzkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRpb25zLXJlc3VtZS1m
cm9tLWxhc3QtZGlzcGxheWVkLWZyYW1lLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNw
bGF5ZWQtZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2luZGl2aWR1YWwtYW5pbWF0aW9uLXRvZ2dsZS1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dn
bGUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2Ut
d2lkZS1hbmltYXRpb24tdG9nZ2xlLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2Utd2lkZS1hbmltYXRpb24tdG9nZ2xlLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0
ZWQtNC1mcmFtZXMuZ2lmCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmlu
ZGV4IGZlNWJjNGIzYWRhNS4uMjRiYzM3ZTZkYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbApAQCAtNzgzLDYgKzc4MywxOSBAQCBIaWdobGlnaHRBUElFbmFibGVkOgogICAgIFdlYktp
dDoKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0ltYWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQ6
CisgIHR5cGU6IGJvb2wKKyAgd2ViY29yZU9uQ2hhbmdlOiBzZXRJbWFnZUFuaW1hdGlvbkNvbnRy
b2xFbmFibGVkQ2hhbmdlZAorICBodW1hblJlYWRhYmxlTmFtZTogIkltYWdlIEFuaW1hdGlvbiBD
b250cm9sIEVuYWJsZWQiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkNvbnRyb2wgaW1h
Z2UgYW5pbWF0aW9ucy4iCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAg
ICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAg
V2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisKIEltYWdlQml0bWFwRW5hYmxlZDoKICAg
dHlwZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIkltYWdlQml0bWFwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggOGE5MzAwMzhkYTY4Li4yOTk5YjU5
OTU3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNzY3
LDYgKzc2NywzMiBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmFsbG93c09yaWVudGF0aW9uT3Zl
cnJpZGUoKSBjb25zdAogICAgIHJldHVybiAhaW1hZ2UgfHwgaW1hZ2UtPnNvdXJjZVVSTCgpLnBy
b3RvY29sSXNEYXRhKCkgfHwgY2FjaGVkSW1hZ2UtPmlzQ09SU1NhbWVPcmlnaW4oKTsKIH0KIAor
SW1hZ2UqIEhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byog
Y2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpKQorICAgICAgICByZXR1cm4gY2FjaGVk
SW1hZ2UtPmltYWdlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgSFRNTEltYWdl
RWxlbWVudDo6YWxsb3dzQW5pbWF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogaW1hZ2Ug
PSB0aGlzLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmFsbG93c0FuaW1hdGlvbigp
LnZhbHVlX29yKGRvY3VtZW50KCkucGFnZSgpID8gZG9jdW1lbnQoKS5wYWdlKCktPmltYWdlQW5p
bWF0aW9uRW5hYmxlZCgpIDogZmFsc2UpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBI
VE1MSW1hZ2VFbGVtZW50OjpzZXRBbGxvd3NBbmltYXRpb24oYm9vbCBhbGxvd3NBbmltYXRpb24p
Cit7CisgICAgaWYgKGF1dG8qIGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGltYWdlLT5zZXRBbGxvd3NBbmltYXRpb24oYWxsb3dzQW5pbWF0aW9uKTsKK30KKwordm9pZCBI
VE1MSW1hZ2VFbGVtZW50OjpyZXNldEFsbG93c0FuaW1hdGlvbigpCit7CisgICAgaWYgKGF1dG8q
IGltYWdlID0gdGhpcy0+aW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5zZXRBbGxvd3NB
bmltYXRpb24oc3RkOjpudWxsb3B0KTsKK30KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QXR0YWNobWVudEVsZW1lbnQoUmVmPEhU
TUxBdHRhY2htZW50RWxlbWVudD4mJiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaAppbmRleCBmZGRjMzIwZWQ1MTUuLjhhNTJmNmI4ZWUyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTE1NSw2ICsxNTUsMTAgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhbGxvd3NPcmllbnRhdGlvbk92ZXJyaWRlKCkgY29uc3Q7CiAKKyAgICBi
b29sIGFsbG93c0FuaW1hdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QWxsb3dzQW5pbWF0aW9uKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBbGxv
d3NBbmltYXRpb24oKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwog
CkBAIC0yMzcsNiArMjQxLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wZW5kaW5nQ2xvbmVk
QXR0YWNobWVudElEOwogI2VuZGlmCiAKKyAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKKwogICAg
IGZyaWVuZCBjbGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3NDNiOTU2ZmY1NjIuLjJjMzE4YmFj
YTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC00NDcsNiArNDQ3LDE1IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6
OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnCiAgICAgICAgIGNhY2hl
ZEltYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShpbWFnZSk7CiB9CiAKK2Jvb2wgQ2FjaGVk
SW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmFsbG93c0FuaW1hdGlvbihjb25zdCBJbWFnZSYg
aW1hZ2UpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFn
ZXMpIHsKKyAgICAgICAgaWYgKGNhY2hlZEltYWdlLT5hbGxvd3NBbmltYXRpb24oaW1hZ2UpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwog
aW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFn
ZSkKQEAgLTcwMCw2ICs3MDksMTkgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWdlKQogICAgICAgICBjbGllbnQtPnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlRm9ySW1hZ2UoKnRoaXMpOwogfQogCitib29sIENhY2hlZEltYWdlOjphbGxv
d3NBbmltYXRpb24oY29uc3QgSW1hZ2UmIGltYWdlKSBjb25zdAoreworICAgIGlmICgmaW1hZ2Ug
IT0gbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IHdhbGtlcigqdGhpcyk7CisgICAgd2hpbGUg
KGF1dG8qIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpIHsKKyAgICAgICAgaWYgKCFjbGllbnQtPmFs
bG93c0FuaW1hdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFn
ZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBiYTA1ODliZGUyZGYuLmJmNmU4OTU0YTU2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTk5LDYgKzk5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgY2FuU2tpcFJldmFsaWRhdGlvbihjb25zdCBDYWNoZWRSZXNvdXJj
ZUxvYWRlciYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgYm9v
bCBpc1Zpc2libGVJblZpZXdwb3J0KGNvbnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgYm9vbCBh
bGxvd3NBbmltYXRpb24oY29uc3QgSW1hZ2UmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lk
IGNsZWFyKCk7CkBAIC0xNTksNiArMTYwLDggQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjaGFu
Z2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2
b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKKyAgICAg
ICAgYm9vbCBhbGxvd3NBbmltYXRpb24oY29uc3QgSW1hZ2UmKSBjb25zdCBmaW5hbDsKKwogICAg
ICAgICBIYXNoU2V0PENhY2hlZEltYWdlKj4gbV9jYWNoZWRJbWFnZXM7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAppbmRleCAy
ODY4OTY5ZGIzN2IuLjMyYzRhZjc1NGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2Fj
aGVkSW1hZ2UmKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBbmltYXRpb24oKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYzg0ZGI0NzBkZjBlLi44MDAxMWE2N2VlOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTI3NTQsNiArMjc1NCwxNSBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCkKICAgICAgICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZO
ZWVkZWQodmlzaWJsZVJlY3QpOwogfQogCit2b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJ
bWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit7CisgICAgaWYgKHZp
c2libGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHJl
bmRlclZpZXcgPSBmcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICByZW5kZXJWaWV3
LT5yZXBhaW50SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJlY3QpOworfQorCiB2b2lk
IEZyYW1lVmlldzo6dXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0
YXRlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogewogICAgIGlmIChmcmFtZSgpLmlzTWFp
bkZyYW1lKCkpCkBAIC0yNzg5LDYgKzI3OTgsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZp
c2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQogICAgIH0pOwogfQogCit2
b2lkIEZyYW1lVmlldzo6cmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJm
cmFtZXMoKQoreworICAgIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoW10gKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBm
cmFtZVZpZXcucmVwYWludFZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QpOworICAg
IH0pOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9s
bGluZygpCiB7CiAgICAgLy8gSWYgd2UncmUgc2Nyb2xsaW5nIGFzIGEgcmVzdWx0IG9mIHVwZGF0
aW5nIHRoZSB2aWV3IHNpemUgYWZ0ZXIgbGF5b3V0LCB3ZSdsbCB1cGRhdGUgd2lkZ2V0cyBhbmQg
bGF5ZXIgcG9zaXRpb25zIHNvb24gYW55d2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXgg
ZGJlMGUxMzY1MmJlLi40Y2YxODc2YTlkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAt
MzIxLDYgKzMyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlld3BvcnRDb250ZW50c0NoYW5n
ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlv
bnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICB2b2lkIHJlcGFpbnRWaXNpYmxlSW1hZ2VBbmlt
YXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiAKICAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7
CkBAIC03NzIsNiArNzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwbHlSZWN1cnNpdmVs
eVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1lVmlldyYgZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CiAgICAgdm9pZCByZXN1bWVWaXNpYmxl
SW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHJl
cGFpbnRWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsK
ICAgICB2b2lkIHVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc0FuZFRpbWVyc1Rocm90dGxpbmdTdGF0
ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2YzVj
ZGZiMDkyMWMuLmVlMThlMmVmOGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTQ1LDYgKzE5
NDUsMTQgQEAgdm9pZCBQYWdlOjpzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxpbmdN
b2RlIG1vZGUpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnNl
dFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKCp0aGlzLCBtX2xvYWRTY2hlZHVsaW5nTW9kZSk7
CiB9CiAKK3ZvaWQgUGFnZTo6c2V0SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBpZiAobV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1faW1hZ2VBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsKKyAgICByZXBh
aW50QW5pbWF0ZWRJbWFnZXMoKTsKK30KKwogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmlt
YXRpb25zKCkKIHsKICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7CkBA
IC00MDExLDQgKzQwMTksMTAgQEAgdm9pZCBQYWdlOjpmb3JjZVJlcGFpbnRBbGxGcmFtZXMoKQog
ICAgIH0KIH0KIAordm9pZCBQYWdlOjpyZXBhaW50QW5pbWF0ZWRJbWFnZXMoKQoreworICAgIGlm
IChhdXRvKiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpKQorICAgICAgICB2aWV3LT5yZXBhaW50
VmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGU3MDc3YjgzZGRlYy4uMmJlODk2OTEx
ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjU0LDYgKzY1NCw5IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwogICAgIGJvb2wgc2Ny
aXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1h
dGlvbnNTdXNwZW5kZWQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VBbmlt
YXRpb25FbmFibGVkKGJvb2wpOworICAgIGJvb2wgaW1hZ2VBbmltYXRpb25FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZUFuaW1hdGlvbkVuYWJsZWQ7IH0KKwogICAgIHZvaWQgdXNlclN0
eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIHVzZXJTdHlsZVNo
ZWV0KCkgY29uc3Q7CiAKQEAgLTY5Myw2ICs2OTYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKKyAgICB2b2lkIHJlcGFp
bnRBbmltYXRlZEltYWdlcygpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JF
bGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIApAQCAtMTE0MCw2ICsxMTQ0LDcgQEAgcHJpdmF0
ZToKICAgICBKU0M6OkRlYnVnZ2VyKiBtX2RlYnVnZ2VyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9v
bCBtX2NhblN0YXJ0TWVkaWEgeyB0cnVlIH07CisgICAgYm9vbCBtX2ltYWdlQW5pbWF0aW9uRW5h
YmxlZCB7IHRydWUgfTsKIAogICAgIFRpbWVyVGhyb3R0bGluZ1N0YXRlIG1fdGltZXJUaHJvdHRs
aW5nU3RhdGUgeyBUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlzYWJsZWQgfTsKICAgICBNb25vdG9u
aWNUaW1lIG1fdGltZXJUaHJvdHRsaW5nU3RhdGVMYXN0Q2hhbmdlZFRpbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggMjU4ZmU4MzI5NDYyLi45MGRhOTBiMzMyYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTQ4NCw0ICs0ODQsMTAgQEAgdm9p
ZCBTZXR0aW5nc0Jhc2U6OnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZUNoYW5nZWQoKQogI2Vu
ZGlmCiB9CiAKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZUFuaW1hdGlvbkNvbnRyb2xFbmFi
bGVkQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fcGFnZSAmJiAhbV9wYWdlLT5zZXR0aW5ncygpLmlt
YWdlQW5pbWF0aW9uQ29udHJvbEVuYWJsZWQoKSkKKyAgICAgICAgbV9wYWdlLT5zZXRJbWFnZUFu
aW1hdGlvbkVuYWJsZWQodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5oCmluZGV4IDFiMzliMTM2OWMwOS4uOTZkNWE4OGM0YmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBwcm90ZWN0
ZWQ6CiAjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCiAgICAgdm9pZCBsYXllckJh
c2VkU1ZHRW5naW5lRW5hYmxlZENoYW5nZWQoKTsKICNlbmRpZgorICAgIHZvaWQgc2V0SW1hZ2VB
bmltYXRpb25Db250cm9sRW5hYmxlZENoYW5nZWQoKTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGE4N2FjNjkwYjJlYy4uM2RhMTQ0NWZlMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0yNDcsOCArMjQ3LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXMKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAg
ICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25v
dXMpIHsKLSAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwotICAgICAgICBBU1NFUlQoIW1f
Y3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOworICAgICAgICBBU1NFUlQoIW1f
Y3VycmVudEZyYW1lIHx8ICFjYW5BbmltYXRlKCkpOwogCiAgICAgICAgIGJvb2wgZnJhbWVJc0Nv
bXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29k
aW5nT3B0aW9ucyhzaXplRm9yRHJhd2luZykpOwogICAgICAgICBib29sIGZyYW1lSXNCZWluZ0Rl
Y29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBEZWNvZGluZ09wdGlvbnMoc2l6ZUZvckRyYXdpbmcpKTsKQEAg
LTM3NCw3ICszNzMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKIGJvb2wgQml0bWFwSW1h
Z2U6OnNob3VsZEFuaW1hdGUoKSBjb25zdAogewotICAgIHJldHVybiByZXBldGl0aW9uQ291bnQo
KSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBpbWFnZU9ic2VydmVyKCk7CisgICAgcmV0dXJu
IHJlcGV0aXRpb25Db3VudCgpICYmICFtX2FuaW1hdGlvbkZpbmlzaGVkICYmIGltYWdlT2JzZXJ2
ZXIoKSAmJiBpbWFnZU9ic2VydmVyKCktPmFsbG93c0FuaW1hdGlvbigqdGhpcyk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKSBjb25zdApAQCAtNjM2LDcgKzYzNSw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkK
ICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbTW9y
ZSBkYXRhIG1ha2VzIGZyYW1lQ291bnQoKSA+IDFdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3Vy
Y2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoaW5k
ZXggPT0gbV9jdXJyZW50RnJhbWUgJiYgIW1fY3VycmVudEZyYW1lKTsKKyAgICBBU1NFUlQoKCFp
bmRleCAmJiAhbV9jdXJyZW50RnJhbWUpIHx8ICFjYW5BbmltYXRlKCkpOwogICAgIGlmIChtX3Nv
dXJjZS0+aXNBc3luY0RlY29kaW5nUXVldWVJZGxlKCkpCiAgICAgICAgIG1fc291cmNlLT5zdG9w
QXN5bmNEZWNvZGluZ1F1ZXVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCmluZGV4IDgzODIzNzJkNTJhYi4uMTYyYjUwOGUyZDIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkge30KICAgICB2aXJ0dWFsIGJvb2wgaXNB
bmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgYW5pbWF0aW9uUGVu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uU3RhcnRUaW1lciAmJiBtX2FuaW1hdGlv
blN0YXJ0VGltZXItPmlzQWN0aXZlKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93
c0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW5pbWF0aW9uOyB9CisgICAgdm9p
ZCBzZXRBbGxvd3NBbmltYXRpb24oc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd3NBbmltYXRpb24p
IHsgbV9hbGxvd3NBbmltYXRpb24gPSBhbGxvd3NBbmltYXRpb247IH0KIAogICAgIC8vIFR5cGlj
YWxseSB0aGUgQ2FjaGVkSW1hZ2UgdGhhdCBvd25zIHVzLgogICAgIEltYWdlT2JzZXJ2ZXIqIGlt
YWdlT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlT2JzZXJ2ZXI7IH0KQEAgLTIxMSw2
ICsyMTMsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOworCisgICAg
Ly8gQSB2YWx1ZSBvZiB0cnVlIG9yIGZhbHNlIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgUGFn
ZTo6aW1hZ2VBbmltYXRpb25FbmFibGVkIHN0YXRlLgorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bV9hbGxvd3NBbmltYXRpb24geyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbWFnZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDA0Mjcw
YzgzZDMzNy4uOTYzNTc5M2VlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0
aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNo
YW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVs
bHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25z
dCBJbWFnZSYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBbmltYXRpb24oY29uc3Qg
SW1hZ2UmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZmVhZjc1OGNkYzNhLi43NmVhNmEzOTI3
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTE0
NTAsNiArMTQ1MCwxMSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZQogICAgIGRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5ub3RpZnlGaW5pc2hlZChyZXNvdXJjZSk7CiB9CiAKK2Jv
b2wgUmVuZGVyRWxlbWVudDo6YWxsb3dzQW5pbWF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cGFnZSgpLmltYWdlQW5pbWF0aW9uRW5hYmxlZCgpOworfQorCiB2b2lkIFJlbmRlckVsZW1lbnQ6
OmRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKIHsK
ICAgICBpZiAoaGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAyZmQ3YzZkNTE0ZTMuLmZjMTI4MThjYzRmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0yMjYsNiArMjI2LDcg
QEAgcHVibGljOgogICAgIGJvb2wgZGlkQ29udGlidXRlVG9WaXN1YWxseU5vbkVtcHR5UGl4ZWxD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQ29udHJpYnV0ZVRvVmlzdWFsbHlOb25FbXB0eVBp
eGVsQ291bnQ7IH0KICAgICB2b2lkIHNldERpZENvbnRpYnV0ZVRvVmlzdWFsbHlOb25FbXB0eVBp
eGVsQ291bnQoKSB7IG1fZGlkQ29udHJpYnV0ZVRvVmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQg
PSB0cnVlOyB9CiAKKyAgICBib29sIGFsbG93c0FuaW1hdGlvbigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVwYWludEZvclBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IElu
dFJlY3QmIHZpc2libGVSZWN0LCBDYWNoZWRJbWFnZSYpOwogICAgIGJvb2wgaGFzUGF1c2VkSW1h
Z2VBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnM7
IH0KICAgICB2b2lkIHNldEhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucyhib29sIGIpIHsgbV9oYXNQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMgPSBiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCBkYmZlZjhlNDdmY2IuLjFkMTQ3MzVmNzNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NDIsNiArNDQyLDEzIEBAIGJvb2wg
UmVuZGVySW1hZ2U6Omhhc05vbkJpdG1hcEltYWdlKCkgY29uc3QKICAgICByZXR1cm4gaW1hZ2Ug
JiYgIWlzPEJpdG1hcEltYWdlPihpbWFnZSk7CiB9CiAKK2Jvb2wgUmVuZGVySW1hZ2U6Omhhc0Fu
aW1hdGVkSW1hZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdl
KCkgPyBjYWNoZWRJbWFnZSgpLT5pbWFnZSgpIDogbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIGlt
YWdlLT5pc0FuaW1hdGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlcklt
YWdlOjpwYWludEluY29tcGxldGVJbWFnZU91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIExh
eW91dFBvaW50IHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGJvcmRlcldpZHRoKSBjb25zdAogewog
ICAgIGF1dG8gY29udGVudFNpemUgPSB0aGlzLT5jb250ZW50U2l6ZSgpOwpAQCAtOTAwLDQgKzkw
NywxMSBAQCBSZW5kZXJCb3gqIFJlbmRlckltYWdlOjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25z
dAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJlbmRlckltYWdlOjphbGxvd3NBbmlt
YXRpb24oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBpbWFnZUVsZW1lbnQgPSBkeW5hbWljRG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIGltYWdl
RWxlbWVudC0+YWxsb3dzQW5pbWF0aW9uKCk7CisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjph
bGxvd3NBbmltYXRpb24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCA0NDI5ZDMwN2Y3YjAuLjJjYjdiZmZjNjYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTgxLDYgKzgxLDkg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLT5hY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b24oKTsgfQogCisgICAgYm9vbCBoYXNBbmltYXRlZEltYWdlKCkgY29uc3Q7CisgICAgYm9vbCBh
bGxvd3NBbmltYXRpb24oKSBjb25zdCBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAppbmRleCA4NDE3Yzk4NjU2ZWEuLjcwY2I2YjU0MDVkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtODc0LDYgKzg3NCwyNyBAQCB2b2lkIFJlbmRl
clZpZXc6OnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KQogICAgICAgICByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1h
dGlvbnMoKnBhaXIuZmlyc3QsICpwYWlyLnNlY29uZCk7CiB9CiAKK3ZvaWQgUmVuZGVyVmlldzo6
cmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KQoreworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlckVs
ZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoIWVsZW1lbnQuaXNWaXNpYmxlSW5Eb2N1bWVu
dFJlY3QodmlzaWJsZVJlY3QpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8g
RklYTUU6IENoZWNrIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UocykgY2FuIGFuaW1hdGUg
YmVmb3JlIHJlcGFpbnRpbmcuCisgICAgICAgIGlmIChlbGVtZW50LnN0eWxlKCkuaGFzQmFja2dy
b3VuZEltYWdlKCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQucmVwYWludCgpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byogcmVuZGVySW1hZ2Ug
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBp
ZiAocmVuZGVySW1hZ2UtPmhhc0FuaW1hdGVkSW1hZ2UoKSkgeworICAgICAgICAgICAgICAgIGVs
ZW1lbnQucmVwYWludCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCiBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11
bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQogewogICAg
IGlmICghdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDA4YjNh
N2EyZGIyMC4uZGMxYTVkMjUyN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckZvclZpc2li
bGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3Rl
ckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soUmVuZGVyRWxlbWVudCYpOwogICAgIHZvaWQg
cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QpOworICAgIHZvaWQgcmVwYWludEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IElu
dFJlY3QmIHZpc2libGVSZWN0KTsKICAgICB2b2lkIGFkZFJlbmRlcmVyV2l0aFBhdXNlZEltYWdl
QW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgQ2FjaGVkSW1hZ2UmKTsKICAgICB2b2lkIHJlbW92
ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50Jik7CiAgICAg
dm9pZCByZW1vdmVSZW5kZXJlcldpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVu
dCYsIENhY2hlZEltYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
OGQwZTc2ZTFmYzU2Li5jZTVkNDI3MGU3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTEwNDksNiArMTA0OSwyNCBAQCBib29sIEludGVybmFsczo6aXNJbWFnZUFuaW1h
dGluZyhIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBpbWFnZSAmJiAoaW1h
Z2UtPmlzQW5pbWF0aW5nKCkgfHwgaW1hZ2UtPmFuaW1hdGlvblBlbmRpbmcoKSk7CiB9CiAKK3Zv
aWQgSW50ZXJuYWxzOjpzZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChhdXRvKiBwYWdlID0gY29udGV4dERvY3VtZW50KCkgPyBjb250ZXh0RG9jdW1lbnQo
KS0+cGFnZSgpIDogbnVsbHB0cikgeworICAgICAgICBpZiAocGFnZS0+c2V0dGluZ3MoKS5pbWFn
ZUFuaW1hdGlvbkNvbnRyb2xFbmFibGVkKCkpCisgICAgICAgICAgICBwYWdlLT5zZXRJbWFnZUFu
aW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7CisgICAgfQorfQorCit2b2lkIEludGVybmFsczo6cmVz
dW1lSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBlbGVt
ZW50LnNldEFsbG93c0FuaW1hdGlvbih0cnVlKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnBhdXNl
SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBlbGVtZW50
LnNldEFsbG93c0FuaW1hdGlvbihmYWxzZSk7Cit9CisKIHVuc2lnbmVkIEludGVybmFsczo6aW1h
Z2VQZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoSFRNTEltYWdlRWxlbWVudCYg
ZWxlbWVudCkKIHsKICAgICByZXR1cm4gZWxlbWVudC5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3Vu
dEZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGYzOGI2N2M1
NGNiYy4uMjM2ODBjYTZlNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIy
MSw2ICsyMjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJh
dGlvbihIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQgZHVyYXRpb24pOwogICAgIHZvaWQgcmVzZXRJ
bWFnZUFuaW1hdGlvbihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgYm9vbCBpc0ltYWdlQW5pbWF0
aW5nKEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICB2b2lkIHNldEltYWdlQW5pbWF0aW9uRW5hYmxl
ZChib29sKTsKKyAgICB2b2lkIHJlc3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQm
KTsKKyAgICB2b2lkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAg
IHVuc2lnbmVkIGltYWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhUTUxJ
bWFnZUVsZW1lbnQmKTsKICAgICB2b2lkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJl
cXVlc3RGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHVu
c2lnbmVkIGltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdlRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDI3MTY0OTVmNTA2YS4uM2M1YjA5ODM2ZGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01NTQsNiArNTU0LDkgQEAgdHlwZWRl
ZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIHVuZGVm
aW5lZCBzZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihIVE1MSW1hZ2VFbGVtZW50IGVsZW1l
bnQsIHVucmVzdHJpY3RlZCBmbG9hdCBkdXJhdGlvbik7CiAgICAgdW5kZWZpbmVkIHJlc2V0SW1h
Z2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICBib29sZWFuIGlzSW1h
Z2VBbmltYXRpbmcoSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKKyAgICB1bmRlZmluZWQgc2V0
SW1hZ2VBbmltYXRpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgdW5kZWZpbmVkIHJl
c3VtZUltYWdlQW5pbWF0aW9uKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZp
bmVkIHBhdXNlSW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50KTsKICAgICB1
bnNpZ25lZCBsb25nIGltYWdlUGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKEhU
TUxJbWFnZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgdW5kZWZpbmVkIHNldENsZWFyRGVjb2RlckFm
dGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwg
Ym9vbGVhbiBlbmFibGVkKTsKICAgICB1bnNpZ25lZCBsb25nIGltYWdlRGVjb2RlQ291bnQoSFRN
TEltYWdlRWxlbWVudCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2FuaW1hdGlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0aW9ucy1yZXN1bWUtZnJvbS1sYXN0
LWRpc3BsYXllZC1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi42NjBiNWJiMjI5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9hbmltYXRpb25zLXJlc3VtZS1mcm9tLWxhc3QtZGlzcGxheWVkLWZyYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgcmVzdW1l
ZCBhbmltYXRpb25zIHN0YXJ0IGF0IHRoZSBmcmFtZSB0aGV5IHdlcmUgcGF1c2VkIGF0LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW1hZ2Ugd2FzIGxvYWRlZCBzdWNjZXNzZnVs
bHkuCitJbWFnZSBmcmFtZSAwIHdhcyBkaXNwbGF5ZWQuCitQQVNTIGludGVybmFscy5pbWFnZUZy
YW1lSW5kZXgoaW1hZ2UpID09PSBjdXJyZW50bHlEaXNwbGF5ZWRGcmFtZUluZGV4ICsgMSBpcyB0
cnVlCitJbWFnZSBmcmFtZSAxIHdhcyBkaXNwbGF5ZWQuCitQQVNTIGludGVybmFscy5pbWFnZUZy
YW1lSW5kZXgoaW1hZ2UpID09PSBjdXJyZW50bHlEaXNwbGF5ZWRGcmFtZUluZGV4ICsgMSBpcyB0
cnVlCitJbWFnZSBmcmFtZSAyIHdhcyBkaXNwbGF5ZWQuCitQQVNTIGludGVybmFscy5pbWFnZUZy
YW1lSW5kZXgoaW1hZ2UpID09PSBjdXJyZW50bHlEaXNwbGF5ZWRGcmFtZUluZGV4ICsgMSBpcyB0
cnVlCitUaGUgYW5pbWF0aW9uIHdhcyBsb2FkZWQgYW5kIHBhdXNlZC9yZXN1bWVkIGNvcnJlY3Rs
eS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGlvbnMtcmVzdW1lLWZy
b20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Fu
aW1hdGlvbnMtcmVzdW1lLWZyb20tbGFzdC1kaXNwbGF5ZWQtZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3OGM5YjdmM2ZmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGlvbnMtcmVzdW1lLWZyb20tbGFz
dC1kaXNwbGF5ZWQtZnJhbWUuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIGlkPSJpbWciIHNyYz0iIj4KKzwhLS0g
VG8gbWFrZSB0aGlzIHRlc3QgYWJsZSB0byBwYXNzIGluIFdLMSwgdXNlIHRoaXMgPGRpdiBzdHls
ZT0iLi4uIj4gdG8gc2V0QXV0b2Rpc3BsYXk6WUVTIChyZGFyOi8vNDI2MjU2NTcgaGFzIG1vcmUg
ZGV0YWlscykuIC0tPgorPGRpdiBzdHlsZT0id2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSI+PC9kaXY+
CisKKzxzY3JpcHQ+CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlt
ZyIpOworCisgICAgdmFyIGN1cnJlbnRseURpc3BsYXllZEZyYW1lSW5kZXg7CisgICAgZnVuY3Rp
b24gZHJhd05leHRGcmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
KSA9PiB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAgICAgICAgY3VycmVudGx5RGlzcGxheWVk
RnJhbWVJbmRleCA9IGludGVybmFscy5pbWFnZUZyYW1lSW5kZXgoaW1hZ2UpOworCisgICAgICAg
ICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiLCBmdW5j
dGlvbiBsaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgSW1hZ2UgZnJhbWUgJHtj
dXJyZW50bHlEaXNwbGF5ZWRGcmFtZUluZGV4fSB3YXMgZGlzcGxheWVkLmApOworICAgICAgICAg
ICAgICAgIGltYWdlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIs
IGxpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMucGF1c2VJbWFnZUFu
aW1hdGlvbihpbWFnZSk7CisKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KChjdXJyZW50bHlE
aXNwbGF5ZWRGcmFtZUluZGV4KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiaW50ZXJuYWxzLmltYWdlRnJhbWVJbmRleChpbWFnZSkgPT09IGN1cnJlbnRseURpc3BsYXll
ZEZyYW1lSW5kZXggKyAxIik7CisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5yZXN1bWVJ
bWFnZUFuaW1hdGlvbihpbWFnZSk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgICAgICB9LCB0cnVlKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZHJhd0ltYWdlKGZyYW1lQ291bnQpIHsKKyAgICAgICAg
aW50ZXJuYWxzLnJlc3VtZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgbGV0IHByb21p
c2UgPSBkcmF3TmV4dEZyYW1lKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZnJhbWVD
b3VudDsgaSsrKSB7CisgICAgICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZHJhd05leHRGcmFtZSgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisgICAgZnVuY3Rp
b24gbG9hZEFuZERyYXdJbWFnZShzcmMsIGZyYW1lQ291bnQpIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkg
PT4geworICAgICAgICAgICAgICAgIGRlYnVnKCJJbWFnZSB3YXMgbG9hZGVkIHN1Y2Nlc3NmdWxs
eS4iKTsKKyAgICAgICAgICAgICAgICBkcmF3SW1hZ2UoZnJhbWVDb3VudCkudGhlbihyZXNvbHZl
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
ICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0V2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCh0cnVlKTsKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJs
ZWQodHJ1ZSk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VBbmltYXRp
b25Db250cm9sRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRJbWFnZUFu
aW1hdGlvbkVuYWJsZWQoZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCB2ZXJpZmllcyByZXN1bWVkIGFuaW1hdGlvbnMgc3RhcnQgYXQgdGhlIGZyYW1l
IHRoZXkgd2VyZSBwYXVzZWQgYXQuIik7CisKKyAgICAgICAgbG9hZEFuZERyYXdJbWFnZSgicmVz
b3VyY2VzL2FuaW1hdGVkLTQtZnJhbWVzLmdpZiIsIDMpLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgZGVidWcoIlRoZSBhbmltYXRpb24gd2FzIGxvYWRlZCBhbmQgcGF1c2VkL3Jlc3VtZWQgY29y
cmVjdGx5LiIpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSkoKTsKKzwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvaW5kaXZpZHVhbC1hbmltYXRpb24tdG9nZ2xlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmNjVmZmE0MDQ5ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2luZGl2aWR1YWwtYW5pbWF0aW9u
LXRvZ2dsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCB3aGVuIGltYWdlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCBwYWdlLXdpZGUsIGluZGl2aWR1
YWwgaW1hZ2UgYW5pbWF0aW9ucyBjYW4gc3RpbGwgYmUgdG9nZ2xlZCBvbiBhbmQgb2ZmIGluZGl2
aWR1YWxseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxz
LmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaXNJ
bWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzSW1hZ2VB
bmltYXRpbmcoaW1hZ2UpIGJlY2FtZSBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvaW5kaXZpZHVhbC1hbmltYXRpb24tdG9nZ2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9pbmRpdmlkdWFsLWFuaW1hdGlvbi10b2dnbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM1YjNmMThhYjIwMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2luZGl2aWR1YWwtYW5pbWF0aW9uLXRvZ2dsZS5odG1s
CkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLmdpZiIgaWQ9InRlc3RJbWFnZSIg
Lz4KKzwhLS0gVG8gbWFrZSB0aGlzIHRlc3QgYWJsZSB0byBwYXNzIGluIFdLMSwgdXNlIHRoaXMg
PGRpdiBzdHlsZT0iLi4uIj4gdG8gc2V0QXV0b2Rpc3BsYXk6WUVTIChyZGFyOi8vNDI2MjU2NTcg
aGFzIG1vcmUgZGV0YWlscykuIC0tPgorPGRpdiBzdHlsZT0id2lsbC1jaGFuZ2U6IHRyYW5zZm9y
bSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgd2hlbiBpbWFnZSBhbmltYXRpb24gaXMgZGlzYWJsZWQgcGFnZS13aWRlLCBpbmRpdmlk
dWFsIGltYWdlIGFuaW1hdGlvbnMgY2FuIHN0aWxsIGJlIHRvZ2dsZWQgb24gYW5kIG9mZiBpbmRp
dmlkdWFsbHkuXG5cbiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRJbWFnZUFuaW1hdGlvbkNvbnRyb2xFbmFibGVkKHRydWUpOworCisgICAg
aW50ZXJuYWxzLnNldEltYWdlQW5pbWF0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGltYWdl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RJbWFnZSIpOworICAgIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5p
c0ltYWdlQW5pbWF0aW5nKGltYWdlKSIsICJmYWxzZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgaW50ZXJuYWxzLnJlc3VtZUltYWdlQW5pbWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkiLCAidHJ1
ZSIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGludGVybmFscy5wYXVzZUltYWdlQW5p
bWF0aW9uKGltYWdlKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJu
YWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgImZhbHNlIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRJbWFnZUFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7
CisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH07Cis8L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFu
aW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFn
ZS13aWRlLWFuaW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uNTFkM2FkZTllOGViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10b2dnbGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYW5pbWF0aW9uIHBs
YXkgLyBwYXVzZSBzdGF0ZSBpcyB1cGRhdGVkIHdoZW4gdGhlIHBhZ2Utd2lkZSAnYW5pbWF0aW9u
cyBkaXNhYmxlZCcgZmxhZyBjaGFuZ2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhpbWFnZSkgYmVjYW1lIGZhbHNlCitQ
QVNTIGludGVybmFscy5pc0ltYWdlQW5pbWF0aW5nKGltYWdlKSBiZWNhbWUgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10b2dnbGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhZ2Utd2lkZS1hbmltYXRpb24tdG9nZ2xlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43OWM5ZjBlNzlkN2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWdlLXdpZGUtYW5p
bWF0aW9uLXRvZ2dsZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYW5pbWF0aW9uLmdp
ZiIgaWQ9ImltZyIgLz4KKzwhLS0gVG8gbWFrZSB0aGlzIHRlc3QgYWJsZSB0byBwYXNzIGluIFdL
MSwgdXNlIHRoaXMgPGRpdiBzdHlsZT0iLi4uIj4gdG8gc2V0QXV0b2Rpc3BsYXk6WUVTIChyZGFy
Oi8vNDI2MjU2NTcgaGFzIG1vcmUgZGV0YWlscykuIC0tPgorPGRpdiBzdHlsZT0id2lsbC1jaGFu
Z2U6IHRyYW5zZm9ybSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgYW5pbWF0aW9uIHBsYXkgLyBwYXVzZSBzdGF0ZSBpcyB1cGRhdGVk
IHdoZW4gdGhlIHBhZ2Utd2lkZSAnYW5pbWF0aW9ucyBkaXNhYmxlZCcgZmxhZyBjaGFuZ2VzLlxu
XG4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0SW1hZ2VBbmltYXRpb25Db250cm9sRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgaW1hZ2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIik7CisKKyAgICBpbnRlcm5hbHMuc2V0SW1hZ2VB
bmltYXRpb25FbmFibGVkKGZhbHNlKTsKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaXNJbWFnZUFuaW1hdGluZyhp
bWFnZSkiLCAiZmFsc2UiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRJ
bWFnZUFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVh
bCgiaW50ZXJuYWxzLmlzSW1hZ2VBbmltYXRpbmcoaW1hZ2UpIiwgInRydWUiLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOworICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH07Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC00LWZyYW1lcy5naWYgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtNC1mcmFtZXMuZ2lmCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY1ZTQ3NzE0MjZlYmE2YWJhM2IxN2MzMjE4MGQyODM5MDc0MzBjYzEKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDIwOQp6Y21aP3diaEVIYjZrIWx5X2B0eU1wOCo2RXw4eDdmaDZGbzEyRGxw
Tzg4OTx+Z25xSUJSV0xCPGZhRjFuOEpHbEgKcmBkNk5RJWZFUWVtUnNHTUA5cGAkVUtDU1IxNDlF
eTFDZVVNKSlTfXBLaUgrJSlMSGBvekwhND0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRpb24uZ2lmIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGlvbi5naWYKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGQ1ZTcxNGY1N2NiZmIzMmE0NmY0MmMyMTdiMjYzMDhhNjhmZDE4ZQpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgOTAxCnpjbVo/d2JoRUhiNmtyZndffEN3PGtkfTZhVko0NnMxKjBKXzB6KkxZ
S2V3TjJOVSpiR2ZVQSs3MFcle28ybyEmXgp6dXoqNUIyU2s5ZjI/S3tMMTJjej0kQSQkNW4+bUVG
Vm9xI1djKGAzYSo9dnIrI3pqWFA4NXl6YlY4b314OFVTZDEKQkI0X3tyCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>